From 4ad1f324ab1fd2b51504afc00b43b4ee40f029c2 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 20 二月 2025 09:40:03 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java |  113 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 97 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java b/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
index f7ed8a3..feeeda6 100644
--- a/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
@@ -21,9 +21,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * Created by Monkey D. Luffy on 2023.07.24
@@ -45,34 +43,85 @@
     @Autowired
     private BasCrnpService basCrnpService;
 
-    public ReturnT<String> start() {
+    public static final List<Integer> rows1 = new ArrayList<Integer>() {{
+        add(1);add(5);add(9);add(13);add(17);add(21);
+    }};
+
+    public static final List<Integer> rows2 = new ArrayList<Integer>() {{
+        add(4);add(8);add(12);add(16);add(20);add(24);
+    }};
+
+    public ReturnT<String> start(Integer staNo) {
         try {
-            if (!Cools.isEmpty(wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", 213)))){
+            if (!Cools.isEmpty(wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", staNo)))){
                 return null;
             }
             // 鑾峰彇宸ヤ綔鍙�
             int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
             ArrayList<Integer> crns =new ArrayList<>();
-            List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("out_enable", "Y").eq("wrk_no", 0));
-            for (BasCrnp basCrnp : basCrnps){
-                crns.add(basCrnp.getCrnNo());
-            }
+
             crns.add(1);
             crns.add(2);
             crns.add(3);
             crns.add(4);
             crns.add(5);
             crns.add(6);
-            boolean sign = true;
+
+            ArrayList<Integer> crnList =new ArrayList<>();
+            int[] crnCount = new int[6];
             for (Integer crnNo : crns){
+                int crnCountD = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("crn_no", crnNo));
+                crnCount[crnNo-1] = crnCountD;
+            }
+            int[] sortedCrnNos = getSortedCrnNos(crnCount);
+            for (int crnNo : sortedCrnNos){
+                crnList.add(crnNo);
+            }
+            crnList.add(6);
+            crnList.add(1);
+            crnList.add(4);
+            crnList.add(3);
+            crnList.add(5);
+            crnList.add(2);
+
+//            List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("out_enable", "Y").eq("wrk_no", 0));
+//            for (BasCrnp basCrnp : basCrnps){
+//                crns.add(basCrnp.getCrnNo());
+//            }
+
+            boolean sign = true;
+            for (Integer crnNo : crnList){
+                BasCrnp basCrnp = basCrnpService.selectById(crnNo);
+                if (basCrnp.getCrnSts()!=3 || !basCrnp.getOutEnable().equals("Y")){
+                    continue;
+                }
                 sign = true;
                 // 鑾峰彇搴撲綅
                 LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","D").eq("crn_no",crnNo));
-
                 if (Cools.isEmpty(locMast)) {
 //                    throw new CoolException("搴撲腑鏃犵┖鏉匡紒锛侊紒");
                     sign=false;
                 }
+                if (sign){
+                    if (rows1.contains(locMast.getRow1())){
+                        LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("row1", locMast.getRow1() + 1)
+                                .eq("bay1", locMast.getBay1()).eq("lev1", locMast.getLev1()));
+                        if (!Cools.isEmpty(locMast1)) {
+                            locMast = locMast1;
+                        }
+                    }else if (rows2.contains(locMast.getRow1())){
+                        LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("row1", locMast.getRow1() - 1)
+                                .eq("bay1", locMast.getBay1()).eq("lev1", locMast.getLev1()));
+                        if (!Cools.isEmpty(locMast1)) {
+                            locMast = locMast1;
+                        }
+                    }
+                }
+                if (sign && Cools.isEmpty(locMast)) {
+//                    throw new CoolException("搴撲腑鏃犵┖鏉匡紒锛侊紒");
+                    sign=false;
+                }
+
                 if (sign && !locMast.getLocSts().equals("D")){
 //                    throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
                     sign=false;
@@ -81,13 +130,20 @@
                     // 鑾峰彇婧愮珯
                     Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                             .eq("type_no", 110)
-                            .eq("stn_no", 213)
+                            .eq("stn_no", staNo)
                             .eq("crn_no", locMast.getCrnNo());
                     StaDesc staDesc = staDescService.selectOne(wrapper);
-                    Integer sourceStaNo = staDesc.getCrnStn();
-                    if (Cools.isEmpty(sourceStaNo)) {
+                    if (Cools.isEmpty(staDesc)) {
 //                    throw new CoolException("妫�绱㈡簮绔欏け璐�");
                         sign = false;
+                    }
+                    Integer sourceStaNo = null;
+                    if (sign){
+                        sourceStaNo = staDesc.getCrnStn();
+                        if (Cools.isEmpty(sourceStaNo)) {
+//                    throw new CoolException("妫�绱㈡簮绔欏け璐�");
+                            sign = false;
+                        }
                     }
                     if (sign){
                         Date now = new Date();
@@ -97,9 +153,9 @@
                         wrkMast.setIoTime(now);
                         wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
                         wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
-                        wrkMast.setIoPri(10D);
+                        wrkMast.setIoPri(99D);
                         wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
-                        wrkMast.setStaNo(213); // 鐩爣绔�
+                        wrkMast.setStaNo(staNo); // 鐩爣绔�
                         wrkMast.setCrnNo(locMast.getCrnNo());
                         wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
                         wrkMast.setFullPlt("N"); // 婊℃澘锛歒
@@ -139,4 +195,29 @@
         }
         return SUCCESS;
     }
+
+    /**
+     * 鏍规嵁鍫嗗灈鏈烘暟閲忎粠澶у埌灏忔帓搴忥紝杩斿洖鎺掑簭鍚庣殑鍫嗗灈鏈哄彿
+     *
+     * @param crnCount 鍫嗗灈鏈烘暟閲忔暟缁勶紝绱㈠紩琛ㄧず鍫嗗灈鏈哄彿鍑� 1
+     * @return 鎺掑簭鍚庣殑鍫嗗灈鏈哄彿鏁扮粍
+     */
+    public static int[] getSortedCrnNos(int[] crnCount) {
+        // 鍒涘缓涓�涓垪琛紝瀛樺偍鍫嗗灈鏈哄彿鍜屽搴旂殑鍊�
+        List<Map.Entry<Integer, Integer>> list = new ArrayList<>();
+        for (int i = 0; i < crnCount.length; i++) {
+            list.add(new AbstractMap.SimpleEntry<>(i + 1, crnCount[i])); // 鍫嗗灈鏈哄彿浠� 1 寮�濮�
+        }
+
+        // 鏍规嵁鍊间粠澶у埌灏忔帓搴�
+        list.sort((entry1, entry2) -> entry2.getValue().compareTo(entry1.getValue()));
+
+        // 鎻愬彇鎺掑簭鍚庣殑鍫嗗灈鏈哄彿
+        int[] sortedCrnNos = new int[list.size()];
+        for (int i = 0; i < list.size(); i++) {
+            sortedCrnNos[i] = list.get(i).getKey();
+        }
+
+        return sortedCrnNos;
+    }
 }

--
Gitblit v1.9.1