From f4a412cebe9532833320bad81cc92e7930d7715a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 03 九月 2026 17:27:06 +0800
Subject: [PATCH] feat(mes): 优化MES模块功能与配置

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessServiceImpl.java                   |   10 ++
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderBomService.java                   |    9 +++
 yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/unit/MdmUnitMeasureController.java                    |   22 +++---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java                                           |    1 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderBomServiceImpl.java               |    5 +
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/route/vo/process/MesProRouteProcessSaveReqVO.java |    6 -
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeServiceImpl.java                |    7 +-
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java                    |   11 ++-
 workbench-current-state.png                                                                                                       |    0 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcRespVO.java                       |   14 +++-
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/iqc/vo/MesQcIqcRespVO.java                         |   10 ++
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/oqc/vo/MesQcOqcRespVO.java                         |   11 +++
 yudao-server/src/main/resources/application-local.yaml                                                                            |    2 
 yudao-server/src/main/resources/application-yzfx.yaml                                                                             |   27 --------
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java       |    6 +
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/rqc/vo/MesQcRqcRespVO.java                         |   17 ++++-
 16 files changed, 95 insertions(+), 63 deletions(-)

diff --git a/workbench-current-state.png b/workbench-current-state.png
new file mode 100644
index 0000000..87bb2b2
--- /dev/null
+++ b/workbench-current-state.png
Binary files differ
diff --git a/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/unit/MdmUnitMeasureController.java b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/unit/MdmUnitMeasureController.java
index 2f5ec2c..fded63a 100644
--- a/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/unit/MdmUnitMeasureController.java
+++ b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/controller/admin/unit/MdmUnitMeasureController.java
@@ -46,14 +46,14 @@
 
     @PostMapping("/create")
     @Operation(summary = "鍒涘缓璁¢噺鍗曚綅")
-    @PreAuthorize("@ss.hasPermission('mdm:unit-measure:create')")
+    @PreAuthorize("@ss.hasPermission('mdm:unit:create')")
     public CommonResult<Long> createUnitMeasure(@Valid @RequestBody MdmUnitMeasureSaveReqVO createReqVO) {
         return success(unitMeasureService.createUnitMeasure(createReqVO));
     }
 
     @PutMapping("/update")
     @Operation(summary = "鏇存柊璁¢噺鍗曚綅")
-    @PreAuthorize("@ss.hasPermission('mdm:unit-measure:update')")
+    @PreAuthorize("@ss.hasPermission('mdm:unit:update')")
     public CommonResult<Boolean> updateUnitMeasure(@Valid @RequestBody MdmUnitMeasureSaveReqVO updateReqVO) {
         unitMeasureService.updateUnitMeasure(updateReqVO);
         return success(true);
@@ -63,7 +63,7 @@
     @Operation(summary = "鏇存柊璁¢噺鍗曚綅鐘舵��")
     @Parameter(name = "id", description = "缂栧彿", required = true, example = "1")
     @Parameter(name = "status", description = "鐘舵��", required = true, example = "0")
-    @PreAuthorize("@ss.hasPermission('mdm:unit-measure:update')")
+    @PreAuthorize("@ss.hasPermission('mdm:unit:update')")
     public CommonResult<Boolean> updateUnitMeasureStatus(@RequestParam("id") Long id, @RequestParam("status") Integer status) {
         unitMeasureService.updateUnitMeasureStatus(id, status);
         return success(true);
@@ -72,7 +72,7 @@
     @DeleteMapping("/delete")
     @Operation(summary = "鍒犻櫎璁¢噺鍗曚綅")
     @Parameter(name = "id", description = "缂栧彿", required = true, example = "1")
-    @PreAuthorize("@ss.hasPermission('mdm:unit-measure:delete')")
+    @PreAuthorize("@ss.hasPermission('mdm:unit:delete')")
     public CommonResult<Boolean> deleteUnitMeasure(@RequestParam("id") Long id) {
         unitMeasureService.deleteUnitMeasure(id);
         return success(true);
@@ -81,21 +81,21 @@
     @GetMapping("/get")
     @Operation(summary = "鑾峰緱璁¢噺鍗曚綅")
     @Parameter(name = "id", description = "缂栧彿", required = true, example = "1")
-    @PreAuthorize("@ss.hasPermission('mdm:unit-measure:query')")
+    @PreAuthorize("@ss.hasPermission('mdm:unit:query')")
     public CommonResult<MdmUnitMeasureDO> getUnitMeasure(@RequestParam("id") Long id) {
         return success(unitMeasureService.getUnitMeasure(id));
     }
 
     @GetMapping("/page")
     @Operation(summary = "鑾峰緱璁¢噺鍗曚綅鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('mdm:unit-measure:query')")
+    @PreAuthorize("@ss.hasPermission('mdm:unit:query')")
     public CommonResult<PageResult<MdmUnitMeasureDO>> getUnitMeasurePage(@Valid MdmUnitMeasurePageReqVO pageReqVO) {
         return success(unitMeasureService.getUnitMeasurePage(pageReqVO));
     }
 
     @GetMapping("/list")
     @Operation(summary = "鑾峰緱璁¢噺鍗曚綅鍒楄〃")
-    @PreAuthorize("@ss.hasPermission('mdm:unit-measure:query')")
+    @PreAuthorize("@ss.hasPermission('mdm:unit:query')")
     public CommonResult<List<MdmUnitMeasureDO>> getUnitMeasureList() {
         return success(unitMeasureService.getUnitMeasureList(null));
     }
@@ -103,14 +103,14 @@
     @GetMapping("/list-by-ids")
     @Operation(summary = "鑾峰緱璁¢噺鍗曚綅鍒楄〃")
     @Parameter(name = "ids", description = "缂栧彿鍒楄〃", required = true, example = "1,2,3")
-    @PreAuthorize("@ss.hasPermission('mdm:unit-measure:query')")
+    @PreAuthorize("@ss.hasPermission('mdm:unit:query')")
     public CommonResult<List<MdmUnitMeasureDO>> getUnitMeasureListByIds(@RequestParam("ids") List<Long> ids) {
         return success(unitMeasureService.getUnitMeasureList(ids));
     }
 
     @GetMapping("/export-excel")
     @Operation(summary = "瀵煎嚭璁¢噺鍗曚綅 Excel")
-    @PreAuthorize("@ss.hasPermission('mdm:unit-measure:export')")
+    @PreAuthorize("@ss.hasPermission('mdm:unit:export')")
     @ApiAccessLog(operateType = EXPORT)
     public void exportUnitMeasureExcel(@Valid MdmUnitMeasurePageReqVO pageReqVO,
                                        HttpServletResponse response) throws IOException {
@@ -138,7 +138,7 @@
 
     @GetMapping("/get-import-template")
     @Operation(summary = "鑾峰緱瀵煎叆璁¢噺鍗曚綅妯℃澘")
-    @PreAuthorize("@ss.hasPermission('mdm:unit-measure:import')")
+    @PreAuthorize("@ss.hasPermission('mdm:unit:import')")
     public void importTemplate(HttpServletResponse response) throws IOException {
         List<MdmUnitMeasureImportExcelVO> list = Arrays.asList(
                 MdmUnitMeasureImportExcelVO.builder().code("PC").name("鐗�").primaryFlag(true).changeRate(new java.math.BigDecimal("1")).status(0).remark("绀轰緥锛氫富鍗曚綅").build(),
@@ -153,7 +153,7 @@
             @Parameter(name = "file", description = "Excel 鏂囦欢", required = true),
             @Parameter(name = "updateSupport", description = "鏄惁鏀寔鏇存柊锛岄粯璁や负 false", example = "true")
     })
-    @PreAuthorize("@ss.hasPermission('mdm:unit-measure:import')")
+    @PreAuthorize("@ss.hasPermission('mdm:unit:import')")
     public CommonResult<MdmUnitMeasureImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
                                                                 @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
         List<MdmUnitMeasureImportExcelVO> list = ExcelUtils.read(file, MdmUnitMeasureImportExcelVO.class);
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/route/vo/process/MesProRouteProcessSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/route/vo/process/MesProRouteProcessSaveReqVO.java
index 4df7990..2b6e861 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/route/vo/process/MesProRouteProcessSaveReqVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/route/vo/process/MesProRouteProcessSaveReqVO.java
@@ -17,15 +17,13 @@
     @NotNull(message = "宸ヨ壓璺嚎缂栧彿涓嶈兘涓虹┖")
     private Long routeId;
 
-    @Schema(description = "宸ュ簭缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "宸ュ簭缂栧彿涓嶈兘涓虹┖")
+    @Schema(description = "宸ュ簭缂栧彿", example = "1")
     private Long processId;
 
     @Schema(description = "宸ヨ壓鍙傛暟妯℃澘缂栧彿", example = "1")
     private Long paramTemplateId;
 
-    @Schema(description = "搴忓彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "搴忓彿涓嶈兘涓虹┖")
+    @Schema(description = "搴忓彿", example = "1")
     private Integer sort;
 
     @Schema(description = "涓庝笅涓�閬撳伐搴忓叧绯�", example = "0")
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java
index 2f2795d..5bc87c5 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java
@@ -245,7 +245,9 @@
             }
             List<MesProWorkOrderBomDO> items = new ArrayList<>();
             for (MesProWorkOrderBomDO bom : bomList) {
-                if (bom.getProcessId().equals(process.getProcessId())) {
+                // 璺宠繃鏃犲伐搴忕紪鍙风殑鎶曟枡琛岋紙宸ュ崟 BOM 涓粎鎸夊伐搴忕淮鎶ゆ姇鏂欐槑缁嗭紝鏃犲伐搴忕殑琛屼笉鍙備笌灞曞紑锛�
+                // 涓� getProcessId 鍙兘涓� null锛岀洿鎺� equals 浼� NPE锛�
+                if (Objects.equals(bom.getProcessId(), process.getProcessId())) {
                     items.add(bom);
                 }
             }
@@ -263,7 +265,7 @@
         // 3. 浠ユ渶鍚庝竴閬撳伐搴忕殑鎶曟枡涓鸿捣鐐�
         Map<Long, BigDecimal> currentLayer = new LinkedHashMap<>();
         for (MesProWorkOrderBomDO bom : bomList) {
-            if (bom.getProcessId().equals(lastProcess.getProcessId())) {
+            if (Objects.equals(bom.getProcessId(), lastProcess.getProcessId())) {
                 currentLayer.merge(bom.getItemId(), bom.getQuantity(), BigDecimal::add);
             }
         }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcRespVO.java
index 469076d..d5d48f8 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcRespVO.java
@@ -2,6 +2,9 @@
 
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
 import cn.idev.excel.annotation.ExcelProperty;
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import cn.iocoder.yudao.module.mes.enums.DictTypeConstants;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -26,7 +29,8 @@
     private String name;
 
     @Schema(description = "IPQC 妫�楠岀被鍨�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty("妫�楠岀被鍨�")
+    @ExcelProperty(value = "妫�楠岀被鍨�", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MES_IPQC_TYPE)
     private Integer type;
 
     @Schema(description = "妫�楠屾ā鏉� ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@@ -89,9 +93,11 @@
     private String itemName;
 
     @Schema(description = "瑙勬牸鍨嬪彿", example = "100mm*50mm")
+    @ExcelProperty("瑙勬牸鍨嬪彿")
     private String itemSpecification;
 
     @Schema(description = "鍗曚綅鍚嶇О", example = "涓�")
+    @ExcelProperty("鍗曚綅")
     private String unitName;
 
     // ========== 鏁伴噺 ==========
@@ -143,7 +149,8 @@
     // ========== 妫�楠� ==========
 
     @Schema(description = "妫�娴嬬粨鏋�", example = "1")
-    @ExcelProperty("妫�娴嬬粨鏋�")
+    @ExcelProperty(value = "妫�娴嬬粨鏋�", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MES_QC_CHECK_RESULT)
     private Integer checkResult;
 
     @Schema(description = "妫�娴嬫棩鏈�")
@@ -158,7 +165,8 @@
     private String inspectorNickname;
 
     @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    @ExcelProperty("鐘舵��")
+    @ExcelProperty(value = "鐘舵��", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MES_ORDER_STATUS)
     private Integer status;
 
     @Schema(description = "澶囨敞", example = "澶囨敞")
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/iqc/vo/MesQcIqcRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/iqc/vo/MesQcIqcRespVO.java
index 0c19e1c..5605641 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/iqc/vo/MesQcIqcRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/iqc/vo/MesQcIqcRespVO.java
@@ -2,6 +2,9 @@
 
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
 import cn.idev.excel.annotation.ExcelProperty;
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import cn.iocoder.yudao.module.mes.enums.DictTypeConstants;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -48,6 +51,7 @@
     private Long vendorId;
 
     @Schema(description = "渚涘簲鍟嗙畝绉�", example = "渚涘簲鍟咥")
+    @ExcelProperty("渚涘簲鍟嗙畝绉�")
     private String vendorNickname;
 
     @Schema(description = "渚涘簲鍟嗘壒娆″彿", example = "VB20250101")
@@ -114,7 +118,8 @@
     // ========== 妫�楠� ==========
 
     @Schema(description = "妫�娴嬬粨鏋�", example = "1")
-    @ExcelProperty("妫�娴嬬粨鏋�")
+    @ExcelProperty(value = "妫�娴嬬粨鏋�", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MES_QC_CHECK_RESULT)
     private Integer checkResult;
 
     @Schema(description = "鏉ユ枡鏃ユ湡")
@@ -133,7 +138,8 @@
     private String inspectorNickname;
 
     @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    @ExcelProperty("鐘舵��")
+    @ExcelProperty(value = "鐘舵��", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MES_ORDER_STATUS)
     private Integer status;
 
     @Schema(description = "澶囨敞", example = "澶囨敞")
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/oqc/vo/MesQcOqcRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/oqc/vo/MesQcOqcRespVO.java
index 79d9bed..18f5e14 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/oqc/vo/MesQcOqcRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/oqc/vo/MesQcOqcRespVO.java
@@ -2,6 +2,9 @@
 
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
 import cn.idev.excel.annotation.ExcelProperty;
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import cn.iocoder.yudao.module.mes.enums.DictTypeConstants;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -69,9 +72,11 @@
     private String itemName;
 
     @Schema(description = "瑙勬牸鍨嬪彿", example = "100mm*50mm")
+    @ExcelProperty("瑙勬牸鍨嬪彿")
     private String itemSpecification;
 
     @Schema(description = "鍗曚綅鍚嶇О", example = "涓�")
+    @ExcelProperty("鍗曚綅")
     private String unitName;
 
     // ========== 鏁伴噺 ==========
@@ -121,7 +126,8 @@
     // ========== 妫�楠� ==========
 
     @Schema(description = "妫�娴嬬粨鏋�", example = "1")
-    @ExcelProperty("妫�娴嬬粨鏋�")
+    @ExcelProperty(value = "妫�娴嬬粨鏋�", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MES_QC_CHECK_RESULT)
     private Integer checkResult;
 
     @Schema(description = "鍑鸿揣鏃ユ湡")
@@ -140,7 +146,8 @@
     private String inspectorNickname;
 
     @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    @ExcelProperty("鐘舵��")
+    @ExcelProperty(value = "鐘舵��", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MES_ORDER_STATUS)
     private Integer status;
 
     @Schema(description = "澶囨敞", example = "澶囨敞")
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/rqc/vo/MesQcRqcRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/rqc/vo/MesQcRqcRespVO.java
index d6cf184..d32c8b9 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/rqc/vo/MesQcRqcRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/rqc/vo/MesQcRqcRespVO.java
@@ -2,6 +2,9 @@
 
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
 import cn.idev.excel.annotation.ExcelProperty;
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import cn.iocoder.yudao.module.mes.enums.DictTypeConstants;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -31,6 +34,8 @@
     // ========== 鏉ユ簮鍗曟嵁 ==========
 
     @Schema(description = "鏉ユ簮鍗曟嵁绫诲瀷", example = "116")
+    @ExcelProperty(value = "鏉ユ簮鍗曟嵁绫诲瀷", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MES_QC_SOURCE_DOC_TYPE)
     private Integer sourceDocType;
 
     @Schema(description = "鏉ユ簮鍗曟嵁 ID", example = "200")
@@ -40,12 +45,14 @@
     private Long sourceLineId;
 
     @Schema(description = "鏉ユ簮鍗曟嵁缂栫爜", example = "RT20250101001")
+    @ExcelProperty("鏉ユ簮鍗曟嵁缂栫爜")
     private String sourceDocCode;
 
     // ========== 妫�楠岀被鍨� ==========
 
     @Schema(description = "妫�楠岀被鍨�", example = "1")
-    @ExcelProperty("妫�楠岀被鍨�")
+    @ExcelProperty(value = "妫�楠岀被鍨�", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MES_RQC_TYPE)
     private Integer type;
 
     // ========== 鐗╂枡 ==========
@@ -62,9 +69,11 @@
     private String itemName;
 
     @Schema(description = "瑙勬牸鍨嬪彿", example = "100mm*50mm")
+    @ExcelProperty("瑙勬牸鍨嬪彿")
     private String itemSpecification;
 
     @Schema(description = "鍗曚綅鍚嶇О", example = "涓�")
+    @ExcelProperty("鍗曚綅")
     private String unitName;
 
     @Schema(description = "鎵规鍙�", example = "BATCH001")
@@ -108,7 +117,8 @@
     // ========== 妫�楠� ==========
 
     @Schema(description = "妫�娴嬬粨鏋�", example = "1")
-    @ExcelProperty("妫�娴嬬粨鏋�")
+    @ExcelProperty(value = "妫�娴嬬粨鏋�", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MES_QC_CHECK_RESULT)
     private Integer checkResult;
 
     @Schema(description = "妫�娴嬫棩鏈�")
@@ -123,7 +133,8 @@
     private String inspectorNickname;
 
     @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    @ExcelProperty("鐘舵��")
+    @ExcelProperty(value = "鐘舵��", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MES_ORDER_STATUS)
     private Integer status;
 
     @Schema(description = "澶囨敞", example = "澶囨敞")
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java
index 0fd3d74..71b6607 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java
@@ -76,6 +76,7 @@
     String MES_DEFECT_LEVEL = "mes_defect_level"; // MES 缂洪櫡绛夌骇
     String MES_QC_TYPE = "mes_qc_type"; // MES 妫�娴嬬绫伙紙IQC/IPQC/OQC/RQC锛�
     String MES_IPQC_TYPE = "mes_ipqc_type"; // MES IPQC 妫�楠岀被鍨�
+    String MES_RQC_TYPE = "mes_rqc_type"; // MES 閫�璐ф楠岀被鍨�
     String MES_ORDER_STATUS = "mes_order_status"; // MES 鍗曟嵁鐘舵�侊紙IQC/IPQC/OQC/RQC 閫氱敤锛�
     String MES_QC_CHECK_RESULT = "mes_qc_check_result"; // MES 妫�娴嬬粨鏋�
     String MES_QC_SOURCE_DOC_TYPE = "mes_qc_source_doc_type"; // MES 鏉ユ簮鍗曟嵁绫诲瀷
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java
index 016e10a..d3f2a0a 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java
@@ -296,16 +296,17 @@
             throw exception(PRO_FEEDBACK_UNCHECK_QUANTITY_EXISTS, feedback.getUncheckQuantity());
         }
 
-        // 3. 鐗╂枡娑堣�楋細鍊掑啿宸ュ簭鎸� BOM 鑷姩鎵f枡锛涢潪鍊掑啿宸ュ簭璺宠繃锛堢墿鏂欒蛋鎵嬪伐棰嗘枡/鎶曟枡锛�
+        // 3. 鐗╂枡娑堣�楋細鍊掑啿宸ュ簭鎸夋湰宸ュ簭鎶曟枡 BOM 鑷姩鎵f枡锛涢潪鍊掑啿宸ュ簭璺宠繃锛堢墿鏂欒蛋鎵嬪伐棰嗘枡/鎶曟枡锛�
         boolean backflushFlag = routeProcess != null && Boolean.TRUE.equals(routeProcess.getBackflushFlag());
         if (backflushFlag) {
-            // 3.1 鏍¢獙鍊掑啿宸ュ簭蹇呴』閰嶇疆 BOM 娑堣�楋紝閬垮厤闈欓粯涓嶆墸鏂�
-            List<MesProWorkOrderBomDO> boms = workOrderBomService.getWorkOrderBomListByWorkOrderId(
-                    feedback.getWorkOrderId());
+            // 3.1 鏍¢獙鍊掑啿宸ュ簭蹇呴』閰嶇疆鏈伐搴忕殑鎶曟枡 BOM锛岄伩鍏嶉潤榛樹笉鎵f枡
+            //     锛堝彧鏍¢獙褰撳墠鎶ュ伐宸ュ簭鐨勬姇鏂欙紝鍏朵粬宸ュ簭鎶曟枡鐢卞悇鑷伐搴忔姤宸ユ椂鎵i櫎锛�
+            List<MesProWorkOrderBomDO> boms = workOrderBomService.getWorkOrderBomListByWorkOrderIdAndProcessId(
+                    feedback.getWorkOrderId(), feedback.getProcessId());
             if (CollUtil.isEmpty(boms)) {
                 throw exception(PRO_FEEDBACK_BACKFLUSH_BOM_REQUIRED);
             }
-            // 3.2 鐢熸垚娑堣�楄褰曞苟鎵ц鎵e噺锛圔OM 脳 鎶ュ伐鏁伴噺锛孎IFO 鎵g嚎杈瑰簱锛�
+            // 3.2 鐢熸垚娑堣�楄褰曞苟鎵ц鎵e噺锛堟湰宸ュ簭鎶曟枡鐢ㄩ噺姣斾緥 脳 鎶ュ伐鏁伴噺锛孎IFO 鎵g嚎杈瑰簱锛�
             MesWmItemConsumeDO itemConsume = itemConsumeService.generateItemConsume(feedback);
             if (itemConsume != null) {
                 itemConsumeService.finishItemConsume(itemConsume.getId());
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessServiceImpl.java
index f88d950..4957169 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessServiceImpl.java
@@ -81,8 +81,14 @@
     public void updateRouteProcess(MesProRouteProcessSaveReqVO updateReqVO) {
         // 1.0 宸插惎鐢ㄧ殑宸ヨ壓璺嚎锛屼笉鍏佽鎿嶄綔
         routeService.validateRouteNotEnable(updateReqVO.getRouteId());
-        // 1.1 鏍¢獙瀛樺湪
-        validateRouteProcessExists(updateReqVO.getId());
+        // 1.1 鏍¢獙瀛樺湪锛涢儴鍒嗘洿鏂帮紙濡備粎璋冩暣浜у嚭浜у搧锛夋椂鏈紶鐨勫繀濉瓧娈电敤鐜版湁鍊煎洖濉�
+        MesProRouteProcessDO existing = validateRouteProcessExists(updateReqVO.getId());
+        if (updateReqVO.getProcessId() == null) {
+            updateReqVO.setProcessId(existing.getProcessId());
+        }
+        if (updateReqVO.getSort() == null) {
+            updateReqVO.setSort(existing.getSort());
+        }
         // 1.2 鏍¢獙宸ヨ壓璺嚎銆佸伐搴忓瓨鍦�
         validateRouteAndProcessExists(updateReqVO.getRouteId(), updateReqVO.getProcessId());
         // 1.3 鏍¢獙鍞竴鎬�
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderBomService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderBomService.java
index d1e8201..8f4d87b 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderBomService.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderBomService.java
@@ -63,6 +63,15 @@
     List<MesProWorkOrderBomDO> getWorkOrderBomListByWorkOrderId(Long workOrderId);
 
     /**
+     * 鏍规嵁宸ュ崟缂栧彿涓庡伐搴忕紪鍙疯幏寰� BOM 鍒楄〃锛堝�掑啿鎵f枡鎸夋姤宸ュ伐搴忕殑鎶曟枡鏄庣粏杩囨护锛�
+     *
+     * @param workOrderId 宸ュ崟缂栧彿
+     * @param processId   宸ュ簭缂栧彿
+     * @return BOM 鍒楄〃
+     */
+    List<MesProWorkOrderBomDO> getWorkOrderBomListByWorkOrderIdAndProcessId(Long workOrderId, Long processId);
+
+    /**
      * 鏍规嵁宸ュ崟缂栧彿鍒犻櫎 BOM
      *
      * @param workOrderId 宸ュ崟缂栧彿
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderBomServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderBomServiceImpl.java
index 464ee46..1dc45b3 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderBomServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderBomServiceImpl.java
@@ -116,6 +116,11 @@
     }
 
     @Override
+    public List<MesProWorkOrderBomDO> getWorkOrderBomListByWorkOrderIdAndProcessId(Long workOrderId, Long processId) {
+        return workOrderBomMapper.selectListByWorkOrderIdAndProcessId(workOrderId, processId);
+    }
+
+    @Override
     public void deleteWorkOrderBomByWorkOrderId(Long workOrderId) {
         workOrderBomMapper.deleteByWorkOrderId(workOrderId);
     }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeServiceImpl.java
index 51bf769..949b1f6 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeServiceImpl.java
@@ -78,9 +78,10 @@
         if (feedback.getWorkOrderId() == null) {
             throw exception(PRO_FEEDBACK_ROUTE_PROCESS_INVALID);
         }
-        // 1.2 鏌ヨ宸ュ崟 BOM 鐗╂枡鍒楄〃锛堝�掑啿鎸夊伐鍗曟姇鏂欙紝闈炲伐鑹鸿矾绾匡級
-        List<MesProWorkOrderBomDO> boms = workOrderBomService.getWorkOrderBomListByWorkOrderId(
-                feedback.getWorkOrderId());
+        // 1.2 鏌ヨ璇ュ�掑啿宸ュ簭鐨勬姇鏂� BOM 鍒楄〃锛堟寜鎶ュ伐宸ュ簭杩囨护锛屽彧鎵e綋鍓嶅伐搴忕殑鎶曟枡鏄庣粏锛�
+        //     閬垮厤鎶婂叾浠栧伐搴忕殑鎶曟枡涓�骞舵墸闄ゅ鑷村鎵g墿鏂欙級
+        List<MesProWorkOrderBomDO> boms = workOrderBomService.getWorkOrderBomListByWorkOrderIdAndProcessId(
+                feedback.getWorkOrderId(), feedback.getProcessId());
         if (CollUtil.isEmpty(boms)) {
             return null;
         }
diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml
index 45e498f..c169c66 100644
--- a/yudao-server/src/main/resources/application-local.yaml
+++ b/yudao-server/src/main/resources/application-local.yaml
@@ -74,7 +74,7 @@
     redis:
       host: localhost # 鍦板潃
       port: 6379 # 绔彛
-      database: 0 # 鏁版嵁搴撶储寮�
+      database: 5 # 鏁版嵁搴撶储寮�
 #      password: # 瀵嗙爜锛屽缓璁敓浜х幆澧冨紑鍚�
 
 --- #################### 瀹氭椂浠诲姟鐩稿叧閰嶇疆 ####################
diff --git a/yudao-server/src/main/resources/application-yzfx.yaml b/yudao-server/src/main/resources/application-yzfx.yaml
index a9c5d64..dffb1bd 100644
--- a/yudao-server/src/main/resources/application-yzfx.yaml
+++ b/yudao-server/src/main/resources/application-yzfx.yaml
@@ -65,33 +65,10 @@
       primary: master
       datasource:
         master:
-          url: jdbc:mysql://172.17.0.1:9002/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 杩炴帴鐨勭ず渚�
-          #          url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true # MySQL Connector/J 5.X 杩炴帴鐨勭ず渚�
-          #          url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 杩炴帴鐨勭ず渚�
-          #          url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 杩炴帴鐨勭ず渚�
-          #          url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=ruoyi-vue-pro;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true;useUnicode=true;characterEncoding=utf-8 # SQLServer 杩炴帴鐨勭ず渚�
-          #          url: jdbc:dm://127.0.0.1:5236?schema=RUOYI_VUE_PRO # DM 杩炴帴鐨勭ず渚�
-          #          url: jdbc:kingbase8://127.0.0.1:54321/test  # 浜哄ぇ閲戜粨 KingbaseES 杩炴帴鐨勭ず渚�
-          #          url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 杩炴帴鐨勭ず渚�
-          #          url: jdbc:postgresql://127.0.0.1:5866/ruoyi-vue-pro # 鐎氶珮 HighGo 杩炴帴鐨勭ず渚�
+#          url: jdbc:mysql://172.17.0.1:9002/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 杩炴帴鐨勭ず渚�
+          url: jdbc:mysql://42.63.70.231:9002/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 杩炴帴鐨勭ず渚�
           username: root
           password: yzfx@123456..
-          #          username: sa # SQL Server 杩炴帴鐨勭ず渚�
-          #          password: Yudao@2024 # SQL Server 杩炴帴鐨勭ず渚�
-          #          username: SYSDBA # DM 杩炴帴鐨勭ず渚�
-          #          password: SYSDBA001 # DM 杩炴帴鐨勭ず渚�
-          #          username: root # OpenGauss 杩炴帴鐨勭ず渚�
-          #          password: Yudao@2024 # OpenGauss 杩炴帴鐨勭ず渚�
-          #          username: root # 鐎氶珮 HighGo 杩炴帴鐨勭ず渚�
-          #          password: 123456 # 鐎氶珮 HighGo 杩炴帴鐨勭ず渚�
-#        tdengine: # IoT 鏁版嵁搴擄紙闇�瑕� IoT 鐗╄仈缃戝啀寮�鍚櫌锛侊級
-#          lazy: true # 寮�鍚噿鍔犺浇锛屼繚璇佸惎鍔ㄩ�熷害
-#          url: jdbc:TAOS-WS://127.0.0.1:6041/ruoyi_vue_pro?varcharAsString=true&enableAutoReconnect=true # 鍙傝锛歨ttps://t.zsxq.com/qaX9c锛屽紑鍚� TDengine WebSocket 鑷姩閲嶈繛
-#          driver-class-name: com.taosdata.jdbc.ws.WebSocketDriver
-#          username: root
-#          password: taosdata
-#          druid:
-#            validation-query: SELECT SERVER_STATUS() # TDengine 鏁版嵁婧愮殑鏈夋晥鎬ф鏌� SQL
 
   # Redis 閰嶇疆銆俁edisson 榛樿鐨勯厤缃冻澶熶娇鐢紝涓�鑸笉闇�瑕佽繘琛岃皟浼�
   data:

--
Gitblit v1.9.3