From b6b46e1c4d390c80cf9bd7d4daa23202f2d11a22 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 26 五月 2023 13:47:57 +0800
Subject: [PATCH] 站点管理编辑高低库位

---
 src/main/resources/mapper/LocMastMapper.xml |  301 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 299 insertions(+), 2 deletions(-)

diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 61d8a3a..25a8711 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -33,12 +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 * from asr_loc_mast where row1=#{row} and loc_sts='O' order by loc_sts desc ,lev1 asc,bay1 asc
+        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>

--
Gitblit v1.9.1