From cd761b085ddff0d4f55a0d5b892b3120cf8fa9d2 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期二, 13 一月 2026 13:18:04 +0800
Subject: [PATCH] 修改了AGV请求接口的逻辑,Mas获取返回信息的订单编号

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  745 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 396 insertions(+), 349 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 42853a9..c3e5bc2 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -20,10 +20,7 @@
 import com.zy.common.model.SearchLocParam;
 import com.zy.common.model.StartupDto;
 import com.zy.common.service.CommonService;
-import com.zy.common.utils.CollectionUtils;
-import com.zy.common.utils.HttpHandler;
-import com.zy.common.utils.News;
-import com.zy.common.utils.RedisUtil;
+import com.zy.common.utils.*;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
@@ -50,6 +47,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -101,6 +99,11 @@
     @Value("${wms.url}")
     private String wmsUrl;
 
+    @Autowired
+    private HikUtils hikUtils;
+    @Autowired
+    private AgvTaskServiceImpl agvTaskService;
+
     /**
      * 缁勬墭
      * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
@@ -128,6 +131,38 @@
                 //LED
                 LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
 
+                // 灏哄妫�娴嬪紓甯�
+                boolean back = false;
+                String errMsg = "";
+                if (staProtocol.isFrontError()) {
+                    errMsg = "鍓嶈秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isBackError()) {
+                    errMsg = "鍚庤秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isHighError()) {
+                    errMsg = "楂樿秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isLeftError()) {
+                    errMsg = "宸﹁秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isRightError()) {
+                    errMsg = "鍙宠秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isWeightError()) {
+                    errMsg = "瓒呴噸";
+                    back = true;
+                }
+                if (!back && staProtocol.isBarcodeError()) {
+                    errMsg = "鎵爜澶辫触";
+                    back = true;
+                }
+
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                 if (!staProtocol.isLoading()) {
                     continue;
@@ -136,14 +171,40 @@
                 if (staProtocol.isAutoing()
                         && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk()
-                        && staProtocol.getWorkNo() == 9999
+                        && staProtocol.getWorkNo() > 9990
+                        && staProtocol.getWorkNo() <9998
+                        && (staProtocol.isEmptyOutType() || staProtocol.getSiteId() == 301 || staProtocol.getSiteId() == 304)
                         && staProtocol.isPakMk()) {
                     News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
+                    Short wrkNo = 9981;
+                    Short bark = 303;
+                    if (staProtocol.getSiteId() == 304) {
+                        wrkNo = 9982;
+                        bark = 306;
+                    } else if (staProtocol.getSiteId() == 307) {
+                        wrkNo = 9983;
+                        bark = 307;
+                    }
+
+                    if (back) {
+                        // led 寮傚父鏄剧ず
+                        if (ledThread != null) {
+                            String errorMsg = errMsg;
+                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
+                        }
+                        log.error("杈撻�佺嚎寮傚父缁勬墭閫�鍥�={}", errMsg);
+                        staProtocol.setWorkNo(wrkNo);
+
+                        staProtocol.setStaNo(bark);
+//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        continue;
+                    }
 
                     String barcode = barcodeThread.getBarcode();
                     if (!Cools.isEmpty(barcode)) {
                         News.info("" + mark + " - 1" + " - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-                        if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+                        if ("  ERROR".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode) || "00000000".equals(barcode)) {
 //                            staProtocol.setWorkNo((short) 9992);
 //                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
 //                            devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -154,6 +215,12 @@
                                 String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
                                 MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                             }
+                            log.error("杈撻�佺嚎寮傚父缁勬墭閫�鍥�={}", errMsg);
+                            staProtocol.setWorkNo(wrkNo);
+
+                            staProtocol.setStaNo(bark);
+//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                             continue;
                         }
                     } else {
@@ -168,9 +235,18 @@
                             String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
                             MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                         }
+                        log.error("杈撻�佺嚎寮傚父缁勬墭閫�鍥�={}", errMsg);
+                        staProtocol.setWorkNo(wrkNo);
+
+                        staProtocol.setStaNo(bark);
+//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                         continue;
                     }
-
+                    WaitPakin waitPakin = waitPakinMapper.selectByBarcode(barcode);
+                    if (waitPakin == null){
+                        continue;
+                    }
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
                     //杩囨护鍒ゆ柇锛岄槻姝㈡嫞鏂欏啀鍏ュ簱璐х墿锛岀粡杩囧叆搴撶珯鍐嶅叆搴撴椂锛岃閫�鍥炲埌閫�搴撶珯
@@ -282,6 +358,12 @@
                                 String errorMsg = jsonObject.getString("msg");
                                 MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                             }
+                            log.error("杈撻�佺嚎寮傚父缁勬墭閫�鍥�={}", errMsg);
+                            staProtocol.setWorkNo(wrkNo);
+
+                            staProtocol.setStaNo(bark);
+//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                         }
 
                     } catch (Exception e) {
@@ -372,160 +454,6 @@
         try {
             for (DevpSlave devp : slaveProperties.getDevp()) {
                 // 閬嶅巻鎷f枡鍏ュ簱鍙�
-                for (DevpSlave.Sta pickSta : devp.getPickSta()) {
-                    // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                    StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
-                    if (staProtocol == null) {
-                        continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
-                    }
-
-                    if (staProtocol.isAutoing()
-                            && staProtocol.isLoading()
-                            && staProtocol.isInEnable()
-                            && staProtocol.getWorkNo() > 0
-                            && staProtocol.isPakMk()) {
-                        News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
-
-//                    // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-//                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
-//                    if (barcodeThread == null) {
-//                        continue;
-//                    }
-//                    String barcode = barcodeThread.getBarcode();
-//                    if(!Cools.isEmpty(barcode)) {
-//                        News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-//                        if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-//                            continue;
-//                        }
-//                    } else {
-//                        continue;
-//                    }
-
-//                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
-                        WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
-                        if (wrkMast == null) {
-                            // 鏃犳嫞鏂欐暟鎹�
-                            continue;
-                        }
-
-                        if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) {
-                            if (wrkMast.getWrkSts() != 2) {
-                                News.error("" + mark + " - 3" + " - 鎷i�夌洏鐐瑰洖搴撳伐浣滄。鐘舵�佸紓甯革紒锛侊紒 [plc缂栧彿锛歿}]", devp.getId());
-                                continue;
-                            }
-
-                            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
-                            // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                            staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
-                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-//                            staProtocol.setPalletSize(locMast.getLocType2());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            if (!result) {
-                                News.error("" + mark + " - 3" + " - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                            }
-                            continue;
-                        }
-
-                        if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
-                                || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
-                            continue;
-                        }
-
-                        // 鑾峰彇鐩爣绔�
-                        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                                .eq("type_no", wrkMast.getIoType() - 50)
-                                .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
-                                .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
-                        StaDesc staDesc = staDescService.selectOne(wrapper);
-                        if (Cools.isEmpty(staDesc)) {
-//                        News.error(""+mark+" - 2"+" - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
-//                        staProtocol.setWorkNo((short) 9989);
-//                        staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1));
-//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            //LED
-                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
-                            // led 寮傚父鏄剧ず
-                            if (ledThread != null) {
-                                String errorMsg = "姝や负鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱.璇锋斁鍦�" + pickSta.getBackSta().shortValue() + "绔欑偣";
-                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errorMsg));
-                            }
-                            continue;
-                        }
-
-                        try {
-                            LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
-                            SearchLocParam param = new SearchLocParam();
-                            param.setBarcode(wrkMast.getBarcode());
-                            param.setSourceStaNo(pickSta.getStaNo());
-                            param.setLocType1(locTypeDto.getLocType1());
-                            String response = new HttpHandler.Builder()
-                                    .setUri(wmsUrl)
-                                    .setPath("/rpc/pakin/pick/loc/v1")
-                                    .setJson(JSON.toJSONString(param))
-                                    .build()
-                                    .doPost();
-                            JSONObject jsonObject = JSON.parseObject(response);
-                            if (jsonObject.getInteger("code").equals(200)) {
-                                WrkMast newWrkMast = wrkMastMapper.selectPakInStepBarcode(wrkMast.getBarcode());
-                                if (newWrkMast == null) {
-                                    // 鏃犳嫞鏂欐暟鎹�
-                                    News.error("" + mark + " - 3" + " - 鎷i�夌洏鐐瑰洖搴撹幏鍙栧伐浣滄。澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                                    continue;
-                                }
-
-                                if(newWrkMast.getWrkSts() != 53 && newWrkMast.getWrkSts() != 57) {
-                                    News.error("" + mark + " - 3" + " - 鎷i�夌洏鐐瑰洖搴撳伐浣滄。绫诲瀷寮傚父锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                                    continue;
-                                }
-
-                                if (wrkMast.getWrkSts() != 2) {
-                                    News.error("" + mark + " - 3" + " - 鎷i�夌洏鐐瑰洖搴撳伐浣滄。鐘舵�佸紓甯革紒锛侊紒 [plc缂栧彿锛歿}]", devp.getId());
-                                    continue;
-                                }
-
-                                LocMast locMast = locMastService.selectById(newWrkMast.getLocNo());
-                                // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                                staProtocol.setWorkNo(newWrkMast.getWrkNo().shortValue());
-                                staProtocol.setStaNo(newWrkMast.getStaNo().shortValue());
-                                staProtocol.setPalletSize(locMast.getLocType2());
-                                devpThread.setPakMk(staProtocol.getSiteId(), false);
-                                boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                                if (!result) {
-                                    News.error("" + mark + " - 3" + " - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                                }
-                            } else {
-                                News.error("" + mark + " - 5" + " - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/pick/loc/v1", JSON.toJSONString(param), response);
-                            }
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-
-                    } else {
-                        News.errorNoLog("" + mark + " - 6" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isLoading() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
-                                + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk());
-                    }
-                }
-
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        News.infoNoLog("" + mark + " - 0" + " - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
-    }
-
-    /**
-     * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱-鏉$爜
-     */
-    public synchronized void stnToCrnStnPickBarcode(Integer mark) {
-        try {
-            for (DevpSlave devp : slaveProperties.getDevp()) {
-                // 閬嶅巻鎷f枡鍏ュ簱鍙�
                 for (DevpSlave.Sta insta : devp.getInSta()) {
                     // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
                     SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -539,7 +467,7 @@
                     if (staProtocol.isAutoing()
                             && staProtocol.isLoading()
                             && staProtocol.isInEnable()
-                            && staProtocol.getWorkNo() > 0
+                            && staProtocol.getWorkNo() > 9990
                             && staProtocol.isPakMk()) {
                         News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
 
@@ -548,7 +476,9 @@
                         if (barcodeThread == null) {
                             continue;
                         }
+
                         String barcode = barcodeThread.getBarcode();
+
                         if (!Cools.isEmpty(barcode)) {
                             News.info("" + mark + " - 1" + " - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", insta.getBarcode(), barcode);
                             if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
@@ -605,7 +535,169 @@
                                 throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
                             }
                             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-                            if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
+
+                            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+                                throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+                            }
+
+                            Date now = new Date();
+                            // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+                            Integer staNo = staDesc.getCrnStn();
+                            // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+                            wrkMast.setIoTime(now);
+                            wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+                            wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+                            wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+                            wrkMast.setStaNo(staNo); // 鐩爣绔�
+                            wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+                            wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+                            wrkMast.setModiTime(now);
+                            wrkMast.setUpdMk("");//鍏佽鍐嶆绉诲簱
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+                            }
+                            // 鏇存柊鏄庣粏妗o_time (鍘嗗彶妗e叧鑱斾娇鐢級
+                            wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
+                            // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+                            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+                            locMast.setLocSts("Q");
+                            locMast.setModiTime(new Date());
+                            if (!locMastService.updateById(locMast)) {
+                                throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            continue;
+                        }
+
+                        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+                        // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+                        staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                        staProtocol.setPalletSize(locMast.getLocType2());
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        if (!result) {
+                            News.error("" + mark + " - 3" + " - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                        }
+
+                    } else {
+                        News.errorNoLog("" + mark + " - 6" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isLoading() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
+                                + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk());
+                    }
+
+                }
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        News.infoNoLog("" + mark + " - 0" + " - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
+    }
+
+    /**
+     * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱-鏉$爜
+     */
+    public synchronized void stnToCrnStnPickBarcode(Integer mark) {
+        try {
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                // 閬嶅巻鎷f枡鍏ュ簱鍙�
+                for (DevpSlave.Sta insta : devp.getInSta()) {
+                    // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                    StaProtocol staProtocol = devpThread.getStation().get(insta.getStaNo());
+                    if (staProtocol == null) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+
+                    if (staProtocol.isAutoing()
+                            && staProtocol.isLoading()
+                            && staProtocol.isInEnable()
+                            && staProtocol.getWorkNo() == 9991
+                            && staProtocol.isPakMk()) {
+                        News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
+
+                        // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+                        BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, insta.getBarcode());
+                        if (barcodeThread == null) {
+                            continue;
+                        }
+
+                        String name = "401";
+                        if (staProtocol.getSiteId() == 402) {
+                            name = "402";
+                        }
+                        String bar = "";
+                        Config name1 = configService.selectOne(new EntityWrapper<Config>().eq("name", name));
+                        if (!Cools.isEmpty(name1)) {
+                            bar = name1.getValue();
+                        }
+
+                        String barcode = barcodeThread.getBarcode();
+                        if (barcode.equals("00000000")) {
+                            barcode = bar;
+                        }
+                        if (!Cools.isEmpty(barcode)) {
+                            News.info("" + mark + " - 1" + " - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", insta.getBarcode(), barcode);
+                            if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+                                continue;
+                            }
+                        } else {
+                            continue;
+                        }
+
+                        WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
+                        if (wrkMast == null) {
+                            // 鏃犳嫞鏂欐暟鎹�
+                            continue;
+                        }
+                        if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
+                                || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
+                            continue;
+                        }
+
+                        // 鎷c�佺洏銆佸苟 浣滀笟绔欒浆鎹�
+//                    int stnNo = 0;
+//                    if (wrkMast.getStaNo() == 109) {
+//                        stnNo = 127;
+//                    } else if (wrkMast.getStaNo() == 113) {
+//                        stnNo = 128;
+//                    } else {
+//                        log.error("{}鍙蜂换鍔℃暟鎹紓甯革紒", wrkMast.getWrkNo());
+//                    }
+                        // 鑾峰彇鐩爣绔�
+                        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                                .eq("type_no", wrkMast.getIoType() - 50)
+                                .eq("stn_no", insta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+                                .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+                        StaDesc staDesc = staDescService.selectOne(wrapper);
+                        if (Cools.isEmpty(staDesc)) {
+//                        News.error(""+mark+" - 2"+" - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
+//                        staProtocol.setWorkNo((short) 9989);
+//                        staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1));
+//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            //LED
+                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, insta.getLed());
+                            // led 寮傚父鏄剧ず
+                            if (ledThread != null) {
+                                String errorMsg = "姝や负鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱.璇锋斁鍦�" + insta.getBackSta().shortValue() + "绔欑偣";
+                                MessageQueue.offer(SlaveType.Led, insta.getLed(), new Task(5, errorMsg));
+                            }
+                            continue;
+                        }
+
+                        try {
+                            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+                            if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
+                                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+                            }
+                            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+
+                            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
                                 throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
                             }
 
@@ -703,12 +795,12 @@
                 staProtocol = staProtocol.clone();
             }
 
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
+            if (staProtocol.isAutoing() && staProtocol.isLoading()) {
                 CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
                 CrnProtocol crnProtocol = crnThread.getCrnProtocol();
 
                 if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
-                        && (crnProtocol.statusType == CrnStatusType.PUTTING || crnProtocol.statusType == CrnStatusType.WAITING)) {
+                        && crnProtocol.statusType == CrnStatusType.WAITING) {
                     //鏀捐揣涓� 鎴� 绛夊緟纭
                     News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
 
@@ -717,9 +809,6 @@
                             .eq("loc_no", wrkMast.getSourceLocNo()));
 
                     short staNo = wrkMast.getStaNo().shortValue();
-                    if (wrkMast.getStaNo() == 1004) {
-                        staNo = 2003;
-                    }
 
                     // 涓嬪彂绔欑偣淇℃伅
                     staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
@@ -1045,6 +1134,35 @@
                     }
                 }
             }
+            String ip = "";
+            if (wrkMast.getStaNo() == 401) {
+                ip = "172.26.4.231";
+            } else if (wrkMast.getStaNo() == 402) {
+                ip = "172.26.4.232";
+            } else if (wrkMast.getStaNo() == 307) {
+                ip = "172.26.1.231";
+            } else if (wrkMast.getStaNo() == 303) {
+                ip = "172.26.1.232";
+            } else if (wrkMast.getStaNo() == 304) {
+                ip = "172.26.1.233";
+            }
+            SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
+            String newName = sf.format(new Date()) + "_" + locMast.getLocNo();
+            String pic = wrkMast.getPic();
+            List<String> list = null;
+            if (Cools.isEmpty(pic)) {
+                list = new ArrayList<>();
+            } else {
+                list = JSON.parseArray(pic, String.class);
+            }
+            list.add(newName);
+            //鍏ュ簱鍓嶆姄鎷�
+            try {
+                hikUtils.startPic(ip, newName);
+            } catch (Exception e) {
+                log.error("鍏ュ簱鍓嶆姄鎷�");
+            }
+
 
             // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
             CrnCommand crnCommand = new CrnCommand();
@@ -1083,6 +1201,7 @@
                 News.info("787 淇敼宸ヤ綔妗g姸鎬�2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� " + wrkMast);
                 Date now = new Date();
                 wrkMast.setWrkSts(3L);
+                wrkMast.setPic(JSON.toJSONString(list));
                 wrkMast.setCrnStrTime(now);
                 wrkMast.setModiTime(now);
                 if (wrkMastMapper.updateById(wrkMast) == 0) {
@@ -1137,18 +1256,18 @@
                 }
                 //鏌ヨ鍦ㄥ簱淇℃伅
                 LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-                        .eq("loc_sts", "R")
+                        .in("loc_sts", "R", "P")
                         .eq("loc_no", wrkMast.getSourceLocNo()));
                 if (Cools.isEmpty(locMast)) {
                     News.error("鍑哄簱 ===>> 搴撲綅涓病鏈夎繖绗旇祫鏂�", wrkMast.getSourceLocNo());
                     continue;
                 }
                 //鍫嗗灈鏈烘帴椹崇珯鐐规病鏈夌┖鏂欐灦
-                if(!staProtocol.isEmptyOutType()&&(Cools.isEmpty(wrkMast.getCtnType())||wrkMast.getCtnType()==0)){
+                if (staProtocol.getSiteId() != 301 && staProtocol.getSiteId() != 304 && !staProtocol.isEmptyOutType() && (Cools.isEmpty(wrkMast.getCtnType()) || wrkMast.getCtnType() == 0)) {
                     //璇锋眰wms涓嬪彂agv鎼繍绌烘枡鏋跺埌鍫嗗灈鏈烘帴椹崇珯鐐逛换鍔�
                     try {
-                        HashMap<String,Object> hashMap=new HashMap<>();
-                        hashMap.put("wrkNo",wrkMast.getWrkNo());
+                        HashMap<String, Object> hashMap = new HashMap<>();
+                        hashMap.put("wrkNo", wrkMast.getWrkNo());
                         String response = new HttpHandler.Builder()
                                 .setUri(wmsUrl)
                                 .setPath("/rpc/createAGVMoveTask")
@@ -1167,12 +1286,25 @@
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     }
                 }
+                Boolean boo1 = false;
+                Boolean boo2 = false;
+                if (staProtocol.isEmptyOutType() || staProtocol.getSiteId() == 301 || staProtocol.getSiteId() == 304) {
+                    boo1 = true;
+                }
+                if (((staProtocol.getSiteId() == 301 || staProtocol.getSiteId() == 304) && staProtocol.isOutEnable()) || staProtocol.getSiteId()==307) {
+                    boo2 = true;
+                }
 
-                // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
+                // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��&& staProtocol.isOutEnable()
                 if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable() && staProtocol.isEmptyOutType()) {
+                        && boo1 && boo2) {
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
+                    //鍒ゆ柇鏄惁鏈夋鍦ㄦ墽琛屼腑鐨凙GV浠诲姟
+                    List<AgvTask> agvTasks = agvTaskService.selectList(new EntityWrapper<AgvTask>().eq("wrk_sts", 302).eq("source_sta_no", String.valueOf(staProtocol.getSiteId())));
+                    if (agvTasks != null && agvTasks.size() > 0) {
+                        continue;
+                    }
                     // 鍫嗗灈鏈烘帶鍒惰繃婊�
                     if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
 //                        continue;
@@ -1252,8 +1384,35 @@
                         }
                         break;
                     }
+                } else if (staProtocol.getSiteId() == 301 && staProtocol.isAutoing() && staProtocol.isLoading() && !staProtocol.isOutEnable()) {
+                    StaProtocol staProtocol1 = devpThread.getStation().get(304);
+                    if (staProtocol1 == null) {
+                        break;
+                    } else {
+                        staProtocol1 = staProtocol1.clone();
+                    }
+                    if (staProtocol1.isAutoing() && !staProtocol1.isLoading() && staProtocol1.isOutEnable()) {
+                        wrkMast.setSourceStaNo(304);
+                        wrkMast.setStaNo(306);
+                        Date now = new Date();
+                        wrkMast.setModiTime(now);
+                        wrkMastMapper.updateById(wrkMast);
+                    }
+                } else if (staProtocol.getSiteId() == 304 && staProtocol.isAutoing() && staProtocol.isLoading() && !staProtocol.isOutEnable()){
+                    StaProtocol staProtocol1 = devpThread.getStation().get(301);
+                    if (staProtocol1 == null) {
+                        break;
+                    } else {
+                        staProtocol1 = staProtocol1.clone();
+                    }
+                    if (staProtocol1.isAutoing() && !staProtocol1.isLoading() && staProtocol1.isOutEnable()) {
+                        wrkMast.setSourceStaNo(301);
+                        wrkMast.setStaNo(303);
+                        Date now = new Date();
+                        wrkMast.setModiTime(now);
+                        wrkMastMapper.updateById(wrkMast);
+                    }
                 }
-
             }
         }
     }
@@ -1759,10 +1918,8 @@
                 // 绔欑偣鏉′欢鍒ゆ柇
                 if (staProtocol.isAutoing()
                         && staProtocol.isInEnable()
-                        && staProtocol.isEmptyMk()
-                        && (staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <= 9999)
                         && staProtocol.isPakMk()
-//                        && staProtocol.getEmptyInType() == 1
+                        && staProtocol.getWorkNo() > 9990
                 ) {
                     News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
 
@@ -1787,10 +1944,15 @@
                         }
                         continue;
                     }
+                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode));
+                    WaitPakin waitPakin = waitPakinMapper.selectByBarcode(barcode);
+                    LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("barcode", barcode));
+                    if (waitPakin != null || wrkMast != null || locMast1 != null) {
+                        continue;
+                    }
 
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
                         SearchLocParam param = new SearchLocParam();
                         param.setIoType(10);
                         param.setSourceStaNo(emptyInSta.getStaNo());
@@ -1970,9 +2132,8 @@
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
             // 鍛戒护闆嗗悎
             List<LedCommand> commands = new ArrayList<>();
-//            // 宸ヤ綔妗i泦鍚�
-//            List<WrkMast> wrkMasts = new ArrayList<>();
-            List<Integer> workNoList = new ArrayList<>();
+            // 宸ヤ綔妗i泦鍚�
+            List<WrkMast> wrkMasts = new ArrayList<>();
             for (Integer staNo : led.getStaArr()) {
                 // 鑾峰彇鍙夎溅绔欑偣
                 StaProtocol staProtocol = devpThread.getStation().get(staNo);
@@ -1981,54 +2142,26 @@
                 } else {
                     staProtocol = staProtocol.clone();
                 }
-                Integer wrkNo = null;
-                Integer ioType = null;
-                Integer targetStaNo = null;
-                String sourceLocNo = null;
-                String locNo = null;
-                String barcode = null;
-
                 // 鑾峰彇宸ヤ綔妗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) {
-                    List<WrkMastLog> wrkMastLogs = wrkMastLogService.selectList(new EntityWrapper<WrkMastLog>()
-                            .eq("wrk_no", staProtocol.getWorkNo())
-                            .orderBy("modi_time", false)
-                    );
-                    if (wrkMastLogs.isEmpty()) {
-                        continue;
-                    }
-
-                    WrkMastLog wrkMastLog = wrkMastLogs.get(0);
-                    wrkNo = wrkMastLog.getWrkNo();
-                    ioType = wrkMastLog.getIoType();
-                    sourceLocNo = wrkMastLog.getSourceLocNo();
-                    locNo = wrkMastLog.getLocNo();
-                    targetStaNo = wrkMastLog.getStaNo();
-                    barcode = wrkMastLog.getBarcode();
-                }else {
-                    wrkNo = wrkMast.getWrkNo();
-                    ioType = wrkMast.getIoType();
-                    sourceLocNo = wrkMast.getSourceLocNo();
-                    locNo = wrkMast.getLocNo();
-                    targetStaNo = wrkMast.getStaNo();
-                    barcode = wrkMast.getBarcode();
+                    continue;
                 }
                 News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�:鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�");
-                workNoList.add(wrkNo);
+                wrkMasts.add(wrkMast);
                 // 缁勮鍛戒护
                 LedCommand ledCommand = new LedCommand();
-                ledCommand.setWorkNo(wrkNo);
-                ledCommand.setIoType(ioType);
+                ledCommand.setWorkNo(wrkMast.getWrkNo());
+                ledCommand.setIoType(wrkMast.getIoType());
                 // 鍑哄簱妯″紡
-                switch (ioType) {
-                    case 1:
-                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
-                        break;
-                    case 10:
-                        ledCommand.setTitle("绌烘澘鍏ュ簱");
-                        break;
+                switch (wrkMast.getIoType()) {
+//                    case 1:
+//                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+//                        break;
+//                    case 10:
+//                        ledCommand.setTitle("绌烘澘鍏ュ簱");
+//                        break;
                     case 101:
                         ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
                         break;
@@ -2045,139 +2178,55 @@
                         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" + " - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkNo, ioType);
+                        News.error("" + mark + " - 1" + " - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                         break;
                 }
-                ledCommand.setSourceLocNo(sourceLocNo);
-                ledCommand.setLocNo(locNo);
-                ledCommand.setStaNo(targetStaNo);
-                ledCommand.setBarcode(barcode);
+                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+                ledCommand.setLocNo(wrkMast.getLocNo());
+                ledCommand.setStaNo(wrkMast.getStaNo());
+                ledCommand.setBarcode(wrkMast.getBarcode());
 //                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
-                if (ioType != 110 && ioType != 10) {
-                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkNo);
-
-                    if (!wrkDetls.isEmpty()) {
-                        WrkDetl wrkDetl = wrkDetls.get(0);
-                        double anfme = 0D;
-                        double weight = 0D;
-                        for (WrkDetl detl : wrkDetls) {
-                            anfme += detl.getAnfme();
-                            weight += detl.getWeight();
-                            wrkDetl.setAnfme(anfme);
-                            wrkDetl.setWeight(weight);
-                        }
-
-                        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
-                                .eq("loc_no", wrkMast.getSourceLocNo()));
-                        double totalAnfme = 0D;
-                        double totalWeight = 0D;
-                        for (LocDetl locDetl : locDetls) {
-                            totalAnfme += locDetl.getAnfme();
-                            totalWeight += locDetl.getWeight();
-                        }
-                        wrkDetl.setStockNum(totalAnfme);
-                        wrkDetl.setStockNum2(totalWeight);
-
-                        ledCommand.getMatDtos().add(new MatDto(
-                                wrkDetl.getMatnr()
-                                , wrkDetl.getMaktx()
-                                , wrkDetl.getAnfme()
-                                , wrkDetl.getWeight()
-                                , wrkDetl.getStockNum()
-                                , wrkDetl.getStockNum2()
-                                , wrkDetl.getSpecs()
-                                , wrkDetl.getSku()
-                                , wrkDetl.getZpallet()
-                                , wrkDetl.getModel()
-                                , wrkDetl.getSupp()
-                                , wrkDetl.getKpCstmrName()
-                                , wrkDetl.getOrderNo()
-                                , wrkDetl.getCstateid$()
-                        ));
-
-                    }else {
-                        List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectTodayByWrkNo(wrkNo);
-                        if(!wrkDetlLogs.isEmpty()) {
-                            WrkDetlLog wrkDetlLog = wrkDetlLogs.get(0);
-
-                            double anfme = 0D;
-                            double weight = 0D;
-                            for (WrkDetlLog detl : wrkDetlLogs) {
-                                anfme += detl.getAnfme();
-                                weight += detl.getWeight();
-                                wrkDetlLog.setAnfme(anfme);
-                                wrkDetlLog.setWeight(weight);
+                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
+                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
+                    try {
+                        if (wrkMast.getIoType() > 100) {
+                            for (WrkDetl wrkDetl : wrkDetls) {
+                                LocDetl locDetl = locDetlService.selectMatnrSpecs(wrkDetl.getMatnr(), wrkDetl.getSpecs(), wrkMast.getSourceLocNo());
+                                if (Cools.isEmpty(locDetl)) {
+                                    wrkDetl.setWeight(0.0);
+                                }else {
+                                    wrkDetl.setWeight(locDetl.getAnfme());
+                                }
                             }
-
-                            List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
-                                    .eq("loc_no", sourceLocNo));
-                            double totalAnfme = 0D;
-                            double totalWeight = 0D;
-                            for (LocDetl locDetl : locDetls) {
-                                totalAnfme += locDetl.getAnfme();
-                                totalWeight += locDetl.getWeight();
+                        } else {
+                            for (WrkDetl wrkDetl : wrkDetls) {
+                                wrkDetl.setWeight(wrkDetl.getAnfme());
                             }
-                            wrkDetlLog.setStockNum(totalAnfme);
-                            wrkDetlLog.setStockNum2(totalWeight);
-
-                            ledCommand.getMatDtos().add(new MatDto(
-                                    wrkDetlLog.getMatnr()
-                                    , wrkDetlLog.getMaktx()
-                                    , wrkDetlLog.getAnfme()
-                                    , wrkDetlLog.getWeight()
-                                    , wrkDetlLog.getStockNum()
-                                    , wrkDetlLog.getStockNum2()
-                                    , wrkDetlLog.getSpecs()
-                                    , wrkDetlLog.getSku()
-                                    , wrkDetlLog.getZpallet()
-                                    , wrkDetlLog.getModel()
-                                    , wrkDetlLog.getSupp()
-                                    , wrkDetlLog.getKpCstmrName()
-                                    , wrkDetlLog.getOrderNo()
-                                    , wrkDetlLog.getCstateid$()
-                            ));
                         }
+                    } 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(),wrkDetl.getZpallet())));
                 }
                 commands.add(ledCommand);
             }
-            Set<Integer> workNos = new HashSet<>(workNoList);
+            Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
             // 鑾峰彇LED绾跨▼
             LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
             // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护
             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))) {
@@ -2190,15 +2239,12 @@
 
             try {
                 // 淇敼涓绘。led鏍囪
-                for (Integer wrkNo : workNoList) {
-                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkNo));
-                    if (wrkMast != null) {
-                        wrkMast.setOveMk("Y");
-                        wrkMast.setModiTime(new Date());
-                        if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            News.errorNoLog("" + mark + " - 4" + " - 鏇存柊宸ヤ綔妗eけ璐�");
-                            throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
-                        }
+                for (WrkMast wrkMast : wrkMasts) {
+                    wrkMast.setOveMk("Y");
+                    wrkMast.setModiTime(new Date());
+                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+                        News.errorNoLog("" + mark + " - 4" + " - 鏇存柊宸ヤ綔妗eけ璐�");
+                        throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
                     }
                 }
 
@@ -2385,6 +2431,7 @@
             int workNo = commonService.getWorkNo(0);
             // 淇濆瓨宸ヤ綔妗�
             WrkMast wrkMast = new WrkMast();
+            wrkMast.setId(new Date().getTime());
             wrkMast.setWrkNo(workNo);
             wrkMast.setIoTime(new Date());
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
@@ -2393,7 +2440,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"); // 绌烘澘
@@ -2498,7 +2545,7 @@
                     wrkMast.setCrnNo(crn.getId());
                     wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
                     wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
-                    wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+                    wrkMast.setFullPlt(sourceLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘锛歒
                     wrkMast.setPicking("N"); // 鎷f枡
                     wrkMast.setExitMk("N"); // 閫�鍑�
                     wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘

--
Gitblit v1.9.1