SupplychainRoomMapper.xml 13.9 KB
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lecuntao.ordering.customization.dal.SupplychainRoomMapper">

    <sql id="whereForFindList">
        <if test="request.supplychainNetworkId!=null"> AND `SUPPLYCHAIN_NETWORK_ID` =#{ request.supplychainNetworkId }</if>
        <if test="request.storeId!=null"> AND `STORE_ID` =#{ request.storeId }</if>
        <if test="request.operatingUnitId!=null"> AND `OPERATING_UNIT_ID` =#{ request.operatingUnitId }</if>
        <if test="request.storeHouseId!=null"> AND `STORE_HOUSE_ID` =#{ request.storeHouseId }</if>
        <if test="request.storeRoomId!=null"> AND `STORE_ROOM_ID` =#{ request.storeRoomId }</if>
        <if test="request.storeRoomIdList!=null"> AND `STORE_ROOM_ID` IN
            <foreach collection="request.storeRoomIdList" open="(" close=")" item="storeRoomId" separator="," index="index">
                #{ storeRoomId }
            </foreach>
        </if>
        <if test="request.type!=null"> AND `TYPE` LIKE CONCAT ('%',#{ request.type },'%')</if>
        <if test="request.ownerType!=null"> AND `OWNER_TYPE` LIKE CONCAT ('%',#{ request.ownerType },'%')</if>
        <if  test="request.supplychainNetworkIds!=null">AND `SUPPLYCHAIN_NETWORK_ID` IN
            <foreach collection="request.supplychainNetworkIds" open="(" close=")" item="supplychainNetworkId" index="index" separator=",">
                #{ supplychainNetworkId }
            </foreach>
        </if>
        <if  test="request.supplychainRoomFindParamsList!=null">
            AND
            <foreach collection="request.supplychainRoomFindParamsList" index="index" separator="or" close=")" open="(" item="findByParamRequest">
                1=1
                <if test="findByParamRequest.operatingUnitId != null">
                    AND `OPERATING_UNIT_ID` = #{findByParamRequest.operatingUnitId}
                </if>
                <if test="findByParamRequest.type != null">
                    AND `TYPE` = #{findByParamRequest.type}
                </if>
                <if test="findByParamRequest.ownerType != null">
                    AND `OWNER_TYPE` = #{findByParamRequest.ownerType}
                </if>
            </foreach>
        </if>
    </sql>

    <sql id="whereForSearchList">
           (
           `TYPE` LIKE CONCAT ('%',#{ request.keyword },'%')  OR  
           `OWNER_TYPE` LIKE CONCAT ('%',#{ request.keyword },'%')  OR  
           )
    </sql>

    <select id="find" resultMap="supplychainRoomPO">
        SELECT * FROM
        (
            SELECT
                <include refid="entityColumnList"/>
            FROM
                `ZH_SUPPLYCHAIN_ROOM`
            WHERE
                `IS_DELETED`=0
                AND `TENANT_ID`=#{ passport.tenantId }
                <include refid="whereForFindList" />
        ) AS T

        <if test="request.pageSize !=0">
            LIMIT #{ request.beginItemIndex }, #{ request.pageSize }
        </if>
    </select>

    <select id="findCount"   resultType="java.lang.Long">
        SELECT
            COUNT(*)
        FROM
            `ZH_SUPPLYCHAIN_ROOM`
        WHERE
            `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            <include refid="whereForFindList" />
    </select>

    <select id="search" resultMap="supplychainRoomPO">
        SELECT * FROM
        (
            SELECT
                <include refid="entityColumnList"/>
            FROM
                `ZH_SUPPLYCHAIN_ROOM`
            WHERE
                `IS_DELETED`=0
                AND `TENANT_ID`=#{ passport.tenantId }
                <if test="request.keyword !=null">
                      AND <include refid="whereForSearchList" />
                </if>

        ) AS T
        <if test="request.pageSize !=0">
            LIMIT #{ request.beginItemIndex }, #{ request.pageSize }
        </if>
    </select>

    <select id="searchCount"   resultType="java.lang.Long">
        SELECT
            COUNT(*)
        FROM
            `ZH_SUPPLYCHAIN_ROOM`
        WHERE
            `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            AND <include refid="whereForSearchList" />
    </select>

    <select id="existByCode" resultType="java.lang.Long">
        SELECT
            COUNT(*)
        FROM
            `ZH_SUPPLYCHAIN_ROOM`
        WHERE
            `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            AND  `ID` != #{id}
            AND `CODE` = #{code}
    </select>


    <update id="update">
        UPDATE
            `ZH_SUPPLYCHAIN_ROOM`
        SET
        `SUPPLYCHAIN_NETWORK_ID`=#{ request.supplychainNetworkId },
        `STORE_ID`=#{ request.storeId },
        `STORE_NAME`=#{ request.storeName },
        `OPERATING_UNIT_ID`=#{ request.operatingUnitId },
        `OPERATING_UNIT_NAME`=#{ request.operatingUnitName },
        `STORE_HOUSE_ID`=#{ request.storeHouseId },
        `STORE_HOUSE_NAME`=#{ request.storeHouseName },
        `STORE_ROOM_ID`=#{ request.storeRoomId },
        `STORE_ROOM_NAME`=#{ request.storeRoomName },
        `TYPE`=#{ request.type },
        `OWNER_TYPE`=#{ request.ownerType },
        `IS_ACTIVE`=#{ request.isActive },
        `LAST_UPDATED_BY`=#{ passport.userId }
        ,`LAST_UPDATE_TIME`=SYSDATE()
        ,`ROW_VERSION`=#{ request.rowVersion }+1
        WHERE
            `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            AND `ID` = #{ request.id }
            AND `ROW_VERSION` = #{ request.rowVersion }
    </update>

    <update id="updateBatch">
        UPDATE
          `ZH_SUPPLYCHAIN_ROOM`
        <trim prefix="set" suffixOverrides=",">

            <trim prefix="`SUPPLYCHAIN_NETWORK_ID` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ room.supplychainNetworkId }
                </foreach>
            </trim>
            <trim prefix="`STORE_ID` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ room.storeId }
                </foreach>
            </trim>
            <trim prefix="`STORE_NAME` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ room.storeName }
                </foreach>
            </trim>
            <trim prefix="`OPERATING_UNIT_ID` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ room.operatingUnitId }
                </foreach>
            </trim>
            <trim prefix="`OPERATING_UNIT_NAME` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ room.operatingUnitName }
                </foreach>
            </trim>
            <trim prefix="`STORE_HOUSE_NAME` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ room.storeHouseName }
                </foreach>
            </trim>
            <trim prefix="`STORE_ROOM_ID` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ room.storeRoomId }
                </foreach>
            </trim>
            <trim prefix="`STORE_HOUSE_ID` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `TENANT_ID`=#{ passport.tenantId }
                    AND `ID` = #{ room.id }
                    )
                    THEN #{ room.storeHouseId }
                </foreach>
            </trim>
            <trim prefix="`STORE_ROOM_NAME` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `TENANT_ID`=#{ passport.tenantId }
                    AND `ID` = #{ room.id }
                    )
                    THEN #{ room.storeRoomName }
                </foreach>
            </trim>
            <trim prefix="`TYPE` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ room.type }
                </foreach>
            </trim>
            <trim prefix="`OWNER_TYPE` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ room.ownerType }
                </foreach>
            </trim>
            <trim prefix="`IS_ACTIVE` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ room.isActive }
                </foreach>
            </trim>
            <trim prefix="`LAST_UPDATED_BY` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ passport.userId }
                </foreach>
            </trim>
            <trim prefix="`LAST_UPDATE_TIME` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN SYSDATE()
                </foreach>
            </trim>
            <trim prefix="`ROW_VERSION` = case" suffix="end,">
                <foreach collection="list" item="room" index="index">
                    WHEN (
                    `IS_DELETED`=0
                    AND `ID` = #{ room.id }
                    AND `TENANT_ID` =#{ passport.tenantId}
                    )
                    THEN #{ room.rowVersion }+1
                </foreach>
            </trim>
        </trim>



        WHERE
        <foreach collection="list" separator="or" item="room" index="index">
            (
            `IS_DELETED`=0
            AND `ID` = #{ room.id }
            AND `TENANT_ID` =#{ passport.tenantId}
            AND `ROW_VERSION` = #{ room.rowVersion }
            )
        </foreach>
    </update>


    <update id="inactive">
        UPDATE
        `ZH_SUPPLYCHAIN_ROOM`
        SET
        `IS_ACTIVE` = 0
        ,`LAST_UPDATED_BY`=#{ passport.userId }
        ,`LAST_UPDATE_TIME`=SYSDATE()
        WHERE
        `IS_DELETED`=0
        AND `IS_ACTIVE`=1
        AND `TENANT_ID`=#{ passport.tenantId }
        AND `ID` = #{id}
    </update>

    <update id="active">
        UPDATE
        ZH_SUPPLYCHAIN_ROOM
        SET
        `IS_ACTIVE` = 1
        ,`LAST_UPDATED_BY`=#{ passport.userId }
        ,`LAST_UPDATE_TIME`=SYSDATE()
        WHERE
        `IS_DELETED`=0
        AND `IS_ACTIVE`=0
        AND `TENANT_ID`=#{ passport.tenantId }
        AND `ID` = #{id}
    </update>

    <update id ="updateRoomByRoomId">
       UPDATE
            `ZH_SUPPLYCHAIN_ROOM`
        SET
        `STORE_ID`=#{ request.storeId },
        `STORE_NAME`=#{ request.storeName },
        `OPERATING_UNIT_ID`=#{ request.operatingUnitId },
        `OPERATING_UNIT_NAME`=#{ request.operatingUnitName },
        `STORE_HOUSE_ID`=#{ request.storeHouseId },
        `STORE_HOUSE_NAME`=#{ request.storeHouseName },
        `STORE_ROOM_ID`=#{ request.storeRoomId },
        `STORE_ROOM_NAME`=#{ request.storeRoomName },
        `IS_ACTIVE`=#{ request.isActive },
        `LAST_UPDATED_BY`=#{ passport.userId }
        ,`LAST_UPDATE_TIME`=SYSDATE()
        ,`ROW_VERSION`=`ROW_VERSION`+1
        WHERE
            `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            AND `STORE_ROOM_ID` = #{ request.storeRoomId }
    </update>

    <update id ="deleteRoomByRoomId">
        UPDATE
        `ZH_SUPPLYCHAIN_ROOM`
        SET
        `IS_ACTIVE`=0 ,
        `IS_DELETED` = 1,
        `LAST_UPDATED_BY`=#{ passport.userId }
        ,`LAST_UPDATE_TIME`=SYSDATE()
        ,`ROW_VERSION`=`ROW_VERSION`+1
        WHERE
        `IS_DELETED`=0
        AND `TENANT_ID`=#{ passport.tenantId }
        AND `STORE_ROOM_ID` = #{ roomId }
    </update>


</mapper>