From b71ca6faa130dbd9baed68d1402365ccc63e79c2 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期三, 15 四月 2026 16:38:26 +0800
Subject: [PATCH] lsh#

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java |   77 ++++++++++++++++++++++++++++++++++++--
 1 files changed, 73 insertions(+), 4 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 f5d8e89..9bcebaa 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
@@ -124,6 +124,39 @@
         return locItems;
     }
 
+    /**
+     * 鍑哄簱绛栫暐锛�--銆堟晥鐜囦紭鍖栥��
+     *
+     * @param matnrCode
+     * @param splrBatch
+     * @param anfme
+     * @return
+     */
+    public static List<LocItem> getEfficiencyFirstItemList(String matnrCode, String splrBatch, Double anfme,String locCode) {
+        LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();
+        locItemQueryWrapper.eq(LocItem::getMatnrCode, matnrCode);
+        if (!Cools.isEmpty(locCode)){
+            locItemQueryWrapper.eq(LocItem::getLocCode, locCode);
+        }
+        locItemQueryWrapper.eq(StringUtils.isNotBlank(splrBatch), LocItem::getBatch, splrBatch);
+        String applySql = String.format(
+                "EXISTS (SELECT 1 FROM man_loc ml " +
+                        "WHERE ml.use_status = '%s'" +
+                        "AND ml.id = man_loc_item.loc_id " +
+                        ")",
+                LocStsType.LOC_STS_TYPE_F.type
+        );
+        locItemQueryWrapper.apply(applySql);
+        LocItemService locItemService = SpringUtils.getBean(LocItemService.class);
+        List<LocItem> locItems = locItemService.list(locItemQueryWrapper);
+        locItems.sort(Comparator.comparing((LocItem item) -> !LocUtils.isShallowLoc(item.getLocCode())));
+        List<LocItem> locsSet = locItems.stream().filter(locItem -> locItem.getAnfme().compareTo(anfme) == 0.0).collect(Collectors.toList());
+        if (!locsSet.isEmpty()) {
+            return locsSet;
+        }
+        return locItems;
+    }
+
 
     /**
      * 鍑哄簱绛栫暐锛�--<鍏堣繘鍏堝嚭>
@@ -136,6 +169,41 @@
     public static List<LocItem> getFirstInFirstOutItemList(String matnrCode, String splrBatch, Double anfme) {
         LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();
         locItemQueryWrapper.eq(LocItem::getMatnrCode, matnrCode);
+        locItemQueryWrapper.eq(StringUtils.isNotEmpty(splrBatch), LocItem::getBatch, splrBatch);
+        //濡傛灉鎵规涓嶄负绌猴紝鎸夋壒娆″厛鍚庡嚭搴�
+        if (StringUtils.isNotBlank(splrBatch)) {
+            locItemQueryWrapper.orderByAsc(LocItem::getBatch);
+        } else {
+            locItemQueryWrapper.orderByAsc(LocItem::getCreateTime);
+        }
+        String applySql = String.format(
+                "EXISTS (SELECT 1 FROM man_loc ml " +
+                        "WHERE ml.use_status = '%s'" +
+                        "AND ml.id = man_loc_item.loc_id " +
+                        ")",
+                LocStsType.LOC_STS_TYPE_F.type
+        );
+        locItemQueryWrapper.apply(applySql);
+        LocItemService locItemService = SpringUtils.getBean(LocItemService.class);
+        List<LocItem> locItems = locItemService.list(locItemQueryWrapper);
+        return locItems;
+    }
+
+
+    /**
+     * 鍑哄簱绛栫暐锛�--<鍏堣繘鍏堝嚭>
+     *
+     * @param matnrCode
+     * @param splrBatch
+     * @param anfme
+     * @return
+     */
+    public static List<LocItem> getFirstInFirstOutItemList(String matnrCode, String splrBatch, Double anfme,String locCode) {
+        LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();
+        locItemQueryWrapper.eq(LocItem::getMatnrCode, matnrCode);
+        if (!Cools.isEmpty(locCode)){
+            locItemQueryWrapper.eq(LocItem::getLocCode, locCode);
+        }
         locItemQueryWrapper.eq(StringUtils.isNotEmpty(splrBatch), LocItem::getBatch, splrBatch);
         //濡傛灉鎵规涓嶄负绌猴紝鎸夋壒娆″厛鍚庡嚭搴�
         if (StringUtils.isNotBlank(splrBatch)) {
@@ -180,14 +248,14 @@
             }
             List<LocItem> locItems;
             if (Objects.isNull(waveRule)) {
-                locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme());
+                locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme(),locCode);
             } else {
                 if (WaveRuleType.Efficiency_First.type.equals(waveRule.getType())) {
-                    locItems = LocManageUtil.getEfficiencyFirstItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme());
+                    locItems = LocManageUtil.getEfficiencyFirstItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme(),locCode);
                 } else if (WaveRuleType.First_In_First_Out.type.equals(waveRule.getType())) {
-                    locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme());
+                    locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme(),locCode);
                 } else {
-                    locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme());
+                    locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme(),locCode);
                 }
             }
             for (LocItem locItem : locItems) {
@@ -233,6 +301,7 @@
                                 .apply("cross_zone_area != '[]'")  // 涓嶆槸绌烘暟缁�
                                 .apply("container_type != '[]'")
                                 .apply("station_alias != '[]'")
+                                .apply("station_alias_sta_no != '[]'")
                                 .apply("JSON_CONTAINS(cross_zone_area, {0}) = 1", loc.getAreaId().toString())//鍙墽琛屽簱鍖哄尯鍖哄煙id
                                 .apply("JSON_CONTAINS(container_type, {0}) = 1", containerType.getContainerType().toString())//瀹瑰櫒绫诲瀷
                                 .eq(BasStationArea::getDeleted, 0));

--
Gitblit v1.9.1