From b050b0ef27649165992c264f63042d339d86a4f3 Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期二, 03 二月 2026 16:22:10 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  444 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 291 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 510d1ef..c0730c2 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -703,12 +703,16 @@
                         } else {
                             staProtocol = staProtocol.clone();
                         }
-                        if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+                        if (!staProtocol.isAutoing() || !staProtocol.isLoading()) {
+                            continue;
+                        }
+                        TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnProtocol.getLaneNo(), staDesc.getStnNo().toString());
+                        if (taskWrk == null) {
+                            log.info("鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯锛氭湭鏌ヨ鍒扮姸鎬佷负13鐨勪换鍔′俊鎭紝绔欑偣鍙�:" + staDesc.getStnNo().toString());
+                            continue;
+                        }
+                        if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0 || staProtocol.getWorkNo().equals(taskWrk.getWrkNo()))) {
                             // 鏌ヨ宸ヤ綔妗�
-                            TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnProtocol.getLaneNo(), staDesc.getStnNo().toString());
-                            if (taskWrk == null) {
-                                continue;
-                            }
                             log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
 //                            R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false);
                             staProtocol.setWorkNo(taskWrk.getWrkNo());
@@ -724,7 +728,11 @@
                             if (offer) {
                                 log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
                                 Date now = new Date();
-                                taskWrk.setStatus(TaskStatusType.OVER3.id);
+                                if (taskWrk.getTargetPoint().equals(staProtocol.getSiteId().toString())){
+                                    taskWrk.setStatus(TaskStatusType.OVER.id);
+                                } else {
+                                    taskWrk.setStatus(TaskStatusType.OVER3.id);
+                                }
                                 taskWrk.setWrkSts(14);
                                 taskWrk.setModiTime(now);
                                 taskWrk.setCompleteTime(now);
@@ -1761,7 +1769,7 @@
         ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
         if (!allTaskProtocol.isEmpty()) {
             for (TaskProtocol taskProtocol : allTaskProtocol.values()) {
-                if (taskProtocol.getTaskNo() != 0) {
+                if (taskProtocol.getTaskNo() != 0 && taskProtocol.getTaskNo()!=32222L) {
                     return taskProtocol.getTaskNo().toString();
                 }
             }
@@ -2040,6 +2048,16 @@
         }
         return null;
     }
+    public TaskWrk deviceDetectionGetWrkNo(RgvSlave.RgvStn inSta) {
+
+        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, inSta.getDevpPlcId());
+        StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+        if (staProtocol == null || Cools.isEmpty(staProtocol.getWorkNo())) {
+            return null;
+        }
+        TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo());
+        return taskWrk;
+    }
     public boolean deviceDetection(RgvSlave.RgvStn inSta,Integer rgvNo) {
         ArrayList<Integer> arrayList = new ArrayList<Integer>() {{
             add(1009);
@@ -2103,6 +2121,7 @@
     public synchronized void taskStart() {
         for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
             try {
+                Thread.sleep(101);
                 if (rgvDetection(rgvSlave)) {
                     String taskNoNow = rgvOtherTaskWrk(rgvSlave);
                     List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("PLC_POSITION", true));
@@ -2118,10 +2137,12 @@
                     }
                     List<TaskWrk> taskWrkList = new ArrayList<>();
                     List<Integer> staList = new ArrayList<>();
+                    List<String> taskNoList = taskStartRepel();
                     for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()) {
                         TaskWrk taskWrk = deviceDetection(inSta);
                         if (taskWrk != null) {
                             if (taskWrk.getWrkNo().toString().equals(taskNoNow)) continue;
+                            if (!taskNoList.contains(taskWrk.getWrkNo().toString())) continue;
                             taskWrkList.add(taskWrk);
                             staList.add(inSta.getStaNo());
                         }
@@ -2153,9 +2174,10 @@
                             if (rgvOtherIDLEOther(rgvSlave)){
                                 if (!rgvOtherIDLE(rgvSlave,staList.get(0))){
                                     System.out.println("绌洪棽灏辫繎璺宠繃==="+rgvSlave.getId()+"===");
-                                    RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"绌洪棽灏辫繎璺宠繃");
-
-                                    sign=true;
+                                    if (itSmall){
+                                        RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"绌洪棽灏辫繎璺宠繃");
+                                        sign=true;
+                                    }
                                 }
                             }
                             if (sign){
@@ -2234,9 +2256,10 @@
                             if (rgvOtherIDLEOther2(rgvSlave)){
                                 if (!rgvOtherIDLE2(rgvSlave,staList.get(0))){
                                     System.out.println("杩愯灏辫繎璺宠繃==="+rgvSlave.getId()+"===");
-                                    RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"杩愯灏辫繎璺宠繃");
-
-                                    sign=true;
+                                    if (itSmall){
+                                        RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"杩愯灏辫繎璺宠繃");
+                                        sign=true;
+                                    }
                                 }
                             }
                             if (sign){
@@ -2437,6 +2460,145 @@
                 }
             }
         }
+    }
+
+    public List<String> taskStartRepel() {
+        ArrayList<String> arrayListOld = new ArrayList<>();
+        ArrayList<String> arrayListNew = new ArrayList<>();
+        ArrayList<Integer> arrayListAllP = new ArrayList<>();
+        ArrayList<Long[]> arrayListAll = new ArrayList<>();
+        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+            try{
+                boolean itSmall = new TrackRangeUtils().IsItSmall(rgvSlave);
+                String taskNoNow = rgvOtherTaskWrk(rgvSlave);
+                if (taskNoNow.equals("鏃�")){
+                    continue;
+                }
+                if (!arrayListOld.contains(taskNoNow)){
+                    arrayListOld.add(taskNoNow);
+                }
+
+                TaskWrk taskWrk = taskWrkMapper.selectByTaskNo(taskNoNow);
+                if (taskWrk != null) {
+                    if (!arrayListAllP.contains(taskWrk.getWrkNo())) {
+
+                        RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+                        TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+
+                        arrayListAllP.add(taskWrk.getWrkNo());
+                        long startP = 0;
+                        if (!itSmall){
+                            startP = System.currentTimeMillis();
+                        }
+
+                        long endP = 0;
+                        long endP1 = 0;
+                        long endP2 = 0;
+                        ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+                        for (TaskProtocol taskProtocol : allTaskProtocol.values()){
+                            if (taskProtocol.getTaskStatus() == 2){//鍙�
+                                endP1 = taskProtocol.getTargetPosition();
+                            } else if (taskProtocol.getTaskStatus() == 3){//鏀�
+                                endP2 = taskProtocol.getTargetPosition();
+                            }
+                        }
+                        if (endP1 > endP2){
+                            if (itSmall){
+                                endP = endP1;
+                            } else {
+                                endP = endP2;
+                            }
+                        }
+                        if (endP == 0){
+                            if (itSmall){
+                                endP = System.currentTimeMillis();
+                            }
+                        }
+                        Long[] longList = {taskWrk.getWrkNo().longValue(),startP,endP};
+                        arrayListAll.add(longList);
+                    }
+                } else {
+                    RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+                    TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+
+                    try {
+                        long startP = 0;
+                        long endP = 0;
+                        ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+                        for (TaskProtocol taskProtocol : allTaskProtocol.values()){
+                            if (taskProtocol.getTaskStatus() == 2){//鍙�
+                                startP = taskProtocol.getTargetPosition();
+                            } else if (taskProtocol.getTaskStatus() == 3){//鏀�
+                                endP = taskProtocol.getTargetPosition();
+                            }
+                        }
+                        if (startP == 0 ){
+                            if (!itSmall){
+                                startP = System.currentTimeMillis();
+                            }
+                        }
+                        if (endP == 0){
+                            if (itSmall){
+                                endP = System.currentTimeMillis();
+                            }
+                        }
+//                        taskNoNow
+                        long parseLong = Long.parseLong(taskNoNow);
+                        Long[] longList = {parseLong,startP,endP};
+                        arrayListAll.add(longList);
+
+                    } catch (Exception e) {
+                        log.error("浠诲姟杩囨护鏌ヨ灏忚溅鎵ц浠诲姟寮傚父锛�"+e.getMessage());
+                        return new ArrayList<>();
+                    }
+                }
+
+            } catch (Exception e) {
+            }
+        }
+        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+            if (rgvDetection(rgvSlave)) {
+                for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+                    TaskWrk taskWrk = deviceDetectionGetWrkNo(rgvStn);
+                    if (taskWrk != null) {
+                        if (!arrayListAllP.contains(taskWrk.getWrkNo())) {
+                            arrayListAllP.add(taskWrk.getWrkNo());
+                            BasDevpPosition basDevpPositionSta = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStn.getStaNo()));
+                            BasDevpPosition basDevpPositionEnd = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
+                            Long[] longList = {taskWrk.getWrkNo().longValue(),basDevpPositionSta.getPlcPosition(),basDevpPositionEnd.getPlcPosition()};
+                            arrayListAll.add(longList);
+                        }
+                    }
+                }
+            }
+        }
+        List<Long[]> crossingPathsW = TrackUtils.findCrossingPathsW(arrayListAll);
+        List<Long> wrkNoList = new ArrayList<>();
+        List<Long> signWrk = new ArrayList<>();
+        for (Long[] longList : crossingPathsW) {
+            if (arrayListOld.contains(longList[0].toString()) || arrayListOld.contains(longList[1].toString())){
+                signWrk.add(longList[0]);
+                signWrk.add(longList[1]);
+                continue;
+            }
+            if (!wrkNoList.contains(longList[0]) && !signWrk.contains(longList[0])) {
+                if (!wrkNoList.contains(longList[1]) && !signWrk.contains(longList[1])) {
+                    wrkNoList.add(longList[0]);
+                }
+            }
+            signWrk.add(longList[0]);
+            signWrk.add(longList[1]);
+        }
+        for (Integer str : arrayListAllP) {
+            if (!signWrk.contains(str.longValue())) {
+                arrayListNew.add(str.toString());
+            }
+        }
+        for (Long wrk : wrkNoList) {
+            arrayListNew.add(wrk.toString());
+        }
+
+        return arrayListNew;
     }
 
     //鑾峰彇璧风偣涓庣粓鐐瑰璞�
@@ -2810,41 +2972,59 @@
                 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);
-//                    }
-//                }
-//            }
-
             // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
             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(crnSlave, crnProtocol); //  鍏ュ簱
-                        crnProtocol.setLastIo("O");
+                        boolean crnStnToLocDemo = this.crnStnToLocDemo(crnSlave, crnProtocol);//  鍏ュ簱
+                        if (crnStnToLocDemo){
+                            crnProtocol.setSignIntOut(true);
+                            crnProtocol.setLastIo("O");
+                        } else if (!crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("O");
+                        }
                     } else if (basCrnp.getOutEnable().equals("Y")) {
-                        this.locToCrnStnDemo(crnSlave, crnProtocol); //  鍑哄簱
-                        crnProtocol.setLastIo("I");
+                        if (!crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("I");
+                        } else {
+                            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(crnSlave, crnProtocol); //  鍑哄簱
-                        crnProtocol.setLastIo("I");
+                        if (!crnProtocol.isSignIntOut()) {
+                            crnProtocol.setLastIo("I");
+                        } else {
+                            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(crnSlave, crnProtocol); //  鍏ュ簱
-                        crnProtocol.setLastIo("O");
+                        boolean crnStnToLocDemo = this.crnStnToLocDemo(crnSlave, crnProtocol);//  鍏ュ簱
+                        if (crnStnToLocDemo){
+                            crnProtocol.setSignIntOut(true);
+                            crnProtocol.setLastIo("O");
+                        } else if (!crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("O");
+                        }
                     }
                 }
             }  else {
@@ -2866,7 +3046,8 @@
     /**
      * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
      */
-    public void crnStnToLocDemo(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
+    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()));
 
@@ -2898,11 +3079,11 @@
                 // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
                 TaskWrk taskWrk = null;
                 for (String locNo : crnProtocol.getLocMastDemoList()) {
-                    TaskWrk taskWrk1 = taskWrkService.selectByTaskNo(locNo);
+                    TaskWrk taskWrk1 = taskWrkService.selectByTaskNo(locNo+"r");
                     if (Cools.isEmpty(taskWrk1)){
                         continue;
                     }
-                    if (taskWrk1.getIoType() == 3 && taskWrk1.getWrkSts()<3){
+                    if (taskWrk1.getIoType() == 1 && taskWrk1.getWrkSts()<3){
                         taskWrk = taskWrk1;
                         break;
                     }
@@ -2958,6 +3139,7 @@
 
                     throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                 } else {
+                    result = true;
                     try {
                         devpThread.setErrorDev(staProtocol.getSiteId(), "-");
                         CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "-");
@@ -2970,16 +3152,18 @@
                 }
             }
         }
+        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()));
@@ -3012,7 +3196,7 @@
                     }
 
                     // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                    if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
+                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
                         // 鍫嗗灈鏈烘帶鍒惰繃婊�
                         if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE)) {
                             devpThread.setErrorDev(staProtocol.getSiteId(), "鍫嗗灈鏈洪潪绌洪棽");
@@ -3052,6 +3236,7 @@
                             CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触");
                             throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                         } else {
+                            result = true;
                             try {
                                 // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
                                 Date now = new Date();
@@ -3065,39 +3250,11 @@
                                 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);
-                            }
-                            try {
-                                HashMap<String, Object> headParam = new HashMap<>();
-                                headParam.put("taskNo",taskWrk.getTaskNo());
-                                headParam.put("taskStatus",taskWrk.getStatusWms());
-                                headParam.put("ioType",taskWrk.getIoTypeWms());
-                                headParam.put("barCode",taskWrk.getBarcode());
-                                headParam.put("reportTime", LocalDateTime.now());
-                                headParam.put("weight",taskWrk.getScWeight().doubleValue());
-
-                                String response;
-                                response = new HttpHandler.Builder()
-                                        // .setHeaders(headParam)
-                                        .setUri(wmsUrl)
-                                        .setPath(taskStatusFeedbackPath)
-                                        .setJson(JSON.toJSONString(headParam))
-                                        .build()
-                                        .doPost();
-                                JSONObject jsonObject = JSON.parseObject(response);
-                                apiLogService.save("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms"
-                                        , wmsUrl + taskStatusFeedbackPath
-                                        , null
-                                        , "127.0.0.1"
-                                        , JSON.toJSONString(headParam)
-                                        , response
-                                        , true
-                                );
-                            } catch (Exception e) {
-                                log.error("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms澶辫触", JSON.toJSONString(taskWrk));
-//                                throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
                             }
                         }
                     } else {
@@ -3122,6 +3279,7 @@
                 }
             }
         }
+        return result;
     }
 
     /**
@@ -3236,19 +3394,7 @@
                     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);
-                        }
-                    }
-                }
+                CrnSlave crn = crnSlave;
 
                 //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
                 if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
@@ -3258,14 +3404,7 @@
                         log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽贩閬撳彿={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getLaneNo(), crnProtocol.getTaskNo());
                         continue;
                     }
-//                Thread.sleep(300);
-                    //纭瀹屾垚淇″彿
-//                    CrnOperatorParam crnOperatorParam = new CrnOperatorParam();
-//                    crnOperatorParam.setCrnNo(crn.getId());
                     Date now = new Date();
-
-//                    crnController.crnTaskComplete(crnOperatorParam);
-//                    MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, command))
                     crnThread.setResetFlag(true);
 
                     if (!Cools.isEmpty(taskWrk)) {
@@ -3311,44 +3450,6 @@
                         taskWrk.setCompleteTime(now);
                         taskWrkService.updateById(taskWrk);
 
-
-//                    try {
-//                        HashMap<String, Object> headParam = new HashMap<>();
-//                        headParam.put("taskNo",taskWrk.getTaskNo());
-//                        headParam.put("taskStatus",taskWrk.getStatusWms());
-//                        headParam.put("ioType",taskWrk.getIoTypeWms());
-//                        headParam.put("barCode",taskWrk.getBarcode());
-//                        headParam.put("reportTime", LocalDateTime.now());
-//                        headParam.put("weight",taskWrk.getScWeight().doubleValue());
-//
-//                        String response;
-//                        log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", headParam);
-//
-//                        response = new HttpHandler.Builder()
-//                                // .setHeaders(headParam)
-//                                .setUri(wmsUrl)
-//                                .setPath(taskStatusFeedbackPath)
-//                                .setJson(JSON.toJSONString(headParam))
-//                                .build()
-//                                .doPost();
-//                        log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", response);
-//
-////                        JSONObject jsonObject = JSON.parseObject(response);
-////                        log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", jsonObject);
-//
-//                        apiLogService.save("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms"
-//                                , wmsUrl + taskStatusFeedbackPath
-//                                , null
-//                                , "127.0.0.1"
-//                                , JSON.toJSONString(headParam)
-//                                , response
-//                                , true
-//                        );
-//                    } catch (Exception e) {
-//                        log.error("wcs瀹岀粨浠诲姟涓婃姤wms澶辫触", taskWrk);
-//                        log.error("wcs瀹岀粨浠诲姟涓婃姤wms澶辫触,鎶ラ敊淇℃伅锛�", e);
-////                        throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
-//                    }
                     }
 
                 }
@@ -3370,30 +3471,67 @@
                     if (Cools.isEmpty(crnProtocol.getLocMastDemoList())) {
                         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);
+                    BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId());
+                    if (basCrnp == null) {
+                        log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crnSlave.getId());
+                        continue;
+                    }
+                    if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
+                        continue;
+                    }
+                    boolean signIn = false;
+                    for (String[] locS : crnProtocol.getLocMastDemoListSign()){
+                        if (locS[3].equals(String.valueOf(crnProtocol.getLocMastDemoListSign().size()))){
+                            String locNo1 = locS[0];
+                            String locNo2 = locS[2];
+                            ArrayList<String> locNoList = new ArrayList<>();
+                            locNoList.add(locNo1);
+                            locNoList.add(locNo2);
+                            for (String locNo : locNoList) {
+                                TaskWrk taskWrk1 = taskWrkService.selectByTaskNo(locNo+"r");
+                                if (Cools.isEmpty(taskWrk1)){
+                                    continue;
+                                }
+                                signIn = true;
+                                break;
+                            }
+                        }
+                    }
+                    if (signIn){
+                        continue;
+                    }
+                    for (String[] locS : crnProtocol.getLocMastDemoListSign()){
+                        if (locS[3].equals("1")){
+                            String locNo1 = locS[0];
+                            String locNo2 = locS[2];
+                            ArrayList<String> locNoList = new ArrayList<>();
+                            locNoList.add(locNo1);
+                            locNoList.add(locNo2);
+                            for (String locNo : locNoList) {
+                                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);
+                                } else if (locMast.getLocSts().equals("O")){
+                                    CarryParam carryParam = new CarryParam();
+                                    carryParam.setTaskNo(locNo+"r");
+                                    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);
+                                    LocFCSUtils.updateLocSInPlace(crnProtocol.getLocMastDemoListSign());
+                                }
+                            }
                         }
                     }
 

--
Gitblit v1.9.1