From 8dd292cfbf013f4ebc444582d508f18825f321d2 Mon Sep 17 00:00:00 2001
From: Administrator <1051256694@qq.com>
Date: 星期六, 14 三月 2026 13:18:53 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/plugin/NormalProcess.java           |    4 +
 src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java |   10 ++---
 src/main/java/com/zy/core/utils/WmsOperateUtils.java          |    2 
 src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java   |   59 ++++++++++++++++++++---------
 src/main/java/com/zy/common/service/CommonService.java        |    6 ++-
 5 files changed, 53 insertions(+), 28 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 52fba06..ea206af 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -258,8 +258,10 @@
         wrkMast.setIoType(WrkIoType.IN.id); // 鍏ュ嚭搴撶姸鎬侊細 1.鍏ュ簱
         wrkMast.setIoPri(ioPri);
         wrkMast.setLocNo(param.getLocNo()); // 鐩爣搴撲綅
-        wrkMast.setSourceStaNo(Integer.valueOf(param.getSourceStaNo()));//婧愮珯
-        wrkMast.setStaNo(Integer.valueOf(param.getSourceStaNo()));//鐩爣绔�
+        if (!Cools.isEmpty(param.getSourceStaNo())&&!param.getSourceStaNo().equals("null")){
+            wrkMast.setSourceStaNo(Integer.valueOf(param.getSourceStaNo()));//婧愮珯
+        }
+        wrkMast.setStaNo(Integer.valueOf(param.getStaNo()));//鐩爣绔�
         wrkMast.setWmsWrkNo(String.valueOf(param.getTaskNo()));
         wrkMast.setBarcode(param.getBarcode());
         wrkMast.setAppeTime(now);
diff --git a/src/main/java/com/zy/core/plugin/NormalProcess.java b/src/main/java/com/zy/core/plugin/NormalProcess.java
index 018cbfc..0306392 100644
--- a/src/main/java/com/zy/core/plugin/NormalProcess.java
+++ b/src/main/java/com/zy/core/plugin/NormalProcess.java
@@ -177,7 +177,9 @@
                             JSONObject jsonObject = JSON.parseObject(response);
                             if (jsonObject.getInteger("code").equals(200)) {
                                 StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
+                                if (Cools.isEmpty(dto.getTaskNo())){
+                                    throw new Exception("TaskNo涓嶈兘涓虹┖");
+                                }
                                 CreateInTaskParam taskParam = new CreateInTaskParam();
                                 taskParam.setTaskNo(String.valueOf(dto.getTaskNo()));
                                 taskParam.setLocNo(dto.getLocNo());
diff --git a/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java b/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
index f3bbd8a..5e7f2b7 100644
--- a/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
@@ -82,16 +82,14 @@
                     if (task != null) {
                         step = task.getStep();
                     }
+
                     if (step == 2) {
                         sendCommand((CrnCommand) task.getData());
-                    }
-                    if (step == 3) {
+                    }else if (step == 3) {
                         sendCommand1((CrnCommand) task.getData());
-                    }
-                    if (step == 4) {
+                    }else if (step == 4) {
                         sendCommand2((CrnCommand) task.getData());
-                    }
-                    if (step == 5) {
+                    }else if (step == 5) {
                         sendCommand3((CrnCommand) task.getData());
                     }
 
diff --git a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
index d1bd424..2bd254b 100644
--- a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
@@ -80,7 +80,11 @@
 
             List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                     .eq("crn_no", basCrnp.getCrnNo())
-                    .in("wrk_sts", WrkStsType.INBOUND_RUN.sts, WrkStsType.OUTBOUND_RUN.sts)
+                    .in("wrk_sts",
+                            WrkStsType.INBOUND_RUN.sts
+                            , WrkStsType.OUTBOUND_RUN.sts
+                            , WrkStsType.LOC_MOVE_RUN.sts
+                    )
             );
             if(!wrkMasts.isEmpty()){
                 continue;
@@ -97,46 +101,61 @@
                 // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
                 if (crnProtocol.getLastIo().equals("I")) {
                     if (basCrnp.getInEnable().equals("Y")) {
-                        this.crnExecuteIn(basCrnp, crnThread); //  鍏ュ簱
+                        boolean result = this.crnExecuteIn(basCrnp, crnThread);//  鍏ュ簱
                         crnProtocol.setLastIo("O");
+                        if (result) {
+                            break;
+                        }
                     } else if (basCrnp.getOutEnable().equals("Y")) {
-                        this.crnExecuteOut(basCrnp, crnThread); //  鍑哄簱
+                        boolean result = this.crnExecuteOut(basCrnp, crnThread);//  鍑哄簱
                         crnProtocol.setLastIo("I");
+                        if(result) {
+                            break;
+                        }
                     }
                 }
                 // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
                 else if (crnProtocol.getLastIo().equals("O")) {
                     if (basCrnp.getOutEnable().equals("Y")) {
-                        this.crnExecuteOut(basCrnp, crnThread); //  鍑哄簱
+                        boolean result = this.crnExecuteOut(basCrnp, crnThread);//  鍑哄簱
                         crnProtocol.setLastIo("I");
+                        if (result) {
+                            break;
+                        }
                     } else if (basCrnp.getInEnable().equals("Y")) {
-                        this.crnExecuteIn(basCrnp, crnThread); //  鍏ュ簱
+                        boolean result = this.crnExecuteIn(basCrnp, crnThread);//  鍏ュ簱
                         crnProtocol.setLastIo("O");
+                        if (result) {
+                            break;
+                        }
                     }
                 }
 
                 //搴撲綅绉昏浆
-                this.crnExecuteLocTransfer(basCrnp, crnThread);
+                boolean result = this.crnExecuteLocTransfer(basCrnp, crnThread);
+                if(result) {
+                    break;
+                }
             }
         }
     }
 
     @Synchronized
-    private void crnExecuteIn(BasCrnp basCrnp, CrnThread crnThread) {
+    private boolean crnExecuteIn(BasCrnp basCrnp, CrnThread crnThread) {
         CrnProtocol crnProtocol = crnThread.getStatus();
         if(crnProtocol == null){
-            return;
+            return false;
         }
 
         if(!basCrnp.getInEnable().equals("Y")){
             News.info("鍫嗗灈鏈�:{} 鍙叆淇″彿涓嶆弧瓒�", basCrnp.getCrnNo());
-            return;
+            return false;
         }
 
         List<StationObjModel> inStationList = basCrnp.getInStationList$();
         if(inStationList.isEmpty()){
             News.info("鍫嗗灈鏈�:{} 鍏ュ簱绔欑偣鏈缃�", basCrnp.getCrnNo());
-            return;
+            return false;
         }
 
         Integer crnNo = basCrnp.getCrnNo();
@@ -219,25 +238,27 @@
                 MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
                 notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_IN_TASK_RUN, null);
                 News.info("鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔燂紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(command));
+                return true;
             }
         }
+        return false;
     }
 
-    private synchronized void crnExecuteOut(BasCrnp basCrnp, CrnThread crnThread) {
+    private synchronized boolean crnExecuteOut(BasCrnp basCrnp, CrnThread crnThread) {
         CrnProtocol crnProtocol = crnThread.getStatus();
         if(crnProtocol == null){
-            return;
+            return false;
         }
 
         if(!basCrnp.getOutEnable().equals("Y")){
             News.info("鍫嗗灈鏈�:{} 鍙嚭淇″彿涓嶆弧瓒�", basCrnp.getCrnNo());
-            return;
+            return false;
         }
 
         List<StationObjModel> outStationList = basCrnp.getOutStationList$();
         if(outStationList.isEmpty()){
             News.info("鍫嗗灈鏈�:{} 鍑哄簱绔欑偣鏈缃�", basCrnp.getCrnNo());
-            return;
+            return false;
         }
 
         Integer crnNo = basCrnp.getCrnNo();
@@ -316,10 +337,11 @@
                     MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
                     notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_OUT_TASK_RUN, null);
                     News.info("鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔燂紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(command));
-                    return;
+                    return true;
                 }
             }
         }
+        return false;
     }
 
     private synchronized boolean crnExecuteInPlanner(BasCrnp basCrnp, CrnThread crnThread, WrkMast wrkMast) {
@@ -500,10 +522,10 @@
         return false;
     }
 
-    private synchronized void crnExecuteLocTransfer(BasCrnp basCrnp, CrnThread crnThread) {
+    private synchronized boolean crnExecuteLocTransfer(BasCrnp basCrnp, CrnThread crnThread) {
         CrnProtocol crnProtocol = crnThread.getStatus();
         if(crnProtocol == null){
-            return;
+            return false;
         }
 
         Integer crnNo = basCrnp.getCrnNo();
@@ -561,9 +583,10 @@
                 MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
                 notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_TRANSFER_TASK_RUN, null);
                 News.info("鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔燂紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(command));
-                return;
+                return true;
             }
         }
+        return false;
     }
 
     //鍫嗗灈鏈轰换鍔℃墽琛屽畬鎴�
diff --git a/src/main/java/com/zy/core/utils/WmsOperateUtils.java b/src/main/java/com/zy/core/utils/WmsOperateUtils.java
index 107733a..9967283 100644
--- a/src/main/java/com/zy/core/utils/WmsOperateUtils.java
+++ b/src/main/java/com/zy/core/utils/WmsOperateUtils.java
@@ -423,7 +423,7 @@
         String[] split = crnNo1.getArr().split(",");
         for (Integer idx : indices) {
             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", split[idx]));
-            if (locMast == null||Cools.isEmpty(locMast.getBarcode())) {
+            if (locMast == null||Cools.isEmpty(locMast.getBarcode())||locMast.getLocSts().equals("O")) {
                 News.info("娌℃湁鏌ヨ鍒拌搴撲綅鎴栬�呮病鏈夋壘鍒拌搴撲綅瀵瑰簲鎵樼洏鐮� 锛歿}", split[idx]);
                 CrnCommand command = new CrnCommand();
                 command.setLocNo(locMast.getLocNo());

--
Gitblit v1.9.1