Commit 5c60fab8bb57eac0a6160d5b32e6b66f213679ef
1 parent
749651e8
✨ feat(mes): 添加安灯呼叫记录创建和更新请求 VO
Showing
7 changed files
with
83 additions
and
59 deletions
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 | /** |