From e711c834aec2293c53b07efe53e81e3573c289b6 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期三, 01 四月 2026 11:42:44 +0800
Subject: [PATCH] lsh#

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java |  178 ++++++++++++++++++++++++++++-------------------------------
 1 files changed, 85 insertions(+), 93 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
index 46c4d30..d999743 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
@@ -88,21 +88,6 @@
         return !Objects.isNull(loc) ? loc.getCode() : null;
     }
 
-
-    /**
-     * @param
-     * @return
-     * @author Ryan
-     * @description 鑾峰彇鐩爣绔欑偣
-     * @time 2025/3/31 09:49
-     */
-    public static String getTargetSite() {
-        //TODO 绔欑偣绛栫暐鍚庣画鎺掓湡
-        DeviceSiteService deviceSite = SpringUtils.getBean(DeviceSiteService.class);
-        DeviceSite loc = deviceSite.getOne(new LambdaQueryWrapper<DeviceSite>().eq(DeviceSite::getStatus, 1), false);
-        return !Objects.isNull(loc) ? loc.getSite() : null;
-    }
-
     /**
      * 鍑哄簱绛栫暐锛�--銆堟晥鐜囦紭鍖栥��
      *
@@ -172,12 +157,10 @@
      * @param waveRule
      * @return
      */
-    public static List<OrderOutItemDto> getOutOrderList(List<WaveToLocParams> params, WaveRule waveRule) {
+    public static List<OrderOutItemDto> getOutOrderList(List<WaveToLocParams> params, WaveRule waveRule,String stationId,String locCode) {
         LocService locService = SpringUtils.getBean(LocService.class);
         LocItemService locItemService = SpringUtils.getBean(LocItemService.class);
-        DeviceSiteService deviceSiteService = SpringUtils.getBean(DeviceSiteService.class);
         BasStationAreaService basStationAreaService = SpringUtils.getBean(BasStationAreaService.class);
-//        List<BasStationArea> basStationAreas = basStationAreaService.list(new LambdaQueryWrapper<>());//
         List<Loc> locList = new  ArrayList<>();
         List<OrderOutItemDto> list = new ArrayList<>();
         //涓嶈绔欑偣閲嶅浣跨敤闂
@@ -203,6 +186,11 @@
             }
             for (LocItem locItem : locItems) {
                 Loc loc = locService.getById(locItem.getLocId());
+                if (!Cools.isEmpty(locCode) || !Cools.isEmpty(stationId)) {
+                    if (!loc.getCode().equals(locCode)){
+                        continue;
+                    }
+                }
                 List<LocItem> itemList = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
 
                 if (issued.doubleValue() > 0 && locList.contains(loc)) {
@@ -231,7 +219,7 @@
 //                        orderOutItemDto.setLocItem(locItem);
                         orderOutItemDto.setLoc(loc);
                         orderOutItemDto.getLocItemList().add(locItem);
-                        BasContainer containerType = getContainerType(loc.getBarcode());
+                        BasContainer containerType = new WarehouseLocationRetrievalUtil().getContainerByBarcode(loc.getBarcode());
                         if (Cools.isEmpty(containerType)){
                             continue;
                         }
@@ -243,78 +231,101 @@
                                 .apply("JSON_CONTAINS(container_type, {0}) = 1", containerType.getContainerType().toString())//瀹瑰櫒绫诲瀷
                                 .eq(BasStationArea::getDeleted, 0));
 //                                .apply("JSON_CONTAINS(station_alias, '\"{0}\"') = 1", null)//鍖哄煙鍖呭惈绔欑偣闆�
-                        if (basStationAreas.isEmpty()){
-                            throw new CoolException("鏈壘鍒扮鍚堟潯浠剁珯鐐癸紒锛侊紒璇锋鏌ュ簱鍖洪厤缃紒锛侊紒");
-                        }
-                        List<String> targSiteAreaList = new ArrayList<>();
-                        for (BasStationArea basStationArea : basStationAreas) {
-                            if (basStationArea.getStationAlias().isEmpty()){
-                                continue;
-                            }
-                            targSiteAreaList.add(basStationArea.getId().toString());
-                        }
-                        if (targSiteAreaList.isEmpty()){
-                            throw new CoolException("鏈壘鍒扮鍚堟潯浠剁珯鐐癸紒锛侊紒璇锋鏌ュ簱鍖洪厤缃紒锛侊紒");
-                        }
-                        int count = 0;
-                        for (BasStationArea basStationArea : basStationAreas) {
-                            count++;
-                            if (!basStationArea.getStationAlias().isEmpty()) {
-                                List<OrderOutItemDto.staListDto> maps = new ArrayList<>();
-                                for (String site : basStationArea.getStationAlias()) {
-                                    OrderOutItemDto.staListDto staListDto = new OrderOutItemDto.staListDto();
-                                    staListDto.setStaNo(site);
-                                    staListDto.setStaName(site);
-                                    maps.add(staListDto);
+                        if (!basStationAreas.isEmpty() && Cools.isEmpty(stationId)){
+                            List<String> targSiteAreaList = new ArrayList<>();
+                            for (BasStationArea basStationArea : basStationAreas) {
+                                if (basStationArea.getStationAliasStaNo().isEmpty()){
+                                    continue;
                                 }
-                                orderOutItemDto.setStaNos(maps);
-                                //鑾峰彇婊¤冻鏉′欢绔欑偣
-                                Set<String> stationSet = new HashSet<>(basStationArea.getStationAlias());
+                                targSiteAreaList.add(basStationArea.getId().toString());
+                            }
+                            if (targSiteAreaList.isEmpty()){
+                                throw new CoolException("鏈壘鍒扮鍚堟潯浠剁珯鐐癸紒锛侊紒璇锋鏌ュ簱鍖洪厤缃紒锛侊紒");
+                            }
+                            int count = 0;
+                            for (BasStationArea basStationArea : basStationAreas) {
+                                count++;
+                                if (!basStationArea.getStationAliasStaNo().isEmpty()) {
+                                    List<OrderOutItemDto.staListDto> maps = new ArrayList<>();
+                                    for (String site : basStationArea.getStationAliasStaNo()) {
+                                        OrderOutItemDto.staListDto staListDto = new OrderOutItemDto.staListDto();
+                                        staListDto.setStaNo(site);
+                                        staListDto.setStaName(site);
+                                        maps.add(staListDto);
+                                    }
+                                    orderOutItemDto.setStaNos(maps);
+                                    //鑾峰彇婊¤冻鏉′欢绔欑偣
+                                    Set<String> stationSet = new HashSet<>(basStationArea.getStationAliasStaNo());
 //                                Set<String> stationSet = basStationArea.getStationAlias().stream().collect(Collectors.toSet());
 //                                Set<String> stationSet = deviceSites.stream().map(DeviceSite::getSite).collect(Collectors.toSet());
-                                //宸蹭娇鐢ㄧ珯鐐�
-                                Set<String> stas = stations.stream().map(BasStation::getStationName).collect(Collectors.toSet());
-                                if (stas.size() == maps.size()) {
-                                    stations = new ArrayList<>();
-                                    stas = stations.stream().map(BasStation::getStationName).collect(Collectors.toSet());
-                                }
-                                BasStationService basStationService = SpringUtils.getBean(BasStationService.class);
-                                BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
-                                        .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
-                                        .in(BasStation::getStationName, stationSet)
-                                        .notIn(!stas.isEmpty(), BasStation::getStationName, stas)
-                                        .last("LIMIT 1"));
-                                if (!Objects.isNull(basStation)) {
-                                    stations.add(basStation);
-                                }
-
-                                if (count == basStationAreas.size()) {
+                                    //宸蹭娇鐢ㄧ珯鐐�
+                                    Set<String> stas = stations.stream().map(BasStation::getStationName).collect(Collectors.toSet());
+                                    if (stas.size() == maps.size()) {
+                                        stations = new ArrayList<>();
+                                        stas = stations.stream().map(BasStation::getStationName).collect(Collectors.toSet());
+                                    }
+                                    BasStationService basStationService = SpringUtils.getBean(BasStationService.class);
+                                    BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+                                            .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+                                            .in(BasStation::getStationName, stationSet)
+                                            .notIn(!stas.isEmpty(), BasStation::getStationName, stas)
+                                            .last("LIMIT 1"));
                                     if (!Objects.isNull(basStation)) {
-                                        orderOutItemDto.setSiteNo(basStation.getStationName());
+                                        stations.add(basStation);
+                                    }
+
+                                    if (count == basStationAreas.size()) {
+                                        if (!Objects.isNull(basStation)) {
+                                            orderOutItemDto.setTargSiteAreaNow(basStationArea.getStationAreaId());
+                                            orderOutItemDto.setSiteNo(basStation.getStationName());
 //                                        throw new CoolException("绔欓粸涓嶅瓨鍦紒锛�");
-                                    } else if (!stas.isEmpty()) {
-                                        orderOutItemDto.setSiteNo(basStationArea.getStationAlias().get(0));
+                                        } else if (!stas.isEmpty()) {
+                                            orderOutItemDto.setTargSiteAreaNow(basStationArea.getStationAreaId());
+                                            orderOutItemDto.setSiteNo(basStationArea.getStationAliasStaNo().get(0));
+                                        } else {
+                                            throw new CoolException("鏈壘鍒扮鍚堟潯浠剁珯鐐癸紒锛侊紒璇锋鏌ュ簱鍖烘垨鑰呰矾寰勯厤缃紒锛侊紒");
+                                        }
                                     } else {
-                                        throw new CoolException("鏈壘鍒扮鍚堟潯浠剁珯鐐癸紒锛侊紒璇锋鏌ュ簱鍖烘垨鑰呰矾寰勯厤缃紒锛侊紒");
-                                    }
-                                } else {
-                                    if (Objects.isNull(basStation)) {
-                                        continue;
+                                        if (Objects.isNull(basStation)) {
+                                            continue;
 //                                        throw new CoolException("绔欓粸涓嶅瓨鍦紒锛�");
+                                        }
+                                        orderOutItemDto.setTargSiteAreaNow(basStationArea.getStationAreaId());
+                                        orderOutItemDto.setSiteNo(basStation.getStationName());
                                     }
-                                    orderOutItemDto.setSiteNo(basStation.getStationName());
+
                                 }
 
+                                orderOutItemDto.setSource(item.getItemId().toString())
+                                        .setTargSiteAreaList(targSiteAreaList)
+                                        .setSourceId(item.getWaveId().toString());
+                                list.add(orderOutItemDto);
+                                locList.add(loc);
+
+                                issued = issued.subtract(new BigDecimal(locItem.getAnfme().toString()));
+                                break;
                             }
+                        } else if (!Cools.isEmpty(stationId)){
+                            BasStationService basStationService = SpringUtils.getBean(BasStationService.class);
+                            BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, stationId));
+                            if (Objects.isNull(basStation)) {
+                                throw new CoolException("缁戝畾绔欓粸涓嶅瓨鍦紒锛�");
+                            }
+                            boolean available = new WarehouseLocationRetrievalUtil().queryPathIsItAvailableOutArea(loc.getAreaId().toString(), stationId, loc.getBarcode(),"out");
+                            if (!available) {
+                                throw new CoolException("鏈壘鍒扮鍚堟潯浠惰矾寰勶紒锛侊紒璇锋鏌ヨ矾寰勯厤缃紒锛侊紒");
+                            }
+                            orderOutItemDto.setSiteNo(basStation.getStationName());
 
                             orderOutItemDto.setSource(item.getItemId().toString())
-                                    .setTargSiteAreaList(targSiteAreaList)
+                                    .setTargSiteAreaList(new ArrayList<>())
                                     .setSourceId(item.getWaveId().toString());
                             list.add(orderOutItemDto);
-                            locList.add(loc);
 
+                            locList.add(loc);
                             issued = issued.subtract(new BigDecimal(locItem.getAnfme().toString()));
-                            break;
+                        } else {
+                            throw new CoolException("鏈壘鍒扮鍚堟潯浠跺嚭搴撶珯鐐瑰尯鍩燂紒锛侊紒璇锋鏌ュ簱鍖洪厤缃紒锛侊紒");
                         }
                     }
                 }
@@ -322,25 +333,6 @@
         }
 
         return list;
-    }
-
-
-
-
-    //鏍规嵁鏉$爜鑾峰彇瑙勫垯
-    private static BasContainer getContainerType(String barcode) {
-        BasContainerService basContainerService = SpringUtils.getBean(BasContainerService.class);
-        if (Cools.isEmpty(barcode)) {
-            throw new CoolException("瀹瑰櫒鐮佷笉鑳戒负绌�");
-        }
-        List<BasContainer> containers = basContainerService.list(new LambdaQueryWrapper<>());
-        for (BasContainer container : containers) {
-            String codeType = container.getCodeType();  // 鑾峰彇姝e垯琛ㄨ揪寮�
-            if (barcode.matches(codeType)) {  // 鍒ゆ柇鏉$爜鏄惁绗﹀悎杩欎釜姝e垯
-                return container;
-            }
-        }
-        return null;
     }
 
 }

--
Gitblit v1.9.1