From 7e68f81b38116bba40e70620c563168fcde66a37 Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期五, 05 十二月 2025 09:18:38 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   56 ++++++++++--------
 src/main/webapp/views/deviceOperate/crnOperate.html         |    6 +-
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java   |    1 
 src/main/java/com/zy/asrs/controller/BasCrnpController.java |   38 +++++++-----
 src/main/java/com/zy/asrs/utils/LocFCSUtils.java            |   65 +++++++++++++++++++++
 5 files changed, 122 insertions(+), 44 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/BasCrnpController.java b/src/main/java/com/zy/asrs/controller/BasCrnpController.java
index c999738..682b00e 100644
--- a/src/main/java/com/zy/asrs/controller/BasCrnpController.java
+++ b/src/main/java/com/zy/asrs/controller/BasCrnpController.java
@@ -15,6 +15,7 @@
 import com.zy.asrs.service.BasCrnpService;
 import com.zy.asrs.service.impl.LocMastServiceImpl;
 import com.zy.asrs.utils.CodeDetectionUtil;
+import com.zy.asrs.utils.LocFCSUtils;
 import com.zy.common.web.BaseController;
 import com.zy.core.CrnThread;
 import com.zy.core.cache.CrnErrCache;
@@ -138,21 +139,21 @@
                     }
                 }
             }
-            if (Cools.isEmpty(basCrnpParam.getLocMastDemoE())){
-                return R.error("璇疯緭鍏ユ祴璇曠┖搴撲綅鍒楄〃").add("璇疯緭鍏ユ祴璇曠┖搴撲綅鍒楄〃");
-            } else {
-                String[] split = basCrnpParam.getLocMastDemoE().split(";");
-                if (split.length!=basCrnpParam.getLocMastDemoCount()){
-                    return R.error("杈撳叆娴嬭瘯绌哄簱浣嶅垪琛ㄦ暟閲忎笉鍖归厤").add("杈撳叆娴嬭瘯绌哄簱浣嶅垪琛ㄦ暟閲忎笉鍖归厤");
-                }
-                basCrnpParam.setLocMastDemoListE(new ArrayList<>(Arrays.asList(split)));
-                for (String locNo : basCrnpParam.getLocMastDemoListE()){
-                    boolean locNoDetection = CodeDetectionUtil.locNoDetection(locNo);
-                    if (!locNoDetection){
-                        return R.error("杈撳叆娴嬭瘯绌哄簱浣嶅紓甯�").add("杈撳叆娴嬭瘯绌哄簱浣嶅紓甯�");
-                    }
-                }
-            }
+//            if (Cools.isEmpty(basCrnpParam.getLocMastDemoE())){
+//                return R.error("璇疯緭鍏ユ祴璇曠┖搴撲綅鍒楄〃").add("璇疯緭鍏ユ祴璇曠┖搴撲綅鍒楄〃");
+//            } else {
+//                String[] split = basCrnpParam.getLocMastDemoE().split(";");
+//                if (split.length!=basCrnpParam.getLocMastDemoCount()){
+//                    return R.error("杈撳叆娴嬭瘯绌哄簱浣嶅垪琛ㄦ暟閲忎笉鍖归厤").add("杈撳叆娴嬭瘯绌哄簱浣嶅垪琛ㄦ暟閲忎笉鍖归厤");
+//                }
+//                basCrnpParam.setLocMastDemoListE(new ArrayList<>(Arrays.asList(split)));
+//                for (String locNo : basCrnpParam.getLocMastDemoListE()){
+//                    boolean locNoDetection = CodeDetectionUtil.locNoDetection(locNo);
+//                    if (!locNoDetection){
+//                        return R.error("杈撳叆娴嬭瘯绌哄簱浣嶅紓甯�").add("杈撳叆娴嬭瘯绌哄簱浣嶅紓甯�");
+//                    }
+//                }
+//            }
 
             if (Cools.isEmpty(basCrnpParam.getStaOutDemo())){
                 return R.error("璇疯緭鍏ユ祴璇曞嚭搴撶珯").add("璇疯緭鍏ユ祴璇曞嚭搴撶珯");
@@ -198,11 +199,14 @@
             }
             crnProtocol.setLocMastDemoCount(basCrnpParam.getLocMastDemoCount());
             crnProtocol.setLocMastDemoListF(basCrnpParam.getLocMastDemoListF());
-            crnProtocol.setLocMastDemoListE(basCrnpParam.getLocMastDemoListE());
+            ArrayList<String[]> locS = LocFCSUtils.getLocS(basCrnpParam.getLocMastDemoListF());
+
+//            crnProtocol.setLocMastDemoListE(basCrnpParam.getLocMastDemoListE());
             ArrayList<String> locMastDemoList = new ArrayList<>();
             locMastDemoList.addAll(basCrnpParam.getLocMastDemoListF());
-            locMastDemoList.addAll(basCrnpParam.getLocMastDemoListF());
+//            locMastDemoList.addAll(basCrnpParam.getLocMastDemoListF());
             crnProtocol.setLocMastDemoList(locMastDemoList);
+            crnProtocol.setLocMastDemoListSign(locS);
             crnProtocol.setStaOutDemo(basCrnpParam.getStaOutDemo());
             crnProtocol.setStaIntDemo(basCrnpParam.getStaIntDemo());
             crnProtocol.setSignIntOut(false);
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 2a1996b..646cd0a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2827,6 +2827,7 @@
                         if (locToCrnStnDemo && crnProtocol.isSignIntOut()){
                             crnProtocol.setLastIo("I");
                         } else if (locToCrnStnDemo){
+                            crnProtocol.setLastIo("I");
                             crnProtocol.setSignIntOut(true);
                         } else if (!crnProtocol.isSignIntOut()){
                             crnProtocol.setLastIo("I");
@@ -2840,6 +2841,7 @@
                         if (locToCrnStnDemo && crnProtocol.isSignIntOut()){
                             crnProtocol.setLastIo("I");
                         } else if (locToCrnStnDemo){
+                            crnProtocol.setLastIo("I");
                             crnProtocol.setSignIntOut(true);
                         } else if (!crnProtocol.isSignIntOut()){
                             crnProtocol.setLastIo("I");
@@ -3076,6 +3078,8 @@
                                 if (taskWrkMapper.updateById(taskWrk) == 0) {
                                     log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
                                 }
+
+
                             } catch (Exception e) {
                                 log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
                                 log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽紓甯革細" + e);
@@ -3303,30 +3307,34 @@
                     if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
                         continue;
                     }
-                    for (String locNo : crnProtocol.getLocMastDemoList()){
-                        LocMast locMast = locMastService.selectByLocNo(locNo);
-                        if (locMast.getLocSts().equals("F")){
-                            CarryParam carryParam = new CarryParam();
-                            carryParam.setTaskNo(locNo);
-                            carryParam.setBarcode(locNo);
-                            carryParam.setIoType(1);//浠诲姟绫诲瀷=銆�1锛氬嚭搴撱��2锛氱Щ搴撱��3锛氬叆搴�   ====杞崲涓�====>  1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴�
-                            carryParam.setTaskPriority(1);
-                            carryParam.setTargetPoint("1012");
-                            carryParam.setStartPoint(BarcodeUtils.formatCode(locNo));
-                            carryParam.setMeno("Demo");
-                            taskWrkController.addTaskPoint(carryParam);
-                            Thread.sleep(50);
-                        } else if (locMast.getLocSts().equals("O")){
-                            CarryParam carryParam = new CarryParam();
-                            carryParam.setTaskNo(locNo);
-                            carryParam.setBarcode(locNo);
-                            carryParam.setIoType(3);//浠诲姟绫诲瀷=銆�1锛氬嚭搴撱��2锛氱Щ搴撱��3锛氬叆搴�   ====杞崲涓�====>  1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴�
-                            carryParam.setTaskPriority(1);
-                            carryParam.setStartPoint("1012");
-                            carryParam.setTargetPoint(BarcodeUtils.formatCode(locNo));
-                            carryParam.setMeno("Demo");
-                            taskWrkController.addTaskPoint(carryParam);
-                            Thread.sleep(50);
+                    for (String[] locS : crnProtocol.getLocMastDemoListSign()){
+                        if (locS[3].equals("1")){
+                            String locNo = locS[0];
+                            LocMast locMast = locMastService.selectByLocNo(locNo);
+                            if (locMast.getLocSts().equals("F")){
+                                CarryParam carryParam = new CarryParam();
+                                carryParam.setTaskNo(locNo);
+                                carryParam.setBarcode(locNo);
+                                carryParam.setIoType(1);//浠诲姟绫诲瀷=銆�1锛氬嚭搴撱��2锛氱Щ搴撱��3锛氬叆搴�   ====杞崲涓�====>  1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴�
+                                carryParam.setTaskPriority(1);
+                                carryParam.setTargetPoint("1012");
+                                carryParam.setStartPoint(BarcodeUtils.formatCode(locNo));
+                                carryParam.setMeno("Demo");
+                                taskWrkController.addTaskPoint(carryParam);
+                                Thread.sleep(50);
+                            } else if (locMast.getLocSts().equals("O")){
+                                CarryParam carryParam = new CarryParam();
+                                carryParam.setTaskNo(locNo);
+                                carryParam.setBarcode(locNo);
+                                carryParam.setIoType(3);//浠诲姟绫诲瀷=銆�1锛氬嚭搴撱��2锛氱Щ搴撱��3锛氬叆搴�   ====杞崲涓�====>  1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴�
+                                carryParam.setTaskPriority(1);
+                                carryParam.setStartPoint("1012");
+                                carryParam.setTargetPoint(BarcodeUtils.formatCode(locNo));
+                                carryParam.setMeno("Demo");
+                                taskWrkController.addTaskPoint(carryParam);
+                                Thread.sleep(50);
+                                LocFCSUtils.updateLocSInPlace(crnProtocol.getLocMastDemoListSign());
+                            }
                         }
                     }
 
diff --git a/src/main/java/com/zy/asrs/utils/LocFCSUtils.java b/src/main/java/com/zy/asrs/utils/LocFCSUtils.java
new file mode 100644
index 0000000..cbbfcaa
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/LocFCSUtils.java
@@ -0,0 +1,65 @@
+package com.zy.asrs.utils;
+
+import com.zy.core.cache.RgvStatusCache;
+import com.zy.core.model.RgvSlave;
+import com.zy.core.model.protocol.RgvProtocol;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+/**
+ * Created by Monkey D. Luffy on 2023/7/18
+ */
+public class LocFCSUtils {
+
+    public static ArrayList<String[]> getLocS(ArrayList<String> locMastDemoListF) {
+        ArrayList<String[]> locS = new ArrayList<>();
+        // 鎻愬彇鏁版嵁
+        int idx = 1;
+        for (String locNo : locMastDemoListF) {
+            if (locNo != null && locNo.length() >= 5) {
+                String[] strings = new String[4];  // 澧炲姞涓�鍒楃敤浜庢帓搴忓簭鍙�
+                String result = locNo.substring(2, 5);
+
+                strings[0] = locNo;              // 鍘熷瓧绗︿覆
+                strings[1] = result;              // 鎴彇鐨勯儴鍒�
+                strings[2] = String.valueOf(idx); // 鍘熷搴忓彿
+                strings[3] = "";                  // 鎺掑簭搴忓彿锛堟殏绌猴級
+
+                locS.add(strings);
+            }
+            idx++;
+        }
+
+// 鎺掑簭
+        Collections.sort(locS, (a, b) -> {
+            int numA = Integer.parseInt(a[1]);
+            int numB = Integer.parseInt(b[1]);
+            return Integer.compare(numA, numB);
+        });
+
+// 璁剧疆鎺掑簭搴忓彿
+        for (int i = 0; i < locS.size(); i++) {
+            locS.get(i)[3] = String.valueOf(i + 1);
+        }
+        return locS;
+    }
+
+    public static void updateLocSInPlace(ArrayList<String[]> locS) {
+        if (locS == null || locS.isEmpty()) {
+            return;
+        }
+
+        // 鏇存柊鎺掑簭搴忓彿
+        for (String[] row : locS) {
+            int currentSort = Integer.parseInt(row[3]);
+
+            if (currentSort == 1) {
+                row[3] = String.valueOf(locS.size());
+            } else {
+                row[3] = String.valueOf(currentSort - 1);
+            }
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
index d2092b5..aed7e20 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -206,6 +206,7 @@
     public ArrayList<String> locMastDemoListF;//娴嬭瘯搴撲綅鍒楄〃
     public ArrayList<String> locMastDemoListE;//娴嬭瘯搴撲綅鍒楄〃
     public ArrayList<String> locMastDemoList;//娴嬭瘯搴撲綅鍒楄〃
+    public ArrayList<String[]> locMastDemoListSign;//娴嬭瘯搴撲綅鍒楄〃
     public Integer staOutDemo;//娴嬭瘯搴撲綅鍑哄簱绔�
     public Integer staIntDemo;//娴嬭瘯搴撲綅鍏ュ簱绔�
     public boolean signIntOut;//娴嬭瘯搴撲綅鍏ュ簱绔�
diff --git a/src/main/webapp/views/deviceOperate/crnOperate.html b/src/main/webapp/views/deviceOperate/crnOperate.html
index db36439..eaf5684 100644
--- a/src/main/webapp/views/deviceOperate/crnOperate.html
+++ b/src/main/webapp/views/deviceOperate/crnOperate.html
@@ -81,9 +81,9 @@
 							<el-form-item label="鍘熷鍑哄簱搴撲綅">
 								<el-input v-model="formParam.locMastDemoF" placeholder="鍘熷鏈夌墿搴撲綅"></el-input>
 							</el-form-item>
-							<el-form-item label="鍘熷绌哄簱浣�">
-								<el-input v-model="formParam.locMastDemoE" placeholder="鍘熷鏈夌墿搴撲綅"></el-input>
-							</el-form-item>
+<!--							<el-form-item label="鍘熷绌哄簱浣�">-->
+<!--								<el-input v-model="formParam.locMastDemoE" placeholder="鍘熷鏈夌墿搴撲綅"></el-input>-->
+<!--							</el-form-item>-->
 							<el-form-item label="鍫嗗灈鏈烘斁璐х珯鐐�">
 								<el-input v-model="formParam.staOutDemo" placeholder="鍫嗗灈鏈烘斁璐х珯鐐�"></el-input>
 							</el-form-item>

--
Gitblit v1.9.1