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 |  374 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 221 insertions(+), 153 deletions(-)

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 35cf0f5..646cd0a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4,13 +4,16 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.common.R;
 import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.controller.CrnController;
+import com.zy.asrs.controller.TaskWrkController;
 import com.zy.asrs.domain.enums.TaskStatusType;
 import com.zy.asrs.domain.enums.WorkNoType;
 import com.zy.asrs.domain.param.CrnOperatorParam;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.CarryParam;
 import com.zy.asrs.entity.param.TaskCreateParam;
 import com.zy.asrs.mapper.*;
 import com.zy.asrs.service.*;
@@ -70,6 +73,8 @@
     private TaskWrkMapper taskWrkMapper;
     @Autowired
     private TaskWrkService taskWrkService;
+    @Autowired
+    private TaskWrkController taskWrkController;
     @Autowired
     private StaDescMapper staDescMapper;
     @Autowired
@@ -2687,7 +2692,7 @@
     /**
      * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
      */
-    public boolean crnStnDEMOStop2() {
+    public int crnStnDEMOStop2() {
         int signHpMk = 0;
         for (CrnSlave crn : slaveProperties.getCrn()) {
 
@@ -2707,10 +2712,13 @@
                 signHpMk++;
             }
         }
-        if (signHpMk == slaveProperties.getCrn().size()){
-            return true;
+        if (signHpMk == 0){
+            return 2;
         }
-        return false;
+        if (signHpMk == slaveProperties.getCrn().size()){
+            return 0;
+        }
+        return 3;
     }
 
 
@@ -2755,13 +2763,9 @@
     /**
      * 婕旂ず妯″紡鍚姩
      */
-    public boolean crnStnDEMOOpen1() {
-        int selectCount = taskWrkService.selectCount(new EntityWrapper<TaskWrk>());
-        if (selectCount>0) {
-            return false;
-        }
+    public int crnStnDEMOOpen1() {
+        int sign = 0;
         for (CrnSlave crn : slaveProperties.getCrn()) {
-
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
             CrnProtocol crnProtocol = crnThread.getCrnProtocol();
@@ -2775,34 +2779,17 @@
             }
 
             if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
-                CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "瀛樺湪鍏跺畠鍫嗗灈鏈哄紑鍚紨绀烘ā寮忥紒");
                 continue;
             }
-
-            CrnSlave crnSlave = new CrnSlave(crn);
-            if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
-                CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄贩閬撳彿寮傚父锛�");
-                continue;
-            }
-
-            if (!crn.getId().equals(crnProtocol.getLaneNo())) {
-                for (CrnSlave crnOther : slaveProperties.getCrn()) {
-                    if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
-                        crnSlave.updateCrnInStn(crnOther);
-                    }
-                }
-            }
-            for (String locNo : crnProtocol.getLocMastDemoList()){
-                LocMast locMast = locMastService.selectByLocNo(locNo);
-                TaskCreateParam taskCreateParam = new TaskCreateParam(crnSlave,locMast);
-                taskCreateParam.setStartPointSta(crnProtocol.getStaIntDemo());
-                taskCreateParam.setTargetPointSta(crnProtocol.getStaOutDemo());
-                openService.taskCreate(taskCreateParam);
-            }
-
-            return true;
+            sign++;
         }
-        return false;
+        if (sign == slaveProperties.getCrn().size()){
+            return 2;
+        } else if (sign==0){
+            return 0;
+        } else {
+            return 1;
+        }
     }
 
 
@@ -2823,48 +2810,49 @@
                 continue;
             }
 
-            CrnSlave crn = new CrnSlave(crnSlave);
-            if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
-                CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄贩閬撳彿寮傚父锛�");
-                continue;
-            }
-
-            if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
-                for (CrnSlave crnOther : slaveProperties.getCrn()) {
-                    if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
-                        crn.updateCrnInStn(crnOther);
-                    }
-                }
-            }
-
-//            try{
-//                // 搴撲綅绉昏浆
-//                this.locToLoc(crn, crnProtocol);
-//            } catch (Exception e) {
-//                log.error("搴撲綅绉昏浆澶辫触");
-//            }
-
             // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
             if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
                     && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
                 // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
                 if (crnProtocol.getLastIo().equals("I")) {
                     if (basCrnp.getInEnable().equals("Y")) {
-                        this.crnStnToLocDemo(crn, crnProtocol); //  鍏ュ簱
-                        crnProtocol.setLastIo("O");
+                        boolean crnStnToLocDemo = this.crnStnToLocDemo(crnSlave, crnProtocol);//  鍏ュ簱
+                        if (crnStnToLocDemo){
+                            crnProtocol.setLastIo("O");
+                        } else if (!crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("O");
+                        }
                     } else if (basCrnp.getOutEnable().equals("Y")) {
-                        this.locToCrnStnDemo(crn, crnProtocol); //  鍑哄簱
-                        crnProtocol.setLastIo("I");
+                        boolean locToCrnStnDemo = this.locToCrnStnDemo(crnSlave, crnProtocol);//  鍑哄簱
+                        if (locToCrnStnDemo && crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("I");
+                        } else if (locToCrnStnDemo){
+                            crnProtocol.setLastIo("I");
+                            crnProtocol.setSignIntOut(true);
+                        } else if (!crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("I");
+                        }
                     }
                 }
                 // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
                 else if (crnProtocol.getLastIo().equals("O")) {
                     if (basCrnp.getOutEnable().equals("Y")) {
-                        this.locToCrnStnDemo(crn, crnProtocol); //  鍑哄簱
-                        crnProtocol.setLastIo("I");
+                        boolean locToCrnStnDemo = this.locToCrnStnDemo(crnSlave, crnProtocol);//  鍑哄簱
+                        if (locToCrnStnDemo && crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("I");
+                        } else if (locToCrnStnDemo){
+                            crnProtocol.setLastIo("I");
+                            crnProtocol.setSignIntOut(true);
+                        } else if (!crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("I");
+                        }
                     } else if (basCrnp.getInEnable().equals("Y")) {
-                        this.crnStnToLocDemo(crn, crnProtocol); //  鍏ュ簱
-                        crnProtocol.setLastIo("O");
+                        boolean crnStnToLocDemo = this.crnStnToLocDemo(crnSlave, crnProtocol);//  鍏ュ簱
+                        if (crnStnToLocDemo){
+                            crnProtocol.setLastIo("O");
+                        } else if (!crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("O");
+                        }
                     }
                 }
             }  else {
@@ -2883,12 +2871,11 @@
         }
     }
 
-
-
     /**
      * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
      */
-    public void crnStnToLocDemo(CrnSlave slave, CrnProtocol crnProtocol) {
+    public boolean crnStnToLocDemo(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
+        boolean result = false;
         for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
             List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
 
@@ -2908,7 +2895,7 @@
                     log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
                     continue;
                 }
-                if (staProtocol.isAutoing() && staProtocol.getWorkNo() > 0
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0
 //                        && staProtocol.isInEnable()
                         && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
                     flag = true;
@@ -2918,11 +2905,20 @@
                 }
 
                 // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
-                TaskWrk taskWrk = taskWrkMapper.selectPakInDemo(crnProtocol.getLaneNo(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString());
+                TaskWrk taskWrk = null;
+                for (String locNo : crnProtocol.getLocMastDemoList()) {
+                    TaskWrk taskWrk1 = taskWrkService.selectByTaskNo(locNo);
+                    if (Cools.isEmpty(taskWrk1)){
+                        continue;
+                    }
+                    if (taskWrk1.getIoType() == 1 && taskWrk1.getWrkSts()<3){
+                        taskWrk = taskWrk1;
+                        break;
+                    }
+                }
                 if (null == taskWrk) {
                     continue;
                 }
-
                 // 鍫嗗灈鏈烘帶鍒惰繃婊�
                 if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE)) {
                     devpThread.setErrorDev(staProtocol.getSiteId(), "鍫嗗灈鏈洪潪绌洪棽");
@@ -2941,11 +2937,8 @@
                     continue;
                 }
 
-//                int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
-//                taskWrk.setWrkNo(workNo);//宸ヤ綔鍙�
                 Date now = new Date();
                 taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵��
-//                taskWrk.setAssignTime(now);//娲惧彂鏃堕棿
                 taskWrk.setExecuteTime(now);
                 taskWrk.setWrkSts(3);//宸ヤ綔鐘舵�� 3.鍚婅溅鍏ュ簱
                 taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿
@@ -2966,7 +2959,7 @@
                 int bay1 = Utils.getBayShort(taskWrk.getTargetPoint()) + 1;
                 crnCommand1.setDestinationPosY((short)bay1);     // 鐩爣搴撲綅灞�
                 crnCommand1.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鎺�
-                crnCommand1.setCommand((short) 0);
+//                crnCommand.setCommand((short) 1);
                 if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand1))) {
                     log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand1));
                     devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
@@ -2974,6 +2967,7 @@
 
                     throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                 } else {
+                    result = true;
                     try {
                         devpThread.setErrorDev(staProtocol.getSiteId(), "-");
                         CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "-");
@@ -2983,34 +2977,33 @@
                         log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
                         log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽紓甯革細" + e);
                     }
-
                 }
             }
-
-            // return;
         }
+        return result;
     }
 
     /**
      * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
      * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
      */
-    public void locToCrnStnDemo(CrnSlave slave, CrnProtocol crnProtocol) {
+    public boolean locToCrnStnDemo(CrnSlave slave, CrnProtocol crnProtocol) {
+        boolean result = false;
         List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(crnProtocol.getLaneNo(), null);
         if (taskWrksInitial.size() == 0) {
-            return;
+            return result;
         }
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
             List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
             for (StaDesc staDesc : staDescs) {
                 // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
-                List<TaskWrk> taskWrks = taskWrkMapper.selectPakOutDemo(crnProtocol.getLaneNo(), staDesc.getStnNo().toString());
+                List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut(crnProtocol.getLaneNo(), staDesc.getStnNo().toString());
                 for (TaskWrk taskWrk : taskWrks) {
                     if (taskWrk == null) {
                         continue;
                     }
                     // 宸ヤ綔妗g姸鎬佸垽鏂�
-                    if (taskWrk.getIoType() != 4 || taskWrk.getTargetPoint() == null || taskWrk.getStartPoint() == null) {
+                    if (taskWrk.getIoType() != 2 || taskWrk.getTargetPoint() == null || taskWrk.getStartPoint() == null) {
                         log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", taskWrk.getWrkNo(), taskWrk.getStartPoint(), taskWrk.getIoType());
                         continue;
                     }
@@ -3031,13 +3024,7 @@
                     }
 
                     // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                    if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
-
-//                    // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-//                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-//                            && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
-                        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
+                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
                         // 鍫嗗灈鏈烘帶鍒惰繃婊�
                         if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE)) {
                             devpThread.setErrorDev(staProtocol.getSiteId(), "鍫嗗灈鏈洪潪绌洪棽");
@@ -3077,6 +3064,7 @@
                             CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触");
                             throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                         } else {
+                            result = true;
                             try {
                                 // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
                                 Date now = new Date();
@@ -3090,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);
@@ -3117,14 +3107,13 @@
                 }
             }
         }
+        return result;
     }
-
-
 
     /**
      * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
      */
-    public void crnStnToOutStnDemo() {
+    public void crnStnToOutStnDemo()  {
         for (CrnSlave crn : slaveProperties.getCrn()) {
 
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
@@ -3168,7 +3157,7 @@
                         }
                         if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
                             // 鏌ヨ宸ヤ綔妗�
-                            TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorkingDemo(crnProtocol.getLaneNo(), staDesc.getStnNo().toString());
+                            TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnProtocol.getLaneNo(), staDesc.getStnNo().toString());
                             if (taskWrk == null) {
                                 continue;
                             }
@@ -3188,9 +3177,22 @@
                                 log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
                                 Date now = new Date();
 //                                taskWrk.setStatus(TaskStatusType.OVER3.id);
-                                taskWrk.setWrkSts(2);
+                                taskWrk.setStatus(TaskStatusType.OVER.id);//鎵嬪姩瀹屾垚浠诲姟
+                                taskWrk.setWrkSts(14);
                                 taskWrk.setModiTime(now);
                                 taskWrk.setCompleteTime(now);
+
+                                LocMast locMast=locMastService.selectByLocNo(taskWrk.getStartPoint());
+                                if(Cools.isEmpty(locMast)){
+                                    R.error("娌℃湁鎵惧埌璇ュ簱浣�") ;
+                                }
+                                locMast.setLocSts("O");
+                                locMast.setModiTime(now);
+                                locMast.setModiTime(now);
+
+
+
+                                locMastService.updateById(locMast);
                                 taskWrkService.updateById(taskWrk);
                             } else {
                                 log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk));
@@ -3207,75 +3209,141 @@
     }
 
 
+    /**
+     * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
+     */
+    public void storeFinishedDemo() throws InterruptedException {
+        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+            try{
+                // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+                if (crnProtocol == null) {
+                    continue;
+                }
 
-    public synchronized void taskStartDemo() {
-        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
-            try {
-                if (rgvDetection(rgvSlave)) {
-                    String taskNoNow = rgvOtherTaskWrk(rgvSlave);
-                    List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("PLC_POSITION", true));
-                    boolean itSmall = new TrackRangeUtils().IsItSmall(rgvSlave);
-                    if (basDevpPositions.isEmpty()) {
-                        log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�");
-                        try{
-                            DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                            deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "鎸囦护鐢熸垚锛氳幏鍙栨墍鏈夌珯鐐逛俊鎭紓甯�");
-                        } catch (Exception e2){
-                        }
+                CrnSlave crn = crnSlave;
+
+                //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
+                if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
+                    //鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+                    TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crnProtocol.getLaneNo(), crnProtocol.getTaskNo().intValue());
+                    if (Cools.isEmpty(taskWrk) && crnProtocol.getTaskNo() != 999) {
+                        log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽贩閬撳彿={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getLaneNo(), crnProtocol.getTaskNo());
                         continue;
                     }
-                    List<TaskWrk> taskWrkList = new ArrayList<>();
-                    List<Integer> staList = new ArrayList<>();
-                    for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()) {
-                        TaskWrk taskWrk = deviceDetection(inSta);
-                        if (taskWrk != null) {
-                            if (taskWrk.getWrkNo().toString().equals(taskNoNow)) continue;
-                            taskWrkList.add(taskWrk);
-                            staList.add(inSta.getStaNo());
+                    Date now = new Date();
+                    crnThread.setResetFlag(true);
+
+                    if (!Cools.isEmpty(taskWrk)) {
+                        if (taskWrk.getIoType() == 1 && taskWrk.getWrkSts() == 3) {
+                            taskWrk.setWrkSts(4);//鍏ュ簱瀹屾垚
+                            taskWrk.setStatus(TaskStatusType.OVER.id);//瀹岀粨
+                            //鏇存柊搴撲綅鐘舵��
+                            LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
+                            locMast.setLocSts("F");//F.鍦ㄥ簱
+                            locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮�
+                            locMast.setModiTime(now);
+                            locMast.setModiUser(9999L);
+                            locMastService.updateById(locMast);
+                        } else if (taskWrk.getIoType() == 2 && taskWrk.getWrkSts() == 12) {
+                            taskWrk.setWrkSts(13);//鍑哄簱瀹屾垚
+                            taskWrk.setStatus(TaskStatusType.OVER.id);//瀹岀粨
+                            //鏇存柊搴撲綅鐘舵��
+                            LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
+                            locMast.setLocSts("O");//O.绌哄簱浣�
+                            locMast.setBarcode("");//鎵樼洏鐮�
+                            locMast.setModiTime(now);
+                            locMast.setModiUser(9999L);
+                            locMastService.updateById(locMast);
+                        } else if (taskWrk.getIoType() == 3 && taskWrk.getWrkSts() == 12) {
+                            taskWrk.setWrkSts(4);//鍏ュ簱瀹屾垚
+                            taskWrk.setStatus(TaskStatusType.OVER.id);//瀹岀粨
+                            //鏇存柊搴撲綅鐘舵��
+                            LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
+                            locMast.setLocSts("F");//F.鍦ㄥ簱
+                            locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮�
+                            locMast.setModiTime(now);
+                            locMast.setModiUser(9999L);
+                            locMastService.updateById(locMast);
+
+                            LocMast locMast1 = locMastService.selectByLocNo(taskWrk.getStartPoint());
+                            locMast1.setLocSts("O");//O.绌哄簱浣�
+                            locMast1.setBarcode("");//鎵樼洏鐮�
+                            locMast1.setModiTime(now);
+                            locMast1.setModiUser(9999L);
+                            locMastService.updateById(locMast1);
                         }
+                        taskWrk.setModiTime(now);
+                        taskWrk.setCompleteTime(now);
+                        taskWrkService.updateById(taskWrk);
+
                     }
 
-                    if (taskWrkList.isEmpty() || staList.isEmpty()) continue;
-
-                    boolean sign = false;
-
-                    if (!sign){
-                        //鍙敤鍖哄煙灏辫繎鍙栬揣
-                        //灏辫繎鎺掑簭
-                        RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgvSlave.getId());
-                        List<Integer> rangeList = RouteUtils.SortNearby(staList, rgvProtocol.RgvPos, basDevpPositions);
-                        //  鍗婅竟鍖哄煙鍐呭彇璐т换鍔�
-                        for (Integer staNoNow : rangeList) {
-                            for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
-                                if (rgvStn.getStaNo().equals(staNoNow)) {
-                                    TaskWrk taskWrk = deviceDetection(rgvStn);
-                                    if (taskWrk != null) {
-                                        Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
-                                        for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
-                                            if (rgvStnOut.getStaNo().equals(outStaNo)) {
-                                                sign = taskGenerate(rgvSlave, rgvStn, 0);
-                                                break;
-                                            }
-                                        }
-                                    }
-                                    break;
-                                }
-                            }
-                            if (sign) {
-                                break;
-                            }
-                        }
-                    }
                 }
-            } catch (Exception e) {
-                log.error("浠诲姟鐢熸垚澶辫触===銆嬪紓甯镐俊鎭細{}", e.getMessage());
-                try{
-                    DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                    deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "鎸囦护鐢熸垚澶辫触");
-                } catch (Exception e2){
-                }
+            } catch (Exception e){
+                log.error("鍫嗗灈鏈烘墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔澶辫触 ===>> [id:{}] [error:{}]", crnSlave.getId(), e.getMessage());
             }
         }
     }
+    public void locMastTaskDemo(){
+        try{
+            for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+                try{
+                    // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+                    if (crnProtocol == null) {
+                        continue;
+                    }
+                    if (Cools.isEmpty(crnProtocol.getLocMastDemoList())) {
+                        continue;
+                    }
+                    BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId());
+                    if (basCrnp == null) {
+                        log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crnSlave.getId());
+                        continue;
+                    }
+                    if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
+                        continue;
+                    }
+                    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());
+                            }
+                        }
+                    }
 
+                } catch (Exception e){
+
+                }
+            }
+        } catch (Exception e){
+
+        }
+    }
 }

--
Gitblit v1.9.1