Commit b92c8e1a18a93d294dcf46db17cc6baea78dc8bf

Authored by YunaiV
1 parent a347943b

feat(mes): 重构安灯相关组件,优化导入路径,增加注释以提升可读性

yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/MesProAndonRecordController.java
... ... @@ -34,10 +34,12 @@ import org.springframework.web.bind.annotation.*;
34 34  
35 35 import java.io.IOException;
36 36 import java.util.*;
  37 +import java.util.stream.Stream;
37 38  
38 39 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
39 40 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
40 41 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
  42 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap;
41 43  
42 44 @Tag(name = "管理后台 - MES 安灯呼叫记录")
43 45 @RestController
... ... @@ -129,13 +131,8 @@ public class MesProAndonRecordController {
129 131 convertSet(list, MesProAndonRecordDO::getWorkOrderId));
130 132 Map<Long, MesProProcessDO> processMap = processService.getProcessMap(
131 133 new ArrayList<>(convertSet(list, MesProAndonRecordDO::getProcessId)));
132   - // 收集所有用户 ID(发起人 + 处置人)
133   - // TODO @AI:可以使用 collutils 里,convert 去收集多个字段的 id;
134   - Set<Long> userIds = new HashSet<>();
135   - userIds.addAll(convertSet(list, MesProAndonRecordDO::getUserId));
136   - userIds.addAll(convertSet(list, MesProAndonRecordDO::getHandlerUserId));
137   - userIds.remove(null);
138   - Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
  134 + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSetByFlatMap(list,
  135 + record -> Stream.of(record.getUserId(), record.getHandlerUserId())));
139 136 // 2. 拼接 VO
140 137 return BeanUtils.toBean(list, MesProAndonRecordRespVO.class, vo -> {
141 138 MapUtils.findAndThen(workstationMap, vo.getWorkstationId(), ws ->
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/pro/MesProFeedbackStatusEnum.java
... ... @@ -6,6 +6,7 @@ import lombok.Getter;
6 6  
7 7 import java.util.Arrays;
8 8  
  9 +// TODO @AI:注释下,状态的流转,不要太复杂;
9 10 /**
10 11 * MES 生产报工状态枚举
11 12 *
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordServiceImpl.java
... ... @@ -9,6 +9,9 @@ import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAn
9 9 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO;
10 10 import cn.iocoder.yudao.module.mes.dal.mysql.pro.andon.MesProAndonRecordMapper;
11 11 import cn.iocoder.yudao.module.mes.enums.pro.MesProAndonStatusEnum;
  12 +import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
  13 +import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService;
  14 +import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
12 15 import jakarta.annotation.Resource;
13 16 import org.springframework.stereotype.Service;
14 17 import org.springframework.validation.annotation.Validated;
... ... @@ -29,11 +32,27 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService {
29 32 @Resource
30 33 private MesProAndonRecordMapper andonRecordMapper;
31 34  
  35 + @Resource
  36 + private MesMdWorkstationService workstationService;
  37 +
  38 + @Resource
  39 + private MesProWorkOrderService workOrderService;
  40 +
  41 + @Resource
  42 + private MesProProcessService processService;
  43 +
32 44 @Override
33 45 public Long createAndonRecord(MesProAndonRecordSaveReqVO createReqVO) {
34   - // TODO @AI:关联数据存在
  46 + // 1. 校验关联数据存在
  47 + workstationService.getWorkstation(createReqVO.getWorkstationId()); // 工作站必填,直接校验
  48 + if (createReqVO.getWorkOrderId() != null) {
  49 + workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId());
  50 + }
  51 + if (createReqVO.getProcessId() != null) {
  52 + processService.getProcess(createReqVO.getProcessId());
  53 + }
35 54  
36   - // 插入
  55 + // 2. 插入
37 56 MesProAndonRecordDO record = BeanUtils.toBean(createReqVO, MesProAndonRecordDO.class);
38 57 record.setStatus(MesProAndonStatusEnum.ACTIVE.getStatus());
39 58 andonRecordMapper.insert(record);
... ... @@ -42,22 +61,16 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService {
42 61  
43 62 @Override
44 63 public void deleteAndonRecord(Long id) {
45   - // 校验存在
46   - validateAndonRecordExists(id);
47   - // TODO @AI:已处理,不能删除。可以抽个方法,这样下面的 1.2 也可以服用;
48   -
49   - // 删除
  64 + // 1. 校验存在 + 未处置
  65 + validateAndonRecordNotHandled(id);
  66 + // 2. 删除
50 67 andonRecordMapper.deleteById(id);
51 68 }
52 69  
53 70 @Override
54 71 public void handleAndonRecord(MesProAndonRecordHandleReqVO handleReqVO) {
55   - // 1.1 校验存在
56   - MesProAndonRecordDO record = validateAndonRecordExists(handleReqVO.getId());
57   - // 1.2 校验未处置
58   - if (ObjUtil.equal(record.getStatus(), MesProAndonStatusEnum.HANDLED.getStatus())) {
59   - throw exception(PRO_ANDON_RECORD_ALREADY_HANDLED);
60   - }
  72 + // 1. 校验存在 + 未处置
  73 + validateAndonRecordNotHandled(handleReqVO.getId());
61 74  
62 75 // 2. 更新为已处置
63 76 andonRecordMapper.updateById(new MesProAndonRecordDO().setId(handleReqVO.getId())
... ... @@ -67,11 +80,20 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService {
67 80 .setRemark(handleReqVO.getRemark()));
68 81 }
69 82  
70   - private MesProAndonRecordDO validateAndonRecordExists(Long id) {
  83 + /**
  84 + * 校验安灯记录存在,且未处置
  85 + *
  86 + * @param id 编号
  87 + * @return 安灯记录
  88 + */
  89 + private MesProAndonRecordDO validateAndonRecordNotHandled(Long id) {
71 90 MesProAndonRecordDO record = andonRecordMapper.selectById(id);
72 91 if (record == null) {
73 92 throw exception(PRO_ANDON_RECORD_NOT_EXISTS);
74 93 }
  94 + if (ObjUtil.equal(record.getStatus(), MesProAndonStatusEnum.HANDLED.getStatus())) {
  95 + throw exception(PRO_ANDON_RECORD_ALREADY_HANDLED);
  96 + }
75 97 return record;
76 98 }
77 99  
... ...