From 5b38cd8435ccd19887b0ab1ece82408366de532d Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期二, 23 十二月 2025 10:44:03 +0800
Subject: [PATCH] #移库事务回滚修改

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  425 +++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 314 insertions(+), 111 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 b4eee61..893075b 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -68,7 +68,7 @@
     @Autowired
     private WrkDetlService wrkDetlService;
     @Autowired
-    private WaitPakinMapper waitPakinMapper;
+    private WaitPakinService waitPakinService;
     @Autowired
     private LocMastService locMastService;
     @Autowired
@@ -86,6 +86,8 @@
 
     @Value("${wms.url}")
     private String wmsUrl;
+    @Autowired
+    private WrkMastServiceImpl wrkMastService;
 
     /**
      * 缁勬墭
@@ -103,7 +105,7 @@
                 }
                 String barcode = barcodeThread.getBarcode();
                 if(!Cools.isEmpty(barcode)) {
-                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+//                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
                     if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
                         continue;
                     }
@@ -122,10 +124,43 @@
 
                 // 鍏ュ嚭搴撴ā寮忓垽鏂�
 //                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-                if ( inSta.getStaNo()==101 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) { continue; }
-                if ( inSta.getStaNo()==103 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
-                if ( inSta.getStaNo()==105 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) { continue; }
-                if ( inSta.getStaNo()==107 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
+                if ( inSta.getStaNo()==102 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) { continue; }
+                if ( inSta.getStaNo()==104 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
+                if ( inSta.getStaNo()==106 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) { continue; }
+
+                //led
+                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                // 灏哄妫�娴嬪紓甯�
+                boolean back = false;
+                String errMsg = "";
+                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 (staProtocol.isAutoing() && staProtocol.isLoading()
@@ -133,18 +168,19 @@
                         && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990)
                         && staProtocol.isPakMk()){// && !Cools.isEmpty(barcode)) {
 
-//                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-//                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-//                        //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
-//                        staProtocol.setWorkNo((short)9999);
-//                        staProtocol.setStaNo((short)172);
-//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                        if (!result) {
-//                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                        }
-//                        continue;
-//                    }
+                    if (back) {
+                        // led 寮傚父鏄剧ず
+                        if (ledThread != null) {
+                            String errorMsg = errMsg;
+                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
+                        }
+                        log.error("杈撻�佺嚎寮傚父缁勬墭閫�鍥�={}",errMsg);
+                        staProtocol.setWorkNo((short) 9999);
+                        staProtocol.setStaNo((short)(inSta.getStaNo()-1));
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        continue;
+                    }
 
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
@@ -181,7 +217,6 @@
                                 .build()
                                 .doPost();
                         JSONObject jsonObject = JSON.parseObject(response);
-                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
                         Integer code = jsonObject.getInteger("code");
                         if (code == 200) {
                             StartupDto dto = jsonObject.getObject("data", StartupDto.class);
@@ -372,7 +407,7 @@
 //                staProtocol.setPakMk(true);
 //                // 鍏ュ嚭搴撴ā寮忓垽鏂�
 //                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()&&staProtocol.getWorkNo()>=9990){
                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
 //                     WrkMast  wrkMast = wrkMastMapper.selectPickStep(barcode);
                     if(wrkMast == null){
@@ -738,6 +773,7 @@
             crnCommand.setDestinationPosX(locMast.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
             crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
             crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+            crnCommand.setCommand((short) 0);
             if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                 log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
             } else {
@@ -810,10 +846,9 @@
 
             // 鍏ュ嚭搴撴ā寮忓垽鏂�
             //if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-                if (wrkMast.getStaNo() == 101 && devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) {continue;}
-                if (wrkMast.getStaNo() == 103 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {continue;}
-                if (wrkMast.getStaNo() == 105 && devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {continue;}
-                if (wrkMast.getStaNo() == 107 && devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {continue;}
+                if (wrkMast.getStaNo() == 102 && devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) {continue;}
+                if (wrkMast.getStaNo() == 104 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {continue;}
+                if (wrkMast.getStaNo() == 106 && devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {continue;}
 
                 // 鏌ヨ绔欑偣璇︾粏淇℃伅
                 BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
@@ -831,6 +866,26 @@
                     if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
 //                        continue;
                         break;
+                    }
+
+                    //鏈堿GV鎼繍鍏ュ簱鏃讹紝绂佹娲惧彂鍫嗗灈鏈哄嚭搴撲换鍔�
+                    String staNo = "";
+                    if(crnProtocol.getCrnNo()==1){
+                        staNo = "105";
+                    }else if(crnProtocol.getCrnNo()==2){
+                        staNo = "103";
+                    }else if(crnProtocol.getCrnNo()==3){
+                        staNo = "101";
+                    }
+                    WaitPakin sku = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("sku", staNo));
+                    if (!Cools.isEmpty(sku)) {
+                        return;
+                    }
+
+                    //鏈夋嫞鏂欏洖搴揂GV鎼繍浠诲姟鏃讹紝绂佹娲惧彂鍫嗗灈鏈哄嚭搴撲换鍔�
+                    List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("inv_wh", 0, 1, 2, 3).eq("sta_no", staNo));
+                    if (!Cools.isEmpty(wrkMasts1)) {
+                        return;
                     }
 
                     // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
@@ -895,9 +950,11 @@
                     crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
                     crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
                     crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+                    crnCommand.setCommand((short) 0);
                     if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                         log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                     } else {
+                        log.info("鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔燂紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                         // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
                         Date now = new Date();
                         wrkMast.setWrkSts(12L);
@@ -1123,6 +1180,7 @@
                 crnCommand.setDestinationPosX(sta.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
                 crnCommand.setDestinationPosY(sta.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
                 crnCommand.setDestinationPosZ(sta.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+                crnCommand.setCommand((short) 1);
                 if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                     log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                 } else {
@@ -1154,6 +1212,7 @@
             crnCommand.setDestinationPosX(sta.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
             crnCommand.setDestinationPosY(sta.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
             crnCommand.setDestinationPosZ(sta.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+            crnCommand.setCommand((short) 1);
             if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                 log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
             } else {
@@ -1350,17 +1409,13 @@
                     staProtocol = staProtocol.clone();
                 }
 
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if ( emptyInSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-//                if ( emptyInSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
-//                if ( emptyInSta.getStaNo()==402 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
-                if ( emptyInSta.getStaNo()==101 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) { continue; }
-                if ( emptyInSta.getStaNo()==103 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
-                if ( emptyInSta.getStaNo()==105 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) { continue; }
-                if ( emptyInSta.getStaNo()==107 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
+                // 鍏ュ嚭搴撴ā寮忓垽鏂�
+                if ( emptyInSta.getStaNo()==102 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) { continue; }
+                if ( emptyInSta.getStaNo()==104 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
+                if ( emptyInSta.getStaNo()==106 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) { continue; }
                 // 绔欑偣鏉′欢鍒ゆ柇
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
-                        && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <= 9999) && staProtocol.isPakMk()) {
+                        && staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 9990 && staProtocol.isPakMk()) {
 
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
@@ -1394,66 +1449,7 @@
                         e.printStackTrace();
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     }
-
-
-
-
-//                    // 妫�绱㈠簱浣�
-//                    LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-//                    StartupDto startupDto = commonService.getLocNo(1, 10, emptyInSta.getStaNo(), null, locTypeDto, 0);
-//                    // 宸ヤ綔鍙�
-//                    int workNo = startupDto.getWorkNo();
-//
-//                    try {
-//                        // 鎻掑叆宸ヤ綔涓绘。
-//                        WrkMast wrkMast = new WrkMast();
-//                        wrkMast.setWrkNo(workNo);
-//                        wrkMast.setIoTime(new Date());
-//                        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋
-//                        wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
-//                        wrkMast.setIoPri(10D); // 浼樺厛绾э細10
-//                        wrkMast.setCrnNo(startupDto.getCrnNo());
-//                        wrkMast.setSourceStaNo(startupDto.getSourceStaNo());
-//                        wrkMast.setStaNo(startupDto.getStaNo());
-//                        wrkMast.setLocNo(startupDto.getLocNo());
-//                        wrkMast.setFullPlt("N"); // 婊℃澘
-//                        wrkMast.setPicking("N"); // 鎷f枡
-//                        wrkMast.setExitMk("N"); // 閫�鍑�
-//                        wrkMast.setEmptyMk("Y"); // 绌烘澘
-//                        wrkMast.setLinkMis("N");
-////                    wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
-//                        // 鎿嶄綔浜哄憳鏁版嵁
-//                        wrkMast.setAppeTime(new Date());
-//                        wrkMast.setModiTime(new Date());
-//                        Integer insert = wrkMastMapper.insert(wrkMast);
-//                        if (insert == 0) {
-//                            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-//                        }
-//                        // 鏇存柊鐩爣搴撲綅鐘舵��
-//                        LocMast locMast = locMastService.selectById(startupDto.getLocNo());
-//                        locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
-//                        locMast.setModiTime(new Date());
-//                        if (!locMastService.updateById(locMast)){
-//                            throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
-//                        }
-//                        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//
-//                        // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-//                        staProtocol.setWorkNo((short) workNo);
-//                        staProtocol.setStaNo(startupDto.getStaNo().shortValue());
-//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                        if (!result) {
-//                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                        }
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//                    }
-
                 }
-
-
             }
         }
     }
@@ -1462,6 +1458,7 @@
      * 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
      */
     public synchronized void ledExecute() {
+
         for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
@@ -1480,7 +1477,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();
@@ -1510,17 +1510,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);
             }
@@ -1531,24 +1554,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 {
@@ -1557,6 +1589,7 @@
                     wrkMast.setOveMk("Y");
                     wrkMast.setModiTime(new Date());
                     if (wrkMastMapper.updateById(wrkMast) == 0) {
+                        log.error("鐢佃鏈烘爣璁板仛鍒板伐浣滄。涓� - 鏇存柊宸ヤ綔妗eけ璐�");
                         throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
                     }
                 }
@@ -1570,6 +1603,7 @@
             }
 
         }
+        log.info(" - 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣ㄦ墽琛屽畬鎴�");
     }
 
     /**
@@ -1770,7 +1804,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"); // 绌烘澘
@@ -2092,5 +2126,174 @@
         }
     }
 
+    /**
+     * agv瀹屾垚鍏ュ簱浠诲姟锛岀粰杈撻�佺嚎涓嬪彂鍏ュ簱浠诲姟
+     * agv鐘舵��
+     * be_batch
+     * 0锛氭棤闇�璋冪敤AGV
+     * 1锛氱瓑寰呰皟鐢ˋGV
+     * 2锛欰GV浠诲姟涓嬪彂鎴愬姛
+     * 3锛欰GV浠诲姟瀹屾垚
+     * 4锛氱粰杈撻�佺嚎涓嬪彂鍏ュ簱鎸囦护瀹屾垚
+     */
+    public synchronized void overAGVTaskIn() {
+        int[] inStaNos= {101,103,105};
+        for (int inStaNo : inStaNos) {
+            // 鑾峰彇鍏ュ簱绔欎俊鎭�
+            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+            StaProtocol staProtocol = devpThread.getStation().get(inStaNo);
+            if (staProtocol == null) {
+                continue;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+
+            // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+            if (staProtocol.isAutoing() && staProtocol.isLoading()
+                    && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0){// && !Cools.isEmpty(barcode)) {
+                //鑾峰彇AGV鎼繍瀹屾垚鐨勫叆搴撻�氱煡妗�
+                WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>()
+                        .eq("sku", staProtocol.getSiteId()+"")
+                        .eq("be_batch", 3));
+                if(Cools.isEmpty(waitPakin)){
+                    continue;
+                }
+                short staNo = 0;
+                if(staProtocol.getSiteId()==101){
+                    staNo=102;
+                }else if(staProtocol.getSiteId()==103){
+                    staNo=104;
+                }else if(staProtocol.getSiteId()==105){
+                    staNo=106;
+                }
+                staProtocol.setWorkNo((short) 9991);
+                staProtocol.setStaNo(staNo);
+                devpThread.setPakMk(staProtocol.getSiteId(), false);
+                boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                if (!result) {
+                    throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                }else {
+                    waitPakin.setBeBatch(4);//4锛氱粰杈撻�佺嚎涓嬪彂鍏ュ簱鎸囦护瀹屾垚
+                    waitPakin.setModiTime(new  Date());
+                    waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("supp_code",waitPakin.getSuppCode()));
+                }
+
+            }
+        }
+
+    }
+
+    /**
+     * agv鍑哄簱鎼锛屾竻闄ょ珯鐐瑰伐浣滃彿
+     * wrk_sts
+     * 30.绛夊緟缁橝GV涓嬪彂鍑哄簱浠诲姟
+     * 31.AGV鍑哄簱浠诲姟涓嬪彂鎴愬姛
+     * 32.AGV宸叉惉绂�
+     * 33.绛夊緟涓嬫灦
+     */
+    public synchronized void outStaNo() {
+        int[] inStaNos= {101,103,105};
+        for (int inStaNo : inStaNos) {
+            // 鑾峰彇鍏ュ簱绔欎俊鎭�
+            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+            StaProtocol staProtocol = devpThread.getStation().get(inStaNo);
+            if (staProtocol == null) {
+                continue;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+
+            // 鍒ゆ柇鏄惁婊¤冻agv鎼繍鍑哄簱浠诲姟锛屾惉绂荤姸鎬�
+            if (staProtocol.isAutoing() && !staProtocol.isLoading()
+                    && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990){// && !Cools.isEmpty(barcode)) {
+                //鑾峰彇AGV鎼鐨勪换鍔�
+                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                        .eq("wrk_no", staProtocol.getWorkNo())
+                        .eq("wrk_sts",32L));
+                if(Cools.isEmpty(wrkMast)){
+                    continue;
+                }
+
+                staProtocol.setWorkNo((short) 0);
+                staProtocol.setStaNo((short)0);
+                devpThread.setPakMk(staProtocol.getSiteId(), false);
+                boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                if (!result) {
+                    throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                }else {
+                    wrkMast.setWrkSts(33L);
+                    wrkMast.setModiTime(new Date());
+                    wrkMastService.updateById(wrkMast);
+                }
+
+            }
+        }
+
+    }
+
+    /**
+     * agv瀹屾垚鍏ュ簱浠诲姟锛岀粰杈撻�佺嚎涓嬪彂鍏ュ簱浠诲姟
+     * agv鐘舵��
+     * be_batch
+     * 0锛氭棤闇�璋冪敤AGV
+     * 1锛氱瓑寰呰皟鐢ˋGV
+     * 2锛欰GV浠诲姟涓嬪彂鎴愬姛
+     * 3锛欰GV浠诲姟瀹屾垚
+     * 4锛氱粰杈撻�佺嚎涓嬪彂鍏ュ簱鎸囦护瀹屾垚
+     */
+    public synchronized void overAGVTaskInReturn() {
+        int[] inStaNos= {101,103,105};
+        for (int inStaNo : inStaNos) {
+            // 鑾峰彇鍏ュ簱绔欎俊鎭�
+            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+            StaProtocol staProtocol = devpThread.getStation().get(inStaNo);
+            if (staProtocol == null) {
+                continue;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+
+            // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+            if (staProtocol.isAutoing() && staProtocol.isLoading()
+                    && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0){// && !Cools.isEmpty(barcode)) {
+                //鑾峰彇AGV鎼繍瀹屾垚鐨勫叆搴撻�氱煡妗�
+                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                        .eq("sta_no", staProtocol.getSiteId())
+                        .eq("inv_wh", "1"));
+                if(Cools.isEmpty(wrkMast)){
+                    continue;
+                }
+                short staNo = 0;
+                if(staProtocol.getSiteId()==101){
+                    staNo=102;
+                }else if(staProtocol.getSiteId()==103){
+                    staNo=104;
+                }else if(staProtocol.getSiteId()==105){
+                    staNo=106;
+                }
+                staProtocol.setWorkNo((short) 9991);
+                staProtocol.setStaNo(staNo);
+                devpThread.setPakMk(staProtocol.getSiteId(), false);
+                boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                if (!result) {
+                    throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                }else {
+                    /**
+                     * inv_wh
+                     * 鎷f枡鍥炲簱杈撻�佺嚎鍑哄彂
+                     * 0绛夊緟agv鏀捐揣瀹屾垚
+                     * 1绛夊緟杈撻�佺嚎鍏ュ簱
+                     * 2杈撻�佺嚎鍏ュ簱浠诲姟涓嬪彂鎴愬姛
+                     */
+                    wrkMast.setInvWh("2");//2杈撻�佺嚎鍏ュ簱浠诲姟涓嬪彂鎴愬姛
+                    wrkMast.setModiTime(new  Date());
+                    wrkMastService.updateById(wrkMast);
+                }
+
+            }
+        }
+
+    }
+
 
 }

--
Gitblit v1.9.1