From 228b881e5a893ec010a194ac42011a4169d0c590 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期二, 21 四月 2026 14:24:15 +0800
Subject: [PATCH] 料箱码查询优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 51 insertions(+), 9 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
index 638612a..8a16d7e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
@@ -13,13 +13,16 @@
 import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.common.utils.FieldsUtils;
 import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
+import com.vincent.rsf.server.manager.entity.Loc;
 import com.vincent.rsf.server.manager.entity.LocItem;
+import com.vincent.rsf.server.manager.entity.ViewStockManage;
 import com.vincent.rsf.server.manager.enums.TaskResouceType;
 import com.vincent.rsf.server.manager.service.LocItemService;
 import com.vincent.rsf.server.manager.service.LocService;
 import com.vincent.rsf.server.system.controller.BaseController;
 import com.vincent.rsf.server.manager.enums.LocStsType;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -40,16 +43,43 @@
     public R page(@RequestBody Map<String, Object> map) {
         BaseParam baseParam = buildParam(map, BaseParam.class);
         PageParam<LocItem, BaseParam> pageParam = new PageParam<>(baseParam, LocItem.class);
+        // 搴撲綅鐘舵�佺瓫閫夛細鍏宠仈 man_loc锛屼笉鑳戒綔涓� man_loc_item 瀛楁鍙備笌 buildWrapper
+        Object useStatus = map.get("useStatus");
+        Object barcodeFilter = map.get("barcode");
+        if (pageParam.getWhere() != null && pageParam.getWhere().getMap() != null) {
+            pageParam.getWhere().getMap().remove("useStatus");
+            pageParam.getWhere().getMap().remove("barcode");
+        }
+        QueryWrapper<LocItem> wrapper = pageParam.buildWrapper(true);
+        if (useStatus != null && StringUtils.isNotBlank(useStatus.toString())) {
+            wrapper.apply("EXISTS (SELECT 1 FROM man_loc ml WHERE ml.id = man_loc_item.loc_id AND ml.use_status = {0} AND ml.deleted = 0)",
+                    useStatus.toString().trim());
+        }
+        if (barcodeFilter != null && StringUtils.isNotBlank(barcodeFilter.toString())) {
+            wrapper.apply("EXISTS (SELECT 1 FROM man_loc ml WHERE ml.id = man_loc_item.loc_id AND ml.barcode = {0} AND ml.deleted = 0)",
+                    barcodeFilter.toString().trim());
+        }
+        FieldsUtils.setFieldsFilters(wrapper, pageParam, LocItem.class);
 
         /**鎷兼帴鎵╁睍瀛楁*/
-        PageParam<LocItem, BaseParam> page = locItemService.page(pageParam, pageParam.buildWrapper(true));
+        PageParam<LocItem, BaseParam> page = locItemService.page(pageParam, wrapper);
         List<LocItem> records = page.getRecords();
         for (LocItem record : records) {
             if (!Objects.isNull(record.getFieldsIndex())) {
                 Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
                 record.setExtendFields(fields);
             }
+            // 濉厖搴撲綅鐘舵�侊紝渚夸簬鍒楄〃灞曠ず
+            if (record.getLocId() != null) {
+                Loc loc = locService.getById(record.getLocId());
+                if (loc != null) {
+                    record.setLocUseStatus(loc.getUseStatus());
+                    record.setLocUseStatus$(loc.getUseStatus$());
+                    record.setBarcode(loc.getBarcode());
+                }
+            }
         }
+        locItemService.fillSpecModelFromMatnrForRecords(records);
         page.setRecords(records);
 
         return R.ok().add(page);
@@ -60,15 +90,18 @@
     public R locUseOPage(@RequestBody Map<String, Object> map) {
         BaseParam baseParam = buildParam(map, BaseParam.class);
         PageParam<LocItem, BaseParam> pageParam = new PageParam<>(baseParam, LocItem.class);
+        Object barcodeFilter = map.get("barcode");
+        if (pageParam.getWhere() != null && pageParam.getWhere().getMap() != null) {
+            pageParam.getWhere().getMap().remove("barcode");
+        }
         QueryWrapper<LocItem> locItemQueryWrapper = pageParam.buildWrapper(true);
-        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);
+        if (barcodeFilter != null && StringUtils.isNotBlank(barcodeFilter.toString())) {
+            locItemQueryWrapper.apply("EXISTS (SELECT 1 FROM man_loc ml WHERE ml.id = man_loc_item.loc_id AND ml.barcode = {0} AND ml.deleted = 0)",
+                    barcodeFilter.toString().trim());
+        }
+        locItemQueryWrapper.apply(
+                "EXISTS (SELECT 1 FROM man_loc ml WHERE ml.use_status = {0} AND ml.id = man_loc_item.loc_id AND ml.deleted = 0)",
+                LocStsType.LOC_STS_TYPE_F.type);
         /**鎷兼帴鎵╁睍瀛楁*/
         PageParam<LocItem, BaseParam> page = locItemService.page(pageParam, locItemQueryWrapper);
         List<LocItem> records = page.getRecords();
@@ -77,7 +110,16 @@
                 Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
                 record.setExtendFields(fields);
             }
+            if (record.getLocId() != null) {
+                Loc loc = locService.getById(record.getLocId());
+                if (loc != null) {
+                    record.setLocUseStatus(loc.getUseStatus());
+                    record.setLocUseStatus$(loc.getUseStatus$());
+                    record.setBarcode(loc.getBarcode());
+                }
+            }
         }
+        locItemService.fillSpecModelFromMatnrForRecords(records);
         page.setRecords(records);
 
         return R.ok().add(page);

--
Gitblit v1.9.1