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 |  259 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 239 insertions(+), 20 deletions(-)

diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 97b44e7..25a8711 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -33,7 +33,6 @@
         <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>
@@ -77,46 +76,266 @@
         )
     </select>
 
-    <select id="queryFreeLocMast2" resultMap="BaseResultMap">
+    <select id="queryFreeLocMast0" resultMap="BaseResultMap">
         select
         *
         from asr_loc_mast
         where 1=1
-        <if test="inoutEveryday == 2.0">
-            and bay1 >= 10
-        </if>
-        <if test="inoutEveryday != 2.0">
-            and bay1 &lt; 10
-        </if>
         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
-        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'
+        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')
-        group by ctn_no
-        ) a
-        where count = #{rowsLen}
-        order by right(ctn_no, 2) + 0 asc, left(ctn_no, 3) + 0 asc
-        )
+        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