From f95d05316d49bcdd31d022a11d0fc4fbafb040da Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期一, 08 九月 2025 11:40:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInboundController.java      |   21 
 src/main/java/org/jeecg/modules/lsw/entity/LswMaterialOutbound.java                   |    8 
 src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialMapper.java                     |    6 
 src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInboundServiceImpl.java   |   71 +
 src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInbound.java                    |   12 
 src/main/java/org/jeecg/modules/base/mapper/xml/PrinterConfigMapper.xml               |    5 
 src/main/java/org/jeecg/modules/base/model/FactoryModel.java                          |    5 
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java       |  134 +
 src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInventoryController.java    |  193 --
 src/main/java/org/jeecg/modules/base/entity/PrinterConfig.java                        |  101 +
 src/main/java/org/jeecg/modules/base/service/impl/PrinterConfigServiceImpl.java       |   41 
 src/main/java/org/jeecg/modules/cms/controller/CuttingToolController.java             |  294 ++--
 src/main/java/org/jeecg/modules/base/controller/FactoryController.java                |    2 
 src/main/java/org/jeecg/modules/base/mapper/LineSideWarehouseMapper.java              |    6 
 src/main/java/org/jeecg/modules/lsw/entity/LswMaterial.java                           |    1 
 src/main/java/org/jeecg/modules/base/service/IPrinterConfigService.java               |   21 
 src/main/java/org/jeecg/modules/base/controller/LineSideWarehouseController.java      |  289 ++--
 src/main/java/org/jeecg/modules/base/mapper/xml/LineSideWarehouseMapper.xml           |    7 
 src/main/java/org/jeecg/modules/lsw/enums/MaterialOutboundCategory.java               |    8 
 src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialOutboundServiceImpl.java  |    6 
 src/main/java/org/jeecg/modules/wms/request/ReceiveWMSScanItemList.java               |    8 
 src/main/java/org/jeecg/modules/wms/service/MESWebServiceSoap.java                    |   11 
 src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java             |  101 -
 src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java         |   29 
 src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml         |   22 
 src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInventory.java                  |   26 
 src/main/java/org/jeecg/modules/base/model/PrinterModel.java                          |   19 
 src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java          |  282 ++--
 src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialServiceImpl.java          |   42 
 src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java                |   13 
 src/main/java/org/jeecg/modules/lsw/enums/MaterialCategoryEnum.java                   |    2 
 src/main/java/org/jeecg/modules/lsw/enums/MaterialInventoryCategoryEnum.java          |    1 
 src/main/java/org/jeecg/modules/lsw/vo/MaterialInventoryStatisticsVO.java             |   15 
 src/main/java/org/jeecg/modules/base/mapper/PrinterConfigMapper.java                  |   14 
 src/main/java/org/jeecg/modules/base/controller/PrinterConfigController.java          |  186 +++
 src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialMapper.xml                  |   15 
 src/main/java/org/jeecg/modules/base/service/ILineSideWarehouseService.java           |   16 
 pom.xml                                                                               |   26 
 src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java        |    1 
 src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java           |   21 
 src/main/java/org/jeecg/modules/lsw/service/ILswMaterialService.java                  |    5 
 src/main/java/org/jeecg/modules/base/service/impl/LineSideWarehouseServiceImpl.java   |   23 
 src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java                 |    4 
 src/main/java/org/jeecg/modules/lsw/enums/MaterialInboundCategory.java                |   11 
 src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java            |   24 
 db/双林新火炬MES数据库设计.pdma.json                                                            |  848 +++++++++++++-
 src/main/java/org/jeecg/modules/lsw/controller/LswMaterialOutboundController.java     |  176 --
 src/main/java/org/jeecg/modules/wms/dto/MESResponse.java                              |   23 
 src/main/java/org/jeecg/modules/base/entity/LineSideWarehouse.java                    |   19 
 src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java                      |   16 
 src/main/java/org/jeecg/JeecgSystemApplication.java                                   |    4 
 src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java          |  164 --
 src/main/java/org/jeecg/modules/cms/service/ICuttingInboundService.java               |    2 
 src/main/java/org/jeecg/modules/wms/dto/ReceiveWMSScanItemListResponse.java           |    8 
 /dev/null                                                                             |   51 
 src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveDetailService.java         |    3 
 src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java |   42 
 src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java                |    6 
 src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java                |   38 
 src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveDetailMapper.java            |    2 
 60 files changed, 2,235 insertions(+), 1,315 deletions(-)

diff --git "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
index eefeec4..1c568e7 100644
--- "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
+++ "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
@@ -632,7 +632,7 @@
       "#DDE5FF"
     ],
     "DDLToggleCase": "L",
-    "menuWidth": "331px"
+    "menuWidth": "371px"
   },
   "entities": [
     {
@@ -61892,6 +61892,24 @@
           "extProps": {},
           "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
           "id": "2543E9E7-C40B-496B-AF48-D57B01A2B230"
+        },
+        {
+          "defKey": "heat_treatment_flag",
+          "defName": "鐑鐞嗘爣璇�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "6F7C1C5C-D159-41E6-BF9D-54DEEFA79AFF",
+          "id": "7CA68F5B-F30F-4F91-9BBF-1B9A741F44AF"
         }
       ],
       "correlations": [],
@@ -62157,6 +62175,42 @@
           "id": "634556B3-6007-47EF-9E18-B2C20FC7ECDB"
         },
         {
+          "defKey": "original_code",
+          "defName": "鏉ユ簮缂栫爜",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "BE09D493-E183-402D-ACC4-EEA21EB35B8E",
+          "id": "2F160696-FB4C-485A-A60F-A91604E95A9D"
+        },
+        {
+          "defKey": "original_name",
+          "defName": "鏉ユ簮鍚嶇О",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "837ABAD7-8529-40F0-99DB-88FC33B9339F"
+        },
+        {
           "defKey": "factory_id",
           "defName": "浜х嚎ID",
           "comment": "",
@@ -62295,8 +62349,26 @@
           "id": "7ACEF784-3F6B-470B-8BA7-1E38C2125667"
         },
         {
+          "defKey": "inbound_category",
+          "defName": "鍏ュ簱绫诲瀷",
+          "comment": "鐗╂枡鎷夊姩銆佺敓浜т笅绾裤�佺儹澶勭悊銆佸皬鍐呭湀銆佽皟鎷�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "E8325FFD-1C27-4AEB-BC00-F0FD0E1D370A"
+        },
+        {
           "defKey": "receiver",
-          "defName": "鎺ユ敹浜�",
+          "defName": "鍏ュ簱浜�",
           "comment": "",
           "type": "",
           "len": "",
@@ -62314,7 +62386,7 @@
         },
         {
           "defKey": "receive_time",
-          "defName": "鎺ユ敹鏃堕棿",
+          "defName": "鍏ュ簱鏃堕棿",
           "comment": "",
           "type": "",
           "len": "",
@@ -63398,7 +63470,7 @@
           "refDict": "",
           "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
           "extProps": {},
-          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
           "id": "0A646552-E539-44E6-AB49-69CF4BF16522"
         },
         {
@@ -63434,7 +63506,7 @@
           "refDict": "",
           "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
           "extProps": {},
-          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
           "id": "6C143A29-E3B5-4308-A60F-D07E44C58B66"
         },
         {
@@ -65364,8 +65436,8 @@
           "id": "FBAA1CFF-AA71-46F8-B401-4EC0D39B022A"
         },
         {
-          "defKey": "work_order_id",
-          "defName": "宸ュ崟ID",
+          "defKey": "factory_id",
+          "defName": "浜х嚎ID",
           "comment": "",
           "type": "",
           "len": "",
@@ -65379,61 +65451,7 @@
           "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
           "extProps": {},
           "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
-          "id": "F9190578-1B7F-4A04-9F9F-EF15CE3E043C"
-        },
-        {
-          "defKey": "equipment_id",
-          "defName": "璁惧ID",
-          "comment": "",
-          "type": "",
-          "len": "",
-          "scale": "",
-          "primaryKey": false,
-          "notNull": false,
-          "autoIncrement": false,
-          "defaultValue": "",
-          "hideInGraph": false,
-          "refDict": "",
-          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
-          "extProps": {},
-          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
-          "id": "291AF57C-AD4F-4691-BF15-1BDC4629A521"
-        },
-        {
-          "defKey": "process_code",
-          "defName": "宸ュ簭缂栫爜",
-          "comment": "",
-          "type": "",
-          "len": "",
-          "scale": "",
-          "primaryKey": false,
-          "notNull": false,
-          "autoIncrement": false,
-          "defaultValue": "",
-          "hideInGraph": false,
-          "refDict": "",
-          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
-          "extProps": {},
-          "domain": "BE09D493-E183-402D-ACC4-EEA21EB35B8E",
-          "id": "3501D104-6767-40E3-8A99-0BDF17960C29"
-        },
-        {
-          "defKey": "process_name",
-          "defName": "宸ュ簭鍚嶇О",
-          "comment": "",
-          "type": "",
-          "len": "",
-          "scale": "",
-          "primaryKey": false,
-          "notNull": false,
-          "autoIncrement": false,
-          "defaultValue": "",
-          "hideInGraph": false,
-          "refDict": "",
-          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
-          "extProps": {},
-          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
-          "id": "73290052-0C81-442D-BE27-B8CF1496F69E"
+          "id": "2E08DF6D-E39A-4798-BC2A-B56CC7AE66B1"
         },
         {
           "defKey": "material_number",
@@ -69745,6 +69763,706 @@
       "correlations": [],
       "indexes": [],
       "type": "P"
+    },
+    {
+      "id": "A3B555E5-225C-4432-9CB0-05A1C372AB83",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "mes_material_consumption_detail",
+      "defName": "鐗╂枡娑堣�楁槑缁�",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "sysProps": {
+        "nameTemplate": "{defKey}[{defName}]"
+      },
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr1",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr2",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr3",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr4",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr5",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr6",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr7",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr8",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr9",
+          "freeze": false,
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "id",
+          "defName": "涓婚敭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E84CB7D9-BB16-4D0C-B592-8C4384FFAC3B"
+        },
+        {
+          "defKey": "create_by",
+          "defName": "鍒涘缓浜�",
+          "comment": "",
+          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "9D7DA32B-70D5-4F8E-929F-F178796661E6",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"
+        },
+        {
+          "defKey": "create_time",
+          "defName": "鍒涘缓鏃堕棿",
+          "comment": "",
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "6FCE5A8C-426B-4191-B841-C9C529F927DA",
+          "baseType": "89D69E81-EA34-42EE-9FA2-93B8BD27E098"
+        },
+        {
+          "defKey": "order_id",
+          "defName": "璁㈠崟ID",
+          "comment": "鍗婃垚鍝佹姤宸ワ紝鏃犻渶缁戝畾鍒扮敓浜ц鍗�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "refDict": "",
+          "extProps": {},
+          "notes": {},
+          "attr1": "",
+          "attr2": "",
+          "attr3": "",
+          "attr4": "",
+          "attr5": "",
+          "attr6": "",
+          "attr7": "",
+          "attr8": "",
+          "attr9": "",
+          "id": "A9C8CDA4-F073-46FD-AAB4-D6401B7E5E8D",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"
+        },
+        {
+          "defKey": "work_order_id",
+          "defName": "宸ュ崟ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "refDict": "",
+          "extProps": {},
+          "notes": {},
+          "attr1": "",
+          "attr2": "",
+          "attr3": "",
+          "attr4": "",
+          "attr5": "",
+          "attr6": "",
+          "attr7": "",
+          "attr8": "",
+          "attr9": "",
+          "id": "9B945A59-DF7A-4234-8C3C-8AA7BBFE9509",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"
+        },
+        {
+          "defKey": "factory_id",
+          "defName": "浜х嚎ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "refDict": "",
+          "extProps": {},
+          "notes": {},
+          "attr1": "",
+          "attr2": "",
+          "attr3": "",
+          "attr4": "",
+          "attr5": "",
+          "attr6": "",
+          "attr7": "",
+          "attr8": "",
+          "attr9": "",
+          "id": "70FEFA77-AEE0-45C9-BAFE-D5B6E07AE987",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"
+        },
+        {
+          "defKey": "reporting_id",
+          "defName": "鎶ュ伐ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "C8586134-EFC2-4930-B87D-EFADF765F584"
+        },
+        {
+          "defKey": "loading_id",
+          "defName": "涓婃枡ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "948875D7-C355-4E5F-8129-B3E8C2908594"
+        },
+        {
+          "defKey": "quantity",
+          "defName": "娑堣�楁暟閲�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "1A0BDC09-0792-4174-9E8E-80BE8DF44B8E",
+          "extProps": {},
+          "domain": "FF4459C5-6B45-4DBF-8FC0-E06239BC05B4",
+          "id": "73E2D815-80C9-4A31-BB07-020959BC00DD"
+        }
+      ],
+      "correlations": [],
+      "indexes": [],
+      "type": "P"
+    },
+    {
+      "id": "9A75D273-970F-4B65-BC27-B9208EC1A4F2",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "base_printer_config",
+      "defName": "鎵撳嵃鏈洪厤缃�",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "sysProps": {
+        "nameTemplate": "{defKey}[{defName}]"
+      },
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "freeze": false,
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr1",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr2",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr3",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr4",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr5",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr6",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr7",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr8",
+          "freeze": false,
+          "hideInGraph": true
+        },
+        {
+          "refKey": "attr9",
+          "freeze": false,
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "id",
+          "defName": "涓婚敭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "8012FE29-1A36-475C-85BE-0101BFF82556"
+        },
+        {
+          "defKey": "create_by",
+          "defName": "鍒涘缓浜�",
+          "comment": "",
+          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "B48C2340-15FC-4F3D-A483-BDAD359BC3A2",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"
+        },
+        {
+          "defKey": "create_time",
+          "defName": "鍒涘缓鏃堕棿",
+          "comment": "",
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "F6A6B53B-B7DC-42C1-8394-7A29F47AEB51",
+          "baseType": "89D69E81-EA34-42EE-9FA2-93B8BD27E098"
+        },
+        {
+          "defKey": "update_by",
+          "defName": "鏇存柊浜�",
+          "comment": "",
+          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "CE4DDFE2-4785-434B-AB6A-31C4CE82FF4A",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"
+        },
+        {
+          "defKey": "update_time",
+          "defName": "鏇存柊鏃堕棿",
+          "comment": "",
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "59A6D7C4-1C85-4AB9-A113-137122C8D310",
+          "baseType": "89D69E81-EA34-42EE-9FA2-93B8BD27E098"
+        },
+        {
+          "defKey": "del_flag",
+          "defName": "鍒犻櫎鏍囪",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "1D764C4A-6F9F-421E-B11A-6F3E23B51811",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "1F9CD124-0E52-48AE-BE33-B2CDE2BD46CF"
+        },
+        {
+          "defKey": "printer_name",
+          "defName": "鍚嶇О",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "EE70D71D-41B4-4B75-A190-0C7F0F692408"
+        },
+        {
+          "defKey": "printer_ip",
+          "defName": "IP鍦板潃",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
+          "id": "9733F3FF-86BC-43B5-81F9-6F12BF7AAF97"
+        },
+        {
+          "defKey": "port_number",
+          "defName": "绔彛",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "1D764C4A-6F9F-421E-B11A-6F3E23B51811",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "7BF0DB7E-0BC4-4604-B3B1-C0ABA8A1A090"
+        },
+        {
+          "defKey": "printer_model",
+          "defName": "鍨嬪彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "BE09D493-E183-402D-ACC4-EEA21EB35B8E",
+          "id": "F3D2ED9C-6CE8-4DB5-A656-B2C1BB2A5249"
+        },
+        {
+          "defKey": "printer_status",
+          "defName": "鐘舵��",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
+          "id": "893D3D4B-C208-4147-909E-BBFF8FF7FB23"
+        }
+      ],
+      "correlations": [],
+      "indexes": [],
+      "type": "P"
     }
   ],
   "views": [],
@@ -70586,7 +71304,8 @@
         "D16FD5E0-8B16-4C0E-AD67-6E5C2FED1A65",
         "5835D3E9-4B10-48DC-B116-584E447AA201",
         "23C6B8F0-0010-4453-B3C2-9305746C37AB",
-        "D3263A0C-1D6A-453A-B933-86651B5566FE"
+        "D3263A0C-1D6A-453A-B933-86651B5566FE",
+        "A3B555E5-225C-4432-9CB0-05A1C372AB83"
       ],
       "refViews": [],
       "refDiagrams": [],
@@ -70659,7 +71378,8 @@
         "CDDBE073-093D-4D6A-AB29-0B3538417EBA",
         "0CE184D5-6F92-4384-AE88-96C81A581F9E",
         "B34D63A4-F6E7-407B-834F-ED01C13EDA80",
-        "F5104CC1-0137-4EFD-8122-3593A9E005C4"
+        "F5104CC1-0137-4EFD-8122-3593A9E005C4",
+        "9A75D273-970F-4B65-BC27-B9208EC1A4F2"
       ],
       "refViews": [],
       "refDiagrams": [],
diff --git a/pom.xml b/pom.xml
index 060cc41..5715852 100644
--- a/pom.xml
+++ b/pom.xml
@@ -59,7 +59,7 @@
         <log4j2.version>2.17.0</log4j2.version>
         <logback.version>1.2.9</logback.version>
         <!-- webservice -->
-        <cxf.version>3.2.4</cxf.version>
+        <cxf.version>3.5.2</cxf.version>
     </properties>
 
     <repositories>
@@ -227,21 +227,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web-services</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
-            <version>${cxf.version}</version>
-        </dependency>
 
         <!-- CXF webservice -->
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
-            <version>${cxf.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-rt-transports-http</artifactId>
             <version>${cxf.version}</version>
         </dependency>
 
@@ -268,6 +258,10 @@
                 <exclusion>
                     <artifactId>commons-beanutils</artifactId>
                     <groupId>commons-beanutils</groupId>
+                </exclusion>
+                <exclusion>
+                    <groupId>net.sf.saxon</groupId>
+                    <artifactId>Saxon-HE</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
@@ -527,11 +521,11 @@
             <version>0.8</version>
         </dependency>
         <!--xml瑙f瀽鍖咃細濡傛灉椤圭洰涓凡鏈夛紝寮曡捣鍐茬獊锛屽彲娉ㄩ噴-->
-        <dependency>
-            <groupId>xerces</groupId>
-            <artifactId>xercesImpl</artifactId>
-            <version>2.12.0</version>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>xerces</groupId>-->
+<!--            <artifactId>xercesImpl</artifactId>-->
+<!--            <version>2.12.0</version>-->
+<!--        </dependency>-->
 
         <!--寮曞叆sap渚濊禆-->
         <dependency>
diff --git a/src/main/java/org/jeecg/JeecgSystemApplication.java b/src/main/java/org/jeecg/JeecgSystemApplication.java
index 06fff58..bb8b518 100644
--- a/src/main/java/org/jeecg/JeecgSystemApplication.java
+++ b/src/main/java/org/jeecg/JeecgSystemApplication.java
@@ -1,7 +1,6 @@
 package org.jeecg;
 
 import lombok.extern.slf4j.Slf4j;
-import org.apache.cxf.spring.boot.autoconfigure.CxfAutoConfiguration;
 import org.flowable.spring.boot.eventregistry.EventRegistryServicesAutoConfiguration;
 import org.jeecg.common.util.oConvertUtils;
 import org.springframework.boot.SpringApplication;
@@ -23,8 +22,7 @@
 */
 @Slf4j
 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, MongoAutoConfiguration.class,
-        ManagementWebSecurityAutoConfiguration.class, EventRegistryServicesAutoConfiguration.class,
-        CxfAutoConfiguration.class})
+        ManagementWebSecurityAutoConfiguration.class, EventRegistryServicesAutoConfiguration.class})
 public class JeecgSystemApplication extends SpringBootServletInitializer {
 
     @Override
diff --git a/src/main/java/org/jeecg/modules/base/controller/FactoryController.java b/src/main/java/org/jeecg/modules/base/controller/FactoryController.java
index d9f5488..ed9c6b6 100644
--- a/src/main/java/org/jeecg/modules/base/controller/FactoryController.java
+++ b/src/main/java/org/jeecg/modules/base/controller/FactoryController.java
@@ -226,7 +226,7 @@
 	 public Result<List<FactoryModel>> queryUserProductionLineList() {
 		 List<Factory> factoryList = factoryService.queryUserProductionLineList();
 		 List<FactoryModel> factoryModels = factoryList.stream()
-				 .map(factory -> new FactoryModel(factory.getId(), factory.getFactoryName()))
+				 .map(factory -> new FactoryModel(factory.getId(), factory.getFactoryName(), factory.getProductionType()))
 				 .collect(Collectors.toList());
 		 return Result.ok(factoryModels);
 	 }
diff --git a/src/main/java/org/jeecg/modules/base/controller/LineSideWarehouseController.java b/src/main/java/org/jeecg/modules/base/controller/LineSideWarehouseController.java
index 0f5d3c9..b52a108 100644
--- a/src/main/java/org/jeecg/modules/base/controller/LineSideWarehouseController.java
+++ b/src/main/java/org/jeecg/modules/base/controller/LineSideWarehouseController.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.base.controller;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -9,6 +10,7 @@
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.query.QueryGenerator;
@@ -38,126 +40,126 @@
 import io.swagger.annotations.ApiOperation;
 import org.jeecg.common.aspect.annotation.AutoLog;
 
- /**
+/**
  * @Description: 绾胯竟浠撳簱淇℃伅
  * @Author: jeecg-boot
- * @Date:   2025-06-24
+ * @Date: 2025-06-24
  * @Version: V1.0
  */
-@Api(tags="绾胯竟浠撳簱淇℃伅")
+@Api(tags = "绾胯竟浠撳簱淇℃伅")
 @RestController
 @RequestMapping("/base/lineSideWarehouse")
 @Slf4j
 public class LineSideWarehouseController extends JeecgController<LineSideWarehouse, ILineSideWarehouseService> {
-	@Autowired
-	private ILineSideWarehouseService lineSideWarehouseService;
-	
-	/**
-	 * 鍒嗛〉鍒楄〃鏌ヨ
-	 *
-	 * @param lineSideWarehouse
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	//@AutoLog(value = "绾胯竟浠撳簱淇℃伅-鍒嗛〉鍒楄〃鏌ヨ")
-	@ApiOperation(value="绾胯竟浠撳簱淇℃伅-鍒嗛〉鍒楄〃鏌ヨ", notes="绾胯竟浠撳簱淇℃伅-鍒嗛〉鍒楄〃鏌ヨ")
-	@GetMapping(value = "/list")
-	public Result<IPage<LineSideWarehouse>> queryPageList(LineSideWarehouse lineSideWarehouse,
-								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-								   HttpServletRequest req) {
-		QueryWrapper<LineSideWarehouse> queryWrapper = QueryGenerator.initQueryWrapper(lineSideWarehouse, req.getParameterMap());
-		Page<LineSideWarehouse> page = new Page<LineSideWarehouse>(pageNo, pageSize);
-		IPage<LineSideWarehouse> pageList = lineSideWarehouseService.page(page, queryWrapper);
-		return Result.OK(pageList);
-	}
-	
-	/**
-	 *   娣诲姞
-	 *
-	 * @param lineSideWarehouse
-	 * @return
-	 */
-	@AutoLog(value = "绾胯竟浠撳簱淇℃伅-娣诲姞")
-	@ApiOperation(value="绾胯竟浠撳簱淇℃伅-娣诲姞", notes="绾胯竟浠撳簱淇℃伅-娣诲姞")
-	//@RequiresPermissions("org.jeecg.modules:base_line_side_warehouse:add")
-	@PostMapping(value = "/add")
-	public Result<String> add(@RequestBody LineSideWarehouse lineSideWarehouse) {
-		lineSideWarehouse.setWarehouseStatus(CommonConstant.STATUS_1);
-		lineSideWarehouseService.save(lineSideWarehouse);
-		return Result.OK("娣诲姞鎴愬姛锛�");
-	}
-	
-	/**
-	 *  缂栬緫
-	 *
-	 * @param lineSideWarehouse
-	 * @return
-	 */
-	@AutoLog(value = "绾胯竟浠撳簱淇℃伅-缂栬緫")
-	@ApiOperation(value="绾胯竟浠撳簱淇℃伅-缂栬緫", notes="绾胯竟浠撳簱淇℃伅-缂栬緫")
-	//@RequiresPermissions("org.jeecg.modules:base_line_side_warehouse:edit")
-	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-	public Result<String> edit(@RequestBody LineSideWarehouse lineSideWarehouse) {
-		lineSideWarehouseService.updateById(lineSideWarehouse);
-		return Result.OK("缂栬緫鎴愬姛!");
-	}
-	
-	/**
-	 *   閫氳繃id鍒犻櫎
-	 *
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "绾胯竟浠撳簱淇℃伅-閫氳繃id鍒犻櫎")
-	@ApiOperation(value="绾胯竟浠撳簱淇℃伅-閫氳繃id鍒犻櫎", notes="绾胯竟浠撳簱淇℃伅-閫氳繃id鍒犻櫎")
-	//@RequiresPermissions("org.jeecg.modules:base_line_side_warehouse:delete")
-	@DeleteMapping(value = "/delete")
-	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-		lineSideWarehouseService.removeById(id);
-		return Result.OK("鍒犻櫎鎴愬姛!");
-	}
-	
-	/**
-	 *  鎵归噺鍒犻櫎
-	 *
-	 * @param ids
-	 * @return
-	 */
-	@AutoLog(value = "绾胯竟浠撳簱淇℃伅-鎵归噺鍒犻櫎")
-	@ApiOperation(value="绾胯竟浠撳簱淇℃伅-鎵归噺鍒犻櫎", notes="绾胯竟浠撳簱淇℃伅-鎵归噺鍒犻櫎")
-	//@RequiresPermissions("org.jeecg.modules:base_line_side_warehouse:deleteBatch")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		this.lineSideWarehouseService.removeByIds(Arrays.asList(ids.split(",")));
-		return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
-	}
-	
-	/**
-	 * 閫氳繃id鏌ヨ
-	 *
-	 * @param id
-	 * @return
-	 */
-	//@AutoLog(value = "绾胯竟浠撳簱淇℃伅-閫氳繃id鏌ヨ")
-	@ApiOperation(value="绾胯竟浠撳簱淇℃伅-閫氳繃id鏌ヨ", notes="绾胯竟浠撳簱淇℃伅-閫氳繃id鏌ヨ")
-	@GetMapping(value = "/queryById")
-	public Result<LineSideWarehouse> queryById(@RequestParam(name="id",required=true) String id) {
-		LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.getById(id);
-		if(lineSideWarehouse==null) {
-			return Result.error("鏈壘鍒板搴旀暟鎹�");
-		}
-		return Result.OK(lineSideWarehouse);
-	}
+    @Autowired
+    private ILineSideWarehouseService lineSideWarehouseService;
 
     /**
-    * 瀵煎嚭excel
-    *
-    * @param request
-    * @param lineSideWarehouse
-    */
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param lineSideWarehouse
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "绾胯竟浠撳簱淇℃伅-鍒嗛〉鍒楄〃鏌ヨ")
+    @ApiOperation(value = "绾胯竟浠撳簱淇℃伅-鍒嗛〉鍒楄〃鏌ヨ", notes = "绾胯竟浠撳簱淇℃伅-鍒嗛〉鍒楄〃鏌ヨ")
+    @GetMapping(value = "/list")
+    public Result<IPage<LineSideWarehouse>> queryPageList(LineSideWarehouse lineSideWarehouse,
+                                                          @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                          @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                          HttpServletRequest req) {
+        QueryWrapper<LineSideWarehouse> queryWrapper = QueryGenerator.initQueryWrapper(lineSideWarehouse, req.getParameterMap());
+        Page<LineSideWarehouse> page = new Page<LineSideWarehouse>(pageNo, pageSize);
+        IPage<LineSideWarehouse> pageList = lineSideWarehouseService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+    /**
+     *   娣诲姞
+     *
+     * @param lineSideWarehouse
+     * @return
+     */
+    @AutoLog(value = "绾胯竟浠撳簱淇℃伅-娣诲姞")
+    @ApiOperation(value = "绾胯竟浠撳簱淇℃伅-娣诲姞", notes = "绾胯竟浠撳簱淇℃伅-娣诲姞")
+    //@RequiresPermissions("org.jeecg.modules:base_line_side_warehouse:add")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody LineSideWarehouse lineSideWarehouse) {
+        lineSideWarehouse.setWarehouseStatus(CommonConstant.STATUS_1);
+        lineSideWarehouseService.save(lineSideWarehouse);
+        return Result.OK("娣诲姞鎴愬姛锛�");
+    }
+
+    /**
+     *  缂栬緫
+     *
+     * @param lineSideWarehouse
+     * @return
+     */
+    @AutoLog(value = "绾胯竟浠撳簱淇℃伅-缂栬緫")
+    @ApiOperation(value = "绾胯竟浠撳簱淇℃伅-缂栬緫", notes = "绾胯竟浠撳簱淇℃伅-缂栬緫")
+    //@RequiresPermissions("org.jeecg.modules:base_line_side_warehouse:edit")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody LineSideWarehouse lineSideWarehouse) {
+        lineSideWarehouseService.updateById(lineSideWarehouse);
+        return Result.OK("缂栬緫鎴愬姛!");
+    }
+
+    /**
+     *   閫氳繃id鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "绾胯竟浠撳簱淇℃伅-閫氳繃id鍒犻櫎")
+    @ApiOperation(value = "绾胯竟浠撳簱淇℃伅-閫氳繃id鍒犻櫎", notes = "绾胯竟浠撳簱淇℃伅-閫氳繃id鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:base_line_side_warehouse:delete")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        lineSideWarehouseService.removeById(id);
+        return Result.OK("鍒犻櫎鎴愬姛!");
+    }
+
+    /**
+     *  鎵归噺鍒犻櫎
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "绾胯竟浠撳簱淇℃伅-鎵归噺鍒犻櫎")
+    @ApiOperation(value = "绾胯竟浠撳簱淇℃伅-鎵归噺鍒犻櫎", notes = "绾胯竟浠撳簱淇℃伅-鎵归噺鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:base_line_side_warehouse:deleteBatch")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.lineSideWarehouseService.removeByIds(Arrays.asList(ids.split(",")));
+        return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
+    }
+
+    /**
+     * 閫氳繃id鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "绾胯竟浠撳簱淇℃伅-閫氳繃id鏌ヨ")
+    @ApiOperation(value = "绾胯竟浠撳簱淇℃伅-閫氳繃id鏌ヨ", notes = "绾胯竟浠撳簱淇℃伅-閫氳繃id鏌ヨ")
+    @GetMapping(value = "/queryById")
+    public Result<LineSideWarehouse> queryById(@RequestParam(name = "id", required = true) String id) {
+        LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.getById(id);
+        if (lineSideWarehouse == null) {
+            return Result.error("鏈壘鍒板搴旀暟鎹�");
+        }
+        return Result.OK(lineSideWarehouse);
+    }
+
+    /**
+     * 瀵煎嚭excel
+     *
+     * @param request
+     * @param lineSideWarehouse
+     */
     //@RequiresPermissions("org.jeecg.modules:base_line_side_warehouse:exportXls")
     @RequestMapping(value = "/exportXls")
     public ModelAndView exportXls(HttpServletRequest request, LineSideWarehouse lineSideWarehouse) {
@@ -165,42 +167,51 @@
     }
 
     /**
-      * 閫氳繃excel瀵煎叆鏁版嵁
-    *
-    * @param request
-    * @param response
-    * @return
-    */
+     * 閫氳繃excel瀵煎叆鏁版嵁
+     *
+     * @param request
+     * @param response
+     * @return
+     */
     //@RequiresPermissions("base_line_side_warehouse:importExcel")
     @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
     public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
         return super.importExcel(request, response, LineSideWarehouse.class);
     }
 
-	 @AutoLog(value = "绾胯竟搴�-鍚敤&绂佺敤")
-	 @ApiOperation(value = "绾胯竟搴�-鍚敤&绂佺敤", notes = "绾胯竟搴�-鍚敤&绂佺敤")
-	 @PutMapping(value = "/active")
-	 public Result<?> active(@RequestParam(name = "id", required = true) String id) {
-		 LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.getById(id);
-		 if (CommonConstant.STATUS_1.equals(lineSideWarehouse.getWarehouseStatus())) {
-			 lineSideWarehouse.setWarehouseStatus(CommonConstant.STATUS_0);
-		 } else {
-			 lineSideWarehouse.setWarehouseStatus(CommonConstant.STATUS_1);
-		 }
-		 lineSideWarehouseService.updateById(lineSideWarehouse);
-		 return Result.ok("鎿嶄綔鎴愬姛锛�");
-	 }
+    @AutoLog(value = "绾胯竟搴�-鍚敤&绂佺敤")
+    @ApiOperation(value = "绾胯竟搴�-鍚敤&绂佺敤", notes = "绾胯竟搴�-鍚敤&绂佺敤")
+    @PutMapping(value = "/active")
+    public Result<?> active(@RequestParam(name = "id", required = true) String id) {
+        LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.getById(id);
+        if (CommonConstant.STATUS_1.equals(lineSideWarehouse.getWarehouseStatus())) {
+            lineSideWarehouse.setWarehouseStatus(CommonConstant.STATUS_0);
+        } else {
+            lineSideWarehouse.setWarehouseStatus(CommonConstant.STATUS_1);
+        }
+        lineSideWarehouseService.updateById(lineSideWarehouse);
+        return Result.ok("鎿嶄綔鎴愬姛锛�");
+    }
 
 
-	 //@AutoLog(value = "绾胯竟浠撳簱淇℃伅-閫氳繃id鏌ヨ")
-	 @ApiOperation(value="绾胯竟浠撳簱淇℃伅-閫氳繃id鏌ヨ", notes="绾胯竟浠撳簱淇℃伅-閫氳繃id鏌ヨ")
-	 @GetMapping(value = "/queryByFactoryId")
-	 public Result<LineSideWarehouse> queryByFactoryId(@RequestParam(name="factoryId") String factoryId) {
-		 LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.queryByFactoryId(factoryId);
-		 if(lineSideWarehouse==null) {
-			 return Result.error("鏈壘鍒板搴旀暟鎹�");
-		 }
-		 return Result.OK(lineSideWarehouse);
-	 }
+    @ApiOperation(value = "绾胯竟浠撳簱淇℃伅-閫氳繃浜х嚎ID鏌ヨ", notes = "绾胯竟浠撳簱淇℃伅-閫氳繃浜х嚎ID鏌ヨ")
+    @GetMapping(value = "/queryByFactoryId")
+    public Result<LineSideWarehouse> queryByFactoryId(@RequestParam(name = "factoryId") String factoryId) {
+        LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.queryByFactoryId(factoryId);
+        if (lineSideWarehouse == null) {
+            return Result.error("鏈壘鍒板搴旀暟鎹�");
+        }
+        return Result.OK(lineSideWarehouse);
+    }
+
+    @ApiOperation(value = "绾胯竟浠撳簱淇℃伅-閫氳繃浜х嚎鍒嗙被鏌ヨ", notes = "绾胯竟浠撳簱淇℃伅-閫氳繃浜х嚎鍒嗙被鏌ヨ")
+    @GetMapping(value = "/queryByProductionType")
+    public Result<List<LineSideWarehouse>> queryByProductionType(@RequestParam(name = "productionType") String productionType) {
+        List<LineSideWarehouse> list = lineSideWarehouseService.queryByProductionType(productionType);
+        if (list == null) {
+            return Result.OK(Collections.emptyList());
+        }
+        return Result.OK(list);
+    }
 
 }
diff --git a/src/main/java/org/jeecg/modules/base/controller/PrinterConfigController.java b/src/main/java/org/jeecg/modules/base/controller/PrinterConfigController.java
new file mode 100644
index 0000000..34e6869
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/base/controller/PrinterConfigController.java
@@ -0,0 +1,186 @@
+package org.jeecg.modules.base.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.base.entity.Factory;
+import org.jeecg.modules.base.entity.PrinterConfig;
+import org.jeecg.modules.base.model.FactoryModel;
+import org.jeecg.modules.base.model.PrinterModel;
+import org.jeecg.modules.base.service.IPrinterConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+* @Description: 鎵撳嵃鏈洪厤缃俊鎭�
+* @Author: jeecg-boot
+* @Date:   2025-06-24
+* @Version: V1.0
+*/
+@Api(tags="鎵撳嵃鏈洪厤缃俊鎭�")
+@RestController
+@RequestMapping("/base/printerConfig")
+@Slf4j
+public class PrinterConfigController extends JeecgController<PrinterConfig, IPrinterConfigService> {
+   @Autowired
+   private IPrinterConfigService printerConfigService;
+
+   /**
+    * 鍒嗛〉鍒楄〃鏌ヨ
+    *
+    * @param printerConfig
+    * @param pageNo
+    * @param pageSize
+    * @param req
+    * @return
+    */
+   @ApiOperation(value="鎵撳嵃鏈轰俊鎭�-鍒嗛〉鍒楄〃鏌ヨ", notes="鎵撳嵃鏈轰俊鎭�-鍒嗛〉鍒楄〃鏌ヨ")
+   @GetMapping(value = "/list")
+   public Result<IPage<PrinterConfig>> queryPageList(PrinterConfig printerConfig,
+                                  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                  HttpServletRequest req) {
+       QueryWrapper<PrinterConfig> queryWrapper = QueryGenerator.initQueryWrapper(printerConfig, req.getParameterMap());
+       Page<PrinterConfig> page = new Page<PrinterConfig>(pageNo, pageSize);
+       IPage<PrinterConfig> pageList = printerConfigService.page(page, queryWrapper);
+       return Result.OK(pageList);
+   }
+
+
+
+    @ApiOperation(value = "鑾峰彇鎵�鏈夋墦鍗版満IP鍒楄〃", notes = "鑾峰彇鎵�鏈夋墦鍗版満IP鍒楄〃")
+    @GetMapping(value = "/queryUserPrinterConfigList")
+    public Result<List<PrinterModel>> queryUserPrinterConfigList() {
+        List<PrinterConfig> printerConfigList = printerConfigService.queryUserPrinterConfigList();
+        List<PrinterModel> factoryModels = printerConfigList.stream()
+                .map(factory -> new PrinterModel(factory.getPrinterIp(), factory.getPrinterIp()))
+                .collect(Collectors.toList());
+        return Result.ok(factoryModels);
+    }
+   /**
+    *   娣诲姞
+    *
+    * @param printerConfig
+    * @return
+    */
+   @AutoLog(value = "鎵撳嵃鏈轰俊鎭�-娣诲姞")
+   @ApiOperation(value="鎵撳嵃鏈轰俊鎭�-娣诲姞", notes="鎵撳嵃鏈轰俊鎭�-娣诲姞")
+   @PostMapping(value = "/add")
+   public Result<String> add(@RequestBody PrinterConfig printerConfig) {
+       printerConfig.setPrinterStatus(CommonConstant.STATUS_1);
+       printerConfigService.save(printerConfig);
+       return Result.OK("娣诲姞鎴愬姛锛�");
+   }
+
+   /**
+    *  缂栬緫
+    *
+    * @param printerConfig
+    * @return
+    */
+   @AutoLog(value = "绾胯竟浠撳簱淇℃伅-缂栬緫")
+   @ApiOperation(value="绾胯竟浠撳簱淇℃伅-缂栬緫", notes="绾胯竟浠撳簱淇℃伅-缂栬緫")
+   @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+   public Result<String> edit(@RequestBody PrinterConfig printerConfig) {
+       printerConfigService.updateById(printerConfig);
+       return Result.OK("缂栬緫鎴愬姛!");
+   }
+
+   /**
+    *   閫氳繃id鍒犻櫎
+    *
+    * @param id
+    * @return
+    */
+   @AutoLog(value = "绾胯竟浠撳簱淇℃伅-閫氳繃id鍒犻櫎")
+   @ApiOperation(value="绾胯竟浠撳簱淇℃伅-閫氳繃id鍒犻櫎", notes="绾胯竟浠撳簱淇℃伅-閫氳繃id鍒犻櫎")
+   @DeleteMapping(value = "/delete")
+   public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+       printerConfigService.removeById(id);
+       return Result.OK("鍒犻櫎鎴愬姛!");
+   }
+
+   /**
+    *  鎵归噺鍒犻櫎
+    *
+    * @param ids
+    * @return
+    */
+   @AutoLog(value = "鎵撳嵃鏈轰俊鎭�-鎵归噺鍒犻櫎")
+   @ApiOperation(value="鎵撳嵃鏈轰俊鎭�-鎵归噺鍒犻櫎", notes="鎵撳嵃鏈轰俊鎭�-鎵归噺鍒犻櫎")
+   @DeleteMapping(value = "/deleteBatch")
+   public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+       this.printerConfigService.removeByIds(Arrays.asList(ids.split(",")));
+       return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
+   }
+
+   /**
+    * 閫氳繃id鏌ヨ
+    *
+    * @param id
+    * @return
+    */
+   //@AutoLog(value = "绾胯竟浠撳簱淇℃伅-閫氳繃id鏌ヨ")
+   @ApiOperation(value="鎵撳嵃鏈轰俊鎭�-閫氳繃id鏌ヨ", notes="鎵撳嵃鏈轰俊鎭�-閫氳繃id鏌ヨ")
+   @GetMapping(value = "/queryById")
+   public Result<PrinterConfig> queryById(@RequestParam(name="id",required=true) String id) {
+       PrinterConfig lineSideWarehouse = printerConfigService.getById(id);
+       if(lineSideWarehouse==null) {
+           return Result.error("鏈壘鍒板搴旀暟鎹�");
+       }
+       return Result.OK(lineSideWarehouse);
+   }
+
+   /**
+   * 瀵煎嚭excel
+   *
+   * @param request
+   * @param printerConfig
+   */
+   @RequestMapping(value = "/exportXls")
+   public ModelAndView exportXls(HttpServletRequest request, PrinterConfig printerConfig) {
+       return super.exportXls(request, printerConfig, PrinterConfig.class, "鎵撳嵃鏈轰俊鎭�");
+   }
+
+   /**
+     * 閫氳繃excel瀵煎叆鏁版嵁
+   *
+   * @param request
+   * @param response
+   * @return
+   */
+   @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+   public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+       return super.importExcel(request, response, PrinterConfig.class);
+   }
+
+    @AutoLog(value = "鎵撳嵃鏈�-鍚敤&绂佺敤")
+    @ApiOperation(value = "鎵撳嵃鏈�-鍚敤&绂佺敤", notes = "鎵撳嵃鏈�-鍚敤&绂佺敤")
+    @PutMapping(value = "/active")
+    public Result<?> active(@RequestParam(name = "id", required = true) String id) {
+        PrinterConfig printerConfig = printerConfigService.getById(id);
+        if (CommonConstant.STATUS_1.equals(printerConfig.getPrinterStatus())) {
+            printerConfig.setPrinterStatus(CommonConstant.STATUS_0);
+        } else {
+            printerConfig.setPrinterStatus(CommonConstant.STATUS_1);
+        }
+        printerConfigService.updateById(printerConfig);
+        return Result.ok("鎿嶄綔鎴愬姛锛�");
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/base/entity/LineSideWarehouse.java b/src/main/java/org/jeecg/modules/base/entity/LineSideWarehouse.java
index 66d46d2..da727ba 100644
--- a/src/main/java/org/jeecg/modules/base/entity/LineSideWarehouse.java
+++ b/src/main/java/org/jeecg/modules/base/entity/LineSideWarehouse.java
@@ -1,23 +1,22 @@
 package org.jeecg.modules.base.entity;
 
-import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
-import java.util.Date;
-import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableLogic;
-import lombok.Data;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import org.jeecg.common.constant.CommonConstant;
-import org.springframework.format.annotation.DateTimeFormat;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.jeecg.common.aspect.annotation.Dict;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * @Description: 绾胯竟浠撳簱淇℃伅
diff --git a/src/main/java/org/jeecg/modules/base/entity/PrinterConfig.java b/src/main/java/org/jeecg/modules/base/entity/PrinterConfig.java
new file mode 100644
index 0000000..022df68
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/base/entity/PrinterConfig.java
@@ -0,0 +1,101 @@
+package org.jeecg.modules.base.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 鎵撳嵃鏈洪厤缃俊鎭�
+ * @Author: jeecg-boot
+ * @Date: 2025-06-24
+ * @Version: V1.0
+ */
+@Data
+@TableName("base_printer_config")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "base_printer_config瀵硅薄", description = "鎵撳嵃鏈洪厤缃俊鎭�")
+public class PrinterConfig implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+    /**
+     * 鍒涘缓浜�
+     */
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+    /**
+     * 鏇存柊浜�
+     */
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+    /**
+     * 鎵撳嵃鏈篒P
+     */
+    @Excel(name = "鎵撳嵃鏈篒P", width = 15)
+    @ApiModelProperty(value = "鎵撳嵃鏈篒P")
+    private String printerIp;
+
+    /**
+     * 鎵撳嵃鏈篒P
+     */
+    @Excel(name = "鎵撳嵃鏈哄悕绉�", width = 15)
+    @ApiModelProperty(value = "鎵撳嵃鏈哄悕绉�")
+    private String printerName;
+    /**
+     * 鎵撳嵃鏈虹鍙�
+     */
+    @Excel(name = "鎵撳嵃鏈虹鍙�", width = 15)
+    @ApiModelProperty(value = "鎵撳嵃鏈虹鍙�")
+    private String portNumber;
+    /**
+     * 鎵撳嵃鏈哄瀷鍙�
+     */
+    @Excel(name = "鎵撳嵃鏈哄瀷鍙�", width = 15)
+    @ApiModelProperty(value = "鎵撳嵃鏈哄瀷鍙�")
+    private String printerModel;
+
+    /**鎵撳嵃鏈虹姸鎬�*/
+    @Excel(name = "鎵撳嵃鏈虹姸鎬�", width = 15)
+    @ApiModelProperty(value = "鎵撳嵃鏈虹姸鎬�")
+    private String printerStatus;
+}
diff --git a/src/main/java/org/jeecg/modules/base/mapper/LineSideWarehouseMapper.java b/src/main/java/org/jeecg/modules/base/mapper/LineSideWarehouseMapper.java
index c1efcb8..b72bfe0 100644
--- a/src/main/java/org/jeecg/modules/base/mapper/LineSideWarehouseMapper.java
+++ b/src/main/java/org/jeecg/modules/base/mapper/LineSideWarehouseMapper.java
@@ -14,4 +14,10 @@
  */
 public interface LineSideWarehouseMapper extends BaseMapper<LineSideWarehouse> {
 
+    /**
+     * 閫氳繃浜х嚎绫诲瀷鏌ヨ绾胯竟搴�
+     * @param types
+     * @return
+     */
+    List<LineSideWarehouse> queryByProductionType(@Param("types") String[] types);
 }
diff --git a/src/main/java/org/jeecg/modules/base/mapper/PrinterConfigMapper.java b/src/main/java/org/jeecg/modules/base/mapper/PrinterConfigMapper.java
new file mode 100644
index 0000000..53aef6e
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/base/mapper/PrinterConfigMapper.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.base.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.base.entity.PrinterConfig;
+
+/**
+ * @Description: 鎵撳嵃鏈轰俊鎭厤缃�
+ * @Author: jeecg-boot
+ * @Date:   2025-06-24
+ * @Version: V1.0
+ */
+public interface PrinterConfigMapper extends BaseMapper<PrinterConfig> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/base/mapper/xml/LineSideWarehouseMapper.xml b/src/main/java/org/jeecg/modules/base/mapper/xml/LineSideWarehouseMapper.xml
index 87ff328..5ea4d98 100644
--- a/src/main/java/org/jeecg/modules/base/mapper/xml/LineSideWarehouseMapper.xml
+++ b/src/main/java/org/jeecg/modules/base/mapper/xml/LineSideWarehouseMapper.xml
@@ -2,4 +2,11 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.base.mapper.LineSideWarehouseMapper">
 
+    <select id="queryByProductionType" resultType="org.jeecg.modules.base.entity.LineSideWarehouse">
+        select t1.* from base_line_side_warehouse t1
+        left join base_factory t2 on t1.factory_id = t2.id
+        where t1.del_flag='0' and t1.warehouse_status='1' and
+        <foreach collection="types" item="item" open=" t2.production_type IN (" close=")" separator=",">#{item}</foreach>
+        order by t1.warehouse_code
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/base/mapper/xml/PrinterConfigMapper.xml b/src/main/java/org/jeecg/modules/base/mapper/xml/PrinterConfigMapper.xml
new file mode 100644
index 0000000..4e9d260
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/base/mapper/xml/PrinterConfigMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.base.mapper.PrinterConfigMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/base/model/FactoryModel.java b/src/main/java/org/jeecg/modules/base/model/FactoryModel.java
index 89c62fa..c09a8e4 100644
--- a/src/main/java/org/jeecg/modules/base/model/FactoryModel.java
+++ b/src/main/java/org/jeecg/modules/base/model/FactoryModel.java
@@ -7,12 +7,13 @@
     // getter鍜宻etter鏂规硶
     private String value;  // 浜х嚎ID
     private String text;   // 浜х嚎鍚嶇О
-
+    private String type;   // 浜х嚎绫诲瀷
     public FactoryModel() {
     }
 
-    public FactoryModel(String value, String text) {
+    public FactoryModel(String value, String text, String type) {
         this.value = value;
         this.text = text;
+        this.type = type;
     }
 }
diff --git a/src/main/java/org/jeecg/modules/base/model/PrinterModel.java b/src/main/java/org/jeecg/modules/base/model/PrinterModel.java
new file mode 100644
index 0000000..2a56f3e
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/base/model/PrinterModel.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.base.model;
+
+import lombok.Data;
+
+@Data
+public class PrinterModel {
+    // getter鍜宻etter鏂规硶
+    private String value;
+    private String text;
+
+    public PrinterModel() {
+    }
+
+    public PrinterModel(String value, String text) {
+        this.value = value;
+        this.text = text;
+
+    }
+}
diff --git a/src/main/java/org/jeecg/modules/base/service/ILineSideWarehouseService.java b/src/main/java/org/jeecg/modules/base/service/ILineSideWarehouseService.java
index 5d89f62..72c38c5 100644
--- a/src/main/java/org/jeecg/modules/base/service/ILineSideWarehouseService.java
+++ b/src/main/java/org/jeecg/modules/base/service/ILineSideWarehouseService.java
@@ -3,6 +3,8 @@
 import org.jeecg.modules.base.entity.LineSideWarehouse;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * @Description: 绾胯竟浠撳簱淇℃伅
  * @Author: jeecg-boot
@@ -17,4 +19,18 @@
      * @return
      */
     LineSideWarehouse queryByFactoryId(String factoryId);
+
+    /**
+     * 鏍规嵁浜х嚎绫诲瀷鏌ヨ绾胯竟搴�
+     * @param productionType
+     * @return
+     */
+    List<LineSideWarehouse> queryByProductionType(String productionType);
+
+    /**
+     * 绾胯竟搴撶紪鐮�
+     * @param warehouseCode
+     * @return
+     */
+    LineSideWarehouse queryByWarehouseCode(String warehouseCode);
 }
diff --git a/src/main/java/org/jeecg/modules/base/service/IPrinterConfigService.java b/src/main/java/org/jeecg/modules/base/service/IPrinterConfigService.java
new file mode 100644
index 0000000..ec04c60
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/base/service/IPrinterConfigService.java
@@ -0,0 +1,21 @@
+package org.jeecg.modules.base.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.base.entity.Factory;
+import org.jeecg.modules.base.entity.PrinterConfig;
+
+import java.util.List;
+
+/**
+ * @Description: 鎵撳嵃鏈洪厤缃�
+ * @Author: jeecg-boot
+ * @Date:   2025-06-24
+ * @Version: V1.0
+ */
+public interface IPrinterConfigService extends IService<PrinterConfig> {
+    /**
+     * 鏌ヨIP鍒楄〃
+     * @return
+     */
+    List<PrinterConfig> queryUserPrinterConfigList();
+}
diff --git a/src/main/java/org/jeecg/modules/base/service/impl/LineSideWarehouseServiceImpl.java b/src/main/java/org/jeecg/modules/base/service/impl/LineSideWarehouseServiceImpl.java
index 8b205e9..91ba088 100644
--- a/src/main/java/org/jeecg/modules/base/service/impl/LineSideWarehouseServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/base/service/impl/LineSideWarehouseServiceImpl.java
@@ -2,10 +2,15 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.modules.base.entity.LineSideWarehouse;
 import org.jeecg.modules.base.mapper.LineSideWarehouseMapper;
 import org.jeecg.modules.base.service.ILineSideWarehouseService;
 import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
 
 /**
  * @Description: 绾胯竟浠撳簱淇℃伅
@@ -26,4 +31,22 @@
         }
         return entity;
     }
+
+    @Override
+    public List<LineSideWarehouse> queryByProductionType(String productionType) {
+        if(StringUtils.isBlank(productionType)) {
+            return Collections.emptyList();
+        }
+        String[] types = productionType.split(",");
+        return this.getBaseMapper().queryByProductionType(types);
+    }
+
+    @Override
+    public LineSideWarehouse queryByWarehouseCode(String warehouseCode) {
+        LambdaQueryWrapper<LineSideWarehouse> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(LineSideWarehouse::getWarehouseCode, warehouseCode);
+        wrapper.eq(LineSideWarehouse::getDelFlag, CommonConstant.DEL_FLAG_0);
+        wrapper.eq(LineSideWarehouse::getWarehouseStatus, CommonConstant.STATUS_1);
+        return this.getBaseMapper().selectOne(wrapper);
+    }
 }
diff --git a/src/main/java/org/jeecg/modules/base/service/impl/PrinterConfigServiceImpl.java b/src/main/java/org/jeecg/modules/base/service/impl/PrinterConfigServiceImpl.java
new file mode 100644
index 0000000..9310373
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/base/service/impl/PrinterConfigServiceImpl.java
@@ -0,0 +1,41 @@
+package org.jeecg.modules.base.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.base.entity.Factory;
+import org.jeecg.modules.base.entity.PrinterConfig;
+import org.jeecg.modules.base.mapper.PrinterConfigMapper;
+import org.jeecg.modules.base.service.IPrinterConfigService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @Description: 鎵撳嵃鏈洪厤缃俊鎭�
+ * @Author: jeecg-boot
+ * @Date:   2025-06-24
+ * @Version: V1.0
+ */
+@Service
+public class PrinterConfigServiceImpl extends ServiceImpl<PrinterConfigMapper, PrinterConfig> implements IPrinterConfigService {
+
+    @Override
+    public List<PrinterConfig> queryUserPrinterConfigList() {
+        //鐢ㄦ埛鏁版嵁鏉冮檺
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (sysUser == null) {
+            return Collections.emptyList();
+        }
+        LambdaQueryWrapper<PrinterConfig> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PrinterConfig::getDelFlag, CommonConstant.DEL_FLAG_0);
+        queryWrapper.eq(PrinterConfig::getPrinterStatus, "1");
+        return super.list(queryWrapper);
+    }
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java
index 932e249..59b2736 100644
--- a/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java
@@ -279,163 +279,75 @@
 
 
     /*
-     * 鐢熸垚鍞竴鏉$爜鐨勬柟娉�
+     * 鐢熸垚鍞竴鏉$爜鐨勬柟娉曪紙鐩墠杩樻病鏈夌紪鐮佽鍒欙紝纭畾鍚庡湪杩欓噷鏀癸級
      */
     private String generateUniqueBarcode(String cuttingId, int index) {
         // 鏉$爜鐢熸垚瑙勫垯绀轰緥锛氬垁鍏稩D + 搴忓彿(4浣�) + 闅忔満鏁�
         return cuttingId + String.format("%04d", index + 1) + (int) (Math.random() * 10000);
     }
-//    @GetMapping("/submit")
-//    public Result<?> submit(@RequestParam("orderId") String orderId) {
-//        //         cuttingInboundService.submit(orderId);
-//        //         return Result.ok("鎻愪氦鎴愬姛");
+
+    @GetMapping("/submit")
+    @Timed(value = "cutting.inbound.submit", description = "鍒�鍏峰叆搴撴彁浜よ�楁椂")
+    public Result<?> submit(@RequestParam("orderId") String orderId) {
+//        long startTime = System.currentTimeMillis();
 //        try {
 //            // 1. 鏇存柊鍏ュ簱鍗曠姸鎬�
 //            CuttingInbound cuttingInbound = cuttingInboundService.getById(orderId);
 //            if (cuttingInbound == null) {
 //                return Result.error("鏈壘鍒板搴旂殑鍏ュ簱鍗�");
 //            }
-//
-//            // 妫�鏌ュ叆搴撳崟鐘舵�侊紝鍙厑璁哥姸鎬佷负"1"鐨勫叆搴撳崟鎻愪氦
-//            if (!"1".equals(cuttingInbound.getOrderStatus())) {
-//                return Result.error("鍙湁鐘舵�佷负鏈彁浜ょ殑鍏ュ簱鍗曟墠鑳芥墽琛屾彁浜ゆ搷浣�");
-//            }
-//
-//            // 2. 鏇存柊鐘舵�佷负宸叉彁浜�
 //            cuttingInbound.setOrderStatus("2");
-//            boolean updateResult = cuttingInboundService.updateById(cuttingInbound);
-//            if (!updateResult) {
-//                return Result.error("鏇存柊鍏ュ簱鍗曠姸鎬佸け璐�");
-//            }
+//            cuttingInboundService.updateById(cuttingInbound);
 //
-//            // 3. 鑾峰彇鍏ュ簱鏄庣粏
+//            // 2. 鑾峰彇鍏ュ簱鏄庣粏
 //            List<CuttingInboundDetail> detailList = cuttingInboundDetailService.lambdaQuery()
 //                    .eq(CuttingInboundDetail::getOrderId, orderId)
 //                    .list();
 //
-//            // 鐢ㄤ簬缁熻鎬绘暟閲�
-//            int totalSubmitted = 0;
-//
-//            // 鎵归噺淇濆瓨鐨勫垪琛�
+//            // 3. 鏀堕泦鎵�鏈夐渶瑕佷繚瀛樼殑鏁版嵁
 //            List<CuttingInventory> inventoryList = new ArrayList<>();
 //            List<CuttingInboundInventory> inboundInventoryList = new ArrayList<>();
 //
-//            // 4. 鏍规嵁鏄庣粏鏁伴噺鐢熸垚搴撳瓨璁板綍鍜屾潯鐮�
 //            for (CuttingInboundDetail detail : detailList) {
-//                // 鏍规嵁鏄庣粏涓殑鏁伴噺鐢熸垚瀵瑰簲鏁伴噺鐨勫簱瀛樿褰時eceive_number
-//                int quantity = detail.getReceiveNumber() != null ? detail.getReceiveNumber() : 0;
-//                for (int i = 0; i < quantity; i++) {
-//                    totalSubmitted++;
-//                    // 涓烘瘡涓垁鍏风敓鎴愮嫭绔嬬殑搴撳瓨璁板綍
-//                    CuttingInventory cuttingInventory = new CuttingInventory();
-//                    String inventoryId = UUID.randomUUID().toString().replace("-", "");
-//                    cuttingInventory.setId(inventoryId);
-//                    cuttingInventory.setCuttingId(detail.getCuttingId());
-//                    // 涓烘瘡涓垁鍏风敓鎴愬敮涓�鏉$爜
-//                    cuttingInventory.setCuttingBarcode(generateUniqueBarcode(detail.getCuttingId(), i));
-//                    // 璁剧疆搴撳瓨鐘舵�佷负鍦ㄥ簱
-//                    cuttingInventory.setInventoryStatus("姝e父");
-//                    // 璁剧疆褰撳墠瀵垮懡涓�100
-//                    cuttingInventory.setCurrentLife(BigDecimal.valueOf(100));
-//                    // 娣诲姞鍒版壒閲忎繚瀛樺垪琛�
-//                    inventoryList.add(cuttingInventory);
+//                int quantity = detail.getReceiveNumber() != null ? detail.getReceiveNumber().intValue() : 0;
 //
-//                    // 寤虹珛鍏ュ簱鍗曚笌搴撳瓨鐨勫叧鑱斿叧绯�
+//                for (int i = 0; i < quantity; i++) {
+//                    // 鐢熸垚搴撳瓨璁板綍
+//                    CuttingInventory cuttingInventory = new CuttingInventory();
+//                    cuttingInventory.setCuttingId(detail.getCuttingId());
+//                    cuttingInventory.setCuttingBarcode(generateUniqueBarcode(detail.getCuttingId(), i));
+//                    cuttingInventory.setInventoryStatus("姝e父");
+//                    cuttingInventory.setCurrentLife(BigDecimal.valueOf(100));
+//                    inventoryList.add(cuttingInventory);
+//                }
+//            }
+//
+//            // 4. 鎵归噺淇濆瓨搴撳瓨璁板綍锛堜竴娆℃�ф搷浣滐級
+//            if (!inventoryList.isEmpty()) {
+//                cuttingInventoryService.saveBatch(inventoryList);
+//
+//                // 5. 涓烘瘡涓繚瀛樼殑搴撳瓨璁板綍鍒涘缓鍏宠仈鍏崇郴
+//                for (CuttingInventory inventory : inventoryList) {
 //                    CuttingInboundInventory cuttingInboundInventory = new CuttingInboundInventory();
 //                    cuttingInboundInventory.setOrderId(orderId);
-//                    cuttingInboundInventory.setInventoryId(inventoryId);
-//                    // 娣诲姞鍒版壒閲忎繚瀛樺垪琛�
+//                    cuttingInboundInventory.setInventoryId(inventory.getId());
 //                    inboundInventoryList.add(cuttingInboundInventory);
 //                }
+//
+//                // 6. 鎵归噺淇濆瓨鍏宠仈鍏崇郴锛堜竴娆℃�ф搷浣滐級
+//                cuttingInboundInventoryService.saveBatch(inboundInventoryList);
 //            }
 //
-//            // 鎵归噺淇濆瓨搴撳瓨璁板綍
-//            if (!inventoryList.isEmpty()) {
-//                boolean saveResult = cuttingInventoryService.saveBatch(inventoryList);
-//                if (!saveResult) {
-//                    throw new RuntimeException("淇濆瓨搴撳瓨璁板綍澶辫触");
-//                }
-//            }
+//            long endTime = System.currentTimeMillis();
+//            log.info("鍒�鍏峰叆搴撴彁浜ゅ畬鎴愶紝鑰楁椂: {} s", (endTime - startTime)/1000);
+//            return Result.ok("鎻愪氦鎴愬姛");
 //
-//            // 鎵归噺淇濆瓨鍏宠仈鍏崇郴
-//            if (!inboundInventoryList.isEmpty()) {
-//                boolean relationSaveResult = cuttingInboundInventoryService.saveBatch(inboundInventoryList);
-//                if (!relationSaveResult) {
-//                    throw new RuntimeException("淇濆瓨鍏宠仈鍏崇郴澶辫触");
-//                }
-//            }
-//
-//            Map<String, Object> result = new HashMap<>();
-//            result.put("message", "鎻愪氦鎴愬姛");
-//            result.put("totalSubmitted", totalSubmitted);
-//            return Result.ok(result);
 //        } catch (Exception e) {
-//            log.error("鎻愪氦鍏ュ簱鍗曞け璐ワ紝orderId: " + orderId, e);
-//            throw new RuntimeException("鎻愪氦澶辫触: " + e.getMessage(), e);
+//            long endTime = System.currentTimeMillis();
+//            log.error("鎻愪氦鍏ュ簱鍗曞け璐ワ紝orderId: " + orderId + "锛岃�楁椂: " + (endTime - startTime) + " ms", e);
+//            return Result.error("鎻愪氦澶辫触: " + e.getMessage());
 //        }
-//    }
-
-    @GetMapping("/submit")
-    @Timed(value = "cutting.inbound.submit", description = "鍒�鍏峰叆搴撴彁浜よ�楁椂")
-    public Result<?> submit(@RequestParam("orderId") String orderId) {
-        long startTime = System.currentTimeMillis();
-        try {
-            // 1. 鏇存柊鍏ュ簱鍗曠姸鎬�
-            CuttingInbound cuttingInbound = cuttingInboundService.getById(orderId);
-            if (cuttingInbound == null) {
-                return Result.error("鏈壘鍒板搴旂殑鍏ュ簱鍗�");
-            }
-            cuttingInbound.setOrderStatus("2");
-            cuttingInboundService.updateById(cuttingInbound);
-
-            // 2. 鑾峰彇鍏ュ簱鏄庣粏
-            List<CuttingInboundDetail> detailList = cuttingInboundDetailService.lambdaQuery()
-                    .eq(CuttingInboundDetail::getOrderId, orderId)
-                    .list();
-
-            // 3. 鏀堕泦鎵�鏈夐渶瑕佷繚瀛樼殑鏁版嵁
-            List<CuttingInventory> inventoryList = new ArrayList<>();
-            List<CuttingInboundInventory> inboundInventoryList = new ArrayList<>();
-
-            for (CuttingInboundDetail detail : detailList) {
-                int quantity = detail.getReceiveNumber() != null ? detail.getReceiveNumber().intValue() : 0;
-
-                for (int i = 0; i < quantity; i++) {
-                    // 鐢熸垚搴撳瓨璁板綍
-                    CuttingInventory cuttingInventory = new CuttingInventory();
-                    cuttingInventory.setCuttingId(detail.getCuttingId());
-                    cuttingInventory.setCuttingBarcode(generateUniqueBarcode(detail.getCuttingId(), i));
-                    cuttingInventory.setInventoryStatus("姝e父");
-                    cuttingInventory.setCurrentLife(BigDecimal.valueOf(100));
-                    inventoryList.add(cuttingInventory);
-                }
-            }
-
-            // 4. 鎵归噺淇濆瓨搴撳瓨璁板綍锛堜竴娆℃�ф搷浣滐級
-            if (!inventoryList.isEmpty()) {
-                cuttingInventoryService.saveBatch(inventoryList);
-
-                // 5. 涓烘瘡涓繚瀛樼殑搴撳瓨璁板綍鍒涘缓鍏宠仈鍏崇郴
-                for (CuttingInventory inventory : inventoryList) {
-                    CuttingInboundInventory cuttingInboundInventory = new CuttingInboundInventory();
-                    cuttingInboundInventory.setOrderId(orderId);
-                    cuttingInboundInventory.setInventoryId(inventory.getId());
-                    inboundInventoryList.add(cuttingInboundInventory);
-                }
-
-                // 6. 鎵归噺淇濆瓨鍏宠仈鍏崇郴锛堜竴娆℃�ф搷浣滐級
-                cuttingInboundInventoryService.saveBatch(inboundInventoryList);
-            }
-
-            long endTime = System.currentTimeMillis();
-            log.info("鍒�鍏峰叆搴撴彁浜ゅ畬鎴愶紝鑰楁椂: {} s", (endTime - startTime)/1000);
-            return Result.ok("鎻愪氦鎴愬姛");
-
-        } catch (Exception e) {
-            long endTime = System.currentTimeMillis();
-            log.error("鎻愪氦鍏ュ簱鍗曞け璐ワ紝orderId: " + orderId + "锛岃�楁椂: " + (endTime - startTime) + " ms", e);
-            return Result.error("鎻愪氦澶辫触: " + e.getMessage());
-        }
+        return cuttingInboundService.submit(orderId);
     }
 }
 
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java
index 630d7e6..a0e4d74 100644
--- a/src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java
@@ -6,6 +6,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.modules.cms.entity.CuttingInventory;
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java
index 1d78b9f..17ad902 100644
--- a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java
@@ -43,141 +43,141 @@
 import io.swagger.annotations.ApiOperation;
 import org.jeecg.common.aspect.annotation.AutoLog;
 
- /**
+/**
  * @Description: 鍒�鍏烽鐢ㄥ崟
  * @Author: jeecg-boot
- * @Date:   2025-07-28
+ * @Date: 2025-07-28
  * @Version: V1.0
  */
-@Api(tags="鍒�鍏烽鐢ㄥ崟")
+@Api(tags = "鍒�鍏烽鐢ㄥ崟")
 @RestController
 @RequestMapping("/cms/cuttingReceive")
 @Slf4j
 public class CuttingReceiveController extends JeecgController<CuttingReceive, ICuttingReceiveService> {
-	@Autowired
-	private ICuttingReceiveService cuttingReceiveService;
+    @Autowired
+    private ICuttingReceiveService cuttingReceiveService;
 
-	 @Autowired
-	 private ICuttingReceiveDetailService cuttingReceiveDetailService;
-	
-	/**
-	 * 鍒嗛〉鍒楄〃鏌ヨ
-	 *
-	 * @param cuttingReceive
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	//@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ")
-	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ")
-	@GetMapping(value = "/list")
-	public Result<IPage<CuttingReceive>> queryPageList(CuttingReceive cuttingReceive,
-								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-								   HttpServletRequest req) {
-		QueryWrapper<CuttingReceive> queryWrapper = QueryGenerator.initQueryWrapper(cuttingReceive, req.getParameterMap());
-		Page<CuttingReceive> page = new Page<CuttingReceive>(pageNo, pageSize);
-		IPage<CuttingReceive> pageList = cuttingReceiveService.page(page, queryWrapper);
-		return Result.OK(pageList);
-	}
-	
-	/**
-	 *   娣诲姞
-	 *
-	 * @param jSONObject
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-娣诲姞")
-	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-娣诲姞", notes="鍒�鍏烽鐢ㄥ崟-娣诲姞")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:add")
-	@PostMapping(value = "/add")
-	public Result<String> add(@RequestBody JSONObject jSONObject) {
-		CuttingReceive cuttingReceive = jSONObject.toJavaObject(CuttingReceive.class);
-		cuttingReceive.setOrderStatus("1");
-		cuttingReceiveService.saveOrUpdate(cuttingReceive);
-		//鍒犻櫎鍘熷叧鑱旀暟鎹�
-		List<CuttingReceiveDetail> cuttingReceiveDetailList = cuttingReceiveDetailService.lambdaQuery().eq(CuttingReceiveDetail::getOrderId,cuttingReceive.getId()).list();
-		cuttingReceiveDetailService.removeBatchByIds(cuttingReceiveDetailList);
-		//娣诲姞鏂板叧鑱旀暟鎹�
-		JSONArray jsonArray = jSONObject.getJSONArray("detailData");
-		List<CuttingReceiveDetail> list = jsonArray.toJavaList(CuttingReceiveDetail.class);
-		for (int i = 0; i < list.size(); i++) {
-			CuttingReceiveDetail temp = list.get(i);
-			temp.setOrderId(cuttingReceive.getId());
-			cuttingReceiveDetailService.save(temp);
-		}
-		return Result.OK("娣诲姞鎴愬姛锛�");
-	}
-	
-	/**
-	 *  缂栬緫
-	 *
-	 * @param cuttingReceive
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-缂栬緫")
-	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-缂栬緫", notes="鍒�鍏烽鐢ㄥ崟-缂栬緫")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:edit")
-	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-	public Result<String> edit(@RequestBody CuttingReceive cuttingReceive) {
-		cuttingReceiveService.updateById(cuttingReceive);
-		return Result.OK("缂栬緫鎴愬姛!");
-	}
-	
-	/**
-	 *   閫氳繃id鍒犻櫎
-	 *
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎")
-	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎", notes="鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:delete")
-	@DeleteMapping(value = "/delete")
-	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-		cuttingReceiveService.removeById(id);
-		return Result.OK("鍒犻櫎鎴愬姛!");
-	}
-	
-	/**
-	 *  鎵归噺鍒犻櫎
-	 *
-	 * @param ids
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎")
-	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎", notes="鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:deleteBatch")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		this.cuttingReceiveService.removeByIds(Arrays.asList(ids.split(",")));
-		return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
-	}
-	
-	/**
-	 * 閫氳繃id鏌ヨ
-	 *
-	 * @param id
-	 * @return
-	 */
-	//@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ")
-	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ", notes="鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ")
-	@GetMapping(value = "/queryById")
-	public Result<CuttingReceive> queryById(@RequestParam(name="id",required=true) String id) {
-		CuttingReceive cuttingReceive = cuttingReceiveService.getById(id);
-		if(cuttingReceive==null) {
-			return Result.error("鏈壘鍒板搴旀暟鎹�");
-		}
-		return Result.OK(cuttingReceive);
-	}
+    @Autowired
+    private ICuttingReceiveDetailService cuttingReceiveDetailService;
 
     /**
-    * 瀵煎嚭excel
-    *
-    * @param request
-    * @param cuttingReceive
-    */
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param cuttingReceive
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ")
+    @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ", notes = "鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ")
+    @GetMapping(value = "/list")
+    public Result<IPage<CuttingReceive>> queryPageList(CuttingReceive cuttingReceive,
+                                                       @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                       @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                       HttpServletRequest req) {
+        QueryWrapper<CuttingReceive> queryWrapper = QueryGenerator.initQueryWrapper(cuttingReceive, req.getParameterMap());
+        Page<CuttingReceive> page = new Page<CuttingReceive>(pageNo, pageSize);
+        IPage<CuttingReceive> pageList = cuttingReceiveService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 娣诲姞
+     *
+     * @param jSONObject
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏烽鐢ㄥ崟-娣诲姞")
+    @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-娣诲姞", notes = "鍒�鍏烽鐢ㄥ崟-娣诲姞")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:add")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody JSONObject jSONObject) {
+        CuttingReceive cuttingReceive = jSONObject.toJavaObject(CuttingReceive.class);
+        cuttingReceive.setOrderStatus("1");
+        cuttingReceiveService.saveOrUpdate(cuttingReceive);
+        //鍒犻櫎鍘熷叧鑱旀暟鎹�
+        List<CuttingReceiveDetail> cuttingReceiveDetailList = cuttingReceiveDetailService.lambdaQuery().eq(CuttingReceiveDetail::getOrderId, cuttingReceive.getId()).list();
+        cuttingReceiveDetailService.removeBatchByIds(cuttingReceiveDetailList);
+        //娣诲姞鏂板叧鑱旀暟鎹�
+        JSONArray jsonArray = jSONObject.getJSONArray("detailData");
+        List<CuttingReceiveDetail> list = jsonArray.toJavaList(CuttingReceiveDetail.class);
+        for (int i = 0; i < list.size(); i++) {
+            CuttingReceiveDetail temp = list.get(i);
+            temp.setOrderId(cuttingReceive.getId());
+            cuttingReceiveDetailService.save(temp);
+        }
+        return Result.OK("娣诲姞鎴愬姛锛�");
+    }
+
+    /**
+     * 缂栬緫
+     *
+     * @param cuttingReceive
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏烽鐢ㄥ崟-缂栬緫")
+    @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-缂栬緫", notes = "鍒�鍏烽鐢ㄥ崟-缂栬緫")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:edit")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody CuttingReceive cuttingReceive) {
+        cuttingReceiveService.updateById(cuttingReceive);
+        return Result.OK("缂栬緫鎴愬姛!");
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎")
+    @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎", notes = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:delete")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        cuttingReceiveService.removeById(id);
+        return Result.OK("鍒犻櫎鎴愬姛!");
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎")
+    @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎", notes = "鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:deleteBatch")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.cuttingReceiveService.removeByIds(Arrays.asList(ids.split(",")));
+        return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
+    }
+
+    /**
+     * 閫氳繃id鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ")
+    @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ", notes = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ")
+    @GetMapping(value = "/queryById")
+    public Result<CuttingReceive> queryById(@RequestParam(name = "id", required = true) String id) {
+        CuttingReceive cuttingReceive = cuttingReceiveService.getById(id);
+        if (cuttingReceive == null) {
+            return Result.error("鏈壘鍒板搴旀暟鎹�");
+        }
+        return Result.OK(cuttingReceive);
+    }
+
+    /**
+     * 瀵煎嚭excel
+     *
+     * @param request
+     * @param cuttingReceive
+     */
     //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:exportXls")
     @RequestMapping(value = "/exportXls")
     public ModelAndView exportXls(HttpServletRequest request, CuttingReceive cuttingReceive) {
@@ -185,28 +185,28 @@
     }
 
     /**
-      * 閫氳繃excel瀵煎叆鏁版嵁
-    *
-    * @param request
-    * @param response
-    * @return
-    */
+     * 閫氳繃excel瀵煎叆鏁版嵁
+     *
+     * @param request
+     * @param response
+     * @return
+     */
     //@RequiresPermissions("cms_cutting_receive:importExcel")
     @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
     public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
         return super.importExcel(request, response, CuttingReceive.class);
     }
 
-	 /**
-	  * 鏍规嵁棰嗙敤id鏌ヨ棰嗙敤鏄庣粏
-	  *
-	  * @param orderId
-	  * @return
-	  */
-	 @GetMapping("/detailList")
-	 public Result<?> detailList(@RequestParam("orderId") String orderId) {
-		 List<Map<String, Object>> list = cuttingReceiveDetailService.detailList(orderId);
-		 return Result.ok(list);
-	 }
+    /**
+     * 鏍规嵁棰嗙敤id鏌ヨ棰嗙敤鏄庣粏
+     *
+     * @param orderId
+     * @return
+     */
+    @GetMapping("/detailList")
+    public Result<?> detailList(@RequestParam("orderId") String orderId) {
+        List<Map<String, Object>> list = cuttingReceiveDetailService.detailList(orderId);
+        return Result.ok(list);
+    }
 
 }
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingToolController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingToolController.java
index c7d07ce..d650056 100644
--- a/src/main/java/org/jeecg/modules/cms/controller/CuttingToolController.java
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingToolController.java
@@ -40,145 +40,145 @@
 import io.swagger.annotations.ApiOperation;
 import org.jeecg.common.aspect.annotation.AutoLog;
 
- /**
+/**
  * @Description: 鍒�鍏蜂俊鎭�
  * @Author: jeecg-boot
- * @Date:   2025-07-28
+ * @Date: 2025-07-28
  * @Version: V1.0
  */
-@Api(tags="鍒�鍏蜂俊鎭�")
+@Api(tags = "鍒�鍏蜂俊鎭�")
 @RestController
 @RequestMapping("/cms/cuttingTool")
 @Slf4j
 public class CuttingToolController extends JeecgController<CuttingTool, ICuttingToolService> {
-	@Autowired
-	private ICuttingToolService cuttingToolService;
+    @Autowired
+    private ICuttingToolService cuttingToolService;
 
-	 @Autowired
-	 private ICuttingPropertiesService cuttingPropertiesService;
-	
-	/**
-	 * 鍒嗛〉鍒楄〃鏌ヨ
-	 *
-	 * @param cuttingTool
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	//@AutoLog(value = "鍒�鍏蜂俊鎭�-鍒嗛〉鍒楄〃鏌ヨ")
-	@ApiOperation(value="鍒�鍏蜂俊鎭�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏蜂俊鎭�-鍒嗛〉鍒楄〃鏌ヨ")
-	@GetMapping(value = "/list")
-	public Result<IPage<CuttingTool>> queryPageList(CuttingTool cuttingTool,
-								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-								   HttpServletRequest req) {
-		QueryWrapper<CuttingTool> queryWrapper = QueryGenerator.initQueryWrapper(cuttingTool, req.getParameterMap());
-		Page<CuttingTool> page = new Page<CuttingTool>(pageNo, pageSize);
-		IPage<CuttingTool> pageList = cuttingToolService.page(page, queryWrapper);
-		return Result.OK(pageList);
-	}
-	
-	/**
-	 *   娣诲姞
-	 *
-	 * @param cuttingTool
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏蜂俊鎭�-娣诲姞")
-	@ApiOperation(value="鍒�鍏蜂俊鎭�-娣诲姞", notes="鍒�鍏蜂俊鎭�-娣诲姞")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:add")
-	@PostMapping(value = "/add")
-	public Result<String> add(@RequestBody CuttingTool cuttingTool) {
-		cuttingToolService.save(cuttingTool);
-		List<CuttingProperties> cuttingPropertiesList = cuttingTool.getCuttingPropertiesList();
-		for (CuttingProperties cuttingProperties : cuttingPropertiesList) {
-			cuttingProperties.setCuttingId(cuttingTool.getId());
-			cuttingPropertiesService.save(cuttingProperties);
-		}
-		return Result.OK("娣诲姞鎴愬姛锛�");
-	}
-	
-	/**
-	 *  缂栬緫
-	 *
-	 * @param cuttingTool
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏蜂俊鎭�-缂栬緫")
-	@ApiOperation(value="鍒�鍏蜂俊鎭�-缂栬緫", notes="鍒�鍏蜂俊鎭�-缂栬緫")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:edit")
-	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-	public Result<String> edit(@RequestBody CuttingTool cuttingTool) {
-		cuttingToolService.saveOrUpdate(cuttingTool);
-		List<String> deletePropertiesIds = cuttingTool.getDeletePropertiesIds();
-		if (deletePropertiesIds != null) {
-			for (String deletePropertiesId : deletePropertiesIds) {
-				cuttingPropertiesService.removeById(deletePropertiesId);
-			}
-		}
-		List<CuttingProperties> cuttingPropertiesList = cuttingTool.getCuttingPropertiesList();
-		for (CuttingProperties cuttingProperties : cuttingPropertiesList) {
-			cuttingProperties.setCuttingId(cuttingTool.getId());
-			cuttingPropertiesService.saveOrUpdate(cuttingProperties);
-		}
-		return Result.OK("缂栬緫鎴愬姛!");
-	}
-	
-	/**
-	 *   閫氳繃id鍒犻櫎
-	 *
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏蜂俊鎭�-閫氳繃id鍒犻櫎")
-	@ApiOperation(value="鍒�鍏蜂俊鎭�-閫氳繃id鍒犻櫎", notes="鍒�鍏蜂俊鎭�-閫氳繃id鍒犻櫎")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:delete")
-	@DeleteMapping(value = "/delete")
-	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-		cuttingToolService.removeById(id);
-		cuttingPropertiesService.remove(new LambdaQueryWrapper<CuttingProperties>().eq(CuttingProperties::getCuttingId, id));
-		return Result.OK("鍒犻櫎鎴愬姛!");
-	}
-	
-	/**
-	 *  鎵归噺鍒犻櫎
-	 *
-	 * @param ids
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏蜂俊鎭�-鎵归噺鍒犻櫎")
-	@ApiOperation(value="鍒�鍏蜂俊鎭�-鎵归噺鍒犻櫎", notes="鍒�鍏蜂俊鎭�-鎵归噺鍒犻櫎")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:deleteBatch")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		this.cuttingToolService.removeByIds(Arrays.asList(ids.split(",")));
-		return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
-	}
-	
-	/**
-	 * 閫氳繃id鏌ヨ
-	 *
-	 * @param id
-	 * @return
-	 */
-	//@AutoLog(value = "鍒�鍏蜂俊鎭�-閫氳繃id鏌ヨ")
-	@ApiOperation(value="鍒�鍏蜂俊鎭�-閫氳繃id鏌ヨ", notes="鍒�鍏蜂俊鎭�-閫氳繃id鏌ヨ")
-	@GetMapping(value = "/queryById")
-	public Result<CuttingTool> queryById(@RequestParam(name="id",required=true) String id) {
-		CuttingTool cuttingTool = cuttingToolService.getById(id);
-		if(cuttingTool==null) {
-			return Result.error("鏈壘鍒板搴旀暟鎹�");
-		}
-		return Result.OK(cuttingTool);
-	}
+    @Autowired
+    private ICuttingPropertiesService cuttingPropertiesService;
 
     /**
-    * 瀵煎嚭excel
-    *
-    * @param request
-    * @param cuttingTool
-    */
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param cuttingTool
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "鍒�鍏蜂俊鎭�-鍒嗛〉鍒楄〃鏌ヨ")
+    @ApiOperation(value = "鍒�鍏蜂俊鎭�-鍒嗛〉鍒楄〃鏌ヨ", notes = "鍒�鍏蜂俊鎭�-鍒嗛〉鍒楄〃鏌ヨ")
+    @GetMapping(value = "/list")
+    public Result<IPage<CuttingTool>> queryPageList(CuttingTool cuttingTool,
+                                                    @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                    @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                    HttpServletRequest req) {
+        QueryWrapper<CuttingTool> queryWrapper = QueryGenerator.initQueryWrapper(cuttingTool, req.getParameterMap());
+        Page<CuttingTool> page = new Page<CuttingTool>(pageNo, pageSize);
+        IPage<CuttingTool> pageList = cuttingToolService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 娣诲姞
+     *
+     * @param cuttingTool
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏蜂俊鎭�-娣诲姞")
+    @ApiOperation(value = "鍒�鍏蜂俊鎭�-娣诲姞", notes = "鍒�鍏蜂俊鎭�-娣诲姞")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:add")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody CuttingTool cuttingTool) {
+        cuttingToolService.save(cuttingTool);
+        List<CuttingProperties> cuttingPropertiesList = cuttingTool.getCuttingPropertiesList();
+        for (CuttingProperties cuttingProperties : cuttingPropertiesList) {
+            cuttingProperties.setCuttingId(cuttingTool.getId());
+            cuttingPropertiesService.save(cuttingProperties);
+        }
+        return Result.OK("娣诲姞鎴愬姛锛�");
+    }
+
+    /**
+     * 缂栬緫
+     *
+     * @param cuttingTool
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏蜂俊鎭�-缂栬緫")
+    @ApiOperation(value = "鍒�鍏蜂俊鎭�-缂栬緫", notes = "鍒�鍏蜂俊鎭�-缂栬緫")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:edit")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody CuttingTool cuttingTool) {
+        cuttingToolService.saveOrUpdate(cuttingTool);
+        List<String> deletePropertiesIds = cuttingTool.getDeletePropertiesIds();
+        if (deletePropertiesIds != null) {
+            for (String deletePropertiesId : deletePropertiesIds) {
+                cuttingPropertiesService.removeById(deletePropertiesId);
+            }
+        }
+        List<CuttingProperties> cuttingPropertiesList = cuttingTool.getCuttingPropertiesList();
+        for (CuttingProperties cuttingProperties : cuttingPropertiesList) {
+            cuttingProperties.setCuttingId(cuttingTool.getId());
+            cuttingPropertiesService.saveOrUpdate(cuttingProperties);
+        }
+        return Result.OK("缂栬緫鎴愬姛!");
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏蜂俊鎭�-閫氳繃id鍒犻櫎")
+    @ApiOperation(value = "鍒�鍏蜂俊鎭�-閫氳繃id鍒犻櫎", notes = "鍒�鍏蜂俊鎭�-閫氳繃id鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:delete")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        cuttingToolService.removeById(id);
+        cuttingPropertiesService.remove(new LambdaQueryWrapper<CuttingProperties>().eq(CuttingProperties::getCuttingId, id));
+        return Result.OK("鍒犻櫎鎴愬姛!");
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏蜂俊鎭�-鎵归噺鍒犻櫎")
+    @ApiOperation(value = "鍒�鍏蜂俊鎭�-鎵归噺鍒犻櫎", notes = "鍒�鍏蜂俊鎭�-鎵归噺鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:deleteBatch")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.cuttingToolService.removeByIds(Arrays.asList(ids.split(",")));
+        return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
+    }
+
+    /**
+     * 閫氳繃id鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "鍒�鍏蜂俊鎭�-閫氳繃id鏌ヨ")
+    @ApiOperation(value = "鍒�鍏蜂俊鎭�-閫氳繃id鏌ヨ", notes = "鍒�鍏蜂俊鎭�-閫氳繃id鏌ヨ")
+    @GetMapping(value = "/queryById")
+    public Result<CuttingTool> queryById(@RequestParam(name = "id", required = true) String id) {
+        CuttingTool cuttingTool = cuttingToolService.getById(id);
+        if (cuttingTool == null) {
+            return Result.error("鏈壘鍒板搴旀暟鎹�");
+        }
+        return Result.OK(cuttingTool);
+    }
+
+    /**
+     * 瀵煎嚭excel
+     *
+     * @param request
+     * @param cuttingTool
+     */
     //@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:exportXls")
     @RequestMapping(value = "/exportXls")
     public ModelAndView exportXls(HttpServletRequest request, CuttingTool cuttingTool) {
@@ -186,30 +186,30 @@
     }
 
     /**
-      * 閫氳繃excel瀵煎叆鏁版嵁
-    *
-    * @param request
-    * @param response
-    * @return
-    */
+     * 閫氳繃excel瀵煎叆鏁版嵁
+     *
+     * @param request
+     * @param response
+     * @return
+     */
     //@RequiresPermissions("cms_cutting_tool:importExcel")
     @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
     public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
         return super.importExcel(request, response, CuttingTool.class);
     }
 
-
-	 @GetMapping(value = "/getCuttingToolList")
-	 public Result<?> getCuttingToolList(@RequestParam("pageNo") Integer pageNo,
-									   @RequestParam("pageSize") Integer pageSize,
-									   @RequestParam Map<String, Object> params) {
-		 IPage<Map<String, Object>> cuttingToolList = cuttingToolService.getCuttingToolList(pageNo, pageSize, params);
-		 for (Map<String, Object> record : cuttingToolList.getRecords()) {
-			 String cuttingId = (String) record.get("id");
-			 List<CuttingProperties> cuttingPropertiesList = cuttingPropertiesService.selectListByCuttingId(cuttingId);
-			 record.put("cuttingPropertiesList", cuttingPropertiesList);
-		 }
-		 return Result.ok(cuttingToolList);
-	 }
+    //閫夋嫨鍒�鍏风殑鎺ュ彛
+    @GetMapping(value = "/getCuttingToolList")
+    public Result<?> getCuttingToolList(@RequestParam("pageNo") Integer pageNo,
+                                        @RequestParam("pageSize") Integer pageSize,
+                                        @RequestParam Map<String, Object> params) {
+        IPage<Map<String, Object>> cuttingToolList = cuttingToolService.getCuttingToolList(pageNo, pageSize, params);
+        for (Map<String, Object> record : cuttingToolList.getRecords()) {
+            String cuttingId = (String) record.get("id");
+            List<CuttingProperties> cuttingPropertiesList = cuttingPropertiesService.selectListByCuttingId(cuttingId);
+            record.put("cuttingPropertiesList", cuttingPropertiesList);
+        }
+        return Result.ok(cuttingToolList);
+    }
 
 }
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java
index f9c7d7b..61c03b7 100644
--- a/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java
@@ -4,10 +4,8 @@
 import java.io.UnsupportedEncodingException;
 import java.util.Date;
 import java.math.BigDecimal;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableLogic;
+
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -57,6 +55,9 @@
     @ApiModelProperty(value = "鍒�鍏稩D")
     @Dict(dictTable = "cms_cutting_tool",dicCode="id",dicText = "cutting_code")
     private String cuttingId;
+
+    @TableField(exist = false) // 琛ㄧず杩欎笉鏄暟鎹簱瀛楁
+    private String cuttingCode;
 	/**鍒�鍏锋潯鐮�*/
 	@Excel(name = "鍒�鍏锋潯鐮�", width = 15)
     @ApiModelProperty(value = "鍒�鍏锋潯鐮�")
@@ -69,4 +70,11 @@
 	@Excel(name = "褰撳墠瀵垮懡(鐧惧垎姣�)", width = 15)
     @ApiModelProperty(value = "褰撳墠瀵垮懡(鐧惧垎姣�)")
     private BigDecimal currentLife;
+
+    // 鍦–uttingInventory瀹炰綋绫讳腑娣诲姞
+    @TableField(exist = false) // 琛ㄧず杩欎笉鏄暟鎹簱瀛楁
+    private String cuttingIdSearch;
+
+    @TableField(exist = false) // 琛ㄧず杩欎笉鏄暟鎹簱瀛楁
+    private String cuttingBarcodeSearch;
 }
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveDetailMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveDetailMapper.java
index 9113c5c..b134181 100644
--- a/src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveDetailMapper.java
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveDetailMapper.java
@@ -15,5 +15,5 @@
  */
 public interface CuttingReceiveDetailMapper extends BaseMapper<CuttingReceiveDetail> {
 
-    public List<Map<String, Object>> detailList(@Param("orderId") String orderId);
+    List<Map<String, Object>> detailList(@Param("orderId") String orderId);
 }
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundService.java
index c01d8f1..fd30f93 100644
--- a/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundService.java
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundService.java
@@ -15,4 +15,6 @@
  */
 public interface ICuttingInboundService extends IService<CuttingInbound> {
     Result<?> importExcelData(List<CuttingInboundExportVo> list);
+
+    Result<?> submit(String orderId);
 }
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveDetailService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveDetailService.java
index 1f02463..cb6f87f 100644
--- a/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveDetailService.java
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveDetailService.java
@@ -7,6 +7,7 @@
 import java.util.Map;
 
 /**
+ *
  * @Description: 棰嗙敤鍗曟槑缁�
  * @Author: jeecg-boot
  * @Date:   2025-07-28
@@ -14,5 +15,5 @@
  */
 public interface ICuttingReceiveDetailService extends IService<CuttingReceiveDetail> {
 
-    public List<Map<String, Object>> detailList(String orderId);
+    List<Map<String, Object>> detailList(String orderId);
 }
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java
index 991f67f..17ded30 100644
--- a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java
@@ -1,17 +1,25 @@
 package org.jeecg.modules.cms.service.impl;
 
+import io.micrometer.core.annotation.Timed;
+import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.cms.entity.CuttingInbound;
 import org.jeecg.modules.cms.entity.CuttingInboundDetail;
+import org.jeecg.modules.cms.entity.CuttingInboundInventory;
+import org.jeecg.modules.cms.entity.CuttingInventory;
 import org.jeecg.modules.cms.mapper.CuttingInboundMapper;
+import org.jeecg.modules.cms.service.ICuttingInboundInventoryService;
 import org.jeecg.modules.cms.service.ICuttingInboundService;
 import org.jeecg.modules.cms.service.ICuttingInboundDetailService;
+import org.jeecg.modules.cms.service.ICuttingInventoryService;
 import org.jeecg.modules.cms.vo.CuttingInboundExportVo;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,10 +30,18 @@
  * @Date:   2025-07-28
  * @Version: V1.0
  */
+
+@Slf4j
 @Service
 public class CuttingInboundServiceImpl extends ServiceImpl<CuttingInboundMapper, CuttingInbound> implements ICuttingInboundService {
     @Autowired
     private ICuttingInboundDetailService cuttingInboundDetailService; // 娉ㄥ叆浠庤〃鏈嶅姟
+
+    @Autowired
+    private ICuttingInventoryService cuttingInventoryService;
+
+    @Autowired
+    private ICuttingInboundInventoryService cuttingInboundInventoryService;
     /**
      * 閫氳繃Excel瀵煎叆鍒�鍏峰叆搴撳崟鏁版嵁
      *
@@ -35,39 +51,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Result<?> importExcelData(List<CuttingInboundExportVo> list) {
-//        try {
-//            for (CuttingInboundExportVo exportVo : list) {
-//                // 淇濆瓨涓昏〃鏁版嵁
-//                CuttingInbound cuttingInbound = new CuttingInbound();
-//                cuttingInbound.setReceiver(exportVo.getReceiver());
-//                cuttingInbound.setReceiveTime(exportVo.getReceiveTime());
-//                cuttingInbound.setReceiveComment(exportVo.getReceiveComment());
-//                cuttingInbound.setConfirmer(exportVo.getConfirmer());
-//                cuttingInbound.setConfirmTime(exportVo.getConfirmTime());
-//                cuttingInbound.setConfirmComment(exportVo.getConfirmComment());
-//                cuttingInbound.setOrderStatus(exportVo.getOrderStatus());
-//
-//                // 淇濆瓨涓昏〃鏁版嵁浠ヨ幏鍙朓D
-//                this.save(cuttingInbound);
-//
-//                // 鑾峰彇涓昏〃ID
-//                String orderId = cuttingInbound.getId();
-//
-//                // 澶勭悊浠庤〃鏁版嵁
-//                List<CuttingInboundDetail> detailList = exportVo.getDetailList();
-//                if (detailList != null && !detailList.isEmpty()) {
-//                    for (CuttingInboundDetail detail : detailList) {
-//                        detail.setOrderId(orderId); // 璁剧疆澶栭敭鍏宠仈
-//                        cuttingInboundDetailService.save(detail);
-//                    }
-//                }
-//            }
-//            return Result.ok("瀵煎叆鎴愬姛");
-//        } catch (Exception e) {
-//            log.error("瀵煎叆澶辫触", e);
-//            return Result.error("瀵煎叆澶辫触: " + e.getMessage());
-//        }
-//    }
+
         for (CuttingInboundExportVo exportVo : list) {
             // 淇濆瓨涓昏〃鏁版嵁
             CuttingInbound cuttingInbound = new CuttingInbound();
@@ -96,4 +80,88 @@
         }
         return Result.ok("瀵煎叆鎴愬姛");
     }
+
+
+    /*
+     * 鐢熸垚鍞竴鏉$爜鐨勬柟娉曪紙纭畾缂栫爜鐢熸垚瑙勫垯鍚庡湪姝ゅ閲嶅啓锛�
+     */
+    private String generateUniqueBarcode(String cuttingId, int index) {
+        // 鏉$爜鐢熸垚瑙勫垯绀轰緥锛氬垁鍏稩D + 搴忓彿(4浣�) + 闅忔満鏁�
+        return cuttingId + String.format("%04d", index + 1) + (int) (Math.random() * 10000);
+    }
+    @Override
+    @Timed(value = "cutting.inbound.submit", description = "鍒�鍏峰叆搴撴彁浜よ�楁椂")
+    public synchronized Result<?> submit(String orderId) {
+        long startTime = System.currentTimeMillis();
+        try {
+            // 1. 鏇存柊鍏ュ簱鍗曠姸鎬�
+            CuttingInbound cuttingInbound = this.getById(orderId);
+            if (cuttingInbound == null) {
+                return Result.error("鏈壘鍒板搴旂殑鍏ュ簱鍗�");
+            }
+
+            // 妫�鏌ュ叆搴撳崟鐘舵�侊紝鍙厑璁哥姸鎬佷负"1"鐨勫叆搴撳崟鎻愪氦
+            if (!"1".equals(cuttingInbound.getOrderStatus())) {
+                return Result.error("鍙湁鐘舵�佷负鏈彁浜ょ殑鍏ュ簱鍗曟墠鑳芥墽琛屾彁浜ゆ搷浣�");
+            }
+
+            cuttingInbound.setOrderStatus("2");
+            boolean updateResult = this.updateById(cuttingInbound);
+            if (!updateResult) {
+                return Result.error("鏇存柊鍏ュ簱鍗曠姸鎬佸け璐ワ紝鍙兘宸茶鍏朵粬鐢ㄦ埛澶勭悊");
+            }
+
+            // 2. 鑾峰彇鍏ュ簱鏄庣粏
+            List<CuttingInboundDetail> detailList = cuttingInboundDetailService.lambdaQuery()
+                    .eq(CuttingInboundDetail::getOrderId, orderId)
+                    .list();
+
+            // 3. 鏀堕泦鎵�鏈夐渶瑕佷繚瀛樼殑鏁版嵁
+            List<CuttingInventory> inventoryList = new ArrayList<>();
+            List<CuttingInboundInventory> inboundInventoryList = new ArrayList<>();
+
+            for (CuttingInboundDetail detail : detailList) {
+                int quantity = detail.getReceiveNumber() != null ? detail.getReceiveNumber().intValue() : 0;
+
+                for (int i = 0; i < quantity; i++) {
+                    // 鐢熸垚搴撳瓨璁板綍
+                    CuttingInventory cuttingInventory = new CuttingInventory();
+                    cuttingInventory.setCuttingId(detail.getCuttingId());
+                    cuttingInventory.setCuttingBarcode(generateUniqueBarcode(detail.getCuttingId(), i));
+                    cuttingInventory.setInventoryStatus("姝e父");
+                    cuttingInventory.setCurrentLife(BigDecimal.valueOf(100));
+                    inventoryList.add(cuttingInventory);
+                }
+            }
+
+            // 4. 鎵归噺淇濆瓨搴撳瓨璁板綍锛堜竴娆℃�ф搷浣滐級
+            if (!inventoryList.isEmpty()) {
+                cuttingInventoryService.saveBatch(inventoryList);
+
+                // 5. 涓烘瘡涓繚瀛樼殑搴撳瓨璁板綍鍒涘缓鍏宠仈鍏崇郴
+                for (CuttingInventory inventory : inventoryList) {
+                    CuttingInboundInventory cuttingInboundInventory = new CuttingInboundInventory();
+                    cuttingInboundInventory.setOrderId(orderId);
+                    cuttingInboundInventory.setInventoryId(inventory.getId());
+                    inboundInventoryList.add(cuttingInboundInventory);
+                }
+
+                // 6. 鎵归噺淇濆瓨鍏宠仈鍏崇郴锛堜竴娆℃�ф搷浣滐級
+                cuttingInboundInventoryService.saveBatch(inboundInventoryList);
+            }
+
+            long endTime = System.currentTimeMillis();
+            log.info("鍒�鍏峰叆搴撴彁浜ゅ畬鎴愶紝鑰楁椂: {} ms", (endTime - startTime));
+            return Result.ok("鎻愪氦鎴愬姛");
+
+        } catch (Exception e) {
+            long endTime = System.currentTimeMillis();
+            log.error("鎻愪氦鍏ュ簱鍗曞け璐ワ紝orderId: " + orderId + "锛岃�楁椂: " + (endTime - startTime) + " ms", e);
+            return Result.error("鎻愪氦澶辫触: " + e.getMessage());
+        }
+    }
+
+
+
+
 }
diff --git a/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java b/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java
index 94bf014..7b3bcf8 100644
--- a/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java
+++ b/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java
@@ -11,13 +11,13 @@
     @Excel(name = "NO", width = 15)
     private String itemCode;
 
-    @Excel(name = "閮ㄤ綅鍚嶇О", width = 15)
+    @Excel(name = "鐐规鍐呭", width = 15)
     private String itemName;
 
-    @Excel(name = "鐐规鍐呭", width = 15)
+    @Excel(name = "鐐规鏂规硶", width = 15)
     private String subItemName;
 
-    @Excel(name = "鐐规鏂规硶", width = 15)
+    @Excel(name = "閮ㄤ綅鍚嶇О", width = 15)
     private String itemPart;
 
     @Excel(name = "鍩哄噯", width = 15)
diff --git a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java
index 222c87a..00d0f04 100644
--- a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java
+++ b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java
@@ -9,38 +9,24 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.system.vo.LoginUser;
-import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.base.entity.Factory;
-import org.jeecg.modules.base.entity.LineSideWarehouse;
 import org.jeecg.modules.base.enums.ProductionTypeEnum;
 import org.jeecg.modules.base.service.IFactoryService;
-import org.jeecg.modules.base.service.ILineSideWarehouseService;
 import org.jeecg.modules.lsw.entity.LswMaterial;
-import org.jeecg.modules.lsw.entity.LswMaterialInventory;
 import org.jeecg.modules.lsw.enums.MaterialCategoryEnum;
-import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
 import org.jeecg.modules.lsw.service.ILswMaterialService;
-import org.jeecg.modules.lsw.vo.LswMaterialPage;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 
 /**
  * @Description: 绾胯竟搴撶墿鏂欎俊鎭�
@@ -55,10 +41,6 @@
 public class LswMaterialController {
     @Autowired
     private ILswMaterialService lswMaterialService;
-    @Autowired
-    private ILswMaterialInventoryService lswMaterialInventoryService;
-    @Autowired
-    private ILineSideWarehouseService lineSideWarehouseService;
     @Autowired
     private IFactoryService factoryService;
 
@@ -147,28 +129,6 @@
 
     }
 
-    /**
-     * 閫氳繃id鏌ヨ
-     *
-     * @param id
-     * @return
-     */
-    //@AutoLog(value = "鐗╂枡搴撳瓨淇℃伅閫氳繃涓昏〃ID鏌ヨ")
-    @ApiOperation(value = "鐗╂枡搴撳瓨淇℃伅涓昏〃ID鏌ヨ", notes = "鐗╂枡搴撳瓨淇℃伅-閫氫富琛↖D鏌ヨ")
-    @GetMapping(value = "/queryLswMaterialInventoryByMainId")
-    public Result<List<LswMaterialInventory>> queryLswMaterialInventoryListByMainId(@RequestParam(name = "id", required = true) String id) {
-        List<LswMaterialInventory> lswMaterialInventoryList = lswMaterialInventoryService.selectByMainId(id);
-        for (LswMaterialInventory lswMaterialInventory : lswMaterialInventoryList) {
-            if (StringUtils.isNotEmpty(lswMaterialInventory.getWarehouseId())) {
-                String warehouseId = lswMaterialInventory.getWarehouseId();
-                LineSideWarehouse warehouse = lineSideWarehouseService.getById(warehouseId);
-                lswMaterialInventory.setWarehouseName(warehouse.getWarehouseName());
-            }
-        }
-        return Result.OK(lswMaterialInventoryList);
-    }
-
-    @AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃浜х嚎绫诲瀷鏌ヨ绾胯竟搴撶墿鏂�")
     @ApiOperation(value = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃浜х嚎绫诲瀷鏌ヨ绾胯竟搴撶墿鏂�", notes = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃浜х嚎绫诲瀷鏌ヨ绾胯竟搴撶墿鏂�")
     @GetMapping(value = "/queryLswMaterialByProductionType")
     public Result<List<LswMaterial>> queryLswMaterialByProductionType(@RequestParam("factoryId") String factoryId) {
@@ -207,54 +167,19 @@
         return Result.OK(lswMaterialList);
     }
 
-    /**
-     * 瀵煎嚭excel
-     *
-     * @param request
-     * @param lswMaterial
-     */
-    //@RequiresPermissions("org.jeecg.modules:lsw_material:exportXls")
-    @RequestMapping(value = "/exportXls")
-    public ModelAndView exportXls(HttpServletRequest request, LswMaterial lswMaterial) {
-        // Step.1 缁勮鏌ヨ鏉′欢鏌ヨ鏁版嵁
-        QueryWrapper<LswMaterial> queryWrapper = QueryGenerator.initQueryWrapper(lswMaterial, request.getParameterMap());
-        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-
-        //閰嶇疆閫変腑鏁版嵁鏌ヨ鏉′欢
-        String selections = request.getParameter("selections");
-        if (oConvertUtils.isNotEmpty(selections)) {
-            List<String> selectionList = Arrays.asList(selections.split(","));
-            queryWrapper.in("id", selectionList);
+    @ApiOperation(value = "绾胯竟搴撶墿鏂欎俊鎭�-鏍规嵁鐗╂枡绫诲瀷鏌ヨ", notes = "绾胯竟搴撶墿鏂欎俊鎭�-鏍规嵁鐗╂枡绫诲瀷鏌ヨ")
+    @GetMapping(value = "/queryByMaterialCategory")
+    public Result<List<LswMaterial>> queryByMaterialCategory(@RequestParam("materialCategory") String materialCategory) {
+        if (StringUtils.isBlank(materialCategory)) {
+            return Result.ok(Collections.emptyList());
         }
-        //Step.2 鑾峰彇瀵煎嚭鏁版嵁
+        String[] split = materialCategory.split(",");
+        LambdaQueryWrapper<LswMaterial> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(LswMaterial::getMaterialCategory, Arrays.asList(split));
+        queryWrapper.eq(LswMaterial::getDelFlag, CommonConstant.DEL_FLAG_0);
+        queryWrapper.eq(LswMaterial::getMaterialStatus, CommonConstant.STATUS_1);
+        queryWrapper.orderByAsc(LswMaterial::getMaterialNumber);
         List<LswMaterial> lswMaterialList = lswMaterialService.list(queryWrapper);
-
-        // Step.3 缁勮pageList
-        List<LswMaterialPage> pageList = new ArrayList<LswMaterialPage>();
-        for (LswMaterial main : lswMaterialList) {
-            LswMaterialPage vo = new LswMaterialPage();
-            BeanUtils.copyProperties(main, vo);
-            List<LswMaterialInventory> lswMaterialInventoryList = lswMaterialInventoryService.selectByMainId(main.getId());
-            vo.setLswMaterialInventoryList(lswMaterialInventoryList);
-            pageList.add(vo);
-        }
-
-        // Step.4 AutoPoi 瀵煎嚭Excel
-        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-        mv.addObject(NormalExcelConstants.FILE_NAME, "绾胯竟搴撶墿鏂欎俊鎭垪琛�");
-        mv.addObject(NormalExcelConstants.CLASS, LswMaterialPage.class);
-        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("绾胯竟搴撶墿鏂欎俊鎭暟鎹�", "瀵煎嚭浜�:" + sysUser.getRealname(), "绾胯竟搴撶墿鏂欎俊鎭�"));
-        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
-        return mv;
+        return Result.ok(lswMaterialList);
     }
-
-    @GetMapping(value = "/searchlikeQuery")
-    public Result<?> searchlikeQuery(LswMaterial lswMaterial,
-                                     @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
-                                     @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
-                                     HttpServletRequest req) {
-        IPage<Map<String, Object>> pageList = lswMaterialService.getLswMaterialListData(pageNo, pageSize, req);
-        return Result.OK(pageList);
-    }
-
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInboundController.java b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInboundController.java
index 003adb1..26cf4b4 100644
--- a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInboundController.java
+++ b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInboundController.java
@@ -6,11 +6,12 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.modules.lsw.entity.LswMaterial;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.lsw.entity.LswMaterialInbound;
 import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,7 +31,7 @@
 */
 @Api(tags="鐗╂枡鍏ュ簱鍗�")
 @RestController
-@RequestMapping("/lswmaterialinbound/lswMaterialInbound")
+@RequestMapping("/lsw/materialInbound")
 @Slf4j
 public class LswMaterialInboundController extends JeecgController<LswMaterialInbound, ILswMaterialInboundService> {
    @Autowired
@@ -66,11 +67,21 @@
     */
    @AutoLog(value = "鐗╂枡鍏ュ簱鍗�-娣诲姞")
    @ApiOperation(value="鐗╂枡鍏ュ簱鍗�-娣诲姞", notes="鐗╂枡鍏ュ簱鍗�-娣诲姞")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material_inbound:add")
    @PostMapping(value = "/add")
    public Result<String> add(@RequestBody LswMaterialInbound lswMaterialInbound) {
-       lswMaterialInboundService.save(lswMaterialInbound);
-       return Result.OK("娣诲姞鎴愬姛锛�");
+       if(lswMaterialInbound == null){
+           return Result.error("鍏ュ簱淇℃伅涓嶈兘涓虹┖锛�");
+       }
+       LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+       if(sysUser == null){
+           return Result.error("鐢ㄦ埛淇℃伅鑾峰彇澶辫触锛�");
+       }
+       lswMaterialInbound.setReceiver(sysUser.getUsername());
+       boolean b = lswMaterialInboundService.inboundMaterial(lswMaterialInbound);
+       if(!b) {
+           return Result.error("鍏ュ簱澶辫触锛�");
+       }
+       return Result.OK("鍏ュ簱鎴愬姛锛�");
    }
 
    /**
diff --git a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInventoryController.java b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInventoryController.java
index 2a2f162..289372e 100644
--- a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInventoryController.java
+++ b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInventoryController.java
@@ -1,161 +1,74 @@
 package org.jeecg.modules.lsw.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
-import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.modules.lsw.entity.LswMaterialInventory;
+import org.jeecg.modules.lsw.enums.MaterialInventoryStatusEnum;
 import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
+import org.jeecg.modules.lsw.vo.MaterialInventoryStatisticsVO;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
+import java.util.List;
 
 /**
-* @Description: 鐗╂枡搴撳瓨淇℃伅
-* @Author: jeecg-boot
-* @Date:   2025-06-30
-* @Version: V1.0
-*/
-@Api(tags="鐗╂枡搴撳瓨淇℃伅")
+ * @Description: 鐗╂枡搴撳瓨淇℃伅
+ * @Author: jeecg-boot
+ * @Date: 2025-06-30
+ * @Version: V1.0
+ */
+@Api(tags = "鐗╂枡搴撳瓨淇℃伅")
 @RestController
-@RequestMapping("/lswmaterialinventory/lswMaterialInventory")
+@RequestMapping("/lsw/materialInventory")
 @Slf4j
 public class LswMaterialInventoryController extends JeecgController<LswMaterialInventory, ILswMaterialInventoryService> {
-   @Autowired
-   private ILswMaterialInventoryService lswMaterialInventoryService;
+    @Autowired
+    private ILswMaterialInventoryService lswMaterialInventoryService;
 
-   /**
-    * 鍒嗛〉鍒楄〃鏌ヨ
-    *
-    * @param lswMaterialInventory
-    * @param pageNo
-    * @param pageSize
-    * @param req
-    * @return
-    */
-   //@AutoLog(value = "鐗╂枡搴撳瓨淇℃伅-鍒嗛〉鍒楄〃鏌ヨ")
-   @ApiOperation(value="鐗╂枡搴撳瓨淇℃伅-鍒嗛〉鍒楄〃鏌ヨ", notes="鐗╂枡搴撳瓨淇℃伅-鍒嗛〉鍒楄〃鏌ヨ")
-   @GetMapping(value = "/list")
-   public Result<IPage<LswMaterialInventory>> queryPageList(LswMaterialInventory lswMaterialInventory,
-                                  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-                                  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-                                  HttpServletRequest req) {
-       QueryWrapper<LswMaterialInventory> queryWrapper = QueryGenerator.initQueryWrapper(lswMaterialInventory, req.getParameterMap());
-       Page<LswMaterialInventory> page = new Page<LswMaterialInventory>(pageNo, pageSize);
-       IPage<LswMaterialInventory> pageList = lswMaterialInventoryService.page(page, queryWrapper);
-       return Result.OK(pageList);
-   }
+    /**
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param materialId
+     * @param pageNo
+     * @param pageSize
+     * @return
+     */
+    @ApiOperation(value = "鐗╂枡搴撳瓨淇℃伅-鍒嗛〉鍒楄〃鏌ヨ", notes = "鐗╂枡搴撳瓨淇℃伅-鍒嗛〉鍒楄〃鏌ヨ")
+    @GetMapping(value = "/list")
+    public Result<IPage<LswMaterialInventory>> queryPageList(@RequestParam(name = "materialId", defaultValue = "null") String materialId,
+                                                             @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                             @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+        LambdaQueryWrapper<LswMaterialInventory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(LswMaterialInventory::getMaterialId, materialId);
+        queryWrapper.eq(LswMaterialInventory::getInventoryStatus, MaterialInventoryStatusEnum.NORMAL.name());
+        queryWrapper.orderByDesc(LswMaterialInventory::getCreateTime);
+        Page<LswMaterialInventory> page = new Page<LswMaterialInventory>(pageNo, pageSize);
+        IPage<LswMaterialInventory> pageList = lswMaterialInventoryService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
 
-   /**
-    *   娣诲姞
-    *
-    * @param lswMaterialInventory
-    * @return
-    */
-   @AutoLog(value = "鐗╂枡搴撳瓨淇℃伅-娣诲姞")
-   @ApiOperation(value="鐗╂枡搴撳瓨淇℃伅-娣诲姞", notes="鐗╂枡搴撳瓨淇℃伅-娣诲姞")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material_inventory:add")
-   @PostMapping(value = "/add")
-   public Result<String> add(@RequestBody LswMaterialInventory lswMaterialInventory) {
-       lswMaterialInventoryService.save(lswMaterialInventory);
-       return Result.OK("娣诲姞鎴愬姛锛�");
-   }
-
-   /**
-    *  缂栬緫
-    *
-    * @param lswMaterialInventory
-    * @return
-    */
-   @AutoLog(value = "鐗╂枡搴撳瓨淇℃伅-缂栬緫")
-   @ApiOperation(value="鐗╂枡搴撳瓨淇℃伅-缂栬緫", notes="鐗╂枡搴撳瓨淇℃伅-缂栬緫")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material_inventory:edit")
-   @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-   public Result<String> edit(@RequestBody LswMaterialInventory lswMaterialInventory) {
-       lswMaterialInventoryService.updateById(lswMaterialInventory);
-       return Result.OK("缂栬緫鎴愬姛!");
-   }
-
-   /**
-    *   閫氳繃id鍒犻櫎
-    *
-    * @param id
-    * @return
-    */
-   @AutoLog(value = "鐗╂枡搴撳瓨淇℃伅-閫氳繃id鍒犻櫎")
-   @ApiOperation(value="鐗╂枡搴撳瓨淇℃伅-閫氳繃id鍒犻櫎", notes="鐗╂枡搴撳瓨淇℃伅-閫氳繃id鍒犻櫎")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material_inventory:delete")
-   @DeleteMapping(value = "/delete")
-   public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-       lswMaterialInventoryService.removeById(id);
-       return Result.OK("鍒犻櫎鎴愬姛!");
-   }
-
-   /**
-    *  鎵归噺鍒犻櫎
-    *
-    * @param ids
-    * @return
-    */
-   @AutoLog(value = "鐗╂枡搴撳瓨淇℃伅-鎵归噺鍒犻櫎")
-   @ApiOperation(value="鐗╂枡搴撳瓨淇℃伅-鎵归噺鍒犻櫎", notes="鐗╂枡搴撳瓨淇℃伅-鎵归噺鍒犻櫎")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material_inventory:deleteBatch")
-   @DeleteMapping(value = "/deleteBatch")
-   public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-       this.lswMaterialInventoryService.removeByIds(Arrays.asList(ids.split(",")));
-       return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
-   }
-
-   /**
-    * 閫氳繃id鏌ヨ
-    *
-    * @param id
-    * @return
-    */
-   //@AutoLog(value = "鐗╂枡搴撳瓨淇℃伅-閫氳繃id鏌ヨ")
-   @ApiOperation(value="鐗╂枡搴撳瓨淇℃伅-閫氳繃id鏌ヨ", notes="鐗╂枡搴撳瓨淇℃伅-閫氳繃id鏌ヨ")
-   @GetMapping(value = "/queryById")
-   public Result<LswMaterialInventory> queryById(@RequestParam(name="id",required=true) String id) {
-       LswMaterialInventory lswMaterialInventory = lswMaterialInventoryService.getById(id);
-       if(lswMaterialInventory==null) {
-           return Result.error("鏈壘鍒板搴旀暟鎹�");
-       }
-       return Result.OK(lswMaterialInventory);
-   }
-
-   /**
-   * 瀵煎嚭excel
-   *
-   * @param request
-   * @param lswMaterialInventory
-   */
-   //@RequiresPermissions("org.jeecg.modules:lsw_material_inventory:exportXls")
-   @RequestMapping(value = "/exportXls")
-   public ModelAndView exportXls(HttpServletRequest request, LswMaterialInventory lswMaterialInventory) {
-       return super.exportXls(request, lswMaterialInventory, LswMaterialInventory.class, "鐗╂枡搴撳瓨淇℃伅");
-   }
-
-   /**
-     * 閫氳繃excel瀵煎叆鏁版嵁
-   *
-   * @param request
-   * @param response
-   * @return
-   */
-   //@RequiresPermissions("lsw_material_inventory:importExcel")
-   @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-   public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-       return super.importExcel(request, response, LswMaterialInventory.class);
-   }
-
+    @ApiOperation(value = "鐗╂枡搴撳瓨淇℃伅-缁熻鍚勭嚎杈瑰簱鐗╂枡涓暟", notes = "鐗╂枡搴撳瓨淇℃伅-缁熻鍚勭嚎杈瑰簱鐗╂枡涓暟")
+    @GetMapping(value = "/statisticsInventory")
+    public Result<String> statisticsInventory(@RequestParam(name = "materialId") String materialId) {
+        //搴撳瓨缁熻鏁伴噺
+        List<MaterialInventoryStatisticsVO> list = lswMaterialInventoryService.statisticsInventory(materialId);
+        if(CollectionUtil.isEmpty(list)){
+            return Result.OK("0");
+        }
+        StringBuilder sb = new StringBuilder();
+        for(MaterialInventoryStatisticsVO vo : list){
+            sb.append(vo.getWarehouseName()).append(": ").append(vo.getMaterialQuantity().stripTrailingZeros().toPlainString()).append(" | ");
+        }
+        return Result.OK(sb.toString());
+    }
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialOutboundController.java b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialOutboundController.java
index a2ceacd..8dc6662 100644
--- a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialOutboundController.java
+++ b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialOutboundController.java
@@ -7,164 +7,50 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.modules.lsw.entity.LswMaterialInbound;
 import org.jeecg.modules.lsw.entity.LswMaterialOutbound;
 import org.jeecg.modules.lsw.service.ILswMaterialOutboundService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
-import java.util.Map;
 
 /**
-* @Description: 鐗╂枡鍑哄簱鍗�
-* @Author: jeecg-boot
-* @Date:   2025-06-30
-* @Version: V1.0
-*/
-@Api(tags="鐗╂枡鍑哄簱鍗�")
+ * @Description: 鐗╂枡鍑哄簱鍗�
+ * @Author: jeecg-boot
+ * @Date: 2025-06-30
+ * @Version: V1.0
+ */
+@Api(tags = "鐗╂枡鍑哄簱鍗�")
 @RestController
-@RequestMapping("/lswmaterialoutbound/lswMaterialOutbound")
+@RequestMapping("/lsw/materialOutbound")
 @Slf4j
 public class LswMaterialOutboundController extends JeecgController<LswMaterialOutbound, ILswMaterialOutboundService> {
-   @Autowired
-   private ILswMaterialOutboundService lswMaterialOutboundService;
+    @Autowired
+    private ILswMaterialOutboundService lswMaterialOutboundService;
 
-   /**
-    * 鍒嗛〉鍒楄〃鏌ヨ
-    *
-    * @param lswMaterialOutbound
-    * @param pageNo
-    * @param pageSize
-    * @param req
-    * @return
-    */
-   //@AutoLog(value = "鐗╂枡鍑哄簱鍗�-鍒嗛〉鍒楄〃鏌ヨ")
-   @ApiOperation(value="鐗╂枡鍑哄簱鍗�-鍒嗛〉鍒楄〃鏌ヨ", notes="鐗╂枡鍑哄簱鍗�-鍒嗛〉鍒楄〃鏌ヨ")
-   @GetMapping(value = "/list")
-   public Result<IPage<LswMaterialOutbound>> queryPageList(LswMaterialOutbound lswMaterialOutbound,
-                                  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-                                  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-                                  HttpServletRequest req) {
-       QueryWrapper<LswMaterialOutbound> queryWrapper = QueryGenerator.initQueryWrapper(lswMaterialOutbound, req.getParameterMap());
-       Page<LswMaterialOutbound> page = new Page<LswMaterialOutbound>(pageNo, pageSize);
-       IPage<LswMaterialOutbound> pageList = lswMaterialOutboundService.page(page, queryWrapper);
-       return Result.OK(pageList);
-   }
-
-   /**
-    *   娣诲姞
-    *
-    * @param lswMaterialOutbound
-    * @return
-    */
-   @AutoLog(value = "鐗╂枡鍑哄簱鍗�-娣诲姞")
-   @ApiOperation(value="鐗╂枡鍑哄簱鍗�-娣诲姞", notes="鐗╂枡鍑哄簱鍗�-娣诲姞")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material_outbound:add")
-   @PostMapping(value = "/add")
-   public Result<String> add(@RequestBody LswMaterialOutbound lswMaterialOutbound) {
-       lswMaterialOutboundService.save(lswMaterialOutbound);
-       return Result.OK("娣诲姞鎴愬姛锛�");
-   }
-
-   /**
-    *  缂栬緫
-    *
-    * @param lswMaterialOutbound
-    * @return
-    */
-   @AutoLog(value = "鐗╂枡鍑哄簱鍗�-缂栬緫")
-   @ApiOperation(value="鐗╂枡鍑哄簱鍗�-缂栬緫", notes="鐗╂枡鍑哄簱鍗�-缂栬緫")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material_outbound:edit")
-   @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-   public Result<String> edit(@RequestBody LswMaterialOutbound lswMaterialOutbound) {
-       lswMaterialOutboundService.updateById(lswMaterialOutbound);
-       return Result.OK("缂栬緫鎴愬姛!");
-   }
-
-   /**
-    *   閫氳繃id鍒犻櫎
-    *
-    * @param id
-    * @return
-    */
-   @AutoLog(value = "鐗╂枡鍑哄簱鍗�-閫氳繃id鍒犻櫎")
-   @ApiOperation(value="鐗╂枡鍑哄簱鍗�-閫氳繃id鍒犻櫎", notes="鐗╂枡鍑哄簱鍗�-閫氳繃id鍒犻櫎")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material_outbound:delete")
-   @DeleteMapping(value = "/delete")
-   public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-       lswMaterialOutboundService.removeById(id);
-       return Result.OK("鍒犻櫎鎴愬姛!");
-   }
-
-   /**
-    *  鎵归噺鍒犻櫎
-    *
-    * @param ids
-    * @return
-    */
-   @AutoLog(value = "鐗╂枡鍑哄簱鍗�-鎵归噺鍒犻櫎")
-   @ApiOperation(value="鐗╂枡鍑哄簱鍗�-鎵归噺鍒犻櫎", notes="鐗╂枡鍑哄簱鍗�-鎵归噺鍒犻櫎")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material_outbound:deleteBatch")
-   @DeleteMapping(value = "/deleteBatch")
-   public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-       this.lswMaterialOutboundService.removeByIds(Arrays.asList(ids.split(",")));
-       return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
-   }
-
-   /**
-    * 閫氳繃id鏌ヨ
-    *
-    * @param id
-    * @return
-    */
-   //@AutoLog(value = "鐗╂枡鍑哄簱鍗�-閫氳繃id鏌ヨ")
-   @ApiOperation(value="鐗╂枡鍑哄簱鍗�-閫氳繃id鏌ヨ", notes="鐗╂枡鍑哄簱鍗�-閫氳繃id鏌ヨ")
-   @GetMapping(value = "/queryById")
-   public Result<LswMaterialOutbound> queryById(@RequestParam(name="id",required=true) String id) {
-       LswMaterialOutbound lswMaterialOutbound = lswMaterialOutboundService.getById(id);
-       if(lswMaterialOutbound==null) {
-           return Result.error("鏈壘鍒板搴旀暟鎹�");
-       }
-       return Result.OK(lswMaterialOutbound);
-   }
-
-   /**
-   * 瀵煎嚭excel
-   *
-   * @param request
-   * @param lswMaterialOutbound
-   */
-   //@RequiresPermissions("org.jeecg.modules:lsw_material_outbound:exportXls")
-   @RequestMapping(value = "/exportXls")
-   public ModelAndView exportXls(HttpServletRequest request, LswMaterialOutbound lswMaterialOutbound) {
-       return super.exportXls(request, lswMaterialOutbound, LswMaterialOutbound.class, "鐗╂枡鍑哄簱鍗�");
-   }
-
-   /**
-     * 閫氳繃excel瀵煎叆鏁版嵁
-   *
-   * @param request
-   * @param response
-   * @return
-   */
-   //@RequiresPermissions("lsw_material_outbound:importExcel")
-   @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-   public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-       return super.importExcel(request, response, LswMaterialOutbound.class);
-   }
-    @GetMapping(value = "/searchlikeQuery")
-    public Result<?> searchlikeQuery(LswMaterialOutbound lswMaterialOutbound,
-                                     @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-                                     @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-                                     HttpServletRequest req){
-        IPage<Map<String, Object>> pageList = lswMaterialOutboundService.getlswMaterialOutboundListData(pageNo,pageSize,req);
+    /**
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param lswMaterialOutbound
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @ApiOperation(value = "鐗╂枡鍑哄簱鍗�-鍒嗛〉鍒楄〃鏌ヨ", notes = "鐗╂枡鍑哄簱鍗�-鍒嗛〉鍒楄〃鏌ヨ")
+    @GetMapping(value = "/list")
+    public Result<IPage<LswMaterialOutbound>> queryPageList(LswMaterialOutbound lswMaterialOutbound,
+                                                            @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                            @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                            HttpServletRequest req) {
+        QueryWrapper<LswMaterialOutbound> queryWrapper = QueryGenerator.initQueryWrapper(lswMaterialOutbound, req.getParameterMap());
+        Page<LswMaterialOutbound> page = new Page<LswMaterialOutbound>(pageNo, pageSize);
+        IPage<LswMaterialOutbound> pageList = lswMaterialOutboundService.page(page, queryWrapper);
         return Result.OK(pageList);
     }
 
diff --git a/src/main/java/org/jeecg/modules/lsw/entity/LswMaterial.java b/src/main/java/org/jeecg/modules/lsw/entity/LswMaterial.java
index cf383c6..406e7ad 100644
--- a/src/main/java/org/jeecg/modules/lsw/entity/LswMaterial.java
+++ b/src/main/java/org/jeecg/modules/lsw/entity/LswMaterial.java
@@ -6,7 +6,6 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
diff --git a/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInbound.java b/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInbound.java
index 8827025..57edc9a 100644
--- a/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInbound.java
+++ b/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInbound.java
@@ -57,6 +57,12 @@
     @ApiModelProperty(value = "鍒犻櫎鏍囪")
     @TableLogic
     private Integer delFlag;
+    @Excel(name = "鏉ユ簮缂栫爜", width = 15)
+    @ApiModelProperty(value = "鏉ユ簮缂栫爜")
+    private String originalCode;
+    @Excel(name = "鏉ユ簮鍚嶇О", width = 15)
+    @ApiModelProperty(value = "鏉ユ簮鍚嶇О")
+    private String originalName;
 	/**浜х嚎ID*/
 	@Excel(name = "浜х嚎ID", width = 15)
     @ApiModelProperty(value = "浜х嚎ID")
@@ -83,9 +89,15 @@
 	@Excel(name = "鍏ュ簱鏁伴噺", width = 15)
     @ApiModelProperty(value = "鍏ュ簱鏁伴噺")
     private BigDecimal quantity;
+    /**鍏ュ簱绫诲瀷*/
+    @Excel(name = "鍏ュ簱绫诲瀷", width = 15)
+    @ApiModelProperty(value = "鍏ュ簱绫诲瀷")
+    @Dict(dicCode = "material_inbound_category")
+    private String inboundCategory;
 	/**鎺ユ敹浜�*/
 	@Excel(name = "鎺ユ敹浜�", width = 15)
     @ApiModelProperty(value = "鎺ユ敹浜�")
+    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
     private String receiver;
 	/**鎺ユ敹鏃堕棿*/
 	@Excel(name = "鎺ユ敹鏃堕棿", width = 20, format = "yyyy-MM-dd HH:mm:ss")
diff --git a/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInventory.java b/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInventory.java
index 73d6730..1dac62c 100644
--- a/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInventory.java
+++ b/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInventory.java
@@ -1,7 +1,6 @@
 package org.jeecg.modules.lsw.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -13,7 +12,6 @@
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.persistence.Table;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
@@ -42,14 +40,6 @@
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "鍒涘缓鏃ユ湡")
     private Date createTime;
-	/**鏇存柊浜�*/
-    @ApiModelProperty(value = "鏇存柊浜�")
-    private String updateBy;
-	/**鏇存柊鏃ユ湡*/
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "鏇存柊鏃ユ湡")
-    private Date updateTime;
 	/**鐗╂枡ID*/
     @ApiModelProperty(value = "鐗╂枡ID")
     private String materialId;
@@ -60,32 +50,36 @@
 	/**搴撳瓨绫诲瀷*/
 	@Excel(name = "搴撳瓨绫诲瀷", width = 15)
     @ApiModelProperty(value = "搴撳瓨绫诲瀷")
+    @Dict(dicCode = "material_inventory_category")
     private String inventoryCategory;
 	/**鏁伴噺*/
 	@Excel(name = "鏁伴噺", width = 15)
     @ApiModelProperty(value = "鏁伴噺")
     private BigDecimal quantity;
 	/**搴撳瓨鍦癐D*/
-	@Excel(name = "搴撳瓨鍦癐D", width = 15)
+	@Excel(name = "搴撳瓨鍦�", width = 15)
     @Dict(dictTable = "base_line_side_warehouse", dicCode = "id", dicText = "warehouse_name")
-    @ApiModelProperty(value = "搴撳瓨鍦癐D")
-    private String warehouseId;
-    @TableField(exist = false)
     @ApiModelProperty(value = "搴撳瓨鍦�")
-    private String warehouseName;
+    private String warehouseId;
 	/**搴撳瓨鐘舵��*/
 	@Excel(name = "搴撳瓨鐘舵��", width = 15)
     @ApiModelProperty(value = "搴撳瓨鐘舵��")
+    @Dict(dicCode = "material_inventory_status")
     private String inventoryStatus;
+    /**鐑鐞嗘爣璇�*/
+    @Excel(name = "鐑鐞嗘爣璇�", width = 15)
+    @ApiModelProperty(value = "鐑鐞嗘爣璇�")
+    private String heatTreatmentFlag;
 
     public LswMaterialInventory(){}
 
-    public LswMaterialInventory(LswMaterialInbound inbound, String materialId, String inventoryCategory) {
+    public LswMaterialInventory(LswMaterialInbound inbound, String materialId, String inventoryCategory, String heatTreatmentFlag) {
         this.warehouseId = inbound.getWarehouseId();
         this.quantity = inbound.getQuantity();
         this.batchNumber = inbound.getBatchNumber();
         this.inventoryStatus = MaterialInventoryStatusEnum.NORMAL.name();
         this.inventoryCategory = inventoryCategory;
         this.materialId = materialId;
+        this.heatTreatmentFlag = heatTreatmentFlag;
     }
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialOutbound.java b/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialOutbound.java
index 9130b9c..8463068 100644
--- a/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialOutbound.java
+++ b/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialOutbound.java
@@ -68,7 +68,6 @@
 	/**浜х嚎ID*/
 	@Excel(name = "浜х嚎ID", width = 15)
     @ApiModelProperty(value = "浜х嚎ID")
-    @Dict(dictTable = "base_factory", dicCode = "id", dicText = "factory_name")
     private String factoryId;
     /**搴撳瓨ID*/
     @Excel(name = "搴撳瓨ID", width = 15)
@@ -77,6 +76,7 @@
     /**绾胯竟搴揑D*/
     @Excel(name = "绾胯竟搴揑D", width = 15)
     @ApiModelProperty(value = "绾胯竟搴揑D")
+    @Dict(dictTable = "base_line_side_warehouse", dicCode = "id", dicText = "warehouse_name")
     private String warehouseId;
 	/**鎵规鍙�*/
 	@Excel(name = "鎵规鍙�", width = 15)
@@ -85,6 +85,7 @@
 	/**鍑哄簱浜�*/
 	@Excel(name = "鍑哄簱浜�", width = 15)
     @ApiModelProperty(value = "鍑哄簱浜�")
+    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
     private String outboundStaff;
 	/**鍑哄簱鏃堕棿*/
 	@Excel(name = "鍑哄簱鏃堕棿", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@@ -96,4 +97,9 @@
 	@Excel(name = "鍑哄簱鏁伴噺", width = 15)
     @ApiModelProperty(value = "鍑哄簱鏁伴噺")
     private BigDecimal quantity;
+    /**鍑哄簱绫诲瀷*/
+    @Excel(name = "鍑哄簱绫诲瀷", width = 15)
+    @ApiModelProperty(value = "鍑哄簱绫诲瀷")
+    @Dict(dicCode = "material_outbound_category")
+    private String outboundCategory;
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/enums/MaterialCategoryEnum.java b/src/main/java/org/jeecg/modules/lsw/enums/MaterialCategoryEnum.java
index 6037d5d..5595078 100644
--- a/src/main/java/org/jeecg/modules/lsw/enums/MaterialCategoryEnum.java
+++ b/src/main/java/org/jeecg/modules/lsw/enums/MaterialCategoryEnum.java
@@ -4,6 +4,8 @@
     FINISHED_PRODUCT, //鎴愬搧
     OUTER_FLANGE, //澶栨硶鍏�
     INNER_FLANGE, //鍐呮硶鍏�
+    SMALL_INNER_RING, //灏忓唴鍦�
+    STEEL_BALL, //閽㈢悆
     COMPONENTS, //閰嶄欢
     BLANK; //姣涘澂
 
diff --git a/src/main/java/org/jeecg/modules/lsw/enums/MaterialInboundCategory.java b/src/main/java/org/jeecg/modules/lsw/enums/MaterialInboundCategory.java
new file mode 100644
index 0000000..80c1bba
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/lsw/enums/MaterialInboundCategory.java
@@ -0,0 +1,11 @@
+package org.jeecg.modules.lsw.enums;
+
+public enum MaterialInboundCategory {
+    MATERIAL_TRANSFER_REQUEST, //鐗╂枡鎷夊姩
+    PRODUCTION_INBOUND,//鐢熶骇涓嬬嚎
+    HEAT_TREATMENT_INBOUND,//鐑鐞�
+    SMALL_INNER_RING,//灏忓唴鍦�
+    MATERIAL_INNER_TRANSFER, //鍐呴儴璋冩嫧
+    PRODUCTION_UNLOADING, //涓嬫枡
+    ;
+}
diff --git a/src/main/java/org/jeecg/modules/lsw/enums/MaterialInventoryCategoryEnum.java b/src/main/java/org/jeecg/modules/lsw/enums/MaterialInventoryCategoryEnum.java
index 8e59d15..b012957 100644
--- a/src/main/java/org/jeecg/modules/lsw/enums/MaterialInventoryCategoryEnum.java
+++ b/src/main/java/org/jeecg/modules/lsw/enums/MaterialInventoryCategoryEnum.java
@@ -3,5 +3,6 @@
 public enum MaterialInventoryCategoryEnum {
     INBOUND, //鍏ュ簱
     UNLOADING, //涓嬫枡
+    TRANSFER, //璋冩嫧
     ;
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/enums/MaterialOutboundCategory.java b/src/main/java/org/jeecg/modules/lsw/enums/MaterialOutboundCategory.java
new file mode 100644
index 0000000..344a9b3
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/lsw/enums/MaterialOutboundCategory.java
@@ -0,0 +1,8 @@
+package org.jeecg.modules.lsw.enums;
+
+public enum MaterialOutboundCategory {
+    MATERIAL_LOADING, //涓婃枡
+    WAREHOUSE_TRANSFER, //绉诲簱
+    MATERIAL_INNER_TRANSFER, //鍐呴儴璋冩嫧
+    ;
+}
diff --git a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java
index b755fe5..ff096c2 100644
--- a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java
+++ b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java
@@ -4,6 +4,7 @@
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.lsw.entity.LswMaterialInventory;
 import org.jeecg.modules.lsw.vo.LswMaterialInventoryVo;
+import org.jeecg.modules.lsw.vo.MaterialInventoryStatisticsVO;
 
 import java.util.List;
 
@@ -15,22 +16,13 @@
  */
 public interface LswMaterialInventoryMapper extends BaseMapper<LswMaterialInventory> {
 
-	/**
-	 * 閫氳繃涓昏〃id鍒犻櫎瀛愯〃鏁版嵁
-	 *
-	 * @param mainId 涓昏〃id
-	 * @return boolean
-	 */
-	public boolean deleteByMainId(@Param("mainId") String mainId);
-
-  /**
-   * 閫氳繃涓昏〃id鏌ヨ瀛愯〃鏁版嵁
-   *
-   * @param mainId 涓昏〃id
-   * @return List<LswMaterialInventory>
-   */
-	public List<LswMaterialInventory> selectByMainId(@Param("mainId") String mainId);
-
     List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(@Param("materialNumberList") List<String> bomMaterialNumberList,
 																				 @Param("factoryId") String factoryId);
+
+	/**
+	 * 搴撳瓨缁熻
+	 * @param materialId
+	 * @return
+	 */
+	List<MaterialInventoryStatisticsVO> statisticsInventory(@Param("materialId") String materialId);
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialMapper.java b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialMapper.java
index 194b9c9..db4a787 100644
--- a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialMapper.java
+++ b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialMapper.java
@@ -1,11 +1,7 @@
 package org.jeecg.modules.lsw.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.lsw.entity.LswMaterial;
-
-import java.util.Map;
 
 /**
  * @Description: 绾胯竟搴撶墿鏂欎俊鎭�
@@ -14,5 +10,5 @@
  * @Version: V1.0
  */
 public interface LswMaterialMapper extends BaseMapper<LswMaterial> {
-    IPage<Map<String, Object>> getLswMaterialListData(IPage<Map> pageData, @Param("params")Map<String, String> paramMap);
+
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml
index ef93fbc..e7ca719 100644
--- a/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml
+++ b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml
@@ -1,18 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.lsw.mapper.LswMaterialInventoryMapper">
-
-	<delete id="deleteByMainId" parameterType="java.lang.String">
-		DELETE 
-		FROM  lsw_material_inventory 
-		WHERE
-			 material_id = #{mainId} 	</delete>
-	
-	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.lsw.entity.LswMaterialInventory">
-		SELECT * 
-		FROM  lsw_material_inventory
-		WHERE
-			 material_id = #{mainId} 	</select>
     <select id="selectLineSideMaterialInventoryByMaterialNumber"
             resultType="org.jeecg.modules.lsw.vo.LswMaterialInventoryVo">
 		SELECT
@@ -31,4 +19,14 @@
 			t1.material_number,
 			t1.material_name
 	</select>
+	<select id="statisticsInventory" resultType="org.jeecg.modules.lsw.vo.MaterialInventoryStatisticsVO">
+        select m1.warehouse_id, m2.warehouse_name, m1.materialQuantity
+        from (select warehouse_id, SUM(quantity) as materialQuantity
+              from lsw_material_inventory
+              where material_id = #{materialId}
+              and inventory_status = 'NORMAL'
+              group by warehouse_id) m1
+        left join base_line_side_warehouse m2 on m1.warehouse_id = m2.id
+
+    </select>
 </mapper>
diff --git a/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialMapper.xml b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialMapper.xml
index 3b6fcef..885483d 100644
--- a/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialMapper.xml
+++ b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialMapper.xml
@@ -1,19 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.lsw.mapper.LswMaterialMapper">
-    <select id="getLswMaterialListData" parameterType="Map" resultType="Map">
-        select * from lsw_material WHERE 1=1
-        <if test="params.materialNumber != null and params.materialNumber != ''">
-            AND material_number LIKE CONCAT('%', #{params.materialNumber}, '%')
-        </if>
-        <if test="params.materialName != null and params.materialName != ''">
-            AND material_name LIKE CONCAT('%', #{params.materialName}, '%')
-        </if>
-        <if test="params.materialModel != null and params.materialModel != ''">
-            AND material_model LIKE CONCAT('%', #{params.materialModel}, '%')
-        </if>
-        <if test="params.materialCategory != null and params.materialCategory != ''">
-            AND material_category = #{params.materialCategory}
-        </if>
-    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java
index b7601f8..26c436b 100644
--- a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java
+++ b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java
@@ -3,24 +3,33 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.lsw.entity.LswMaterialInventory;
 import org.jeecg.modules.lsw.vo.LswMaterialInventoryVo;
+import org.jeecg.modules.lsw.vo.MaterialInventoryStatisticsVO;
 
 import java.util.List;
 
 /**
  * @Description: 鐗╂枡搴撳瓨淇℃伅
  * @Author: jeecg-boot
- * @Date:   2025-06-30
+ * @Date: 2025-06-30
  * @Version: V1.0
  */
 public interface ILswMaterialInventoryService extends IService<LswMaterialInventory> {
-
-	/**
-	 * 閫氳繃涓昏〃id鏌ヨ瀛愯〃鏁版嵁
-	 *
-	 * @param mainId 涓昏〃id
-	 * @return List<LswMaterialInventory>
-	 */
-	public List<LswMaterialInventory> selectByMainId(String mainId);
-	/** 閫氳繃鐗╂枡缂栫爜鍜岀嚎杈瑰簱id鏌ヨ鐗╂枡搴撳瓨 */
+    /** 閫氳繃鐗╂枡缂栫爜鍜岀嚎杈瑰簱id鏌ヨ鐗╂枡搴撳瓨 */
     List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(List<String> bomMaterialNumberList, String factoryId);
+
+    /**
+     * 搴撳瓨缁熻
+     * @param materialId 鐗╂枡ID
+     * @return
+     */
+    List<MaterialInventoryStatisticsVO> statisticsInventory(String materialId);
+
+    /**
+     * 鏌ヨ鏈嚭搴撲俊鎭�
+     * @param materialNumber
+     * @param batchNumber
+     * @param warehouseId
+     * @return
+     */
+    LswMaterialInventory queryByMaterialNumberAndBatchNumber(String materialNumber, String batchNumber, String warehouseId);
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialService.java b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialService.java
index ab49739..0698d51 100644
--- a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialService.java
+++ b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialService.java
@@ -1,12 +1,10 @@
 package org.jeecg.modules.lsw.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.lsw.entity.LswMaterial;
 import org.jeecg.modules.mes.entity.MesProductionOrder;
 import org.jeecg.modules.sap.dto.OrderBomDTO;
 
-import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
@@ -17,9 +15,6 @@
  * @Version: V1.0
  */
 public interface ILswMaterialService extends IService<LswMaterial> {
-
-
-	IPage<Map<String, Object>> getLswMaterialListData(Integer pageNo, Integer pageSize, HttpServletRequest req);
 
 	/**
 	 * 缂栬緫鐗╂枡淇℃伅
diff --git a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInboundServiceImpl.java b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInboundServiceImpl.java
index 3c2899e..6f444f9 100644
--- a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInboundServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInboundServiceImpl.java
@@ -5,12 +5,20 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.modules.base.entity.LineSideWarehouse;
+import org.jeecg.modules.base.service.ILineSideWarehouseService;
 import org.jeecg.modules.lsw.entity.LswMaterial;
 import org.jeecg.modules.lsw.entity.LswMaterialInbound;
 import org.jeecg.modules.lsw.entity.LswMaterialInventory;
+import org.jeecg.modules.lsw.entity.LswMaterialOutbound;
+import org.jeecg.modules.lsw.enums.MaterialInboundCategory;
+import org.jeecg.modules.lsw.enums.MaterialInventoryCategoryEnum;
+import org.jeecg.modules.lsw.enums.MaterialOutboundCategory;
 import org.jeecg.modules.lsw.mapper.LswMaterialInboundMapper;
 import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
 import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
+import org.jeecg.modules.lsw.service.ILswMaterialOutboundService;
 import org.jeecg.modules.lsw.service.ILswMaterialService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -33,6 +41,10 @@
     private ILswMaterialInventoryService inventoryService;
     @Autowired
     private ILswMaterialService materialService;
+    @Autowired
+    private ILineSideWarehouseService lineSideWarehouseService;
+    @Autowired
+    private ILswMaterialOutboundService materialOutboundService;
 
     @Override
     public IPage<Map<String, Object>> getlswMaterialInboundListData(Integer pageNo, Integer pageSize, HttpServletRequest req) {
@@ -60,20 +72,67 @@
                 || StringUtils.isBlank(materialInbound.getFactoryId())
                 || StringUtils.isBlank(materialInbound.getWarehouseId())
                 || materialInbound.getQuantity() == null
-                || materialInbound.getQuantity().intValue() > 0
-                || StringUtils.isBlank(materialInbound.getBatchNumber())) {
-            return false;
+                || materialInbound.getQuantity().intValue() < 1
+                || StringUtils.isBlank(materialInbound.getBatchNumber())
+                || StringUtils.isBlank(materialInbound.getOriginalCode())
+                || StringUtils.isBlank(materialInbound.getOriginalName())
+                || StringUtils.isBlank(materialInbound.getInboundCategory())) {
+            throw new JeecgBootException("鍙傛暟閿欒锛�");
         }
         LswMaterial material = materialService.queryByMaterialNumber(materialInbound.getMaterialNumber());
-        if(material == null) {
-            return false;
+        if (material == null) {
+            throw new JeecgBootException("鐗╂枡缂栧彿涓嶅瓨鍦紒");
+        }
+        LineSideWarehouse warehouse = lineSideWarehouseService.getById(materialInbound.getWarehouseId());
+        if (warehouse == null) {
+            throw new JeecgBootException("绾胯竟搴撲笉瀛樺湪锛�");
+        }
+        String heatTreatmentFlag = CommonConstant.STATUS_0;
+        if (materialInbound.getInboundCategory().equals(MaterialInboundCategory.HEAT_TREATMENT_INBOUND.name())) {
+            heatTreatmentFlag = CommonConstant.STATUS_1;
+        }
+        //搴撳瓨绫诲瀷
+        String inventoryCategory = MaterialInventoryCategoryEnum.INBOUND.name();
+        if (materialInbound.getInboundCategory().equals(MaterialInboundCategory.MATERIAL_INNER_TRANSFER.name())) {
+            inventoryCategory = MaterialInventoryCategoryEnum.TRANSFER.name();
+            //鏌ヨ鏉ユ簮绾胯竟搴�
+            LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.queryByWarehouseCode(materialInbound.getOriginalCode());
+            if (lineSideWarehouse == null) {
+                throw new JeecgBootException("鏈壘鍒版潵婧愮嚎杈瑰簱锛�");
+            }
+            //璋冩嫧 鍑哄簱鍘熷搴撳瓨
+            LswMaterialInventory originalInventory = inventoryService.queryByMaterialNumberAndBatchNumber(materialInbound.getMaterialNumber(), materialInbound.getBatchNumber(), lineSideWarehouse.getId());
+            if (originalInventory == null) {
+                throw new JeecgBootException("鏈壘鍒版潵婧愮嚎杈瑰簱搴撳瓨锛�");
+            }
+            if (materialInbound.getQuantity().compareTo(originalInventory.getQuantity()) != 0) {
+                throw new JeecgBootException("璋冩嫧鏁伴噺闇�瑕佺瓑浜庢潵婧愬簱瀛樻暟閲忥紒");
+            }
+            //鍑哄簱淇℃伅
+            LswMaterialOutbound outbound = new LswMaterialOutbound();
+            outbound.setWarehouseId(lineSideWarehouse.getId());
+            outbound.setFactoryId(lineSideWarehouse.getFactoryId());
+            outbound.setOutboundStaff(materialInbound.getReceiver());
+            outbound.setMaterialName(materialInbound.getMaterialName());
+            outbound.setMaterialNumber(materialInbound.getMaterialNumber());
+            outbound.setQuantity(originalInventory.getQuantity());
+            outbound.setBatchNumber(originalInventory.getBatchNumber());
+            outbound.setInventoryId(originalInventory.getId());
+            outbound.setOutboundCategory(MaterialOutboundCategory.MATERIAL_INNER_TRANSFER.name());
+            //璋冩嫧鍑哄簱
+            boolean b = materialOutboundService.outboundMaterial(outbound);
+            if (!b) {
+                throw new JeecgBootException("璋冩嫧鍑哄簱澶辫触锛�");
+            }
+        } else if (materialInbound.getInboundCategory().equals(MaterialInboundCategory.PRODUCTION_UNLOADING.name())) {
+            inventoryCategory = MaterialInventoryCategoryEnum.UNLOADING.name();
         }
         //淇濆瓨鍏ュ簱淇℃伅
         materialInbound.setDelFlag(CommonConstant.DEL_FLAG_0);
         materialInbound.setReceiveTime(new Date());
         super.save(materialInbound);
         //淇濆瓨搴撳瓨淇℃伅
-        LswMaterialInventory lswMaterialInventory = new LswMaterialInventory(materialInbound, material.getId(), material.getMaterialCategory());
+        LswMaterialInventory lswMaterialInventory = new LswMaterialInventory(materialInbound, material.getId(), inventoryCategory, heatTreatmentFlag);
         inventoryService.save(lswMaterialInventory);
         return true;
     }
diff --git a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java
index fc0a4da..11de910 100644
--- a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java
@@ -1,35 +1,55 @@
 package org.jeecg.modules.lsw.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.lsw.entity.LswMaterial;
 import org.jeecg.modules.lsw.entity.LswMaterialInventory;
+import org.jeecg.modules.lsw.enums.MaterialInventoryStatusEnum;
 import org.jeecg.modules.lsw.mapper.LswMaterialInventoryMapper;
 import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
+import org.jeecg.modules.lsw.service.ILswMaterialService;
 import org.jeecg.modules.lsw.vo.LswMaterialInventoryVo;
+import org.jeecg.modules.lsw.vo.MaterialInventoryStatisticsVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.Collections;
 import java.util.List;
 
 /**
  * @Description: 鐗╂枡搴撳瓨淇℃伅
  * @Author: jeecg-boot
- * @Date:   2025-06-30
+ * @Date: 2025-06-30
  * @Version: V1.0
  */
 @Service
 public class LswMaterialInventoryServiceImpl extends ServiceImpl<LswMaterialInventoryMapper, LswMaterialInventory> implements ILswMaterialInventoryService {
-	
-	@Autowired
-	private LswMaterialInventoryMapper lswMaterialInventoryMapper;
-	
-	@Override
-	public List<LswMaterialInventory> selectByMainId(String mainId) {
-		return lswMaterialInventoryMapper.selectByMainId(mainId);
-	}
+
+    @Autowired
+    private LswMaterialInventoryMapper lswMaterialInventoryMapper;
+    @Autowired
+    private ILswMaterialService materialService;
 
     @Override
     public List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(List<String> bomMaterialNumberList, String factoryId) {
-		return lswMaterialInventoryMapper.selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, factoryId);
+        return lswMaterialInventoryMapper.selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, factoryId);
+    }
+
+    @Override
+    public List<MaterialInventoryStatisticsVO> statisticsInventory(String materialId) {
+        return lswMaterialInventoryMapper.statisticsInventory(materialId);
+    }
+
+    @Override
+    public LswMaterialInventory queryByMaterialNumberAndBatchNumber(String materialNumber, String batchNumber, String warehouseId) {
+        LswMaterial material = materialService.queryByMaterialNumber(materialNumber);
+        if (material == null) {
+            return null;
+        }
+        LambdaQueryWrapper<LswMaterialInventory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(LswMaterialInventory::getWarehouseId, warehouseId);
+        queryWrapper.eq(LswMaterialInventory::getMaterialId, material.getId());
+        queryWrapper.eq(LswMaterialInventory::getBatchNumber, batchNumber);
+        queryWrapper.eq(LswMaterialInventory::getInventoryStatus, MaterialInventoryStatusEnum.NORMAL.name());
+        return lswMaterialInventoryMapper.selectOne(queryWrapper);
     }
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialOutboundServiceImpl.java b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialOutboundServiceImpl.java
index bf8c3db..362e04f 100644
--- a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialOutboundServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialOutboundServiceImpl.java
@@ -62,13 +62,13 @@
                 || StringUtils.isBlank(outbound.getFactoryId())
                 || StringUtils.isBlank(outbound.getWarehouseId())
                 || outbound.getQuantity() == null
-                || outbound.getQuantity().intValue() > 0
+                || outbound.getQuantity().intValue() < 1
                 || StringUtils.isBlank(outbound.getBatchNumber())
-        || StringUtils.isBlank(outbound.getInventoryId())) {
+                || StringUtils.isBlank(outbound.getInventoryId())) {
             return false;
         }
         LswMaterialInventory inventory = materialInventoryService.getById(outbound.getInventoryId());
-        if(inventory == null) {
+        if (inventory == null) {
             return false;
         }
         //鏇存柊搴撳瓨鐘舵��
diff --git a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialServiceImpl.java b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialServiceImpl.java
index 3590878..f9f93f1 100644
--- a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialServiceImpl.java
@@ -2,28 +2,21 @@
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.modules.lsw.entity.LswMaterial;
-import org.jeecg.modules.lsw.entity.LswMaterialInventory;
-import org.jeecg.modules.lsw.mapper.LswMaterialInventoryMapper;
 import org.jeecg.modules.lsw.mapper.LswMaterialMapper;
 import org.jeecg.modules.lsw.service.ILswMaterialService;
 import org.jeecg.modules.mes.entity.MesProductionOrder;
-import org.jeecg.modules.pms.entity.PmsProcessBillMaterials;
 import org.jeecg.modules.sap.dto.OrderBomDTO;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.servlet.http.HttpServletRequest;
-import java.io.Serializable;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 绾胯竟搴撶墿鏂欎俊鎭�
@@ -33,33 +26,6 @@
  */
 @Service
 public class LswMaterialServiceImpl extends ServiceImpl<LswMaterialMapper, LswMaterial> implements ILswMaterialService {
-
-    @Autowired
-    private LswMaterialMapper lswMaterialMapper;
-    @Autowired
-    private LswMaterialInventoryMapper lswMaterialInventoryMapper;
-
-    @Override
-    public IPage<Map<String, Object>> getLswMaterialListData(Integer pageNo, Integer pageSize, HttpServletRequest req) {
-        IPage<Map> pageData = new Page<Map>(pageNo, pageSize);
-        Map<String, String> paramMap = new HashMap<String, String>();
-        Map<String, String[]> parameterMap = req.getParameterMap();
-        if (null != parameterMap) {
-            if (parameterMap.containsKey("materialNumber") && StringUtils.isNotBlank(parameterMap.get("materialNumber")[0])) {
-                paramMap.put("materialNumber", parameterMap.get("materialNumber")[0]);
-            }
-            if (parameterMap.containsKey("materialName") && StringUtils.isNotBlank(parameterMap.get("materialName")[0])) {
-                paramMap.put("materialName", parameterMap.get("materialName")[0].trim());
-            }
-            if (parameterMap.containsKey("materialModel") && StringUtils.isNotBlank(parameterMap.get("materialModel")[0])) {
-                paramMap.put("materialModel", parameterMap.get("materialModel")[0].trim());
-            }
-            if (parameterMap.containsKey("materialCategory") && StringUtils.isNotBlank(parameterMap.get("materialCategory")[0])) {
-                paramMap.put("materialCategory", parameterMap.get("materialCategory")[0].trim());
-            }
-        }
-        return super.getBaseMapper().getLswMaterialListData(pageData, paramMap);
-    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
diff --git a/src/main/java/org/jeecg/modules/lsw/vo/LswMaterialPage.java b/src/main/java/org/jeecg/modules/lsw/vo/LswMaterialPage.java
deleted file mode 100644
index 44d8f6c..0000000
--- a/src/main/java/org/jeecg/modules/lsw/vo/LswMaterialPage.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.jeecg.modules.lsw.vo;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecg.modules.lsw.entity.LswMaterialInventory;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.jeecgframework.poi.excel.annotation.ExcelCollection;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * @Description: 绾胯竟搴撶墿鏂欎俊鎭�
- * @Author: jeecg-boot
- * @Date:   2025-06-30
- * @Version: V1.0
- */
-@Data
-@ApiModel(value="lsw_materialPage瀵硅薄", description="绾胯竟搴撶墿鏂欎俊鎭�")
-public class LswMaterialPage {
-
-	/**涓婚敭*/
-	@ApiModelProperty(value = "涓婚敭")
-    private String id;
-	/**鍒涘缓浜�*/
-	@ApiModelProperty(value = "鍒涘缓浜�")
-    private String createBy;
-	/**鍒涘缓鏃ユ湡*/
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	@ApiModelProperty(value = "鍒涘缓鏃ユ湡")
-    private Date createTime;
-	/**鏇存柊浜�*/
-	@ApiModelProperty(value = "鏇存柊浜�")
-    private String updateBy;
-	/**鏇存柊鏃ユ湡*/
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	@ApiModelProperty(value = "鏇存柊鏃ユ湡")
-    private Date updateTime;
-	/**鎵�灞為儴闂�*/
-	@ApiModelProperty(value = "鎵�灞為儴闂�")
-    private String sysOrgCode;
-	/**鍒犻櫎鏍囪*/
-	@Excel(name = "鍒犻櫎鏍囪", width = 15)
-	@ApiModelProperty(value = "鍒犻櫎鏍囪")
-    private Integer delFlag;
-	/**鐗╂枡缂栫爜*/
-	@Excel(name = "鐗╂枡缂栫爜", width = 15)
-	@ApiModelProperty(value = "鐗╂枡缂栫爜")
-    private String materialNumber;
-	/**鐗╂枡鍚嶇О*/
-	@Excel(name = "鐗╂枡鍚嶇О", width = 15)
-	@ApiModelProperty(value = "鐗╂枡鍚嶇О")
-    private String materialName;
-	/**鐗╂枡鍨嬪彿*/
-	@Excel(name = "鐗╂枡鍨嬪彿", width = 15)
-	@ApiModelProperty(value = "鐗╂枡鍨嬪彿")
-    private String materialModel;
-	/**鐗╂枡绫诲瀷*/
-	@Excel(name = "鐗╂枡绫诲瀷", width = 15, dicCode = "material_category")
-    @Dict(dicCode = "material_category")
-	@ApiModelProperty(value = "鐗╂枡绫诲瀷")
-    private String materialCategory;
-	/**鍗曚綅*/
-	@Excel(name = "鍗曚綅", width = 15)
-	@ApiModelProperty(value = "鍗曚綅")
-    private String materialUnit;
-
-	@ExcelCollection(name="鐗╂枡搴撳瓨淇℃伅")
-	@ApiModelProperty(value = "鐗╂枡搴撳瓨淇℃伅")
-	private List<LswMaterialInventory> lswMaterialInventoryList;
-
-}
diff --git a/src/main/java/org/jeecg/modules/lsw/vo/MaterialInventoryStatisticsVO.java b/src/main/java/org/jeecg/modules/lsw/vo/MaterialInventoryStatisticsVO.java
new file mode 100644
index 0000000..d85ccc8
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/lsw/vo/MaterialInventoryStatisticsVO.java
@@ -0,0 +1,15 @@
+package org.jeecg.modules.lsw.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class MaterialInventoryStatisticsVO {
+    //搴撳瓨鍦癐D
+    private String warehouseId;
+    //搴撳瓨鍦板悕绉�
+    private String warehouseName;
+    //搴撳瓨鎬绘暟
+    private BigDecimal materialQuantity;
+}
diff --git a/src/main/java/org/jeecg/modules/wms/MESObjectFactory.java b/src/main/java/org/jeecg/modules/wms/MESObjectFactory.java
deleted file mode 100644
index aecbbed..0000000
--- a/src/main/java/org/jeecg/modules/wms/MESObjectFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.jeecg.modules.wms;
-
-import org.jeecg.modules.wms.dto.ReceiveWMSScanItemListResponse;
-import org.jeecg.modules.wms.dto.WSResponse;
-import org.jeecg.modules.wms.request.ReceiveWMSScanItemList;
-import org.jeecg.modules.wms.request.WMSWebServiceSendItem;
-
-import javax.xml.bind.annotation.XmlRegistry;
-
-@XmlRegistry
-public class MESObjectFactory {
-    /**
-     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.tempuri
-     *
-     */
-    public MESObjectFactory() {
-    }
-
-    /**
-     * Create an instance of {@link ReceiveWMSScanItemList }
-     *
-     */
-    public ReceiveWMSScanItemList createReceiveWMSScanItemList() {
-        return new ReceiveWMSScanItemList();
-    }
-
-    /**
-     * Create an instance of {@link WMSWebServiceSendItem }
-     *
-     */
-    public WMSWebServiceSendItem createWMSWebServiceSendItem() {
-        return new WMSWebServiceSendItem();
-    }
-
-    /**
-     * Create an instance of {@link ReceiveWMSScanItemListResponse }
-     *
-     */
-    public ReceiveWMSScanItemListResponse createReceiveWMSScanItemListResponse() {
-        return new ReceiveWMSScanItemListResponse();
-    }
-
-    /**
-     * Create an instance of {@link WSResponse }
-     *
-     */
-    public WSResponse createWSResponse() {
-        return new WSResponse();
-    }
-
-}
diff --git a/src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java b/src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java
index bc5f335..435c724 100644
--- a/src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java
+++ b/src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java
@@ -1,7 +1,6 @@
 package org.jeecg.modules.wms.config;
 
 import org.apache.cxf.Bus;
-import org.apache.cxf.bus.spring.SpringBus;
 import org.apache.cxf.jaxws.EndpointImpl;
 import org.apache.cxf.transport.servlet.CXFServlet;
 import org.jeecg.modules.wms.service.MESWebServiceSoap;
@@ -16,12 +15,9 @@
 @Configuration
 public class WebServiceServerConfig {
     @Autowired
-    private MESWebServiceSoap webServiceSoap;
-
-    @Bean(name = Bus.DEFAULT_BUS_ID)
-    public Bus springBus() {
-        return new SpringBus();
-    }
+    private Bus bus;
+    @Autowired
+    private MESWebServiceSoap mesWebServiceSoap;
 
     @Bean(name = "cxfServlet")  // 娉ㄥ叆servlet bean name涓嶈兘dispatcherServlet ,鍚﹀垯浼氳鐩杁ispatcherServlet
     public ServletRegistrationBean<CXFServlet> cxfServlet() {
@@ -31,9 +27,10 @@
     @Bean
     public Endpoint endpoint() {
         // 鍙傛暟浜岋紝鏄疭EI瀹炵幇绫诲璞�
-        Endpoint endpoint = new EndpointImpl(this.springBus(), webServiceSoap);
+        Endpoint endpoint = new EndpointImpl(bus, mesWebServiceSoap);
         // 鍙戝竷鏈嶅姟
         endpoint.publish("/MESWebService");
+
         return endpoint;
     }
 }
diff --git a/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java b/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java
index 2e3eaad..39e9527 100644
--- a/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java
+++ b/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java
@@ -5,7 +5,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.modules.wms.dto.WSResponse;
+import org.jeecg.modules.wms.dto.MESResponse;
 import org.jeecg.modules.wms.request.*;
 import org.jeecg.modules.wms.service.MESWebServiceSoap;
 import org.jeecg.modules.wms.service.WMSWebServiceClient;
@@ -35,7 +35,7 @@
         MESWebServiceSoap service = (MESWebServiceSoap) factory.create();
         ReceiveWMSScanItemList request = new ReceiveWMSScanItemList();
         request.setWmsWebServiceSendItemList(list);
-        WSResponse response = service.receiveWMSScanItemList(request);
+        MESResponse response = service.receiveWMSScanItemList(request);
         return Result.ok(response);
     }
 
diff --git a/src/main/java/org/jeecg/modules/wms/dto/MESResponse.java b/src/main/java/org/jeecg/modules/wms/dto/MESResponse.java
new file mode 100644
index 0000000..4aa1594
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/wms/dto/MESResponse.java
@@ -0,0 +1,23 @@
+package org.jeecg.modules.wms.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+@Getter
+@Setter
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MESResponse",  propOrder = {
+        "errorCode",
+        "errorDesc"
+}, namespace = "http://xhj008.server.webservice.com/")
+public class MESResponse {
+    @XmlElement(name = "ErrorCode", namespace = "http://xhj008.server.webservice.com/")
+    protected String errorCode;
+    @XmlElement(name = "ErrorDesc", namespace = "http://xhj008.server.webservice.com/")
+    protected String errorDesc;
+}
diff --git a/src/main/java/org/jeecg/modules/wms/dto/ReceiveWMSScanItemListResponse.java b/src/main/java/org/jeecg/modules/wms/dto/ReceiveWMSScanItemListResponse.java
index f2da1d4..6b5c57a 100644
--- a/src/main/java/org/jeecg/modules/wms/dto/ReceiveWMSScanItemListResponse.java
+++ b/src/main/java/org/jeecg/modules/wms/dto/ReceiveWMSScanItemListResponse.java
@@ -8,11 +8,11 @@
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "", propOrder = {
         "receiveWMSScanItemListResult"
-})
-@XmlRootElement(name = "ReceiveWMSScanItemListResponse")
+}, namespace = "http://xhj008.server.webservice.com/")
+@XmlRootElement(name = "ReceiveWMSScanItemListResponse", namespace = "http://xhj008.server.webservice.com/")
 @Getter
 @Setter
 public class ReceiveWMSScanItemListResponse {
-    @XmlElement(name = "ReceiveWMSScanItemListResult")
-    protected WSResponse receiveWMSScanItemListResult;
+    @XmlElement(name = "ReceiveWMSScanItemListResult", namespace = "http://xhj008.server.webservice.com/")
+    protected MESResponse receiveWMSScanItemListResult;
 }
diff --git a/src/main/java/org/jeecg/modules/wms/request/ReceiveWMSScanItemList.java b/src/main/java/org/jeecg/modules/wms/request/ReceiveWMSScanItemList.java
index 1ccdc62..5e22ba5 100644
--- a/src/main/java/org/jeecg/modules/wms/request/ReceiveWMSScanItemList.java
+++ b/src/main/java/org/jeecg/modules/wms/request/ReceiveWMSScanItemList.java
@@ -9,13 +9,13 @@
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "", propOrder = {
         "wmsWebServiceSendItemList"
-})
-@XmlRootElement(name = "ReceiveWMSScanItemList")
+}, namespace = "http://xhj008.server.webservice.com/")
+@XmlRootElement(name = "ReceiveWMSScanItemList", namespace = "http://xhj008.server.webservice.com/")
 @Getter
 @Setter
 public class ReceiveWMSScanItemList {
 
-    @XmlElementWrapper(name = "ArrayOfWMSWebServiceSendItem")
-    @XmlElement(name = "WMSWebServiceSendItem", nillable = true)
+    @XmlElementWrapper(name = "ArrayOfWMSWebServiceSendItem", namespace = "http://xhj008.server.webservice.com/")
+    @XmlElement(name = "WMSWebServiceSendItem", nillable = true, namespace = "http://xhj008.server.webservice.com/")
     protected List<WMSWebServiceSendItem> wmsWebServiceSendItemList;
 }
diff --git a/src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java b/src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java
index 2e527e0..3fe2499 100644
--- a/src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java
+++ b/src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java
@@ -31,62 +31,62 @@
         "stageID",
         "remark",
         "orderCode"
-})
+}, namespace = "http://xhj008.server.webservice.com/")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class WMSWebServiceSendItem {
 
     /**宸ュ巶缂栫爜 */
-    @XmlElement(name = "FactoryCode")
+    @XmlElement(name = "FactoryCode", namespace = "http://xhj008.server.webservice.com/")
     private String factoryCode;
     /** 鐗╂枡缂栫爜 */
-    @XmlElement(name = "SkuCode")
+    @XmlElement(name = "SkuCode", namespace = "http://xhj008.server.webservice.com/")
     private String skuCode;
     /** 棰勭暀鍙� */
-    @XmlElement(name = "ReservationOrder")
+    @XmlElement(name = "ReservationOrder", namespace = "http://xhj008.server.webservice.com/")
     private String reservationOrder;
     /** MES绉诲簱鍗曞彿 */
-    @XmlElement(name = "Align")
+    @XmlElement(name = "Align", namespace = "http://xhj008.server.webservice.com/")
     private String align;
     /** 鎵樺彿 */
-    @XmlElement(name = "Pallet")
+    @XmlElement(name = "Pallet", namespace = "http://xhj008.server.webservice.com/")
     private String pallet;
     /** 鍖呰缂栫爜 */
-    @XmlElement(name = "PackageNo")
+    @XmlElement(name = "PackageNo", namespace = "http://xhj008.server.webservice.com/")
     private String packageNo;
     /** 鎵规鍙� */
-    @XmlElement(name = "TrackLot")
+    @XmlElement(name = "TrackLot", namespace = "http://xhj008.server.webservice.com/")
     private String trackLot;
     /** 绯诲垪鍙� */
-    @XmlElement(name = "Series")
+    @XmlElement(name = "Series", namespace = "http://xhj008.server.webservice.com/")
     private String series;
     /** MES搴撳瓨ID */
-    @XmlElement(name = "MesStockID")
+    @XmlElement(name = "MesStockID", namespace = "http://xhj008.server.webservice.com/")
     private String mesStockID;
     /** 鏁伴噺 */
-    @XmlElement(name = "Quantity")
+    @XmlElement(name = "Quantity", namespace = "http://xhj008.server.webservice.com/")
     private BigDecimal quantity;
     /** SAP鎵规鍙� */
-    @XmlElement(name = "SapTrackLot")
+    @XmlElement(name = "SapTrackLot", namespace = "http://xhj008.server.webservice.com/")
     private String sapTrackLot;
     /** 鍙戦�佸簱瀛樺湴 */
-    @XmlElement(name = "Section")
+    @XmlElement(name = "Section", namespace = "http://xhj008.server.webservice.com/")
     private String section;
     /** 鐩爣搴撳瓨鍦� */
-    @XmlElement(name = "DestSection")
+    @XmlElement(name = "DestSection", namespace = "http://xhj008.server.webservice.com/")
     private String destSection;
     /** 渚涘簲鍟嗕唬鐮� */
-    @XmlElement(name = "SupplierCode")
+    @XmlElement(name = "SupplierCode", namespace = "http://xhj008.server.webservice.com/")
     private String supplierCode;
     /** 渚涘簲鍟嗘壒娆″彿 */
-    @XmlElement(name = "SupplierTrackLot")
+    @XmlElement(name = "SupplierTrackLot", namespace = "http://xhj008.server.webservice.com/")
     private String supplierTrackLot;
     /** 闃舵ID */
-    @XmlElement(name = "StageID")
+    @XmlElement(name = "StageID", namespace = "http://xhj008.server.webservice.com/")
     private String stageID;
     /** 澶囨敞 */
-    @XmlElement(name = "Remark")
+    @XmlElement(name = "Remark", namespace = "http://xhj008.server.webservice.com/")
     private String remark;
     /** 璁㈠崟缂栫爜 */
-    @XmlElement(name = "OrderCode")
+    @XmlElement(name = "OrderCode", namespace = "http://xhj008.server.webservice.com/")
     private String orderCode;
 }
diff --git a/src/main/java/org/jeecg/modules/wms/service/MESWebServiceSoap.java b/src/main/java/org/jeecg/modules/wms/service/MESWebServiceSoap.java
index 80bbc38..0dffadb 100644
--- a/src/main/java/org/jeecg/modules/wms/service/MESWebServiceSoap.java
+++ b/src/main/java/org/jeecg/modules/wms/service/MESWebServiceSoap.java
@@ -1,28 +1,27 @@
 package org.jeecg.modules.wms.service;
 
-import org.jeecg.modules.wms.MESObjectFactory;
-import org.jeecg.modules.wms.dto.WSResponse;
+import org.jeecg.modules.wms.dto.MESResponse;
 import org.jeecg.modules.wms.request.ReceiveWMSScanItemList;
 
 import javax.jws.WebMethod;
 import javax.jws.WebParam;
 import javax.jws.WebResult;
 import javax.jws.WebService;
-import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.ws.RequestWrapper;
 import javax.xml.ws.ResponseWrapper;
 
 @WebService(name = "MESWebServiceSoap", targetNamespace = "http://xhj008.server.webservice.com/")
-@XmlSeeAlso({MESObjectFactory.class})
 public interface MESWebServiceSoap {
     /**
      * 鎺ユ敹WMS绉诲簱淇℃伅
-     * @param request
+     * @param wmsWebServiceSendItemList
      * @return
      */
     @WebMethod(operationName = "ReceiveWMSScanItemList", action = "http://xhj008.server.webservice.com/ReceiveWMSScanItemList")
     @RequestWrapper(localName = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemList")
     @ResponseWrapper(localName = "ReceiveWMSScanItemListResponse", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemListResponse")
     @WebResult(name = "ReceiveWMSScanItemListResult", targetNamespace = "http://xhj008.server.webservice.com/")
-    WSResponse receiveWMSScanItemList(@WebParam(name = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/") ReceiveWMSScanItemList request);
+    MESResponse receiveWMSScanItemList(
+            @WebParam(name = "wmsWebServiceSendItemList", targetNamespace = "http:/xhj008.server.webservice.com/")
+            ReceiveWMSScanItemList wmsWebServiceSendItemList);
 }
diff --git a/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java b/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java
index 31ce6f0..8ccba0d 100644
--- a/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java
+++ b/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java
@@ -11,6 +11,7 @@
 import org.jeecg.modules.lsw.entity.LswMaterialInbound;
 import org.jeecg.modules.lsw.entity.LswMaterialInventory;
 import org.jeecg.modules.lsw.entity.LswMaterialOutbound;
+import org.jeecg.modules.lsw.enums.MaterialInboundCategory;
 import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
 import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
 import org.jeecg.modules.lsw.service.ILswMaterialOutboundService;
@@ -21,7 +22,7 @@
 import org.jeecg.modules.mes.enums.TransferOrderStatusEnum;
 import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService;
 import org.jeecg.modules.mes.service.IMesTransferOrderPrintService;
-import org.jeecg.modules.wms.dto.WSResponse;
+import org.jeecg.modules.wms.dto.MESResponse;
 import org.jeecg.modules.wms.request.ReceiveWMSScanItemList;
 import org.jeecg.modules.wms.request.WMSWebServiceSendItem;
 import org.jeecg.modules.wms.service.MESWebServiceSoap;
@@ -29,17 +30,12 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebResult;
 import javax.jws.WebService;
-import javax.xml.ws.RequestWrapper;
-import javax.xml.ws.ResponseWrapper;
 import java.math.BigDecimal;
 
 
 @Slf4j
-@Service
+@Service("MESWebServiceSoap")
 @WebService(name = "MESWebServiceSoap", targetNamespace = "http://xhj008.server.webservice.com", endpointInterface = "org.jeecg.modules.wms.service.MESWebServiceSoap")
 public class MESWebServiceSoapImpl implements MESWebServiceSoap {
 
@@ -60,13 +56,9 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    @WebMethod(operationName = "ReceiveWMSScanItemList", action = "http://xhj008.server.webservice.com/ReceiveWMSScanItemList")
-    @RequestWrapper(localName = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemList")
-    @ResponseWrapper(localName = "ReceiveWMSScanItemListResponse", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemListResponse")
-    @WebResult(name = "ReceiveWMSScanItemListResult", targetNamespace = "http://xhj008.server.webservice.com/")
     @ApiLog(apiName = "鎺ユ敹WMS鐨勭Щ搴撲俊鎭�(ReceiveWMSScanItemList(MES)", apiCategory = ApiLogCategoryEnum.WMS)
-    public WSResponse receiveWMSScanItemList(@WebParam(name = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/") ReceiveWMSScanItemList request) {
-        WSResponse response = new WSResponse();
+    public MESResponse receiveWMSScanItemList(ReceiveWMSScanItemList request) {
+        MESResponse response = new MESResponse();
         if (request == null || CollectionUtil.isEmpty(request.getWmsWebServiceSendItemList())) {
             response.setErrorCode("N");
             response.setErrorDesc("浼犲叆鐨勫弬鏁颁负绌猴紒");
@@ -107,6 +99,8 @@
 
                 //娣诲姞鍏ュ簱淇℃伅
                 LswMaterialInbound inbound = new LswMaterialInbound();
+                inbound.setOriginalCode(transferRequest.getOriginalWarehouseId());
+                inbound.setOriginalName("WMS");
                 inbound.setWarehouseId(transferRequest.getTargetWarehouseId());
                 inbound.setReceiver("WMS");
                 inbound.setMaterialNumber(transferRequest.getMaterialNumber());
@@ -114,6 +108,7 @@
                 inbound.setBatchNumber(item.getTrackLot());
                 inbound.setQuantity(item.getQuantity());
                 inbound.setFactoryId(warehouse.getFactoryId());
+                inbound.setInboundCategory(MaterialInboundCategory.MATERIAL_TRANSFER_REQUEST.name());
                 boolean b = materialInboundService.inboundMaterial(inbound);
                 if (!b) {
                     errorCount++;

--
Gitblit v1.9.3