From 416558785276159b8730b2826e71995fc16b59a7 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期四, 29 十月 2026 11:47:44 +0800
Subject: [PATCH] refactor(safety): 人员与车间字段全面改为主数据关联

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/safety/SafetyHazardService.java |   41 +++++++++++++++++++++++++++++++++++------
 1 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/safety/SafetyHazardService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/safety/SafetyHazardService.java
index db2ebd9..255d851 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/safety/SafetyHazardService.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/safety/SafetyHazardService.java
@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.mes.service.safety;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@@ -17,6 +18,7 @@
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.mes.enums.SafetyErrorCodeConstants.*;
@@ -37,6 +39,8 @@
 
     @Resource
     private SafetyHazardMapper hazardMapper;
+    @Resource
+    private SafetyRefResolver refResolver;
 
     /**
      * 闅愭偅涓婃姤锛堝惈绉诲姩绔媿鐓т笂浼犵殑 photoUrls锛�
@@ -47,7 +51,8 @@
         SafetyHazardDO hazard = BeanUtils.toBean(reqVO, SafetyHazardDO.class);
         hazard.setCode(hazardMapper.selectNextCode("HZ" + LocalDate.now().format(CODE_DATE)));
         hazard.setTitle(StrUtil.trim(reqVO.getTitle()));
-        hazard.setReporter(StrUtil.trim(reqVO.getReporter()));
+        hazard.setReporterId(reqVO.getReporterId());
+        hazard.setReporter(refResolver.requireEmployee(reqVO.getReporterId(), SAFETY_EMPLOYEE_REQUIRED).getName());
         hazard.setLevel(StrUtil.blankToDefault(reqVO.getLevel(), SafetyHazardLevelEnum.GENERAL.getLevel()));
         hazard.setSource(StrUtil.blankToDefault(reqVO.getSource(), SafetyHazardSourceEnum.SELF_CHECK.getSource()));
         hazard.setReportTime(reqVO.getReportTime() == null ? LocalDateTime.now() : reqVO.getReportTime());
@@ -83,12 +88,14 @@
                 && !SafetyHazardStatusEnum.REJECTED.getStatus().equals(hazard.getStatus())) {
             throw exception(SAFETY_HAZARD_STATUS_ERROR);
         }
-        if (StrUtil.isBlank(reqVO.getAssignee())) {
+        if (reqVO.getAssigneeId() == null) {
             throw exception(SAFETY_HAZARD_ASSIGNEE_REQUIRED);
         }
+        var assignee = refResolver.requireEmployee(reqVO.getAssigneeId(), SAFETY_HAZARD_ASSIGNEE_REQUIRED);
         SafetyHazardDO update = new SafetyHazardDO();
         update.setId(hazard.getId());
-        update.setAssignee(StrUtil.trim(reqVO.getAssignee()));
+        update.setAssigneeId(assignee.getId());
+        update.setAssignee(assignee.getName());
         update.setAssignTime(LocalDateTime.now());
         update.setRectifyDeadline(reqVO.getRectifyDeadline());
         update.setStatus(SafetyHazardStatusEnum.RECTIFYING.getStatus());
@@ -128,14 +135,16 @@
         if (!SafetyHazardStatusEnum.RECHECKING.getStatus().equals(hazard.getStatus())) {
             throw exception(SAFETY_HAZARD_STATUS_ERROR);
         }
-        String rechecker = StrUtil.trim(reqVO.getRechecker());
-        if (StrUtil.isNotBlank(hazard.getAssignee()) && hazard.getAssignee().equals(rechecker)) {
+        var rechecker = refResolver.requireEmployee(reqVO.getRecheckerId(), SAFETY_EMPLOYEE_REQUIRED);
+        // 鐢ㄥ憳宸ョ紪鍙锋瘮杈冿紝姣斿鍚嶆瘮杈冨彲闈狅紙鍚屽悕涓嶅悓浜� / 鏀瑰悕閮戒笉浼氳鍒わ級
+        if (hazard.getAssigneeId() != null && hazard.getAssigneeId().equals(rechecker.getId())) {
             throw exception(SAFETY_HAZARD_SAME_OPERATOR);
         }
         boolean passed = "PASSED".equals(reqVO.getRecheckResult());
         SafetyHazardDO update = new SafetyHazardDO();
         update.setId(hazard.getId());
-        update.setRechecker(rechecker);
+        update.setRecheckerId(rechecker.getId());
+        update.setRechecker(rechecker.getName());
         update.setRecheckTime(LocalDateTime.now());
         update.setRecheckResult(reqVO.getRecheckResult());
         update.setRecheckRemark(reqVO.getRecheckRemark());
@@ -163,6 +172,26 @@
     }
 
     /**
+     * 鎵归噺鍥炲~涓婃姤浜� / 鏁存敼璐d换浜� / 澶嶆煡浜虹殑鏈�鏂板鍚�
+     */
+    public void fillPersonNames(List<SafetyHazardDO> hazards) {
+        if (CollUtil.isEmpty(hazards)) {
+            return;
+        }
+        var ids = new java.util.ArrayList<Long>(hazards.size() * 3);
+        hazards.forEach(h -> { ids.add(h.getReporterId()); ids.add(h.getAssigneeId()); ids.add(h.getRecheckerId()); });
+        var employeeMap = refResolver.employeeMap(ids);
+        hazards.forEach(hazard -> {
+            var reporter = employeeMap.get(hazard.getReporterId());
+            if (reporter != null) hazard.setReporter(reporter.getName());
+            var assignee = employeeMap.get(hazard.getAssigneeId());
+            if (assignee != null) hazard.setAssignee(assignee.getName());
+            var rechecker = employeeMap.get(hazard.getRecheckerId());
+            if (rechecker != null) hazard.setRechecker(rechecker.getName());
+        });
+    }
+
+    /**
      * 灞曠ず瀛楁琛ュ叏锛堢瓑绾�/鏉ユ簮/鐘舵�佸悕绉般�佽秴鏈熸爣璁帮級
      */
     public static void fillHazardDisplay(SafetyHazardDO hazard, SafetyHazardRespVO respVO) {

--
Gitblit v1.9.3