From cdf5605fb5caa0da0f134893bac350785250ea8a Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期四, 27 八月 2026 11:21:19 +0800
Subject: [PATCH] feat(mes): 基础参数与工序绑定,报工填写绑定的参数字段

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/task/MesProTaskServiceImpl.java |   43 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/task/MesProTaskServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/task/MesProTaskServiceImpl.java
index d13aa2c..71194e3 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/task/MesProTaskServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/task/MesProTaskServiceImpl.java
@@ -12,6 +12,7 @@
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationMachineDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessParamDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.pro.task.MesProTaskMapper;
 import cn.iocoder.yudao.module.mes.dal.mysql.pro.feedback.MesProFeedbackMapper;
@@ -24,6 +25,7 @@
 import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationMachineService;
 import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
 import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService;
+import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessParamService;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProcessDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProductDO;
@@ -33,6 +35,7 @@
 import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderProcessDO;
 import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderProcessService;
+import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderParamRecordService;
 import jakarta.annotation.Resource;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -107,6 +110,12 @@
     @Lazy
     private MesProWorkOrderProcessService workOrderProcessService;
     @Resource
+    @Lazy
+    private MesProWorkOrderParamRecordService workOrderParamRecordService;
+    @Resource
+    @Lazy
+    private MesProProcessParamService processParamService;
+    @Resource
     private MesMdAutoCodeRecordService autoCodeRecordService;
     @Resource
     private MesMdWorkstationMachineService workstationMachineService;
@@ -146,11 +155,28 @@
         }
         // 2.2 鎻掑叆
         taskMapper.insert(task);
-        
+        // 2.2.1 鍙傛暟蹇収锛氫紭鍏堜娇鐢ㄦā鏉匡紱鏃犳ā鏉挎椂鍥為��鍒板伐搴忎富鏁版嵁缁戝畾鐨勫伐鑹哄弬鏁�
+        createTaskParamRecordWithFallback(task);
+
         // 2.3 淇濆瓨鎸囧畾鎶ュ伐浜哄憳
         updateTaskAssignees(task.getId(), createReqVO.getAssigneeUserIds());
-        
+
         return task.getId();
+    }
+
+    /**
+     * 涓轰换鍔″浐鍖栧弬鏁板揩鐓э細浼樺厛浣跨敤璺嚎/宸ュ崟宸ュ簭缁戝畾鐨勫弬鏁版ā鏉匡紱鏃犳ā鏉挎椂鍥為��鍒板伐搴忎富鏁版嵁缁戝畾鐨勫伐鑹哄弬鏁�
+     */
+    private void createTaskParamRecordWithFallback(MesProTaskDO task) {
+        if (task.getParamTemplateId() != null) {
+            workOrderParamRecordService.createTaskParamRecord(task.getId(), task.getParamTemplateId());
+            return;
+        }
+        // 鏃犳ā鏉匡細浠庡伐搴忎富鏁版嵁瑙f瀽缁戝畾鐨勫伐鑹哄弬鏁�
+        List<MesProProcessParamDO> processParams = processParamService.getProcessParamListByProcessId(task.getProcessId());
+        if (CollUtil.isNotEmpty(processParams)) {
+            workOrderParamRecordService.createTaskParamRecordFromProcessParams(task.getId(), processParams);
+        }
     }
 
     @Override
@@ -257,6 +283,7 @@
                 result.add(new MesProRouteProcessDO()
                         .setRouteId(routeId)
                         .setProcessId(wp.getProcessId())
+                        .setParamTemplateId(wp.getParamTemplateId())
                         .setSort(wp.getSort())
                         .setKeyFlag(wp.getKeyFlag())
                         .setCheckFlag(wp.getCheckFlag())
@@ -384,6 +411,15 @@
         validateTaskExists(id);
         // 鏇存柊鏁伴噺
         taskMapper.updateProducedQuantity(id, incrProducedQuantity, incrQualifyQuantity, incrUnqualifyQuantity);
+        MesProTaskDO task = taskMapper.selectById(id);
+        if (task != null) {
+            LocalDateTime now = LocalDateTime.now();
+            MesProTaskDO timeUpdate = new MesProTaskDO().setId(id).setLastFeedbackTime(now);
+            if (task.getFirstFeedbackTime() == null) {
+                timeUpdate.setFirstFeedbackTime(now);
+            }
+            taskMapper.updateById(timeUpdate);
+        }
     }
 
     @Override
@@ -477,9 +513,12 @@
                     .setName(buildTaskName(item, workOrder.getQuantity()))
                     .setCode(autoCodeRecordService.generateAutoCode(MesMdAutoCodeRuleCodeEnum.PRO_TASK_CODE.getCode()))
                     .setStatus(MesProTaskStatusEnum.PREPARE.getStatus())
+                    .setParamTemplateId(rp.getParamTemplateId())
                     .setClientId(workOrder.getClientId())
                     .setColorCode(rp.getColorCode());
             taskMapper.insert(task);
+            // 鍙傛暟蹇収锛氫紭鍏堜娇鐢ㄦā鏉匡紱鏃犳ā鏉挎椂鍥為��鍒板伐搴忎富鏁版嵁缁戝畾鐨勫伐鑹哄弬鏁�
+            createTaskParamRecordWithFallback(task);
             taskIds.add(task.getId());
         }
         // 7. 鏇存柊宸ュ崟宸叉帓浜ф暟閲�

--
Gitblit v1.9.3