diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/MesProAndonRecordController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/MesProAndonRecordController.java index 5e31947..314ca40 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/MesProAndonRecordController.java +++ b/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; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordHandleReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordUpdateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordSaveReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordCreateReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO; @@ -65,7 +65,7 @@ public class MesProAndonRecordController { @PostMapping("/create") @Operation(summary = "创建安灯呼叫记录") @PreAuthorize("@ss.hasPermission('mes:pro-andon-record:create')") - public CommonResult createAndonRecord(@Valid @RequestBody MesProAndonRecordSaveReqVO createReqVO) { + public CommonResult createAndonRecord(@Valid @RequestBody MesProAndonRecordCreateReqVO createReqVO) { return success(andonRecordService.createAndonRecord(createReqVO)); } @@ -78,11 +78,11 @@ public class MesProAndonRecordController { return success(true); } - @PutMapping("/handle") - @Operation(summary = "处置安灯呼叫记录") + @PutMapping("/update") + @Operation(summary = "更新安灯呼叫记录") @PreAuthorize("@ss.hasPermission('mes:pro-andon-record:update')") - public CommonResult handleAndonRecord(@Valid @RequestBody MesProAndonRecordHandleReqVO handleReqVO) { - andonRecordService.handleAndonRecord(handleReqVO); + public CommonResult updateAndonRecord(@Valid @RequestBody MesProAndonRecordUpdateReqVO updateReqVO) { + andonRecordService.updateAndonRecord(updateReqVO); return success(true); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordCreateReqVO.java index ddc8520..78df984 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordCreateReqVO.java @@ -1,13 +1,12 @@ package cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; @Schema(description = "管理后台 - MES 安灯呼叫记录新增 Request VO") @Data -public class MesProAndonRecordSaveReqVO { +public class MesProAndonRecordCreateReqVO { @Schema(description = "安灯配置编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "安灯配置不能为空") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordHandleReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordHandleReqVO.java deleted file mode 100644 index 8f326ed..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordHandleReqVO.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - MES 安灯呼叫记录处置 Request VO") -@Data -public class MesProAndonRecordHandleReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @NotNull(message = "编号不能为空") - private Long id; - - @Schema(description = "处置时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "处置时间不能为空") - private LocalDateTime handleTime; - - @Schema(description = "处置人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") - @NotNull(message = "处置人不能为空") - private Long handlerUserId; - - @Schema(description = "备注", example = "已修复") - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordUpdateReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordUpdateReqVO.java new file mode 100644 index 0000000..61f3db1 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordUpdateReqVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record; + +import cn.iocoder.yudao.module.mes.enums.pro.MesProAndonStatusEnum; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.AssertTrue; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 安灯呼叫记录更新 Request VO") +@Data +public class MesProAndonRecordUpdateReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @NotNull(message = "编号不能为空") + private Long id; + + @Schema(description = "处置时间") + private LocalDateTime handleTime; + + @Schema(description = "处置人编号", example = "100") + private Long handlerUserId; + + @Schema(description = "备注", example = "已修复") + private String remark; + + @Schema(description = "处置状态", example = "1") + @NotNull(message = "处置状态不能为空") + private Integer status; + + @AssertTrue(message = "标记已处置时,处置时间不能为空") + @JsonIgnore + public boolean isHandleTimeValid() { + if (!MesProAndonStatusEnum.HANDLED.getStatus().equals(status)) { + return true; + } + return handleTime != null; + } + + @AssertTrue(message = "标记已处置时,处置人不能为空") + @JsonIgnore + public boolean isHandlerUserIdValid() { + if (!MesProAndonStatusEnum.HANDLED.getStatus().equals(status)) { + return true; + } + return handlerUserId != null; + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index 2ad21be..7b5444c 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -233,6 +233,8 @@ public interface ErrorCodeConstants { // ========== MES 生产管理-安灯呼叫记录(1-040-505-000) ========== ErrorCode PRO_ANDON_RECORD_NOT_EXISTS = new ErrorCode(1_040_505_000, "安灯呼叫记录不存在"); ErrorCode PRO_ANDON_RECORD_ALREADY_HANDLED = new ErrorCode(1_040_505_001, "安灯记录已处置,不允许重复处置"); + ErrorCode PRO_ANDON_RECORD_HANDLE_TIME_REQUIRED = new ErrorCode(1_040_505_002, "标记已处置时,处置时间不能为空"); + ErrorCode PRO_ANDON_RECORD_HANDLER_USER_REQUIRED = new ErrorCode(1_040_505_003, "标记已处置时,处置人不能为空"); // ========== MES 生产管理-生产报工(1-040-506-000) ========== ErrorCode PRO_FEEDBACK_NOT_EXISTS = new ErrorCode(1_040_506_000, "生产报工不存在"); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordService.java index 667d9bc..3c39aec 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordService.java @@ -1,9 +1,9 @@ package cn.iocoder.yudao.module.mes.service.pro.andon; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordHandleReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordUpdateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordSaveReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordCreateReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO; import jakarta.validation.Valid; @@ -20,7 +20,7 @@ public interface MesProAndonRecordService { * @param createReqVO 创建信息 * @return 编号 */ - Long createAndonRecord(@Valid MesProAndonRecordSaveReqVO createReqVO); + Long createAndonRecord(@Valid MesProAndonRecordCreateReqVO createReqVO); /** * 删除安灯呼叫记录 @@ -30,11 +30,11 @@ public interface MesProAndonRecordService { void deleteAndonRecord(Long id); /** - * 处置安灯呼叫记录 + * 更新安灯呼叫记录(保存处置信息 / 标记已处置) * - * @param handleReqVO 处置信息 + * @param updateReqVO 更新信息 */ - void handleAndonRecord(@Valid MesProAndonRecordHandleReqVO handleReqVO); + void updateAndonRecord(@Valid MesProAndonRecordUpdateReqVO updateReqVO); /** * 获得安灯呼叫记录 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordServiceImpl.java index 3a523fe..db7e6ad 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordServiceImpl.java +++ b/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; import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordHandleReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordUpdateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordSaveReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordCreateReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonConfigDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO; import cn.iocoder.yudao.module.mes.dal.mysql.pro.andon.MesProAndonRecordMapper; @@ -45,7 +45,7 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService { private MesProAndonConfigService andonConfigService; @Override - public Long createAndonRecord(MesProAndonRecordSaveReqVO createReqVO) { + public Long createAndonRecord(MesProAndonRecordCreateReqVO createReqVO) { // 1. 校验关联数据存在 MesProAndonConfigDO config = andonConfigService.validateAndonConfigExists(createReqVO.getConfigId()); workstationService.validateWorkstationExists(createReqVO.getWorkstationId()); @@ -56,9 +56,9 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService { processService.validateProcessExists(createReqVO.getProcessId()); } - // 2. 插入 + // 2. 插入记录 MesProAndonRecordDO record = BeanUtils.toBean(createReqVO, MesProAndonRecordDO.class); - record.setReason(config.getReason()).setLevel(config.getLevel()); + record.setReason(config.getReason()).setLevel(config.getLevel()); // 快照配置中的原因和级别 record.setStatus(MesProAndonStatusEnum.ACTIVE.getStatus()); andonRecordMapper.insert(record); return record.getId(); @@ -66,23 +66,23 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService { @Override public void deleteAndonRecord(Long id) { - // 1. 校验存在 + 未处置 + // 1. 校验存在,且未处置 validateAndonRecordNotHandled(id); // 2. 删除 andonRecordMapper.deleteById(id); } @Override - public void handleAndonRecord(MesProAndonRecordHandleReqVO handleReqVO) { - // 1. 校验存在 + 未处置 - validateAndonRecordNotHandled(handleReqVO.getId()); - - // 2. 更新为已处置 - andonRecordMapper.updateById(new MesProAndonRecordDO().setId(handleReqVO.getId()) - .setStatus(MesProAndonStatusEnum.HANDLED.getStatus()) - .setHandleTime(handleReqVO.getHandleTime()) - .setHandlerUserId(handleReqVO.getHandlerUserId()) - .setRemark(handleReqVO.getRemark())); + public void updateAndonRecord(MesProAndonRecordUpdateReqVO updateReqVO) { + // 1. 校验存在,且未处置 + validateAndonRecordNotHandled(updateReqVO.getId()); + + // 2. 更新 + andonRecordMapper.updateById(new MesProAndonRecordDO().setId(updateReqVO.getId()) + .setStatus(updateReqVO.getStatus()) + .setHandleTime(updateReqVO.getHandleTime()) + .setHandlerUserId(updateReqVO.getHandlerUserId()) + .setRemark(updateReqVO.getRemark())); } /**