From 2b12b7d324d013df11c8ed81ee61a0c5b54ca3f7 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期一, 30 一月 2023 16:05:37 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java |    9 ++++
 src/main/resources/mapper/LocMastMapper.xml                    |   42 +++++++++++++++++++++
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java            |    2 +
 src/main/java/com/zy/asrs/service/LocMastService.java          |    2 +
 src/main/java/com/zy/common/service/CommonService.java         |   20 +++++++++
 5 files changed, 74 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index 9656b06..3c9ec56 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -19,6 +19,8 @@
             , @Param("rowsLen") Integer rowsLen, @Param("locType1") Short locType1, @Param("inoutEveryday") Boolean inoutEveryday
             , @Param("rowBeg") Integer rowBeg, @Param("rowEnd") Integer rowEnd, @Param("bayBeg") Integer bayBeg
             , @Param("bayEnd") Integer bayEnd, @Param("levBeg") Integer levBeg, @Param("levEnd") Integer levEnd);
+    List<LocMast> queryFreeLocMastEnd(@Param("row") Integer row);
+    List<LocMast> queryFreeLocMastEnd0(@Param("bay") Integer bay,@Param("lev") Integer lev,@Param("row1") Integer row);
 
     @Select("select loc_no from asr_loc_mast where 1=1 and loc_sts = 'O' and crn_no = #{crnNo}")
     List<String> queryGroupEmptyStock(Integer crnNo);
diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java
index b9ce6de..e6c33e7 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -15,6 +15,8 @@
     List<LocMast> queryFreeLocMast0(List<Integer> rows, Integer rowsLen, Short locType1,Boolean inoutEveryday);
     List<LocMast> queryFreeLocMast1(List<Integer> rows, Integer rowsLen, Short locType1,Boolean inoutEveryday
                                     , Integer rowBeg, Integer rowEnd, Integer bayBeg, Integer bayEnd, Integer levBeg, Integer levEnd);
+    List<LocMast> queryFreeLocMastEnd(Integer row);
+    List<LocMast> queryFreeLocMastEnd0(Integer bay,Integer lev,Integer row);
 
     /**
      * 鑾峰彇鍚岀粍璐ф灦鐨勭┖搴撲綅
diff --git a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
index 3b85cad..47c9f4c 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -41,6 +41,15 @@
     }
 
     @Override
+    public List<LocMast> queryFreeLocMastEnd(Integer row){
+        return this.baseMapper.queryFreeLocMastEnd(row);
+    }
+    @Override
+    public List<LocMast> queryFreeLocMastEnd0(Integer bay,Integer lev,Integer row){
+        return this.baseMapper.queryFreeLocMastEnd0(bay,lev,row);
+    }
+
+    @Override
     public List<String> queryGroupEmptyStock(String sourceLocNo) {
         if (Cools.isEmpty(sourceLocNo)) {
             return null;
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index e4f3864..406773f 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -353,7 +353,25 @@
 //            }
         }
 
-        // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
+        // 2.鏃犲簱浣嶆椂锛屾棤瑙嗗尯鍩熼攣瀹氾紝閲嶆柊鏌ユ壘搴撲綅
+        if (Cools.isEmpty(locMast)){
+            List<LocMast> locMasts = locMastService.queryFreeLocMastEnd(curRow);
+            for (LocMast locMast1 : locMasts){
+                List<LocMast> locMasts1 = locMastService.queryFreeLocMastEnd0(locMast1.getBay1(), locMast1.getLev1(),locMast1.getRow1());
+                Integer innermostRow = Utils.getInnermostRow(locMasts1.get(0).getLocNo());
+                for (LocMast locMast2:locMasts1){
+                    if (locMast2.getRow1().equals(innermostRow)) {
+                        locMast = locMast2;
+                        break;
+                    }
+                }
+                if (!Cools.isEmpty(locMast)){
+                    break;
+                }
+            }
+        }
+
+        // 3.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
         if (Cools.isEmpty(locMast)) {
             // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
             if (times < rowCount) {
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 6068a56..438626c 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -186,4 +186,46 @@
         )
     </select>
 
+    <select id="queryFreeLocMastEnd" resultMap="BaseResultMap">
+        select *
+        from asr_loc_mast
+        where row1=#{row}
+        and loc_sts='O'
+        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'
+        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>
+
 </mapper>

--
Gitblit v1.9.1