From 865ceab2bf6f8615f55a9dc4ffa8a4dbbb440155 Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期一, 28 七月 2025 21:02:06 +0800
Subject: [PATCH] 刀具管理

---
 src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingInventoryChangeServiceImpl.java |   19 
 src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingInventoryChangeMapper.java            |   17 
 src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java                            |   75 
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveMapper.xml                         |    5 
 src/main/java/org/jeecg/modules/cms/service/ICuttingToolService.java                            |   18 
 src/main/java/org/jeecg/modules/cms/entity/EdgeGrindingDetail.java                              |   75 
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundDetailServiceImpl.java           |   26 
 src/main/java/org/jeecg/modules/cms/controller/RatedLifeController.java                         |  177 +
 src/main/java/org/jeecg/modules/cms/entity/CuttingScrapDetail.java                              |   59 
 src/main/java/org/jeecg/modules/cms/mapper/EdgeGrindingDetailMapper.java                        |   19 
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapDetailMapper.xml                     |   17 
 src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingMapper.xml                        |    5 
 src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingDetailController.java             |  177 +
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java               |   19 
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java                 |   19 
 src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java                              |   17 
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundInventoryMapper.xml                |    5 
 src/main/java/org/jeecg/modules/cms/service/ICuttingInboundDetailService.java                   |   18 
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java                 |   19 
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingToolServiceImpl.java                    |   28 
 src/main/java/org/jeecg/modules/cms/controller/CuttingInboundDetailController.java              |  177 +
 src/main/java/org/jeecg/modules/cms/mapper/EdgeGrindingMapper.java                              |   17 
 src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingController.java                   |  177 +
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingPropertiesServiceImpl.java              |   25 
 src/main/java/org/jeecg/modules/cms/entity/ToolStocktakingDetail.java                           |   71 
 src/main/java/org/jeecg/modules/cms/controller/CuttingToolController.java                       |  215 ++
 src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java                                    |   95 +
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundDetailMapper.xml                   |   18 
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInventoryMapper.xml                       |    5 
 src/main/java/org/jeecg/modules/cms/mapper/CuttingInventoryMapper.java                          |   17 
 src/main/java/org/jeecg/modules/cms/service/ICuttingScrapDetailService.java                     |   18 
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingPropertiesMapper.xml                      |   16 
 src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingInventoryChangeController.java    |  177 +
 src/main/java/org/jeecg/modules/cms/entity/CuttingInbound.java                                  |   95 +
 src/main/java/org/jeecg/modules/cms/service/ICuttingInboundInventoryService.java                |   14 
 src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java                      |  212 ++
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveDetailMapper.xml                   |   19 
 src/main/java/org/jeecg/modules/cms/service/IRatedLifeService.java                              |   14 
 src/main/java/org/jeecg/modules/cms/service/impl/EdgeGrindingDetailServiceImpl.java             |   26 
 src/main/java/org/jeecg/modules/cms/entity/RatedLife.java                                       |   67 
 src/main/java/org/jeecg/modules/cms/mapper/CuttingToolMapper.java                               |   20 
 src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapDetailMapper.java                        |   19 
 src/main/java/org/jeecg/modules/cms/entity/CuttingReceive.java                                  |  124 +
 src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingDetailMapper.xml                  |    5 
 src/main/java/org/jeecg/modules/cms/service/IToolStocktakingDetailService.java                  |   14 
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java                   |   19 
 src/main/java/org/jeecg/modules/cms/service/IEdgeGrindingService.java                           |   14 
 src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java                    |  212 ++
 src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundMapper.java                            |   17 
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingToolMapper.xml                            |   33 
 src/main/java/org/jeecg/modules/cms/entity/CuttingTool.java                                     |  110 +
 src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingMapper.java                           |   17 
 src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingInventoryChangeMapper.xml         |    5 
 src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java                       |   14 
 src/main/java/org/jeecg/modules/cms/service/IToolStocktakingService.java                        |   14 
 src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingDetailServiceImpl.java          |   19 
 src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java                  |  177 +
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapDetailServiceImpl.java             |   26 
 src/main/java/org/jeecg/modules/cms/service/impl/RatedLifeServiceImpl.java                      |   19 
 src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveDetailController.java              |  177 +
 src/main/java/org/jeecg/modules/cms/entity/CuttingInboundDetail.java                            |   58 
 src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java                           |   14 
 src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingServiceImpl.java                |   19 
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml                           |    5 
 src/main/java/org/jeecg/modules/cms/controller/CuttingInboundInventoryController.java           |  177 +
 src/main/java/org/jeecg/modules/cms/mapper/CuttingPropertiesMapper.java                         |   18 
 src/main/java/org/jeecg/modules/cms/entity/ToolStocktakingInventoryChange.java                  |   67 
 src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundInventoryMapper.java                   |   17 
 src/main/java/org/jeecg/modules/cms/controller/CuttingScrapDetailController.java                |  177 +
 src/main/java/org/jeecg/modules/cms/controller/EdgeGrindingController.java                      |  212 ++
 src/main/java/org/jeecg/modules/cms/entity/CuttingInboundInventory.java                         |   55 
 src/main/java/org/jeecg/modules/cms/controller/CuttingPropertiesController.java                 |  177 +
 src/main/java/org/jeecg/modules/cms/service/ICuttingPropertiesService.java                      |   17 
 src/main/java/org/jeecg/modules/cms/entity/CuttingProperties.java                               |   75 
 src/main/java/org/jeecg/modules/cms/service/impl/EdgeGrindingServiceImpl.java                   |   19 
 src/main/java/org/jeecg/modules/cms/controller/EdgeGrindingDetailController.java                |  177 +
 src/main/java/org/jeecg/modules/cms/entity/ToolStocktaking.java                                 |   83 
 src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingDetailMapper.java                     |   17 
 src/main/java/org/jeecg/modules/cms/mapper/xml/RatedLifeMapper.xml                              |    5 
 src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java                                |   71 
 src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java                    |  211 ++
 src/main/java/org/jeecg/modules/cms/entity/EdgeGrinding.java                                    |  120 +
 src/main/java/org/jeecg/modules/cms/service/ICuttingInboundService.java                         |   14 
 src/main/java/org/jeecg/modules/cms/service/IToolStocktakingInventoryChangeService.java         |   14 
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundMapper.xml                         |    5 
 src/main/java/org/jeecg/modules/cms/mapper/RatedLifeMapper.java                                 |   17 
 src/main/java/org/jeecg/modules/cms/mapper/xml/EdgeGrindingDetailMapper.xml                     |   21 
 src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveDetailService.java                   |   18 
 src/main/java/org/jeecg/modules/cms/mapper/xml/EdgeGrindingMapper.xml                           |    5 
 src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java                         |   14 
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundInventoryServiceImpl.java        |   19 
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveDetailServiceImpl.java           |   26 
 src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveMapper.java                            |   17 
 src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundDetailMapper.java                      |   18 
 src/main/java/org/jeecg/modules/cms/service/IEdgeGrindingDetailService.java                     |   18 
 src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveDetailMapper.java                      |   19 
 96 files changed, 5,360 insertions(+), 0 deletions(-)

diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java
new file mode 100644
index 0000000..fea2c84
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java
@@ -0,0 +1,211 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.CuttingInbound;
+import org.jeecg.modules.cms.entity.CuttingInboundDetail;
+import org.jeecg.modules.cms.service.ICuttingInboundDetailService;
+import org.jeecg.modules.cms.service.ICuttingInboundService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍒�鍏峰叆搴撳崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍒�鍏峰叆搴撳崟")
+@RestController
+@RequestMapping("/cms/cuttingInbound")
+@Slf4j
+public class CuttingInboundController extends JeecgController<CuttingInbound, ICuttingInboundService> {
+	@Autowired
+	private ICuttingInboundService cuttingInboundService;
+
+	 @Autowired
+	 private ICuttingInboundDetailService cuttingInboundDetailService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param cuttingInbound
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏峰叆搴撳崟-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍒�鍏峰叆搴撳崟-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏峰叆搴撳崟-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<CuttingInbound>> queryPageList(CuttingInbound cuttingInbound,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CuttingInbound> queryWrapper = QueryGenerator.initQueryWrapper(cuttingInbound, req.getParameterMap());
+		Page<CuttingInbound> page = new Page<CuttingInbound>(pageNo, pageSize);
+		IPage<CuttingInbound> pageList = cuttingInboundService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param jSONObject
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏峰叆搴撳崟-娣诲姞")
+	@ApiOperation(value="鍒�鍏峰叆搴撳崟-娣诲姞", notes="鍒�鍏峰叆搴撳崟-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody JSONObject jSONObject) {
+		CuttingInbound cuttingInbound = jSONObject.toJavaObject(CuttingInbound.class);
+		cuttingInbound.setOrderStatus("1");
+		cuttingInboundService.saveOrUpdate(cuttingInbound);
+		//鍒犻櫎鍘熷叧鑱旀暟鎹�
+		List<CuttingInboundDetail> cuttingInboundDetailList = cuttingInboundDetailService.lambdaQuery().eq(CuttingInboundDetail::getOrderId,cuttingInbound.getId()).list();
+		cuttingInboundDetailService.removeBatchByIds(cuttingInboundDetailList);
+		//娣诲姞鏂板叧鑱旀暟鎹�
+		JSONArray jsonArray = jSONObject.getJSONArray("detailData");
+		List<CuttingInboundDetail> list = jsonArray.toJavaList(CuttingInboundDetail.class);
+		for (int i = 0; i < list.size(); i++) {
+			CuttingInboundDetail temp = list.get(i);
+			temp.setOrderId(cuttingInbound.getId());
+			cuttingInboundDetailService.save(temp);
+		}
+		return Result.OK("鍏ュ簱鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param cuttingInbound
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏峰叆搴撳崟-缂栬緫")
+	@ApiOperation(value="鍒�鍏峰叆搴撳崟-缂栬緫", notes="鍒�鍏峰叆搴撳崟-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CuttingInbound cuttingInbound) {
+		cuttingInboundService.updateById(cuttingInbound);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏峰叆搴撳崟-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍒�鍏峰叆搴撳崟-閫氳繃id鍒犻櫎", notes="鍒�鍏峰叆搴撳崟-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cuttingInboundService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏峰叆搴撳崟-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍒�鍏峰叆搴撳崟-鎵归噺鍒犻櫎", notes="鍒�鍏峰叆搴撳崟-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cuttingInboundService.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<CuttingInbound> queryById(@RequestParam(name="id",required=true) String id) {
+		CuttingInbound cuttingInbound = cuttingInboundService.getById(id);
+		if(cuttingInbound==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(cuttingInbound);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param cuttingInbound
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CuttingInbound cuttingInbound) {
+        return super.exportXls(request, cuttingInbound, CuttingInbound.class, "鍒�鍏峰叆搴撳崟");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_cutting_inbound:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CuttingInbound.class);
+    }
+
+	 /**
+	  * 鏍规嵁鍏ュ簱id鏌ヨ鍏ュ簱鏄庣粏
+	  *
+	  * @param orderId
+	  * @return
+	  */
+	 @GetMapping("/detailList")
+	 public Result<?> detailList(@RequestParam("orderId") String orderId) {
+		 List<Map<String, Object>> list = cuttingInboundDetailService.detailList(orderId);
+		 return Result.ok(list);
+	 }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundDetailController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundDetailController.java
new file mode 100644
index 0000000..b82a58c
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundDetailController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.CuttingInboundDetail;
+import org.jeecg.modules.cms.service.ICuttingInboundDetailService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍏ュ簱鍗曟槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍏ュ簱鍗曟槑缁�")
+@RestController
+@RequestMapping("/cms/cuttingInboundDetail")
+@Slf4j
+public class CuttingInboundDetailController extends JeecgController<CuttingInboundDetail, ICuttingInboundDetailService> {
+	@Autowired
+	private ICuttingInboundDetailService cuttingInboundDetailService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param cuttingInboundDetail
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍏ュ簱鍗曟槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍏ュ簱鍗曟槑缁�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍏ュ簱鍗曟槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<CuttingInboundDetail>> queryPageList(CuttingInboundDetail cuttingInboundDetail,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CuttingInboundDetail> queryWrapper = QueryGenerator.initQueryWrapper(cuttingInboundDetail, req.getParameterMap());
+		Page<CuttingInboundDetail> page = new Page<CuttingInboundDetail>(pageNo, pageSize);
+		IPage<CuttingInboundDetail> pageList = cuttingInboundDetailService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param cuttingInboundDetail
+	 * @return
+	 */
+	@AutoLog(value = "鍏ュ簱鍗曟槑缁�-娣诲姞")
+	@ApiOperation(value="鍏ュ簱鍗曟槑缁�-娣诲姞", notes="鍏ュ簱鍗曟槑缁�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound_detail:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CuttingInboundDetail cuttingInboundDetail) {
+		cuttingInboundDetailService.save(cuttingInboundDetail);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param cuttingInboundDetail
+	 * @return
+	 */
+	@AutoLog(value = "鍏ュ簱鍗曟槑缁�-缂栬緫")
+	@ApiOperation(value="鍏ュ簱鍗曟槑缁�-缂栬緫", notes="鍏ュ簱鍗曟槑缁�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound_detail:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CuttingInboundDetail cuttingInboundDetail) {
+		cuttingInboundDetailService.updateById(cuttingInboundDetail);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍏ュ簱鍗曟槑缁�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍏ュ簱鍗曟槑缁�-閫氳繃id鍒犻櫎", notes="鍏ュ簱鍗曟槑缁�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound_detail:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cuttingInboundDetailService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍏ュ簱鍗曟槑缁�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍏ュ簱鍗曟槑缁�-鎵归噺鍒犻櫎", notes="鍏ュ簱鍗曟槑缁�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound_detail:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cuttingInboundDetailService.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<CuttingInboundDetail> queryById(@RequestParam(name="id",required=true) String id) {
+		CuttingInboundDetail cuttingInboundDetail = cuttingInboundDetailService.getById(id);
+		if(cuttingInboundDetail==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(cuttingInboundDetail);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param cuttingInboundDetail
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound_detail:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CuttingInboundDetail cuttingInboundDetail) {
+        return super.exportXls(request, cuttingInboundDetail, CuttingInboundDetail.class, "鍏ュ簱鍗曟槑缁�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_cutting_inbound_detail:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CuttingInboundDetail.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundInventoryController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundInventoryController.java
new file mode 100644
index 0000000..89f7787
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundInventoryController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.CuttingInboundInventory;
+import org.jeecg.modules.cms.service.ICuttingInboundInventoryService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍏ュ簱鍗曞簱瀛樺叧绯�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍏ュ簱鍗曞簱瀛樺叧绯�")
+@RestController
+@RequestMapping("/cms/cuttingInboundInventory")
+@Slf4j
+public class CuttingInboundInventoryController extends JeecgController<CuttingInboundInventory, ICuttingInboundInventoryService> {
+	@Autowired
+	private ICuttingInboundInventoryService cuttingInboundInventoryService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param cuttingInboundInventory
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍏ュ簱鍗曞簱瀛樺叧绯�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍏ュ簱鍗曞簱瀛樺叧绯�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍏ュ簱鍗曞簱瀛樺叧绯�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<CuttingInboundInventory>> queryPageList(CuttingInboundInventory cuttingInboundInventory,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CuttingInboundInventory> queryWrapper = QueryGenerator.initQueryWrapper(cuttingInboundInventory, req.getParameterMap());
+		Page<CuttingInboundInventory> page = new Page<CuttingInboundInventory>(pageNo, pageSize);
+		IPage<CuttingInboundInventory> pageList = cuttingInboundInventoryService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param cuttingInboundInventory
+	 * @return
+	 */
+	@AutoLog(value = "鍏ュ簱鍗曞簱瀛樺叧绯�-娣诲姞")
+	@ApiOperation(value="鍏ュ簱鍗曞簱瀛樺叧绯�-娣诲姞", notes="鍏ュ簱鍗曞簱瀛樺叧绯�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound_inventory:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CuttingInboundInventory cuttingInboundInventory) {
+		cuttingInboundInventoryService.save(cuttingInboundInventory);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param cuttingInboundInventory
+	 * @return
+	 */
+	@AutoLog(value = "鍏ュ簱鍗曞簱瀛樺叧绯�-缂栬緫")
+	@ApiOperation(value="鍏ュ簱鍗曞簱瀛樺叧绯�-缂栬緫", notes="鍏ュ簱鍗曞簱瀛樺叧绯�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound_inventory:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CuttingInboundInventory cuttingInboundInventory) {
+		cuttingInboundInventoryService.updateById(cuttingInboundInventory);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍏ュ簱鍗曞簱瀛樺叧绯�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍏ュ簱鍗曞簱瀛樺叧绯�-閫氳繃id鍒犻櫎", notes="鍏ュ簱鍗曞簱瀛樺叧绯�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound_inventory:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cuttingInboundInventoryService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍏ュ簱鍗曞簱瀛樺叧绯�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍏ュ簱鍗曞簱瀛樺叧绯�-鎵归噺鍒犻櫎", notes="鍏ュ簱鍗曞簱瀛樺叧绯�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound_inventory:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cuttingInboundInventoryService.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<CuttingInboundInventory> queryById(@RequestParam(name="id",required=true) String id) {
+		CuttingInboundInventory cuttingInboundInventory = cuttingInboundInventoryService.getById(id);
+		if(cuttingInboundInventory==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(cuttingInboundInventory);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param cuttingInboundInventory
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inbound_inventory:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CuttingInboundInventory cuttingInboundInventory) {
+        return super.exportXls(request, cuttingInboundInventory, CuttingInboundInventory.class, "鍏ュ簱鍗曞簱瀛樺叧绯�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_cutting_inbound_inventory:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CuttingInboundInventory.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java
new file mode 100644
index 0000000..92024f7
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.CuttingInventory;
+import org.jeecg.modules.cms.service.ICuttingInventoryService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍒�鍏峰簱瀛�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍒�鍏峰簱瀛�")
+@RestController
+@RequestMapping("/cms/cuttingInventory")
+@Slf4j
+public class CuttingInventoryController extends JeecgController<CuttingInventory, ICuttingInventoryService> {
+	@Autowired
+	private ICuttingInventoryService cuttingInventoryService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param cuttingInventory
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏峰簱瀛�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍒�鍏峰簱瀛�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏峰簱瀛�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<CuttingInventory>> queryPageList(CuttingInventory cuttingInventory,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CuttingInventory> queryWrapper = QueryGenerator.initQueryWrapper(cuttingInventory, req.getParameterMap());
+		Page<CuttingInventory> page = new Page<CuttingInventory>(pageNo, pageSize);
+		IPage<CuttingInventory> pageList = cuttingInventoryService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param cuttingInventory
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏峰簱瀛�-娣诲姞")
+	@ApiOperation(value="鍒�鍏峰簱瀛�-娣诲姞", notes="鍒�鍏峰簱瀛�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CuttingInventory cuttingInventory) {
+		cuttingInventoryService.save(cuttingInventory);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param cuttingInventory
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏峰簱瀛�-缂栬緫")
+	@ApiOperation(value="鍒�鍏峰簱瀛�-缂栬緫", notes="鍒�鍏峰簱瀛�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CuttingInventory cuttingInventory) {
+		cuttingInventoryService.updateById(cuttingInventory);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏峰簱瀛�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍒�鍏峰簱瀛�-閫氳繃id鍒犻櫎", notes="鍒�鍏峰簱瀛�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cuttingInventoryService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏峰簱瀛�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍒�鍏峰簱瀛�-鎵归噺鍒犻櫎", notes="鍒�鍏峰簱瀛�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cuttingInventoryService.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<CuttingInventory> queryById(@RequestParam(name="id",required=true) String id) {
+		CuttingInventory cuttingInventory = cuttingInventoryService.getById(id);
+		if(cuttingInventory==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(cuttingInventory);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param cuttingInventory
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CuttingInventory cuttingInventory) {
+        return super.exportXls(request, cuttingInventory, CuttingInventory.class, "鍒�鍏峰簱瀛�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_cutting_inventory:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CuttingInventory.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingPropertiesController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingPropertiesController.java
new file mode 100644
index 0000000..8c229ed
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingPropertiesController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.CuttingProperties;
+import org.jeecg.modules.cms.service.ICuttingPropertiesService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍒�鍏锋墿灞曞睘鎬�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍒�鍏锋墿灞曞睘鎬�")
+@RestController
+@RequestMapping("/cms/cuttingProperties")
+@Slf4j
+public class CuttingPropertiesController extends JeecgController<CuttingProperties, ICuttingPropertiesService> {
+	@Autowired
+	private ICuttingPropertiesService cuttingPropertiesService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param cuttingProperties
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏锋墿灞曞睘鎬�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍒�鍏锋墿灞曞睘鎬�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏锋墿灞曞睘鎬�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<CuttingProperties>> queryPageList(CuttingProperties cuttingProperties,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CuttingProperties> queryWrapper = QueryGenerator.initQueryWrapper(cuttingProperties, req.getParameterMap());
+		Page<CuttingProperties> page = new Page<CuttingProperties>(pageNo, pageSize);
+		IPage<CuttingProperties> pageList = cuttingPropertiesService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param cuttingProperties
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋墿灞曞睘鎬�-娣诲姞")
+	@ApiOperation(value="鍒�鍏锋墿灞曞睘鎬�-娣诲姞", notes="鍒�鍏锋墿灞曞睘鎬�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_properties:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CuttingProperties cuttingProperties) {
+		cuttingPropertiesService.save(cuttingProperties);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param cuttingProperties
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋墿灞曞睘鎬�-缂栬緫")
+	@ApiOperation(value="鍒�鍏锋墿灞曞睘鎬�-缂栬緫", notes="鍒�鍏锋墿灞曞睘鎬�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_properties:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CuttingProperties cuttingProperties) {
+		cuttingPropertiesService.updateById(cuttingProperties);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋墿灞曞睘鎬�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍒�鍏锋墿灞曞睘鎬�-閫氳繃id鍒犻櫎", notes="鍒�鍏锋墿灞曞睘鎬�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_properties:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cuttingPropertiesService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋墿灞曞睘鎬�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍒�鍏锋墿灞曞睘鎬�-鎵归噺鍒犻櫎", notes="鍒�鍏锋墿灞曞睘鎬�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_properties:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cuttingPropertiesService.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<CuttingProperties> queryById(@RequestParam(name="id",required=true) String id) {
+		CuttingProperties cuttingProperties = cuttingPropertiesService.getById(id);
+		if(cuttingProperties==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(cuttingProperties);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param cuttingProperties
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_properties:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CuttingProperties cuttingProperties) {
+        return super.exportXls(request, cuttingProperties, CuttingProperties.class, "鍒�鍏锋墿灞曞睘鎬�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_cutting_properties:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CuttingProperties.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java
new file mode 100644
index 0000000..1d78b9f
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java
@@ -0,0 +1,212 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.CuttingInbound;
+import org.jeecg.modules.cms.entity.CuttingInboundDetail;
+import org.jeecg.modules.cms.entity.CuttingReceive;
+import org.jeecg.modules.cms.entity.CuttingReceiveDetail;
+import org.jeecg.modules.cms.service.ICuttingReceiveDetailService;
+import org.jeecg.modules.cms.service.ICuttingReceiveService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍒�鍏烽鐢ㄥ崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍒�鍏烽鐢ㄥ崟")
+@RestController
+@RequestMapping("/cms/cuttingReceive")
+@Slf4j
+public class CuttingReceiveController extends JeecgController<CuttingReceive, ICuttingReceiveService> {
+	@Autowired
+	private ICuttingReceiveService cuttingReceiveService;
+
+	 @Autowired
+	 private ICuttingReceiveDetailService cuttingReceiveDetailService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param cuttingReceive
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<CuttingReceive>> queryPageList(CuttingReceive cuttingReceive,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CuttingReceive> queryWrapper = QueryGenerator.initQueryWrapper(cuttingReceive, req.getParameterMap());
+		Page<CuttingReceive> page = new Page<CuttingReceive>(pageNo, pageSize);
+		IPage<CuttingReceive> pageList = cuttingReceiveService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param jSONObject
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-娣诲姞")
+	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-娣诲姞", notes="鍒�鍏烽鐢ㄥ崟-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody JSONObject jSONObject) {
+		CuttingReceive cuttingReceive = jSONObject.toJavaObject(CuttingReceive.class);
+		cuttingReceive.setOrderStatus("1");
+		cuttingReceiveService.saveOrUpdate(cuttingReceive);
+		//鍒犻櫎鍘熷叧鑱旀暟鎹�
+		List<CuttingReceiveDetail> cuttingReceiveDetailList = cuttingReceiveDetailService.lambdaQuery().eq(CuttingReceiveDetail::getOrderId,cuttingReceive.getId()).list();
+		cuttingReceiveDetailService.removeBatchByIds(cuttingReceiveDetailList);
+		//娣诲姞鏂板叧鑱旀暟鎹�
+		JSONArray jsonArray = jSONObject.getJSONArray("detailData");
+		List<CuttingReceiveDetail> list = jsonArray.toJavaList(CuttingReceiveDetail.class);
+		for (int i = 0; i < list.size(); i++) {
+			CuttingReceiveDetail temp = list.get(i);
+			temp.setOrderId(cuttingReceive.getId());
+			cuttingReceiveDetailService.save(temp);
+		}
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param cuttingReceive
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-缂栬緫")
+	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-缂栬緫", notes="鍒�鍏烽鐢ㄥ崟-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CuttingReceive cuttingReceive) {
+		cuttingReceiveService.updateById(cuttingReceive);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎", notes="鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cuttingReceiveService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎", notes="鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cuttingReceiveService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 * 閫氳繃id鏌ヨ
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ")
+	@ApiOperation(value="鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ", notes="鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ")
+	@GetMapping(value = "/queryById")
+	public Result<CuttingReceive> queryById(@RequestParam(name="id",required=true) String id) {
+		CuttingReceive cuttingReceive = cuttingReceiveService.getById(id);
+		if(cuttingReceive==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(cuttingReceive);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param cuttingReceive
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CuttingReceive cuttingReceive) {
+        return super.exportXls(request, cuttingReceive, CuttingReceive.class, "鍒�鍏烽鐢ㄥ崟");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_cutting_receive:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CuttingReceive.class);
+    }
+
+	 /**
+	  * 鏍规嵁棰嗙敤id鏌ヨ棰嗙敤鏄庣粏
+	  *
+	  * @param orderId
+	  * @return
+	  */
+	 @GetMapping("/detailList")
+	 public Result<?> detailList(@RequestParam("orderId") String orderId) {
+		 List<Map<String, Object>> list = cuttingReceiveDetailService.detailList(orderId);
+		 return Result.ok(list);
+	 }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveDetailController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveDetailController.java
new file mode 100644
index 0000000..ac8e784
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveDetailController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.CuttingReceiveDetail;
+import org.jeecg.modules.cms.service.ICuttingReceiveDetailService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 棰嗙敤鍗曟槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="棰嗙敤鍗曟槑缁�")
+@RestController
+@RequestMapping("/cms/cuttingReceiveDetail")
+@Slf4j
+public class CuttingReceiveDetailController extends JeecgController<CuttingReceiveDetail, ICuttingReceiveDetailService> {
+	@Autowired
+	private ICuttingReceiveDetailService cuttingReceiveDetailService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param cuttingReceiveDetail
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "棰嗙敤鍗曟槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="棰嗙敤鍗曟槑缁�-鍒嗛〉鍒楄〃鏌ヨ", notes="棰嗙敤鍗曟槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<CuttingReceiveDetail>> queryPageList(CuttingReceiveDetail cuttingReceiveDetail,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CuttingReceiveDetail> queryWrapper = QueryGenerator.initQueryWrapper(cuttingReceiveDetail, req.getParameterMap());
+		Page<CuttingReceiveDetail> page = new Page<CuttingReceiveDetail>(pageNo, pageSize);
+		IPage<CuttingReceiveDetail> pageList = cuttingReceiveDetailService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param cuttingReceiveDetail
+	 * @return
+	 */
+	@AutoLog(value = "棰嗙敤鍗曟槑缁�-娣诲姞")
+	@ApiOperation(value="棰嗙敤鍗曟槑缁�-娣诲姞", notes="棰嗙敤鍗曟槑缁�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive_detail:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CuttingReceiveDetail cuttingReceiveDetail) {
+		cuttingReceiveDetailService.save(cuttingReceiveDetail);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param cuttingReceiveDetail
+	 * @return
+	 */
+	@AutoLog(value = "棰嗙敤鍗曟槑缁�-缂栬緫")
+	@ApiOperation(value="棰嗙敤鍗曟槑缁�-缂栬緫", notes="棰嗙敤鍗曟槑缁�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive_detail:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CuttingReceiveDetail cuttingReceiveDetail) {
+		cuttingReceiveDetailService.updateById(cuttingReceiveDetail);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "棰嗙敤鍗曟槑缁�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="棰嗙敤鍗曟槑缁�-閫氳繃id鍒犻櫎", notes="棰嗙敤鍗曟槑缁�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive_detail:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cuttingReceiveDetailService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "棰嗙敤鍗曟槑缁�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="棰嗙敤鍗曟槑缁�-鎵归噺鍒犻櫎", notes="棰嗙敤鍗曟槑缁�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_receive_detail:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cuttingReceiveDetailService.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<CuttingReceiveDetail> queryById(@RequestParam(name="id",required=true) String id) {
+		CuttingReceiveDetail cuttingReceiveDetail = cuttingReceiveDetailService.getById(id);
+		if(cuttingReceiveDetail==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(cuttingReceiveDetail);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param cuttingReceiveDetail
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive_detail:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CuttingReceiveDetail cuttingReceiveDetail) {
+        return super.exportXls(request, cuttingReceiveDetail, CuttingReceiveDetail.class, "棰嗙敤鍗曟槑缁�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_cutting_receive_detail:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CuttingReceiveDetail.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java
new file mode 100644
index 0000000..9fe8b9f
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java
@@ -0,0 +1,212 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.CuttingReceive;
+import org.jeecg.modules.cms.entity.CuttingReceiveDetail;
+import org.jeecg.modules.cms.entity.CuttingScrap;
+import org.jeecg.modules.cms.entity.CuttingScrapDetail;
+import org.jeecg.modules.cms.service.ICuttingScrapDetailService;
+import org.jeecg.modules.cms.service.ICuttingScrapService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍒�鍏锋姤搴�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍒�鍏锋姤搴�")
+@RestController
+@RequestMapping("/cms/cuttingScrap")
+@Slf4j
+public class CuttingScrapController extends JeecgController<CuttingScrap, ICuttingScrapService> {
+	@Autowired
+	private ICuttingScrapService cuttingScrapService;
+
+	 @Autowired
+	 private ICuttingScrapDetailService cuttingScrapDetailService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param cuttingScrap
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏锋姤搴�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍒�鍏锋姤搴�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏锋姤搴�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<CuttingScrap>> queryPageList(CuttingScrap cuttingScrap,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CuttingScrap> queryWrapper = QueryGenerator.initQueryWrapper(cuttingScrap, req.getParameterMap());
+		Page<CuttingScrap> page = new Page<CuttingScrap>(pageNo, pageSize);
+		IPage<CuttingScrap> pageList = cuttingScrapService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param jSONObject
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋姤搴�-娣诲姞")
+	@ApiOperation(value="鍒�鍏锋姤搴�-娣诲姞", notes="鍒�鍏锋姤搴�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_scrap:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody JSONObject jSONObject) {
+		CuttingScrap cuttingScrap = jSONObject.toJavaObject(CuttingScrap.class);
+		cuttingScrap.setOrderStatus("1");
+		cuttingScrapService.saveOrUpdate(cuttingScrap);
+		//鍒犻櫎鍘熷叧鑱旀暟鎹�
+		List<CuttingScrapDetail> cuttingScrapDetailList = cuttingScrapDetailService.lambdaQuery().eq(CuttingScrapDetail::getOrderId,cuttingScrap.getId()).list();
+		cuttingScrapDetailService.removeBatchByIds(cuttingScrapDetailList);
+		//娣诲姞鏂板叧鑱旀暟鎹�
+		JSONArray jsonArray = jSONObject.getJSONArray("detailData");
+		List<CuttingScrapDetail> list = jsonArray.toJavaList(CuttingScrapDetail.class);
+		for (int i = 0; i < list.size(); i++) {
+			CuttingScrapDetail temp = list.get(i);
+			temp.setOrderId(cuttingScrap.getId());
+			cuttingScrapDetailService.save(temp);
+		}
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param cuttingScrap
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋姤搴�-缂栬緫")
+	@ApiOperation(value="鍒�鍏锋姤搴�-缂栬緫", notes="鍒�鍏锋姤搴�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_scrap:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CuttingScrap cuttingScrap) {
+		cuttingScrapService.updateById(cuttingScrap);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋姤搴�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍒�鍏锋姤搴�-閫氳繃id鍒犻櫎", notes="鍒�鍏锋姤搴�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_scrap:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cuttingScrapService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋姤搴�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍒�鍏锋姤搴�-鎵归噺鍒犻櫎", notes="鍒�鍏锋姤搴�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_scrap:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cuttingScrapService.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<CuttingScrap> queryById(@RequestParam(name="id",required=true) String id) {
+		CuttingScrap cuttingScrap = cuttingScrapService.getById(id);
+		if(cuttingScrap==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(cuttingScrap);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param cuttingScrap
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_scrap:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CuttingScrap cuttingScrap) {
+        return super.exportXls(request, cuttingScrap, CuttingScrap.class, "鍒�鍏锋姤搴�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_cutting_scrap:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CuttingScrap.class);
+    }
+
+	 /**
+	  * 鏍规嵁鎶ュ簾id鏌ヨ鎶ュ簾鏄庣粏
+	  *
+	  * @param orderId
+	  * @return
+	  */
+	 @GetMapping("/detailList")
+	 public Result<?> detailList(@RequestParam("orderId") String orderId) {
+		 List<Map<String, Object>> list = cuttingScrapDetailService.detailList(orderId);
+		 return Result.ok(list);
+	 }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapDetailController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapDetailController.java
new file mode 100644
index 0000000..8c074ab
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapDetailController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.CuttingScrapDetail;
+import org.jeecg.modules.cms.service.ICuttingScrapDetailService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍒�鍏锋姤搴熸槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍒�鍏锋姤搴熸槑缁�")
+@RestController
+@RequestMapping("/cms/cuttingScrapDetail")
+@Slf4j
+public class CuttingScrapDetailController extends JeecgController<CuttingScrapDetail, ICuttingScrapDetailService> {
+	@Autowired
+	private ICuttingScrapDetailService cuttingScrapDetailService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param cuttingScrapDetail
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏锋姤搴熸槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍒�鍏锋姤搴熸槑缁�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏锋姤搴熸槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<CuttingScrapDetail>> queryPageList(CuttingScrapDetail cuttingScrapDetail,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CuttingScrapDetail> queryWrapper = QueryGenerator.initQueryWrapper(cuttingScrapDetail, req.getParameterMap());
+		Page<CuttingScrapDetail> page = new Page<CuttingScrapDetail>(pageNo, pageSize);
+		IPage<CuttingScrapDetail> pageList = cuttingScrapDetailService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param cuttingScrapDetail
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋姤搴熸槑缁�-娣诲姞")
+	@ApiOperation(value="鍒�鍏锋姤搴熸槑缁�-娣诲姞", notes="鍒�鍏锋姤搴熸槑缁�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_scrap_detail:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CuttingScrapDetail cuttingScrapDetail) {
+		cuttingScrapDetailService.save(cuttingScrapDetail);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param cuttingScrapDetail
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋姤搴熸槑缁�-缂栬緫")
+	@ApiOperation(value="鍒�鍏锋姤搴熸槑缁�-缂栬緫", notes="鍒�鍏锋姤搴熸槑缁�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_scrap_detail:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CuttingScrapDetail cuttingScrapDetail) {
+		cuttingScrapDetailService.updateById(cuttingScrapDetail);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋姤搴熸槑缁�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍒�鍏锋姤搴熸槑缁�-閫氳繃id鍒犻櫎", notes="鍒�鍏锋姤搴熸槑缁�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_scrap_detail:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cuttingScrapDetailService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏锋姤搴熸槑缁�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍒�鍏锋姤搴熸槑缁�-鎵归噺鍒犻櫎", notes="鍒�鍏锋姤搴熸槑缁�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_scrap_detail:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cuttingScrapDetailService.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<CuttingScrapDetail> queryById(@RequestParam(name="id",required=true) String id) {
+		CuttingScrapDetail cuttingScrapDetail = cuttingScrapDetailService.getById(id);
+		if(cuttingScrapDetail==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(cuttingScrapDetail);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param cuttingScrapDetail
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_scrap_detail:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CuttingScrapDetail cuttingScrapDetail) {
+        return super.exportXls(request, cuttingScrapDetail, CuttingScrapDetail.class, "鍒�鍏锋姤搴熸槑缁�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_cutting_scrap_detail:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CuttingScrapDetail.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingToolController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingToolController.java
new file mode 100644
index 0000000..c7d07ce
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingToolController.java
@@ -0,0 +1,215 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.CuttingProperties;
+import org.jeecg.modules.cms.entity.CuttingTool;
+import org.jeecg.modules.cms.service.ICuttingPropertiesService;
+import org.jeecg.modules.cms.service.ICuttingToolService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍒�鍏蜂俊鎭�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍒�鍏蜂俊鎭�")
+@RestController
+@RequestMapping("/cms/cuttingTool")
+@Slf4j
+public class CuttingToolController extends JeecgController<CuttingTool, ICuttingToolService> {
+	@Autowired
+	private ICuttingToolService cuttingToolService;
+
+	 @Autowired
+	 private ICuttingPropertiesService cuttingPropertiesService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param cuttingTool
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏蜂俊鎭�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍒�鍏蜂俊鎭�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏蜂俊鎭�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<CuttingTool>> queryPageList(CuttingTool cuttingTool,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CuttingTool> queryWrapper = QueryGenerator.initQueryWrapper(cuttingTool, req.getParameterMap());
+		Page<CuttingTool> page = new Page<CuttingTool>(pageNo, pageSize);
+		IPage<CuttingTool> pageList = cuttingToolService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param cuttingTool
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂俊鎭�-娣诲姞")
+	@ApiOperation(value="鍒�鍏蜂俊鎭�-娣诲姞", notes="鍒�鍏蜂俊鎭�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CuttingTool cuttingTool) {
+		cuttingToolService.save(cuttingTool);
+		List<CuttingProperties> cuttingPropertiesList = cuttingTool.getCuttingPropertiesList();
+		for (CuttingProperties cuttingProperties : cuttingPropertiesList) {
+			cuttingProperties.setCuttingId(cuttingTool.getId());
+			cuttingPropertiesService.save(cuttingProperties);
+		}
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param cuttingTool
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂俊鎭�-缂栬緫")
+	@ApiOperation(value="鍒�鍏蜂俊鎭�-缂栬緫", notes="鍒�鍏蜂俊鎭�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CuttingTool cuttingTool) {
+		cuttingToolService.saveOrUpdate(cuttingTool);
+		List<String> deletePropertiesIds = cuttingTool.getDeletePropertiesIds();
+		if (deletePropertiesIds != null) {
+			for (String deletePropertiesId : deletePropertiesIds) {
+				cuttingPropertiesService.removeById(deletePropertiesId);
+			}
+		}
+		List<CuttingProperties> cuttingPropertiesList = cuttingTool.getCuttingPropertiesList();
+		for (CuttingProperties cuttingProperties : cuttingPropertiesList) {
+			cuttingProperties.setCuttingId(cuttingTool.getId());
+			cuttingPropertiesService.saveOrUpdate(cuttingProperties);
+		}
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂俊鎭�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍒�鍏蜂俊鎭�-閫氳繃id鍒犻櫎", notes="鍒�鍏蜂俊鎭�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cuttingToolService.removeById(id);
+		cuttingPropertiesService.remove(new LambdaQueryWrapper<CuttingProperties>().eq(CuttingProperties::getCuttingId, id));
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂俊鎭�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍒�鍏蜂俊鎭�-鎵归噺鍒犻櫎", notes="鍒�鍏蜂俊鎭�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cuttingToolService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 * 閫氳繃id鏌ヨ
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏蜂俊鎭�-閫氳繃id鏌ヨ")
+	@ApiOperation(value="鍒�鍏蜂俊鎭�-閫氳繃id鏌ヨ", notes="鍒�鍏蜂俊鎭�-閫氳繃id鏌ヨ")
+	@GetMapping(value = "/queryById")
+	public Result<CuttingTool> queryById(@RequestParam(name="id",required=true) String id) {
+		CuttingTool cuttingTool = cuttingToolService.getById(id);
+		if(cuttingTool==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(cuttingTool);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param cuttingTool
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_tool:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CuttingTool cuttingTool) {
+        return super.exportXls(request, cuttingTool, CuttingTool.class, "鍒�鍏蜂俊鎭�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_cutting_tool:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CuttingTool.class);
+    }
+
+
+	 @GetMapping(value = "/getCuttingToolList")
+	 public Result<?> getCuttingToolList(@RequestParam("pageNo") Integer pageNo,
+									   @RequestParam("pageSize") Integer pageSize,
+									   @RequestParam Map<String, Object> params) {
+		 IPage<Map<String, Object>> cuttingToolList = cuttingToolService.getCuttingToolList(pageNo, pageSize, params);
+		 for (Map<String, Object> record : cuttingToolList.getRecords()) {
+			 String cuttingId = (String) record.get("id");
+			 List<CuttingProperties> cuttingPropertiesList = cuttingPropertiesService.selectListByCuttingId(cuttingId);
+			 record.put("cuttingPropertiesList", cuttingPropertiesList);
+		 }
+		 return Result.ok(cuttingToolList);
+	 }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/EdgeGrindingController.java b/src/main/java/org/jeecg/modules/cms/controller/EdgeGrindingController.java
new file mode 100644
index 0000000..b9ecb27
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/EdgeGrindingController.java
@@ -0,0 +1,212 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.CuttingReceive;
+import org.jeecg.modules.cms.entity.CuttingReceiveDetail;
+import org.jeecg.modules.cms.entity.EdgeGrinding;
+import org.jeecg.modules.cms.entity.EdgeGrindingDetail;
+import org.jeecg.modules.cms.service.IEdgeGrindingDetailService;
+import org.jeecg.modules.cms.service.IEdgeGrindingService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍒�鍏蜂慨纾�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍒�鍏蜂慨纾�")
+@RestController
+@RequestMapping("/cms/edgeGrinding")
+@Slf4j
+public class EdgeGrindingController extends JeecgController<EdgeGrinding, IEdgeGrindingService> {
+	@Autowired
+	private IEdgeGrindingService edgeGrindingService;
+
+	 @Autowired
+	 private IEdgeGrindingDetailService edgeGrindingDetailService;
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param edgeGrinding
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏蜂慨纾�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍒�鍏蜂慨纾�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏蜂慨纾�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<EdgeGrinding>> queryPageList(EdgeGrinding edgeGrinding,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<EdgeGrinding> queryWrapper = QueryGenerator.initQueryWrapper(edgeGrinding, req.getParameterMap());
+		Page<EdgeGrinding> page = new Page<EdgeGrinding>(pageNo, pageSize);
+		IPage<EdgeGrinding> pageList = edgeGrindingService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param jSONObject
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂慨纾�-娣诲姞")
+	@ApiOperation(value="鍒�鍏蜂慨纾�-娣诲姞", notes="鍒�鍏蜂慨纾�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_edge_grinding:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody JSONObject jSONObject) {
+		EdgeGrinding edgeGrinding = jSONObject.toJavaObject(EdgeGrinding.class);
+		edgeGrinding.setOrderStatus("1");
+		edgeGrindingService.saveOrUpdate(edgeGrinding);
+		//鍒犻櫎鍘熷叧鑱旀暟鎹�
+		List<EdgeGrindingDetail> edgeGrindingDetailList = edgeGrindingDetailService.lambdaQuery().eq(EdgeGrindingDetail::getOrderId,edgeGrinding.getId()).list();
+		edgeGrindingDetailService.removeBatchByIds(edgeGrindingDetailList);
+		//娣诲姞鏂板叧鑱旀暟鎹�
+		JSONArray jsonArray = jSONObject.getJSONArray("detailData");
+		List<EdgeGrindingDetail> list = jsonArray.toJavaList(EdgeGrindingDetail.class);
+		for (int i = 0; i < list.size(); i++) {
+			EdgeGrindingDetail temp = list.get(i);
+			temp.setOrderId(edgeGrinding.getId());
+			edgeGrindingDetailService.save(temp);
+		}
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param edgeGrinding
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂慨纾�-缂栬緫")
+	@ApiOperation(value="鍒�鍏蜂慨纾�-缂栬緫", notes="鍒�鍏蜂慨纾�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_edge_grinding:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody EdgeGrinding edgeGrinding) {
+		edgeGrindingService.updateById(edgeGrinding);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂慨纾�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍒�鍏蜂慨纾�-閫氳繃id鍒犻櫎", notes="鍒�鍏蜂慨纾�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_edge_grinding:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		edgeGrindingService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂慨纾�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍒�鍏蜂慨纾�-鎵归噺鍒犻櫎", notes="鍒�鍏蜂慨纾�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_edge_grinding:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.edgeGrindingService.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<EdgeGrinding> queryById(@RequestParam(name="id",required=true) String id) {
+		EdgeGrinding edgeGrinding = edgeGrindingService.getById(id);
+		if(edgeGrinding==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(edgeGrinding);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param edgeGrinding
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_edge_grinding:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, EdgeGrinding edgeGrinding) {
+        return super.exportXls(request, edgeGrinding, EdgeGrinding.class, "鍒�鍏蜂慨纾�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_edge_grinding:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, EdgeGrinding.class);
+    }
+
+
+	 /**
+	  * 鏍规嵁淇(id鏌ヨ淇(鏄庣粏
+	  *
+	  * @param orderId
+	  * @return
+	  */
+	 @GetMapping("/detailList")
+	 public Result<?> detailList(@RequestParam("orderId") String orderId) {
+		 List<Map<String, Object>> list = edgeGrindingDetailService.detailList(orderId);
+		 return Result.ok(list);
+	 }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/EdgeGrindingDetailController.java b/src/main/java/org/jeecg/modules/cms/controller/EdgeGrindingDetailController.java
new file mode 100644
index 0000000..230d3e0
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/EdgeGrindingDetailController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.EdgeGrindingDetail;
+import org.jeecg.modules.cms.service.IEdgeGrindingDetailService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍒�鍏蜂慨纾ㄦ槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍒�鍏蜂慨纾ㄦ槑缁�")
+@RestController
+@RequestMapping("/cms/edgeGrindingDetail")
+@Slf4j
+public class EdgeGrindingDetailController extends JeecgController<EdgeGrindingDetail, IEdgeGrindingDetailService> {
+	@Autowired
+	private IEdgeGrindingDetailService edgeGrindingDetailService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param edgeGrindingDetail
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏蜂慨纾ㄦ槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍒�鍏蜂慨纾ㄦ槑缁�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏蜂慨纾ㄦ槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<EdgeGrindingDetail>> queryPageList(EdgeGrindingDetail edgeGrindingDetail,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<EdgeGrindingDetail> queryWrapper = QueryGenerator.initQueryWrapper(edgeGrindingDetail, req.getParameterMap());
+		Page<EdgeGrindingDetail> page = new Page<EdgeGrindingDetail>(pageNo, pageSize);
+		IPage<EdgeGrindingDetail> pageList = edgeGrindingDetailService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param edgeGrindingDetail
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂慨纾ㄦ槑缁�-娣诲姞")
+	@ApiOperation(value="鍒�鍏蜂慨纾ㄦ槑缁�-娣诲姞", notes="鍒�鍏蜂慨纾ㄦ槑缁�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_edge_grinding_detail:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody EdgeGrindingDetail edgeGrindingDetail) {
+		edgeGrindingDetailService.save(edgeGrindingDetail);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param edgeGrindingDetail
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂慨纾ㄦ槑缁�-缂栬緫")
+	@ApiOperation(value="鍒�鍏蜂慨纾ㄦ槑缁�-缂栬緫", notes="鍒�鍏蜂慨纾ㄦ槑缁�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_edge_grinding_detail:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody EdgeGrindingDetail edgeGrindingDetail) {
+		edgeGrindingDetailService.updateById(edgeGrindingDetail);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂慨纾ㄦ槑缁�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍒�鍏蜂慨纾ㄦ槑缁�-閫氳繃id鍒犻櫎", notes="鍒�鍏蜂慨纾ㄦ槑缁�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_edge_grinding_detail:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		edgeGrindingDetailService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏蜂慨纾ㄦ槑缁�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍒�鍏蜂慨纾ㄦ槑缁�-鎵归噺鍒犻櫎", notes="鍒�鍏蜂慨纾ㄦ槑缁�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_edge_grinding_detail:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.edgeGrindingDetailService.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<EdgeGrindingDetail> queryById(@RequestParam(name="id",required=true) String id) {
+		EdgeGrindingDetail edgeGrindingDetail = edgeGrindingDetailService.getById(id);
+		if(edgeGrindingDetail==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(edgeGrindingDetail);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param edgeGrindingDetail
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_edge_grinding_detail:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, EdgeGrindingDetail edgeGrindingDetail) {
+        return super.exportXls(request, edgeGrindingDetail, EdgeGrindingDetail.class, "鍒�鍏蜂慨纾ㄦ槑缁�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_edge_grinding_detail:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, EdgeGrindingDetail.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/RatedLifeController.java b/src/main/java/org/jeecg/modules/cms/controller/RatedLifeController.java
new file mode 100644
index 0000000..0e2ecde
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/RatedLifeController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.RatedLife;
+import org.jeecg.modules.cms.service.IRatedLifeService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 棰濆畾瀵垮懡
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="棰濆畾瀵垮懡")
+@RestController
+@RequestMapping("/cms/ratedLife")
+@Slf4j
+public class RatedLifeController extends JeecgController<RatedLife, IRatedLifeService> {
+	@Autowired
+	private IRatedLifeService ratedLifeService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param ratedLife
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "棰濆畾瀵垮懡-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="棰濆畾瀵垮懡-鍒嗛〉鍒楄〃鏌ヨ", notes="棰濆畾瀵垮懡-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<RatedLife>> queryPageList(RatedLife ratedLife,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<RatedLife> queryWrapper = QueryGenerator.initQueryWrapper(ratedLife, req.getParameterMap());
+		Page<RatedLife> page = new Page<RatedLife>(pageNo, pageSize);
+		IPage<RatedLife> pageList = ratedLifeService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param ratedLife
+	 * @return
+	 */
+	@AutoLog(value = "棰濆畾瀵垮懡-娣诲姞")
+	@ApiOperation(value="棰濆畾瀵垮懡-娣诲姞", notes="棰濆畾瀵垮懡-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_rated_life:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody RatedLife ratedLife) {
+		ratedLifeService.save(ratedLife);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param ratedLife
+	 * @return
+	 */
+	@AutoLog(value = "棰濆畾瀵垮懡-缂栬緫")
+	@ApiOperation(value="棰濆畾瀵垮懡-缂栬緫", notes="棰濆畾瀵垮懡-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_rated_life:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody RatedLife ratedLife) {
+		ratedLifeService.updateById(ratedLife);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "棰濆畾瀵垮懡-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="棰濆畾瀵垮懡-閫氳繃id鍒犻櫎", notes="棰濆畾瀵垮懡-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_rated_life:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		ratedLifeService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "棰濆畾瀵垮懡-鎵归噺鍒犻櫎")
+	@ApiOperation(value="棰濆畾瀵垮懡-鎵归噺鍒犻櫎", notes="棰濆畾瀵垮懡-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_rated_life:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.ratedLifeService.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<RatedLife> queryById(@RequestParam(name="id",required=true) String id) {
+		RatedLife ratedLife = ratedLifeService.getById(id);
+		if(ratedLife==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(ratedLife);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param ratedLife
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_rated_life:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, RatedLife ratedLife) {
+        return super.exportXls(request, ratedLife, RatedLife.class, "棰濆畾瀵垮懡");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_rated_life:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, RatedLife.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingController.java b/src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingController.java
new file mode 100644
index 0000000..90b6c8f
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.ToolStocktaking;
+import org.jeecg.modules.cms.service.IToolStocktakingService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍒�鍏风洏鐐�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍒�鍏风洏鐐�")
+@RestController
+@RequestMapping("/cms/toolStocktaking")
+@Slf4j
+public class ToolStocktakingController extends JeecgController<ToolStocktaking, IToolStocktakingService> {
+	@Autowired
+	private IToolStocktakingService toolStocktakingService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param toolStocktaking
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏风洏鐐�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍒�鍏风洏鐐�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏风洏鐐�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<ToolStocktaking>> queryPageList(ToolStocktaking toolStocktaking,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<ToolStocktaking> queryWrapper = QueryGenerator.initQueryWrapper(toolStocktaking, req.getParameterMap());
+		Page<ToolStocktaking> page = new Page<ToolStocktaking>(pageNo, pageSize);
+		IPage<ToolStocktaking> pageList = toolStocktakingService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param toolStocktaking
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏风洏鐐�-娣诲姞")
+	@ApiOperation(value="鍒�鍏风洏鐐�-娣诲姞", notes="鍒�鍏风洏鐐�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody ToolStocktaking toolStocktaking) {
+		toolStocktakingService.save(toolStocktaking);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param toolStocktaking
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏风洏鐐�-缂栬緫")
+	@ApiOperation(value="鍒�鍏风洏鐐�-缂栬緫", notes="鍒�鍏风洏鐐�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody ToolStocktaking toolStocktaking) {
+		toolStocktakingService.updateById(toolStocktaking);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏风洏鐐�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍒�鍏风洏鐐�-閫氳繃id鍒犻櫎", notes="鍒�鍏风洏鐐�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		toolStocktakingService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏风洏鐐�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍒�鍏风洏鐐�-鎵归噺鍒犻櫎", notes="鍒�鍏风洏鐐�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.toolStocktakingService.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<ToolStocktaking> queryById(@RequestParam(name="id",required=true) String id) {
+		ToolStocktaking toolStocktaking = toolStocktakingService.getById(id);
+		if(toolStocktaking==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(toolStocktaking);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param toolStocktaking
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, ToolStocktaking toolStocktaking) {
+        return super.exportXls(request, toolStocktaking, ToolStocktaking.class, "鍒�鍏风洏鐐�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_tool_stocktaking:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, ToolStocktaking.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingDetailController.java b/src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingDetailController.java
new file mode 100644
index 0000000..3994e44
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingDetailController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.ToolStocktakingDetail;
+import org.jeecg.modules.cms.service.IToolStocktakingDetailService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鍒�鍏风洏鐐规槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鍒�鍏风洏鐐规槑缁�")
+@RestController
+@RequestMapping("/cms/toolStocktakingDetail")
+@Slf4j
+public class ToolStocktakingDetailController extends JeecgController<ToolStocktakingDetail, IToolStocktakingDetailService> {
+	@Autowired
+	private IToolStocktakingDetailService toolStocktakingDetailService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param toolStocktakingDetail
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鍒�鍏风洏鐐规槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鍒�鍏风洏鐐规槑缁�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏风洏鐐规槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<ToolStocktakingDetail>> queryPageList(ToolStocktakingDetail toolStocktakingDetail,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<ToolStocktakingDetail> queryWrapper = QueryGenerator.initQueryWrapper(toolStocktakingDetail, req.getParameterMap());
+		Page<ToolStocktakingDetail> page = new Page<ToolStocktakingDetail>(pageNo, pageSize);
+		IPage<ToolStocktakingDetail> pageList = toolStocktakingDetailService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param toolStocktakingDetail
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏风洏鐐规槑缁�-娣诲姞")
+	@ApiOperation(value="鍒�鍏风洏鐐规槑缁�-娣诲姞", notes="鍒�鍏风洏鐐规槑缁�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking_detail:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody ToolStocktakingDetail toolStocktakingDetail) {
+		toolStocktakingDetailService.save(toolStocktakingDetail);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param toolStocktakingDetail
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏风洏鐐规槑缁�-缂栬緫")
+	@ApiOperation(value="鍒�鍏风洏鐐规槑缁�-缂栬緫", notes="鍒�鍏风洏鐐规槑缁�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking_detail:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody ToolStocktakingDetail toolStocktakingDetail) {
+		toolStocktakingDetailService.updateById(toolStocktakingDetail);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏风洏鐐规槑缁�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鍒�鍏风洏鐐规槑缁�-閫氳繃id鍒犻櫎", notes="鍒�鍏风洏鐐规槑缁�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking_detail:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		toolStocktakingDetailService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鍒�鍏风洏鐐规槑缁�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鍒�鍏风洏鐐规槑缁�-鎵归噺鍒犻櫎", notes="鍒�鍏风洏鐐规槑缁�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking_detail:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.toolStocktakingDetailService.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<ToolStocktakingDetail> queryById(@RequestParam(name="id",required=true) String id) {
+		ToolStocktakingDetail toolStocktakingDetail = toolStocktakingDetailService.getById(id);
+		if(toolStocktakingDetail==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(toolStocktakingDetail);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param toolStocktakingDetail
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking_detail:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, ToolStocktakingDetail toolStocktakingDetail) {
+        return super.exportXls(request, toolStocktakingDetail, ToolStocktakingDetail.class, "鍒�鍏风洏鐐规槑缁�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_tool_stocktaking_detail:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, ToolStocktakingDetail.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingInventoryChangeController.java b/src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingInventoryChangeController.java
new file mode 100644
index 0000000..73299e3
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/controller/ToolStocktakingInventoryChangeController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.cms.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cms.entity.ToolStocktakingInventoryChange;
+import org.jeecg.modules.cms.service.IToolStocktakingInventoryChangeService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鐩樼偣搴撳瓨鍙樻洿
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Api(tags="鐩樼偣搴撳瓨鍙樻洿")
+@RestController
+@RequestMapping("/cms/toolStocktakingInventoryChange")
+@Slf4j
+public class ToolStocktakingInventoryChangeController extends JeecgController<ToolStocktakingInventoryChange, IToolStocktakingInventoryChangeService> {
+	@Autowired
+	private IToolStocktakingInventoryChangeService toolStocktakingInventoryChangeService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param toolStocktakingInventoryChange
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鐩樼偣搴撳瓨鍙樻洿-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鐩樼偣搴撳瓨鍙樻洿-鍒嗛〉鍒楄〃鏌ヨ", notes="鐩樼偣搴撳瓨鍙樻洿-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<ToolStocktakingInventoryChange>> queryPageList(ToolStocktakingInventoryChange toolStocktakingInventoryChange,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<ToolStocktakingInventoryChange> queryWrapper = QueryGenerator.initQueryWrapper(toolStocktakingInventoryChange, req.getParameterMap());
+		Page<ToolStocktakingInventoryChange> page = new Page<ToolStocktakingInventoryChange>(pageNo, pageSize);
+		IPage<ToolStocktakingInventoryChange> pageList = toolStocktakingInventoryChangeService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param toolStocktakingInventoryChange
+	 * @return
+	 */
+	@AutoLog(value = "鐩樼偣搴撳瓨鍙樻洿-娣诲姞")
+	@ApiOperation(value="鐩樼偣搴撳瓨鍙樻洿-娣诲姞", notes="鐩樼偣搴撳瓨鍙樻洿-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking_inventory_change:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody ToolStocktakingInventoryChange toolStocktakingInventoryChange) {
+		toolStocktakingInventoryChangeService.save(toolStocktakingInventoryChange);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param toolStocktakingInventoryChange
+	 * @return
+	 */
+	@AutoLog(value = "鐩樼偣搴撳瓨鍙樻洿-缂栬緫")
+	@ApiOperation(value="鐩樼偣搴撳瓨鍙樻洿-缂栬緫", notes="鐩樼偣搴撳瓨鍙樻洿-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking_inventory_change:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody ToolStocktakingInventoryChange toolStocktakingInventoryChange) {
+		toolStocktakingInventoryChangeService.updateById(toolStocktakingInventoryChange);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鐩樼偣搴撳瓨鍙樻洿-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鐩樼偣搴撳瓨鍙樻洿-閫氳繃id鍒犻櫎", notes="鐩樼偣搴撳瓨鍙樻洿-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking_inventory_change:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		toolStocktakingInventoryChangeService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鐩樼偣搴撳瓨鍙樻洿-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鐩樼偣搴撳瓨鍙樻洿-鎵归噺鍒犻櫎", notes="鐩樼偣搴撳瓨鍙樻洿-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking_inventory_change:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.toolStocktakingInventoryChangeService.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<ToolStocktakingInventoryChange> queryById(@RequestParam(name="id",required=true) String id) {
+		ToolStocktakingInventoryChange toolStocktakingInventoryChange = toolStocktakingInventoryChangeService.getById(id);
+		if(toolStocktakingInventoryChange==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(toolStocktakingInventoryChange);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param toolStocktakingInventoryChange
+    */
+    //@RequiresPermissions("org.jeecg.modules:cms_tool_stocktaking_inventory_change:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, ToolStocktakingInventoryChange toolStocktakingInventoryChange) {
+        return super.exportXls(request, toolStocktakingInventoryChange, ToolStocktakingInventoryChange.class, "鐩樼偣搴撳瓨鍙樻洿");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("cms_tool_stocktaking_inventory_change:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, ToolStocktakingInventoryChange.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingInbound.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingInbound.java
new file mode 100644
index 0000000..3f184b1
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingInbound.java
@@ -0,0 +1,95 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.common.constant.CommonConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍒�鍏峰叆搴撳崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_cutting_inbound")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_cutting_inbound瀵硅薄", description="鍒�鍏峰叆搴撳崟")
+public class CuttingInbound implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**鍒犻櫎鏍囪*/
+	@Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+	/**鍏ュ簱鍗曠姸鎬�*/
+	@Excel(name = "鍏ュ簱鍗曠姸鎬�", width = 15)
+    @ApiModelProperty(value = "鍏ュ簱鍗曠姸鎬�")
+    private String orderStatus;
+	/**鍏ュ簱浜�*/
+	@Excel(name = "鍏ュ簱浜�", width = 15)
+    @ApiModelProperty(value = "鍏ュ簱浜�")
+    @Dict(dictTable = "sys_user",dicCode = "id",dicText = "realname")
+    private String receiver;
+	/**鍏ュ簱鏃堕棿*/
+	@Excel(name = "鍏ュ簱鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍏ュ簱鏃堕棿")
+    private Date receiveTime;
+	/**鍏ュ簱璇存槑*/
+	@Excel(name = "鍏ュ簱璇存槑", width = 15)
+    @ApiModelProperty(value = "鍏ュ簱璇存槑")
+    private String receiveComment;
+	/**纭浜�*/
+	@Excel(name = "纭浜�", width = 15)
+    @ApiModelProperty(value = "纭浜�")
+    @Dict(dictTable = "sys_user",dicCode = "id",dicText = "realname")
+    private String confirmer;
+	/**纭鏃堕棿*/
+	@Excel(name = "纭鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "纭鏃堕棿")
+    private Date confirmTime;
+	/**纭鎰忚*/
+	@Excel(name = "纭鎰忚", width = 15)
+    @ApiModelProperty(value = "纭鎰忚")
+    private String confirmComment;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingInboundDetail.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingInboundDetail.java
new file mode 100644
index 0000000..fd987e0
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingInboundDetail.java
@@ -0,0 +1,58 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍏ュ簱鍗曟槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_cutting_inbound_detail")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_cutting_inbound_detail瀵硅薄", description="鍏ュ簱鍗曟槑缁�")
+public class CuttingInboundDetail implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鍏ュ簱鍗�*/
+	@Excel(name = "鍏ュ簱鍗�", width = 15)
+    @ApiModelProperty(value = "鍏ュ簱鍗�")
+    private String orderId;
+	/**鍒�鍏稩D*/
+	@Excel(name = "鍒�鍏稩D", width = 15)
+    @ApiModelProperty(value = "鍒�鍏稩D")
+    private String cuttingId;
+	/**鍏ュ簱鏁伴噺*/
+	@Excel(name = "鍏ュ簱鏁伴噺", width = 15)
+    @ApiModelProperty(value = "鍏ュ簱鏁伴噺")
+    private Integer receiveNumber;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingInboundInventory.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingInboundInventory.java
new file mode 100644
index 0000000..87ea139
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingInboundInventory.java
@@ -0,0 +1,55 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍏ュ簱鍗曞簱瀛樺叧绯�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_cutting_inbound_inventory")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_cutting_inbound_inventory瀵硅薄", description="鍏ュ簱鍗曞簱瀛樺叧绯�")
+public class CuttingInboundInventory implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鍏ュ簱鍗旾D*/
+	@Excel(name = "鍏ュ簱鍗旾D", width = 15)
+    @ApiModelProperty(value = "鍏ュ簱鍗旾D")
+    private String orderId;
+	/**搴撳瓨ID*/
+	@Excel(name = "搴撳瓨ID", width = 15)
+    @ApiModelProperty(value = "搴撳瓨ID")
+    private String inventoryId;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java
new file mode 100644
index 0000000..4b6649c
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java
@@ -0,0 +1,71 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍒�鍏峰簱瀛�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_cutting_inventory")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_cutting_inventory瀵硅薄", description="鍒�鍏峰簱瀛�")
+public class CuttingInventory implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**鍒�鍏稩D*/
+	@Excel(name = "鍒�鍏稩D", width = 15)
+    @ApiModelProperty(value = "鍒�鍏稩D")
+    private String cuttingId;
+	/**鍒�鍏锋潯鐮�*/
+	@Excel(name = "鍒�鍏锋潯鐮�", width = 15)
+    @ApiModelProperty(value = "鍒�鍏锋潯鐮�")
+    private String cuttingBarcode;
+	/**搴撳瓨鐘舵��*/
+	@Excel(name = "搴撳瓨鐘舵��", width = 15)
+    @ApiModelProperty(value = "搴撳瓨鐘舵��")
+    private String inventoryStatus;
+	/**褰撳墠瀵垮懡(鐧惧垎姣�)*/
+	@Excel(name = "褰撳墠瀵垮懡(鐧惧垎姣�)", width = 15)
+    @ApiModelProperty(value = "褰撳墠瀵垮懡(鐧惧垎姣�)")
+    private BigDecimal currentLife;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingProperties.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingProperties.java
new file mode 100644
index 0000000..14b845b
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingProperties.java
@@ -0,0 +1,75 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍒�鍏锋墿灞曞睘鎬�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_cutting_properties")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_cutting_properties瀵硅薄", description="鍒�鍏锋墿灞曞睘鎬�")
+public class CuttingProperties implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**鍒�鍏稩D*/
+	@Excel(name = "鍒�鍏稩D", width = 15)
+    @ApiModelProperty(value = "鍒�鍏稩D")
+    private String cuttingId;
+	/**灞炴�х紪鐮�*/
+	@Excel(name = "灞炴�х紪鐮�", width = 15)
+    @ApiModelProperty(value = "灞炴�х紪鐮�")
+    private String propertyCode;
+	/**灞炴�у悕绉�*/
+	@Excel(name = "灞炴�у悕绉�", width = 15)
+    @ApiModelProperty(value = "灞炴�у悕绉�")
+    private String propertyName;
+	/**璁¢噺鍗曚綅*/
+	@Excel(name = "璁¢噺鍗曚綅", width = 15)
+    @ApiModelProperty(value = "璁¢噺鍗曚綅")
+    private String propertyUnit;
+	/**灞炴�у��*/
+	@Excel(name = "灞炴�у��", width = 15)
+    @ApiModelProperty(value = "灞炴�у��")
+    private String propertyValue;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingReceive.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingReceive.java
new file mode 100644
index 0000000..dba3e42
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingReceive.java
@@ -0,0 +1,124 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.common.constant.CommonConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍒�鍏烽鐢ㄥ崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_cutting_receive")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_cutting_receive瀵硅薄", description="鍒�鍏烽鐢ㄥ崟")
+public class CuttingReceive implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**鍒犻櫎鏍囪*/
+	@Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+	/**棰嗙敤鍗曠姸鎬�*/
+	@Excel(name = "棰嗙敤鍗曠姸鎬�", width = 15)
+    @ApiModelProperty(value = "棰嗙敤鍗曠姸鎬�")
+    private String orderStatus;
+	/**棰嗙敤浜�*/
+	@Excel(name = "棰嗙敤浜�", width = 15)
+    @ApiModelProperty(value = "棰嗙敤浜�")
+    @Dict(dictTable = "sys_user",dicCode = "id",dicText = "realname")
+    private String receiver;
+	/**棰嗙敤鏃堕棿*/
+	@Excel(name = "棰嗙敤鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "棰嗙敤鏃堕棿")
+    private Date receiveTime;
+	/**棰嗙敤璇存槑*/
+	@Excel(name = "棰嗙敤璇存槑", width = 15)
+    @ApiModelProperty(value = "棰嗙敤璇存槑")
+    private String receiveComment;
+	/**纭浜�*/
+	@Excel(name = "纭浜�", width = 15)
+    @ApiModelProperty(value = "纭浜�")
+    @Dict(dictTable = "sys_user",dicCode = "id",dicText = "realname")
+    private String confirmer;
+	/**纭鏃堕棿*/
+	@Excel(name = "纭鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "纭鏃堕棿")
+    private Date confirmTime;
+	/**纭鎰忚*/
+	@Excel(name = "纭鎰忚", width = 15)
+    @ApiModelProperty(value = "纭鎰忚")
+    private String confirmComment;
+	/**鏄惁浼氬綊杩�*/
+	@Excel(name = "鏄惁浼氬綊杩�", width = 15)
+    @ApiModelProperty(value = "鏄惁浼氬綊杩�")
+    private String returnFlag;
+	/**褰掕繕鏃堕棿*/
+	@Excel(name = "褰掕繕鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "褰掕繕鏃堕棿")
+    private Date returnTime;
+	/**褰掕繕璇存槑*/
+	@Excel(name = "褰掕繕璇存槑", width = 15)
+    @ApiModelProperty(value = "褰掕繕璇存槑")
+    private String returnComment;
+	/**褰掕繕纭浜�*/
+	@Excel(name = "褰掕繕纭浜�", width = 15)
+    @ApiModelProperty(value = "褰掕繕纭浜�")
+    @Dict(dictTable = "sys_user",dicCode = "id",dicText = "realname")
+    private String returnConfirmer;
+	/**褰掕繕纭鏃堕棿*/
+	@Excel(name = "褰掕繕纭鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "褰掕繕纭鏃堕棿")
+    private Date returnConfirmTime;
+	/**褰掕繕纭鎰忚*/
+	@Excel(name = "褰掕繕纭鎰忚", width = 15)
+    @ApiModelProperty(value = "褰掕繕纭鎰忚")
+    private String returnConfirmComment;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java
new file mode 100644
index 0000000..18424b9
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java
@@ -0,0 +1,75 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 棰嗙敤鍗曟槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_cutting_receive_detail")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_cutting_receive_detail瀵硅薄", description="棰嗙敤鍗曟槑缁�")
+public class CuttingReceiveDetail implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**棰嗙敤鍗旾D*/
+	@Excel(name = "棰嗙敤鍗旾D", width = 15)
+    @ApiModelProperty(value = "棰嗙敤鍗旾D")
+    private String orderId;
+	/**鍒�鍏稩D*/
+	@Excel(name = "鍒�鍏稩D", width = 15)
+    @ApiModelProperty(value = "鍒�鍏稩D")
+    private String cuttingId;
+	/**搴撳瓨ID*/
+	@Excel(name = "搴撳瓨ID", width = 15)
+    @ApiModelProperty(value = "搴撳瓨ID")
+    private String inventoryId;
+	/**宸ヤ欢鏉愯川*/
+	@Excel(name = "宸ヤ欢鏉愯川", width = 15)
+    @ApiModelProperty(value = "宸ヤ欢鏉愯川")
+    private String workpieceMaterial;
+	/**浣跨敤瀵垮懡*/
+	@Excel(name = "浣跨敤瀵垮懡", width = 15)
+    @ApiModelProperty(value = "浣跨敤瀵垮懡")
+    private Integer usedLife;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java
new file mode 100644
index 0000000..8fff14a
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java
@@ -0,0 +1,95 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.common.constant.CommonConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍒�鍏锋姤搴�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_cutting_scrap")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_cutting_scrap瀵硅薄", description="鍒�鍏锋姤搴�")
+public class CuttingScrap implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**鍒犻櫎鏍囪*/
+	@Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+	/**鎶ュ簾鍗曠姸鎬�*/
+	@Excel(name = "鎶ュ簾鍗曠姸鎬�", width = 15)
+    @ApiModelProperty(value = "鎶ュ簾鍗曠姸鎬�")
+    private String orderStatus;
+	/**鐢宠浜�*/
+	@Excel(name = "鐢宠浜�", width = 15)
+    @ApiModelProperty(value = "鐢宠浜�")
+    @Dict(dictTable = "sys_user",dicCode = "id",dicText = "realname")
+    private String applicant;
+	/**鐢宠鏃堕棿*/
+	@Excel(name = "鐢宠鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鐢宠鏃堕棿")
+    private Date applicationTime;
+	/**鐢宠璇存槑*/
+	@Excel(name = "鐢宠璇存槑", width = 15)
+    @ApiModelProperty(value = "鐢宠璇存槑")
+    private String applicationComment;
+	/**纭浜�*/
+	@Excel(name = "纭浜�", width = 15)
+    @ApiModelProperty(value = "纭浜�")
+    @Dict(dictTable = "sys_user",dicCode = "id",dicText = "realname")
+    private String confirmer;
+	/**纭鏃堕棿*/
+	@Excel(name = "纭鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "纭鏃堕棿")
+    private Date confirmTime;
+	/**纭鎰忚*/
+	@Excel(name = "纭鎰忚", width = 15)
+    @ApiModelProperty(value = "纭鎰忚")
+    private String confirmComment;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingScrapDetail.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingScrapDetail.java
new file mode 100644
index 0000000..c9dc555
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingScrapDetail.java
@@ -0,0 +1,59 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍒�鍏锋姤搴熸槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_cutting_scrap_detail")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_cutting_scrap_detail瀵硅薄", description="鍒�鍏锋姤搴熸槑缁�")
+public class CuttingScrapDetail implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鎶ュ簾鍗旾D*/
+	@Excel(name = "鎶ュ簾鍗旾D", width = 15)
+    @ApiModelProperty(value = "鎶ュ簾鍗旾D")
+    private String orderId;
+	/**鍒�鍏稩D*/
+	@Excel(name = "鍒�鍏稩D", width = 15)
+    @ApiModelProperty(value = "鍒�鍏稩D")
+    private String cuttingId;
+	/**搴撳瓨ID*/
+	@Excel(name = "搴撳瓨ID", width = 15)
+    @ApiModelProperty(value = "搴撳瓨ID")
+    private String inventoryId;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingTool.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingTool.java
new file mode 100644
index 0000000..cb3d076
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingTool.java
@@ -0,0 +1,110 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import java.util.List;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.common.constant.CommonConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍒�鍏蜂俊鎭�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_cutting_tool")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_cutting_tool瀵硅薄", description="鍒�鍏蜂俊鎭�")
+public class CuttingTool implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**鍒犻櫎鏍囪*/
+	@Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+	/**鍒�鍏峰悕绉�*/
+	@Excel(name = "鍒�鍏峰悕绉�", width = 15)
+    @ApiModelProperty(value = "鍒�鍏峰悕绉�")
+    private String cuttingName;
+	/**鍒�鍏风紪鐮�*/
+	@Excel(name = "鍒�鍏风紪鐮�", width = 15)
+    @ApiModelProperty(value = "鍒�鍏风紪鐮�")
+    private String cuttingCode;
+	/**鍒�鍏峰垎绫�*/
+	@Excel(name = "鍒�鍏峰垎绫�", width = 15)
+    @ApiModelProperty(value = "鍒�鍏峰垎绫�")
+    private String cuttingCategory;
+	/**瀛樻斁浣嶇疆*/
+	@Excel(name = "瀛樻斁浣嶇疆", width = 15)
+    @ApiModelProperty(value = "瀛樻斁浣嶇疆")
+    private String storeLocation;
+	/**渚涘簲鍟�*/
+	@Excel(name = "渚涘簲鍟�", width = 15)
+    @ApiModelProperty(value = "渚涘簲鍟�")
+    private String supplierId;
+	/**鏈�灏忓寘瑁呭崟浣�*/
+	@Excel(name = "鏈�灏忓寘瑁呭崟浣�", width = 15)
+    @ApiModelProperty(value = "鏈�灏忓寘瑁呭崟浣�")
+    private String minimumPackageUnit;
+	/**鍒�鍏锋潗璐�*/
+	@Excel(name = "鍒�鍏锋潗璐�", width = 15)
+    @ApiModelProperty(value = "鍒�鍏锋潗璐�")
+    private String cuttingMaterial;
+	/**鍨嬪彿*/
+	@Excel(name = "鍨嬪彿", width = 15)
+    @ApiModelProperty(value = "鍨嬪彿")
+    private String cuttingModel;
+	/**鍥惧彿*/
+	@Excel(name = "鍥惧彿", width = 15)
+    @ApiModelProperty(value = "鍥惧彿")
+    private String drawingNumber;
+	/**搴撳瓨棰勮鍊�*/
+	@Excel(name = "搴撳瓨棰勮鍊�", width = 15)
+    @ApiModelProperty(value = "搴撳瓨棰勮鍊�")
+    private Integer inventoryWarning;
+	/**澶囨敞*/
+	@Excel(name = "澶囨敞", width = 15)
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+
+    @TableField(exist = false)
+    private List<CuttingProperties> cuttingPropertiesList;
+
+    @TableField(exist = false)
+    private List<String> deletePropertiesIds;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/EdgeGrinding.java b/src/main/java/org/jeecg/modules/cms/entity/EdgeGrinding.java
new file mode 100644
index 0000000..956dc3c
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/EdgeGrinding.java
@@ -0,0 +1,120 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.common.constant.CommonConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍒�鍏蜂慨纾�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_edge_grinding")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_edge_grinding瀵硅薄", description="鍒�鍏蜂慨纾�")
+public class EdgeGrinding implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**鍒犻櫎鏍囪*/
+	@Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+	/**淇(鍗曠姸鎬�*/
+	@Excel(name = "淇(鍗曠姸鎬�", width = 15)
+    @ApiModelProperty(value = "淇(鍗曠姸鎬�")
+    private String orderStatus;
+	/**鐢宠浜�*/
+	@Excel(name = "鐢宠浜�", width = 15)
+    @ApiModelProperty(value = "鐢宠浜�")
+    @Dict(dictTable = "sys_user",dicCode = "id",dicText = "realname")
+    private String applicant;
+	/**鐢宠鏃堕棿*/
+	@Excel(name = "鐢宠鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鐢宠鏃堕棿")
+    private Date applicationTime;
+	/**鐢宠璇存槑*/
+	@Excel(name = "鐢宠璇存槑", width = 15)
+    @ApiModelProperty(value = "鐢宠璇存槑")
+    private String applicationComment;
+	/**纭浜�*/
+	@Excel(name = "纭浜�", width = 15)
+    @ApiModelProperty(value = "纭浜�")
+    @Dict(dictTable = "sys_user",dicCode = "id",dicText = "realname")
+    private String confirmer;
+	/**纭鏃堕棿*/
+	@Excel(name = "纭鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "纭鏃堕棿")
+    private Date confirmTime;
+	/**纭鎰忚*/
+	@Excel(name = "纭鎰忚", width = 15)
+    @ApiModelProperty(value = "纭鎰忚")
+    private String confirmComment;
+	/**褰掕繕鏃堕棿*/
+	@Excel(name = "褰掕繕鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "褰掕繕鏃堕棿")
+    private Date returnTime;
+	/**褰掕繕璇存槑*/
+	@Excel(name = "褰掕繕璇存槑", width = 15)
+    @ApiModelProperty(value = "褰掕繕璇存槑")
+    private String returnComment;
+	/**褰掕繕纭浜�*/
+	@Excel(name = "褰掕繕纭浜�", width = 15)
+    @ApiModelProperty(value = "褰掕繕纭浜�")
+    @Dict(dictTable = "sys_user",dicCode = "id",dicText = "realname")
+    private String returnConfirmer;
+	/**褰掕繕纭鏃堕棿*/
+	@Excel(name = "褰掕繕纭鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "褰掕繕纭鏃堕棿")
+    private Date returnConfirmTime;
+	/**褰掕繕纭鎰忚*/
+	@Excel(name = "褰掕繕纭鎰忚", width = 15)
+    @ApiModelProperty(value = "褰掕繕纭鎰忚")
+    private String returnConfirmComment;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/EdgeGrindingDetail.java b/src/main/java/org/jeecg/modules/cms/entity/EdgeGrindingDetail.java
new file mode 100644
index 0000000..15ba94e
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/EdgeGrindingDetail.java
@@ -0,0 +1,75 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍒�鍏蜂慨纾ㄦ槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_edge_grinding_detail")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_edge_grinding_detail瀵硅薄", description="鍒�鍏蜂慨纾ㄦ槑缁�")
+public class EdgeGrindingDetail implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**淇(鍗旾D*/
+	@Excel(name = "淇(鍗旾D", width = 15)
+    @ApiModelProperty(value = "淇(鍗旾D")
+    private String orderId;
+	/**鍒�鍏稩D*/
+	@Excel(name = "鍒�鍏稩D", width = 15)
+    @ApiModelProperty(value = "鍒�鍏稩D")
+    private String cuttingId;
+	/**搴撳瓨ID*/
+	@Excel(name = "搴撳瓨ID", width = 15)
+    @ApiModelProperty(value = "搴撳瓨ID")
+    private String inventoryId;
+	/**鏂板垁鍏稩D*/
+	@Excel(name = "鏂板垁鍏稩D", width = 15)
+    @ApiModelProperty(value = "鏂板垁鍏稩D")
+    private String newCuttingId;
+	/**鏂板簱瀛業D*/
+	@Excel(name = "鏂板簱瀛業D", width = 15)
+    @ApiModelProperty(value = "鏂板簱瀛業D")
+    private String newInventoryId;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/RatedLife.java b/src/main/java/org/jeecg/modules/cms/entity/RatedLife.java
new file mode 100644
index 0000000..743b44c
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/RatedLife.java
@@ -0,0 +1,67 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 棰濆畾瀵垮懡
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_rated_life")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_rated_life瀵硅薄", description="棰濆畾瀵垮懡")
+public class RatedLife implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**鍒�鍏稩D*/
+	@Excel(name = "鍒�鍏稩D", width = 15)
+    @ApiModelProperty(value = "鍒�鍏稩D")
+    private String cuttingId;
+	/**宸ヤ欢鏉愯川*/
+	@Excel(name = "宸ヤ欢鏉愯川", width = 15)
+    @ApiModelProperty(value = "宸ヤ欢鏉愯川")
+    private String workpieceMaterial;
+	/**棰濆畾瀵垮懡*/
+	@Excel(name = "棰濆畾瀵垮懡", width = 15)
+    @ApiModelProperty(value = "棰濆畾瀵垮懡")
+    private BigDecimal ratedLife;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/ToolStocktaking.java b/src/main/java/org/jeecg/modules/cms/entity/ToolStocktaking.java
new file mode 100644
index 0000000..35eccc5
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/ToolStocktaking.java
@@ -0,0 +1,83 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.common.constant.CommonConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍒�鍏风洏鐐�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_tool_stocktaking")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_tool_stocktaking瀵硅薄", description="鍒�鍏风洏鐐�")
+public class ToolStocktaking implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**鍒犻櫎鏍囪*/
+	@Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+	/**鐩樼偣鍗曞彿*/
+	@Excel(name = "鐩樼偣鍗曞彿", width = 15)
+    @ApiModelProperty(value = "鐩樼偣鍗曞彿")
+    private String orderCode;
+	/**鐩樼偣鐘舵��*/
+	@Excel(name = "鐩樼偣鐘舵��", width = 15)
+    @ApiModelProperty(value = "鐩樼偣鐘舵��")
+    private String orderStatus;
+	/**鐩樼偣浜�*/
+	@Excel(name = "鐩樼偣浜�", width = 15)
+    @ApiModelProperty(value = "鐩樼偣浜�")
+    private String operator;
+	/**鐩樼偣鏃堕棿*/
+	@Excel(name = "鐩樼偣鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鐩樼偣鏃堕棿")
+    private Date operateTime;
+	/**澶囨敞*/
+	@Excel(name = "澶囨敞", width = 15)
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/ToolStocktakingDetail.java b/src/main/java/org/jeecg/modules/cms/entity/ToolStocktakingDetail.java
new file mode 100644
index 0000000..418c590
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/ToolStocktakingDetail.java
@@ -0,0 +1,71 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鍒�鍏风洏鐐规槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_tool_stocktaking_detail")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_tool_stocktaking_detail瀵硅薄", description="鍒�鍏风洏鐐规槑缁�")
+public class ToolStocktakingDetail implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**鍒�鍏稩D*/
+	@Excel(name = "鍒�鍏稩D", width = 15)
+    @ApiModelProperty(value = "鍒�鍏稩D")
+    private String toolId;
+	/**鐩樼偣鍓嶆暟閲�*/
+	@Excel(name = "鐩樼偣鍓嶆暟閲�", width = 15)
+    @ApiModelProperty(value = "鐩樼偣鍓嶆暟閲�")
+    private BigDecimal beforeNumber;
+	/**瀹為檯鐩樼偣鏁伴噺*/
+	@Excel(name = "瀹為檯鐩樼偣鏁伴噺", width = 15)
+    @ApiModelProperty(value = "瀹為檯鐩樼偣鏁伴噺")
+    private BigDecimal actualNumber;
+	/**鐩樼偣缁撴灉*/
+	@Excel(name = "鐩樼偣缁撴灉", width = 15)
+    @ApiModelProperty(value = "鐩樼偣缁撴灉")
+    private String stocktakingResult;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/entity/ToolStocktakingInventoryChange.java b/src/main/java/org/jeecg/modules/cms/entity/ToolStocktakingInventoryChange.java
new file mode 100644
index 0000000..8a9dae6
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/entity/ToolStocktakingInventoryChange.java
@@ -0,0 +1,67 @@
+package org.jeecg.modules.cms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鐩樼偣搴撳瓨鍙樻洿
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("cms_tool_stocktaking_inventory_change")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cms_tool_stocktaking_inventory_change瀵硅薄", description="鐩樼偣搴撳瓨鍙樻洿")
+public class ToolStocktakingInventoryChange implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鐩樼偣鏄庣粏ID*/
+	@Excel(name = "鐩樼偣鏄庣粏ID", width = 15)
+    @ApiModelProperty(value = "鐩樼偣鏄庣粏ID")
+    private String detailId;
+	/**搴撳瓨ID*/
+	@Excel(name = "搴撳瓨ID", width = 15)
+    @ApiModelProperty(value = "搴撳瓨ID")
+    private String inventoryId;
+	/**鍒�鍏锋潯鐮�*/
+	@Excel(name = "鍒�鍏锋潯鐮�", width = 15)
+    @ApiModelProperty(value = "鍒�鍏锋潯鐮�")
+    private String toolBarcode;
+	/**鏁伴噺(榛樿1)*/
+	@Excel(name = "鏁伴噺(榛樿1)", width = 15)
+    @ApiModelProperty(value = "鏁伴噺(榛樿1)")
+    private BigDecimal number;
+	/**鍙樻洿绫诲瀷;姝e父/鍑哄簱/鍏ュ簱*/
+	@Excel(name = "鍙樻洿绫诲瀷;姝e父/鍑哄簱/鍏ュ簱", width = 15)
+    @ApiModelProperty(value = "鍙樻洿绫诲瀷;姝e父/鍑哄簱/鍏ュ簱")
+    private String changeType;
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundDetailMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundDetailMapper.java
new file mode 100644
index 0000000..bc5d46d
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundDetailMapper.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.CuttingInboundDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍏ュ簱鍗曟槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface CuttingInboundDetailMapper extends BaseMapper<CuttingInboundDetail> {
+    public List<Map<String, Object>> detailList(@Param("orderId") String orderId);
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundInventoryMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundInventoryMapper.java
new file mode 100644
index 0000000..2500b71
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundInventoryMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.CuttingInboundInventory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍏ュ簱鍗曞簱瀛樺叧绯�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface CuttingInboundInventoryMapper extends BaseMapper<CuttingInboundInventory> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundMapper.java
new file mode 100644
index 0000000..5090cd9
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingInboundMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.CuttingInbound;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍒�鍏峰叆搴撳崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface CuttingInboundMapper extends BaseMapper<CuttingInbound> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingInventoryMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingInventoryMapper.java
new file mode 100644
index 0000000..6a98599
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingInventoryMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.CuttingInventory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍒�鍏峰簱瀛�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface CuttingInventoryMapper extends BaseMapper<CuttingInventory> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingPropertiesMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingPropertiesMapper.java
new file mode 100644
index 0000000..54038cb
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingPropertiesMapper.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.CuttingProperties;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍒�鍏锋墿灞曞睘鎬�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface CuttingPropertiesMapper extends BaseMapper<CuttingProperties> {
+
+    List<CuttingProperties> selectListByCuttingId(@Param("cuttingId") String cuttingId);
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveDetailMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveDetailMapper.java
new file mode 100644
index 0000000..9113c5c
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveDetailMapper.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.CuttingReceiveDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 棰嗙敤鍗曟槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface CuttingReceiveDetailMapper extends BaseMapper<CuttingReceiveDetail> {
+
+    public List<Map<String, Object>> detailList(@Param("orderId") String orderId);
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveMapper.java
new file mode 100644
index 0000000..643c97e
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingReceiveMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.CuttingReceive;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍒�鍏烽鐢ㄥ崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface CuttingReceiveMapper extends BaseMapper<CuttingReceive> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapDetailMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapDetailMapper.java
new file mode 100644
index 0000000..77f693b
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapDetailMapper.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.CuttingScrapDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍒�鍏锋姤搴熸槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface CuttingScrapDetailMapper extends BaseMapper<CuttingScrapDetail> {
+
+    public List<Map<String, Object>> detailList(@Param("orderId") String orderId);
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java
new file mode 100644
index 0000000..b79c998
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.CuttingScrap;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍒�鍏锋姤搴�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface CuttingScrapMapper extends BaseMapper<CuttingScrap> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingToolMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingToolMapper.java
new file mode 100644
index 0000000..3759f3d
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingToolMapper.java
@@ -0,0 +1,20 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.CuttingTool;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍒�鍏蜂俊鎭�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface CuttingToolMapper extends BaseMapper<CuttingTool> {
+    IPage<Map<String, Object>> getCuttingToolList(IPage<Map> pageData, @Param("params") Map<String,Object> params);
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/EdgeGrindingDetailMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/EdgeGrindingDetailMapper.java
new file mode 100644
index 0000000..01854cc
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/EdgeGrindingDetailMapper.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.EdgeGrindingDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍒�鍏蜂慨纾ㄦ槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface EdgeGrindingDetailMapper extends BaseMapper<EdgeGrindingDetail> {
+
+    public List<Map<String, Object>> detailList(@Param("orderId") String orderId);
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/EdgeGrindingMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/EdgeGrindingMapper.java
new file mode 100644
index 0000000..3657190
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/EdgeGrindingMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.EdgeGrinding;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍒�鍏蜂慨纾�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface EdgeGrindingMapper extends BaseMapper<EdgeGrinding> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/RatedLifeMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/RatedLifeMapper.java
new file mode 100644
index 0000000..df115fe
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/RatedLifeMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.RatedLife;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 棰濆畾瀵垮懡
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface RatedLifeMapper extends BaseMapper<RatedLife> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingDetailMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingDetailMapper.java
new file mode 100644
index 0000000..e8b1a67
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingDetailMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.ToolStocktakingDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍒�鍏风洏鐐规槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ToolStocktakingDetailMapper extends BaseMapper<ToolStocktakingDetail> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingInventoryChangeMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingInventoryChangeMapper.java
new file mode 100644
index 0000000..50f0d8e
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingInventoryChangeMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.ToolStocktakingInventoryChange;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鐩樼偣搴撳瓨鍙樻洿
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ToolStocktakingInventoryChangeMapper extends BaseMapper<ToolStocktakingInventoryChange> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingMapper.java
new file mode 100644
index 0000000..b665e08
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/ToolStocktakingMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.cms.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cms.entity.ToolStocktaking;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鍒�鍏风洏鐐�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ToolStocktakingMapper extends BaseMapper<ToolStocktaking> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundDetailMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundDetailMapper.xml
new file mode 100644
index 0000000..2734456
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundDetailMapper.xml
@@ -0,0 +1,18 @@
+<?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.cms.mapper.CuttingInboundDetailMapper">
+
+    <select id="detailList" resultType="map">
+        SELECT
+            t1.id,
+            t1.order_id orderId,
+            t1.cutting_id cuttingId,
+            t1.receive_number receiveNumber,
+            t2.cutting_code cuttingCode,
+            t2.cutting_name cuttingName
+        FROM
+            cms_cutting_inbound_detail t1
+            LEFT JOIN cms_cutting_tool t2 ON t1.cutting_id = t2.id
+        WHERE t1.order_id = #{orderId}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundInventoryMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundInventoryMapper.xml
new file mode 100644
index 0000000..0ffbc3d
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundInventoryMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.cms.mapper.CuttingInboundInventoryMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundMapper.xml
new file mode 100644
index 0000000..9745da6
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInboundMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.cms.mapper.CuttingInboundMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInventoryMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInventoryMapper.xml
new file mode 100644
index 0000000..90c6061
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInventoryMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.cms.mapper.CuttingInventoryMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingPropertiesMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingPropertiesMapper.xml
new file mode 100644
index 0000000..53da549
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingPropertiesMapper.xml
@@ -0,0 +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.cms.mapper.CuttingPropertiesMapper">
+
+    <select id="selectListByCuttingId" resultType="org.jeecg.modules.cms.entity.CuttingProperties">
+        SELECT
+        t.id,
+        t.property_code propertyCode,
+        t.property_name propertyName,
+        t.property_unit propertyUnit,
+        t.property_value propertyValue
+        FROM cms_cutting_properties t
+        WHERE t.cutting_id = #{cuttingId}
+
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveDetailMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveDetailMapper.xml
new file mode 100644
index 0000000..f8277af
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveDetailMapper.xml
@@ -0,0 +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.cms.mapper.CuttingReceiveDetailMapper">
+
+    <select id="detailList" resultType="map">
+        SELECT
+            t1.id,
+            t1.order_id orderId,
+            t1.cutting_id cuttingId,
+            t1.workpiece_material workpieceMaterial,
+            t1.used_life usedLife,
+            t2.cutting_code cuttingCode,
+            t2.cutting_name cuttingName
+        FROM
+            cms_cutting_receive_detail t1
+                LEFT JOIN cms_cutting_tool t2 ON t1.cutting_id = t2.id
+        WHERE t1.order_id = #{orderId}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveMapper.xml
new file mode 100644
index 0000000..cfc1730
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.cms.mapper.CuttingReceiveMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapDetailMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapDetailMapper.xml
new file mode 100644
index 0000000..d6f927e
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapDetailMapper.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.cms.mapper.CuttingScrapDetailMapper">
+
+    <select id="detailList" resultType="map">
+        SELECT
+            t1.id,
+            t1.order_id orderId,
+            t1.cutting_id cuttingId,
+            t2.cutting_code cuttingCode,
+            t2.cutting_name cuttingName
+        FROM
+            cms_cutting_scrap_detail t1
+                LEFT JOIN cms_cutting_tool t2 ON t1.cutting_id = t2.id
+        WHERE t1.order_id = #{orderId}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml
new file mode 100644
index 0000000..eacf082
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.cms.mapper.CuttingScrapMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingToolMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingToolMapper.xml
new file mode 100644
index 0000000..09b40f2
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingToolMapper.xml
@@ -0,0 +1,33 @@
+<?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.cms.mapper.CuttingToolMapper">
+
+    <select id="getCuttingToolList"  parameterType="Map" resultType="Map">
+        SELECT
+        t1.id,
+        t1.cutting_code cuttingCode,
+        t1.cutting_name cuttingName,
+        t1.cutting_category,
+        t1.store_location storeLocation,
+        t1.supplier_id supplierId,
+        t1.minimum_package_unit minimumPackageUnit,
+        t1.cutting_material cuttingMaterial,
+        t1.cutting_model cuttingModel,
+        t1.drawing_number drawingNumber,
+        t1.inventory_warning inventoryWarning,
+        t2.item_text cuttingCategory
+        FROM
+        cms_cutting_tool t1
+        left join (select * from v_sys_dict where dict_code = 'cutting_category') t2 on t2.item_value = t1.cutting_category
+        WHERE t1.del_flag = 0
+        <if test="params.cuttingCode != null and params.cuttingCode != ''">
+            and t1.cutting_code like concat('%',#{params.cuttingCode},'%')
+        </if>
+        <if test="params.cuttingName != null and params.cuttingName != ''">
+            and t1.cutting_name like concat('%',#{params.cuttingName},'%')
+        </if>
+        <if test="params.cuttingCategory != null and params.cuttingCategory != ''">
+            and t1.cutting_category = #{params.cuttingCategory}
+        </if>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/EdgeGrindingDetailMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/EdgeGrindingDetailMapper.xml
new file mode 100644
index 0000000..7b19759
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/EdgeGrindingDetailMapper.xml
@@ -0,0 +1,21 @@
+<?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.cms.mapper.EdgeGrindingDetailMapper">
+
+    <select id="detailList" resultType="map">
+        SELECT
+            t1.id,
+            t1.order_id orderId,
+            t1.cutting_id cuttingId,
+            t1.new_cutting_id newCuttingId,
+            t2.cutting_code cuttingCode,
+            t2.cutting_name cuttingName,
+            t3.cutting_code newCuttingCode,
+            t3.cutting_name newCuttingName
+        FROM
+            cms_edge_grinding_detail t1
+                LEFT JOIN cms_cutting_tool t2 ON t1.cutting_id = t2.id
+                LEFT JOIN cms_cutting_tool t3 ON t1.new_cutting_id = t3.id
+        WHERE t1.order_id = #{orderId}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/EdgeGrindingMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/EdgeGrindingMapper.xml
new file mode 100644
index 0000000..8f748eb
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/EdgeGrindingMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.cms.mapper.EdgeGrindingMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/RatedLifeMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/RatedLifeMapper.xml
new file mode 100644
index 0000000..b25826d
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/RatedLifeMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.cms.mapper.RatedLifeMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingDetailMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingDetailMapper.xml
new file mode 100644
index 0000000..8cc06d8
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingDetailMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.cms.mapper.ToolStocktakingDetailMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingInventoryChangeMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingInventoryChangeMapper.xml
new file mode 100644
index 0000000..858d90b
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingInventoryChangeMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.cms.mapper.ToolStocktakingInventoryChangeMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingMapper.xml
new file mode 100644
index 0000000..7ac38e5
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/ToolStocktakingMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.cms.mapper.ToolStocktakingMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundDetailService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundDetailService.java
new file mode 100644
index 0000000..c34fa1d
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundDetailService.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.CuttingInboundDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 鍏ュ簱鍗曟槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ICuttingInboundDetailService extends IService<CuttingInboundDetail> {
+
+    public List<Map<String, Object>> detailList(String orderId);
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundInventoryService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundInventoryService.java
new file mode 100644
index 0000000..7e849c5
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundInventoryService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.CuttingInboundInventory;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鍏ュ簱鍗曞簱瀛樺叧绯�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ICuttingInboundInventoryService extends IService<CuttingInboundInventory> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundService.java
new file mode 100644
index 0000000..3cdc08a
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingInboundService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.CuttingInbound;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鍒�鍏峰叆搴撳崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ICuttingInboundService extends IService<CuttingInbound> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java
new file mode 100644
index 0000000..10cea17
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.CuttingInventory;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鍒�鍏峰簱瀛�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ICuttingInventoryService extends IService<CuttingInventory> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingPropertiesService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingPropertiesService.java
new file mode 100644
index 0000000..03448b5
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingPropertiesService.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.CuttingProperties;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: 鍒�鍏锋墿灞曞睘鎬�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ICuttingPropertiesService extends IService<CuttingProperties> {
+
+    List<CuttingProperties> selectListByCuttingId(String cuttingId);
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveDetailService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveDetailService.java
new file mode 100644
index 0000000..1f02463
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveDetailService.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.CuttingReceiveDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 棰嗙敤鍗曟槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ICuttingReceiveDetailService extends IService<CuttingReceiveDetail> {
+
+    public List<Map<String, Object>> detailList(String orderId);
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java
new file mode 100644
index 0000000..39b1229
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.CuttingReceive;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鍒�鍏烽鐢ㄥ崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ICuttingReceiveService extends IService<CuttingReceive> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapDetailService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapDetailService.java
new file mode 100644
index 0000000..54c7685
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapDetailService.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.CuttingScrapDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 鍒�鍏锋姤搴熸槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ICuttingScrapDetailService extends IService<CuttingScrapDetail> {
+
+    public List<Map<String, Object>> detailList(String orderId);
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java
new file mode 100644
index 0000000..9faf974
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.CuttingScrap;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鍒�鍏锋姤搴�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ICuttingScrapService extends IService<CuttingScrap> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingToolService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingToolService.java
new file mode 100644
index 0000000..5c74867
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingToolService.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.cms.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.jeecg.modules.cms.entity.CuttingTool;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * @Description: 鍒�鍏蜂俊鎭�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface ICuttingToolService extends IService<CuttingTool> {
+
+    IPage<Map<String, Object>> getCuttingToolList(Integer pageNo, Integer pageSize, Map<String, Object> params);
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/IEdgeGrindingDetailService.java b/src/main/java/org/jeecg/modules/cms/service/IEdgeGrindingDetailService.java
new file mode 100644
index 0000000..3b0026d
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/IEdgeGrindingDetailService.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.EdgeGrindingDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 鍒�鍏蜂慨纾ㄦ槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface IEdgeGrindingDetailService extends IService<EdgeGrindingDetail> {
+
+    public List<Map<String, Object>> detailList(String orderId);
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/IEdgeGrindingService.java b/src/main/java/org/jeecg/modules/cms/service/IEdgeGrindingService.java
new file mode 100644
index 0000000..1cf6ee2
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/IEdgeGrindingService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.EdgeGrinding;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鍒�鍏蜂慨纾�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface IEdgeGrindingService extends IService<EdgeGrinding> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/IRatedLifeService.java b/src/main/java/org/jeecg/modules/cms/service/IRatedLifeService.java
new file mode 100644
index 0000000..05c024f
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/IRatedLifeService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.RatedLife;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 棰濆畾瀵垮懡
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface IRatedLifeService extends IService<RatedLife> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/IToolStocktakingDetailService.java b/src/main/java/org/jeecg/modules/cms/service/IToolStocktakingDetailService.java
new file mode 100644
index 0000000..b39e81b
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/IToolStocktakingDetailService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.ToolStocktakingDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鍒�鍏风洏鐐规槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface IToolStocktakingDetailService extends IService<ToolStocktakingDetail> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/IToolStocktakingInventoryChangeService.java b/src/main/java/org/jeecg/modules/cms/service/IToolStocktakingInventoryChangeService.java
new file mode 100644
index 0000000..302d67d
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/IToolStocktakingInventoryChangeService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.ToolStocktakingInventoryChange;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鐩樼偣搴撳瓨鍙樻洿
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface IToolStocktakingInventoryChangeService extends IService<ToolStocktakingInventoryChange> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/IToolStocktakingService.java b/src/main/java/org/jeecg/modules/cms/service/IToolStocktakingService.java
new file mode 100644
index 0000000..ef82476
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/IToolStocktakingService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.cms.service;
+
+import org.jeecg.modules.cms.entity.ToolStocktaking;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鍒�鍏风洏鐐�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+public interface IToolStocktakingService extends IService<ToolStocktaking> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundDetailServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundDetailServiceImpl.java
new file mode 100644
index 0000000..be748ec
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundDetailServiceImpl.java
@@ -0,0 +1,26 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.CuttingInboundDetail;
+import org.jeecg.modules.cms.mapper.CuttingInboundDetailMapper;
+import org.jeecg.modules.cms.service.ICuttingInboundDetailService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 鍏ュ簱鍗曟槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class CuttingInboundDetailServiceImpl extends ServiceImpl<CuttingInboundDetailMapper, CuttingInboundDetail> implements ICuttingInboundDetailService {
+
+    @Override
+    public List<Map<String, Object>> detailList(String orderId) {
+        return this.baseMapper.detailList(orderId);
+    }
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundInventoryServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundInventoryServiceImpl.java
new file mode 100644
index 0000000..c62a152
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundInventoryServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.CuttingInboundInventory;
+import org.jeecg.modules.cms.mapper.CuttingInboundInventoryMapper;
+import org.jeecg.modules.cms.service.ICuttingInboundInventoryService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鍏ュ簱鍗曞簱瀛樺叧绯�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class CuttingInboundInventoryServiceImpl extends ServiceImpl<CuttingInboundInventoryMapper, CuttingInboundInventory> implements ICuttingInboundInventoryService {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java
new file mode 100644
index 0000000..4ca9708
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.CuttingInbound;
+import org.jeecg.modules.cms.mapper.CuttingInboundMapper;
+import org.jeecg.modules.cms.service.ICuttingInboundService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鍒�鍏峰叆搴撳崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class CuttingInboundServiceImpl extends ServiceImpl<CuttingInboundMapper, CuttingInbound> implements ICuttingInboundService {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java
new file mode 100644
index 0000000..2e3fcd1
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.CuttingInventory;
+import org.jeecg.modules.cms.mapper.CuttingInventoryMapper;
+import org.jeecg.modules.cms.service.ICuttingInventoryService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鍒�鍏峰簱瀛�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class CuttingInventoryServiceImpl extends ServiceImpl<CuttingInventoryMapper, CuttingInventory> implements ICuttingInventoryService {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingPropertiesServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingPropertiesServiceImpl.java
new file mode 100644
index 0000000..48aaa8c
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingPropertiesServiceImpl.java
@@ -0,0 +1,25 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.CuttingProperties;
+import org.jeecg.modules.cms.mapper.CuttingPropertiesMapper;
+import org.jeecg.modules.cms.service.ICuttingPropertiesService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+
+/**
+ * @Description: 鍒�鍏锋墿灞曞睘鎬�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class CuttingPropertiesServiceImpl extends ServiceImpl<CuttingPropertiesMapper, CuttingProperties> implements ICuttingPropertiesService {
+
+    @Override
+    public List<CuttingProperties> selectListByCuttingId(String cuttingId) {
+        return this.baseMapper.selectListByCuttingId(cuttingId);
+    }
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveDetailServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveDetailServiceImpl.java
new file mode 100644
index 0000000..bf11e4c
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveDetailServiceImpl.java
@@ -0,0 +1,26 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.CuttingReceiveDetail;
+import org.jeecg.modules.cms.mapper.CuttingReceiveDetailMapper;
+import org.jeecg.modules.cms.service.ICuttingReceiveDetailService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 棰嗙敤鍗曟槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class CuttingReceiveDetailServiceImpl extends ServiceImpl<CuttingReceiveDetailMapper, CuttingReceiveDetail> implements ICuttingReceiveDetailService {
+
+    @Override
+    public List<Map<String, Object>> detailList(String orderId) {
+        return this.baseMapper.detailList(orderId);
+    }
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java
new file mode 100644
index 0000000..72a03d1
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.CuttingReceive;
+import org.jeecg.modules.cms.mapper.CuttingReceiveMapper;
+import org.jeecg.modules.cms.service.ICuttingReceiveService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鍒�鍏烽鐢ㄥ崟
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class CuttingReceiveServiceImpl extends ServiceImpl<CuttingReceiveMapper, CuttingReceive> implements ICuttingReceiveService {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapDetailServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapDetailServiceImpl.java
new file mode 100644
index 0000000..1ef4bfc
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapDetailServiceImpl.java
@@ -0,0 +1,26 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.CuttingScrapDetail;
+import org.jeecg.modules.cms.mapper.CuttingScrapDetailMapper;
+import org.jeecg.modules.cms.service.ICuttingScrapDetailService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 鍒�鍏锋姤搴熸槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class CuttingScrapDetailServiceImpl extends ServiceImpl<CuttingScrapDetailMapper, CuttingScrapDetail> implements ICuttingScrapDetailService {
+
+    @Override
+    public List<Map<String, Object>> detailList(String orderId) {
+        return this.baseMapper.detailList(orderId);
+    }
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java
new file mode 100644
index 0000000..e8f937a
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.CuttingScrap;
+import org.jeecg.modules.cms.mapper.CuttingScrapMapper;
+import org.jeecg.modules.cms.service.ICuttingScrapService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鍒�鍏锋姤搴�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class CuttingScrapServiceImpl extends ServiceImpl<CuttingScrapMapper, CuttingScrap> implements ICuttingScrapService {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingToolServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingToolServiceImpl.java
new file mode 100644
index 0000000..436e304
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingToolServiceImpl.java
@@ -0,0 +1,28 @@
+package org.jeecg.modules.cms.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.cms.entity.CuttingTool;
+import org.jeecg.modules.cms.mapper.CuttingToolMapper;
+import org.jeecg.modules.cms.service.ICuttingToolService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.Map;
+
+/**
+ * @Description: 鍒�鍏蜂俊鎭�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class CuttingToolServiceImpl extends ServiceImpl<CuttingToolMapper, CuttingTool> implements ICuttingToolService {
+
+    @Override
+    public IPage<Map<String, Object>> getCuttingToolList(Integer pageNo, Integer pageSize, Map<String, Object> params) {
+        IPage<Map> pageData = new Page<Map>(pageNo, pageSize);
+        return super.getBaseMapper().getCuttingToolList(pageData,params);
+    }
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/EdgeGrindingDetailServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/EdgeGrindingDetailServiceImpl.java
new file mode 100644
index 0000000..b08c030
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/EdgeGrindingDetailServiceImpl.java
@@ -0,0 +1,26 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.EdgeGrindingDetail;
+import org.jeecg.modules.cms.mapper.EdgeGrindingDetailMapper;
+import org.jeecg.modules.cms.service.IEdgeGrindingDetailService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 鍒�鍏蜂慨纾ㄦ槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class EdgeGrindingDetailServiceImpl extends ServiceImpl<EdgeGrindingDetailMapper, EdgeGrindingDetail> implements IEdgeGrindingDetailService {
+
+    @Override
+    public List<Map<String, Object>> detailList(String orderId) {
+        return this.baseMapper.detailList(orderId);
+    }
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/EdgeGrindingServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/EdgeGrindingServiceImpl.java
new file mode 100644
index 0000000..6d81af0
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/EdgeGrindingServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.EdgeGrinding;
+import org.jeecg.modules.cms.mapper.EdgeGrindingMapper;
+import org.jeecg.modules.cms.service.IEdgeGrindingService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鍒�鍏蜂慨纾�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class EdgeGrindingServiceImpl extends ServiceImpl<EdgeGrindingMapper, EdgeGrinding> implements IEdgeGrindingService {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/RatedLifeServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/RatedLifeServiceImpl.java
new file mode 100644
index 0000000..87d9fe1
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/RatedLifeServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.RatedLife;
+import org.jeecg.modules.cms.mapper.RatedLifeMapper;
+import org.jeecg.modules.cms.service.IRatedLifeService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 棰濆畾瀵垮懡
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class RatedLifeServiceImpl extends ServiceImpl<RatedLifeMapper, RatedLife> implements IRatedLifeService {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingDetailServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingDetailServiceImpl.java
new file mode 100644
index 0000000..336fc45
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingDetailServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.ToolStocktakingDetail;
+import org.jeecg.modules.cms.mapper.ToolStocktakingDetailMapper;
+import org.jeecg.modules.cms.service.IToolStocktakingDetailService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鍒�鍏风洏鐐规槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class ToolStocktakingDetailServiceImpl extends ServiceImpl<ToolStocktakingDetailMapper, ToolStocktakingDetail> implements IToolStocktakingDetailService {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingInventoryChangeServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingInventoryChangeServiceImpl.java
new file mode 100644
index 0000000..c1e556f
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingInventoryChangeServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.ToolStocktakingInventoryChange;
+import org.jeecg.modules.cms.mapper.ToolStocktakingInventoryChangeMapper;
+import org.jeecg.modules.cms.service.IToolStocktakingInventoryChangeService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鐩樼偣搴撳瓨鍙樻洿
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class ToolStocktakingInventoryChangeServiceImpl extends ServiceImpl<ToolStocktakingInventoryChangeMapper, ToolStocktakingInventoryChange> implements IToolStocktakingInventoryChangeService {
+
+}
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingServiceImpl.java
new file mode 100644
index 0000000..7db16cc
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/ToolStocktakingServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.cms.service.impl;
+
+import org.jeecg.modules.cms.entity.ToolStocktaking;
+import org.jeecg.modules.cms.mapper.ToolStocktakingMapper;
+import org.jeecg.modules.cms.service.IToolStocktakingService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鍒�鍏风洏鐐�
+ * @Author: jeecg-boot
+ * @Date:   2025-07-28
+ * @Version: V1.0
+ */
+@Service
+public class ToolStocktakingServiceImpl extends ServiceImpl<ToolStocktakingMapper, ToolStocktaking> implements IToolStocktakingService {
+
+}

--
Gitblit v1.9.3