From db88462ae6850a42d58c6e04b500975c8d9806c9 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期五, 16 一月 2026 08:16:54 +0800
Subject: [PATCH] 堆垛机连续出库

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   89 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 68 insertions(+), 21 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 6b213a7..837db12 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -38,6 +38,8 @@
 import com.zy.core.thread.BarcodeThread;
 import com.zy.core.thread.LedThread;
 import com.zy.core.thread.SiemensDevpThread;
+import com.zy.system.entity.Config;
+import com.zy.system.service.impl.ConfigServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -88,6 +90,8 @@
     private String wmsUrl;
     @Autowired
     private WrkMastServiceImpl wrkMastService;
+    @Autowired
+    private ConfigServiceImpl configService;
 
     /**
      * 缁勬墭
@@ -857,9 +861,14 @@
                     break;
 //                    continue;
                 }
+                Config config = configService.selectOne(new EntityWrapper<Config>().eq("ContinuousOutboundShipment","Y"));
+                boolean flag = false;
+                if (!Cools.isEmpty(config)||!staProtocol.isLoading() && staProtocol.isOutEnable()){
+                    flag = true;
+                }
                 // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y")
-                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+                if (staProtocol.isAutoing() && flag && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y")
+                        && staProtocol.getWorkNo() == 0 ) {
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                     // 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1458,6 +1467,7 @@
      * 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
      */
     public synchronized void ledExecute() {
+
         for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
@@ -1476,7 +1486,10 @@
                 // 鑾峰彇宸ヤ綔妗f暟鎹�
                 WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
 //                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
-                if (null == wrkMast) { continue; }
+                if (null == wrkMast) {
+                    continue;
+                }
+                log.info("寮�濮嬫墽琛�:鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�");
                 wrkMasts.add(wrkMast);
                 // 缁勮鍛戒护
                 LedCommand ledCommand = new LedCommand();
@@ -1506,17 +1519,40 @@
                         ledCommand.setTitle("绌烘澘鍑哄簱");
                         ledCommand.setEmptyMk(true);
                         break;
+                    case 53:
+                        ledCommand.setTitle("鎷f枡鍏ュ簱");
+                        break;
+                    case 57:
+                        ledCommand.setTitle("鐩樼偣鍏ュ簱");
+                        break;
+                    case 54:
+                        ledCommand.setTitle("骞舵澘鍏ュ簱");
+                        break;
                     default:
-                        log.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+                        log.error("鐢佃鏈烘樉绀轰换鍔″叆鍑哄簱绫诲瀷閿欒锛侊紒锛乕宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                         break;
                 }
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
                 ledCommand.setLocNo(wrkMast.getLocNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
 //                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
-                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10 ) {
+                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
                     List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getSpecs(),wrkDetl.getModel())));
+                    try{
+                        if (wrkMast.getIoType()>100){
+                            for (WrkDetl wrkDetl : wrkDetls){
+                                LocDetl locDetl = locDetlService.selectMatnrSpecs(wrkDetl.getMatnr(), wrkDetl.getSpecs(), wrkMast.getSourceLocNo());
+                                wrkDetl.setWeight(locDetl.getAnfme());
+                            }
+                        }else {
+                            for (WrkDetl wrkDetl : wrkDetls){
+                                wrkDetl.setWeight(wrkDetl.getAnfme());
+                            }
+                        }
+                    }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())));
                 }
                 commands.add(ledCommand);
             }
@@ -1527,24 +1563,33 @@
             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 (led.getId()>4){
-                    if (!MessageQueue.offer(SlaveType.Led, led.getId()-4, new Task(3, commands))) {
-                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                        continue;
-                    } else {
-                        ledThread.setLedMk(false);
-                    }
+                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
+                    log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                    continue;
                 }else {
-                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
-                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                        continue;
-                    } else {
-                        ledThread.setLedMk(false);
-                    }
+                    ledThread.setLedMk(false);
                 }
-
             }
 
             try {
@@ -1553,6 +1598,7 @@
                     wrkMast.setOveMk("Y");
                     wrkMast.setModiTime(new Date());
                     if (wrkMastMapper.updateById(wrkMast) == 0) {
+                        log.error("鐢佃鏈烘爣璁板仛鍒板伐浣滄。涓� - 鏇存柊宸ヤ綔妗eけ璐�");
                         throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
                     }
                 }
@@ -1566,6 +1612,7 @@
             }
 
         }
+        log.info(" - 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣ㄦ墽琛屽畬鎴�");
     }
 
     /**
@@ -1766,7 +1813,7 @@
                 wrkMast.setCrnNo(crn.getId());
                 wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
                 wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
-                wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
+                wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘锛歒
                 wrkMast.setPicking("N"); // 鎷f枡
                 wrkMast.setExitMk("N"); // 閫�鍑�
                 wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘

--
Gitblit v1.9.1