From 8c945d42c6610abd9ef17bc153114024175bec2a Mon Sep 17 00:00:00 2001
From: houshuai <17802598606@163.com>
Date: 星期四, 03 七月 2025 19:43:12 +0800
Subject: [PATCH] 线边库和订单 基本搭建

---
 src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsDetailServiceImpl.java |   48 +
 src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInboundController.java               |   11 
 src/main/java/org/jeecg/modules/lsw/entity/LswMaterialOutbound.java                            |    4 
 src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialMapper.java                              |    6 
 src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInboundServiceImpl.java            |   27 
 src/main/java/org/jeecg/modules/pms/controller/PmsProcessBillMaterialsDetailController.java    |  182 ++++++
 src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialMapper.xml                           |   16 
 src/main/java/org/jeecg/modules/pms/service/impl/PmsMaterialProcessServiceImpl.java            |   43 +
 src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInbound.java                             |    5 
 src/main/java/org/jeecg/modules/pms/mapper/PmsMaterialProcessMapper.java                       |   18 
 src/main/java/org/jeecg/modules/pms/mapper/PmsProcessBillMaterialsDetailMapper.java            |   19 
 src/main/java/org/jeecg/modules/pms/controller/PmsProcessBillMaterialsController.java          |  172 ++++++
 src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInboundMapper.xml                    |   13 
 src/main/java/org/jeecg/modules/pms/entity/PmsProcessBillMaterials.java                        |   82 ++
 src/main/java/org/jeecg/modules/lsw/service/ILswMaterialService.java                           |    5 
 src/main/java/org/jeecg/modules/pms/mapper/xml/PmsMaterialProcessMapper.xml                    |   13 
 src/main/java/org/jeecg/modules/pms/mapper/xml/PmsProcessBillMaterialsDetailMapper.xml         |   17 
 src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInboundService.java                    |    6 
 src/main/java/org/jeecg/modules/pms/mapper/xml/PmsProcessBillMaterialsMapper.xml               |   13 
 src/main/java/org/jeecg/modules/pms/service/IPmsProcessBillMaterialsDetailService.java         |   19 
 src/main/java/org/jeecg/modules/lsw/controller/LswMaterialOutboundController.java              |   10 
 src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialOutboundMapper.java                      |    6 
 src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInboundMapper.java                       |    6 
 src/main/java/org/jeecg/modules/pms/entity/PmsMaterialProcess.java                             |   84 +++
 src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialOutboundServiceImpl.java           |   25 
 src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java                      |  423 +++++++-------
 src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsServiceImpl.java       |   43 +
 src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialOutboundMapper.xml                   |   13 
 src/main/java/org/jeecg/modules/pms/service/IPmsMaterialProcessService.java                    |   18 
 src/main/java/org/jeecg/codegenerate/JeecgOneUtil.java                                         |    8 
 src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInventory.java                           |    9 
 src/main/java/org/jeecg/modules/pms/service/IPmsProcessBillMaterialsService.java               |   18 
 src/main/java/org/jeecg/modules/lsw/service/ILswMaterialOutboundService.java                   |    6 
 src/main/java/org/jeecg/modules/pms/entity/PmsProcessBillMaterialsDetail.java                  |   70 ++
 src/main/java/org/jeecg/modules/pms/controller/PmsMaterialProcessController.java               |  172 ++++++
 src/main/java/org/jeecg/modules/pms/mapper/PmsProcessBillMaterialsMapper.java                  |   18 
 src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialServiceImpl.java                   |   30 +
 37 files changed, 1,460 insertions(+), 218 deletions(-)

diff --git a/src/main/java/org/jeecg/codegenerate/JeecgOneUtil.java b/src/main/java/org/jeecg/codegenerate/JeecgOneUtil.java
index 7e6311b..3fe39ee 100644
--- a/src/main/java/org/jeecg/codegenerate/JeecgOneUtil.java
+++ b/src/main/java/org/jeecg/codegenerate/JeecgOneUtil.java
@@ -6,10 +6,10 @@
 public class JeecgOneUtil {
     public static void main(String[] args) throws Exception {
         TableVo tableVo = new TableVo();
-        tableVo.setTableName("eam_equipment_scrap");
-        tableVo.setEntityName("EamEquipmentScrap");
-        tableVo.setEntityPackage("eam");
-        tableVo.setFtlDescription("璁惧鎶ュ簾(杞)");
+        tableVo.setTableName("lsw_material");
+        tableVo.setEntityName("LswMaterial");
+        tableVo.setEntityPackage("lsw");
+        tableVo.setFtlDescription("绾胯竟搴撶墿鏂欎俊鎭�");
         new CodeGenerateOne(tableVo).generateCodeFile(null);
     }
 }
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 a9c9e20..3f0c60a 100644
--- a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java
+++ b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java
@@ -6,12 +6,15 @@
 import io.swagger.annotations.Api;
 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.system.query.QueryGenerator;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
+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.LswMaterialInventory;
 import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
@@ -38,223 +41,241 @@
 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("/lswmaterial/lswMaterial")
 @Slf4j
 public class LswMaterialController {
-   @Autowired
-   private ILswMaterialService lswMaterialService;
-   @Autowired
-   private ILswMaterialInventoryService lswMaterialInventoryService;
+    @Autowired
+    private ILswMaterialService lswMaterialService;
+    @Autowired
+    private ILswMaterialInventoryService lswMaterialInventoryService;
+    @Autowired
+    private ILineSideWarehouseService lineSideWarehouseService;
 
-   /**
-    * 鍒嗛〉鍒楄〃鏌ヨ
-    *
-    * @param lswMaterial
-    * @param pageNo
-    * @param pageSize
-    * @param req
-    * @return
-    */
-   //@AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-鍒嗛〉鍒楄〃鏌ヨ")
-   @ApiOperation(value="绾胯竟搴撶墿鏂欎俊鎭�-鍒嗛〉鍒楄〃鏌ヨ", notes="绾胯竟搴撶墿鏂欎俊鎭�-鍒嗛〉鍒楄〃鏌ヨ")
-   @GetMapping(value = "/list")
-   public Result<IPage<LswMaterial>> queryPageList(LswMaterial lswMaterial,
-                                  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-                                  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-                                  HttpServletRequest req) {
-       QueryWrapper<LswMaterial> queryWrapper = QueryGenerator.initQueryWrapper(lswMaterial, req.getParameterMap());
-       Page<LswMaterial> page = new Page<LswMaterial>(pageNo, pageSize);
-       IPage<LswMaterial> pageList = lswMaterialService.page(page, queryWrapper);
-       return Result.OK(pageList);
-   }
+    /**
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param lswMaterial
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-鍒嗛〉鍒楄〃鏌ヨ")
+    @ApiOperation(value = "绾胯竟搴撶墿鏂欎俊鎭�-鍒嗛〉鍒楄〃鏌ヨ", notes = "绾胯竟搴撶墿鏂欎俊鎭�-鍒嗛〉鍒楄〃鏌ヨ")
+    @GetMapping(value = "/list")
+    public Result<IPage<LswMaterial>> queryPageList(LswMaterial lswMaterial,
+                                                    @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                    @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                    HttpServletRequest req) {
+        QueryWrapper<LswMaterial> queryWrapper = QueryGenerator.initQueryWrapper(lswMaterial, req.getParameterMap());
+        Page<LswMaterial> page = new Page<LswMaterial>(pageNo, pageSize);
+        IPage<LswMaterial> pageList = lswMaterialService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
 
-   /**
-    *   娣诲姞
-    *
-    * @param lswMaterialPage
-    * @return
-    */
-   @AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-娣诲姞")
-   @ApiOperation(value="绾胯竟搴撶墿鏂欎俊鎭�-娣诲姞", notes="绾胯竟搴撶墿鏂欎俊鎭�-娣诲姞")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material:add")
-   @PostMapping(value = "/add")
-   public Result<String> add(@RequestBody LswMaterialPage lswMaterialPage) {
-       LswMaterial lswMaterial = new LswMaterial();
-       BeanUtils.copyProperties(lswMaterialPage, lswMaterial);
-       lswMaterialService.saveMain(lswMaterial, lswMaterialPage.getLswMaterialInventoryList());
-       return Result.OK("娣诲姞鎴愬姛锛�");
-   }
+    /**
+     * 娣诲姞
+     *
+     * @param lswMaterialPage
+     * @return
+     */
+    @AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-娣诲姞")
+    @ApiOperation(value = "绾胯竟搴撶墿鏂欎俊鎭�-娣诲姞", notes = "绾胯竟搴撶墿鏂欎俊鎭�-娣诲姞")
+    //@RequiresPermissions("org.jeecg.modules:lsw_material:add")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody LswMaterialPage lswMaterialPage) {
+        LswMaterial lswMaterial = new LswMaterial();
+        BeanUtils.copyProperties(lswMaterialPage, lswMaterial);
+        lswMaterialService.saveMain(lswMaterial, lswMaterialPage.getLswMaterialInventoryList());
+        return Result.OK("娣诲姞鎴愬姛锛�");
+    }
 
-   /**
-    *  缂栬緫
-    *
-    * @param lswMaterialPage
-    * @return
-    */
-   @AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-缂栬緫")
-   @ApiOperation(value="绾胯竟搴撶墿鏂欎俊鎭�-缂栬緫", notes="绾胯竟搴撶墿鏂欎俊鎭�-缂栬緫")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material:edit")
-   @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-   public Result<String> edit(@RequestBody LswMaterialPage lswMaterialPage) {
-       LswMaterial lswMaterial = new LswMaterial();
-       BeanUtils.copyProperties(lswMaterialPage, lswMaterial);
-       LswMaterial lswMaterialEntity = lswMaterialService.getById(lswMaterial.getId());
-       if(lswMaterialEntity==null) {
-           return Result.error("鏈壘鍒板搴旀暟鎹�");
-       }
-       lswMaterialService.updateMain(lswMaterial, lswMaterialPage.getLswMaterialInventoryList());
-       return Result.OK("缂栬緫鎴愬姛!");
-   }
+    /**
+     * 缂栬緫
+     *
+     * @param lswMaterialPage
+     * @return
+     */
+    @AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-缂栬緫")
+    @ApiOperation(value = "绾胯竟搴撶墿鏂欎俊鎭�-缂栬緫", notes = "绾胯竟搴撶墿鏂欎俊鎭�-缂栬緫")
+    //@RequiresPermissions("org.jeecg.modules:lsw_material:edit")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody LswMaterialPage lswMaterialPage) {
+        LswMaterial lswMaterial = new LswMaterial();
+        BeanUtils.copyProperties(lswMaterialPage, lswMaterial);
+        LswMaterial lswMaterialEntity = lswMaterialService.getById(lswMaterial.getId());
+        if (lswMaterialEntity == null) {
+            return Result.error("鏈壘鍒板搴旀暟鎹�");
+        }
+        lswMaterialService.updateMain(lswMaterial, lswMaterialPage.getLswMaterialInventoryList());
+        return Result.OK("缂栬緫鎴愬姛!");
+    }
 
-   /**
-    *   閫氳繃id鍒犻櫎
-    *
-    * @param id
-    * @return
-    */
-   @AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鍒犻櫎")
-   @ApiOperation(value="绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鍒犻櫎", notes="绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鍒犻櫎")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material:delete")
-   @DeleteMapping(value = "/delete")
-   public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-       lswMaterialService.delMain(id);
-       return Result.OK("鍒犻櫎鎴愬姛!");
-   }
+    /**
+     * 閫氳繃id鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鍒犻櫎")
+    @ApiOperation(value = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鍒犻櫎", notes = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:lsw_material:delete")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        lswMaterialService.delMain(id);
+        return Result.OK("鍒犻櫎鎴愬姛!");
+    }
 
-   /**
-    *  鎵归噺鍒犻櫎
-    *
-    * @param ids
-    * @return
-    */
-   @AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-鎵归噺鍒犻櫎")
-   @ApiOperation(value="绾胯竟搴撶墿鏂欎俊鎭�-鎵归噺鍒犻櫎", notes="绾胯竟搴撶墿鏂欎俊鎭�-鎵归噺鍒犻櫎")
-   //@RequiresPermissions("org.jeecg.modules:lsw_material:deleteBatch")
-   @DeleteMapping(value = "/deleteBatch")
-   public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-       this.lswMaterialService.delBatchMain(Arrays.asList(ids.split(",")));
-       return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�");
-   }
+    /**
+     * 鎵归噺鍒犻櫎
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-鎵归噺鍒犻櫎")
+    @ApiOperation(value = "绾胯竟搴撶墿鏂欎俊鎭�-鎵归噺鍒犻櫎", notes = "绾胯竟搴撶墿鏂欎俊鎭�-鎵归噺鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:lsw_material:deleteBatch")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.lswMaterialService.delBatchMain(Arrays.asList(ids.split(",")));
+        return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�");
+    }
 
-   /**
-    * 閫氳繃id鏌ヨ
-    *
-    * @param id
-    * @return
-    */
-   //@AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鏌ヨ")
-   @ApiOperation(value="绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鏌ヨ", notes="绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鏌ヨ")
-   @GetMapping(value = "/queryById")
-   public Result<LswMaterial> queryById(@RequestParam(name="id",required=true) String id) {
-       LswMaterial lswMaterial = lswMaterialService.getById(id);
-       if(lswMaterial==null) {
-           return Result.error("鏈壘鍒板搴旀暟鎹�");
-       }
-       return Result.OK(lswMaterial);
+    /**
+     * 閫氳繃id鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鏌ヨ")
+    @ApiOperation(value = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鏌ヨ", notes = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃id鏌ヨ")
+    @GetMapping(value = "/queryById")
+    public Result<LswMaterial> queryById(@RequestParam(name = "id", required = true) String id) {
+        LswMaterial lswMaterial = lswMaterialService.getById(id);
+        if (lswMaterial == null) {
+            return Result.error("鏈壘鍒板搴旀暟鎹�");
+        }
+        return Result.OK(lswMaterial);
 
-   }
+    }
 
-   /**
-    * 閫氳繃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);
-       return Result.OK(lswMaterialInventoryList);
-   }
+    /**
+     * 閫氳繃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);
+    }
 
-   /**
-   * 瀵煎嚭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();
+    /**
+     * 瀵煎嚭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);
-     }
-     //Step.2 鑾峰彇瀵煎嚭鏁版嵁
-     List<LswMaterial> lswMaterialList = lswMaterialService.list(queryWrapper);
+        //閰嶇疆閫変腑鏁版嵁鏌ヨ鏉′欢
+        String selections = request.getParameter("selections");
+        if (oConvertUtils.isNotEmpty(selections)) {
+            List<String> selectionList = Arrays.asList(selections.split(","));
+            queryWrapper.in("id", selectionList);
+        }
+        //Step.2 鑾峰彇瀵煎嚭鏁版嵁
+        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.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;
-   }
+        // 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;
+    }
 
-   /**
-   * 閫氳繃excel瀵煎叆鏁版嵁
-   *
-   * @param request
-   * @param response
-   * @return
-   */
-   //@RequiresPermissions("org.jeecg.modules:lsw_material:importExcel")
-   @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-   public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-     MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-     Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
-     for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
-         // 鑾峰彇涓婁紶鏂囦欢瀵硅薄
-         MultipartFile file = entity.getValue();
-         ImportParams params = new ImportParams();
-         params.setTitleRows(2);
-         params.setHeadRows(1);
-         params.setNeedSave(true);
-         try {
-             List<LswMaterialPage> list = ExcelImportUtil.importExcel(file.getInputStream(), LswMaterialPage.class, params);
-             for (LswMaterialPage page : list) {
-                 LswMaterial po = new LswMaterial();
-                 BeanUtils.copyProperties(page, po);
-                 lswMaterialService.saveMain(po, page.getLswMaterialInventoryList());
-             }
-             return Result.OK("鏂囦欢瀵煎叆鎴愬姛锛佹暟鎹鏁�:" + list.size());
-         } catch (Exception e) {
-             log.error(e.getMessage(),e);
-             return Result.error("鏂囦欢瀵煎叆澶辫触:"+e.getMessage());
-         } finally {
-             try {
-                 file.getInputStream().close();
-             } catch (IOException e) {
-                 e.printStackTrace();
-             }
-         }
-     }
-     return Result.OK("鏂囦欢瀵煎叆澶辫触锛�");
-   }
+    /**
+     * 閫氳繃excel瀵煎叆鏁版嵁
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    //@RequiresPermissions("org.jeecg.modules:lsw_material:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            // 鑾峰彇涓婁紶鏂囦欢瀵硅薄
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<LswMaterialPage> list = ExcelImportUtil.importExcel(file.getInputStream(), LswMaterialPage.class, params);
+                for (LswMaterialPage page : list) {
+                    LswMaterial po = new LswMaterial();
+                    BeanUtils.copyProperties(page, po);
+                    lswMaterialService.saveMain(po, page.getLswMaterialInventoryList());
+                }
+                return Result.OK("鏂囦欢瀵煎叆鎴愬姛锛佹暟鎹鏁�:" + list.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("鏂囦欢瀵煎叆澶辫触:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.OK("鏂囦欢瀵煎叆澶辫触锛�");
+    }
+
+    @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 c8e69a5..003adb1 100644
--- a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInboundController.java
+++ b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInboundController.java
@@ -10,6 +10,7 @@
 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.modules.lsw.entity.LswMaterialInbound;
 import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,6 +20,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.Arrays;
+import java.util.Map;
 
 /**
 * @Description: 鐗╂枡鍏ュ簱鍗�
@@ -157,5 +159,14 @@
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, LswMaterialInbound.class);
    }
+    @GetMapping(value = "/searchlikeQuery")
+    public Result<?> searchlikeQuery(LswMaterialInbound lswMaterialInbound,
+                                     @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                     @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                     HttpServletRequest req){
+        IPage<Map<String, Object>> pageList = lswMaterialInboundService.getlswMaterialInboundListData(pageNo,pageSize,req);
+
+        return Result.OK(pageList);
+    }
 
 }
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 b1d171b..a2ceacd 100644
--- a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialOutboundController.java
+++ b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialOutboundController.java
@@ -10,6 +10,7 @@
 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;
@@ -19,6 +20,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.Arrays;
+import java.util.Map;
 
 /**
 * @Description: 鐗╂枡鍑哄簱鍗�
@@ -157,5 +159,13 @@
    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);
+        return Result.OK(pageList);
+    }
 
 }
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 1b7f50c..92f6e24 100644
--- a/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInbound.java
+++ b/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInbound.java
@@ -10,6 +10,7 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -58,10 +59,12 @@
 	/**浜х嚎ID*/
 	@Excel(name = "浜х嚎ID", width = 15)
     @ApiModelProperty(value = "浜х嚎ID")
+    @Dict(dictTable = "base_factory", dicCode = "id", dicText = "factory_name")
     private String factoryId;
 	/**搴撳瓨鍦癐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)
@@ -78,7 +81,7 @@
 	/**鍏ュ簱鏁伴噺*/
 	@Excel(name = "鍏ュ簱鏁伴噺", width = 15)
     @ApiModelProperty(value = "鍏ュ簱鏁伴噺")
-    private Integer quantity;
+    private Double quantity;
 	/**鎺ユ敹浜�*/
 	@Excel(name = "鎺ユ敹浜�", width = 15)
     @ApiModelProperty(value = "鎺ユ敹浜�")
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 ff35baa..59d0235 100644
--- a/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInventory.java
+++ b/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInventory.java
@@ -1,15 +1,18 @@
 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;
 import io.swagger.annotations.ApiModel;
 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 javax.persistence.Table;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -59,11 +62,15 @@
 	/**鏁伴噺*/
 	@Excel(name = "鏁伴噺", width = 15)
     @ApiModelProperty(value = "鏁伴噺")
-    private String quantity;
+    private Double quantity;
 	/**搴撳瓨鍦癐D*/
 	@Excel(name = "搴撳瓨鍦癐D", 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;
 	/**搴撳瓨鐘舵��*/
 	@Excel(name = "搴撳瓨鐘舵��", width = 15)
     @ApiModelProperty(value = "搴撳瓨鐘舵��")
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 9724b77..69abacf 100644
--- a/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialOutbound.java
+++ b/src/main/java/org/jeecg/modules/lsw/entity/LswMaterialOutbound.java
@@ -10,6 +10,7 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -66,6 +67,7 @@
 	/**浜х嚎ID*/
 	@Excel(name = "浜х嚎ID", width = 15)
     @ApiModelProperty(value = "浜х嚎ID")
+    @Dict(dictTable = "base_factory", dicCode = "id", dicText = "factory_name")
     private String factoryId;
 	/**鎵规鍙�*/
 	@Excel(name = "鎵规鍙�", width = 15)
@@ -84,7 +86,7 @@
 	/**鍑哄簱鏁伴噺*/
 	@Excel(name = "鍑哄簱鏁伴噺", width = 15)
     @ApiModelProperty(value = "鍑哄簱鏁伴噺")
-    private String quantity;
+    private Double quantity;
 	/**宸ュ崟ID*/
 	@Excel(name = "宸ュ崟ID", width = 15)
     @ApiModelProperty(value = "宸ュ崟ID")
diff --git a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInboundMapper.java b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInboundMapper.java
index c784e80..f1e1f0d 100644
--- a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInboundMapper.java
+++ b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInboundMapper.java
@@ -1,7 +1,11 @@
 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.LswMaterialInbound;
+
+import java.util.Map;
 
 /**
  * @Description: 鐗╂枡鍏ュ簱鍗�
@@ -10,5 +14,5 @@
  * @Version: V1.0
  */
 public interface LswMaterialInboundMapper extends BaseMapper<LswMaterialInbound> {
-
+    IPage<Map<String, Object>> getlswMaterialInboundListData(IPage<Map> pageData, @Param("params")Map<String, String> paramMap);
 }
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 db4a787..194b9c9 100644
--- a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialMapper.java
+++ b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialMapper.java
@@ -1,7 +1,11 @@
 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: 绾胯竟搴撶墿鏂欎俊鎭�
@@ -10,5 +14,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/LswMaterialOutboundMapper.java b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialOutboundMapper.java
index be73eee..da93102 100644
--- a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialOutboundMapper.java
+++ b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialOutboundMapper.java
@@ -1,7 +1,11 @@
 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.LswMaterialOutbound;
+
+import java.util.Map;
 
 /**
  * @Description: 鐗╂枡鍑哄簱鍗�
@@ -10,5 +14,5 @@
  * @Version: V1.0
  */
 public interface LswMaterialOutboundMapper extends BaseMapper<LswMaterialOutbound> {
-
+    IPage<Map<String, Object>> getlswMaterialOutboundListData(IPage<Map> pageData, @Param("params")Map<String, String> paramMap);
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInboundMapper.xml b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInboundMapper.xml
index 1e6636c..5410bcb 100644
--- a/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInboundMapper.xml
+++ b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInboundMapper.xml
@@ -1,5 +1,16 @@
 <?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.LswMaterialInboundMapper">
-
+    <select id="getlswMaterialInboundListData" parameterType="Map" resultType="Map">
+        select * from lsw_material_inbound 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.batchNumber != null and params.batchNumber != ''">
+            AND batch_number LIKE CONCAT('%', #{params.batchNumber}, '%')
+        </if>
+    </select>
 </mapper>
\ No newline at end of file
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 35d5282..3b6fcef 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,5 +1,19 @@
 <?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/mapper/xml/LswMaterialOutboundMapper.xml b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialOutboundMapper.xml
index 71f1ed6..b62c4ea 100644
--- a/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialOutboundMapper.xml
+++ b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialOutboundMapper.xml
@@ -1,5 +1,16 @@
 <?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.LswMaterialOutboundMapper">
-
+    <select id="getlswMaterialOutboundListData" parameterType="Map" resultType="Map">
+        select * from lsw_material_outbound 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.batchNumber != null and params.batchNumber != ''">
+            AND batch_number LIKE CONCAT('%', #{params.batchNumber}, '%')
+        </if>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInboundService.java b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInboundService.java
index 6ec0b42..17f3cdd 100644
--- a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInboundService.java
+++ b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInboundService.java
@@ -1,7 +1,11 @@
 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.LswMaterialInbound;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
 
 /**
  * @Description: 鐗╂枡鍏ュ簱鍗�
@@ -10,5 +14,5 @@
  * @Version: V1.0
  */
 public interface ILswMaterialInboundService extends IService<LswMaterialInbound> {
-
+    IPage<Map<String, Object>> getlswMaterialInboundListData(Integer pageNo, Integer pageSize, HttpServletRequest req);
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialOutboundService.java b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialOutboundService.java
index 150fa57..828a92a 100644
--- a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialOutboundService.java
+++ b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialOutboundService.java
@@ -1,7 +1,11 @@
 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.LswMaterialOutbound;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
 
 /**
  * @Description: 鐗╂枡鍑哄簱鍗�
@@ -10,5 +14,5 @@
  * @Version: V1.0
  */
 public interface ILswMaterialOutboundService extends IService<LswMaterialOutbound> {
-
+    IPage<Map<String, Object>> getlswMaterialOutboundListData(Integer pageNo, Integer pageSize, HttpServletRequest req);
 }
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 d3289f2..ce94a36 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,15 @@
 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.lsw.entity.LswMaterialInventory;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 绾胯竟搴撶墿鏂欎俊鎭�
@@ -45,5 +48,7 @@
 	 * @param idList
 	 */
 	public void delBatchMain (Collection<? extends Serializable> idList);
+
+	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 9acc70f..ae750d2 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
@@ -1,18 +1,43 @@
 package org.jeecg.modules.lsw.service.impl;
 
+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.modules.lsw.entity.LswMaterialInbound;
 import org.jeecg.modules.lsw.mapper.LswMaterialInboundMapper;
 import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @Description: 鐗╂枡鍏ュ簱鍗�
  * @Author: jeecg-boot
- * @Date:   2025-06-30
+ * @Date: 2025-06-30
  * @Version: V1.0
  */
 @Service
 public class LswMaterialInboundServiceImpl extends ServiceImpl<LswMaterialInboundMapper, LswMaterialInbound> implements ILswMaterialInboundService {
 
+    @Override
+    public IPage<Map<String, Object>> getlswMaterialInboundListData(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("batchNumber") && StringUtils.isNotBlank(parameterMap.get("batchNumber")[0])) {
+                paramMap.put("batchNumber", parameterMap.get("batchNumber")[0].trim());
+            }
+        }
+        return super.getBaseMapper().getlswMaterialInboundListData(pageData, paramMap);
+    }
 }
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 6ce2d72..a9a70ec 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
@@ -1,10 +1,17 @@
 package org.jeecg.modules.lsw.service.impl;
 
+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.modules.lsw.entity.LswMaterialOutbound;
 import org.jeecg.modules.lsw.mapper.LswMaterialOutboundMapper;
 import org.jeecg.modules.lsw.service.ILswMaterialOutboundService;
 import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * @Description: 鐗╂枡鍑哄簱鍗�
@@ -15,4 +22,22 @@
 @Service
 public class LswMaterialOutboundServiceImpl extends ServiceImpl<LswMaterialOutboundMapper, LswMaterialOutbound> implements ILswMaterialOutboundService {
 
+    @Override
+    public IPage<Map<String, Object>> getlswMaterialOutboundListData(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("batchNumber") && StringUtils.isNotBlank(parameterMap.get("batchNumber")[0])) {
+                paramMap.put("batchNumber", parameterMap.get("batchNumber")[0].trim());
+            }
+        }
+        return super.getBaseMapper().getlswMaterialOutboundListData(pageData, paramMap);
+    }
 }
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 28aaff6..494f85f 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
@@ -1,6 +1,9 @@
 package org.jeecg.modules.lsw.service.impl;
 
+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.modules.lsw.entity.LswMaterial;
 import org.jeecg.modules.lsw.entity.LswMaterialInventory;
 import org.jeecg.modules.lsw.mapper.LswMaterialInventoryMapper;
@@ -10,9 +13,12 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.Serializable;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 绾胯竟搴撶墿鏂欎俊鎭�
@@ -74,5 +80,27 @@
 			lswMaterialMapper.deleteById(id);
 		}
 	}
-	
+
+	@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);
+	}
+
 }
diff --git a/src/main/java/org/jeecg/modules/pms/controller/PmsMaterialProcessController.java b/src/main/java/org/jeecg/modules/pms/controller/PmsMaterialProcessController.java
new file mode 100644
index 0000000..54fbc48
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/controller/PmsMaterialProcessController.java
@@ -0,0 +1,172 @@
+package org.jeecg.modules.pms.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.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.pms.entity.PmsMaterialProcess;
+import org.jeecg.modules.pms.entity.PmsProcessBillMaterialsDetail;
+import org.jeecg.modules.pms.service.IPmsMaterialProcessService;
+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.Map;
+
+/**
+* @Description: 鐗╂枡宸ュ簭
+* @Author: jeecg-boot
+* @Date:   2025-07-01
+* @Version: V1.0
+*/
+@Api(tags="鐗╂枡宸ュ簭")
+@RestController
+@RequestMapping("/pms/pmsMaterialProcess")
+@Slf4j
+public class PmsMaterialProcessController extends JeecgController<PmsMaterialProcess, IPmsMaterialProcessService> {
+   @Autowired
+   private IPmsMaterialProcessService pmsMaterialProcessService;
+
+   /**
+    * 鍒嗛〉鍒楄〃鏌ヨ
+    *
+    * @param pmsMaterialProcess
+    * @param pageNo
+    * @param pageSize
+    * @param req
+    * @return
+    */
+   //@AutoLog(value = "鐗╂枡宸ュ簭-鍒嗛〉鍒楄〃鏌ヨ")
+   @ApiOperation(value="鐗╂枡宸ュ簭-鍒嗛〉鍒楄〃鏌ヨ", notes="鐗╂枡宸ュ簭-鍒嗛〉鍒楄〃鏌ヨ")
+   @GetMapping(value = "/list")
+   public Result<IPage<PmsMaterialProcess>> queryPageList(PmsMaterialProcess pmsMaterialProcess,
+                                  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                  HttpServletRequest req) {
+       QueryWrapper<PmsMaterialProcess> queryWrapper = QueryGenerator.initQueryWrapper(pmsMaterialProcess, req.getParameterMap());
+       Page<PmsMaterialProcess> page = new Page<PmsMaterialProcess>(pageNo, pageSize);
+       IPage<PmsMaterialProcess> pageList = pmsMaterialProcessService.page(page, queryWrapper);
+       return Result.OK(pageList);
+   }
+
+   /**
+    *   娣诲姞
+    *
+    * @param pmsMaterialProcess
+    * @return
+    */
+   @AutoLog(value = "鐗╂枡宸ュ簭-娣诲姞")
+   @ApiOperation(value="鐗╂枡宸ュ簭-娣诲姞", notes="鐗╂枡宸ュ簭-娣诲姞")
+   //@RequiresPermissions("org.jeecg.modules:pms_material_process:add")
+   @PostMapping(value = "/add")
+   public Result<String> add(@RequestBody PmsMaterialProcess pmsMaterialProcess) {
+       pmsMaterialProcessService.save(pmsMaterialProcess);
+       return Result.OK("娣诲姞鎴愬姛锛�");
+   }
+
+   /**
+    *  缂栬緫
+    *
+    * @param pmsMaterialProcess
+    * @return
+    */
+   @AutoLog(value = "鐗╂枡宸ュ簭-缂栬緫")
+   @ApiOperation(value="鐗╂枡宸ュ簭-缂栬緫", notes="鐗╂枡宸ュ簭-缂栬緫")
+   //@RequiresPermissions("org.jeecg.modules:pms_material_process:edit")
+   @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+   public Result<String> edit(@RequestBody PmsMaterialProcess pmsMaterialProcess) {
+       pmsMaterialProcessService.updateById(pmsMaterialProcess);
+       return Result.OK("缂栬緫鎴愬姛!");
+   }
+
+   /**
+    *   閫氳繃id鍒犻櫎
+    *
+    * @param id
+    * @return
+    */
+   @AutoLog(value = "鐗╂枡宸ュ簭-閫氳繃id鍒犻櫎")
+   @ApiOperation(value="鐗╂枡宸ュ簭-閫氳繃id鍒犻櫎", notes="鐗╂枡宸ュ簭-閫氳繃id鍒犻櫎")
+   //@RequiresPermissions("org.jeecg.modules:pms_material_process:delete")
+   @DeleteMapping(value = "/delete")
+   public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+       pmsMaterialProcessService.removeById(id);
+       return Result.OK("鍒犻櫎鎴愬姛!");
+   }
+
+   /**
+    *  鎵归噺鍒犻櫎
+    *
+    * @param ids
+    * @return
+    */
+   @AutoLog(value = "鐗╂枡宸ュ簭-鎵归噺鍒犻櫎")
+   @ApiOperation(value="鐗╂枡宸ュ簭-鎵归噺鍒犻櫎", notes="鐗╂枡宸ュ簭-鎵归噺鍒犻櫎")
+   //@RequiresPermissions("org.jeecg.modules:pms_material_process:deleteBatch")
+   @DeleteMapping(value = "/deleteBatch")
+   public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+       this.pmsMaterialProcessService.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<PmsMaterialProcess> queryById(@RequestParam(name="id",required=true) String id) {
+       PmsMaterialProcess pmsMaterialProcess = pmsMaterialProcessService.getById(id);
+       if(pmsMaterialProcess==null) {
+           return Result.error("鏈壘鍒板搴旀暟鎹�");
+       }
+       return Result.OK(pmsMaterialProcess);
+   }
+
+   /**
+   * 瀵煎嚭excel
+   *
+   * @param request
+   * @param pmsMaterialProcess
+   */
+   //@RequiresPermissions("org.jeecg.modules:pms_material_process:exportXls")
+   @RequestMapping(value = "/exportXls")
+   public ModelAndView exportXls(HttpServletRequest request, PmsMaterialProcess pmsMaterialProcess) {
+       return super.exportXls(request, pmsMaterialProcess, PmsMaterialProcess.class, "鐗╂枡宸ュ簭");
+   }
+
+   /**1路3
+     * 閫氳繃excel瀵煎叆鏁版嵁
+   *
+   * @param request
+   * @param response
+   * @return
+   */
+   //@RequiresPermissions("pms_material_process:importExcel")
+   @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+   public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+       return super.importExcel(request, response, PmsMaterialProcess.class);
+   }
+    @GetMapping(value = "/searchlikeQuery")
+    public Result<?> searchlikeQuery(PmsMaterialProcess pmsMaterialProcess,
+                                     @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                     @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                     HttpServletRequest req){
+        IPage<Map<String, Object>> pageList = pmsMaterialProcessService.getpmsMaterialProcessListData(pageNo,pageSize,req);
+
+        return Result.OK(pageList);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/pms/controller/PmsProcessBillMaterialsController.java b/src/main/java/org/jeecg/modules/pms/controller/PmsProcessBillMaterialsController.java
new file mode 100644
index 0000000..1606554
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/controller/PmsProcessBillMaterialsController.java
@@ -0,0 +1,172 @@
+package org.jeecg.modules.pms.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.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.lsw.entity.LswMaterialInbound;
+import org.jeecg.modules.pms.entity.PmsProcessBillMaterials;
+import org.jeecg.modules.pms.service.IPmsProcessBillMaterialsService;
+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.Map;
+
+/**
+* @Description: 璁㈠崟BOM
+* @Author: jeecg-boot
+* @Date:   2025-07-01
+* @Version: V1.0
+*/
+@Api(tags="璁㈠崟BOM")
+@RestController
+@RequestMapping("/pmsprocessbillmaterials/pmsProcessBillMaterials")
+@Slf4j
+public class PmsProcessBillMaterialsController extends JeecgController<PmsProcessBillMaterials, IPmsProcessBillMaterialsService> {
+   @Autowired
+   private IPmsProcessBillMaterialsService pmsProcessBillMaterialsService;
+
+   /**
+    * 鍒嗛〉鍒楄〃鏌ヨ
+    *
+    * @param pmsProcessBillMaterials
+    * @param pageNo
+    * @param pageSize
+    * @param req
+    * @return
+    */
+   //@AutoLog(value = "璁㈠崟BOM-鍒嗛〉鍒楄〃鏌ヨ")
+   @ApiOperation(value="璁㈠崟BOM-鍒嗛〉鍒楄〃鏌ヨ", notes="璁㈠崟BOM-鍒嗛〉鍒楄〃鏌ヨ")
+   @GetMapping(value = "/list")
+   public Result<IPage<PmsProcessBillMaterials>> queryPageList(PmsProcessBillMaterials pmsProcessBillMaterials,
+                                  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                  HttpServletRequest req) {
+       QueryWrapper<PmsProcessBillMaterials> queryWrapper = QueryGenerator.initQueryWrapper(pmsProcessBillMaterials, req.getParameterMap());
+       Page<PmsProcessBillMaterials> page = new Page<PmsProcessBillMaterials>(pageNo, pageSize);
+       IPage<PmsProcessBillMaterials> pageList = pmsProcessBillMaterialsService.page(page, queryWrapper);
+       return Result.OK(pageList);
+   }
+
+   /**
+    *   娣诲姞
+    *
+    * @param pmsProcessBillMaterials
+    * @return
+    */
+   @AutoLog(value = "璁㈠崟BOM-娣诲姞")
+   @ApiOperation(value="璁㈠崟BOM-娣诲姞", notes="璁㈠崟BOM-娣诲姞")
+   //@RequiresPermissions("org.jeecg.modules:pms_process_bill_materials:add")
+   @PostMapping(value = "/add")
+   public Result<String> add(@RequestBody PmsProcessBillMaterials pmsProcessBillMaterials) {
+       pmsProcessBillMaterialsService.save(pmsProcessBillMaterials);
+       return Result.OK("娣诲姞鎴愬姛锛�");
+   }
+
+   /**
+    *  缂栬緫
+    *
+    * @param pmsProcessBillMaterials
+    * @return
+    */
+   @AutoLog(value = "璁㈠崟BOM-缂栬緫")
+   @ApiOperation(value="璁㈠崟BOM-缂栬緫", notes="璁㈠崟BOM-缂栬緫")
+   //@RequiresPermissions("org.jeecg.modules:pms_process_bill_materials:edit")
+   @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+   public Result<String> edit(@RequestBody PmsProcessBillMaterials pmsProcessBillMaterials) {
+       pmsProcessBillMaterialsService.updateById(pmsProcessBillMaterials);
+       return Result.OK("缂栬緫鎴愬姛!");
+   }
+
+   /**
+    *   閫氳繃id鍒犻櫎
+    *
+    * @param id
+    * @return
+    */
+   @AutoLog(value = "璁㈠崟BOM-閫氳繃id鍒犻櫎")
+   @ApiOperation(value="璁㈠崟BOM-閫氳繃id鍒犻櫎", notes="璁㈠崟BOM-閫氳繃id鍒犻櫎")
+   //@RequiresPermissions("org.jeecg.modules:pms_process_bill_materials:delete")
+   @DeleteMapping(value = "/delete")
+   public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+       pmsProcessBillMaterialsService.removeById(id);
+       return Result.OK("鍒犻櫎鎴愬姛!");
+   }
+
+   /**
+    *  鎵归噺鍒犻櫎
+    *
+    * @param ids
+    * @return
+    */
+   @AutoLog(value = "璁㈠崟BOM-鎵归噺鍒犻櫎")
+   @ApiOperation(value="璁㈠崟BOM-鎵归噺鍒犻櫎", notes="璁㈠崟BOM-鎵归噺鍒犻櫎")
+   //@RequiresPermissions("org.jeecg.modules:pms_process_bill_materials:deleteBatch")
+   @DeleteMapping(value = "/deleteBatch")
+   public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+       this.pmsProcessBillMaterialsService.removeByIds(Arrays.asList(ids.split(",")));
+       return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
+   }
+
+   /**
+    * 閫氳繃id鏌ヨ
+    *
+    * @param id
+    * @return
+    */
+   //@AutoLog(value = "璁㈠崟BOM-閫氳繃id鏌ヨ")
+   @ApiOperation(value="璁㈠崟BOM-閫氳繃id鏌ヨ", notes="璁㈠崟BOM-閫氳繃id鏌ヨ")
+   @GetMapping(value = "/queryById")
+   public Result<PmsProcessBillMaterials> queryById(@RequestParam(name="id",required=true) String id) {
+       PmsProcessBillMaterials pmsProcessBillMaterials = pmsProcessBillMaterialsService.getById(id);
+       if(pmsProcessBillMaterials==null) {
+           return Result.error("鏈壘鍒板搴旀暟鎹�");
+       }
+       return Result.OK(pmsProcessBillMaterials);
+   }
+
+   /**
+   * 瀵煎嚭excel
+   *
+   * @param request
+   * @param pmsProcessBillMaterials
+   */
+   //@RequiresPermissions("org.jeecg.modules:pms_process_bill_materials:exportXls")
+   @RequestMapping(value = "/exportXls")
+   public ModelAndView exportXls(HttpServletRequest request, PmsProcessBillMaterials pmsProcessBillMaterials) {
+       return super.exportXls(request, pmsProcessBillMaterials, PmsProcessBillMaterials.class, "璁㈠崟BOM");
+   }
+
+   /**
+     * 閫氳繃excel瀵煎叆鏁版嵁
+   *
+   * @param request
+   * @param response
+   * @return
+   */
+   //@RequiresPermissions("pms_process_bill_materials:importExcel")
+   @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+   public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+       return super.importExcel(request, response, PmsProcessBillMaterials.class);
+   }
+    @GetMapping(value = "/searchlikeQuery")
+    public Result<?> searchlikeQuery(PmsProcessBillMaterials pmsProcessBillMaterials,
+                                     @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                     @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                     HttpServletRequest req){
+        IPage<Map<String, Object>> pageList = pmsProcessBillMaterialsService.getpmsProcessBillMaterialsListData(pageNo,pageSize,req);
+
+        return Result.OK(pageList);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/pms/controller/PmsProcessBillMaterialsDetailController.java b/src/main/java/org/jeecg/modules/pms/controller/PmsProcessBillMaterialsDetailController.java
new file mode 100644
index 0000000..8f93da4
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/controller/PmsProcessBillMaterialsDetailController.java
@@ -0,0 +1,182 @@
+package org.jeecg.modules.pms.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.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.pms.entity.PmsProcessBillMaterials;
+import org.jeecg.modules.pms.entity.PmsProcessBillMaterialsDetail;
+import org.jeecg.modules.pms.service.IPmsProcessBillMaterialsDetailService;
+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.Map;
+
+/**
+* @Description: 鐗╂枡娓呭崟
+* @Author: jeecg-boot
+* @Date:   2025-07-01
+* @Version: V1.0
+*/
+@Api(tags="鐗╂枡娓呭崟")
+@RestController
+@RequestMapping("/pms/pmsProcessBillMaterialsDetail")
+@Slf4j
+public class PmsProcessBillMaterialsDetailController extends JeecgController<PmsProcessBillMaterialsDetail, IPmsProcessBillMaterialsDetailService> {
+   @Autowired
+   private IPmsProcessBillMaterialsDetailService pmsProcessBillMaterialsDetailService;
+
+   /**
+    * 鍒嗛〉鍒楄〃鏌ヨ
+    *
+    * @param pmsProcessBillMaterialsDetail
+    * @param pageNo
+    * @param pageSize
+    * @param req
+    * @return
+    */
+   //@AutoLog(value = "鐗╂枡娓呭崟-鍒嗛〉鍒楄〃鏌ヨ")
+   @ApiOperation(value="鐗╂枡娓呭崟-鍒嗛〉鍒楄〃鏌ヨ", notes="鐗╂枡娓呭崟-鍒嗛〉鍒楄〃鏌ヨ")
+   @GetMapping(value = "/list")
+   public Result<IPage<PmsProcessBillMaterialsDetail>> queryPageList(PmsProcessBillMaterialsDetail pmsProcessBillMaterialsDetail,
+                                  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                  HttpServletRequest req) {
+       QueryWrapper<PmsProcessBillMaterialsDetail> queryWrapper = QueryGenerator.initQueryWrapper(pmsProcessBillMaterialsDetail, req.getParameterMap());
+       Page<PmsProcessBillMaterialsDetail> page = new Page<PmsProcessBillMaterialsDetail>(pageNo, pageSize);
+       IPage<PmsProcessBillMaterialsDetail> pageList = pmsProcessBillMaterialsDetailService.page(page, queryWrapper);
+       return Result.OK(pageList);
+   }
+
+   /**
+    *   娣诲姞
+    *
+    * @param pmsProcessBillMaterialsDetail
+    * @return
+    */
+   @AutoLog(value = "鐗╂枡娓呭崟-娣诲姞")
+   @ApiOperation(value="鐗╂枡娓呭崟-娣诲姞", notes="鐗╂枡娓呭崟-娣诲姞")
+   //@RequiresPermissions("org.jeecg.modules:pms_process_bill_materials_detail:add")
+   @PostMapping(value = "/add")
+   public Result<String> add(@RequestBody PmsProcessBillMaterialsDetail pmsProcessBillMaterialsDetail) {
+       pmsProcessBillMaterialsDetailService.save(pmsProcessBillMaterialsDetail);
+       return Result.OK("娣诲姞鎴愬姛锛�");
+   }
+
+   /**
+    *  缂栬緫
+    *
+    * @param pmsProcessBillMaterialsDetail
+    * @return
+    */
+   @AutoLog(value = "鐗╂枡娓呭崟-缂栬緫")
+   @ApiOperation(value="鐗╂枡娓呭崟-缂栬緫", notes="鐗╂枡娓呭崟-缂栬緫")
+   //@RequiresPermissions("org.jeecg.modules:pms_process_bill_materials_detail:edit")
+   @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+   public Result<String> edit(@RequestBody PmsProcessBillMaterialsDetail pmsProcessBillMaterialsDetail) {
+       pmsProcessBillMaterialsDetailService.updateById(pmsProcessBillMaterialsDetail);
+       return Result.OK("缂栬緫鎴愬姛!");
+   }
+
+   /**
+    *   閫氳繃id鍒犻櫎
+    *
+    * @param id
+    * @return
+    */
+   @AutoLog(value = "鐗╂枡娓呭崟-閫氳繃id鍒犻櫎")
+   @ApiOperation(value="鐗╂枡娓呭崟-閫氳繃id鍒犻櫎", notes="鐗╂枡娓呭崟-閫氳繃id鍒犻櫎")
+   //@RequiresPermissions("org.jeecg.modules:pms_process_bill_materials_detail:delete")
+   @DeleteMapping(value = "/delete")
+   public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+       pmsProcessBillMaterialsDetailService.removeById(id);
+       return Result.OK("鍒犻櫎鎴愬姛!");
+   }
+
+   /**
+    *  鎵归噺鍒犻櫎
+    *
+    * @param ids
+    * @return
+    */
+   @AutoLog(value = "鐗╂枡娓呭崟-鎵归噺鍒犻櫎")
+   @ApiOperation(value="鐗╂枡娓呭崟-鎵归噺鍒犻櫎", notes="鐗╂枡娓呭崟-鎵归噺鍒犻櫎")
+   //@RequiresPermissions("org.jeecg.modules:pms_process_bill_materials_detail:deleteBatch")
+   @DeleteMapping(value = "/deleteBatch")
+   public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+       this.pmsProcessBillMaterialsDetailService.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<PmsProcessBillMaterialsDetail> queryById(@RequestParam(name="id",required=true) String id) {
+       PmsProcessBillMaterialsDetail pmsProcessBillMaterialsDetail = pmsProcessBillMaterialsDetailService.getById(id);
+       if(pmsProcessBillMaterialsDetail==null) {
+           return Result.error("鏈壘鍒板搴旀暟鎹�");
+       }
+       return Result.OK(pmsProcessBillMaterialsDetail);
+   }
+
+   /**
+   * 瀵煎嚭excel
+   *
+   * @param request
+   * @param pmsProcessBillMaterialsDetail
+   */
+   //@RequiresPermissions("org.jeecg.modules:pms_process_bill_materials_detail:exportXls")
+   @RequestMapping(value = "/exportXls")
+   public ModelAndView exportXls(HttpServletRequest request, PmsProcessBillMaterialsDetail pmsProcessBillMaterialsDetail) {
+       return super.exportXls(request, pmsProcessBillMaterialsDetail, PmsProcessBillMaterialsDetail.class, "鐗╂枡娓呭崟");
+   }
+
+   /**
+     * 閫氳繃excel瀵煎叆鏁版嵁
+   *
+   * @param request
+   * @param response
+   * @return
+   */
+   //@RequiresPermissions("pms_process_bill_materials_detail:importExcel")
+   @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+   public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+       return super.importExcel(request, response, PmsProcessBillMaterialsDetail.class);
+   }
+    @ApiOperation(value="鐗╂枡娓呭崟-閫氳繃鐢熶骇鐗╂枡ID鏌ヨ", notes="鐗╂枡娓呭崟-閫氳繃id鏌ヨ")
+    @GetMapping(value = "/queryByMaterialId")
+    public Result<PmsProcessBillMaterialsDetail> queryByMaterialId(@RequestParam(name="materialId",required=true) String materialId) {
+        PmsProcessBillMaterialsDetail pmsProcessBillMaterialsDetail = pmsProcessBillMaterialsDetailService.queryByMaterialId(materialId);
+        if(pmsProcessBillMaterialsDetail==null) {
+            return Result.error("鏈壘鍒板搴旀暟鎹�");
+        }
+        return Result.OK(pmsProcessBillMaterialsDetail);
+    }
+
+    @GetMapping(value = "/searchlikeQuery")
+    public Result<?> searchlikeQuery(PmsProcessBillMaterialsDetail pmsProcessBillMaterialsDetail,
+                                     @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                     @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                     HttpServletRequest req){
+        IPage<Map<String, Object>> pageList = pmsProcessBillMaterialsDetailService.getpmsProcessBillMaterialsDetailListData(pageNo,pageSize,req);
+
+        return Result.OK(pageList);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/pms/entity/PmsMaterialProcess.java b/src/main/java/org/jeecg/modules/pms/entity/PmsMaterialProcess.java
new file mode 100644
index 0000000..86974f7
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/entity/PmsMaterialProcess.java
@@ -0,0 +1,84 @@
+package org.jeecg.modules.pms.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.aspect.annotation.Dict;
+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-07-01
+ * @Version: V1.0
+ */
+@Data
+@TableName("pms_material_process")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pms_material_process瀵硅薄", description="鐗╂枡宸ュ簭")
+public class PmsMaterialProcess 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 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;
+	/**鍒犻櫎鏍囪*/
+	@Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag;
+	/**鐗╂枡缂栫爜*/
+	@Excel(name = "鐗╂枡缂栫爜", width = 15)
+    @ApiModelProperty(value = "鐗╂枡缂栫爜")
+    private String materialNumber;
+	/**鐗╂枡鍚嶇О*/
+	@Excel(name = "鐗╂枡鍚嶇О", width = 15)
+    @ApiModelProperty(value = "鐗╂枡鍚嶇О")
+    private String materialName;
+	/**浜х嚎ID(SAP宸ヤ綔涓績)*/
+	@Excel(name = "浜х嚎ID(SAP宸ヤ綔涓績)", width = 15)
+    @ApiModelProperty(value = "浜х嚎ID(SAP宸ヤ綔涓績)")
+    @Dict(dictTable = "base_factory", dicCode = "id", dicText = "factory_name")
+    private String factoryId;
+	/**宸ュ簭鍙�*/
+	@Excel(name = "宸ュ簭鍙�", width = 15)
+    @ApiModelProperty(value = "宸ュ簭鍙�")
+    private String processCode;
+	/**宸ュ簭鍚嶇О*/
+	@Excel(name = "宸ュ簭鍚嶇О", width = 15)
+    @ApiModelProperty(value = "宸ュ簭鍚嶇О")
+    private String processName;
+	/**鎺у埗鐮�*/
+	@Excel(name = "鎺у埗鐮�", width = 15)
+    @ApiModelProperty(value = "鎺у埗鐮�")
+    private String controlCode;
+}
diff --git a/src/main/java/org/jeecg/modules/pms/entity/PmsProcessBillMaterials.java b/src/main/java/org/jeecg/modules/pms/entity/PmsProcessBillMaterials.java
new file mode 100644
index 0000000..95ea7ca
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/entity/PmsProcessBillMaterials.java
@@ -0,0 +1,82 @@
+package org.jeecg.modules.pms.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.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 璁㈠崟BOM
+ * @Author: jeecg-boot
+ * @Date:   2025-07-01
+ * @Version: V1.0
+ */
+@Data
+@TableName("pms_process_bill_materials")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pms_process_bill_materials瀵硅薄", description="璁㈠崟BOM")
+public class PmsProcessBillMaterials 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 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;
+	/**鍒犻櫎鏍囪*/
+	@Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag;
+	/**鐢熸垚璁㈠崟ID*/
+	@Excel(name = "鐢熸垚璁㈠崟ID", width = 15)
+    @ApiModelProperty(value = "鐢熸垚璁㈠崟ID")
+    private String orderId;
+	/**鐗╂枡缂栫爜*/
+	@Excel(name = "鐗╂枡缂栫爜", width = 15)
+    @ApiModelProperty(value = "鐗╂枡缂栫爜")
+    private String materialNumber;
+	/**鐗╂枡鍚嶇О*/
+	@Excel(name = "鐗╂枡鍚嶇О", width = 15)
+    @ApiModelProperty(value = "鐗╂枡鍚嶇О")
+    private String materialName;
+	/**BOM浠g爜*/
+	@Excel(name = "BOM浠g爜", width = 15)
+    @ApiModelProperty(value = "BOM浠g爜")
+    private String billMaterialsCode;
+	/**鍩烘湰鍗曚綅*/
+	@Excel(name = "鍩烘湰鍗曚綅", width = 15)
+    @ApiModelProperty(value = "鍩烘湰鍗曚綅")
+    private String productionUnit;
+	/**璁㈠崟鏁伴噺*/
+	@Excel(name = "璁㈠崟鏁伴噺", width = 15)
+    @ApiModelProperty(value = "璁㈠崟鏁伴噺")
+    private Double productionQuantity;
+}
diff --git a/src/main/java/org/jeecg/modules/pms/entity/PmsProcessBillMaterialsDetail.java b/src/main/java/org/jeecg/modules/pms/entity/PmsProcessBillMaterialsDetail.java
new file mode 100644
index 0000000..95dc6c7
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/entity/PmsProcessBillMaterialsDetail.java
@@ -0,0 +1,70 @@
+package org.jeecg.modules.pms.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+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.aspect.annotation.Dict;
+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-07-01
+ * @Version: V1.0
+ */
+@Data
+@TableName("pms_process_bill_materials_detail")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pms_process_bill_materials_detail瀵硅薄", description="鐗╂枡娓呭崟")
+public class PmsProcessBillMaterialsDetail 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 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;
+	/**鐢熶骇鐗╂枡ID*/
+	@Excel(name = "鐢熶骇鐗╂枡ID", width = 15)
+    @ApiModelProperty(value = "鐢熶骇鐗╂枡ID")
+    @Dict(dictTable = "pms_process_bill_materials", dicCode = "id", dicText = "material_number")
+    private String materialId;
+	/**鐗╂枡缂栫爜*/
+	@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 Double usageUnit;
+}
diff --git a/src/main/java/org/jeecg/modules/pms/mapper/PmsMaterialProcessMapper.java b/src/main/java/org/jeecg/modules/pms/mapper/PmsMaterialProcessMapper.java
new file mode 100644
index 0000000..ce58f1c
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/mapper/PmsMaterialProcessMapper.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.pms.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.pms.entity.PmsMaterialProcess;
+
+import java.util.Map;
+
+/**
+ * @Description: 鐗╂枡宸ュ簭
+ * @Author: jeecg-boot
+ * @Date:   2025-07-01
+ * @Version: V1.0
+ */
+public interface PmsMaterialProcessMapper extends BaseMapper<PmsMaterialProcess> {
+    IPage<Map<String, Object>> getpmsMaterialProcessListData(IPage<Map> pageData, @Param("params")Map<String, String> paramMap);
+}
diff --git a/src/main/java/org/jeecg/modules/pms/mapper/PmsProcessBillMaterialsDetailMapper.java b/src/main/java/org/jeecg/modules/pms/mapper/PmsProcessBillMaterialsDetailMapper.java
new file mode 100644
index 0000000..802724a
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/mapper/PmsProcessBillMaterialsDetailMapper.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.pms.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.pms.entity.PmsProcessBillMaterialsDetail;
+
+import java.util.Map;
+
+/**
+ * @Description: 鐗╂枡娓呭崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-01
+ * @Version: V1.0
+ */
+public interface PmsProcessBillMaterialsDetailMapper extends BaseMapper<PmsProcessBillMaterialsDetail> {
+    PmsProcessBillMaterialsDetail queryByMaterialId(@Param("materialId") String materialId);
+    IPage<Map<String, Object>> getpmsProcessBillMaterialsDetailListData(IPage<Map> pageData, @Param("params")Map<String, String> paramMap);
+}
diff --git a/src/main/java/org/jeecg/modules/pms/mapper/PmsProcessBillMaterialsMapper.java b/src/main/java/org/jeecg/modules/pms/mapper/PmsProcessBillMaterialsMapper.java
new file mode 100644
index 0000000..93f2716
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/mapper/PmsProcessBillMaterialsMapper.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.pms.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.pms.entity.PmsProcessBillMaterials;
+
+import java.util.Map;
+
+/**
+ * @Description: 璁㈠崟BOM
+ * @Author: jeecg-boot
+ * @Date:   2025-07-01
+ * @Version: V1.0
+ */
+public interface PmsProcessBillMaterialsMapper extends BaseMapper<PmsProcessBillMaterials> {
+    IPage<Map<String, Object>> getpmsProcessBillMaterialsListData(IPage<Map> pageData, @Param("params")Map<String, String> paramMap);
+}
diff --git a/src/main/java/org/jeecg/modules/pms/mapper/xml/PmsMaterialProcessMapper.xml b/src/main/java/org/jeecg/modules/pms/mapper/xml/PmsMaterialProcessMapper.xml
new file mode 100644
index 0000000..925e4b8
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/mapper/xml/PmsMaterialProcessMapper.xml
@@ -0,0 +1,13 @@
+<?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.pms.mapper.PmsMaterialProcessMapper">
+    <select id="getpmsMaterialProcessListData" parameterType="Map" resultType="Map">
+        select * from pms_material_process 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>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/pms/mapper/xml/PmsProcessBillMaterialsDetailMapper.xml b/src/main/java/org/jeecg/modules/pms/mapper/xml/PmsProcessBillMaterialsDetailMapper.xml
new file mode 100644
index 0000000..3d45db9
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/mapper/xml/PmsProcessBillMaterialsDetailMapper.xml
@@ -0,0 +1,17 @@
+<?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.pms.mapper.PmsProcessBillMaterialsDetailMapper">
+    <select id="queryByMaterialId" resultType="org.jeecg.modules.pms.entity.PmsProcessBillMaterialsDetail">
+        SELECT TOP 1 * FROM pms_process_bill_materials_detail
+        WHERE material_id = #{materialId}
+    </select>
+    <select id="getpmsProcessBillMaterialsDetailListData" parameterType="Map" resultType="Map">
+        select * from pms_process_bill_materials_detail 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>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/pms/mapper/xml/PmsProcessBillMaterialsMapper.xml b/src/main/java/org/jeecg/modules/pms/mapper/xml/PmsProcessBillMaterialsMapper.xml
new file mode 100644
index 0000000..fcfcf13
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/mapper/xml/PmsProcessBillMaterialsMapper.xml
@@ -0,0 +1,13 @@
+<?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.pms.mapper.PmsProcessBillMaterialsMapper">
+    <select id="getpmsProcessBillMaterialsListData" parameterType="Map" resultType="Map">
+        select * from pms_process_bill_materials 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>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/pms/service/IPmsMaterialProcessService.java b/src/main/java/org/jeecg/modules/pms/service/IPmsMaterialProcessService.java
new file mode 100644
index 0000000..12c8cef
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/service/IPmsMaterialProcessService.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.pms.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.pms.entity.PmsMaterialProcess;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * @Description: 鐗╂枡宸ュ簭
+ * @Author: jeecg-boot
+ * @Date:   2025-07-01
+ * @Version: V1.0
+ */
+public interface IPmsMaterialProcessService extends IService<PmsMaterialProcess> {
+    IPage<Map<String, Object>> getpmsMaterialProcessListData(Integer pageNo, Integer pageSize, HttpServletRequest req);
+}
diff --git a/src/main/java/org/jeecg/modules/pms/service/IPmsProcessBillMaterialsDetailService.java b/src/main/java/org/jeecg/modules/pms/service/IPmsProcessBillMaterialsDetailService.java
new file mode 100644
index 0000000..3d0b428
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/service/IPmsProcessBillMaterialsDetailService.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.pms.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.pms.entity.PmsProcessBillMaterialsDetail;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * @Description: 鐗╂枡娓呭崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-01
+ * @Version: V1.0
+ */
+public interface IPmsProcessBillMaterialsDetailService extends IService<PmsProcessBillMaterialsDetail> {
+    PmsProcessBillMaterialsDetail queryByMaterialId(String materialId);
+    IPage<Map<String, Object>> getpmsProcessBillMaterialsDetailListData(Integer pageNo, Integer pageSize, HttpServletRequest req);
+}
diff --git a/src/main/java/org/jeecg/modules/pms/service/IPmsProcessBillMaterialsService.java b/src/main/java/org/jeecg/modules/pms/service/IPmsProcessBillMaterialsService.java
new file mode 100644
index 0000000..cacfe51
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/service/IPmsProcessBillMaterialsService.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.pms.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.pms.entity.PmsProcessBillMaterials;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * @Description: 璁㈠崟BOM
+ * @Author: jeecg-boot
+ * @Date:   2025-07-01
+ * @Version: V1.0
+ */
+public interface IPmsProcessBillMaterialsService extends IService<PmsProcessBillMaterials> {
+    IPage<Map<String, Object>> getpmsProcessBillMaterialsListData(Integer pageNo, Integer pageSize, HttpServletRequest req);
+}
diff --git a/src/main/java/org/jeecg/modules/pms/service/impl/PmsMaterialProcessServiceImpl.java b/src/main/java/org/jeecg/modules/pms/service/impl/PmsMaterialProcessServiceImpl.java
new file mode 100644
index 0000000..3629fc2
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/service/impl/PmsMaterialProcessServiceImpl.java
@@ -0,0 +1,43 @@
+package org.jeecg.modules.pms.service.impl;
+
+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.modules.pms.entity.PmsMaterialProcess;
+import org.jeecg.modules.pms.mapper.PmsMaterialProcessMapper;
+import org.jeecg.modules.pms.service.IPmsMaterialProcessService;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: 鐗╂枡宸ュ簭
+ * @Author: jeecg-boot
+ * @Date:   2025-07-01
+ * @Version: V1.0
+ */
+@Service
+public class PmsMaterialProcessServiceImpl extends ServiceImpl<PmsMaterialProcessMapper, PmsMaterialProcess> implements IPmsMaterialProcessService {
+
+    @Override
+    public IPage<Map<String, Object>> getpmsMaterialProcessListData(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("batchNumber") && StringUtils.isNotBlank(parameterMap.get("batchNumber")[0])) {
+                paramMap.put("batchNumber", parameterMap.get("batchNumber")[0].trim());
+            }
+        }
+        return super.getBaseMapper().getpmsMaterialProcessListData(pageData, paramMap);
+    }
+}
diff --git a/src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsDetailServiceImpl.java b/src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsDetailServiceImpl.java
new file mode 100644
index 0000000..81fa739
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsDetailServiceImpl.java
@@ -0,0 +1,48 @@
+package org.jeecg.modules.pms.service.impl;
+
+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.modules.pms.entity.PmsProcessBillMaterialsDetail;
+import org.jeecg.modules.pms.mapper.PmsProcessBillMaterialsDetailMapper;
+import org.jeecg.modules.pms.service.IPmsProcessBillMaterialsDetailService;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: 鐗╂枡娓呭崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-01
+ * @Version: V1.0
+ */
+@Service
+public class PmsProcessBillMaterialsDetailServiceImpl extends ServiceImpl<PmsProcessBillMaterialsDetailMapper, PmsProcessBillMaterialsDetail> implements IPmsProcessBillMaterialsDetailService {
+
+    @Override
+    public PmsProcessBillMaterialsDetail queryByMaterialId(String materialId) {
+        return baseMapper.queryByMaterialId(materialId);
+    }
+
+    @Override
+    public IPage<Map<String, Object>> getpmsProcessBillMaterialsDetailListData(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("batchNumber") && StringUtils.isNotBlank(parameterMap.get("batchNumber")[0])) {
+                paramMap.put("batchNumber", parameterMap.get("batchNumber")[0].trim());
+            }
+        }
+        return super.getBaseMapper().getpmsProcessBillMaterialsDetailListData(pageData, paramMap);
+    }
+}
diff --git a/src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsServiceImpl.java b/src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsServiceImpl.java
new file mode 100644
index 0000000..eda1def
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsServiceImpl.java
@@ -0,0 +1,43 @@
+package org.jeecg.modules.pms.service.impl;
+
+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.modules.pms.entity.PmsProcessBillMaterials;
+import org.jeecg.modules.pms.mapper.PmsProcessBillMaterialsMapper;
+import org.jeecg.modules.pms.service.IPmsProcessBillMaterialsService;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: 璁㈠崟BOM
+ * @Author: jeecg-boot
+ * @Date:   2025-07-01
+ * @Version: V1.0
+ */
+@Service
+public class PmsProcessBillMaterialsServiceImpl extends ServiceImpl<PmsProcessBillMaterialsMapper, PmsProcessBillMaterials> implements IPmsProcessBillMaterialsService {
+
+    @Override
+    public IPage<Map<String, Object>> getpmsProcessBillMaterialsListData(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("batchNumber") && StringUtils.isNotBlank(parameterMap.get("batchNumber")[0])) {
+                paramMap.put("batchNumber", parameterMap.get("batchNumber")[0].trim());
+            }
+        }
+        return super.getBaseMapper().getpmsProcessBillMaterialsListData(pageData, paramMap);
+    }
+}

--
Gitblit v1.9.3