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,10 +8,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 import cn.iocoder.yudao.framework.common.util.collection.MapUtils; 8 import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
9 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 9 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
10 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; 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 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO; 12 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO;
13 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordRespVO; 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 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; 15 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
16 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO; 16 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO;
17 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO; 17 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO;
@@ -65,7 +65,7 @@ public class MesProAndonRecordController { @@ -65,7 +65,7 @@ public class MesProAndonRecordController {
65 @PostMapping("/create") 65 @PostMapping("/create")
66 @Operation(summary = "创建安灯呼叫记录") 66 @Operation(summary = "创建安灯呼叫记录")
67 @PreAuthorize("@ss.hasPermission('mes:pro-andon-record:create')") 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 return success(andonRecordService.createAndonRecord(createReqVO)); 69 return success(andonRecordService.createAndonRecord(createReqVO));
70 } 70 }
71 71
@@ -78,11 +78,11 @@ public class MesProAndonRecordController { @@ -78,11 +78,11 @@ public class MesProAndonRecordController {
78 return success(true); 78 return success(true);
79 } 79 }
80 80
81 - @PutMapping("/handle")  
82 - @Operation(summary = "处置安灯呼叫记录") 81 + @PutMapping("/update")
  82 + @Operation(summary = "更新安灯呼叫记录")
83 @PreAuthorize("@ss.hasPermission('mes:pro-andon-record:update')") 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 return success(true); 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 package cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record; 1 package cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 -import jakarta.validation.constraints.NotEmpty;  
5 import jakarta.validation.constraints.NotNull; 4 import jakarta.validation.constraints.NotNull;
6 import lombok.Data; 5 import lombok.Data;
7 6
8 @Schema(description = "管理后台 - MES 安灯呼叫记录新增 Request VO") 7 @Schema(description = "管理后台 - MES 安灯呼叫记录新增 Request VO")
9 @Data 8 @Data
10 -public class MesProAndonRecordSaveReqVO { 9 +public class MesProAndonRecordCreateReqVO {
11 10
12 @Schema(description = "安灯配置编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 11 @Schema(description = "安灯配置编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
13 @NotNull(message = "安灯配置不能为空") 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,6 +233,8 @@ public interface ErrorCodeConstants {
233 // ========== MES 生产管理-安灯呼叫记录(1-040-505-000) ========== 233 // ========== MES 生产管理-安灯呼叫记录(1-040-505-000) ==========
234 ErrorCode PRO_ANDON_RECORD_NOT_EXISTS = new ErrorCode(1_040_505_000, "安灯呼叫记录不存在"); 234 ErrorCode PRO_ANDON_RECORD_NOT_EXISTS = new ErrorCode(1_040_505_000, "安灯呼叫记录不存在");
235 ErrorCode PRO_ANDON_RECORD_ALREADY_HANDLED = new ErrorCode(1_040_505_001, "安灯记录已处置,不允许重复处置"); 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 // ========== MES 生产管理-生产报工(1-040-506-000) ========== 239 // ========== MES 生产管理-生产报工(1-040-506-000) ==========
238 ErrorCode PRO_FEEDBACK_NOT_EXISTS = new ErrorCode(1_040_506_000, "生产报工不存在"); 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 package cn.iocoder.yudao.module.mes.service.pro.andon; 1 package cn.iocoder.yudao.module.mes.service.pro.andon;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 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 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO; 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 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO; 7 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO;
8 import jakarta.validation.Valid; 8 import jakarta.validation.Valid;
9 9
@@ -20,7 +20,7 @@ public interface MesProAndonRecordService { @@ -20,7 +20,7 @@ public interface MesProAndonRecordService {
20 * @param createReqVO 创建信息 20 * @param createReqVO 创建信息
21 * @return 编号 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,11 +30,11 @@ public interface MesProAndonRecordService {
30 void deleteAndonRecord(Long id); 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,9 +3,9 @@ package cn.iocoder.yudao.module.mes.service.pro.andon;
3 import cn.hutool.core.util.ObjUtil; 3 import cn.hutool.core.util.ObjUtil;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 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 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO; 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 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonConfigDO; 9 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonConfigDO;
10 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO; 10 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO;
11 import cn.iocoder.yudao.module.mes.dal.mysql.pro.andon.MesProAndonRecordMapper; 11 import cn.iocoder.yudao.module.mes.dal.mysql.pro.andon.MesProAndonRecordMapper;
@@ -45,7 +45,7 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService { @@ -45,7 +45,7 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService {
45 private MesProAndonConfigService andonConfigService; 45 private MesProAndonConfigService andonConfigService;
46 46
47 @Override 47 @Override
48 - public Long createAndonRecord(MesProAndonRecordSaveReqVO createReqVO) { 48 + public Long createAndonRecord(MesProAndonRecordCreateReqVO createReqVO) {
49 // 1. 校验关联数据存在 49 // 1. 校验关联数据存在
50 MesProAndonConfigDO config = andonConfigService.validateAndonConfigExists(createReqVO.getConfigId()); 50 MesProAndonConfigDO config = andonConfigService.validateAndonConfigExists(createReqVO.getConfigId());
51 workstationService.validateWorkstationExists(createReqVO.getWorkstationId()); 51 workstationService.validateWorkstationExists(createReqVO.getWorkstationId());
@@ -56,9 +56,9 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService { @@ -56,9 +56,9 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService {
56 processService.validateProcessExists(createReqVO.getProcessId()); 56 processService.validateProcessExists(createReqVO.getProcessId());
57 } 57 }
58 58
59 - // 2. 插入 59 + // 2. 插入记录
60 MesProAndonRecordDO record = BeanUtils.toBean(createReqVO, MesProAndonRecordDO.class); 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 record.setStatus(MesProAndonStatusEnum.ACTIVE.getStatus()); 62 record.setStatus(MesProAndonStatusEnum.ACTIVE.getStatus());
63 andonRecordMapper.insert(record); 63 andonRecordMapper.insert(record);
64 return record.getId(); 64 return record.getId();
@@ -66,23 +66,23 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService { @@ -66,23 +66,23 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService {
66 66
67 @Override 67 @Override
68 public void deleteAndonRecord(Long id) { 68 public void deleteAndonRecord(Long id) {
69 - // 1. 校验存在 + 未处置 69 + // 1. 校验存在,且未处置
70 validateAndonRecordNotHandled(id); 70 validateAndonRecordNotHandled(id);
71 // 2. 删除 71 // 2. 删除
72 andonRecordMapper.deleteById(id); 72 andonRecordMapper.deleteById(id);
73 } 73 }
74 74
75 @Override 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 /**