From 34aa40fffdda9155e77a7991ca8c7691102bb0b8 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期日, 26 四月 2026 11:29:05 +0800
Subject: [PATCH] no message

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  210 +++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 158 insertions(+), 52 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 33137f2..3af2321 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1312,7 +1312,7 @@
      */
     @Override
     @Transactional
-    public synchronized R callAgvMove(AgvCallParams params, Long userId) {
+    public R callAgvMove(AgvCallParams params, Long userId) {
         if (Objects.isNull(params.getOrgSite())) {
             throw new CoolException("婧愮珯鐐逛笉鑳戒负绌猴紒锛�");
         }
@@ -1389,7 +1389,7 @@
         if (Objects.isNull(params)) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-
+        log.info("缂撳瓨鍖虹粍鎵樺弬鏁�---{}", JSONObject.toJSONString(params));
         List<OrderDetlPakin> detlPakins = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>()
                         .eq(!Cools.isEmpty(params.getThreeCode()), "three_code", params.getThreeCode())
 //                .eq(!Cools.isEmpty(params.getMatnr()), "matnr", params.getMatnr())
@@ -1398,7 +1398,7 @@
         if (Objects.isNull(detlPakins) || detlPakins.isEmpty()) {
             throw new CoolException("鏁版嵁閿欒锛� 鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
         }
-
+//        log.info("缂撳瓨鍖哄搷搴旂粨鏋�---{}", JSONObject.toJSONString(detlPakins));
         return R.ok().add(detlPakins);
     }
 
@@ -1410,7 +1410,7 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R OutCallAgv(AgvCallParams params, Long userId) {
+    public  R OutCallAgv(AgvCallParams params, Long userId) {
         BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_IN_CACHE.type));
         if (Objects.isNull(basAreas)) {
             throw new CoolException("搴撳尯涓嶅瓨鍦紒锛�");
@@ -1444,7 +1444,8 @@
             }
             Set<Long> longs = matList.stream().map(Mat::getTagId).collect(Collectors.toSet());
             if (!longs.isEmpty() && longs.size() > 1) {
-                throw new CoolException("鐗╂枡绫诲瀷涓嶄竴鑷�,璇锋鏌ユ暟鎹槸鍚︽纭�!!");
+                continue;
+//                throw new CoolException("搴撲綅锛�" + locCache.getLocNo() + ",鍙拌溅锛�"  + locCache.getBarcode()  + "鐗╂枡绫诲瀷涓嶄竴鑷�,璇锋鏌ユ暟鎹槸鍚︽纭�!!");
             }
 
             Mat mat = matList.stream().findFirst().get();
@@ -1641,7 +1642,7 @@
      * @date 2025/12/8 15:37
      */
     @Override
-    public R combCacehList(AgvCallParams params) {
+    public  R combCacehList(AgvCallParams params) {
         if (Objects.isNull(params.getCarBarcode())) {
             throw new CoolException("鍙拌溅鎵樼洏鐮佷笉鑳戒负绌猴紒锛�");
         }
@@ -2073,7 +2074,42 @@
                 mast.setWrkSts(2L);
                 mast.setSourceStaNo(mast.getSourceStaNo());
                 mast.setStaNo(mast.getSourceStaNo());
-                mast.setLocNo(mast.getSourceLocNo());
+                //TODO 鐩樼偣鍑哄簱涓嶉�傜敤鍘熷簱浣�
+                if (wrkMast.getIoType().equals(TaskIOType.CHECK_OUT.type)) {
+                    Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>()
+                            .eq("whs_type", whsType)
+                            .eq("loc_type1", locType)
+                            .notIn("row1", Arrays.asList(11, 14))
+                            .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type);
+                    List<String> strings = wrkDetls103.stream().map(WrkDetl::getMatnr).collect(Collectors.toList());
+                    List<Mat> mats = matService.selectList(new EntityWrapper<Mat>().in("matnr", strings));
+                    List<Mat> matList = mats.stream().sorted(Comparator.comparing(Mat::getRank, Comparator.nullsLast(String::compareTo))).collect(Collectors.toList());
+                    Mat mat = matList.stream().findFirst().get();
+                    if (mat.getRank().compareTo("D") >= 0) {
+                        wrapper.orderDesc(Arrays.asList("bay1", "lev1"));
+                    } else {
+                        wrapper.orderAsc(Arrays.asList("bay1", "lev1"));
+                    }
+//                    if (matList.stream().findFirst()) {
+//                        //.sorted(Comparator.comparing(Person::getName,
+//                        //        Comparator.nullsLast(String::compareTo)))  // null 鏀惧湪鏈�鍚�
+//                        //// 鎴� nullsFirst 鏀惧湪鏈�鍓�
+//                        Integer rank = max.get().getRank();
+//                        if (rank > MesConstant.maxRank) {
+//                            wrapper.
+//                        }
+//                    }
+//                    wrapper.orderAsc(Arrays.asList("bay1", "lev1"));
+                    LocMast mast1 = locMastService.selectOne(wrapper);
+                    if (Objects.isNull(mast1)) {
+                        mast.setLocNo(mast.getSourceLocNo());
+                    } else {
+                        mast.setLocNo(mast1.getLocNo());
+                    }
+                } else {
+                    mast.setLocNo(mast.getSourceLocNo());
+                }
+
                 boolean res = wrkMastService.updateById(mast);
                 BeanUtils.copyProperties(mast, wrkMast);
                 if (!res) {
@@ -2183,6 +2219,29 @@
         }
 
         return wrkMast;
+    }
+
+    private LocMast getLocMast(LocMast locMast, List<String> locs) {
+        String shallowLoc = Utils.getShallowLoc(locMast.getLocNo(), Arrays.asList(1, 4));
+        if (Objects.isNull(shallowLoc)) {
+            throw new CoolException(locMast.getLocNo() + ",娣卞簱浣嶅搴旀祬搴撲綅" + shallowLoc + "涓嶅瓨鍦紝璇疯仈绯荤鐞嗗憳锛侊紒");
+        }
+
+        LocMast locNo1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc));
+        if (Objects.isNull(locNo1) || !locNo1.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+            locs.add(locMast.getLocNo());
+            locMast = locMastService.
+                    selectOne(new EntityWrapper<LocMast>()
+                            .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+                            .notIn(!locs.isEmpty(), "loc_no", locs)
+                            .orderDesc(Arrays.asList("gro1"))
+                            .orderAsc(Arrays.asList("row1", "bay1", "lev1"))
+                    );
+
+            getLocMast(locMast, locs);
+        }
+
+        return locMast;
     }
 
     /**
@@ -2388,12 +2447,11 @@
                         .orderAsc(Arrays.asList("row1", "bay1", "lev1"))
                         .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
 
-                if (Objects.isNull(locMast)) {
-                    throw new CoolException("鏈煡璇㈠埌鍙敤鐨勭┖鏉夸俊鎭紒锛�");
+                if (!Objects.isNull(locMast)) {
+                    CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(new ArrayList<>());
+                    locMasts.add(crnTaskDetlDTO);
+//                    throw new CoolException("鏈煡璇㈠埌鍙敤鐨勭┖鏉夸俊鎭紒锛�");
                 }
-                CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(new ArrayList<>());
-                locMasts.add(crnTaskDetlDTO);
-
                 // 绌烘澘鍑哄簱
                 generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId, station);
             }
@@ -2483,7 +2541,10 @@
                     throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locMast.getLocNo());
                 }
             } else {
-                throw new CoolException(locMast.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locMast.getLocNo()));
+                if (!Objects.isNull(wrkMast) && wrkMast.getIoType() != 104) {
+                    throw new CoolException(locMast.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+                }
             }
         }
     }
@@ -2581,7 +2642,9 @@
      */
     @Transactional(rollbackFor = Exception.class)
     public void generateAgvTask(String type, LocCache loc, String orgSite, String barcode, Long userId, String isNewIn) {
-        List<Task> tasks = taskService.selectList(new EntityWrapper<Task>().eq("barcode", barcode));
+        List<Task> tasks = taskService.selectList(new EntityWrapper<Task>()
+                .eq("source_sta_no", orgSite)
+                .eq("barcode", barcode));
         if (!tasks.isEmpty()) {
             throw new CoolException("鎵樼洏宸插湪浠诲姟鎵ц涓�..");
         }
@@ -2948,7 +3011,10 @@
         taskDetls.forEach(taskDetl -> {
             OrderPakout orderDetlPakout = orderPakoutService.selectOne(new EntityWrapper<OrderPakout>()
                     .eq("order_no", taskDetl.getOrderNo()));
-            taskDetl.setMemo(orderDetlPakout.getShipCode());
+            if (!Objects.isNull(orderDetlPakout)) {
+                taskDetl.setMemo(!Cools.isEmpty(orderDetlPakout.getShipCode()) ? orderDetlPakout.getShipCode() : "0" );
+            }
+
         });
 
         return R.ok("鏌ヨ鎴愬姛").add(taskDetls);
@@ -2990,34 +3056,69 @@
                     .eq("doc_type", 5)
                     .eq("number", locDetl.getOrderNo()));
             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;
+                List<OrderPakin> orderPakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>()
+                        .eq("doc_type", 7)
+                        .eq("order_no", locDetl.getOrderNo()));
+                if (Objects.isNull(orderPakins) || orderPakins.isEmpty()) {
+                    throw new CoolException("鍗曟嵁淇℃伅涓嶅瓨鍦ㄦ垨宸蹭笂鎶ュ畬鎴愶紒锛�");
                 }
-                locDetl.setMemo(orderPakout.getShipCode());
-                locDetl.setOrderNo(orderPakout.getOrderNo());
+                for (OrderPakin orderPakout : orderPakins) {
+                    OrderDetlPakin orderDetl = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>()
+                            .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());
+                    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.setMatnr(orderDetl.getMatnr());
+                    locDto.setMaktx(orderDetl.getMaktx());
+                    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);
+                }
+            } else {
+                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());
 
-                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);
+                    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.setMatnr(orderDetl.getMatnr());
+                    locDto.setMaktx(orderDetl.getMaktx());
+                    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());
         });
 
@@ -3043,11 +3144,15 @@
 //        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)) {
-            LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("dev_no", params.getOrgSite()));
+//        BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
+//                .eq("dev_no", params.getOrgSite())
+//                .eq("barcode", params.getCarBarcode()));
+        List<BasStationDetl> stationDetls = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>()
+                .eq(!Cools.isEmpty(params.getMatnr()), "matnr", params.getMatnr())
+                .eq(!Cools.isEmpty(params.getCarBarcode()),"zpallet", params.getCarBarcode())
+                .eq(!Cools.isEmpty(params.getOrgSite()),"dev_no", params.getOrgSite()));
+        if (Objects.isNull(stationDetls) || stationDetls.isEmpty()) {
+            LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", params.getOrgSite()));
             if (!Objects.isNull(locCache)) {
                 BasAreas whsTypeId = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_IN_CACHE.type));
                 if (Objects.isNull(whsTypeId)) {
@@ -3055,15 +3160,15 @@
                 }
                 List<LocDetl>  locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
                                 .eq("area_id", whsTypeId.getId())
-                        .eq("dev_no", params.getOrgSite()));
+                        .eq("loc_no", params.getOrgSite()));
                 if (!locDetls.isEmpty()) {
                     return R.ok().add(locDetls);
                 }
             }
         } else {
-            List<BasStationDetl> stationDetls = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>()
-                    .like(!Cools.isEmpty(params.getMatnr()), "matnr", params.getMatnr())
-                    .eq("dev_no", station.getDevNo()));
+//            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);
             }
@@ -3167,9 +3272,10 @@
     public void generateAgvTaskByTc(List<LocDto> locDtos) {
         List<LocDto> locDtoArrayList = new ArrayList<>();
         for (LocDto locDto : locDtos) {
-            if (locDto.getFrozen() != 1 && locDto.getFrozenLoc() != 1) {
-                locDtoArrayList.add(locDto);
-            }
+//            if (locDto.getFrozen() != 1 && locDto.getFrozenLoc() != 1) {
+//
+//            }
+            locDtoArrayList.add(locDto);
         }
         locDtos = locDtoArrayList;
         if (Cools.isEmpty(locDtos)) {
@@ -3300,7 +3406,7 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R getEmptyOutStock(AgvCallParams params) {
+    public  R getEmptyOutStock(AgvCallParams params) {
         if (Objects.isNull(params.getOrgSite())) {
             return R.error("鎵樼洏绫诲瀷涓嶈兘涓虹┖锛侊紒");
         }

--
Gitblit v1.9.1