Commit 5c60fab8bb57eac0a6160d5b32e6b66f213679ef

Authored by YunaiV
1 parent 749651e8

✨ feat(mes): 添加安灯呼叫记录创建和更新请求 VO

yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/MesProAndonRecordController.java
... ... @@ -8,10 +8,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 8 import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
9 9 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
10 10 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
11   -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordHandleReqVO;
  11 +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordUpdateReqVO;
12 12 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO;
13 13 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordRespVO;
14   -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordSaveReqVO;
  14 +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordCreateReqVO;
15 15 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
16 16 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO;
17 17 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO;
... ... @@ -65,7 +65,7 @@ public class MesProAndonRecordController {
65 65 @PostMapping("/create")
66 66 @Operation(summary = "创建安灯呼叫记录")
67 67 @PreAuthorize("@ss.hasPermission('mes:pro-andon-record:create')")
68   - public CommonResult<Long> createAndonRecord(@Valid @RequestBody MesProAndonRecordSaveReqVO createReqVO) {
  68 + public CommonResult<Long> createAndonRecord(@Valid @RequestBody MesProAndonRecordCreateReqVO createReqVO) {
69 69 return success(andonRecordService.createAndonRecord(createReqVO));
70 70 }
71 71  
... ... @@ -78,11 +78,11 @@ public class MesProAndonRecordController {
78 78 return success(true);
79 79 }
80 80  
81   - @PutMapping("/handle")
82   - @Operation(summary = "处置安灯呼叫记录")
  81 + @PutMapping("/update")
  82 + @Operation(summary = "更新安灯呼叫记录")
83 83 @PreAuthorize("@ss.hasPermission('mes:pro-andon-record:update')")
84   - public CommonResult<Boolean> handleAndonRecord(@Valid @RequestBody MesProAndonRecordHandleReqVO handleReqVO) {
85   - andonRecordService.handleAndonRecord(handleReqVO);
  84 + public CommonResult<Boolean> updateAndonRecord(@Valid @RequestBody MesProAndonRecordUpdateReqVO updateReqVO) {
  85 + andonRecordService.updateAndonRecord(updateReqVO);
86 86 return success(true);
87 87 }
88 88  
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordSaveReqVO.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordCreateReqVO.java
1 1 package cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record;
2 2  
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4   -import jakarta.validation.constraints.NotEmpty;
5 4 import jakarta.validation.constraints.NotNull;
6 5 import lombok.Data;
7 6  
8 7 @Schema(description = "管理后台 - MES 安灯呼叫记录新增 Request VO")
9 8 @Data
10   -public class MesProAndonRecordSaveReqVO {
  9 +public class MesProAndonRecordCreateReqVO {
11 10  
12 11 @Schema(description = "安灯配置编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
13 12 @NotNull(message = "安灯配置不能为空")
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordHandleReqVO.java deleted
1   -package cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import jakarta.validation.constraints.NotNull;
5   -import lombok.Data;
6   -
7   -import java.time.LocalDateTime;
8   -
9   -@Schema(description = "管理后台 - MES 安灯呼叫记录处置 Request VO")
10   -@Data
11   -public class MesProAndonRecordHandleReqVO {
12   -
13   - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
14   - @NotNull(message = "编号不能为空")
15   - private Long id;
16   -
17   - @Schema(description = "处置时间", requiredMode = Schema.RequiredMode.REQUIRED)
18   - @NotNull(message = "处置时间不能为空")
19   - private LocalDateTime handleTime;
20   -
21   - @Schema(description = "处置人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
22   - @NotNull(message = "处置人不能为空")
23   - private Long handlerUserId;
24   -
25   - @Schema(description = "备注", example = "已修复")
26   - private String remark;
27   -
28   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordUpdateReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record;
  2 +
  3 +import cn.iocoder.yudao.module.mes.enums.pro.MesProAndonStatusEnum;
  4 +import com.fasterxml.jackson.annotation.JsonIgnore;
  5 +import io.swagger.v3.oas.annotations.media.Schema;
  6 +import jakarta.validation.constraints.AssertTrue;
  7 +import jakarta.validation.constraints.NotNull;
  8 +import lombok.Data;
  9 +
  10 +import java.time.LocalDateTime;
  11 +
  12 +@Schema(description = "管理后台 - MES 安灯呼叫记录更新 Request VO")
  13 +@Data
  14 +public class MesProAndonRecordUpdateReqVO {
  15 +
  16 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  17 + @NotNull(message = "编号不能为空")
  18 + private Long id;
  19 +
  20 + @Schema(description = "处置时间")
  21 + private LocalDateTime handleTime;
  22 +
  23 + @Schema(description = "处置人编号", example = "100")
  24 + private Long handlerUserId;
  25 +
  26 + @Schema(description = "备注", example = "已修复")
  27 + private String remark;
  28 +
  29 + @Schema(description = "处置状态", example = "1")
  30 + @NotNull(message = "处置状态不能为空")
  31 + private Integer status;
  32 +
  33 + @AssertTrue(message = "标记已处置时,处置时间不能为空")
  34 + @JsonIgnore
  35 + public boolean isHandleTimeValid() {
  36 + if (!MesProAndonStatusEnum.HANDLED.getStatus().equals(status)) {
  37 + return true;
  38 + }
  39 + return handleTime != null;
  40 + }
  41 +
  42 + @AssertTrue(message = "标记已处置时,处置人不能为空")
  43 + @JsonIgnore
  44 + public boolean isHandlerUserIdValid() {
  45 + if (!MesProAndonStatusEnum.HANDLED.getStatus().equals(status)) {
  46 + return true;
  47 + }
  48 + return handlerUserId != null;
  49 + }
  50 +
  51 +}
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
... ... @@ -233,6 +233,8 @@ public interface ErrorCodeConstants {
233 233 // ========== MES 生产管理-安灯呼叫记录(1-040-505-000) ==========
234 234 ErrorCode PRO_ANDON_RECORD_NOT_EXISTS = new ErrorCode(1_040_505_000, "安灯呼叫记录不存在");
235 235 ErrorCode PRO_ANDON_RECORD_ALREADY_HANDLED = new ErrorCode(1_040_505_001, "安灯记录已处置,不允许重复处置");
  236 + ErrorCode PRO_ANDON_RECORD_HANDLE_TIME_REQUIRED = new ErrorCode(1_040_505_002, "标记已处置时,处置时间不能为空");
  237 + ErrorCode PRO_ANDON_RECORD_HANDLER_USER_REQUIRED = new ErrorCode(1_040_505_003, "标记已处置时,处置人不能为空");
236 238  
237 239 // ========== MES 生产管理-生产报工(1-040-506-000) ==========
238 240 ErrorCode PRO_FEEDBACK_NOT_EXISTS = new ErrorCode(1_040_506_000, "生产报工不存在");
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordService.java
1 1 package cn.iocoder.yudao.module.mes.service.pro.andon;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordHandleReqVO;
  4 +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordUpdateReqVO;
5 5 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO;
6   -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordSaveReqVO;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordCreateReqVO;
7 7 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO;
8 8 import jakarta.validation.Valid;
9 9  
... ... @@ -20,7 +20,7 @@ public interface MesProAndonRecordService {
20 20 * @param createReqVO 创建信息
21 21 * @return 编号
22 22 */
23   - Long createAndonRecord(@Valid MesProAndonRecordSaveReqVO createReqVO);
  23 + Long createAndonRecord(@Valid MesProAndonRecordCreateReqVO createReqVO);
24 24  
25 25 /**
26 26 * 删除安灯呼叫记录
... ... @@ -30,11 +30,11 @@ public interface MesProAndonRecordService {
30 30 void deleteAndonRecord(Long id);
31 31  
32 32 /**
33   - * 处置安灯呼叫记录
  33 + * 更新安灯呼叫记录(保存处置信息 / 标记已处置)
34 34 *
35   - * @param handleReqVO 处置信息
  35 + * @param updateReqVO 更新信息
36 36 */
37   - void handleAndonRecord(@Valid MesProAndonRecordHandleReqVO handleReqVO);
  37 + void updateAndonRecord(@Valid MesProAndonRecordUpdateReqVO updateReqVO);
38 38  
39 39 /**
40 40 * 获得安灯呼叫记录
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordServiceImpl.java
... ... @@ -3,9 +3,9 @@ package cn.iocoder.yudao.module.mes.service.pro.andon;
3 3 import cn.hutool.core.util.ObjUtil;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6   -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordHandleReqVO;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordUpdateReqVO;
7 7 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO;
8   -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordSaveReqVO;
  8 +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordCreateReqVO;
9 9 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonConfigDO;
10 10 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO;
11 11 import cn.iocoder.yudao.module.mes.dal.mysql.pro.andon.MesProAndonRecordMapper;
... ... @@ -45,7 +45,7 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService {
45 45 private MesProAndonConfigService andonConfigService;
46 46  
47 47 @Override
48   - public Long createAndonRecord(MesProAndonRecordSaveReqVO createReqVO) {
  48 + public Long createAndonRecord(MesProAndonRecordCreateReqVO createReqVO) {
49 49 // 1. 校验关联数据存在
50 50 MesProAndonConfigDO config = andonConfigService.validateAndonConfigExists(createReqVO.getConfigId());
51 51 workstationService.validateWorkstationExists(createReqVO.getWorkstationId());
... ... @@ -56,9 +56,9 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService {
56 56 processService.validateProcessExists(createReqVO.getProcessId());
57 57 }
58 58  
59   - // 2. 插入
  59 + // 2. 插入记录
60 60 MesProAndonRecordDO record = BeanUtils.toBean(createReqVO, MesProAndonRecordDO.class);
61   - record.setReason(config.getReason()).setLevel(config.getLevel());
  61 + record.setReason(config.getReason()).setLevel(config.getLevel()); // 快照配置中的原因和级别
62 62 record.setStatus(MesProAndonStatusEnum.ACTIVE.getStatus());
63 63 andonRecordMapper.insert(record);
64 64 return record.getId();
... ... @@ -66,23 +66,23 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService {
66 66  
67 67 @Override
68 68 public void deleteAndonRecord(Long id) {
69   - // 1. 校验存在 + 未处置
  69 + // 1. 校验存在,且未处置
70 70 validateAndonRecordNotHandled(id);
71 71 // 2. 删除
72 72 andonRecordMapper.deleteById(id);
73 73 }
74 74  
75 75 @Override
76   - public void handleAndonRecord(MesProAndonRecordHandleReqVO handleReqVO) {
77   - // 1. 校验存在 + 未处置
78   - validateAndonRecordNotHandled(handleReqVO.getId());
79   -
80   - // 2. 更新为已处置
81   - andonRecordMapper.updateById(new MesProAndonRecordDO().setId(handleReqVO.getId())
82   - .setStatus(MesProAndonStatusEnum.HANDLED.getStatus())
83   - .setHandleTime(handleReqVO.getHandleTime())
84   - .setHandlerUserId(handleReqVO.getHandlerUserId())
85   - .setRemark(handleReqVO.getRemark()));
  76 + public void updateAndonRecord(MesProAndonRecordUpdateReqVO updateReqVO) {
  77 + // 1. 校验存在,且未处置
  78 + validateAndonRecordNotHandled(updateReqVO.getId());
  79 +
  80 + // 2. 更新
  81 + andonRecordMapper.updateById(new MesProAndonRecordDO().setId(updateReqVO.getId())
  82 + .setStatus(updateReqVO.getStatus())
  83 + .setHandleTime(updateReqVO.getHandleTime())
  84 + .setHandlerUserId(updateReqVO.getHandlerUserId())
  85 + .setRemark(updateReqVO.getRemark()));
86 86 }
87 87  
88 88 /**
... ...