From 04236fec7f000080ad970e5fb1258fd2adeafb82 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 21 Feb 2026 22:11:21 +0800 Subject: [PATCH] 【后端】refactor(mes): 将 MesQcDefectRecordDO 相关类从 qc/defect 包独立到 qc/defectrecord 包 【前端】refactor(mes): 将缺陷记录相关文件从 qc/defect/record 目录独立到 qc/defectrecord 目录 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/MesQcDefectRecordController.java | 64 ---------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordPageReqVO.java | 27 --------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordRespVO.java | 39 --------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordSaveReqVO.java | 46 ---------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/MesQcDefectRecordController.java | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordPageReqVO.java | 30 ++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordRespVO.java | 39 +++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordSaveReqVO.java | 46 ++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/defect/MesQcDefectRecordDO.java | 95 ----------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/defectrecord/MesQcDefectRecordDO.java | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/defect/MesQcDefectRecordMapper.java | 47 ----------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/defectrecord/MesQcDefectRecordMapper.java | 40 ++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defect/MesQcDefectRecordService.java | 54 ------------------------------------------------------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defect/MesQcDefectRecordServiceImpl.java | 133 ------------------------------------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordService.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordServiceImpl.java | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcLineService.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcLineServiceImpl.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcService.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcServiceImpl.java | 4 ++-- 20 files changed, 506 insertions(+), 510 deletions(-) delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/MesQcDefectRecordController.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordPageReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordRespVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordSaveReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/MesQcDefectRecordController.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordPageReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordRespVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordSaveReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/defect/MesQcDefectRecordDO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/defectrecord/MesQcDefectRecordDO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/defect/MesQcDefectRecordMapper.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/defectrecord/MesQcDefectRecordMapper.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defect/MesQcDefectRecordService.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defect/MesQcDefectRecordServiceImpl.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordService.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordServiceImpl.java diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/MesQcDefectRecordController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/MesQcDefectRecordController.java deleted file mode 100644 index 94bd359..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/MesQcDefectRecordController.java +++ /dev/null @@ -1,64 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.qc.defect; - -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -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.qc.defect.vo.record.MesQcDefectRecordPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.qc.defect.vo.record.MesQcDefectRecordRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.qc.defect.vo.record.MesQcDefectRecordSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defect.MesQcDefectRecordDO; -import cn.iocoder.yudao.module.mes.service.qc.defect.MesQcDefectRecordService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - -@Tag(name = "管理后台 - MES 质检缺陷记录") -@RestController -@RequestMapping("/mes/qc/defect-record") -@Validated -public class MesQcDefectRecordController { - - @Resource - private MesQcDefectRecordService defectRecordService; - - // TODO @芋艿:说下 mes:qc-record 这个权限标识的情况 - @PostMapping("/create") - @Operation(summary = "创建质检缺陷记录") - @PreAuthorize("@ss.hasPermission('mes:qc-defect:create')") - public CommonResult createDefectRecord(@Valid @RequestBody MesQcDefectRecordSaveReqVO createReqVO) { - return success(defectRecordService.createDefectRecord(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新质检缺陷记录") - @PreAuthorize("@ss.hasPermission('mes:qc-defect:update')") - public CommonResult updateDefectRecord(@Valid @RequestBody MesQcDefectRecordSaveReqVO updateReqVO) { - defectRecordService.updateDefectRecord(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除质检缺陷记录") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:qc-defect:update')") - public CommonResult deleteDefectRecord(@RequestParam("id") Long id) { - defectRecordService.deleteDefectRecord(id); - return success(true); - } - - @GetMapping("/page") - @Operation(summary = "获得质检缺陷记录分页") - @PreAuthorize("@ss.hasPermission('mes:qc-defect:query')") - public CommonResult> getDefectRecordPage(@Valid MesQcDefectRecordPageReqVO pageReqVO) { - PageResult pageResult = defectRecordService.getDefectRecordPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, MesQcDefectRecordRespVO.class)); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordPageReqVO.java deleted file mode 100644 index 2e26771..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordPageReqVO.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.qc.defect.vo.record; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - MES 质检缺陷记录分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class MesQcDefectRecordPageReqVO extends PageParam { - - @Schema(description = "检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "检验类型不能为空") - private Integer qcType; - - @Schema(description = "检验单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") - @NotNull(message = "检验单 ID 不能为空") - private Long qcId; - - @Schema(description = "检验行 ID", example = "200") - private Long lineId; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordRespVO.java deleted file mode 100644 index af8f8a9..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordRespVO.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.qc.defect.vo.record; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - MES 质检缺陷记录 Response VO") -@Data -public class MesQcDefectRecordRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Integer qcType; - - @Schema(description = "检验单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") - private Long qcId; - - @Schema(description = "检验行 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "200") - private Long lineId; - - @Schema(description = "缺陷描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "表面划伤") - private String name; - - @Schema(description = "缺陷等级", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Integer level; - - @Schema(description = "缺陷数量", example = "1") - private Integer quantity; - - @Schema(description = "备注", example = "备注") - private String remark; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - private LocalDateTime createTime; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordSaveReqVO.java deleted file mode 100644 index c221011..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defect/vo/record/MesQcDefectRecordSaveReqVO.java +++ /dev/null @@ -1,46 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.qc.defect.vo.record; - -import cn.iocoder.yudao.framework.common.validation.InEnum; -import cn.iocoder.yudao.module.mes.enums.qc.MesQcDefectLevelEnum; -import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; -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 MesQcDefectRecordSaveReqVO { - - @Schema(description = "编号", example = "1024") - private Long id; - - @Schema(description = "检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "检验类型不能为空") - @InEnum(MesQcTypeEnum.class) - private Integer qcType; - - @Schema(description = "检验单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") - @NotNull(message = "检验单 ID 不能为空") - private Long qcId; - - @Schema(description = "检验行 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "200") - @NotNull(message = "检验行 ID 不能为空") - private Long lineId; - - @Schema(description = "缺陷描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "表面划伤") - @NotEmpty(message = "缺陷描述不能为空") - private String name; - - @Schema(description = "缺陷等级", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "缺陷等级不能为空") - @InEnum(MesQcDefectLevelEnum.class) - private Integer level; - - @Schema(description = "缺陷数量", example = "1") - private Integer quantity; - - @Schema(description = "备注", example = "备注") - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/MesQcDefectRecordController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/MesQcDefectRecordController.java new file mode 100644 index 0000000..3e1df77 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/MesQcDefectRecordController.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.mes.controller.admin.qc.defectrecord; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +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.qc.defectrecord.vo.MesQcDefectRecordPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.qc.defectrecord.vo.MesQcDefectRecordRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.qc.defectrecord.vo.MesQcDefectRecordSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; +import cn.iocoder.yudao.module.mes.service.qc.defectrecord.MesQcDefectRecordService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - MES 质检缺陷记录") +@RestController +@RequestMapping("/mes/qc/defect-record") +@Validated +public class MesQcDefectRecordController { + + @Resource + private MesQcDefectRecordService defectRecordService; + + // TODO @芋艿:说下 mes:qc-record 这个权限标识的情况 + @PostMapping("/create") + @Operation(summary = "创建质检缺陷记录") + @PreAuthorize("@ss.hasPermission('mes:qc-defect:create')") + public CommonResult createDefectRecord(@Valid @RequestBody MesQcDefectRecordSaveReqVO createReqVO) { + return success(defectRecordService.createDefectRecord(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新质检缺陷记录") + @PreAuthorize("@ss.hasPermission('mes:qc-defect:update')") + public CommonResult updateDefectRecord(@Valid @RequestBody MesQcDefectRecordSaveReqVO updateReqVO) { + defectRecordService.updateDefectRecord(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除质检缺陷记录") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:qc-defect:update')") + public CommonResult deleteDefectRecord(@RequestParam("id") Long id) { + defectRecordService.deleteDefectRecord(id); + return success(true); + } + + @GetMapping("/page") + @Operation(summary = "获得质检缺陷记录分页") + @PreAuthorize("@ss.hasPermission('mes:qc-defect:query')") + public CommonResult> getDefectRecordPage(@Valid MesQcDefectRecordPageReqVO pageReqVO) { + PageResult pageResult = defectRecordService.getDefectRecordPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MesQcDefectRecordRespVO.class)); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordPageReqVO.java new file mode 100644 index 0000000..00806e2 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordPageReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.mes.controller.admin.qc.defectrecord.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.validation.InEnum; +import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - MES 质检缺陷记录分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MesQcDefectRecordPageReqVO extends PageParam { + + @Schema(description = "检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "检验类型不能为空") + @InEnum(MesQcTypeEnum.class) + private Integer qcType; + + @Schema(description = "检验单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") + @NotNull(message = "检验单 ID 不能为空") + private Long qcId; + + @Schema(description = "检验行 ID", example = "200") + private Long lineId; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordRespVO.java new file mode 100644 index 0000000..82643be --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordRespVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.mes.controller.admin.qc.defectrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 质检缺陷记录 Response VO") +@Data +public class MesQcDefectRecordRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer qcType; + + @Schema(description = "检验单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") + private Long qcId; + + @Schema(description = "检验行 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "200") + private Long lineId; + + @Schema(description = "缺陷描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "表面划伤") + private String name; + + @Schema(description = "缺陷等级", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer level; + + @Schema(description = "缺陷数量", example = "1") + private Integer quantity; + + @Schema(description = "备注", example = "备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordSaveReqVO.java new file mode 100644 index 0000000..27d0329 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/defectrecord/vo/MesQcDefectRecordSaveReqVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.mes.controller.admin.qc.defectrecord.vo; + +import cn.iocoder.yudao.framework.common.validation.InEnum; +import cn.iocoder.yudao.module.mes.enums.qc.MesQcDefectLevelEnum; +import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; +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 MesQcDefectRecordSaveReqVO { + + @Schema(description = "编号", example = "1024") + private Long id; + + @Schema(description = "检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "检验类型不能为空") + @InEnum(MesQcTypeEnum.class) + private Integer qcType; + + @Schema(description = "检验单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") + @NotNull(message = "检验单 ID 不能为空") + private Long qcId; + + @Schema(description = "检验行 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "200") + @NotNull(message = "检验行 ID 不能为空") + private Long lineId; + + @Schema(description = "缺陷描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "表面划伤") + @NotEmpty(message = "缺陷描述不能为空") + private String name; + + @Schema(description = "缺陷等级", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "缺陷等级不能为空") + @InEnum(MesQcDefectLevelEnum.class) + private Integer level; + + @Schema(description = "缺陷数量", example = "1") + private Integer quantity; + + @Schema(description = "备注", example = "备注") + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/defect/MesQcDefectRecordDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/defect/MesQcDefectRecordDO.java deleted file mode 100644 index 643c198..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/defect/MesQcDefectRecordDO.java +++ /dev/null @@ -1,95 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.dataobject.qc.defect; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcLineDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.lqc.MesQcIqcDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.lqc.MesQcIqcLineDO; -import cn.iocoder.yudao.module.mes.enums.qc.MesQcDefectLevelEnum; -import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * MES 质检缺陷记录 DO - * - * 通用缺陷记录表,通过 {@link #qcType} 区分检验类型(IQC、IPQC、OQC、RQC),多模块复用 - * - * @author 芋道源码 - */ -@TableName("mes_qc_defect_record") -@KeySequence("mes_qc_defect_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class MesQcDefectRecordDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 检验类型 - * - * 枚举 {@link MesQcTypeEnum} - */ - private Integer qcType; - /** - * 检验单 ID - * - * 关联 {@link MesQcIqcDO#getId()} - * 关联 {@link MesQcIpqcDO#getId()} - */ - private Long qcId; - /** - * 检验行 ID - * - * 关联 {@link MesQcIqcLineDO#getId()} - * 关联 {@link MesQcIpqcLineDO#getId()} - */ - private Long lineId; - /** - * 缺陷描述 - */ - private String name; - /** - * 缺陷等级 - * - * 枚举 {@link MesQcDefectLevelEnum} - */ - private Integer level; - /** - * 缺陷数量 - */ - private Integer quantity; - /** - * 备注 - */ - private String remark; - - // ========== 预留字段 ========== - - /** - * 预留字段 1 - */ - private String attribute1; - /** - * 预留字段 2 - */ - private String attribute2; - /** - * 预留字段 3 - */ - private Integer attribute3; - /** - * 预留字段 4 - */ - private Integer attribute4; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/defectrecord/MesQcDefectRecordDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/defectrecord/MesQcDefectRecordDO.java new file mode 100644 index 0000000..3a5fcb5 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/defectrecord/MesQcDefectRecordDO.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcLineDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.lqc.MesQcIqcDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.lqc.MesQcIqcLineDO; +import cn.iocoder.yudao.module.mes.enums.qc.MesQcDefectLevelEnum; +import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * MES 质检缺陷记录 DO + * + * 通用缺陷记录表,通过 {@link #qcType} 区分检验类型(IQC、IPQC、OQC、RQC),多模块复用 + * + * @author 芋道源码 + */ +@TableName("mes_qc_defect_record") +@KeySequence("mes_qc_defect_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MesQcDefectRecordDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 检验类型 + * + * 枚举 {@link MesQcTypeEnum} + */ + private Integer qcType; + /** + * 检验单 ID + * + * 关联 {@link MesQcIqcDO#getId()} + * 关联 {@link MesQcIpqcDO#getId()} + */ + private Long qcId; + /** + * 检验行 ID + * + * 关联 {@link MesQcIqcLineDO#getId()} + * 关联 {@link MesQcIpqcLineDO#getId()} + */ + private Long lineId; + /** + * 缺陷描述 + */ + private String name; + /** + * 缺陷等级 + * + * 枚举 {@link MesQcDefectLevelEnum} + */ + private Integer level; + /** + * 缺陷数量 + */ + private Integer quantity; + /** + * 备注 + */ + private String remark; + + // ========== 预留字段 ========== + + /** + * 预留字段 1 + */ + private String attribute1; + /** + * 预留字段 2 + */ + private String attribute2; + /** + * 预留字段 3 + */ + private Integer attribute3; + /** + * 预留字段 4 + */ + private Integer attribute4; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/defect/MesQcDefectRecordMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/defect/MesQcDefectRecordMapper.java deleted file mode 100644 index ffb78ab..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/defect/MesQcDefectRecordMapper.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.mysql.qc.defect; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.mes.controller.admin.qc.defect.vo.record.MesQcDefectRecordPageReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defect.MesQcDefectRecordDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * MES 质检缺陷记录 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface MesQcDefectRecordMapper extends BaseMapperX { - - default PageResult selectPage(MesQcDefectRecordPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(MesQcDefectRecordDO::getQcType, reqVO.getQcType()) - .eqIfPresent(MesQcDefectRecordDO::getQcId, reqVO.getQcId()) - .eqIfPresent(MesQcDefectRecordDO::getLineId, reqVO.getLineId()) - .orderByDesc(MesQcDefectRecordDO::getId)); - } - - default List selectListByQcTypeAndQcId(Integer qcType, Long qcId) { - return selectList(new LambdaQueryWrapperX() - .eq(MesQcDefectRecordDO::getQcType, qcType) - .eq(MesQcDefectRecordDO::getQcId, qcId)); - } - - default List selectListByQcTypeAndQcIdAndLineId(Integer qcType, Long qcId, Long lineId) { - return selectList(new LambdaQueryWrapperX() - .eq(MesQcDefectRecordDO::getQcType, qcType) - .eq(MesQcDefectRecordDO::getQcId, qcId) - .eq(MesQcDefectRecordDO::getLineId, lineId)); - } - - default void deleteByQcTypeAndQcId(Integer qcType, Long qcId) { - delete(new LambdaQueryWrapperX() - .eq(MesQcDefectRecordDO::getQcType, qcType) - .eq(MesQcDefectRecordDO::getQcId, qcId)); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/defectrecord/MesQcDefectRecordMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/defectrecord/MesQcDefectRecordMapper.java new file mode 100644 index 0000000..0b93d6d --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/defectrecord/MesQcDefectRecordMapper.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.qc.defectrecord; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.mes.controller.admin.qc.defectrecord.vo.MesQcDefectRecordPageReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * MES 质检缺陷记录 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface MesQcDefectRecordMapper extends BaseMapperX { + + default PageResult selectPage(MesQcDefectRecordPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MesQcDefectRecordDO::getQcType, reqVO.getQcType()) + .eqIfPresent(MesQcDefectRecordDO::getQcId, reqVO.getQcId()) + .eqIfPresent(MesQcDefectRecordDO::getLineId, reqVO.getLineId()) + .orderByDesc(MesQcDefectRecordDO::getId)); + } + + default List selectListByQcTypeAndQcId(Integer qcType, Long qcId) { + return selectList(new LambdaQueryWrapperX() + .eq(MesQcDefectRecordDO::getQcType, qcType) + .eq(MesQcDefectRecordDO::getQcId, qcId)); + } + + default void deleteByQcTypeAndQcId(Integer qcType, Long qcId) { + delete(new LambdaQueryWrapperX() + .eq(MesQcDefectRecordDO::getQcType, qcType) + .eq(MesQcDefectRecordDO::getQcId, qcId)); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defect/MesQcDefectRecordService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defect/MesQcDefectRecordService.java deleted file mode 100644 index 10a2e72..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defect/MesQcDefectRecordService.java +++ /dev/null @@ -1,54 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.qc.defect; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.mes.controller.admin.qc.defect.vo.record.MesQcDefectRecordPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.qc.defect.vo.record.MesQcDefectRecordSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defect.MesQcDefectRecordDO; -import jakarta.validation.Valid; - -/** - * MES 质检缺陷记录 Service 接口 - * - * @author 芋道源码 - */ -public interface MesQcDefectRecordService { - - /** - * 创建质检缺陷记录 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createDefectRecord(@Valid MesQcDefectRecordSaveReqVO createReqVO); - - /** - * 更新质检缺陷记录 - * - * @param updateReqVO 更新信息 - */ - void updateDefectRecord(@Valid MesQcDefectRecordSaveReqVO updateReqVO); - - /** - * 删除质检缺陷记录 - * - * @param id 编号 - */ - void deleteDefectRecord(Long id); - - /** - * 获得质检缺陷记录分页 - * - * @param pageReqVO 分页查询 - * @return 质检缺陷记录分页 - */ - PageResult getDefectRecordPage(MesQcDefectRecordPageReqVO pageReqVO); - - /** - * 根据检验类型和检验单 ID 级联删除所有缺陷记录 - * - * @param qcType 检验类型 - * @param qcId 检验单 ID - */ - void deleteByQcTypeAndQcId(Integer qcType, Long qcId); - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defect/MesQcDefectRecordServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defect/MesQcDefectRecordServiceImpl.java deleted file mode 100644 index e4db73f..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defect/MesQcDefectRecordServiceImpl.java +++ /dev/null @@ -1,133 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.qc.defect; - -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.qc.defect.vo.record.MesQcDefectRecordPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.qc.defect.vo.record.MesQcDefectRecordSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defect.MesQcDefectRecordDO; -import cn.iocoder.yudao.module.mes.dal.mysql.qc.defect.MesQcDefectRecordMapper; -import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; -import cn.iocoder.yudao.module.mes.service.qc.lqc.MesQcIqcLineService; -import cn.iocoder.yudao.module.mes.service.qc.lqc.MesQcIqcService; -import jakarta.annotation.Resource; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.util.List; -import java.util.Objects; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; - -/** - * MES 质检缺陷记录 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class MesQcDefectRecordServiceImpl implements MesQcDefectRecordService { - - @Resource - private MesQcDefectRecordMapper defectRecordMapper; - - @Resource - @Lazy - private MesQcIqcService iqcService; - @Resource - @Lazy - private MesQcIqcLineService iqcLineService; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createDefectRecord(MesQcDefectRecordSaveReqVO createReqVO) { - // 1. 校验检验单和检验行存在 - validateQcAndLineExists(createReqVO.getQcType(), createReqVO.getQcId(), createReqVO.getLineId()); - - // 2. 插入 - MesQcDefectRecordDO record = BeanUtils.toBean(createReqVO, MesQcDefectRecordDO.class); - defectRecordMapper.insert(record); - - // 3. 重新计算缺陷统计 - recalculateDefectStats(createReqVO.getQcType(), createReqVO.getQcId()); - return record.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateDefectRecord(MesQcDefectRecordSaveReqVO updateReqVO) { - // 1. 校验存在 - validateDefectRecordExists(updateReqVO.getId()); - - // 2. 更新 - MesQcDefectRecordDO updateObj = BeanUtils.toBean(updateReqVO, MesQcDefectRecordDO.class); - defectRecordMapper.updateById(updateObj); - - // 3. 重新计算缺陷统计 - recalculateDefectStats(updateReqVO.getQcType(), updateReqVO.getQcId()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteDefectRecord(Long id) { - // 1. 校验存在 - MesQcDefectRecordDO record = validateDefectRecordExists(id); - - // 2. 删除 - defectRecordMapper.deleteById(id); - - // 3. 重新计算缺陷统计 - recalculateDefectStats(record.getQcType(), record.getQcId()); - } - - @Override - public PageResult getDefectRecordPage(MesQcDefectRecordPageReqVO pageReqVO) { - return defectRecordMapper.selectPage(pageReqVO); - } - - @Override - public void deleteByQcTypeAndQcId(Integer qcType, Long qcId) { - defectRecordMapper.deleteByQcTypeAndQcId(qcType, qcId); - } - - // ==================== 校验方法 ==================== - - private void validateQcAndLineExists(Integer qcType, Long qcId, Long lineId) { - if (Objects.equals(qcType, MesQcTypeEnum.IQC.getType())) { - iqcService.validateIqcExists(qcId); - iqcLineService.validateIqcLineExists(lineId); - } else { - // 后续扩展:IPQC、OQC、RQC - throw exception(QC_DEFECT_RECORD_QC_TYPE_UNSUPPORTED); - } - } - - private MesQcDefectRecordDO validateDefectRecordExists(Long id) { - MesQcDefectRecordDO record = defectRecordMapper.selectById(id); - if (record == null) { - throw exception(QC_DEFECT_RECORD_NOT_EXISTS); - } - return record; - } - - // ==================== 缺陷统计 ==================== - - /** - * 重新计算缺陷统计(行级 + 主表级),委托给对应的检验 Service - * - * @param qcType 检验类型 - * @param qcId 检验单 ID - */ - private void recalculateDefectStats(Integer qcType, Long qcId) { - List records = defectRecordMapper.selectListByQcTypeAndQcId(qcType, qcId); - if (Objects.equals(qcType, MesQcTypeEnum.IQC.getType())) { - iqcService.recalculateDefectStats(qcId, records); - } else { - // 后续扩展:IPQC、OQC、RQC - throw exception(QC_DEFECT_RECORD_QC_TYPE_UNSUPPORTED); - } - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordService.java new file mode 100644 index 0000000..32b61db --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordService.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.mes.service.qc.defectrecord; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.qc.defectrecord.vo.MesQcDefectRecordPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.qc.defectrecord.vo.MesQcDefectRecordSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; +import jakarta.validation.Valid; + +/** + * MES 质检缺陷记录 Service 接口 + * + * @author 芋道源码 + */ +public interface MesQcDefectRecordService { + + /** + * 创建质检缺陷记录 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDefectRecord(@Valid MesQcDefectRecordSaveReqVO createReqVO); + + /** + * 更新质检缺陷记录 + * + * @param updateReqVO 更新信息 + */ + void updateDefectRecord(@Valid MesQcDefectRecordSaveReqVO updateReqVO); + + /** + * 删除质检缺陷记录 + * + * @param id 编号 + */ + void deleteDefectRecord(Long id); + + /** + * 获得质检缺陷记录分页 + * + * @param pageReqVO 分页查询 + * @return 质检缺陷记录分页 + */ + PageResult getDefectRecordPage(MesQcDefectRecordPageReqVO pageReqVO); + + /** + * 根据检验类型和检验单 ID 级联删除所有缺陷记录 + * + * @param qcType 检验类型 + * @param qcId 检验单 ID + */ + void deleteByQcTypeAndQcId(Integer qcType, Long qcId); + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordServiceImpl.java new file mode 100644 index 0000000..7e48542 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordServiceImpl.java @@ -0,0 +1,133 @@ +package cn.iocoder.yudao.module.mes.service.qc.defectrecord; + +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.qc.defectrecord.vo.MesQcDefectRecordPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.qc.defectrecord.vo.MesQcDefectRecordSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; +import cn.iocoder.yudao.module.mes.dal.mysql.qc.defectrecord.MesQcDefectRecordMapper; +import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; +import cn.iocoder.yudao.module.mes.service.qc.lqc.MesQcIqcLineService; +import cn.iocoder.yudao.module.mes.service.qc.lqc.MesQcIqcService; +import jakarta.annotation.Resource; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.List; +import java.util.Objects; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; + +/** + * MES 质检缺陷记录 Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class MesQcDefectRecordServiceImpl implements MesQcDefectRecordService { + + @Resource + private MesQcDefectRecordMapper defectRecordMapper; + + @Resource + @Lazy + private MesQcIqcService iqcService; + @Resource + @Lazy + private MesQcIqcLineService iqcLineService; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createDefectRecord(MesQcDefectRecordSaveReqVO createReqVO) { + // 1. 校验检验单和检验行存在 + validateQcAndLineExists(createReqVO.getQcType(), createReqVO.getQcId(), createReqVO.getLineId()); + + // 2. 插入 + MesQcDefectRecordDO record = BeanUtils.toBean(createReqVO, MesQcDefectRecordDO.class); + defectRecordMapper.insert(record); + + // 3. 重新计算缺陷统计 + recalculateDefectStats(createReqVO.getQcType(), createReqVO.getQcId()); + return record.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateDefectRecord(MesQcDefectRecordSaveReqVO updateReqVO) { + // 1. 校验存在 + validateDefectRecordExists(updateReqVO.getId()); + + // 2. 更新 + MesQcDefectRecordDO updateObj = BeanUtils.toBean(updateReqVO, MesQcDefectRecordDO.class); + defectRecordMapper.updateById(updateObj); + + // 3. 重新计算缺陷统计 + recalculateDefectStats(updateReqVO.getQcType(), updateReqVO.getQcId()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteDefectRecord(Long id) { + // 1. 校验存在 + MesQcDefectRecordDO record = validateDefectRecordExists(id); + + // 2. 删除 + defectRecordMapper.deleteById(id); + + // 3. 重新计算缺陷统计 + recalculateDefectStats(record.getQcType(), record.getQcId()); + } + + @Override + public PageResult getDefectRecordPage(MesQcDefectRecordPageReqVO pageReqVO) { + return defectRecordMapper.selectPage(pageReqVO); + } + + @Override + public void deleteByQcTypeAndQcId(Integer qcType, Long qcId) { + defectRecordMapper.deleteByQcTypeAndQcId(qcType, qcId); + } + + // ==================== 校验方法 ==================== + + private void validateQcAndLineExists(Integer qcType, Long qcId, Long lineId) { + if (Objects.equals(qcType, MesQcTypeEnum.IQC.getType())) { + iqcService.validateIqcExists(qcId); + iqcLineService.validateIqcLineExists(lineId); + } else { + // 后续扩展:IPQC、OQC、RQC + throw exception(QC_DEFECT_RECORD_QC_TYPE_UNSUPPORTED); + } + } + + private MesQcDefectRecordDO validateDefectRecordExists(Long id) { + MesQcDefectRecordDO record = defectRecordMapper.selectById(id); + if (record == null) { + throw exception(QC_DEFECT_RECORD_NOT_EXISTS); + } + return record; + } + + // ==================== 缺陷统计 ==================== + + /** + * 重新计算缺陷统计(行级 + 主表级),委托给对应的检验 Service + * + * @param qcType 检验类型 + * @param qcId 检验单 ID + */ + private void recalculateDefectStats(Integer qcType, Long qcId) { + List records = defectRecordMapper.selectListByQcTypeAndQcId(qcType, qcId); + if (Objects.equals(qcType, MesQcTypeEnum.IQC.getType())) { + iqcService.recalculateDefectStats(qcId, records); + } else { + // 后续扩展:IPQC、OQC、RQC + throw exception(QC_DEFECT_RECORD_QC_TYPE_UNSUPPORTED); + } + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcLineService.java index 28e05cd..5fd2a05 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcLineService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcLineService.java @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.qc.iqc.vo.line.MesQcIqcLinePageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.lqc.MesQcIqcLineDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defect.MesQcDefectRecordDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; import java.util.List; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcLineServiceImpl.java index 14066a1..43c3093 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcLineServiceImpl.java @@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.qc.iqc.vo.line.MesQcIqcLinePageReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defect.MesQcDefectRecordDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.lqc.MesQcIqcLineDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateIndicatorDO; import cn.iocoder.yudao.module.mes.dal.mysql.qc.lqc.MesQcIqcLineMapper; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcService.java index 613a745..123d299 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcService.java @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.mes.service.qc.lqc; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.qc.iqc.vo.MesQcIqcPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.iqc.vo.MesQcIqcSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defect.MesQcDefectRecordDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.lqc.MesQcIqcDO; import jakarta.validation.Valid; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcServiceImpl.java index 93145a5..dafc3a7 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/lqc/MesQcIqcServiceImpl.java @@ -6,7 +6,7 @@ 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.qc.iqc.vo.MesQcIqcPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.iqc.vo.MesQcIqcSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defect.MesQcDefectRecordDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.lqc.MesQcIqcDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateItemDO; @@ -14,7 +14,7 @@ import cn.iocoder.yudao.module.mes.dal.mysql.qc.lqc.MesQcIqcMapper; import cn.iocoder.yudao.module.mes.enums.qc.MesQcDefectLevelEnum; import cn.iocoder.yudao.module.mes.enums.qc.MesQcIqcStatusEnum; import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; -import cn.iocoder.yudao.module.mes.service.qc.defect.MesQcDefectRecordService; +import cn.iocoder.yudao.module.mes.service.qc.defectrecord.MesQcDefectRecordService; import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; -- libgit2 0.21.4