diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairController.java index 16a987e..8ff2f02 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairController.java @@ -19,6 +19,7 @@ import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; @@ -37,6 +38,7 @@ import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPOR import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @Tag(name = "管理后台 - MES 维修工单") @RestController @@ -110,28 +112,19 @@ public class MesDvRepairController { buildRepairRespVOList(list)); } + // DONE @AI:submit=>confirm=>finish(然后里面有是 resultstatus 这样的字段【对齐实体?】) + @PutMapping("/submit") @Operation(summary = "提交维修工单(草稿→维修中)") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('mes:dv-repair:update')") public CommonResult submitRepair(@RequestParam("id") Long id) { - repairService.submitRepair(id); - return success(true); - } - - // TODO @AI:submit=>confirm=>finish(然后里面有是 resultstatus 这样的字段【对齐实体?】) - - @PutMapping("/finish") - @Operation(summary = "完成维修(维修中→待验收)") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:dv-repair:update')") - public CommonResult finishRepair(@RequestParam("id") Long id) { - repairService.finishRepair(id); + repairService.submitRepair(id, getLoginUserId()); return success(true); } @PutMapping("/confirm") - @Operation(summary = "验收通过(待验收→已确认,结果=通过)") + @Operation(summary = "确认维修完成(维修中→待验收)") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('mes:dv-repair:update')") public CommonResult confirmRepair(@RequestParam("id") Long id) { @@ -139,12 +132,16 @@ public class MesDvRepairController { return success(true); } - @PutMapping("/reject") - @Operation(summary = "验收不通过(待验收→已确认,结果=不通过)") - @Parameter(name = "id", description = "编号", required = true) + @PutMapping("/finish") + @Operation(summary = "完成验收(待验收→已确认)") + @Parameters({ + @Parameter(name = "id", description = "编号", required = true), + @Parameter(name = "result", description = "验收结果", required = true) + }) @PreAuthorize("@ss.hasPermission('mes:dv-repair:update')") - public CommonResult rejectRepair(@RequestParam("id") Long id) { - repairService.rejectRepair(id); + public CommonResult finishRepair(@RequestParam("id") Long id, + @RequestParam("result") Integer result) { + repairService.finishRepair(id, result, getLoginUserId()); return success(true); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairSaveReqVO.java index 07d4efa..9dbbdc3 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairSaveReqVO.java @@ -25,7 +25,8 @@ public class MesDvRepairSaveReqVO { @NotNull(message = "设备不能为空") private Long machineryId; - @Schema(description = "报修日期") + @Schema(description = "报修日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "报修日期不能为空") private LocalDateTime requireDate; @Schema(description = "维修完成日期") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairDO.java index 2a1a8f1..25f7cca 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairDO.java @@ -61,7 +61,6 @@ public class MesDvRepairDO extends BaseDO { * 维修结果 * * 枚举 {@link MesDvRepairResultEnum} - * 字典类型 mes_dv_repair_result */ private Integer result; /** diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvRepairStatusEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvRepairStatusEnum.java index 87f150e..9dc170b 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvRepairStatusEnum.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvRepairStatusEnum.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.enums.dv; import cn.iocoder.yudao.framework.common.core.ArrayValuable; import cn.iocoder.yudao.module.mes.enums.MesOrderStatusConstants; +import cn.iocoder.yudao.module.mes.service.dv.repair.MesDvRepairService; import lombok.AllArgsConstructor; import lombok.Getter; @@ -18,25 +19,28 @@ import java.util.Arrays; @AllArgsConstructor public enum MesDvRepairStatusEnum implements ArrayValuable { - // TODO @AI:不用 ktg 的注释,里面需要 @ 对应方法,对齐现有项目的规范; /** * 草稿 + * + * 对应方法:{@link MesDvRepairService#createRepair} */ PREPARE(MesOrderStatusConstants.PREPARE, "草稿"), /** * 维修中(提交后,维修人接单) + * + * 对应方法:{@link MesDvRepairService#submitRepair(Long, Long)} */ CONFIRMED(MesOrderStatusConstants.CONFIRMED, "维修中"), /** * 待验收(维修完成,等待验收) * - * 对应 KTG: FINISHED + * 对应方法:{@link MesDvRepairService#confirmRepair(Long)} */ APPROVING(MesOrderStatusConstants.APPROVING, "待验收"), /** * 已确认(验收通过或不通过,终态) * - * 对应 KTG: CONFIRMED + * 对应方法:{@link MesDvRepairService#finishRepair(Long, Integer, Long)} */ FINISHED(MesOrderStatusConstants.FINISHED, "已确认"); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java index 81a5cb2..c0c4d9d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java @@ -40,7 +40,11 @@ public enum MesMdAutoCodeRuleCodeEnum { WM_OUTSOURCE_ISSUE_CODE("WM_OUTSOURCE_ISSUE_CODE", "外协发料单编码"), DV_MACHINERY_CODE("DV_MACHINERY_CODE", "设备编码"), DV_MACHINERY_TYPE_CODE("DV_MACHINERY_TYPE_CODE", "设备类型编码"), - DV_SUBJECT_CODE("DV_SUBJECT_CODE", "点检保养项目编码"); + DV_SUBJECT_CODE("DV_SUBJECT_CODE", "点检保养项目编码"), + DV_REPAIR_CODE("DV_REPAIR_CODE", "维修单编码"), + WM_SALES_NOTICE_CODE("WM_SALES_NOTICE_CODE", "发货通知单编码"), + WM_RETURN_SALES_CODE("WM_RETURN_SALES_CODE", "销售退货单编码"), + WM_MISC_ISSUE_CODE("WM_MISC_ISSUE_CODE", "杂项出库单编码"); /** * 规则代码 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairService.java index 64eb889..41b4517 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairService.java @@ -73,27 +73,22 @@ public interface MesDvRepairService { * * @param id 编号 */ - void submitRepair(Long id); + void submitRepair(Long id, Long userId); /** - * 完成维修(维修中→待验收) - * - * @param id 编号 - */ - void finishRepair(Long id); - - /** - * 验收通过(待验收→已确认,结果=通过) + * 确认维修完成(维修中→待验收) * * @param id 编号 */ void confirmRepair(Long id); /** - * 验收不通过(待验收→已确认,结果=不通过) + * 完成验收(待验收→已确认) * * @param id 编号 + * @param result 验收结果 + * @param userId 当前登录用户编号 */ - void rejectRepair(Long id); + void finishRepair(Long id, Integer result, Long userId); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java index e4a0996..91fd0b0 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java @@ -7,7 +7,6 @@ import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairPage import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair.MesDvRepairDO; import cn.iocoder.yudao.module.mes.dal.mysql.dv.repair.MesDvRepairMapper; -import cn.iocoder.yudao.module.mes.enums.dv.MesDvRepairResultEnum; import cn.iocoder.yudao.module.mes.enums.dv.MesDvRepairStatusEnum; import cn.iocoder.yudao.module.mes.service.dv.machinery.MesDvMachineryService; import jakarta.annotation.Resource; @@ -18,7 +17,6 @@ import org.springframework.validation.annotation.Validated; import java.time.LocalDateTime; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; /** @@ -136,18 +134,17 @@ public class MesDvRepairServiceImpl implements MesDvRepairService { } @Override - public void submitRepair(Long id) { + public void submitRepair(Long id, Long userId) { // 1. 校验存在,且状态为草稿 validateRepairPrepare(id); - // 2. 更新状态为维修中,自动设置维修人为当前用户 + // 2. 更新状态为维修中,设置维修人 repairMapper.updateById(new MesDvRepairDO().setId(id) - .setStatus(MesDvRepairStatusEnum.CONFIRMED.getStatus()) - .setAcceptedUserId(getLoginUserId())); + .setStatus(MesDvRepairStatusEnum.CONFIRMED.getStatus()).setAcceptedUserId(userId)); } @Override - public void finishRepair(Long id) { + public void confirmRepair(Long id) { // 1. 校验存在,且状态为维修中 MesDvRepairDO repair = validateRepairExists(id); if (ObjUtil.notEqual(MesDvRepairStatusEnum.CONFIRMED.getStatus(), repair.getStatus())) { @@ -156,40 +153,21 @@ public class MesDvRepairServiceImpl implements MesDvRepairService { // 2. 更新状态为待验收,自动设置维修完成日期 repairMapper.updateById(new MesDvRepairDO().setId(id) - .setStatus(MesDvRepairStatusEnum.APPROVING.getStatus()) - .setFinishDate(LocalDateTime.now())); - } - - @Override - public void confirmRepair(Long id) { - // 1. 校验存在,且状态为待验收 - MesDvRepairDO repair = validateRepairExists(id); - if (ObjUtil.notEqual(MesDvRepairStatusEnum.APPROVING.getStatus(), repair.getStatus())) { - throw exception(DV_REPAIR_NOT_APPROVING); - } - - // 2. 更新状态为已确认,结果为通过,自动设置验收人和验收日期 - repairMapper.updateById(new MesDvRepairDO().setId(id) - .setStatus(MesDvRepairStatusEnum.FINISHED.getStatus()) - .setResult(MesDvRepairResultEnum.PASS.getResult()) - .setConfirmUserId(getLoginUserId()) - .setConfirmDate(LocalDateTime.now())); + .setStatus(MesDvRepairStatusEnum.APPROVING.getStatus()).setFinishDate(LocalDateTime.now())); } @Override - public void rejectRepair(Long id) { + public void finishRepair(Long id, Integer result, Long userId) { // 1. 校验存在,且状态为待验收 MesDvRepairDO repair = validateRepairExists(id); if (ObjUtil.notEqual(MesDvRepairStatusEnum.APPROVING.getStatus(), repair.getStatus())) { throw exception(DV_REPAIR_NOT_APPROVING); } - // 2. 更新状态为已确认,结果为不通过,自动设置验收人和验收日期 + // 2. 更新状态为已确认,设置验收结果、验收人和验收日期 repairMapper.updateById(new MesDvRepairDO().setId(id) - .setStatus(MesDvRepairStatusEnum.FINISHED.getStatus()) - .setResult(MesDvRepairResultEnum.FAIL.getResult()) - .setConfirmUserId(getLoginUserId()) - .setConfirmDate(LocalDateTime.now())); + .setStatus(MesDvRepairStatusEnum.FINISHED.getStatus()).setResult(result) + .setConfirmUserId(userId).setConfirmDate(LocalDateTime.now())); } }