自动化立体仓库 - WMS系统
Junjie
2023-05-26 b6b46e1c4d390c80cf9bd7d4daa23202f2d11a22
src/main/resources/mapper/LocMastMapper.xml
@@ -33,19 +33,309 @@
        <result column="inv_wh" property="invWh" />
        <result column="mk" property="mk" />
        <result column="barcode" property="barcode" />
        <result column="Pdc_type" property="PdcType" />
        <result column="ctn_no" property="ctnNo" />
    </resultMap>
    <update id="updateLocSts">
        UPDATE asr_loc_mast SET loc_sts = #{locSts} WHERE loc_no = #{locNo}
    </update>
    <select id="queryFreeLocMast" resultMap="BaseResultMap">
        select top 1 *
        select
        *
        from asr_loc_mast
        where 1=1
        and row1 in
        <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")">
            #{item}
        </foreach>
        and ctn_no =
        (
            select
            top 1
            ctn_no
            from (
                select
                ctn_no,
                count(1) as count
                from asr_loc_mast
                where 1=1
                and row1 in
                <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")">
                    #{item}
                </foreach>
                and loc_sts = 'O'
                <if test="locType1 != null">
                    and loc_type1 = #{locType1}
                </if>
                and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401')
                group by ctn_no
            ) a
            where count = #{rowsLen}
            order by right(ctn_no, 2) + 0 asc, left(ctn_no, 3) + 0 asc
        )
    </select>
    <select id="queryFreeLocMast0" resultMap="BaseResultMap">
        select
        *
        from asr_loc_mast
        where 1=1
        and row1 in
        <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")">
            #{item}
        </foreach>
        and ctn_no =
        (
            select
            top 1
            ctn_no
            from (
                select
                ctn_no,
                count(1) as count
                from asr_loc_mast
                where 1=1
                and row1 in
                <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")">
                    #{item}
                </foreach>
                and loc_sts = 'O'
                <if test="locType1 != null">
                    and loc_type1 = #{locType1}
                </if>
                <choose>
                    <when test="inoutEveryday != null and inoutEveryday">
                        AND bay1 &lt; 11 and lev1 in (3,4)
                    </when>
                    <otherwise>
                        AND (bay1 >= 11 or (bay1 &lt; 11 and lev1 in (1,2)))
                    </otherwise>
                </choose>
                and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401')
                group by ctn_no
            ) a
            where count = #{rowsLen}
            order by right(ctn_no, 2) + 0 asc, left(ctn_no, 3) + 0 asc
        )
    </select>
    <select id="queryFreeLocMast1" resultMap="BaseResultMap">
        select
        *
        from asr_loc_mast
        where 1=1
        and row1 in
        <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")">
            #{item}
        </foreach>
        and ctn_no =
        (
            select
            top 1
            ctn_no
            from (
                select
                ctn_no,
                count(1) as count
                from asr_loc_mast
                where 1=1
                and row1 in
                <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")">
                    #{item}
                </foreach>
                and loc_sts = 'O'
                <if test="rowBeg != null">
                    and row1 >= #{rowBeg}
                </if>
                <if test="rowEnd != null">
                    and row1 &lt;= #{rowEnd}
                </if>
                <if test="bayBeg != null">
                    and bay1 >= #{bayBeg}
                </if>
                <if test="bayEnd != null">
                    and bay1 &lt;= #{bayEnd}
                </if>
                <if test="levBeg != null">
                    and lev1 >= #{levBeg}
                </if>
                <if test="levEnd != null">
                    and lev1 &lt;= #{levEnd}
                </if>
                <if test="locType1 != null">
                    and loc_type1 = #{locType1}
                </if>
                <choose>
                    <when test="inoutEveryday != null and inoutEveryday">
                        AND bay1 &lt; 11 and lev1 in (3,4)
                    </when>
                    <otherwise>
                        AND (bay1 >= 11 or (bay1 &lt; 11 and lev1 in (1,2)))
                    </otherwise>
                </choose>
                and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401')
                group by ctn_no
            ) a
            where count = #{rowsLen}
            order by right(ctn_no, 2) + 0 asc, left(ctn_no, 3) + 0 asc
        )
    </select>
    <select id="queryFreeLocMastEnd" resultMap="BaseResultMap">
        select *
        from asr_loc_mast
        where row1=#{row}
        and loc_sts='O'
        <if test="locType1 != null">
            and loc_type1 = #{locType1}
        </if>
        and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401')
        order by loc_sts desc ,lev1 asc,bay1 asc
    </select>
    <select id="queryFreeLocMastEnd1" resultMap="BaseResultMap">
        select *
        from asr_loc_mast
        where row1=#{row}
        and loc_sts='O'
        <if test="locType1 != null">
            and loc_type1 = #{locType1}
        </if>
        <choose>
            <when test="inoutEveryday != null and inoutEveryday">
                AND bay1 &lt; 11             </when>
            <otherwise>
                AND bay1 >= 11
            </otherwise>
        </choose>
        and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401')
        order by loc_sts desc ,lev1 asc,bay1 asc
    </select>
    <select id="queryFreeLocMastEnd0" resultMap="BaseResultMap">
        select *
        from asr_loc_mast
        where bay1=#{bay}
        and lev1=#{lev}
--         and loc_sts='O'
        <if test="locType1 != null">
            and loc_type1 = #{locType1}
        </if>
        and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401')
        <if test="row1 >= 1 and row1 &lt;= 3">
            and row1 >= 1 and row1 &lt;= 3
            order by loc_sts desc ,row1 asc
        </if>
        <if test="row1 >= 4 and row1 &lt;= 7">
            and row1 >= 4 and row1 &lt;= 7
            order by loc_sts desc ,row1 desc
        </if>
        <if test="row1 >= 8 and row1 &lt;= 11">
            and row1 >= 8 and row1 &lt;= 11
            order by loc_sts desc ,row1 asc
        </if>
        <if test="row1 >= 12 and row1 &lt;= 14">
            and row1 >= 12 and row1 &lt;= 14
            order by loc_sts desc ,row1 desc
        </if>
        <if test="row1 >= 15 and row1 &lt;= 18">
            and row1 >= 15 and row1 &lt;= 18
            order by loc_sts desc ,row1 asc
        </if>
        <if test="row1 >= 19 and row1 &lt;= 21">
            and row1 >= 19 and row1 &lt;= 21
            order by loc_sts desc ,row1 desc
        </if>
    </select>
    <select id="queryFreeLocMast2" resultMap="BaseResultMap">
        select *
        from asr_loc_mast
        where 1=1
        and loc_sts='O'
        <if test="locType1 != null">
            and loc_type1 = #{locType1}
        </if>
        <if test="rowBeg != null">
            and row1 >= #{rowBeg}
        </if>
        <if test="rowEnd != null">
            and row1 &lt;= #{rowEnd}
        </if>
        <if test="bayBeg != null">
            and bay1 >= #{bayBeg}
        </if>
        <if test="bayEnd != null">
            and bay1 &lt;= #{bayEnd}
        </if>
        <if test="levBeg != null">
            and lev1 >= #{levBeg}
        </if>
        <if test="levEnd != null">
            and lev1 &lt;= #{levEnd}
        </if>
        and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401')
        order by loc_sts desc ,lev1 asc,bay1 asc
    </select>
    <select id="findOutMast" resultMap="BaseResultMap">
        select * from asr_loc_mast
        where loc_type1 = #{locType1}
        and loc_type2 = 2
        and crn_no in
        <foreach item="item" collection="crnNos" index="index"  separator="," open="(" close=")">
            #{item}
        </foreach>
        and loc_sts = 'O'
        order by row1,bay1,lev1
    </select>
    <select id="findInEmptyLocMast" resultMap="BaseResultMap">
        select top 1 * from asr_loc_mast
        where loc_type2 = 1
        and loc_type1 = #{locType1}
        and row1 in
        <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")">
            #{item}
        </foreach>
        and loc_sts = 'O'
        order by row1,bay1,lev1
    </select>
    <select id="findEmptyLocMastByLocNos" resultMap="BaseResultMap">
        select * from asr_loc_mast
        where loc_type2 = 1
        and loc_type1 = #{locType1}
        and loc_no in
        <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")">
            #{item}
        </foreach>
        and loc_sts = 'O'
        order by row1,bay1,lev1
    </select>
    <select id="findEmptyLowFrequencyLocMast" resultMap="BaseResultMap">
        select * from asr_loc_mast
        where loc_type2 = 3
        and loc_type1 = #{locType1}
        and loc_sts = 'O'
        order by row1,bay1,lev1
    </select>
    <select id="selectLocByLev" resultMap="BaseResultMap">
        SELECT * FROM asr_loc_mast WHERE lev1 = #{lev}
    </select>
    <select id="selectByLocNos" resultMap="BaseResultMap">
        select * from asr_loc_mast
        where loc_no in
        <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")">
            #{item}
        </foreach>
    </select>
</mapper>