From fe783a3ae2295dba85fd9775b610eb13e4e41f00 Mon Sep 17 00:00:00 2001
From: cpT <1@123>
Date: 星期二, 24 六月 2025 22:36:37 +0800
Subject: [PATCH] #改造

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  233 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 208 insertions(+), 25 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 b477145..c22aa53 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -979,8 +979,11 @@
                     }
 
                     // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                            && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+                    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()) {
                         // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                         // 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1082,6 +1085,8 @@
                             if (staProtocol.isOutEnable()){
                                 CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "娌℃湁鍙嚭");
                             }
+                        } else {
+                            CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍑哄簱绔欑偣锛氶潪鑷姩");
                         }
                     }
                 }
@@ -1568,9 +1573,15 @@
         }
         if (rgvProtocolOther.statusEnable) {
             BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", staNo));
-            if (Math.abs(basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos())
+            long abs = Math.abs(Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
+                    -
+                    Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos()));
+            if (abs<100){
+                return true;
+            }
+            if (Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
                     >=
-                    Math.abs(basDevpPosition.getPlcPosition()-rgvProtocolOther.getRgvPos())){
+                    Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos())){
                 return false;
             }
         }
@@ -1594,6 +1605,12 @@
         }
         if (rgvProtocolOther.statusEnable) {
             BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", staNo));
+            long abs = Math.abs(Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
+                    -
+                    Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos()));
+            if (abs<100){
+                return true;
+            }
             if (Math.abs(basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos())
                     >=
                     Math.abs(basDevpPosition.getPlcPosition()-rgvProtocolOther.getRgvPos())){
@@ -1617,7 +1634,85 @@
                 && staProtocol.getWorkNo() != 0) {
             TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo());
             if (taskWrk != null) {
+                Integer stano = staProtocol.getStaNo();
+                if (staProtocol.getSiteId() == 1004 || staProtocol.getSiteId()==1020){
+
+                    // 灏哄妫�娴嬪紓甯�
+                    boolean back = false;
+                    String errMsg = "-";
+                    if (staProtocol.getGrossWt()>=600){
+                        errMsg = "瓒呴噸";
+                        back = true;
+                    }
+                    if (staProtocol.isFrontErr()) {
+                        errMsg = "鍓嶈秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isBackErr()) {
+                        errMsg = "鍚庤秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isHighErr()) {
+                        errMsg = "楂樿秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isLeftErr()) {
+                        errMsg = "宸﹁秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isRightErr()) {
+                        errMsg = "鍙宠秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isWeightErr()) {
+                        errMsg = "瓒呴噸";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isBarcodeErr()) {
+                        errMsg = "鎵爜澶辫触";
+                        back = true;
+                    }
+                    // 閫�鍥�
+                    if (back) {
+                        if (stano.equals(staProtocol.getStaNo() + 1)) {
+                            return null;
+                        }
+                        if (!staProtocol.isPakMk()) {
+                            return null;
+                        }
+                        System.out.println("鎵爜鍏ュ簱澶辫触锛寋"+inSta.getStaNo()+"}鍏ュ簱绔欏洜{"+errMsg+"}寮傚父锛屾墭鐩樺凡琚��鍥�");
+//                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+                        staProtocol.setWorkNo(9999);
+                        staProtocol.setStaNo(staProtocol.getStaNo()+1);
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        devpThread.setErrorDev(staProtocol.getSiteId(), errMsg);
+                        MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                        try{
+                            taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず
+                            taskWrk.setModiTime(new Date());
+                            taskWrkMapper.updateById(taskWrk);
+                        } catch (Exception e){
+                            devpThread.setErrorDev(staProtocol.getSiteId(), errMsg+"寮傚父淇℃伅淇濆瓨宸ヤ綔妗f澶辫触锛�");
+                        }
+                        return null;
+                    }
+                }
                 return taskWrk;
+            }
+        } else if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0 && !staProtocol.isLoading()){
+            if (inSta.isDirectionOther()){
+                StaProtocol staProtocolOther = devpThread.getStation().get(inSta.getStaNoOther());
+                if (staProtocolOther == null) {
+                    return null;
+                }
+                // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
+                if (staProtocolOther.isAutoing()
+                        && staProtocolOther.getWorkNo() != 0) {
+                    TaskWrk taskWrkOther = taskWrkService.selectByWrkNo(staProtocolOther.getWorkNo());
+                    if (taskWrkOther != null) {
+                        return taskWrkOther;
+                    }
+                }
             }
         }
         return null;
@@ -1764,11 +1859,33 @@
                             if (rgvOtherIDLEOther2(rgvSlave)){
                                 if (!rgvOtherIDLE2(rgvSlave,staList.get(0))){
                                     System.out.println("杩愯灏辫繎璺宠繃==="+rgvSlave.getId()+"===");
-
                                     sign=true;
                                 }
                             }
+                            if (sign){
+                                for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+                                    if (rgvStn.getStaNo().equals(staList.get(0))) {
+                                        TaskWrk taskWrk = deviceDetection(rgvStn);
+                                        if (taskWrk != null) {
+                                            Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+                                            for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
+                                                if (rgvSuper.getStaNo().equals(outStaNo)){
+                                                    System.out.println("杩愯灏辫繎璺宠繃鍚庡洜鏈�杩滃啀娆℃墽琛�==="+rgvSlave.getId()+"===");
+
+                                                    sign=false;
+                                                    break;
+                                                }
+                                            }
+                                        } else {
+                                            return;
+                                        }
+                                        break;
+                                    }
+                                }
+                            }
                         }
+
+
 
                         if (!sign && staList.size()>1) {
                             for (Integer staNoNow : rangeList) {
@@ -1791,7 +1908,34 @@
                                     break;
                                 }
                             }
+                        }else if (!sign && staList.size()==1){
+                            BasDevpPosition basDevpPosition1 = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", staList.get(0)));
+                            if (Math.abs(basDevpPosition1.getPlcPosition()- rgvProtocol.getRgvPos())<rgvProtocol.getCarBodyJiaoMing()+rgvProtocol.getCarBodyKunPeng() + avoidDistance*2){
+                                for (Integer staNoNow : rangeList) {
+                                    for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+                                        if (rgvStn.getStaNo().equals(staNoNow)) {
+                                            TaskWrk taskWrk = deviceDetection(rgvStn);
+                                            if (taskWrk != null) {
+                                                BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
+                                                if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
+                                                    System.out.println("绛涢�夊崐杈硅寖鍥村唴浠诲姟==="+rgvSlave.getId()+"==="+taskWrk);
+                                                    System.out.println("绛涢�夊崐杈硅寖鍥村唴浠诲姟==="+rgvSlave.getId()+"==="+JSON.toJSONString(belongToRange));
+
+                                                    sign = taskGenerate(rgvSlave, rgvStn, 0);
+                                                }
+                                            }
+                                            break;
+                                        }
+                                    }
+                                    if (sign) {
+                                        break;
+                                    }
+                                }
+                            }
                         }
+
+
+
                         if (!sign && staList.size()>1) {
                             //  鍗婅竟鍖哄煙鍐呭彇璐т换鍔�
                             for (Integer staNoNow : rangeList) {
@@ -1818,26 +1962,65 @@
                                 }
                             }
                         }
-//                        if (!sign) {
-//                            //  鍗婅竟鍖哄煙鍐呮斁璐т换鍔�
-//                            for (Integer staNoNow : rangeListOther) {
-//                                for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
-//                                    if (rgvStn.getStaNo().equals(staNoNow)) {
-//                                        TaskWrk taskWrk = deviceDetection(rgvStn);
-//                                        if (taskWrk != null) {
-//                                            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
-//                                            if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
-//                                                sign = taskGenerate(rgvSlave, rgvStn, 0);
-//                                            }
-//                                        }
-//                                        break;
-//                                    }
-//                                }
-//                                if (sign) {
-//                                    break;
-//                                }
-//                            }
-//                        }
+                        if (!sign && staList.size()>1) {
+                            for (Integer staNoNow : rangeListOther) {
+                                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 rgvSuper : rgvSlave.getRgvSuperSta()){
+                                                if (rgvSuper.getStaNo().equals(outStaNo)){
+                                                    System.out.println("鍥犳渶杩滄墽琛屽崐杈瑰尯鍩熷唴鏀捐揣浠诲姟==="+rgvSlave.getId()+"===");
+                                                    BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
+                                                    if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
+                                                        sign = taskGenerate(rgvSlave, rgvStn, 0);
+                                                    }
+                                                    break;
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    }
+                                    if (sign) {
+                                        break;
+                                    }
+                                }
+                                if (sign) {
+                                    break;
+                                }
+                            }
+
+                        }else if (!sign && staList.size()==1){
+                            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 rgvSuper : rgvSlave.getRgvSuperSta()){
+                                                if (rgvSuper.getStaNo().equals(outStaNo)){
+                                                    System.out.println("鍥犳渶杩滄墽琛屽崐杈瑰尯鍩熷唴鏀捐揣浠诲姟==="+rgvSlave.getId()+"===");
+                                                    BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
+                                                    if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
+                                                        sign = taskGenerate(rgvSlave, rgvStn, 0);
+                                                    }
+                                                    break;
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    }
+                                    if (sign) {
+                                        break;
+                                    }
+                                }
+                                if (sign) {
+                                    break;
+                                }
+                            }
+
+                        }
                     } else {
                         //鍙敤鍖哄煙灏辫繎鍙栬揣
                         //灏辫繎鎺掑簭

--
Gitblit v1.9.1