From 66042dcaa96d66edaf56a863d5576207a13c2db5 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期三, 01 四月 2026 17:37:04 +0800
Subject: [PATCH] no message

---
 src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java   |   40 ++--
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java   |   52 +++++
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  374 ++++++++++++++++++++++++++++++++++------------
 3 files changed, 338 insertions(+), 128 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 620b397..6fbcdb1 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -41,6 +41,8 @@
 import java.math.RoundingMode;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -1256,12 +1258,6 @@
         wrkMast.setModiUser(userId);
         wrkMast.setModiTime(now);
         wrkMast.setBarcode(locMast.getBarcode());
-
-        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locDetl.getLocNo()));
-        if (!Objects.isNull(wrkMast1)) {
-            throw new CoolException("婧愬簱浣嶅凡鍑哄簱锛岃绛夊緟浠诲姟瀹屾垚鍚庯紝鍐嶆墽琛岋紒锛�");
-        }
-
         if (!wrkMastService.insert(wrkMast)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + locDetl.getLocNo());
         }
@@ -1315,7 +1311,7 @@
      * @version 1.0
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
     public synchronized R callAgvMove(AgvCallParams params, Long userId) {
         if (Objects.isNull(params.getOrgSite())) {
             throw new CoolException("婧愮珯鐐逛笉鑳戒负绌猴紒锛�");
@@ -1473,9 +1469,19 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public R callEmptyCar(AgvCallParams params, Long userId) {
-
         BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("name", params.getOrgSite()));
+
+        BasStation station1 = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", params.getTarSite()));
+        if (Objects.isNull(station1) || Objects.isNull(basAreas)) {
+            return R.error("鐩爣绔欑偣鎴栧簱鍖轰笉瀛樺湪锛岃鑱旂郴绠$悊锛侊紒");
+        }
+
+        List<String> list = Arrays.asList("SSX01", "SSX02", "SSX03", "SSX04", "SSX05", "SSX06", "SSX07", "SSX08", "SSX09", "SSX10");
+        if (Long.parseLong(station1.getAreaId()) != basAreas.getId() && !list.contains(params.getTarSite())) {
+            return R.error("璧峰鍖哄拰鐩爣绔欑偣涓嶅湪鍚屼竴涓簱鍖猴紝璇烽噸鏂版搷浣滐紒锛�");
+        }
 
         List<LocCache> locCaches = locCacheService.selectList(new EntityWrapper<LocCache>()
                 .eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type)
@@ -1492,20 +1498,6 @@
         }
         generateCacheOutTask(station, locCaches.get(0), userId);
 
-        // HIKApiDTO hikApiDTO =new HIKApiDTO()
-        // .setOrg(locCaches.get(0).getLocNo())
-        // .setOrgType("05")
-        // .setTar(params.getTarSite())
-        // .setTarType("05")
-        // .setTaskType("GT5")
-        // .setPriority("1")
-        // .setCtnrType("2")
-        // ;
-        // HIKResultDTO hikResultDTO = sendAgvTask(hikApiDTO,
-        // HIKApiConstant.AGV_CALL_IN_PATH);
-        // if (!hikResultDTO.isSuccess()){
-        // return R.error(hikResultDTO.getMessage());
-        // }
 
         return R.ok();
     }
@@ -1696,29 +1688,32 @@
         if (Objects.isNull(param.getCombMats()) || param.getCombMats().isEmpty()) {
             throw new CoolException("缁勬墭鏄庣粏涓嶈兘涓虹┖锛侊紒");
         }
+
         WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                 .eq("wrk_sts", 14)
                 .eq("io_type", 104)
                 .eq("barcode", param.getBarcode()));
         if (Objects.isNull(wrkMast)) {
-            throw new CoolException("浠诲姟妗d俊鎭笉瀛樺湪锛侊紒");
+            throw new CoolException("浠诲姟妗d俊鎭笉瀛樺湪,璇锋鏌ユ墭鐩橈細" + param.getBarcode() + "浠诲姟妗f槸鍚﹀凡瀹屾垚鍑哄簱 锛侊紒");
         }
 
         for (CombParam.CombMat combMat : param.getCombMats()) {
             BasStationDetl stationDetl = basStationDetlService.selectOne(new EntityWrapper<BasStationDetl>()
                     .eq("zpallet", param.getCarBarcode())
-                    .eq("three_code", combMat.getThreeCode()));
+                    .eq(!Objects.isNull(combMat.getMatnr()), "matnr", combMat.getMatnr())
+                    .eq(!Objects.isNull(combMat.getThreeCode()), "three_code", combMat.getThreeCode()));
             if (Objects.isNull(stationDetl)) {
                 throw new CoolException("鏄庣粏鍐呭涓嶅瓨鍦紒锛�");
             }
             WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>()
                     .eq("matnr", stationDetl.getMatnr())
                     .eq("wrk_no", wrkMast.getWrkNo())
-                    .eq("supp_code", combMat.getSuppCode()));
+                    .eq("supp_code", stationDetl.getSuppCode()));
 
             if (Objects.isNull(wrkDetl)) {
                 //TODO 鏂版彃鍏�
-                Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", stationDetl.getMatnr())
+                Mat mat = matService.selectOne(new EntityWrapper<Mat>()
+                        .eq("matnr", stationDetl.getMatnr())
                         .eq("supp_code", combMat.getSuppCode()));
                 if (Objects.isNull(mat)) {
                     throw new CoolException("鐗╂枡鍩虹淇℃伅宸蹭笉瀛樺湪锛侊紒");
@@ -1728,7 +1723,7 @@
                 detl.setAnfme(combMat.getAnfme());
                 detl.setBarcode(wrkMast.getBarcode());
                 detl.setZpallet(param.getBarcode());
-                detl.setBoxType1(combMat.getBoxType1());
+                detl.setBoxType1(param.getBoxType1());
                 detl.setStandby1(combMat.getSuppCode());
                 detl.setThreeCode(combMat.getThreeCode());
                 detl.setAdjustQty(combMat.getAdjustQty());
@@ -1745,7 +1740,7 @@
                 double val = Math.round((combMat.getAnfme() + wrkDetl.getAnfme()) * 10000) / 10000.0;
                 WrkDetl detl = new WrkDetl();
                 detl.setOrderNo(stationDetl.getOrderNo());
-                detl.setBoxType1(combMat.getBoxType1());
+                detl.setBoxType1(wrkDetl.getBoxType1());
                 detl.setZpallet(param.getBarcode());
                 detl.setBarcode(param.getBarcode());
                 detl.setThreeCode(combMat.getThreeCode());
@@ -1893,6 +1888,12 @@
         if (Cools.isEmpty(basStation)) {
             throw new CoolException("璇疯緭鍏ユ纭殑绔欑偣鍙�");
         }
+
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", params.getOrgBarcode()));
+        if (Objects.isNull(wrkMast)) {
+            throw new CoolException("鍑哄簱浠诲姟妗d俊鎭笉瀛樺湪锛侊紒");
+        }
+
         for (CollectionPakinParams.CombMat combMat : params.getCombMats()) {
             if (combMat.getWorkQty().compareTo(BigDecimal.ZERO) == 0) {
                 continue;
@@ -1908,8 +1909,23 @@
             BasStationDetl basStationDetl = basStationDetlService.selectOne(new EntityWrapper<BasStationDetl>()
                     .eq("dev_no", basStation.getDevNo())
                     .eq("matnr", combMat.getMatnr())
-                    .eq("batch", combMat.getBatch())
+                    .eq("order_no", combMat.getOrderNo())
+                    .eq(!Cools.isEmpty(combMat.getBatch()), "batch", combMat.getBatch())
                     .eq(!Cools.isEmpty(combMat.getStandby1()), "standby1", combMat.getStandby1()));
+
+
+            Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>()
+                    .eq("wrk_no", wrkMast.getWrkNo())
+                    .eq("matnr", combMat.getMatnr())
+                    .eq("supp_coode", combMat.getStandby1());
+////                    .eq(!Objects.isNull(params.getBoxType1()), "boxType1", params.getBoxType1())
+//
+//            if (!Objects.isNull(params.getBoxType1())) {
+//                wrapper.eq("box_type1", params.getBoxType1());
+//            }
+
+//            WrkDetl wrkDetl = wrkDetlService.selectOne(wrapper);
+
             if (Cools.isEmpty(basStationDetl)) {
                 basStationDetl = new BasStationDetl();
                 Mat mat = matService.selectByMatnr(combMat.getMatnr());
@@ -1921,12 +1937,18 @@
                         .setBarcode(params.getTarBarcode())
                         .setZpallet(params.getTarBarcode())
                         .setBatch(combMat.getBatch())
+                        .setBoxType1(params.getBoxType1())
                         .setSuppCode(combMat.getStandby1())
                         .setStandby1(combMat.getStandby1())
                         .setAnfme(combMat.getWorkQty().doubleValue());
+
+//                if (!Objects.isNull(wrkDetl) && !wrkDetl.getMatnr().equals(combMat.getMatnr())) {
+//                    throw new CoolException("璇锋鏌ラ殧灞傛槸鍚︾粦瀹氭纭紒锛�");
+//                }
                 if (!basStationDetlService.insert(basStationDetl)) {
                     throw new CoolException("鎻掑叆鏄庣粏澶辫触");
                 }
+
             } else {
                 BigDecimal anfme = new BigDecimal(basStationDetl.getAnfme().toString()).add(combMat.getWorkQty());
                 basStationDetl.setAnfme(anfme.doubleValue());
@@ -1974,7 +1996,6 @@
 
     @Override
     public R collectionPakinView(CollectionPakinParams params) {
-
         WrkMast wrkMast = wrkMastService.selectByBarcode(params.getOrgBarcode());
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException("鏈壘鍒颁换鍔�");
@@ -1982,14 +2003,15 @@
 
         if (wrkMast.getIoType().equals(TaskIOType.ALL_OUT.type)
                 && wrkMast.getIoType().equals(TaskIOType.PICK_OUT.type)) {
-            throw new CoolException("浜虹墿绫诲瀷閿欒");
+            throw new CoolException("浠诲姟绫诲瀷閿欒");
         }
 
-        wrkDetlService.selectList(new EntityWrapper<WrkDetl>()
-                .eq(!Objects.isNull(params.getMatnr()), "matnr", params.getMatnr())
+        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>()
+                .like(!Objects.isNull(params.getMatnr()), "matnr", params.getMatnr())
+                .eq(!Objects.isNull(params.getBoxType1()), "box_type1", params.getBoxType1())
                 .eq("wrk_no", wrkMast.getWrkNo()));
 
-        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+//        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
         if (Cools.isEmpty(wrkDetls)) {
             throw new CoolException("鏈壘鍒颁换鍔℃槑缁�");
         }
@@ -2392,17 +2414,17 @@
             }
             // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
             locMast = locMastService.selectById(locMast.getLocNo());
-//            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_F.type)
-//                    || locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_D.type)) {
-            locMast.setLocSts(ioType == 101 ? "R" : "P");
-            locMast.setModiUser(userId);
-            locMast.setModiTime(now);
-            if (!locMastService.updateById(locMast)) {
-                throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locMast.getLocNo());
+            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_F.type)
+                    || locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_D.type)) {
+                locMast.setLocSts(ioType == 101 ? "R" : "P");
+                locMast.setModiUser(userId);
+                locMast.setModiTime(now);
+                if (!locMastService.updateById(locMast)) {
+                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locMast.getLocNo());
+                }
+            } else {
+                throw new CoolException(locMast.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
             }
-//            } else {
-//                throw new CoolException(locMast.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
-//            }
         }
     }
 
@@ -2526,7 +2548,6 @@
                 .setAppeTime(new Date())
                 .setModiUser(userId)
                 .setModiTime(new Date());
-
         if (!taskService.insert(task)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
@@ -2614,8 +2635,6 @@
                 throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
             }
         }
-
-
     }
 
     public HIKResultDTO sendAgvTask(HIKApiDTO haiKangApiDTO, String path) {
@@ -2867,7 +2886,6 @@
             return R.error("鍙拌溅缂栫爜涓嶈兘涓虹┖锛�");
         }
         List<TaskDetl> taskDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>()
-//                .eq(!Objects.isNull(params.getMatnr()), "matnr", params.getMatnr())
                 .eq("zpallet", params.getCarBarcode()));
 
         taskDetls.forEach(taskDetl -> {
@@ -2900,58 +2918,155 @@
         if (Objects.isNull(params.getTarSite())) {
             return R.error("鐩爣绔欑偣涓嶈兘涓虹┖锛侊紒");
         }
+        BasStation devNo = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", params.getTarSite()));
+        if (Objects.isNull(devNo) || !devNo.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+            return R.error("鐩爣绔欑偣蹇欑涓紒锛�");
+        }
+
         List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locCache.getLocNo()));
         if (Objects.isNull(locDetls) || locDetls.isEmpty()) {
             return R.error("鍙拌溅涓婃病鏈夊搴旀槑缁嗕俊鎭紒锛�");
         }
         List<LocDto> locDtos = new ArrayList<>();
         locDetls.forEach(locDetl -> {
-            OrderPakout orderPakout = orderPakoutService.selectOne(new EntityWrapper<OrderPakout>()
+            List<OrderPakout> orderPakouts = orderPakoutService.selectList(new EntityWrapper<OrderPakout>()
                     .eq("doc_type", 5)
                     .eq("number", locDetl.getOrderNo()));
-            if (!Objects.isNull(orderPakout)) {
+            if (Objects.isNull(orderPakouts) || orderPakouts.isEmpty()) {
+                throw new CoolException("鍗曟嵁淇℃伅涓嶅瓨鍦ㄦ垨宸蹭笂鎶ュ畬鎴愶紒锛�");
+            }
+            for (OrderPakout orderPakout : orderPakouts) {
+                OrderDetlPakout orderDetl = orderDetlPakoutService.selectOne(new EntityWrapper<OrderDetlPakout>()
+                        .eq("matnr", locDetl.getMatnr())
+                        .eq("supp_code", locDetl.getSuppCode())
+                        .eq("order_no", orderPakout.getOrderNo()));
+                if (Objects.isNull(orderDetl)) {
+                    continue;
+                }
                 locDetl.setMemo(orderPakout.getShipCode());
                 locDetl.setOrderNo(orderPakout.getOrderNo());
-            }
-            OrderDetlPakout orderDetl = orderDetlPakoutService.selectOne(new EntityWrapper<OrderDetlPakout>()
-                    .eq("matnr", locDetl.getMatnr())
-                    .eq("supp_code", locDetl.getSuppCode())
-                    .eq("order_no", orderPakout.getOrderNo()));
-            if (Objects.isNull(orderDetl)) {
-                throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
-            }
 
-            LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
-                    locDetl.getAnfme());
-            locDto.setFrozen(locDetl.getFrozen());
-            locDto.setFrozenLoc(locCache.getFrozen());
-//            List<BasStation> basStations = basStationService.selectList(new EntityWrapper<BasStation>().in("area_id", areaIds));
-//            List<String> collect = basStations.stream().map(BasStation::getDevNo).collect(Collectors.toList());
-//            locDto.setAgvStaNos(collect);
-            locDto.setAgvStaNo(params.getTarSite());
-            locDto.setBrand(orderDetl.getBrand());
-            locDto.setSuppCode(orderDetl.getSuppCode());
-            locDto.setStandby1(orderDetl.getStandby1());
-            locDto.setStandby2(orderDetl.getStandby2());
-            locDto.setStandby3(orderDetl.getStandby3());
-            locDto.setBoxType1(orderDetl.getBoxType1());
-            locDto.setBoxType2(orderDetl.getBoxType2());
-            locDto.setBoxType3(orderDetl.getBoxType3());
-            locDtos.add(locDto);
+                LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), locDetl.getAnfme());
+                locDto.setFrozen(locDetl.getFrozen());
+                locDto.setFrozenLoc(locCache.getFrozen());
+                locDto.setAgvStaNo(params.getTarSite());
+                locDto.setBrand(orderDetl.getBrand());
+                locDto.setSuppCode(orderDetl.getSuppCode());
+                locDto.setStandby1(orderDetl.getStandby1());
+                locDto.setStandby2(orderDetl.getStandby2());
+                locDto.setStandby3(orderDetl.getStandby3());
+                locDto.setBoxType1(orderDetl.getBoxType1());
+                locDto.setBoxType2(orderDetl.getBoxType2());
+                locDto.setBoxType3(orderDetl.getBoxType3());
+                locDtos.add(locDto);
+
+            }
 //            exist.add(locDetl.getLocNo());
         });
 
         generateAgvTaskByTc(locDtos);
 
-
         return R.ok();
     }
+
+    /**
+     * 鑾峰彇绔欑偣鏄庣粏淇℃伅
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    public R getStationInfos(AgvCallParams params) {
+        if (Objects.isNull(params.getOrgSite())) {
+            return R.error("绔欑偣涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(params.getCarBarcode())) {
+            return R.error("绔欑偣鍙拌溅涓嶈兘涓虹┖锛侊紒");
+        }
+//        if (!Cools.isEmpty(params.getMatnr())) {
+//            return R.error("鐗╂枡淇℃伅涓嶈兘涓虹┖锛侊紒");
+//        }
+        BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
+                .eq("dev_no", params.getOrgSite())
+                .eq("barcode", params.getCarBarcode()));
+        if (Objects.isNull(station)) {
+            throw new CoolException("鍙拌溅涓庣珯鐐圭粦瀹氬叧绯讳笉瀛樺湪锛岃鑱旂郴绠$悊鍛橈紒");
+        }
+        List<BasStationDetl> stationDetls = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>()
+                .like(!Cools.isEmpty(params.getMatnr()), "matnr", params.getMatnr())
+                .eq("dev_no", station.getDevNo()));
+        if (!stationDetls.isEmpty()) {
+            return R.ok().add(stationDetls);
+        }
+        return R.ok();
+    }
+
+    /**
+     * 绔欑偣鐗╂枡瑙g粦
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R unbindMatnr(CombParam params) {
+        if (Objects.isNull(params.getCombMats()) || params.getCombMats().isEmpty()) {
+            return R.error("鏄庣粏涓嶈兘涓虹┖锛侊紒");
+        }
+        for (CombParam.CombMat combMat : params.getCombMats()) {
+            if (Objects.isNull(combMat)) {
+                continue;
+            }
+            OrderPakin order = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", combMat.getOrderNo()));
+            if (Objects.isNull(order)) {
+                return R.error("涓烘煡璇㈠埌璁㈠崟锛岃纭鏄惁涓哄簱鍙g粍鎵樹俊鎭紒锛�");
+            }
+            //鍏ュ簱
+            OrderDetlPakin detlPakin = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>()
+                    .eq("order_no", combMat.getOrderNo())
+                    .eq("matnr", combMat.getMatnr())
+                    .eq("supp_code", combMat.getStandby1()));
+
+            if (!Objects.isNull(detlPakin)) {
+                Double v = Math.round((detlPakin.getWorkQty() - combMat.getAnfme()) * 10000) / 10000.0;
+                detlPakin.setWorkQty(v);
+                if (!orderDetlPakinService.update(detlPakin, new EntityWrapper<OrderDetlPakin>()
+                        .eq("order_no", combMat.getOrderNo())
+                        .eq("matnr", combMat.getMatnr())
+                        .eq("supp_code", combMat.getStandby1()))) {
+                    throw new CoolException("璁㈠崟鏄庣粏鏇存柊澶辫触锛侊紒");
+                }
+
+                if (!basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("order_no", combMat.getOrderNo())
+                        .eq("matnr", combMat.getMatnr())
+                        .eq("supp_code", combMat.getStandby1()))) {
+                    throw new CoolException("绔欑偣鏁版嵁鍒犻櫎澶辫触锛侊紒");
+                }
+
+                WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>()
+                        .eq("order_no", combMat.getOrderNo())
+                        .eq("matnr", combMat.getMatnr())
+                        .eq("supp_code", combMat.getStandby1()));
+                if (!Objects.isNull(waitPakin)) {
+                    if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("order_no", combMat.getOrderNo())
+                            .eq("matnr", combMat.getMatnr())
+                            .eq("supp_code", combMat.getStandby1()))) {
+                        throw new CoolException("鍘熺粍鎵樻。鍒犻櫎澶辫触锛侊紒");
+                    }
+                }
+            } else {
+                throw new CoolException("璁㈠崟鏄庣粏缁戝畾鍏崇郴涓嶅瓨鍦紒锛�");
+            }
+        }
+        return R.ok();
+    }
+
 
     @Transactional(rollbackFor = Exception.class)
     public void generateAgvTaskByTc(List<LocDto> locDtos) {
         List<LocDto> locDtoArrayList = new ArrayList<>();
-        for (LocDto locDto : locDtos){
-            if (locDto.getFrozen()!=1 && locDto.getFrozenLoc()!=1){
+        for (LocDto locDto : locDtos) {
+            if (locDto.getFrozen() != 1 && locDto.getFrozenLoc() != 1) {
                 locDtoArrayList.add(locDto);
             }
         }
@@ -2979,7 +3094,9 @@
         List<TaskDto> taskDtos = new ArrayList<>();
         // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
         for (LocDto locDto : locDtos) {
-            if (locDto.isLack()) { continue; }
+            if (locDto.isLack()) {
+                continue;
+            }
             TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto);
             if (TaskDto.hasAgv(taskDtos, taskDto)) {
                 TaskDto dto = TaskDto.findAgv(taskDtos, taskDto);
@@ -2996,12 +3113,13 @@
                 BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
                         .in("loc_sts", Arrays.asList(LocStsType.LOC_STS_TYPE_O.type, LocStsType.LOC_STS_TYPE_O.type))
                         .eq("dev_no", taskDto.getAgvStaNo()));
-                if (Objects.isNull(station)) { throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪鎴栧凡浣跨敤锛侊紒"); }
+                if (Objects.isNull(station)) {
+                    throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪鎴栧凡浣跨敤锛侊紒");
+                }
                 workService.agvStockOut(station, taskDto, 9527L);
             });
         });
     }
-
 
     /**
      * 纭鎹嗗寘鍑哄簱
@@ -3059,19 +3177,15 @@
                                     }
                                 });
                             }
-
-                            task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
-                            if (!taskService.update(task, new EntityWrapper<Task>().eq("wrk_no", taskDetl.getWrkNo()))) {
-                                throw new CoolException("浠诲姟淇℃伅鏇存柊澶辫触锛侊紒");
-                            }
                         }
                     });
                 }
-
+            }
+            task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
+            if (!taskService.update(task, new EntityWrapper<Task>().eq("wrk_no", task.getWrkNo()))) {
+                throw new CoolException("浠诲姟淇℃伅鏇存柊澶辫触锛侊紒");
             }
         }
-        //TODO 姣斿瀹為檯鍑哄簱鏁伴噺鍜屼换鍔℃。鏁伴噺鏄惁鐩哥瓑锛屼慨鏀瑰師浠诲姟妗d负53锛岀敓鎴愭柊鐨勫叆搴撲换鍔�
-
         return R.ok("鍛煎彨鎴愬姛锛侊紒");
     }
 
@@ -3105,6 +3219,17 @@
             return R.error("娌℃湁鍙敤绌烘澘锛侊紒");
         }
 
+        locMast.setLocSts(LocStsType.LOC_STS_TYPE_R.type);
+
+        if (!locMastService.update(locMast, new EntityWrapper<LocMast>().eq("loc_no", locMast.getLocNo()))) {
+            throw new CoolException(locMast.getLocNo() + "鍑哄簱棰勭害澶辫触锛侊紒");
+        }
+
+        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locMast.getLocNo()));
+        if (!Objects.isNull(wrkMast1)) {
+            throw new CoolException("浠诲姟妗e凡鐢熸垚锛岃涓嶈閲嶅鎿嶄綔锛侊紒");
+        }
+        int workNo = commonService.getWorkNo(0);
         //TODO 鐢熸垚骞舵澘鍑哄簱浠诲姟
         WrkMast wrkMast = new WrkMast();
         wrkMast.setIoType(104);
@@ -3118,7 +3243,7 @@
         wrkMast.setCrnNo(locMast.getCrnNo());
         wrkMast.setIoTime(new Date());
         wrkMast.setWrkDate(new Date());
-        wrkMast.setWrkNo(commonService.getWorkNo(0));
+        wrkMast.setWrkNo(workNo);
         wrkMast.setTaskType("crn");
 
         if (!wrkMastService.insert(wrkMast)) {
@@ -3128,6 +3253,59 @@
         return R.ok().add(wrkMast);
     }
 
+    /**
+     * 鑾峰彇鍑哄簱鍙拌溅鎵�鏈変俊鎭�
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R getTcAllInfos(AgvCallParams params) {
+        if (Objects.isNull(params.getCarBarcode())) {
+            return R.error("鍙拌溅鐮佷笉鑳戒负绌猴紒锛�");
+        }
+//        Task task = taskService.selectOne(new EntityWrapper<Task>().eq("barcode", params.getCarBarcode()));
+//        if (Objects.isNull(task)) {
+//            throw new CoolException("浠诲姟妗d笉瀛樺湪锛侊紒");
+//        }
+//        if (Objects.isNull(task.getSourceLocNo())) {
+//            throw new CoolException("璇锋鏌ヤ换鍔$被鍨嬫槸鍚﹀睘浜庡嚭搴撴崋缁戯紒锛�");
+//        }
+        LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("barcode", params.getCarBarcode()));
+        if (Objects.isNull(locCache)) {
+            return R.error("褰撳墠鍙拌溅涓嶅湪缂撳啿搴撳尯锛侊紒");
+        }
+        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locCache.getLocNo()));
+        if (!Objects.isNull(locDetls) && !locDetls.isEmpty()) {
+            locDetls.forEach(locDetl -> {
+                OrderPakout orderPakout = orderPakoutService.selectOne(new EntityWrapper<OrderPakout>()
+                        .eq("number", locDetl.getOrderNo()));
+                if (!Objects.isNull(orderPakout)) {
+                    locDetl.setMemo(orderPakout.getShipCode());
+                }
+            });
+        }
+
+        try {
+            Map<String, List<LocDetl>> listMap = locDetls.stream().collect(Collectors.groupingBy(LocDetl::getMemo));
+            if (!Cools.isEmpty(params.getShipCode())) {
+                List<LocDetl> detlList = listMap.get(params.getShipCode());
+                return R.ok().add(detlList);
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+
+        return R.ok().add(locDetls);
+//        Map<String, List<LocDetl>> listMap = locDetls.stream().collect(Collectors.groupingBy(LocDetl::getMemo));
+//        if (!Objects.isNull(params.getShipCode())) {
+//            List<LocDetl> detlList = listMap.get(params.getShipCode());
+//            return R.ok().add(detlList);
+//        } else {
+//            return R.ok().add(locDetls);
+//        }
+    }
 
     /**
      * 鐢熸垚绉诲簱浠诲姟
@@ -3176,12 +3354,12 @@
         LocCache loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_IN_CACHE);
         if (loc != null) return loc;
 
-        // 2. Try SO Area
-        loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_SO);
-        if (loc != null) return loc;
-
-        // 3. Try EO Area
-        loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_EO);
+//        // 2. Try SO Area
+//        loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_SO);
+//        if (loc != null) return loc;
+//
+//        // 3. Try EO Area
+//        loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_EO);
         return loc;
     }
 
@@ -3195,9 +3373,7 @@
         }
         return locCacheService.selectOne(new EntityWrapper<LocCache>()
                 .eq("area_id", area.getId())
-                .eq("frozen", 0)
                 .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
-                .orderAsc(Arrays.asList("loc_no"))
-                .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+                .orderAsc(Arrays.asList("loc_no")));
     }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
index 46203c1..48541f9 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -164,18 +164,18 @@
             locNo = wrkMast.getLocNo();
             locSts = "O";
 
-            // 搴撲綅杞Щ
-            if (wrkMast.getIoType() == 11) {
-                // 搴撲綅杞Щ锛氭簮搴撲綅
-                LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getSourceLocNo()));
-                if (Cools.isEmpty(locMast)) {
-                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:" + wrkMast.getSourceLocNo());
-                }
-                locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F");
-                locMast.setModiTime(now);
-                locMast.setModiUser(userId);
-                locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()));
-            }
+//            // 搴撲綅杞Щ
+//            if (wrkMast.getIoType() == 11) {
+//                // 搴撲綅杞Щ锛氭簮搴撲綅
+//                LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getSourceLocNo()));
+//                if (Cools.isEmpty(locMast)) {
+//                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:" + wrkMast.getSourceLocNo());
+//                }
+//                locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F");
+//                locMast.setModiTime(now);
+//                locMast.setModiUser(userId);
+//                locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()));
+//            }
 
             BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getSourceStaNo()));
             if (station.getLocSts().equals("R")) {
@@ -213,16 +213,12 @@
             }
 
             BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getStaNo()));
-            if (station.getLocSts().equals("S")) {
-                station.setLocSts("O");
-                station.setBarcode("");
-                station.setModiTime(new Date());
-                station.setModiUser(userId);
-                if (!basStationService.updateById(station)) {
-                    throw new CoolException("鏇存柊婧愮珯鐐圭姸鎬佸け璐�");
-                }
-            } else {
-                throw new CoolException("鏇存柊婧愮珯鐐圭姸鎬佸け璐ワ紝鐩爣搴撲綅鐘舵�侊細" + station.getLocSts());
+            station.setLocSts("O");
+            station.setBarcode("");
+            station.setModiTime(new Date());
+            station.setModiUser(userId);
+            if (!basStationService.updateById(station)) {
+                throw new CoolException("鏇存柊婧愮珯鐐圭姸鎬佸け璐�");
             }
         } else if (wrkMast.getIoType() == 1) {
             List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index aa3be9f..0703a78 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -11,6 +11,7 @@
 import com.zy.asrs.entity.param.FullStoreParam;
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.enums.ContainerType;
 import com.zy.asrs.enums.LocAreaType;
 import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.entity.result.FindLocNoAttributeVo;
@@ -120,6 +121,22 @@
 //        List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
 //        List<String> batchs = param.getList().stream().map(FullStoreParam.MatCodeStore::getBatch).distinct().collect(Collectors.toList());
         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(param.getList().get(0));
+
+//        BasContainer container = basContainerService.selectOne(new EntityWrapper<BasContainer>().eq("barcode", param.getBarcode()));
+//        if (Objects.isNull(container)) {
+//            throw new CoolException("瀹瑰櫒缂栫爜鏈淮鎶わ紝璇风淮鎶ゅ悗鍐嶆搷浣滐紒锛�");
+//        }
+//
+//        Integer whsType = 1;
+//        Short lcoType = 1;
+//        //鐢ㄤ簬鍒ゆ柇鏂欑鎵樼洏锛屾枡绠憋紝绗兼
+//        if (!container.getType().equals(ContainerType.CONTAINER_TYPE_BOX.type)) {
+//            whsType = 2;
+//            if (container.getType().equals(ContainerType.CONTAINER_TYPE_SALVER.type)) {
+//                lcoType = 2;
+//            }
+//        }
+
         StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
         if (Cools.isEmpty(dto)) {
             throw new CoolException("鏌ヨ搴撲綅澶辫触锛侊紒==銆媠tartupFullPutStore ==銆� commonService.getLocNo");
@@ -478,6 +495,7 @@
             wrkDetl.setZpallet(wrkMast.getBarcode());
             wrkDetl.setIoTime(now);
             wrkDetl.setWrkNo(workNo);
+            wrkDetl.setBoxType1(locDto.getBoxType1());
             wrkDetl.setBatch(locDto.getBatch());
             wrkDetl.setOrderNo(locDto.getOrderNo());
             wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
@@ -575,6 +593,7 @@
             wrkDetl.setOrderId(checkOrderDetls.getId());
             wrkDetl.setZpallet(wrkMast.getBarcode());
             wrkDetl.setIoTime(now);
+            wrkDetl.setBoxType1(locDto.getBoxType1());
             wrkDetl.setWrkNo(workNo);
             wrkDetl.setBatch(locDto.getBatch());
             wrkDetl.setOrderNo(locDto.getOrderNo());
@@ -665,6 +684,7 @@
                     .setIoTime(new Date())
                     .setOrderNo(locDto.getOrderNo())
                     .setAnfme(locDto.getAnfme())
+                    .setBoxType1(locDto.getBoxType1())
                     .setZpallet(locCache.getBarcode())
                     .setBatch(locDto.getBatch())
                     .setAppeUser(userId)
@@ -991,6 +1011,7 @@
             wrkDetl.sync(locDetl);
             wrkDetl.setWrkNo(workNo);
             wrkDetl.setIoTime(now);
+            wrkDetl.setBoxType1(locDetl.getBoxType1());
             wrkDetl.setAnfme(locDetl.getAnfme());
             wrkDetl.setAppeTime(now);
             wrkDetl.setAppeUser(userId);
@@ -1109,11 +1130,21 @@
                 if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
                     if (!locDetl.getAnfme().equals(adjust.getCount())) {
                         // todo 鐩樼偣璁板綍
-                        // 淇敼搴撳瓨
-                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
-                                locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
-                            throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
+                        locDetl.setSuppCode(adjust.getSuppCode());
+                        locDetl.setBoxType1(adjust.getBoxType1());
+                        locDetl.setAnfme(adjust.getCount());
+                        locDetl.setStandby1(adjust.getSuppCode());
+//                        locDetl.setZpallet(locDetl.getZpallet());
+
+
+                        if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locDetl.getLocNo()))) {
+                            throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getSuppCode() + "渚涘簲鍟嗕慨鏀规暟閲忓け璐�");
                         }
+                        // 淇敼搴撳瓨
+//                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
+//                                locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
+//                            throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
+//                        }
                         // 淇濆瓨璋冩暣璁板綍
                         AdjDetl adjDetl = new AdjDetl();
                         adjDetl.setLocNo(locDetl.getLocNo());
@@ -1125,8 +1156,10 @@
                         adjDetl.setModiUser(userId);
                         adjDetl.setAppeTime(now);
                         adjDetl.setAppeUser(userId);
-                        adjDetlService.save(adjDetl, userId);
-
+                        if (!adjDetlService.insert(adjDetl)) {
+                            throw new CoolException("璋冩暣璁板綍淇濆瓨澶辫触锛侊紒");
+                        }
+//                        adjDetlService.save(adjDetl, userId);
                         if (updateFlag) {
                             wrkMast.setWrkNo(commonService.getWorkNo(3));
                             wrkMast.setIoType(23);
@@ -1141,6 +1174,7 @@
                         WrkDetlLog wrkDetl = new WrkDetlLog();
                         wrkDetl.sync(locDetl);
                         wrkDetl.setWrkNo(wrkMast.getWrkNo());
+                        wrkDetl.setBoxType1(locDetl.getBoxType1());
                         wrkDetl.setIoTime(wrkMast.getIoTime());
                         wrkDetl.setAnfme(adjust.getCount());
                         wrkDetl.setAppeTime(now);
@@ -1162,7 +1196,7 @@
             // todo 鐩樼偣璁板綍
             if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
                     locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
-                throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
+//                throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
             }
             // 淇濆瓨璋冩暣璁板綍
             AdjDetl adjDetl = new AdjDetl();
@@ -1215,6 +1249,9 @@
             locDetl.setZpallet(locMast.getBarcode());
             locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
             locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
+            locDetl.setSuppCode(adjust.getSuppCode());
+            locDetl.setStandby1(adjust.getSuppCode());
+            locDetl.setBoxType1(adjust.getBoxType1());
             locDetl.setModiTime(now);
             locDetl.setAppeUser(userId);
             locDetl.setAppeTime(now);
@@ -1249,6 +1286,7 @@
             wrkDetl.sync(locDetl);
             wrkDetl.setWrkNo(wrkMast.getWrkNo());
             wrkDetl.setIoTime(wrkMast.getIoTime());
+            wrkDetl.setBoxType1(locDetl.getBoxType1());
             wrkDetl.setAnfme(adjust.getCount());
             wrkDetl.setAppeTime(now);
             wrkDetl.setModiTime(now);

--
Gitblit v1.9.1