diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/MesDvMaintenRecordController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/MesDvMaintenRecordController.java index 49a0400..c812abc 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/MesDvMaintenRecordController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/MesDvMaintenRecordController.java @@ -113,7 +113,14 @@ public class MesDvMaintenRecordController { buildMaintenRecordRespVOList(list)); } - // TODO @AI:submitMaintenRecord 缺少; + @PutMapping("/submit") + @Operation(summary = "提交设备保养记录(草稿→已提交)") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:dv-mainten-record:update')") + public CommonResult submitMaintenRecord(@RequestParam("id") Long id) { + maintenRecordService.submitMaintenRecord(id); + return success(true); + } // ==================== 拼接 VO ==================== diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/vo/MesDvMaintenRecordSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/vo/MesDvMaintenRecordSaveReqVO.java index dbf74e3..2e44d41 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/vo/MesDvMaintenRecordSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/vo/MesDvMaintenRecordSaveReqVO.java @@ -27,10 +27,6 @@ public class MesDvMaintenRecordSaveReqVO { @Schema(description = "用户编号", example = "1") private Long userId; - // TODO @AI:这个字段,不允许提交 - @Schema(description = "状态", example = "10") - private Integer status; - @Schema(description = "备注", example = "测试备注") private String remark; 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 e94f6c7..90bf252 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 @@ -32,10 +32,12 @@ import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Stream; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; 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; @Tag(name = "管理后台 - MES 维修工单") @RestController @@ -119,10 +121,8 @@ public class MesDvRepairController { Map machineryMap = machineryService.getMachineryMap( convertSet(list, MesDvRepairDO::getMachineryId)); // 1.2 收集所有用户 ID(维修人 + 验收人) - // TODO @AI:CollUtils 里面,有多字段的处理,你研究下; - Set userIds = convertSet(list, MesDvRepairDO::getAcceptedUserId); - userIds.addAll(convertSet(list, MesDvRepairDO::getConfirmUserId)); - Map userMap = adminUserApi.getUserMap(userIds); + Map userMap = adminUserApi.getUserMap(convertSetByFlatMap(list, + repair -> Stream.of(repair.getAcceptedUserId(), repair.getConfirmUserId()))); // 2. 拼接 VO return BeanUtils.toBean(list, MesDvRepairRespVO.class, vo -> { MapUtils.findAndThen(machineryMap, vo.getMachineryId(), machinery -> vo diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java index 633e830..58fb633 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java @@ -23,6 +23,9 @@ public class MesDvRepairPageReqVO extends PageParam { @Schema(description = "维修工单名称", example = "注塑机维修") private String name; + @Schema(description = "维修结果", example = "1") + private Integer result; + @Schema(description = "状态", example = "10") private Integer status; 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 1ca4f77..07d4efa 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 @@ -52,10 +52,6 @@ public class MesDvRepairSaveReqVO { @Schema(description = "来源单据编码", example = "DOC001") private String sourceDocCode; - // TODO @AI:这个字段,不允许提交 - @Schema(description = "状态", example = "10") - private Integer status; - @Schema(description = "备注", example = "测试备注") private String remark; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordDO.java index a4de3c2..555b6b5 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordDO.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.dv.maintenrecord; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dv.checkplan.MesDvCheckPlanDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dv.machinery.MesDvMachineryDO; +import cn.iocoder.yudao.module.mes.enums.dv.MesDvMaintenRecordStatusEnum; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -52,11 +53,10 @@ public class MesDvMaintenRecordDO extends BaseDO { * 关联 AdminUserDO#getId() */ private Long userId; - // TODO @AI:搞个枚举类,关联下; - // TODO @AI:mes_mainten_record_status,需要在 dict contants 美剧侠,然后 @关联下; /** * 状态 * + * 枚举 {@link MesDvMaintenRecordStatusEnum} * 字典类型 mes_mainten_record_status */ private Integer status; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordLineDO.java index 2dd68fb..224902d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordLineDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordLineDO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.dv.maintenrecord; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dv.subject.MesDvSubjectDO; +import cn.iocoder.yudao.module.mes.enums.dv.MesDvMaintenStatusEnum; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -39,11 +40,10 @@ public class MesDvMaintenRecordLineDO extends BaseDO { * 关联 {@link MesDvSubjectDO#getId()} */ private Long subjectId; - // TODO @AI:搞个枚举类,关联下; - // TODO @AI:mes_mainten_status,需要在 dict contants 美剧侠,然后 @关联下; /** * 保养结果 * + * 枚举 {@link MesDvMaintenStatusEnum} * 字典类型 mes_mainten_status */ private Integer status; 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 0495bec..3d46aa8 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 @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dv.machinery.MesDvMachineryDO; +import cn.iocoder.yudao.module.mes.enums.dv.MesDvRepairResultEnum; +import cn.iocoder.yudao.module.mes.enums.dv.MesDvRepairStatusEnum; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -55,11 +57,10 @@ public class MesDvRepairDO extends BaseDO { * 验收日期 */ private LocalDateTime confirmDate; - // TODO @AI:枚举类; - // TODO @AI:字典,需要在 dict constants; /** * 维修结果 * + * 枚举 {@link MesDvRepairResultEnum} * 字典类型 mes_dv_repair_result */ private Integer result; @@ -88,11 +89,10 @@ public class MesDvRepairDO extends BaseDO { * 来源单据编码 */ private String sourceDocCode; - // TODO @AI:枚举类; - // TODO @AI:字典,需要在 dict constants; /** * 状态 * + * 枚举 {@link MesDvRepairStatusEnum} * 字典类型 mes_dv_repair_status */ private Integer status; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java index d96dfc3..2917686 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java @@ -19,6 +19,7 @@ public interface MesDvRepairMapper extends BaseMapperX { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(MesDvRepairDO::getCode, reqVO.getCode()) .likeIfPresent(MesDvRepairDO::getName, reqVO.getName()) + .eqIfPresent(MesDvRepairDO::getResult, reqVO.getResult()) .eqIfPresent(MesDvRepairDO::getStatus, reqVO.getStatus()) .betweenIfPresent(MesDvRepairDO::getRequireDate, reqVO.getRequireDate()) .orderByDesc(MesDvRepairDO::getId)); 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 3e5cb90..166357d 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 @@ -137,11 +137,14 @@ public interface ErrorCodeConstants { // ========== MES 设备管理-维修工单(1-040-303-000) ========== ErrorCode DV_REPAIR_NOT_EXISTS = new ErrorCode(1_040_303_000, "维修工单不存在"); + ErrorCode DV_REPAIR_NOT_DRAFT = new ErrorCode(1_040_303_001, "维修工单已确认,不允许修改或删除"); // ========== MES 设备管理-维修工单行(1-040-303-100) ========== ErrorCode DV_REPAIR_LINE_NOT_EXISTS = new ErrorCode(1_040_303_100, "维修工单行不存在"); // ========== MES 设备管理-保养记录(1-040-305-000) ========== ErrorCode MAINTEN_RECORD_NOT_EXISTS = new ErrorCode(1_040_305_000, "设备保养记录不存在"); + ErrorCode MAINTEN_RECORD_NOT_DRAFT = new ErrorCode(1_040_305_001, "设备保养记录已提交,不允许修改或删除"); + ErrorCode MAINTEN_RECORD_NO_LINE = new ErrorCode(1_040_305_002, "提交保养记录时,至少需要一条保养项目"); // ========== MES 设备管理-保养记录明细(1-040-305-100) ========== ErrorCode MAINTEN_RECORD_LINE_NOT_EXISTS = new ErrorCode(1_040_305_100, "设备保养记录明细不存在"); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvMaintenStatusEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvMaintenStatusEnum.java new file mode 100644 index 0000000..6b4ba22 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvMaintenStatusEnum.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.mes.enums.dv; + +import cn.iocoder.yudao.framework.common.core.ArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * MES 设备保养明细结果枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum MesDvMaintenStatusEnum implements ArrayValuable { + + NORMAL(1, "正常"), + ABNORMAL(2, "异常"); + + public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesDvMaintenStatusEnum::getStatus).toArray(Integer[]::new); + + /** + * 状态值 + */ + private final Integer status; + /** + * 状态名 + */ + private final String name; + + @Override + public Integer[] array() { + return ARRAYS; + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvRepairResultEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvRepairResultEnum.java new file mode 100644 index 0000000..8e06259 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvRepairResultEnum.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.mes.enums.dv; + +import cn.iocoder.yudao.framework.common.core.ArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * MES 维修结果枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum MesDvRepairResultEnum implements ArrayValuable { + + PASS(1, "通过"), + FAIL(2, "不通过"); + + public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesDvRepairResultEnum::getResult).toArray(Integer[]::new); + + /** + * 结果值 + */ + private final Integer result; + /** + * 结果名 + */ + private final String name; + + @Override + public Integer[] array() { + return ARRAYS; + } + +} 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 new file mode 100644 index 0000000..b962070 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvRepairStatusEnum.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.mes.enums.dv; + +import cn.iocoder.yudao.framework.common.core.ArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * MES 维修工单状态枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum MesDvRepairStatusEnum implements ArrayValuable { + + DRAFT(10, "草稿"), + CONFIRMED(20, "已确认"); + + public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesDvRepairStatusEnum::getStatus).toArray(Integer[]::new); + + /** + * 状态值 + */ + private final Integer status; + /** + * 状态名 + */ + private final String name; + + @Override + public Integer[] array() { + return ARRAYS; + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordLineServiceImpl.java index e1af013..ef0547b 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordLineServiceImpl.java @@ -29,7 +29,7 @@ public class MesDvMaintenRecordLineServiceImpl implements MesDvMaintenRecordLine @Resource @Lazy - private MesDvMaintenRecordService maintenRecordService; + private MesDvMaintenRecordServiceImpl maintenRecordService; @Resource private MesDvSubjectService subjectService; @@ -37,7 +37,6 @@ public class MesDvMaintenRecordLineServiceImpl implements MesDvMaintenRecordLine public Long createMaintenRecordLine(MesDvMaintenRecordLineSaveReqVO createReqVO) { // 1. 校验关联数据 validateMaintenRecordLineRelation(createReqVO); - // TODO @AI:已提交时,不允许编辑(最好对方提供一个通用方法) // 2. 插入 MesDvMaintenRecordLineDO maintenRecordLine = BeanUtils.toBean(createReqVO, MesDvMaintenRecordLineDO.class); @@ -59,25 +58,28 @@ public class MesDvMaintenRecordLineServiceImpl implements MesDvMaintenRecordLine @Override public void deleteMaintenRecordLine(Long id) { - // 1. 校验存在 - validateMaintenRecordLineExists(id); - // TODO @AI:已提交时,不允许删除;(最好对方提供一个通用方法) + // 1.1 校验存在 + MesDvMaintenRecordLineDO line = validateMaintenRecordLineExists(id); + // 1.2 校验保养记录为草稿状态 + maintenRecordService.validateMaintenRecordDraft(line.getRecordId()); // 2. 删除 maintenRecordLineMapper.deleteById(id); } private void validateMaintenRecordLineRelation(MesDvMaintenRecordLineSaveReqVO reqVO) { - // 校验设备保养记录是否存在 - maintenRecordService.validateMaintenRecordExists(reqVO.getRecordId()); + // 校验保养记录为草稿状态 + maintenRecordService.validateMaintenRecordDraft(reqVO.getRecordId()); // 校验保养项目是否存在 subjectService.validateSubjectExists(reqVO.getSubjectId()); } - private void validateMaintenRecordLineExists(Long id) { + private MesDvMaintenRecordLineDO validateMaintenRecordLineExists(Long id) { + MesDvMaintenRecordLineDO maintenRecordLine = maintenRecordLineMapper.selectById(id); if (maintenRecordLineMapper.selectById(id) == null) { throw exception(MAINTEN_RECORD_LINE_NOT_EXISTS); } + return maintenRecordLine; } @Override @@ -90,4 +92,4 @@ public class MesDvMaintenRecordLineServiceImpl implements MesDvMaintenRecordLine return maintenRecordLineMapper.selectPage(pageReqVO); } -} \ No newline at end of file +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordService.java index 20c04f0..20500ca 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordService.java @@ -30,6 +30,13 @@ public interface MesDvMaintenRecordService { void updateMaintenRecord(@Valid MesDvMaintenRecordSaveReqVO updateReqVO); /** + * 提交设备保养记录(草稿→已提交) + * + * @param id 编号 + */ + void submitMaintenRecord(Long id); + + /** * 删除设备保养记录 * * @param id 编号 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordServiceImpl.java index 89e3ca3..e4be7c3 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordServiceImpl.java @@ -1,12 +1,16 @@ package cn.iocoder.yudao.module.mes.service.dv.maintenrecord; +import cn.hutool.core.collection.CollUtil; +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.dv.maintenrecord.vo.MesDvMaintenRecordPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.dv.maintenrecord.vo.MesDvMaintenRecordSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.dv.maintenrecord.MesDvMaintenRecordDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.maintenrecord.MesDvMaintenRecordLineDO; import cn.iocoder.yudao.module.mes.dal.mysql.dv.maintenrecord.MesDvMaintenRecordLineMapper; import cn.iocoder.yudao.module.mes.dal.mysql.dv.maintenrecord.MesDvMaintenRecordMapper; +import cn.iocoder.yudao.module.mes.enums.dv.MesDvMaintenRecordStatusEnum; import cn.iocoder.yudao.module.mes.service.dv.checkplan.MesDvCheckPlanService; import cn.iocoder.yudao.module.mes.service.dv.machinery.MesDvMachineryService; import jakarta.annotation.Resource; @@ -14,6 +18,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.util.List; + import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; @@ -42,31 +48,45 @@ public class MesDvMaintenRecordServiceImpl implements MesDvMaintenRecordService // 2. 插入 MesDvMaintenRecordDO maintenRecord = BeanUtils.toBean(createReqVO, MesDvMaintenRecordDO.class); - // TODO @AI:设置下默认状态; + maintenRecord.setStatus(MesDvMaintenRecordStatusEnum.PREPARE.getStatus()); maintenRecordMapper.insert(maintenRecord); return maintenRecord.getId(); } @Override public void updateMaintenRecord(MesDvMaintenRecordSaveReqVO updateReqVO) { - // 1.1 校验存在 - validateMaintenRecordExists(updateReqVO.getId()); + // 1.1 校验存在,且状态为草稿 + validateMaintenRecordDraft(updateReqVO.getId()); // 1.2 校验关联数据 validateMaintenRecordRelation(updateReqVO); - // TODO @AI:已提交时,不允许编辑 // 2. 更新 MesDvMaintenRecordDO updateObj = BeanUtils.toBean(updateReqVO, MesDvMaintenRecordDO.class); - // TODO 设置为空,避免更新; + maintenRecordMapper.updateById(updateObj); + } + + @Override + public void submitMaintenRecord(Long id) { + // 1.1 校验状态为草稿 + validateMaintenRecordDraft(id); + // 1.2 校验至少有一条明细 + List lines = maintenRecordLineMapper.selectListByRecordId(id); + if (CollUtil.isEmpty(lines)) { + throw exception(MAINTEN_RECORD_NO_LINE); + } + + // 2. 状态改为已提交 + MesDvMaintenRecordDO updateObj = new MesDvMaintenRecordDO(); + updateObj.setId(id); + updateObj.setStatus(MesDvMaintenRecordStatusEnum.SUBMITTED.getStatus()); maintenRecordMapper.updateById(updateObj); } @Override @Transactional(rollbackFor = Exception.class) public void deleteMaintenRecord(Long id) { - // 校验存在 - validateMaintenRecordExists(id); - // TODO @AI:已提交时,不允许删除 + // 校验存在,且状态为草稿 + validateMaintenRecordDraft(id); // 删除 maintenRecordMapper.deleteById(id); @@ -90,6 +110,23 @@ public class MesDvMaintenRecordServiceImpl implements MesDvMaintenRecordService } } + /** + * 校验设备保养记录是否为草稿状态 + * + * @param id 编号 + * @return 保养记录 + */ + public MesDvMaintenRecordDO validateMaintenRecordDraft(Long id) { + MesDvMaintenRecordDO record = maintenRecordMapper.selectById(id); + if (record == null) { + throw exception(MAINTEN_RECORD_NOT_EXISTS); + } + if (ObjUtil.notEqual(MesDvMaintenRecordStatusEnum.PREPARE.getStatus(), record.getStatus())) { + throw exception(MAINTEN_RECORD_NOT_DRAFT); + } + return record; + } + @Override public MesDvMaintenRecordDO getMaintenRecord(Long id) { return maintenRecordMapper.selectById(id); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java index 901cbae..c7aac33 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java @@ -29,15 +29,16 @@ public class MesDvRepairLineServiceImpl implements MesDvRepairLineService { @Resource @Lazy - private MesDvRepairService repairService; + private MesDvRepairServiceImpl repairService; @Resource private MesDvSubjectService subjectService; @Override public Long createRepairLine(MesDvRepairLineSaveReqVO createReqVO) { - // 1. 校验关联数据 + // 1.1 校验关联数据 validateRepairLineRelation(createReqVO); - // TODO @AI:关联数据的状态的校验(最好对方提供的方法) + // 1.2 校验维修工单为草稿状态 + repairService.validateRepairDraft(createReqVO.getRepairId()); // 2. 插入 MesDvRepairLineDO repairLine = BeanUtils.toBean(createReqVO, MesDvRepairLineDO.class); @@ -51,7 +52,8 @@ public class MesDvRepairLineServiceImpl implements MesDvRepairLineService { validateRepairLineExists(updateReqVO.getId()); // 1.2 校验关联数据 validateRepairLineRelation(updateReqVO); - // TODO @AI:关联数据的状态的校验(最好对方提供的方法) + // 1.3 校验维修工单为草稿状态 + repairService.validateRepairDraft(updateReqVO.getRepairId()); // 2. 更新 MesDvRepairLineDO updateObj = BeanUtils.toBean(updateReqVO, MesDvRepairLineDO.class); @@ -60,11 +62,15 @@ public class MesDvRepairLineServiceImpl implements MesDvRepairLineService { @Override public void deleteRepairLine(Long id) { - // 校验存在 - validateRepairLineExists(id); - // TODO @AI:关联数据的状态的校验(最好对方提供的方法) + // 1.1 校验存在 + MesDvRepairLineDO line = repairLineMapper.selectById(id); + if (line == null) { + throw exception(DV_REPAIR_LINE_NOT_EXISTS); + } + // 1.2 校验维修工单为草稿状态 + repairService.validateRepairDraft(line.getRepairId()); - // 删除 + // 2. 删除 repairLineMapper.deleteById(id); } 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 8f67f38..44c30a4 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 @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.mes.service.dv.repair; +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.dv.repair.vo.MesDvRepairPageReqVO; @@ -7,6 +8,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairSave import cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair.MesDvRepairDO; import cn.iocoder.yudao.module.mes.dal.mysql.dv.repair.MesDvRepairLineMapper; import cn.iocoder.yudao.module.mes.dal.mysql.dv.repair.MesDvRepairMapper; +import cn.iocoder.yudao.module.mes.enums.dv.MesDvRepairStatusEnum; import cn.iocoder.yudao.module.mes.service.dv.machinery.MesDvMachineryService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -39,29 +41,28 @@ public class MesDvRepairServiceImpl implements MesDvRepairService { // 2. 插入 MesDvRepairDO repair = BeanUtils.toBean(createReqVO, MesDvRepairDO.class); - // TODO @AI:status + repair.setStatus(MesDvRepairStatusEnum.DRAFT.getStatus()); repairMapper.insert(repair); return repair.getId(); } @Override public void updateRepair(MesDvRepairSaveReqVO updateReqVO) { - // 1.1 校验存在 - validateRepairExists(updateReqVO.getId()); + // 1.1 校验存在,且状态为草稿 + validateRepairDraft(updateReqVO.getId()); // 1.2 校验关联数据 validateRepairRelation(updateReqVO); // 2. 更新 MesDvRepairDO updateObj = BeanUtils.toBean(updateReqVO, MesDvRepairDO.class); - // TODO @AI:status repairMapper.updateById(updateObj); } @Override @Transactional(rollbackFor = Exception.class) public void deleteRepair(Long id) { - // 校验存在 - validateRepairExists(id); + // 校验存在,且状态为草稿 + validateRepairDraft(id); // 删除 repairMapper.deleteById(id); @@ -81,6 +82,23 @@ public class MesDvRepairServiceImpl implements MesDvRepairService { } } + /** + * 校验维修工单是否为草稿状态 + * + * @param id 编号 + * @return 维修工单 + */ + public MesDvRepairDO validateRepairDraft(Long id) { + MesDvRepairDO repair = repairMapper.selectById(id); + if (repair == null) { + throw exception(DV_REPAIR_NOT_EXISTS); + } + if (ObjUtil.notEqual(MesDvRepairStatusEnum.DRAFT.getStatus(), repair.getStatus())) { + throw exception(DV_REPAIR_NOT_DRAFT); + } + return repair; + } + @Override public MesDvRepairDO getRepair(Long id) { return repairMapper.selectById(id);