From 6d7d0dc468f6e1d2f2f46552ed12cb6db32d4f4e Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期二, 06 九月 2022 13:34:13 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java |   20 ++++
 src/main/java/com/zy/asrs/utils/Utils.java                     |  131 ++++++++++++++++++++++++++++++--
 src/main/resources/mapper/LocMastMapper.xml                    |   36 +++++++--
 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         |    2 
 6 files changed, 169 insertions(+), 24 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index d448c40..6db87eb 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -13,7 +13,7 @@
 @Repository
 public interface LocMastMapper extends BaseMapper<LocMast> {
 
-    LocMast queryFreeLocMast(@Param("row") Integer row, @Param("rows")  List<Integer> rows, @Param("locType1") Short locType1);
+    List<LocMast> queryFreeLocMast(@Param("row") Integer row, @Param("rows") List<Integer> rows, @Param("rowsLen") Integer rowsLen, @Param("locType1") Short locType1);
 
     @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 f39fff9..c134e40 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -11,7 +11,7 @@
     /**
      * 妫�绱㈠彲鐢ㄥ簱浣�
      */
-    LocMast queryFreeLocMast(Integer row, List<Integer> rows, Short locType1);
+    LocMast queryFreeLocMast(Integer row, List<Integer> rows, Integer rowsLen, Short locType1);
 
     /**
      * 鑾峰彇鍚岀粍璐ф灦鐨勭┖搴撲綅
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 07c5584..05c53ac 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -23,8 +23,18 @@
     private RowLastnoService rowLastnoService;
 
     @Override
-    public LocMast queryFreeLocMast(Integer row, List<Integer> rows, Short locType1) {
-        return this.baseMapper.queryFreeLocMast(row, rows, locType1);
+    public LocMast queryFreeLocMast(Integer row, List<Integer> rows, Integer rowsLen, Short locType1) {
+        List<LocMast> locMasts = this.baseMapper.queryFreeLocMast(row, rows, rowsLen, locType1);
+        if (Cools.isEmpty(locMasts)) {
+            return null;
+        }
+        Integer innermostRow = Utils.getInnermostRow(locMasts.get(0).getLocNo());
+        for (LocMast locMast : locMasts) {
+            if (locMast.getRow1().equals(innermostRow)) {
+                return locMast;
+            }
+        }
+        return null;
     }
 
     @Override
@@ -81,8 +91,12 @@
     }
 
     @Override
-    public void breakUp(String locNo) {
+    public synchronized void breakUp(String locNo) {
+        List<String> groupLoc = Utils.getGroupOuterLoc(locNo);
+        for (String outerLocNo : groupLoc) {
+            LocMast locMast = this.selectById(outerLocNo);
 
+        }
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 67f9ef3..04516e3 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -196,6 +196,41 @@
         }
     }
 
+    public static Integer getInnermostRow(String locNo){
+        int row = getRow(locNo);
+        switch (row) {
+            case 1:
+            case 2:
+            case 3:
+                return 1;
+            case 4:
+            case 5:
+            case 6:
+            case 7:
+                return 7;
+            case 8:
+            case 9:
+            case 10:
+            case 11:
+                return 8;
+            case 12:
+            case 13:
+            case 14:
+                return 14;
+            case 15:
+            case 16:
+            case 17:
+            case 18:
+                return 15;
+            case 19:
+            case 20:
+            case 21:
+                return 21;
+            default:
+                throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+        }
+    }
+
 
     public static List<String> getGroupLoc(String locNo){
         int row = getRow(locNo);
@@ -320,15 +355,91 @@
         }
     }
 
-    public static void main(String[] args) {
-        SlaveProperties slaveProperties = new SlaveProperties();
-        slaveProperties.setDoubleDeep(true);
-        List<Integer> list = new ArrayList<>();
-        list.add(1);list.add(4);list.add(5);list.add(8);list.add(9);list.add(12);
-        slaveProperties.setDoubleLocs(list);
-        slaveProperties.setGroupCount(4);
-        Integer deepRow = getDeepRow(slaveProperties, 6);
-        System.out.println(deepRow);
-
+    public static List<String> getGroupOuterLoc(String locNo){
+        int row = getRow(locNo);
+        switch (row) {
+            case 1:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(2), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
+                }};
+            case 2:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
+                }};
+            case 3:
+            case 4:
+            case 11:
+            case 12:
+            case 18:
+            case 19:
+                return new ArrayList<>();
+            case 5:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+                }};
+            case 6:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+                }};
+            case 7:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
+                }};
+            case 8:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+                }};
+            case 9:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+                }};
+            case 10:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+                }};
+            case 13:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(12), 2) + locNo.substring(2));
+                }};
+            case 14:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(12), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(13), 2) + locNo.substring(2));
+                }};
+            case 15:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+                }};
+            case 16:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+                }};
+            case 17:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+                }};
+            case 20:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(19), 2) + locNo.substring(2));
+                }};
+            case 21:
+                return new ArrayList<String>() {{
+                    add(zerofill(String.valueOf(19), 2) + locNo.substring(2));
+                    add(zerofill(String.valueOf(20), 2) + locNo.substring(2));
+                }};
+            default:
+                throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+        }
     }
+
 }
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 66f91e7..c9d468a 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -269,7 +269,7 @@
         if (locMast == null) {
             List<Integer> rows = Utils.getGroupLoc(curRow);
 
-            locMast = locMastService.queryFreeLocMast(null, rows, locTypeDto.getLocType1());
+            locMast = locMastService.queryFreeLocMast(null, rows, rows.size(), locTypeDto.getLocType1());
             // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
 //            if (!locMastService.checkEmptyCount(locMast)) {
 //                locMast = null;
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 2c261f9..36d335e 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -39,18 +39,38 @@
     </resultMap>
 
     <select id="queryFreeLocMast" resultMap="BaseResultMap">
-        select top 1 *
+        select
+        *
         from asr_loc_mast
-        where
-        row1 in
+        where 1=1
+        and row1 in
         <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")">
             #{item}
         </foreach>
-        <if test="locType1 != null">
-            and loc_type1 = #{locType1}
-        </if>
-        and loc_sts='O'
-        order by loc_sts desc,row1 asc, lev1 asc, bay1 asc
+        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>
+                group by ctn_no
+            ) a
+            where count = #{rowsLen}
+            order by right(ctn_no, 2) + 0 asc, left(ctn_no, 3) + 0 asc
+        )
     </select>
 
 </mapper>

--
Gitblit v1.9.1