From 25f611074def1ee2367a1808850e2be4bf8ca0c2 Mon Sep 17 00:00:00 2001 From: HuangHuiKang Date: Wed, 29 Jul 2026 11:12:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=8F=8A=E6=A8=A1=E5=85=B7=E7=BB=B4=E4=BF=AE?= =?UTF-8?q?=E5=8D=95=E9=AA=8C=E6=94=B6=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/MoldRecordStatusEnum.java | 7 +- .../vo/MoldRepairAcceptanceHistoryRespVO.java | 61 ++++++++++++++ .../vo/MoldRepairAcceptanceReqVO.java | 27 +++++++ .../moldrepair/vo/MoldRepairPageReqVO.java | 2 +- .../moldrepair/vo/MoldRepairPageRespVO.java | 7 +- .../admin/moldrepair/vo/MoldRepairRespVO.java | 7 +- .../moldrepair/vo/MoldRepairUpdateReqVO.java | 3 + .../MoldRepairAcceptanceHistoryDO.java | 80 ++++++++++++++++++ .../MoldRepairAcceptanceHistoryMapper.java | 22 +++++ .../module/mes/enums/ErrorCodeConstants.java | 1 + .../admin/dvrepair/DvRepairController.java | 8 ++ .../dvrepair/enums/MoldRecordStatusEnum.java | 7 +- .../dvrepair/enums/RepairStatusEnum.java | 9 ++- .../vo/DvRepairAcceptanceHistoryRespVO.java | 61 ++++++++++++++ .../dvrepair/vo/DvRepairAcceptanceReqVO.java | 27 +++++++ .../admin/dvrepair/vo/DvRepairPageReqVO.java | 2 +- .../admin/dvrepair/vo/DvRepairPageRespVO.java | 7 +- .../admin/dvrepair/vo/DvRepairRespVO.java | 5 +- .../admin/dvrepair/vo/DvRepirUpdateReqVO.java | 3 + .../moldrepair/MoldRepairController.java | 11 ++- .../dvrepair/DvRepairAcceptanceHistoryDO.java | 81 +++++++++++++++++++ .../DvRepairAcceptanceHistoryMapper.java | 20 +++++ .../mes/service/dvrepair/DvRepairService.java | 4 + .../service/dvrepair/DvRepairServiceImpl.java | 74 ++++++++++++++++- .../service/moldrepair/MoldRepairService.java | 4 + .../moldrepair/MoldRepairServiceImpl.java | 76 ++++++++++++++++- 26 files changed, 591 insertions(+), 25 deletions(-) create mode 100644 yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairAcceptanceHistoryRespVO.java create mode 100644 yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairAcceptanceReqVO.java create mode 100644 yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/moldrepair/MoldRepairAcceptanceHistoryDO.java create mode 100644 yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/moldrepair/MoldRepairAcceptanceHistoryMapper.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairAcceptanceHistoryRespVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairAcceptanceReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvrepair/DvRepairAcceptanceHistoryDO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvrepair/DvRepairAcceptanceHistoryMapper.java diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/enums/MoldRecordStatusEnum.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/enums/MoldRecordStatusEnum.java index 00dae91ff..63a5f2cad 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/enums/MoldRecordStatusEnum.java +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/enums/MoldRecordStatusEnum.java @@ -12,9 +12,10 @@ import lombok.Getter; @AllArgsConstructor public enum MoldRecordStatusEnum { - PENDING(0, "待完成"), - COMPLETED(1, "已完成"), - REJECTED(2, "已驳回"); + PENDING(0, "待处理"), + COMPLETED(1, "验收通过"), + REJECTED(2, "已驳回"), + PENDING_ACCEPTANCE(3, "待验收"); @JsonValue private final Integer code; diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairAcceptanceHistoryRespVO.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairAcceptanceHistoryRespVO.java new file mode 100644 index 000000000..3ef6b4d02 --- /dev/null +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairAcceptanceHistoryRespVO.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 模具维修验收历史 Response VO") +@Data +public class MoldRepairAcceptanceHistoryRespVO { + + @Schema(description = "ID", example = "1024") + private Long id; + + @Schema(description = "维修单 ID", example = "27809") + private Long repairId; + + @Schema(description = "维修结果") + private String repairResult; + + @Schema(description = "完成日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime finishDate; + + @Schema(description = "验收日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime confirmDate; + + @Schema(description = "验收人员") + private String confirmBy; + + @Schema(description = "单据状态 1-验收通过 2-已驳回", example = "1") + private Integer status; + + @Schema(description = "驳回原因") + private String rejectReason; + + @Schema(description = "停机时长") + private String shutdownDuration; + + @Schema(description = "故障原因") + private String faultReason; + + @Schema(description = "处理措施") + private String treatmentMeasures; + + @Schema(description = "更换配件") + private String replacementParts; + + @Schema(description = "维修总结 / 维修内容") + private String repairSummary; + + @Schema(description = "附件 / 维修后图片,多个逗号分隔") + private String repairedImages; + + @Schema(description = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairAcceptanceReqVO.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairAcceptanceReqVO.java new file mode 100644 index 000000000..fc1e461a6 --- /dev/null +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairAcceptanceReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 模具维修验收 Request VO") +@Data +public class MoldRepairAcceptanceReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27809") + @NotNull(message = "维修单 ID 不能为空") + private Long id; + + @Schema(description = "验收人员", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "验收人员不能为空") + private String confirmBy; + + @Schema(description = "单据状态 1-验收通过 2-已驳回", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "单据状态不能为空") + private Integer status; + + @Schema(description = "驳回原因") + private String rejectReason; + +} diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairPageReqVO.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairPageReqVO.java index a51b6b883..3c9defee2 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairPageReqVO.java +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairPageReqVO.java @@ -65,7 +65,7 @@ public class MoldRepairPageReqVO extends PageParam { @Schema(description = "验收人员") private String confirmBy; - @Schema(description = "单据状态0-待完成 1-已完成", example = "1") + @Schema(description = "单据状态 0-待处理 1-验收通过 2-已驳回 3-待验收", example = "1") private Integer status; @Schema(description = "备注") diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairPageRespVO.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairPageRespVO.java index a86f49db8..f553cde13 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairPageRespVO.java +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairPageRespVO.java @@ -18,15 +18,18 @@ public class MoldRepairPageRespVO { @Schema(description = "全部数量") private Long allCount; - @Schema(description = "待完成数量 (status=0)") + @Schema(description = "待处理数量 (status=0)") private Long pendingCount; - @Schema(description = "已完成数量 (status=1)") + @Schema(description = "验收通过数量 (status=1)") private Long finishedCount; @Schema(description = "已驳回数量 (status=2)") private Long rejectedCount; + @Schema(description = "待验收数量(status=3)") + private Long pendingAcceptanceCount; + @Schema(description = "待维修数量 (repairStatus=0)") private Long pendingRepairCount; diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairRespVO.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairRespVO.java index 8d4a32467..fcc9e44b2 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairRespVO.java +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairRespVO.java @@ -9,6 +9,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; @Schema(description = "管理后台 - 模具维修记录 Response VO") @Data @@ -87,12 +88,12 @@ public class MoldRepairRespVO { private String confirmBy; @Schema(description = "单据状态", example = "1") -// @ExcelProperty(value = "单据状态 0-待完成 1-已完成") +// @ExcelProperty(value = "单据状态 0-待处理 1-验收通过 2-已驳回 3-待验收") // @DictFormat("mes_mold_record_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 private Integer status; @Schema(description = "单据状态", example = "1") - @ExcelProperty(value = "单据状态 0-待完成 1-已完成") + @ExcelProperty(value = "单据状态 0-待处理 1-验收通过 2-已驳回 3-待验收") @DictFormat("mes_mold_record_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 private String statusName; @@ -175,5 +176,7 @@ public class MoldRepairRespVO { @ExcelProperty("维修后图片") private String repairedImages; + @Schema(description = "验收历史记录") + private List acceptanceHistoryList; } diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairUpdateReqVO.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairUpdateReqVO.java index 943bd74a4..c808aac8e 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairUpdateReqVO.java +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/controller/admin/moldrepair/vo/MoldRepairUpdateReqVO.java @@ -42,6 +42,9 @@ public class MoldRepairUpdateReqVO { @Schema(description = "备注") private String remark; + @Schema(description = "单据状态 0-待处理 1-验收通过 2-已驳回 3-待验收") + private Integer status; + @Schema(description = "子列表") @NotNull(message = "子列表不能为空") private List updateReqVOList; diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/moldrepair/MoldRepairAcceptanceHistoryDO.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/moldrepair/MoldRepairAcceptanceHistoryDO.java new file mode 100644 index 000000000..5905035b7 --- /dev/null +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/moldrepair/MoldRepairAcceptanceHistoryDO.java @@ -0,0 +1,80 @@ +package cn.iocoder.yudao.module.common.dal.dataobject.moldrepair; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.time.LocalDateTime; + +/** + * 模具维修验收历史 DO + */ +@TableName("mes_mold_repair_acceptance_history") +@KeySequence("mes_mold_repair_acceptance_history_seq") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MoldRepairAcceptanceHistoryDO extends BaseDO { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 维修单 ID + */ + private Long repairId; + /** + * 维修结果 + */ + private String repairResult; + /** + * 完成日期 + */ + private LocalDateTime finishDate; + /** + * 验收日期 + */ + private LocalDateTime confirmDate; + /** + * 验收人员 + */ + private String confirmBy; + /** + * 单据状态 1-验收通过 2-已驳回 + */ + private Integer status; + /** + * 驳回原因 + */ + private String rejectReason; + /** + * 停机时长 + */ + private String shutdownDuration; + /** + * 故障原因 + */ + private String faultReason; + /** + * 处理措施 + */ + private String treatmentMeasures; + /** + * 更换配件 + */ + private String replacementParts; + /** + * 维修总结 / 维修内容 + */ + private String repairSummary; + /** + * 附件 / 维修后图片 + */ + private String repairedImages; + +} diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/moldrepair/MoldRepairAcceptanceHistoryMapper.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/moldrepair/MoldRepairAcceptanceHistoryMapper.java new file mode 100644 index 000000000..6fa00fc18 --- /dev/null +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/moldrepair/MoldRepairAcceptanceHistoryMapper.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.common.dal.mysql.moldrepair; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.common.dal.dataobject.moldrepair.MoldRepairAcceptanceHistoryDO; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Mapper +@Repository +public interface MoldRepairAcceptanceHistoryMapper extends BaseMapperX { + + default List selectListByRepairId(Long repairId) { + return selectList(new LambdaQueryWrapperX() + .eq(MoldRepairAcceptanceHistoryDO::getRepairId, repairId) + .orderByDesc(MoldRepairAcceptanceHistoryDO::getCreateTime) + .orderByDesc(MoldRepairAcceptanceHistoryDO::getId)); + } + +} diff --git a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index 355d2beb9..c3d344d41 100644 --- a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -125,6 +125,7 @@ public interface ErrorCodeConstants { ErrorCode DV_REPAIR_CODE_EXISTS = new ErrorCode(5_0087, "设备维修记录编码已存在"); ErrorCode DV_REPAIR_LINE_NOT_EXISTS = new ErrorCode(5_0088, "设备维修子表记录不存在"); ErrorCode DV_REPAIR_LINE_ID_NOT_EXISTS = new ErrorCode(5_0088, "设备维修子表记录Id为空"); + ErrorCode REPAIR_ACCEPTANCE_STATUS_INVALID = new ErrorCode(5_0096, "验收状态只能为验收通过或已驳回"); //====================================== 检验记录相关 5_0090================================================= diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/DvRepairController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/DvRepairController.java index c55459c04..9dbea2ee0 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/DvRepairController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/DvRepairController.java @@ -87,6 +87,7 @@ public class DvRepairController { public CommonResult getDvRepair(@RequestParam("id") Long id) { DvRepairDO dvRepair = dvRepairService.getDvRepair(id); DvRepairRespVO respVO = BeanUtils.toBean(dvRepair, DvRepairRespVO.class); + respVO.setAcceptanceHistoryList(dvRepairService.getAcceptanceHistoryList(id)); fillAcceptedBy(respVO); return success(respVO); } @@ -181,6 +182,13 @@ public class DvRepairController { return success(true); } + @PutMapping("/acceptance") + @Operation(summary = "验收设备维修记录") + public CommonResult acceptDvRepair(@Valid @RequestBody DvRepairAcceptanceReqVO acceptanceReqVO) { + dvRepairService.acceptDvRepair(acceptanceReqVO); + return success(true); + } + @PutMapping("/reject") @Operation(summary = "驳回设备维修记录") @PreAuthorize("@ss.hasPermission('mes:dv-repair:update')") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/enums/MoldRecordStatusEnum.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/enums/MoldRecordStatusEnum.java index 6c5e8845f..7cded8461 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/enums/MoldRecordStatusEnum.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/enums/MoldRecordStatusEnum.java @@ -12,9 +12,10 @@ import lombok.Getter; @AllArgsConstructor public enum MoldRecordStatusEnum { - PENDING(0, "待完成"), - COMPLETED(1, "已完成"), - REJECTED(2, "已驳回"); + PENDING(0, "待处理"), + COMPLETED(1, "验收通过"), + REJECTED(2, "已驳回"), + PENDING_ACCEPTANCE(3, "待验收"); @JsonValue private final Integer code; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/enums/RepairStatusEnum.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/enums/RepairStatusEnum.java index 0412a59b4..5a131c0f1 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/enums/RepairStatusEnum.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/enums/RepairStatusEnum.java @@ -10,14 +10,15 @@ import java.util.stream.Collectors; /** * 状态枚举 - * 0-待完成 1-已完成 + * 0-待处理 1-验收通过 2-已驳回 3-待验收 */ @Getter public enum RepairStatusEnum { - PENDING(0, "待完成"), - COMPLETED(1, "已完成"), - REJECTED(2, "已驳回"); + PENDING(0, "待处理"), + COMPLETED(1, "验收通过"), + REJECTED(2, "已驳回"), + PENDING_ACCEPTANCE(3, "待验收"); private final Integer code; private final String description; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairAcceptanceHistoryRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairAcceptanceHistoryRespVO.java new file mode 100644 index 000000000..a49d78ad3 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairAcceptanceHistoryRespVO.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 设备维修验收历史 Response VO") +@Data +public class DvRepairAcceptanceHistoryRespVO { + + @Schema(description = "ID", example = "1024") + private Long id; + + @Schema(description = "维修单 ID", example = "27809") + private Long repairId; + + @Schema(description = "维修结果") + private String repairResult; + + @Schema(description = "完成日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime finishDate; + + @Schema(description = "验收日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime confirmDate; + + @Schema(description = "验收人员") + private String confirmBy; + + @Schema(description = "单据状态 1-验收通过 2-已驳回", example = "1") + private Integer status; + + @Schema(description = "驳回原因") + private String rejectReason; + + @Schema(description = "停机时长") + private String downtimeDuration; + + @Schema(description = "故障原因") + private String faultReason; + + @Schema(description = "处理措施") + private String handlingMeasures; + + @Schema(description = "更换配件") + private String replacementParts; + + @Schema(description = "维修总结 / 维修内容") + private String repairContent; + + @Schema(description = "附件 / 维修后图片,多个用逗号分隔") + private String repairedImages; + + @Schema(description = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairAcceptanceReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairAcceptanceReqVO.java new file mode 100644 index 000000000..1294d38c5 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairAcceptanceReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 设备维修验收 Request VO") +@Data +public class DvRepairAcceptanceReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27809") + @NotNull(message = "维修单 ID 不能为空") + private Long id; + + @Schema(description = "验收人员", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "验收人员不能为空") + private String confirmBy; + + @Schema(description = "单据状态 1-验收通过 2-已驳回", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "单据状态不能为空") + private Integer status; + + @Schema(description = "驳回原因") + private String rejectReason; + +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairPageReqVO.java index f2af0e182..689df8504 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairPageReqVO.java @@ -72,7 +72,7 @@ public class DvRepairPageReqVO extends PageParam { @Schema(description = "验收人员") private String confirmBy; - @Schema(description = "单据状态0-待完成 1-已完成", example = "1") + @Schema(description = "单据状态 0-待处理 1-验收通过 2-已驳回 3-待验收", example = "1") private Integer status; @Schema(description = "维修状态 0-待完成 1-通过 2-不通过", example = "1") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairPageRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairPageRespVO.java index e394f576e..be43d761b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairPageRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairPageRespVO.java @@ -18,15 +18,18 @@ public class DvRepairPageRespVO { @Schema(description = "全部数量") private Long allCount; - @Schema(description = "待完成数量 (status=0)") + @Schema(description = "待处理数量 (status=0)") private Long pendingCount; - @Schema(description = "已完成数量 (status=1)") + @Schema(description = "验收通过数量 (status=1)") private Long finishedCount; @Schema(description = "已驳回数量 (status=2)") private Long rejectedCount; + @Schema(description = "待验收数量(status=3)") + private Long pendingAcceptanceCount; + @Schema(description = "待维修数量 (repairStatus=0)") private Long pendingRepairCount; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairRespVO.java index f29255224..28ca8c3d5 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairRespVO.java @@ -142,7 +142,7 @@ public class DvRepairRespVO { @ExcelProperty("验收人员") private String confirmBy; - @Schema(description = "单据状态 0-待完成 1-已完成", example = "1") + @Schema(description = "单据状态 0-待处理 1-验收通过 2-已驳回 3-待验收", example = "1") private Integer status; @Schema(description = "单据状态", example = "1") @@ -185,4 +185,7 @@ public class DvRepairRespVO { @Schema(description = "维修状态") @ExcelProperty("维修状态") private String repairStatusName; + + @Schema(description = "验收历史记录") + private List acceptanceHistoryList; } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepirUpdateReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepirUpdateReqVO.java index 4a0cd3d49..65c323854 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepirUpdateReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepirUpdateReqVO.java @@ -77,6 +77,9 @@ public class DvRepirUpdateReqVO { @Schema(description = "维修结果 0-待维修 1-通过 2-不通过") private Integer repairStatus; + @Schema(description = "单据状态 0-待处理 1-验收通过 2-已驳回 3-待验收") + private Integer status; + @Schema(description = "子列表") @NotNull(message = "子列表不能为空") private List updateReqVOList; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/MoldRepairController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/MoldRepairController.java index 386746ae6..e966de947 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/MoldRepairController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/MoldRepairController.java @@ -85,7 +85,9 @@ public class MoldRepairController { // @PreAuthorize("@ss.hasPermission('mes:mold-repair:query')") public CommonResult getMoldRepair(@RequestParam("id") Long id) { MoldRepairDO moldRepair = moldRepairService.getMoldRepair(id); - return success(BeanUtils.toBean(moldRepair, MoldRepairRespVO.class)); + MoldRepairRespVO respVO = BeanUtils.toBean(moldRepair, MoldRepairRespVO.class); + respVO.setAcceptanceHistoryList(moldRepairService.getAcceptanceHistoryList(id)); + return success(respVO); } @GetMapping("/page") @@ -172,6 +174,13 @@ public class MoldRepairController { return success(true); } + @PutMapping("/acceptance") + @Operation(summary = "验收模具维修记录") + public CommonResult acceptMoldRepair(@Valid @RequestBody MoldRepairAcceptanceReqVO acceptanceReqVO) { + moldRepairService.acceptMoldRepair(acceptanceReqVO); + return success(true); + } + @PutMapping("/reject") @Operation(summary = "驳回模具维修记录") @PreAuthorize("@ss.hasPermission('mes:mold-repair:update')") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvrepair/DvRepairAcceptanceHistoryDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvrepair/DvRepairAcceptanceHistoryDO.java new file mode 100644 index 000000000..9c2d529cb --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvrepair/DvRepairAcceptanceHistoryDO.java @@ -0,0 +1,81 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.time.LocalDateTime; + +/** + * 设备维修验收历史 DO + */ +@TableName("mes_dv_repair_acceptance_history") +@KeySequence("mes_dv_repair_acceptance_history_seq") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class DvRepairAcceptanceHistoryDO extends BaseDO { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 维修单 ID + */ + private Long repairId; + + /** + * 维修结果 + */ + private String repairResult; + /** + * 完成日期 + */ + private LocalDateTime finishDate; + /** + * 验收日期 + */ + private LocalDateTime confirmDate; + /** + * 验收人员 + */ + private String confirmBy; + /** + * 单据状态 1-验收通过 2-已驳回 + */ + private Integer status; + /** + * 驳回原因 + */ + private String rejectReason; + /** + * 停机时长 + */ + private String downtimeDuration; + /** + * 故障原因 + */ + private String faultReason; + /** + * 处理措施 + */ + private String handlingMeasures; + /** + * 更换配件 + */ + private String replacementParts; + /** + * 维修总结 / 维修内容 + */ + private String repairContent; + /** + * 附件 / 维修后图片 + */ + private String repairedImages; + +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvrepair/DvRepairAcceptanceHistoryMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvrepair/DvRepairAcceptanceHistoryMapper.java new file mode 100644 index 000000000..da76abd4a --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvrepair/DvRepairAcceptanceHistoryMapper.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.dvrepair; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairAcceptanceHistoryDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface DvRepairAcceptanceHistoryMapper extends BaseMapperX { + + default List selectListByRepairId(Long repairId) { + return selectList(new LambdaQueryWrapperX() + .eq(DvRepairAcceptanceHistoryDO::getRepairId, repairId) + .orderByDesc(DvRepairAcceptanceHistoryDO::getCreateTime) + .orderByDesc(DvRepairAcceptanceHistoryDO::getId)); + } + +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairService.java index 943db20b3..e7a08a904 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairService.java @@ -76,6 +76,10 @@ public interface DvRepairService { void updateDvRepairStatus(@Valid DvRepirUpdateReqVO updateReqVO); + void acceptDvRepair(@Valid DvRepairAcceptanceReqVO acceptanceReqVO); + + List getAcceptanceHistoryList(Long repairId); + void rejectDvRepair(@Valid DvRepairRejectReqVO rejectReqVO); List getRepairListByDeviceId(Long deviceId, String code, String startTime, String endTime, String ids); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImpl.java index 154a0ee3c..1f6d53761 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImpl.java @@ -12,9 +12,11 @@ import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.enums.RepairStatusE import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.*; import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.enums.JobResultEnum; import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairAcceptanceHistoryDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairLineDO; import cn.iocoder.yudao.module.mes.dal.mysql.deviceledger.DeviceLedgerMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairAcceptanceHistoryMapper; import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairLineMapper; import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairMapper; import cn.iocoder.yudao.module.mes.service.notify.MesNotifyMessageService; @@ -56,6 +58,8 @@ public class DvRepairServiceImpl implements DvRepairService { @Resource private DvRepairLineMapper dvRepairLineMapper; @Resource + private DvRepairAcceptanceHistoryMapper dvRepairAcceptanceHistoryMapper; + @Resource private MesNotifyMessageService mesNotifyMessageService; @@ -230,6 +234,7 @@ public class DvRepairServiceImpl implements DvRepairService { respVO.setPendingCount(allList.stream().filter(item -> item.getStatus() != null && item.getStatus() == 0).count()); respVO.setFinishedCount(allList.stream().filter(item -> item.getStatus() != null && item.getStatus() == 1).count()); respVO.setRejectedCount(allList.stream().filter(item -> RepairStatusEnum.REJECTED.getCode().equals(item.getStatus())).count()); + respVO.setPendingAcceptanceCount(allList.stream().filter(item -> RepairStatusEnum.PENDING_ACCEPTANCE.getCode().equals(item.getStatus())).count()); respVO.setPendingRepairCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 0).count()); respVO.setPassedCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 1).count()); respVO.setFailedCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 2).count()); @@ -349,13 +354,33 @@ public class DvRepairServiceImpl implements DvRepairService { dvRepairDO.setAcceptedBy(updateReqVO.getAcceptedBy()); dvRepairDO.setRemark(updateReqVO.getRemark()); dvRepairDO.setRepairStatus(updateReqVO.getRepairStatus()); - dvRepairDO.setStatus(RepairStatusEnum.COMPLETED.getCode()); + dvRepairDO.setStatus(updateReqVO.getStatus() != null ? updateReqVO.getStatus() : RepairStatusEnum.PENDING_ACCEPTANCE.getCode()); dvRepairMapper.updateById(dvRepairDO); // batchUpdateTicketResults(updateReqVO.getUpdateReqVOList()); } @Override + @Transactional(rollbackFor = Exception.class) + public void acceptDvRepair(DvRepairAcceptanceReqVO acceptanceReqVO) { + validateAcceptanceStatus(acceptanceReqVO.getStatus()); + DvRepairDO dvRepairDO = dvRepairMapper.selectById(acceptanceReqVO.getId()); + if (dvRepairDO == null) { + throw exception(DV_REPAIR_NOT_EXISTS); + } + applyAcceptance(dvRepairDO, acceptanceReqVO); + dvRepairMapper.updateById(dvRepairDO); + createAcceptanceHistory(dvRepairDO); + } + + @Override + public List getAcceptanceHistoryList(Long repairId) { + return BeanUtils.toBean(dvRepairAcceptanceHistoryMapper.selectListByRepairId(repairId), + DvRepairAcceptanceHistoryRespVO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) public void rejectDvRepair(DvRepairRejectReqVO rejectReqVO) { DvRepairDO dvRepairDO = dvRepairMapper.selectById(rejectReqVO.getId()); if (dvRepairDO == null) { @@ -369,6 +394,49 @@ public class DvRepairServiceImpl implements DvRepairService { dvRepairDO.setRejectBy(String.valueOf(loginUserId)); } dvRepairMapper.updateById(dvRepairDO); + createAcceptanceHistory(dvRepairDO); + } + + private void validateAcceptanceStatus(Integer status) { + if (!RepairStatusEnum.COMPLETED.getCode().equals(status) + && !RepairStatusEnum.REJECTED.getCode().equals(status)) { + throw exception(REPAIR_ACCEPTANCE_STATUS_INVALID); + } + } + + private void applyAcceptance(DvRepairDO dvRepairDO, DvRepairAcceptanceReqVO acceptanceReqVO) { + dvRepairDO.setConfirmBy(acceptanceReqVO.getConfirmBy()); + dvRepairDO.setStatus(acceptanceReqVO.getStatus()); + dvRepairDO.setRejectReason(acceptanceReqVO.getRejectReason()); + if (RepairStatusEnum.REJECTED.getCode().equals(acceptanceReqVO.getStatus())) { + dvRepairDO.setRejectTime(LocalDateTime.now()); + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + if (loginUserId != null) { + dvRepairDO.setRejectBy(String.valueOf(loginUserId)); + } + } else { + dvRepairDO.setRejectTime(null); + dvRepairDO.setRejectBy(null); + } + dvRepairDO.setConfirmDate(LocalDateTime.now()); + } + + private void createAcceptanceHistory(DvRepairDO dvRepairDO) { + DvRepairAcceptanceHistoryDO historyDO = new DvRepairAcceptanceHistoryDO(); + historyDO.setRepairId(dvRepairDO.getId()); + historyDO.setRepairResult(dvRepairDO.getRepairResult()); + historyDO.setFinishDate(dvRepairDO.getFinishDate()); + historyDO.setConfirmDate(dvRepairDO.getConfirmDate()); + historyDO.setConfirmBy(dvRepairDO.getConfirmBy()); + historyDO.setStatus(dvRepairDO.getStatus()); + historyDO.setRejectReason(dvRepairDO.getRejectReason()); + historyDO.setDowntimeDuration(dvRepairDO.getDowntimeDuration()); + historyDO.setFaultReason(dvRepairDO.getFaultReason()); + historyDO.setHandlingMeasures(dvRepairDO.getHandlingMeasures()); + historyDO.setReplacementParts(dvRepairDO.getReplacementParts()); + historyDO.setRepairContent(dvRepairDO.getRepairContent()); + historyDO.setRepairedImages(dvRepairDO.getRepairedImages()); + dvRepairAcceptanceHistoryMapper.insert(historyDO); } @Override @@ -552,8 +620,8 @@ public class DvRepairServiceImpl implements DvRepairService { if (dvRepairDO == null ){ throw exception(DV_REPAIR_NOT_EXISTS); } - //设置为已完成 - dvRepairDO.setStatus(JobResultEnum.PASS.getCode()); + // 设置为待验收 + dvRepairDO.setStatus(RepairStatusEnum.PENDING_ACCEPTANCE.getCode()); // 检查是否有不通过的 boolean hasFail = updateReqVOList.stream() .anyMatch(vo -> vo.getResult() != null && vo.getResult().equals(JobResultEnum.FAIL.getCode())); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairService.java index 8f2568706..636d53abb 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairService.java @@ -76,6 +76,10 @@ public interface MoldRepairService { void updateMoldRepairStatus(@Valid MoldRepairUpdateReqVO updateReqVO); + void acceptMoldRepair(@Valid MoldRepairAcceptanceReqVO acceptanceReqVO); + + List getAcceptanceHistoryList(Long repairId); + void rejectMoldRepair(@Valid MoldRepairRejectReqVO rejectReqVO); List getRepairListByMoldId(Long moldId, String code, String startTime, String endTime, String ids); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java index 5a8c84ca0..e7e4a7899 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java @@ -20,9 +20,13 @@ import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairP import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairSaveReqVO; import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairRespVO; import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairPageRespVO; +import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairAcceptanceReqVO; +import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairAcceptanceHistoryRespVO; import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.enums.JobResultEnum; +import cn.iocoder.yudao.module.common.dal.dataobject.moldrepair.MoldRepairAcceptanceHistoryDO; import cn.iocoder.yudao.module.common.dal.dataobject.moldrepair.MoldRepairDO; import cn.iocoder.yudao.module.common.dal.dataobject.moldrepair.MoldRepairLineDO; +import cn.iocoder.yudao.module.common.dal.mysql.moldrepair.MoldRepairAcceptanceHistoryMapper; import cn.iocoder.yudao.module.common.dal.mysql.moldrepair.MoldRepairLineMapper; import cn.iocoder.yudao.module.common.dal.mysql.moldrepair.MoldRepairMapper; import cn.iocoder.yudao.module.common.dal.mysql.mold.MoldMapper; @@ -71,6 +75,8 @@ public class MoldRepairServiceImpl implements MoldRepairService { @Resource private MoldRepairLineMapper moldRepairLineMapper; @Resource + private MoldRepairAcceptanceHistoryMapper moldRepairAcceptanceHistoryMapper; + @Resource private MoldBrandMapper moldBrandMapper; @Resource private AutoCodeUtil autoCodeUtil; @@ -199,6 +205,7 @@ public class MoldRepairServiceImpl implements MoldRepairService { respVO.setPendingCount(allList.stream().filter(item -> item.getStatus() != null && item.getStatus() == 0).count()); respVO.setFinishedCount(allList.stream().filter(item -> item.getStatus() != null && item.getStatus() == 1).count()); respVO.setRejectedCount(allList.stream().filter(item -> MoldRecordStatusEnum.REJECTED.getCode().equals(item.getStatus())).count()); + respVO.setPendingAcceptanceCount(allList.stream().filter(item -> MoldRecordStatusEnum.PENDING_ACCEPTANCE.getCode().equals(item.getStatus())).count()); respVO.setPendingRepairCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 0).count()); respVO.setPassedCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 1).count()); respVO.setFailedCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 2).count()); @@ -313,6 +320,7 @@ public class MoldRepairServiceImpl implements MoldRepairService { moldRepairDO.setFinishDate(updateReqVO.getFinishDate()); moldRepairDO.setConfirmDate(updateReqVO.getConfirmDate()); moldRepairDO.setRepairResult(updateReqVO.getRepairResult()); + moldRepairDO.setStatus(updateReqVO.getStatus() != null ? updateReqVO.getStatus() : MoldRecordStatusEnum.PENDING_ACCEPTANCE.getCode()); moldRepairMapper.updateById(moldRepairDO); updateMoldBrandStatusByRepairResult(moldRepairDO.getMoldId(), updateReqVO.getRepairResult()); batchUpdateTicketResults(updateReqVO.getUpdateReqVOList()); @@ -320,6 +328,27 @@ public class MoldRepairServiceImpl implements MoldRepairService { } @Override + @Transactional(rollbackFor = Exception.class) + public void acceptMoldRepair(MoldRepairAcceptanceReqVO acceptanceReqVO) { + validateAcceptanceStatus(acceptanceReqVO.getStatus()); + MoldRepairDO moldRepairDO = moldRepairMapper.selectById(acceptanceReqVO.getId()); + if (moldRepairDO == null) { + throw exception(MOLD_REPAIR_NOT_EXISTS); + } + applyAcceptance(moldRepairDO, acceptanceReqVO); + moldRepairMapper.updateById(moldRepairDO); + createAcceptanceHistory(moldRepairDO); + updateMoldBrandStatusByRepairResult(moldRepairDO.getMoldId(), moldRepairDO.getRepairResult()); + } + + @Override + public List getAcceptanceHistoryList(Long repairId) { + return BeanUtils.toBean(moldRepairAcceptanceHistoryMapper.selectListByRepairId(repairId), + MoldRepairAcceptanceHistoryRespVO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) public void rejectMoldRepair(MoldRepairRejectReqVO rejectReqVO) { MoldRepairDO moldRepairDO = moldRepairMapper.selectById(rejectReqVO.getId()); if (moldRepairDO == null) { @@ -333,6 +362,49 @@ public class MoldRepairServiceImpl implements MoldRepairService { moldRepairDO.setRejectBy(String.valueOf(loginUserId)); } moldRepairMapper.updateById(moldRepairDO); + createAcceptanceHistory(moldRepairDO); + } + + private void validateAcceptanceStatus(Integer status) { + if (!MoldRecordStatusEnum.COMPLETED.getCode().equals(status) + && !MoldRecordStatusEnum.REJECTED.getCode().equals(status)) { + throw exception(REPAIR_ACCEPTANCE_STATUS_INVALID); + } + } + + private void applyAcceptance(MoldRepairDO moldRepairDO, MoldRepairAcceptanceReqVO acceptanceReqVO) { + moldRepairDO.setConfirmBy(acceptanceReqVO.getConfirmBy()); + moldRepairDO.setStatus(acceptanceReqVO.getStatus()); + moldRepairDO.setRejectReason(acceptanceReqVO.getRejectReason()); + if (MoldRecordStatusEnum.REJECTED.getCode().equals(acceptanceReqVO.getStatus())) { + moldRepairDO.setRejectTime(LocalDateTime.now()); + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + if (loginUserId != null) { + moldRepairDO.setRejectBy(String.valueOf(loginUserId)); + } + } else { + moldRepairDO.setRejectTime(null); + moldRepairDO.setRejectBy(null); + } + moldRepairDO.setConfirmDate(LocalDateTime.now()); + } + + private void createAcceptanceHistory(MoldRepairDO moldRepairDO) { + MoldRepairAcceptanceHistoryDO historyDO = new MoldRepairAcceptanceHistoryDO(); + historyDO.setRepairId(moldRepairDO.getId()); + historyDO.setRepairResult(moldRepairDO.getRepairResult()); + historyDO.setFinishDate(moldRepairDO.getFinishDate()); + historyDO.setConfirmDate(moldRepairDO.getConfirmDate()); + historyDO.setConfirmBy(moldRepairDO.getConfirmBy()); + historyDO.setStatus(moldRepairDO.getStatus()); + historyDO.setRejectReason(moldRepairDO.getRejectReason()); + historyDO.setShutdownDuration(moldRepairDO.getShutdownDuration()); + historyDO.setFaultReason(moldRepairDO.getFaultReason()); + historyDO.setTreatmentMeasures(moldRepairDO.getTreatmentMeasures()); + historyDO.setReplacementParts(moldRepairDO.getReplacementParts()); + historyDO.setRepairSummary(moldRepairDO.getRepairSummary()); + historyDO.setRepairedImages(moldRepairDO.getRepairedImages()); + moldRepairAcceptanceHistoryMapper.insert(historyDO); } @Override @@ -477,8 +549,8 @@ public class MoldRepairServiceImpl implements MoldRepairService { if (moldRepairDO == null ){ throw exception(MOLD_REPAIR_NOT_EXISTS); } - //设置为已完成 - moldRepairDO.setStatus(JobResultEnum.PASS.getCode()); + // 设置为待验收 + moldRepairDO.setStatus(MoldRecordStatusEnum.PENDING_ACCEPTANCE.getCode()); // 检查是否有不通过的 boolean hasFail = updateReqVOList.stream() .anyMatch(vo -> vo.getResult() != null && vo.getResult().equals(JobResultEnum.FAIL.getCode()));