From e98d4b1133ed058bfe1e6af75be9975aebfc32d8 Mon Sep 17 00:00:00 2001
From: zyh <zyh@123>
Date: 星期六, 28 三月 2026 16:00:35 +0800
Subject: [PATCH] 最后可运行版本

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  154 +++++++++++++++++++++++++++++++++------------------
 1 files changed, 100 insertions(+), 54 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 d4d3e98..2617ed5 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
+import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.BasCrnErrorMapper;
@@ -95,6 +96,8 @@
     private ConfigService configService;
     @Autowired
     private RedisUtil redisUtil;
+    @Autowired
+    private RcsService rcsService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -120,7 +123,7 @@
                 }
 
                 // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                  SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                 StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
                 if (staProtocol == null) {
                     continue;
@@ -264,9 +267,23 @@
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
 
+                        // 杈撳嚭搴撲綅绫诲瀷淇℃伅
+                        String locTypeStr = locTypeDto.getLocType1() == 1 ? "浣庡簱浣�" : "楂樺簱浣�";
+                        log.info("[鍏ュ簱搴撲綅鍒嗛厤] 妫�娴嬪埌" + locTypeStr + "锛屽紑濮嬪垎閰嶅搴斿簱浣�");
+
                         SearchLocParam param = new SearchLocParam();
                         param.setBarcode(barcode);
-                        param.setIoType(1);
+
+                        WaitPakin waitPakin = new WaitPakin();
+                        List<WaitPakin> waitPakinList = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>()
+                                .eq("zpallet", param.getBarcode())
+                        );
+                        if (waitPakinList.isEmpty()) {
+                            param.setIoType(10);
+                        } else {
+                            param.setIoType(1);
+                        }
+
                         param.setSourceStaNo(inSta.getStaNo());
                         param.setLocType1(locTypeDto.getLocType1());
                         String response = new HttpHandler.Builder()
@@ -510,6 +527,10 @@
 
                         try {
                             LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+
+                            // 杈撳嚭搴撲綅绫诲瀷淇℃伅
+                            String locTypeStr = locTypeDto.getLocType1() == 1 ? "浣庡簱浣�" : "楂樺簱浣�";
+                            log.info("[鍏ュ簱搴撲綅鍒嗛厤] 妫�娴嬪埌" + locTypeStr + "锛屽紑濮嬪垎閰嶅搴斿簱浣�");
 
                             SearchLocParam param = new SearchLocParam();
                             param.setBarcode(wrkMast.getBarcode());
@@ -1109,9 +1130,9 @@
                 }
             }
             String ip = "";
-            if (wrkMast.getStaNo()==401){
+            if (wrkMast.getStaNo() == 401) {
                 ip = "172.26.4.231";
-            }else if (wrkMast.getStaNo()==402){
+            } else if (wrkMast.getStaNo() == 402) {
                 ip = "172.26.4.232";
             }else if (wrkMast.getStaNo()==307){
                 ip = "172.26.1.231";
@@ -1267,9 +1288,44 @@
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                     //鍒ゆ柇鏄惁鏈夋鍦ㄦ墽琛屼腑鐨凙GV浠诲姟
-                    List<AgvTask> agvTasks = agvTaskService.selectList(new EntityWrapper<AgvTask>().eq("wrk_sts", 302).eq("source_sta_no", staProtocol.getSiteId()));
+                    List<AgvTask> agvTasks = agvTaskService.selectList(new EntityWrapper<AgvTask>().eq("wrk_sts", 302).eq("sta_no", String.valueOf(staProtocol.getSiteId())));
                     if (agvTasks != null && agvTasks.size() > 0) {
                         continue;
+                    }
+
+                    //绔欑偣涓�401鎴栬��402鏃讹紝浠诲姟澶囨敞涓篞鏃跺垽鏂鍖哄煙涓渶澶栦晶绔欑偣鏄惁鑳界粦瀹�
+                    //鑳界粦瀹氳鏄庣珯鐐逛负绌猴紝鍙互缁х画鍑哄簱
+                    //绔欑偣缁戝畾澶辫触鍒欒鏄庡尯鍩熸弧浜�
+                    if (staProtocol.getSiteId()==401||staProtocol.getSiteId()==402) {
+                        BindOrUnbindParam bindOrUnbindParam = new BindOrUnbindParam();
+                        String staNo1="LZP10";
+                        String staNo2="LZP11";
+                        if (wrkMast.getMemo().equals("Q-L2")){
+                            staNo1="LZP15";
+                            staNo2="LZP16";
+                        }else if (wrkMast.getMemo().equals("Q-L3")){
+                            staNo1="LZP20";
+                            staNo2="LZP21";
+                        }else if (wrkMast.getMemo().equals("Q-L4")){
+                            staNo1="LZP26";
+                            staNo2="LZP26";
+                        }else if (wrkMast.getMemo().equals("Q-L5")){
+                            staNo1="LZP30";
+                            staNo2="LZP31";
+                        }
+                        bindOrUnbindParam.setSiteCode(staNo1);
+                        R r = rcsService.bindOrUnbind(bindOrUnbindParam);
+                        if (r != null && r.get("code").equals(200)) {
+
+                        }else {
+                            bindOrUnbindParam.setSiteCode(staNo2);
+                            r = rcsService.bindOrUnbind(bindOrUnbindParam);
+                            if (r != null && r.get("code").equals(200)) {
+
+                            }else{
+                                continue;
+                            }
+                        }
                     }
                     // 鍫嗗灈鏈烘帶鍒惰繃婊�
                     if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
@@ -1894,6 +1950,10 @@
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
 
+                        // 杈撳嚭搴撲綅绫诲瀷淇℃伅
+                        String locTypeStr = locTypeDto.getLocType1() == 1 ? "浣庡簱浣�" : "楂樺簱浣�";
+                        log.info("[鍏ュ簱搴撲綅鍒嗛厤] 妫�娴嬪埌" + locTypeStr + "锛屽紑濮嬪垎閰嶅搴斿簱浣�");
+
                         SearchLocParam param = new SearchLocParam();
                         param.setIoType(10);
                         param.setSourceStaNo(emptyInSta.getStaNo());
@@ -2084,12 +2144,12 @@
                     staProtocol = staProtocol.clone();
                 }
                 // 鑾峰彇宸ヤ綔妗f暟鎹�
-                WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
+                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",staProtocol.getWorkNo()));
 //                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
                 if (null == wrkMast) {
                     continue;
                 }
-                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�:鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�");
+                News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�:鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�");
                 wrkMasts.add(wrkMast);
                 // 缁勮鍛戒护
                 LedCommand ledCommand = new LedCommand();
@@ -2097,12 +2157,12 @@
                 ledCommand.setIoType(wrkMast.getIoType());
                 // 鍑哄簱妯″紡
                 switch (wrkMast.getIoType()) {
-                    case 1:
-                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
-                        break;
-                    case 10:
-                        ledCommand.setTitle("绌烘澘鍏ュ簱");
-                        break;
+//                    case 1:
+//                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+//                        break;
+//                    case 10:
+//                        ledCommand.setTitle("绌烘澘鍏ュ簱");
+//                        break;
                     case 101:
                         ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
                         break;
@@ -2119,40 +2179,45 @@
                         ledCommand.setTitle("绌烘澘鍑哄簱");
                         ledCommand.setEmptyMk(true);
                         break;
-                    case 53:
-                        ledCommand.setTitle("鎷f枡鍏ュ簱");
-                        break;
-                    case 57:
-                        ledCommand.setTitle("鐩樼偣鍏ュ簱");
-                        break;
-                    case 54:
-                        ledCommand.setTitle("骞舵澘鍏ュ簱");
-                        break;
+//                    case 53:
+//                        ledCommand.setTitle("鎷f枡鍏ュ簱");
+//                        break;
+//                    case 57:
+//                        ledCommand.setTitle("鐩樼偣鍏ュ簱");
+//                        break;
+//                    case 54:
+//                        ledCommand.setTitle("骞舵澘鍏ュ簱");
+//                        break;
                     default:
-                        News.error(""+mark+" - 1"+" - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+                        //News.error("" + mark + " - 1" + " - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                         break;
                 }
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
                 ledCommand.setLocNo(wrkMast.getLocNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
+                ledCommand.setBarcode(wrkMast.getBarcode());
 //                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
                 if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
                     List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-                    try{
-                        if (wrkMast.getIoType()>100){
-                            for (WrkDetl wrkDetl : wrkDetls){
+                    try {
+                        if (wrkMast.getIoType() > 100) {
+                            for (WrkDetl wrkDetl : wrkDetls) {
                                 LocDetl locDetl = locDetlService.selectMatnrSpecs(wrkDetl.getMatnr(), wrkDetl.getSpecs(), wrkMast.getSourceLocNo());
-                                wrkDetl.setWeight(locDetl.getAnfme());
+                                if (Cools.isEmpty(locDetl)) {
+                                    wrkDetl.setWeight(0.0);
+                                }else {
+                                    wrkDetl.setWeight(locDetl.getAnfme());
+                                }
                             }
-                        }else {
-                            for (WrkDetl wrkDetl : wrkDetls){
+                        } else {
+                            for (WrkDetl wrkDetl : wrkDetls) {
                                 wrkDetl.setWeight(wrkDetl.getAnfme());
                             }
                         }
-                    }catch (Exception e){
-                        log.error("宸ヤ綔妗f鏄庣粏杈撳叆鐢佃鏈哄け璐�1锛氬紓甯镐俊鎭�==銆�"+e);
+                    } catch (Exception e) {
+                        log.error("宸ヤ綔妗f鏄庣粏杈撳叆鐢佃鏈哄け璐�1锛氬紓甯镐俊鎭�==銆�" + e);
                     }
-                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getWeight(),wrkDetl.getSpecs(),wrkDetl.getSku())));
+                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getWeight(), wrkDetl.getSpecs(), wrkDetl.getSku(),wrkDetl.getZpallet())));
                 }
                 commands.add(ledCommand);
             }
@@ -2163,31 +2228,12 @@
             if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
                 continue;
             }
-//             鍛戒护涓嬪彂 -------------------------------------------------------------------------------
-//            if (!commands.isEmpty()) {
-//                if (led.getId() < 7) {
-//                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
-//                        News.error(""+mark+" - 2"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-//                        continue;
-//                    } else {
-//                        ledThread.setLedMk(false);
-//                    }
-//                } else {
-//                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
-//                        News.error(""+mark+" - 3"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-//                        continue;
-//                    } else {
-//                        ledThread.setLedMk(false);
-//                    }
-//                }
-//
-//            }
             // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
             if (!commands.isEmpty()) {
                 if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
                     News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
                     continue;
-                }else {
+                } else {
                     ledThread.setLedMk(false);
                 }
             }
@@ -2198,7 +2244,7 @@
                     wrkMast.setOveMk("Y");
                     wrkMast.setModiTime(new Date());
                     if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        News.errorNoLog(""+mark+" - 4"+" - 鏇存柊宸ヤ綔妗eけ璐�");
+                        News.errorNoLog("" + mark + " - 4" + " - 鏇存柊宸ヤ綔妗eけ璐�");
                         throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
                     }
                 }
@@ -2212,7 +2258,7 @@
             }
 
         }
-        News.infoNoLog(""+mark+" - 0"+" - 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣ㄦ墽琛屽畬鎴�");
+        News.infoNoLog("" + mark + " - 0" + " - 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣ㄦ墽琛屽畬鎴�");
     }
 
     /**

--
Gitblit v1.9.1