From ffe256867f19115a442d96abadd270d2c17835a9 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 08 十二月 2023 08:19:52 +0800
Subject: [PATCH] #出库强制预留小车给入库任务

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   57 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 37 insertions(+), 20 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 62ba267..631a492 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -639,19 +639,6 @@
                         && (staProtocol.getWorkNo() > 0)
                         && staProtocol.isPakMk()){
 
-                    // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
-                    if (barcodeThread == null) {
-                        continue;
-                    }
-                    String barcode = barcodeThread.getBarcode();
-                    if(Cools.isEmpty(barcode)) {
-                        continue;
-                    }
-                    if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
-                        continue;
-                    }
-
                     WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol.getWorkNo().intValue());
                     if (wrkMast == null) {//鎵句笉鍒板伐浣滄。
                         continue;
@@ -695,7 +682,7 @@
                         LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());//婧愬簱浣�
                         SearchLocParam param = new SearchLocParam();
                         param.setWrkNo(wrkMast.getWrkNo());
-                        param.setBarcode(barcode);
+                        param.setBarcode(wrkMast.getBarcode());
                         param.setIoType(107);//鐩樼偣
                         param.setSourceStaNo(wrkMast.getStaNo());
                         param.setLocType1(locMast.getLocType1());
@@ -730,6 +717,9 @@
                                 News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
                                 continue;
                             }
+
+                            staProtocol.setStaNo(dto.getSourceStaNo().shortValue());//鍐欏叆鐩爣绔�
+                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
 
                         } else if (code == 500){
                             News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
@@ -1287,6 +1277,25 @@
             }
 
             if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴�
+                //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟
+                int lev = Utils.getLev(wrkMast.getSourceLocNo());
+                //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙扮┖闂插彲鐢ㄥ皬杞�
+                int shuttleCount = shuttleDispatchUtils.getShuttleCountByLev(lev);
+                if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅
+                    int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺
+                    Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1));
+                    if (config != null) {
+                        shuttleWrkInObligateCount = Integer.parseInt(config.getValue());
+                    }
+                    //鍙敤鍑哄簱灏忚溅鏁伴噺(缁欏叆搴撲换鍔¢鐣欎竴鍙拌溅)
+                    int useShuttleCount = shuttleCount - shuttleWrkInObligateCount;
+                    //鏌ヨ妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟鏁伴噺
+                    List<WrkMast> wrkMasts = wrkMastService.selectShuttleOutWrkByLev(lev);
+                    if (wrkMasts.size() >= useShuttleCount) {
+                        News.info("{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size());
+                        return false;
+                    }
+                }
                 boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
                 News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触");
                 return false;
@@ -2836,7 +2845,7 @@
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
                 ledCommand.setLocNo(wrkMast.getLocNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
-                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
+                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10 && wrkMast.getIoType() != 107) {
                     //for (WrkDetl wrkDetl : wrkDetls) {
                     //    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
                     //
@@ -2876,11 +2885,11 @@
                     //}
                     List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
                     locDetls.forEach(locDetl -> {
-                        Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no",wrkMast.getWrkNo());
-                        Utils.wapperSetCondition(wrapper,"batch",locDetl.getBatch());
-                        Utils.wapperSetCondition(wrapper,"three_code",locDetl.getThreeCode());
-                        Utils.wapperSetCondition(wrapper,"dead_time",locDetl.getDeadTime());
-                        Utils.wapperSetCondition(wrapper,"supp_code",locDetl.getSuppCode());//鏂欑鐮�
+                        Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkMast.getWrkNo());
+                        Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch());
+                        Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode());
+                        Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime());
+                        Utils.wapperSetCondition(wrapper, "supp_code", locDetl.getSuppCode());//鏂欑鐮�
                         WrkDetl detl = wrkDetlService.selectOne(wrapper);
                         if (Cools.isEmpty(detl)) {
                             String suppCode = "";
@@ -2897,6 +2906,14 @@
                         }
                     });
                 }
+
+                if (wrkMast.getIoType() == 107) {
+                    List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                    wrkDetls.forEach(wrkDetl -> {
+                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode()));
+                    });
+                }
+
                 commands.add(ledCommand);
             }
             Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());

--
Gitblit v1.9.1