From 9d6170903806cb351975c9d68005837aec6a8578 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 19 五月 2025 10:42:17 +0800
Subject: [PATCH] 即时库存功能优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java |   10 +++-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java              |   18 ++++++++
 rsf-admin/src/page/statistics/stockManage/WarehouseAside.jsx                                     |    3 -
 rsf-admin/src/page/statistics/stockManage/WarehouseStockInfo.jsx                                 |    2 
 rsf-admin/src/i18n/en.js                                                                         |    1 
 rsf-admin/src/page/statistics/stockManage/WarehouseStockList.jsx                                 |   39 +++++++++++++++----
 rsf-server/src/main/resources/mapper/manager/WarehouseStockMapper.xml                            |    1 
 7 files changed, 59 insertions(+), 15 deletions(-)

diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index f0e233f..b80aa4b 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -952,6 +952,7 @@
                 unit: 'Unit',
                 anfme: 'Stock Qty',
                 matnrCode: "Matnr Code",
+                warehouse: 'Warehouse',
                 workQty: 'Work Qty',
                 qty: 'Non Stock Qty',
                 splrId: 'supplier',
diff --git a/rsf-admin/src/page/statistics/stockManage/WarehouseAside.jsx b/rsf-admin/src/page/statistics/stockManage/WarehouseAside.jsx
index 4ee352c..0cec498 100644
--- a/rsf-admin/src/page/statistics/stockManage/WarehouseAside.jsx
+++ b/rsf-admin/src/page/statistics/stockManage/WarehouseAside.jsx
@@ -15,9 +15,8 @@
 
 
 const WarehouseAside = () => {
-    const [isSelect, setIsSelect] = useState(false); 
     const isSelected = (value, filters) => {
-        const aggType = filters.aggType || [];
+        const aggType = filters.aggType || ["matnr"];
         return aggType.includes(value.aggType);
     };
 
diff --git a/rsf-admin/src/page/statistics/stockManage/WarehouseStockInfo.jsx b/rsf-admin/src/page/statistics/stockManage/WarehouseStockInfo.jsx
index d540252..703b950 100644
--- a/rsf-admin/src/page/statistics/stockManage/WarehouseStockInfo.jsx
+++ b/rsf-admin/src/page/statistics/stockManage/WarehouseStockInfo.jsx
@@ -235,7 +235,7 @@
 
     const [columns, setColumns] = useState([
         {
-            field: 'warehouse',
+            field: 'warehouse$',
             headerName: translate('table.field.warehouseStock.warehouse'),
             width: 130,
             editable: false,
diff --git a/rsf-admin/src/page/statistics/stockManage/WarehouseStockList.jsx b/rsf-admin/src/page/statistics/stockManage/WarehouseStockList.jsx
index fa57252..3a463e3 100644
--- a/rsf-admin/src/page/statistics/stockManage/WarehouseStockList.jsx
+++ b/rsf-admin/src/page/statistics/stockManage/WarehouseStockList.jsx
@@ -60,13 +60,11 @@
 }));
 
 
+
 const WarehouseStockList = () => {
     const translate = useTranslate();
     const [createDialog, setCreateDialog] = useState(false);
-    const [select, setSelect] = useState({});
-    const [drawerVal, setDrawerVal] = useState(false);
-
-    const filters = [
+    const [filters, setFilters] = useState([
         <SearchInput source="condition" alwaysOn />,
         <NumberInput source="locId" label="table.field.locItem.locId" />,
         <TextInput source="locCode" label="table.field.locItem.locCode" />,
@@ -85,8 +83,9 @@
         <TextInput source="spec" label="table.field.locItem.spec" />,
         <TextInput source="model" label="table.field.locItem.model" />,
         <TextInput source="fieldsIndex" label="table.field.locItem.fieldsIndex" />,
-        <TextInput label="common.field.memo" source="memo" />,
-    ]
+        <TextInput label="common.field.memo" source="memo" />,]);
+    const [select, setSelect] = useState({});
+    const [drawerVal, setDrawerVal] = useState(false);
 
     return (
         <>
@@ -103,6 +102,7 @@
                     resource="warehouse/stock"
                     title={"common.button.detail"}
                     empty={false}
+                    // filter={{aggType: "matnr"}}
                     filters={filters}
                     sort={{ field: "create_time", order: "desc" }}
                     actions={(
@@ -119,6 +119,7 @@
                         setDrawerVal={setDrawerVal}
                         setCreateDialog={setCreateDialog}
                         setSelect={setSelect}
+                        filters={filters}
                     />
                 </List>
                 <WarehouseStockInfo
@@ -138,9 +139,19 @@
 
 export default WarehouseStockList;
 
+const PaginatedRowNumber = () => {
+    const record = useRecordContext();
+    const { page, perPage } = useListContext();
+    const index = record.__tmp_index !== undefined ? record.__tmp_index : 0;
+    //   const index = record.__tmp_index; // react-admin 鍐呴儴浣跨敤鐨勪复鏃剁储寮�
+    return <span>{(page - 1) * perPage + index + 1}</span>;
+};
+
+
 
 const DynamicFields = (props) => {
-    const { setDrawerVal, setCreateDialog, setSelect } = props
+    const index = 1;
+    const { setDrawerVal, setCreateDialog, setSelect, filters } = props
     const translate = useTranslate();
     const notify = useNotify();
     const [columns, setColumns] = useState([]);
@@ -166,6 +177,7 @@
                 <NumberField source="workQty" label="table.field.warehouseStock.qty" />,
                 <TextField source="spec" label="table.field.warehouseStock.spec" />,
                 <TextField source="model" label="table.field.warehouseStock.model" />,
+                <TextField source="warehouse$" label="table.field.warehouseStock.warehouse" />,
                 <TextField source="batch" label="table.field.warehouseStock.batch" />,
                 <TextField source="unit" label="table.field.warehouseStock.unit" />,
                 <TextField source="fieldsIndex" label="table.field.warehouseStock.fieldsIndex" />,
@@ -180,6 +192,18 @@
                 </WrapperField>
             ]
             setColumns([...arr, ...fields, ...lastArr]);
+
+            data.map(el => {
+                var i = 0;
+                filters.map((item) => {
+                    if (item.key === el.fields) {
+                        i = 1;
+                    }
+                })
+                i === 0 && filters.push(<TextInput key={el.fields} source={el.fields} label={el.fieldsAlise} />)
+            })
+            // setFilters([...filters, ...inputFields])
+
         } else {
             notify(msg);
         }
@@ -216,7 +240,6 @@
 const HistoriesButton = ({ setDrawerVal, setSelect }) => {
     const record = useRecordContext();
     const { filterValues } = useListContext();
-
     const historyClick = (event) => {
         event.stopPropagation();
         setDrawerVal(true)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java
index 1fc48ed..58724db 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java
@@ -11,6 +11,7 @@
 import com.vincent.rsf.server.manager.controller.params.WarehouseStockParam;
 import com.vincent.rsf.server.manager.entity.StockItem;
 import com.vincent.rsf.server.manager.entity.ViewStockManage;
+import com.vincent.rsf.server.manager.entity.WarehouseAreasItem;
 import com.vincent.rsf.server.manager.enums.ViewStockType;
 import com.vincent.rsf.server.manager.service.WarehouseStockService;
 import com.vincent.rsf.server.system.controller.BaseController;
@@ -44,7 +45,7 @@
         BaseParam baseParam = buildParam(param, BaseParam.class);
         PageParam<ViewStockManage, BaseParam> pageParam = new PageParam<>(baseParam, ViewStockManage.class);
         WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class);
-        String type = stockParam.getAggType();
+        String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType();
         ViewStockManage stock = stockParam.getStock();
         QueryWrapper<ViewStockManage> wrapper = new QueryWrapper<>();
 
@@ -59,6 +60,9 @@
         } else {
             wrapper.groupBy("matnr_id");
         }
+
+        FieldsUtils.setFieldsFilters(wrapper, pageParam, ViewStockManage.class);
+
         IPage<ViewStockManage> pageResult = warehouseStockService.pageByStock(pageParam, wrapper);
         List<ViewStockManage> records = pageResult.getRecords();
         for (ViewStockManage record : records) {
@@ -82,7 +86,7 @@
         BaseParam baseParam = buildParam(param, BaseParam.class);
         PageParam<StockItem, BaseParam> pageParam = new PageParam<>(baseParam, StockItem.class);
         WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class);
-        String type = stockParam.getAggType();
+        String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType();
         ViewStockManage stock = stockParam.getStock();
         QueryWrapper<StockItem> wrapper = new QueryWrapper<>();
 
@@ -120,7 +124,7 @@
         BaseParam baseParam = buildParam(param, BaseParam.class);
         PageParam<ViewStockManage, BaseParam> pageParam = new PageParam<>(baseParam, ViewStockManage.class);
         WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class);
-        String type = stockParam.getAggType();
+        String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType();
         if (Objects.isNull(type)) {
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java
index 572b579..6133efe 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java
@@ -1,6 +1,10 @@
 package com.vincent.rsf.server.manager.entity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.common.SpringUtils;
+import com.vincent.rsf.server.manager.service.MatnrService;
+import com.vincent.rsf.server.manager.service.WarehouseService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
@@ -28,7 +32,6 @@
     private String locCode;
 
     @ApiModelProperty("浠撳簱")
-    @TableField(exist = false)
     private String warehouse;
 
     @ApiModelProperty("鍗曟嵁绫诲瀷")
@@ -92,4 +95,17 @@
     @TableField(exist = false)
     private Map<String, String> extendFields;
 
+
+    public String getWarehouse$(){
+        WarehouseService service = SpringUtils.getBean(WarehouseService.class);
+        Warehouse warehouse = service.getById(this.warehouse);
+        if (!Cools.isEmpty(warehouse)){
+            return String.valueOf(warehouse.getName());
+        }
+        return null;
+    }
+
+
 }
+
+
diff --git a/rsf-server/src/main/resources/mapper/manager/WarehouseStockMapper.xml b/rsf-server/src/main/resources/mapper/manager/WarehouseStockMapper.xml
index e0ccacc..1f3ada5 100644
--- a/rsf-server/src/main/resources/mapper/manager/WarehouseStockMapper.xml
+++ b/rsf-server/src/main/resources/mapper/manager/WarehouseStockMapper.xml
@@ -5,6 +5,7 @@
         SELECT id,
                loc_id,
                loc_code,
+               warehouse,
                type,
                order_item_id,
                wk_type,

--
Gitblit v1.9.1