From d8060afba15f67e443bb2f89410313905bdc7ebe Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期一, 23 六月 2025 08:58:13 +0800
Subject: [PATCH] 米多泉泉州wcs功能完善

---
 src/main/java/com/zy/service/impl/MainServiceImpl.java |  309 +++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 249 insertions(+), 60 deletions(-)

diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index bbe9cec..a300dec 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -26,8 +26,11 @@
 import com.zy.core.thread.LedThread;
 import com.zy.core.thread.SiemensDevpThread;
 import com.zy.entity.*;
+import com.zy.entity.param.StockOutParam;
 import com.zy.mapper.*;
 import com.zy.service.*;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
 import com.zy.utils.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +39,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import javax.annotation.Resource;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -90,7 +94,7 @@
 
         taskStaNoToRgvStaNoMap.put(1050,1044);taskStaNoToRgvStaNoMap.put(1078,1044);taskStaNoToRgvStaNoMap.put(1064,1044);taskStaNoToRgvStaNoMap.put(1071,1044);taskStaNoToRgvStaNoMap.put(1096,1094);
         taskStaNoToRgvStaNoMap.put(1104,1100);taskStaNoToRgvStaNoMap.put(1102,1100);taskStaNoToRgvStaNoMap.put(1090,1090);taskStaNoToRgvStaNoMap.put(1002,1001);taskStaNoToRgvStaNoMap.put(1016,1018);
-        taskStaNoToRgvStaNoMap.put(1020,1019);taskStaNoToRgvStaNoMap.put(1024,1022);taskStaNoToRgvStaNoMap.put(1035,1034);taskStaNoToRgvStaNoMap.put(1040,1033);taskStaNoToRgvStaNoMap.put(1043,1041);
+        taskStaNoToRgvStaNoMap.put(1020,1019);taskStaNoToRgvStaNoMap.put(1024,1022);taskStaNoToRgvStaNoMap.put(1031,1033);taskStaNoToRgvStaNoMap.put(1035,1034);taskStaNoToRgvStaNoMap.put(1040,1033);taskStaNoToRgvStaNoMap.put(1043,1041);
 
         canningLineRgvConnectionSiteList.add(1083);canningLineRgvConnectionSiteList.add(1086);
         canningLineRgvConnectionSiteList.add(1089);
@@ -136,6 +140,9 @@
     private WrkMastService wrkMastService;
     @Autowired
     private BasRgvMapService basRgvMapService;
+
+    @Resource
+    private ConfigService configService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -205,12 +212,11 @@
                     if (!staProtocol.isLoading()){
                         continue;
                     }
-                    if (!staProtocol.isPakMk()) {
-                        continue;
-                    }
                     News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
-                    log.error("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
-                    return;
+                    // 濡傛灉瓒呴檺鎶ヨ鎴栬秴閲嶇瓑锛屽嚭鍒�1024
+                    if(errMsg.equals("鎵爜澶辫触")) {
+                        return;
+                    }
                 }
 
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
@@ -222,11 +228,13 @@
                 ) {
                     if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode) || barcode.startsWith("ERROR")) {
                         log.error("{}鍙锋潯鐮佹娴嬪け璐ワ紝鏉$爜淇℃伅锛歿}", inSta.getBarcode(), barcode);
+                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "鏉$爜妫�娴嬪け璐ワ細"+barcode));
                         continue;
                     }
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
                     if (wrkMast != null) {
+                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "鏉$爜宸查噸澶嶏細" + barcode));
                         continue;
                     }
 
@@ -242,6 +250,7 @@
                         param.setBucketCount(staProtocol.getBucketCount());
                         param.setTailSupportFlag(staProtocol.isTailSupportFlag());
                         param.setWantBucketFlag(getWantBucketFlag());
+                        param.setErrMsg(errMsg);
 
                         String response = new HttpHandler.Builder()
                                 .setUri(wmsUrl)
@@ -293,8 +302,8 @@
         StaProtocol staProtocol1084 = devpThread.getStation().get(1084);
         StaProtocol staProtocol1087 = devpThread.getStation().get(1087);
         List<SearchLocParam.WantBucket> wantBucketList = new ArrayList<>();
-        wantBucketList.add(new SearchLocParam.WantBucket(1071,staProtocol1081.getWantBucketFlag()));
         wantBucketList.add(new SearchLocParam.WantBucket(1064,staProtocol1084.getWantBucketFlag()));
+        wantBucketList.add(new SearchLocParam.WantBucket(1071,staProtocol1081.getWantBucketFlag()));
         wantBucketList.add(new SearchLocParam.WantBucket(1078,staProtocol1087.getWantBucketFlag()));
         return wantBucketList;
     }
@@ -808,6 +817,14 @@
                         break;
                     }
 
+                    if (crnStn.getStaNo() == 1093) { // 鍒ゆ柇鍑哄簱鍒板埌1093锛屽垽鏂�1092鏄惁鏈夌墿,鏈夌墿涓嶅彲鍑�
+                        StaProtocol staProtocol2 = devpThread.getStation().get(1092);
+                        if(!staProtocol2.isAutoing() || staProtocol2.isLoading() || staProtocol2.getWorkNo() != 0) {
+                            log.warn("1鍙峰爢鍨涙満鍑哄簱鍙栬揣鍓嶏紝鍒ゆ柇1092绔欑偣淇℃伅鑷姩锛歿}锛屾湁鐗╋細{}锛屽伐浣滃彿锛歿}锛屼笉鍙叆",staProtocol2.isAutoing(),staProtocol2.isLoading(),staProtocol2.getWorkNo());
+                            continue;
+                        }
+                    }
+
                     // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
                     if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
                         News.warnNoLog(""+mark+" - 2"+" - 6"+" - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}",wrkMast.getWrkNo());
@@ -874,7 +891,7 @@
                         }
                         newLocNo = newLocNo + locNo.substring(2);
                         // 瀵瑰簲搴撲綅鏈夋棤浠诲姟
-                        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", newLocNo));
+                        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", newLocNo).eq("wrk_sts",11));
                         if(wrkMast1 == null) {
                              if(locNo.startsWith("10") || locNo.startsWith("11")){ // 娴呭簱浣�
 
@@ -928,7 +945,7 @@
                     crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
 
                     // 婧愮珯1057
-                    if(slave.getId() == 4 && crnStn.getStaNo() == 1057 && sourceSta.getRow1() == 12) {
+                    if(slave.getId() == 4 && crnStn.getStaNo() == 1057 && (sourceSta.getRow1() == 11 || sourceSta.getRow1() == 12)) {
                         crnCommand.setDestinationPosX((short) 9);
                     }
                     crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
@@ -1065,7 +1082,7 @@
             //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
             if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
                 News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔");
-                if (crnProtocol.getTaskNo() == 9999) {
+                if (crnProtocol.getTaskNo() == 9999) { // 鍥炲師鐐逛换鍔″彿
                     // 鍫嗗灈鏈哄浣�
                     crnThread.setResetFlag(true);
                 } else {
@@ -1111,6 +1128,51 @@
 //        News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
     }
 
+    /**
+     * 鍫嗗灈鏈哄洖鍘熺偣
+     */
+    public synchronized void originGo() {
+
+        for (CrnSlave crn : slaveProperties.getCrn()) {
+            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+            if (crnProtocol == null) {
+                continue;
+            }
+            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
+                    && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
+                // 鍒ゆ柇鏄笉鏄凡鍦ㄥ師鐐�
+                if(crnProtocol.getBay() == 0 && crnProtocol.getLevel() == 1) {
+                    continue;
+                }
+                // 鍒ゆ柇鏄笉鏄┖闂蹭笁鍒嗛挓
+                BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+                Date now = new Date();
+                Date modiTime = basCrnp.getModiTime();
+                long diffInMillis = now.getTime()-modiTime.getTime();
+                if(diffInMillis < 3 * 60 * 1000) {
+                    continue;
+                }
+
+                CrnCommand crnCommand = new CrnCommand();
+                crnCommand.setCrnNo(crn.getId()); // 鍫嗗灈鏈虹紪鍙�
+                crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+                crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍥炲師鐐�
+                crnCommand.setSourcePosX((short) (crn.getId() == 1 ? 4 : crn.getId() == 2 ? 6 : crn.getId() == 3 ? 7 : 11));     // 婧愬簱浣嶆帓
+                crnCommand.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
+                crnCommand.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
+                crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
+                crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
+                crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
+                if (!MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, crnCommand))) {
+                    News.error("鍥炲師鐐逛换鍔′笅鍙戝け璐�", crn.getId(), JSON.toJSON(crnCommand));
+                } else {
+                    log.info("{}鍙峰爢鍨涙満鍥炲師鐐逛换鍔′笅鍙戞垚鍔燂細{}", crn.getId(), JSON.toJSON(crnCommand));
+                }
+            }
+        }
+    }
     /**
      * 鍫嗗灈鏈哄紓甯镐俊鎭褰�
      */
@@ -1292,33 +1354,29 @@
                         break;
                 }
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+                ledCommand.setLocNo(wrkMast.getLocNo());
+                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
                 ledCommand.setBarcode(wrkMast.getBarcode());
-                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
-                    List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-//                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getSpecs(),wrkDetl.getManuDate(),wrkDetl.getModel(),wrkDetl.getWeight(),wrkDetl.getManLength(),wrkDetl.getVolume())));
-//                    wrkDetls.forEach(wrkDetl -> {
-//                        Double total = 0.0;
-//                        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
-//                        LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
-//                        if (Cools.isEmpty(locDetl)) {
-//                            total = wrkDetl.getAnfme();
-//                        } else {
-//                            total = locDetl.getAnfme();
-//                        }
-//                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
-//                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-//                        }
-//                        if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
-//                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-//                        }
-//                        if (wrkMast.getIoType() == 107) {
-//                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-//                        }
-//                    });
+                MatDto matDto = new MatDto();
+                // 鏄庣粏
+                WrkDetl wrkDetl1 = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                if (wrkDetl1 != null) {
+                    ledCommand.setOrderNo(wrkDetl1.getOrderNo());
+                    matDto.setMaknx(wrkDetl1.getMaktx());
+                    matDto.setMatnr(wrkDetl1.getMatnr());
+                    matDto.setBatch(wrkDetl1.getBatch());
+                    matDto.setManuDate(wrkDetl1.getManuDate());
+                    matDto.setAnfme(wrkDetl1.getAnfme());
+                    matDto.setWeight(wrkDetl1.getWeight());
+                    matDto.setGrossWeight(wrkDetl1.getManLength());
+                    ledCommand.getMatDtos().add(matDto);
                 }
-                commands.add(ledCommand);
+                // 璁㈠崟
+//                if(wrkDetl1 != null && !Cools.isEmpty(wrkDetl1.getOrderNo()))  {
+//
+//                }
+                commands.add(0,ledCommand);
             }
             Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
             // 鑾峰彇LED绾跨▼
@@ -1559,6 +1617,9 @@
                     case 1019:dismantlingMachine = 1020;break;
                     case 1034:dismantlingMachine = 1035;break;
                 }
+                if(staProtocol.getSiteId() == 1034 && staProtocol.isHigh()) {
+                    continue;
+                }
                 if (wrkMastService.selectList(new EntityWrapper<WrkMast>().in("io_type", 110).eq("sta_no", dismantlingMachine)).size() > 0) {
 //                    log.warn("{}绔欑偣宸茬粡瀛樺湪涓や釜绌烘澘鍑哄簱浠诲姟", entry.getKey());
                     continue;
@@ -1578,7 +1639,7 @@
                     if (jsonObject.getInteger("code").equals(200)) {
                         log.info("绌烘墭鍑哄簱璇锋眰鎴愬姛锛氳姹傚弬鏁皗}锛岃繑鍥炲��:{}", map, response);
                     } else {
-                        log.error("绌烘嫋鍑哄簱璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1", map, response);
+//                        log.error("绌烘嫋鍑哄簱璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1", map, response);
                     }
                 } catch (Exception e) {
                     log.error("绌烘嫋鍑哄簱璇锋眰鎺ュ彛寮傚父锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1", map, response);
@@ -1609,10 +1670,17 @@
                     log.error("鍛煎彨rgv,浠诲姟鍙蜂笉瀛樺湪:{}",staProtocol.getWorkNo());
                     continue;
                 }
-                if (staProtocol.getSiteId() == 1090 && wrkMast.getLocNo() == null) {
+                if (staProtocol.getSiteId() == 1090 && wrkMast.getStaNo() == 1090) {
                     continue;
                 }
-                if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15) && wrkMast.getRgvNo() == null) {
+                if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15) && (wrkMast.getRgvNo() == null || wrkMast.getRgvDstaNo() == 1090)) {
+                    // 鏈�1090鐨勪换鍔¤烦杩噐gv鍒嗛厤
+                    if(wrkMast.getStaNo() == 1090) {
+                        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().where("sta_no = 1090 or source_sta_no = 1090 "));
+                        if (count > 1) {
+                            continue;
+                        }
+                    }
                     wrkMast.setRgvNo(0);
                     wrkMast.setRgvSstaNo(site);
                     wrkMast.setRgvDstaNo(taskStaNoToRgvStaNoMap.get(wrkMast.getStaNo()));
@@ -1648,14 +1716,29 @@
                 }
 
                 if(wrkMast.getIoType() == 3 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) { // 鍒�1024鍑哄簱鍙o紝鏀惧埌杈撻�佺嚎鍚庝换鍔″畬鎴�
-                    wrkMast.setWrkSts(2L);
+                    if(wrkMast.getWrkSts() != 2 ){
+                        log.warn("rgv鏀捐揣瀹屾垚3锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
+                        continue;
+                    }
+                    wrkMast.setWrkSts(5L);
+//                    if(wrkMast.getStaNo() == 1090) {
+//                        wrkMast.setWrkSts(3L);
+//                    }
                     wrkMast.setModiTime(new Date());
                     wrkMastService.updateById(wrkMast);
                 } else if(wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) {
+                    if(wrkMast.getWrkSts() != 2 ) {
+                        log.warn("rgv鏀捐揣瀹屾垚101锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}", wrkMast.getRgvNo(), wrkMast.getWrkNo(), wrkMast.getWrkSts());
+                        continue;
+                    }
                     wrkMast.setWrkSts(15L);
                     wrkMast.setModiTime(new Date());
                     wrkMastService.updateById(wrkMast);
                 } else if(wrkMast.getIoType() == 110 && (wrkMast.getStaNo() == 1002 || wrkMast.getStaNo() == 1020 ||wrkMast.getStaNo() == 1035)) {
+                    if(wrkMast.getWrkSts() != 2 ){
+                        log.warn("rgv鏀捐揣瀹屾垚110锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
+                        continue;
+                    }
                     wrkMast.setWrkSts(15L);
                     wrkMast.setModiTime(new Date());
                     wrkMastService.updateById(wrkMast);
@@ -1691,16 +1774,16 @@
                 log.error("寮傚父鍙e叆搴撲换鍔″彿鏃犱换鍔�:{}", staProtocol.getWorkNo());
                 return;
             } else if (wrkMast.getLocNo() != null) {
-                log.info("寮傚父鍙e叆搴撳簱浣嶅凡鍒嗛厤:{}", wrkMast.getLocNo());
+//                log.info("寮傚父鍙e叆搴撳簱浣嶅凡鍒嗛厤:{}", wrkMast.getLocNo());
                 return;
             } else if(wrkMast.getStaNo() != 1090) {
-                log.info("寮傚父鍙e叆搴撳叆搴撶洰鏍囩珯鐐瑰凡鍒嗛厤:{}", wrkMast.getStaNo());
+//                log.info("寮傚父鍙e叆搴撳叆搴撶洰鏍囩珯鐐瑰凡鍒嗛厤:{}", wrkMast.getStaNo());
                 return;
             }
 
             try {
                 CanningLineInLocParam param = new CanningLineInLocParam();
-                param.setWrkNo(staProtocol.getWrkNo());
+                param.setWrkNo(staProtocol.getWorkNo());
                 param.setSourceStaNo(1090);
                 param.setTbFlag(staProtocol.isInEnable()); // true鍏ユ垚鍝佸簱锛宖alse鍏ョ┖妗跺簱
 
@@ -1713,19 +1796,7 @@
                 log.info("寮傚父鍙e叆搴撹姹倃ms鍘熷杩斿洖锛�" + response);
                 JSONObject jsonObject = JSON.parseObject(response);
                 if (jsonObject.getInteger("code").equals(200)) {
-//                    StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-//                    staProtocol.setWorkNo(dto.getWorkNo());
-//                    staProtocol.setStaNo(dto.getStaNo().shortValue());
-//                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                    boolean result = MessageQueue.offer(SlaveType.Devp, 2, new Task(2, staProtocol));
-//                    if (result) {
-//                        log.info("寮傚父鍙e叆搴撴帹閫佽緭閫佺嚎鍛戒护鎴愬姛锛�" + dto.getWorkNo() + "," + 1090 + "," + dto.getStaNo());
-//                        News.info("寮傚父鍙e叆搴撴帹閫佽緭閫佺嚎鍛戒护鎴愬姛锛�" + dto.getWorkNo() + "," + 1090 + "," + dto.getStaNo());
-//                    } else {
-//                        log.error("寮傚父鍙e叆搴撴帹閫佽緭閫佺嚎鍛戒护澶辫触锛�" + dto.getWorkNo() + "," + 1090 + "," + dto.getStaNo());
-//                        News.error("寮傚父鍙e叆搴撴帹閫佽緭閫佺嚎鍛戒护澶辫触锛�" + dto.getWorkNo() + "," + 1090 + "," + dto.getStaNo());
-//                        throw new CoolException("寮傚父鍙e叆搴撴帹閫佽緭閫佺嚎鍛戒护澶辫触:" + 1090);
-//                    }
+                    log.error("寮傚父鍙e叆搴撹姹傛帴鍙f垚鍔熷父锛寀rl:{}锛宺equest:{},response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
                 } else {
                     log.error("寮傚父鍙e叆搴撹姹傛帴鍙e紓甯革紝url:{}锛宺equest:{},response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
                     News.error("寮傚父鍙e叆搴撹姹傛帴鍙e紓甯革紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
@@ -1757,6 +1828,7 @@
                         SearchLocParam param = new SearchLocParam();
                         param.setIoType(10);
                         param.setSourceStaNo(site);
+                        param.setBucketType("21"); // 绌烘瘝鎵樼洏
                         param.setLocType1((short) 1);
 
                         String response = new HttpHandler.Builder()
@@ -1802,7 +1874,12 @@
         }
 
         // 绔欑偣鏉′欢鍒ゆ柇
-        if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.getWrkNo() == 0) {
+        if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
+                 && staProtocol.getWorkNo() == 0 && staProtocol.isHigh()) {
+            WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 3).eq("source_sta_no", 1034).eq("sta_no", 1024));
+            if (wrkMast1 != null) {
+                return;
+            }
 
             Date now = new Date();
             // 淇濆瓨宸ヤ綔妗�
@@ -1811,6 +1888,7 @@
             wrkMast.setIoTime(now);
             wrkMast.setWrkSts(2L);
             wrkMast.setIoType(3);
+            wrkMast.setIoPri(15D);
             wrkMast.setSourceStaNo(1034); // 婧愮珯
             wrkMast.setStaNo(1024); // 鐩爣绔�
             wrkMast.setAppeTime(now);
@@ -1826,6 +1904,116 @@
                 log.error("瀛愭墭鐩樺簳搴ф瘝鎵樼洏鍥炴祦鍛戒护鎺ㄩ�侀槦鍒楀け璐ワ細" + wrkMast.getWrkNo() + "," + staProtocol.getSiteId());
             }
         }
+    }
+
+    public synchronized void autoOutEmptyBucket() {
+        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","autoOutEmptyBucket").eq("status",1));
+        if (config == null || Cools.isEmpty(config.getValue())) {
+            return;
+        }
+
+        // 闇�瑕佽嚜鍔ㄨˉ绌烘《鐨勭珯鐐�
+        String[] split = config.getValue().split("=");
+
+        for (SearchLocParam.WantBucket wantBucket : getWantBucketFlag()) {
+            if (wantBucket.getBucketType() != 0) { // 缃愯绾挎湁瑕佹《淇″彿
+                boolean flag = true; // 鏄惁闇�瑕佽嚜鍔ㄨˉ锛宼rue涓嶉渶瑕侊紝false闇�瑕�
+                for(String item: split) {
+                    if(String.valueOf(wantBucket.getSite()).equals(item)) {
+                        flag = false;
+                        break;
+                    }
+                }
+                if(flag) {
+                    return;
+                }
+                // <4 < 2 < 4
+                int count = wrkMastMapper.selectInGzxCount(wantBucket.getSite());
+                if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) {
+                    // 鍒ゆ柇搴撻噷鏈夋棤绌烘《缁�
+                    List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType());
+                    for (int i = 0; i < locDetlList.size(); i++) {
+                        LocDetl locDetl = locDetlList.get(i);
+                        String loc1 = locDetl.getLocNo();
+                        String aisle1 = loc1.substring(0, 2);
+                        String column1 = loc1.substring(2, 5);
+                        String level1 = loc1.substring(5, 7);
+
+                        for (int j = i + 1; j < locDetlList.size(); j++) {
+                            LocDetl locDetl1 = locDetlList.get(j);
+                            String loc2 = locDetl1.getLocNo();
+                            String aisle2 = loc2.substring(0, 2);
+                            String column2 = loc2.substring(2, 5);
+                            String level2 = loc2.substring(5, 7);
+
+                            // 妫�鏌ユ槸鍚︽弧瓒崇粍闃熸潯浠�
+                            if (isSameAisleGroup(aisle1, aisle2) && column1.equals(column2) && level1.equals(level2)) {
+                                // 鍒涘缓绌烘《鍑哄簱浠诲姟
+                                try {
+                                    StockOutParam param = new StockOutParam();
+                                    param.setOutSite(wantBucket.getSite());
+                                    List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
+                                    StockOutParam.LocDetl locDetl2 = new StockOutParam.LocDetl();
+                                    locDetl2.setLocNo(locDetl.getLocNo());
+                                    locDetl2.setMatnr(locDetl.getMatnr());
+                                    locDetl2.setBatch(locDetl.getBatch());
+                                    locDetl2.setBrand(locDetl.getBrand());
+                                    locDetl2.setCount(locDetl.getAnfme());
+                                    locDetl2.setBoxType1(locDetl.getBoxType1());
+                                    locDetl2.setBoxType2(locDetl.getBoxType2());
+                                    locDetl2.setBoxType3(locDetl.getBoxType3());
+                                    locDetl2.setStandby1(locDetl.getStandby1());
+                                    locDetl2.setStandby2(locDetl.getStandby2());
+                                    locDetl2.setStandby3(locDetl.getStandby3());
+                                    locDetls.add(locDetl2);
+
+                                    StockOutParam.LocDetl locDetl3 = new StockOutParam.LocDetl();
+                                    locDetl3.setLocNo(locDetl1.getLocNo());
+                                    locDetl3.setMatnr(locDetl1.getMatnr());
+                                    locDetl3.setBatch(locDetl1.getBatch());
+                                    locDetl3.setBrand(locDetl1.getBrand());
+                                    locDetl3.setCount(locDetl1.getAnfme());
+                                    locDetl3.setBoxType1(locDetl1.getBoxType1());
+                                    locDetl3.setBoxType2(locDetl1.getBoxType2());
+                                    locDetl3.setBoxType3(locDetl1.getBoxType3());
+                                    locDetl3.setStandby1(locDetl1.getStandby1());
+                                    locDetl3.setStandby2(locDetl1.getStandby2());
+                                    locDetl3.setStandby3(locDetl1.getStandby3());
+                                    locDetls.add(locDetl3);
+                                    param.setLocDetls(locDetls);
+
+                                    String response = new HttpHandler.Builder()
+                                            .setUri(wmsUrl)
+                                            .setPath("/rpc/autoOutEmptyBucket")
+                                            .setJson(JSON.toJSONString(param))
+                                            .build()
+                                            .doPost();
+                                    log.info("鑷姩鍑虹┖妗惰姹倃ms鍘熷杩斿洖锛�" + response);
+                                    JSONObject jsonObject = JSON.parseObject(response);
+                                    if (jsonObject.getInteger("code").equals(200)) {
+                                        log.info("鑷姩鍑虹┖妗舵垚鍔�:{}",wantBucket.getSite());
+                                        return;
+                                    } else {
+                                        News.error("鑷姩绌烘《鍑哄簱" + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                                    }
+                                } catch (Exception e) {
+                                    e.printStackTrace();
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    // 鍒ゆ柇涓や釜鎺掓槸鍚﹀睘浜庡悓涓�缁�
+    private static boolean isSameAisleGroup(String aisle1, String aisle2) {
+        return (aisle1.equals("09") && aisle2.equals("10")) ||
+                (aisle1.equals("10") && aisle2.equals("09")) ||
+                (aisle1.equals("11") && aisle2.equals("12")) ||
+                (aisle1.equals("12") && aisle2.equals("11"));
     }
 
     /**
@@ -1864,13 +2052,14 @@
                     CanningLineInLocParam param = new CanningLineInLocParam();
                     param.setWrkNo(staProtocol.getWrkNo());
                     param.setMatnr(staProtocol.getMatnr().trim());
-                    param.setBatch(staProtocol.getBatch());
+                    param.setBatch(staProtocol.getBatch().trim());
                     param.setManuDate(staProtocol.getManuDate());
-                    param.setWeight(staProtocol.getWeight());
-                    param.setGrossWeight(staProtocol.getGrossWeight());
+                    param.setWeight(Math.round(staProtocol.getWeight() * 100.0) / 100.0);
+                    param.setGrossWeight(Math.round(staProtocol.getGrossWeight() * 100.0) / 100.0);
+                    param.setReinspection(staProtocol.isReinspection());
                     param.setSourceStaNo(site + 2);
                     param.setTbFlag(staProtocol2.isBarcodeErr());
-
+                    param.setCannedVolume(Math.round(staProtocol.getCannedVolume() * 100.0) / 100.0);
 //                    param.setWrkNo(57);
 //                    param.setMatnr("101");
 //                    param.setBatch("tt1");
@@ -1942,7 +2131,7 @@
                     staProtocol.setBucketCount(wrkDetl.getAnfme().intValue());
                     boolean result = MessageQueue.offer(SlaveType.Devp, inGzxSiteList.indexOf(site) + 4, new Task(4, staProtocol));
                     if (result) {
-                        log.info("鍛婅瘔缃愯绾垮叆搴撴《淇℃伅鍛戒护闃熷垪鎺ㄩ�佹垚鍔燂細" + staProtocol.getWorkNo() + "," + site + "," + staProtocol.getBucketType() +"," + staProtocol.getBucketCount());
+                        log.info("鍛婅瘔缃愯绾垮叆搴撴《淇℃伅鍛戒护闃熷垪鎺ㄩ�佹垚鍔燂細" + staProtocol.getWorkNo() + "," +"鎵樼洏鐮侊細" + wrkMast.getBarcode() +"锛�" + site + "," + staProtocol.getBucketType() +"," + staProtocol.getBucketCount());
                         News.info("鍛婅瘔缃愯绾垮叆搴撴《淇℃伅鍛戒护闃熷垪鎺ㄩ�佹垚鍔燂細" + staProtocol.getWorkNo() + "," + site + "," + staProtocol.getBucketType() +"," + staProtocol.getBucketCount());
                         wrkMast.setWhsType(1); // 鏇存柊鎺ㄩ�佹爣璇嗭紝閬垮厤閲嶅鎺ㄩ��
                         wrkMastService.updateById(wrkMast);

--
Gitblit v1.9.1