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/SafetyTrainingService.java |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/safety/SafetyTrainingService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/safety/SafetyTrainingService.java
index 03284b3..bd857fb 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/safety/SafetyTrainingService.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/safety/SafetyTrainingService.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;
@@ -39,6 +40,8 @@
     @Resource
     private SafetyTrainingMapper trainingMapper;
     @Resource
+    private SafetyRefResolver refResolver;
+    @Resource
     private SafetyDrillMapper drillMapper;
     @Resource
     private SafetyAccidentMapper accidentMapper;
@@ -50,6 +53,9 @@
         SafetyTrainingDO training = BeanUtils.toBean(reqVO, SafetyTrainingDO.class);
         training.setTitle(StrUtil.trim(reqVO.getTitle()));
         training.setTrainingType(StrUtil.blankToDefault(reqVO.getTrainingType(), SafetyTrainingTypeEnum.SAFETY.getType()));
+        training.setTrainerId(reqVO.getTrainerId());
+        training.setTrainer(reqVO.getTrainerId() == null ? ""
+                : refResolver.requireEmployee(reqVO.getTrainerId(), SAFETY_EMPLOYEE_REQUIRED).getName());
         training.setParticipantCount(resolveCount(reqVO.getParticipantCount(), reqVO.getParticipants()));
         training.setRemark(reqVO.getRemark() == null ? "" : reqVO.getRemark().trim());
         trainingMapper.insert(training);
@@ -77,6 +83,51 @@
         return trainingMapper.selectPage(reqVO);
     }
 
+    /**
+     * 浜嬫晠鐨勪富鏁版嵁寮曠敤锛氭墍灞炶溅闂� + 鐧昏浜�
+     */
+    private void applyAccidentRefs(SafetyAccidentDO accident, SafetyAccidentSaveReqVO reqVO) {
+        accident.setWorkshopId(reqVO.getWorkshopId());
+        accident.setWorkshopName(reqVO.getWorkshopId() == null ? ""
+                : refResolver.requireWorkshop(reqVO.getWorkshopId()).getName());
+        accident.setReporterId(reqVO.getReporterId());
+        accident.setReporter(reqVO.getReporterId() == null ? ""
+                : refResolver.requireEmployee(reqVO.getReporterId(), SAFETY_EMPLOYEE_REQUIRED).getName());
+    }
+
+    /** 鎵归噺鍥炲~鍩硅璁插笀鏈�鏂板鍚� */
+    public void fillTrainers(List<SafetyTrainingDO> trainings) {
+        if (CollUtil.isEmpty(trainings)) return;
+        var employeeMap = refResolver.employeeMap(trainings.stream().map(SafetyTrainingDO::getTrainerId).toList());
+        trainings.forEach(t -> {
+            var e = employeeMap.get(t.getTrainerId());
+            if (e != null) t.setTrainer(e.getName());
+        });
+    }
+
+    /** 鎵归噺鍥炲~婕旂粌缁勭粐浜烘渶鏂板鍚� */
+    public void fillOrganizers(List<SafetyDrillDO> drills) {
+        if (CollUtil.isEmpty(drills)) return;
+        var employeeMap = refResolver.employeeMap(drills.stream().map(SafetyDrillDO::getOrganizerId).toList());
+        drills.forEach(d -> {
+            var e = employeeMap.get(d.getOrganizerId());
+            if (e != null) d.setOrganizer(e.getName());
+        });
+    }
+
+    /** 鎵归噺鍥炲~浜嬫晠鐨勮溅闂村悕涓庣櫥璁颁汉濮撳悕 */
+    public void fillAccidentRefs(List<SafetyAccidentDO> accidents) {
+        if (CollUtil.isEmpty(accidents)) return;
+        var workshopMap = refResolver.workshopMap(accidents.stream().map(SafetyAccidentDO::getWorkshopId).toList());
+        var employeeMap = refResolver.employeeMap(accidents.stream().map(SafetyAccidentDO::getReporterId).toList());
+        accidents.forEach(a -> {
+            var w = workshopMap.get(a.getWorkshopId());
+            if (w != null) a.setWorkshopName(w.getName());
+            var e = employeeMap.get(a.getReporterId());
+            if (e != null) a.setReporter(e.getName());
+        });
+    }
+
     public static void fillTrainingDisplay(SafetyTrainingDO training, SafetyTrainingRespVO respVO) {
         respVO.setTrainingTypeName(SafetyTrainingTypeEnum.getNameByType(training.getTrainingType()));
     }
@@ -88,6 +139,9 @@
         SafetyDrillDO drill = BeanUtils.toBean(reqVO, SafetyDrillDO.class);
         drill.setTitle(StrUtil.trim(reqVO.getTitle()));
         drill.setDrillType(StrUtil.blankToDefault(reqVO.getDrillType(), SafetyDrillTypeEnum.FIRE.getType()));
+        drill.setOrganizerId(reqVO.getOrganizerId());
+        drill.setOrganizer(reqVO.getOrganizerId() == null ? ""
+                : refResolver.requireEmployee(reqVO.getOrganizerId(), SAFETY_EMPLOYEE_REQUIRED).getName());
         drill.setParticipantCount(resolveCount(reqVO.getParticipantCount(), reqVO.getParticipants()));
         drill.setRemark(reqVO.getRemark() == null ? "" : reqVO.getRemark().trim());
         drillMapper.insert(drill);
@@ -128,6 +182,7 @@
         accident.setTitle(StrUtil.trim(reqVO.getTitle()));
         accident.setLevel(StrUtil.blankToDefault(reqVO.getLevel(), SafetyAccidentLevelEnum.GENERAL.getLevel()));
         accident.setStatus(StrUtil.blankToDefault(reqVO.getStatus(), SafetyAccidentStatusEnum.REPORTED.getStatus()));
+        applyAccidentRefs(accident, reqVO);
         accident.setReportTime(reqVO.getReportTime() == null ? LocalDateTime.now() : reqVO.getReportTime());
         accident.setRemark(reqVO.getRemark() == null ? "" : reqVO.getRemark().trim());
         accidentMapper.insert(accident);
@@ -138,6 +193,7 @@
         validateAccidentExists(reqVO.getId());
         SafetyAccidentDO accident = BeanUtils.toBean(reqVO, SafetyAccidentDO.class);
         accident.setCode(null);
+        applyAccidentRefs(accident, reqVO);
         accidentMapper.updateById(accident);
     }
 

--
Gitblit v1.9.3