From 391d253180905092e8bd13061e4662237d6ed7bd Mon Sep 17 00:00:00 2001 From: YunaiV Date: Fri, 20 Feb 2026 19:16:40 +0800 Subject: [PATCH] feat(mes): 添加维修工单和维修工单行相关功能,包括请求和响应 VO 及控制器 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/checkrecord/vo/MesDvCheckRecordSaveReqVO.java | 1 + yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/MesDvMaintenRecordController.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/vo/MesDvMaintenRecordSaveReqVO.java | 1 + yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairController.java | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairLineController.java | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java | 33 +++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairRespVO.java | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairSaveReqVO.java | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLinePageReqVO.java | 18 ++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLineRespVO.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLineSaveReqVO.java | 36 ++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordDO.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordLineDO.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairDO.java | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairLineDO.java | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairLineMapper.java | 34 ++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java | 27 +++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvCheckRecordStatusEnum.java | 37 +++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordLineServiceImpl.java | 5 +++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordServiceImpl.java | 4 ++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineService.java | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairService.java | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 24 files changed, 1184 insertions(+), 0 deletions(-) create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairController.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairLineController.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairRespVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairSaveReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLinePageReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLineRespVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLineSaveReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairDO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairLineDO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairLineMapper.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvCheckRecordStatusEnum.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineService.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairService.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/checkrecord/vo/MesDvCheckRecordSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/checkrecord/vo/MesDvCheckRecordSaveReqVO.java index 29d9088..e22430e 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/checkrecord/vo/MesDvCheckRecordSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/checkrecord/vo/MesDvCheckRecordSaveReqVO.java @@ -27,6 +27,7 @@ public class MesDvCheckRecordSaveReqVO { @Schema(description = "点检人编号", example = "1") private Long userId; + // TODO @AI:这个字段,不允许提交 @Schema(description = "状态", example = "10") private Integer status; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/MesDvMaintenRecordController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/MesDvMaintenRecordController.java index 33fae61..49a0400 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/MesDvMaintenRecordController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/MesDvMaintenRecordController.java @@ -113,6 +113,8 @@ public class MesDvMaintenRecordController { buildMaintenRecordRespVOList(list)); } + // TODO @AI:submitMaintenRecord 缺少; + // ==================== 拼接 VO ==================== private List buildMaintenRecordRespVOList(List list) { diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/vo/MesDvMaintenRecordSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/vo/MesDvMaintenRecordSaveReqVO.java index 2ffce7e..dbf74e3 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/vo/MesDvMaintenRecordSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/vo/MesDvMaintenRecordSaveReqVO.java @@ -27,6 +27,7 @@ public class MesDvMaintenRecordSaveReqVO { @Schema(description = "用户编号", example = "1") private Long userId; + // TODO @AI:这个字段,不允许提交 @Schema(description = "状态", example = "10") private Integer status; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairController.java new file mode 100644 index 0000000..e94f6c7 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairController.java @@ -0,0 +1,138 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dv.repair; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.machinery.MesDvMachineryDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair.MesDvRepairDO; +import cn.iocoder.yudao.module.mes.service.dv.machinery.MesDvMachineryService; +import cn.iocoder.yudao.module.mes.service.dv.repair.MesDvRepairService; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; + +@Tag(name = "管理后台 - MES 维修工单") +@RestController +@RequestMapping("/mes/dv/repair") +@Validated +public class MesDvRepairController { + + @Resource + private MesDvRepairService repairService; + + @Resource + private MesDvMachineryService machineryService; + + @Resource + private AdminUserApi adminUserApi; + + @PostMapping("/create") + @Operation(summary = "创建维修工单") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:create')") + public CommonResult createRepair(@Valid @RequestBody MesDvRepairSaveReqVO createReqVO) { + return success(repairService.createRepair(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新维修工单") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:update')") + public CommonResult updateRepair(@Valid @RequestBody MesDvRepairSaveReqVO updateReqVO) { + repairService.updateRepair(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除维修工单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:dv-repair:delete')") + public CommonResult deleteRepair(@RequestParam("id") Long id) { + repairService.deleteRepair(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得维修工单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:query')") + public CommonResult getRepair(@RequestParam("id") Long id) { + MesDvRepairDO repair = repairService.getRepair(id); + if (repair == null) { + return success(null); + } + return success(buildRepairRespVOList(Collections.singletonList(repair)).get(0)); + } + + @GetMapping("/page") + @Operation(summary = "获得维修工单分页") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:query')") + public CommonResult> getRepairPage(@Valid MesDvRepairPageReqVO pageReqVO) { + PageResult pageResult = repairService.getRepairPage(pageReqVO); + return success(new PageResult<>(buildRepairRespVOList(pageResult.getList()), pageResult.getTotal())); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出维修工单 Excel") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportRepairExcel(@Valid MesDvRepairPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = repairService.getRepairPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "维修工单.xls", "数据", MesDvRepairRespVO.class, + buildRepairRespVOList(list)); + } + + // ==================== 拼接 VO ==================== + + private List buildRepairRespVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + // 1.1 批量获取关联数据 + Map machineryMap = machineryService.getMachineryMap( + convertSet(list, MesDvRepairDO::getMachineryId)); + // 1.2 收集所有用户 ID(维修人 + 验收人) + // TODO @AI:CollUtils 里面,有多字段的处理,你研究下; + Set userIds = convertSet(list, MesDvRepairDO::getAcceptedUserId); + userIds.addAll(convertSet(list, MesDvRepairDO::getConfirmUserId)); + Map userMap = adminUserApi.getUserMap(userIds); + // 2. 拼接 VO + return BeanUtils.toBean(list, MesDvRepairRespVO.class, vo -> { + MapUtils.findAndThen(machineryMap, vo.getMachineryId(), machinery -> vo + .setMachineryCode(machinery.getCode()).setMachineryName(machinery.getName()) + .setMachineryBrand(machinery.getBrand()).setMachinerySpec(machinery.getSpec())); + MapUtils.findAndThen(userMap, vo.getAcceptedUserId(), + user -> vo.setAcceptedUserNickname(user.getNickname())); + MapUtils.findAndThen(userMap, vo.getConfirmUserId(), + user -> vo.setConfirmUserNickname(user.getNickname())); + }); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairLineController.java new file mode 100644 index 0000000..b0e6ccf --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairLineController.java @@ -0,0 +1,122 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dv.repair; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.line.MesDvRepairLinePageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.line.MesDvRepairLineRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.line.MesDvRepairLineSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair.MesDvRepairLineDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.subject.MesDvSubjectDO; +import cn.iocoder.yudao.module.mes.service.dv.repair.MesDvRepairLineService; +import cn.iocoder.yudao.module.mes.service.dv.subject.MesDvSubjectService; +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.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; + +@Tag(name = "管理后台 - MES 维修工单行") +@RestController +@RequestMapping("/mes/dv/repair-line") +@Validated +public class MesDvRepairLineController { + + @Resource + private MesDvRepairLineService repairLineService; + + @Resource + private MesDvSubjectService subjectService; + + @PostMapping("/create") + @Operation(summary = "创建维修工单行") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:create')") + public CommonResult createRepairLine(@Valid @RequestBody MesDvRepairLineSaveReqVO createReqVO) { + return success(repairLineService.createRepairLine(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新维修工单行") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:update')") + public CommonResult updateRepairLine(@Valid @RequestBody MesDvRepairLineSaveReqVO updateReqVO) { + repairLineService.updateRepairLine(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除维修工单行") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:dv-repair:delete')") + public CommonResult deleteRepairLine(@RequestParam("id") Long id) { + repairLineService.deleteRepairLine(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得维修工单行") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:query')") + public CommonResult getRepairLine(@RequestParam("id") Long id) { + MesDvRepairLineDO repairLine = repairLineService.getRepairLine(id); + if (repairLine == null) { + return success(null); + } + return success(buildRepairLineRespVOList(Collections.singletonList(repairLine)).get(0)); + } + + @GetMapping("/page") + @Operation(summary = "获得维修工单行分页") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:query')") + public CommonResult> getRepairLinePage(@Valid MesDvRepairLinePageReqVO pageReqVO) { + PageResult pageResult = repairLineService.getRepairLinePage(pageReqVO); + return success(new PageResult<>(buildRepairLineRespVOList(pageResult.getList()), pageResult.getTotal())); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出维修工单行 Excel") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportRepairLineExcel(@Valid MesDvRepairLinePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = repairLineService.getRepairLinePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "维修工单行.xls", "数据", MesDvRepairLineRespVO.class, + buildRepairLineRespVOList(list)); + } + + // ==================== 拼接 VO ==================== + + private List buildRepairLineRespVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + // 1. 批量获取关联数据 + Map subjectMap = subjectService.getSubjectMap( + convertSet(list, MesDvRepairLineDO::getSubjectId)); + // 2. 拼接 VO + return BeanUtils.toBean(list, MesDvRepairLineRespVO.class, vo -> + MapUtils.findAndThen(subjectMap, vo.getSubjectId(), subject -> vo + .setSubjectName(subject.getName()).setSubjectContent(subject.getContent()) + .setSubjectStandard(subject.getStandard()))); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java new file mode 100644 index 0000000..633e830 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - MES 维修工单分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MesDvRepairPageReqVO extends PageParam { + + @Schema(description = "维修工单编码", example = "REP2024001") + private String code; + + @Schema(description = "维修工单名称", example = "注塑机维修") + private String name; + + @Schema(description = "状态", example = "10") + private Integer status; + + @Schema(description = "报修日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] requireDate; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairRespVO.java new file mode 100644 index 0000000..4833808 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairRespVO.java @@ -0,0 +1,102 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo; + +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import cn.iocoder.yudao.module.mes.enums.DictTypeConstants; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 维修工单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MesDvRepairRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "维修工单编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "REP2024001") + @ExcelProperty("维修工单编码") + private String code; + + @Schema(description = "维修工单名称", example = "注塑机液压系统维修") + @ExcelProperty("维修工单名称") + private String name; + + @Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long machineryId; + + @Schema(description = "设备编码", example = "M001") + @ExcelProperty("设备编码") + private String machineryCode; + + @Schema(description = "设备名称", example = "注塑机") + @ExcelProperty("设备名称") + private String machineryName; + + @Schema(description = "品牌", example = "西门子") + @ExcelProperty("品牌") + private String machineryBrand; + + @Schema(description = "规格型号", example = "X-100") + @ExcelProperty("规格型号") + private String machinerySpec; + + @Schema(description = "报修日期") + @ExcelProperty("报修日期") + private LocalDateTime requireDate; + + @Schema(description = "维修完成日期") + @ExcelProperty("维修完成日期") + private LocalDateTime finishDate; + + @Schema(description = "验收日期") + @ExcelProperty("验收日期") + private LocalDateTime confirmDate; + + @Schema(description = "维修结果", example = "1") + @ExcelProperty(value = "维修结果", converter = DictConvert.class) + @DictFormat(DictTypeConstants.MES_DV_REPAIR_RESULT) + private Integer result; + + @Schema(description = "维修人用户编号", example = "1") + private Long acceptedUserId; + + @Schema(description = "维修人名称", example = "张三") + @ExcelProperty("维修人") + private String acceptedUserNickname; + + @Schema(description = "验收人用户编号", example = "1") + private Long confirmUserId; + + @Schema(description = "验收人名称", example = "李四") + @ExcelProperty("验收人") + private String confirmUserNickname; + + @Schema(description = "来源单据类型", example = "1") + private Integer sourceDocType; + + @Schema(description = "来源单据编号", example = "1") + private Long sourceDocId; + + @Schema(description = "来源单据编码", example = "DOC001") + private String sourceDocCode; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") + @ExcelProperty(value = "状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.MES_DV_REPAIR_STATUS) + private Integer status; + + @Schema(description = "备注", example = "测试备注") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairSaveReqVO.java new file mode 100644 index 0000000..1ca4f77 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairSaveReqVO.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 维修工单新增/修改 Request VO") +@Data +public class MesDvRepairSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "1024") + private Long id; + + @Schema(description = "维修工单编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "REP2024001") + @NotBlank(message = "维修工单编码不能为空") + private String code; + + @Schema(description = "维修工单名称", example = "注塑机液压系统维修") + private String name; + + @Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "设备不能为空") + private Long machineryId; + + @Schema(description = "报修日期") + private LocalDateTime requireDate; + + @Schema(description = "维修完成日期") + private LocalDateTime finishDate; + + @Schema(description = "验收日期") + private LocalDateTime confirmDate; + + @Schema(description = "维修结果", example = "1") + private Integer result; + + @Schema(description = "维修人用户编号", example = "1") + private Long acceptedUserId; + + @Schema(description = "验收人用户编号", example = "1") + private Long confirmUserId; + + @Schema(description = "来源单据类型", example = "1") + private Integer sourceDocType; + + @Schema(description = "来源单据编号", example = "1") + private Long sourceDocId; + + @Schema(description = "来源单据编码", example = "DOC001") + private String sourceDocCode; + + // TODO @AI:这个字段,不允许提交 + @Schema(description = "状态", example = "10") + private Integer status; + + @Schema(description = "备注", example = "测试备注") + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLinePageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLinePageReqVO.java new file mode 100644 index 0000000..759fece --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLinePageReqVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.line; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - MES 维修工单行分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MesDvRepairLinePageReqVO extends PageParam { + + @Schema(description = "维修工单编号", example = "1") + private Long repairId; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLineRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLineRespVO.java new file mode 100644 index 0000000..3adcda5 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLineRespVO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.line; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 维修工单行 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MesDvRepairLineRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "维修工单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long repairId; + + @Schema(description = "点检保养项目编号", example = "1") + private Long subjectId; + + @Schema(description = "项目名称", example = "检查机油") + @ExcelProperty("项目名称") + private String subjectName; + + @Schema(description = "项目内容", example = "检查机油是否充足") + @ExcelProperty("项目内容") + private String subjectContent; + + @Schema(description = "项目标准", example = "无漏油") + @ExcelProperty("标准") + private String subjectStandard; + + @Schema(description = "故障描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "液压系统漏油") + @ExcelProperty("故障描述") + private String malfunction; + + @Schema(description = "故障图片 URL", example = "https://example.com/image.png") + private String malfunctionUrl; + + @Schema(description = "维修描述", example = "更换密封圈") + @ExcelProperty("维修描述") + private String description; + + @Schema(description = "备注", example = "测试备注") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLineSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLineSaveReqVO.java new file mode 100644 index 0000000..75c73c8 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/line/MesDvRepairLineSaveReqVO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.line; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +@Schema(description = "管理后台 - MES 维修工单行新增/修改 Request VO") +@Data +public class MesDvRepairLineSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "1024") + private Long id; + + @Schema(description = "维修工单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "维修工单不能为空") + private Long repairId; + + @Schema(description = "点检保养项目编号", example = "1") + private Long subjectId; + + @Schema(description = "故障描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "液压系统漏油") + @NotBlank(message = "故障描述不能为空") + private String malfunction; + + @Schema(description = "故障图片 URL", example = "https://example.com/image.png") + private String malfunctionUrl; + + @Schema(description = "维修描述", example = "更换密封圈") + private String description; + + @Schema(description = "备注", example = "测试备注") + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordDO.java index 7f7dee3..a4de3c2 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordDO.java @@ -52,6 +52,8 @@ public class MesDvMaintenRecordDO extends BaseDO { * 关联 AdminUserDO#getId() */ private Long userId; + // TODO @AI:搞个枚举类,关联下; + // TODO @AI:mes_mainten_record_status,需要在 dict contants 美剧侠,然后 @关联下; /** * 状态 * diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordLineDO.java index a8df96c..2dd68fb 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordLineDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/maintenrecord/MesDvMaintenRecordLineDO.java @@ -39,6 +39,8 @@ public class MesDvMaintenRecordLineDO extends BaseDO { * 关联 {@link MesDvSubjectDO#getId()} */ private Long subjectId; + // TODO @AI:搞个枚举类,关联下; + // TODO @AI:mes_mainten_status,需要在 dict contants 美剧侠,然后 @关联下; /** * 保养结果 * diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairDO.java new file mode 100644 index 0000000..0495bec --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairDO.java @@ -0,0 +1,120 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.machinery.MesDvMachineryDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +import java.time.LocalDateTime; + +/** + * MES 维修工单 DO + * + * @author 芋道源码 + */ +@TableName("mes_dv_repair") +@KeySequence("mes_dv_repair_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MesDvRepairDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 维修工单编码 + */ + private String code; + /** + * 维修工单名称 + */ + private String name; + /** + * 设备编号 + * + * 关联 {@link MesDvMachineryDO#getId()} + */ + private Long machineryId; + /** + * 报修日期 + */ + private LocalDateTime requireDate; + /** + * 维修完成日期 + */ + private LocalDateTime finishDate; + /** + * 验收日期 + */ + private LocalDateTime confirmDate; + // TODO @AI:枚举类; + // TODO @AI:字典,需要在 dict constants; + /** + * 维修结果 + * + * 字典类型 mes_dv_repair_result + */ + private Integer result; + /** + * 维修人用户编号 + * + * 关联 AdminUserDO#getId() + */ + private Long acceptedUserId; + /** + * 验收人用户编号 + * + * 关联 AdminUserDO#getId() + */ + private Long confirmUserId; + // TODO @芋艿:sourceDocType、sourceDocId、sourceDocCode 需要哪里处理; + /** + * 来源单据类型 + */ + private Integer sourceDocType; + /** + * 来源单据编号 + */ + private Long sourceDocId; + /** + * 来源单据编码 + */ + private String sourceDocCode; + // TODO @AI:枚举类; + // TODO @AI:字典,需要在 dict constants; + /** + * 状态 + * + * 字典类型 mes_dv_repair_status + */ + private Integer status; + /** + * 备注 + */ + 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/dv/repair/MesDvRepairLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairLineDO.java new file mode 100644 index 0000000..7f48df0 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dv/repair/MesDvRepairLineDO.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.subject.MesDvSubjectDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * MES 维修工单行 DO + * + * @author 芋道源码 + */ +@TableName("mes_dv_repair_line") +@KeySequence("mes_dv_repair_line_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MesDvRepairLineDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 维修工单编号 + * + * 关联 {@link MesDvRepairDO#getId()} + */ + private Long repairId; + /** + * 点检保养项目编号 + * + * 关联 {@link MesDvSubjectDO#getId()} + */ + private Long subjectId; + /** + * 故障描述 + */ + private String malfunction; + /** + * 故障图片 URL + */ + private String malfunctionUrl; + /** + * 维修描述 + */ + private String description; + /** + * 备注 + */ + 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/dv/repair/MesDvRepairLineMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairLineMapper.java new file mode 100644 index 0000000..af067e5 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairLineMapper.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.dv.repair; + +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.dv.repair.vo.line.MesDvRepairLinePageReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair.MesDvRepairLineDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * MES 维修工单行 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface MesDvRepairLineMapper extends BaseMapperX { + + default PageResult selectPage(MesDvRepairLinePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MesDvRepairLineDO::getRepairId, reqVO.getRepairId()) + .orderByDesc(MesDvRepairLineDO::getId)); + } + + default List selectListByRepairId(Long repairId) { + return selectList(MesDvRepairLineDO::getRepairId, repairId); + } + + default int deleteByRepairId(Long repairId) { + return delete(MesDvRepairLineDO::getRepairId, repairId); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java new file mode 100644 index 0000000..d96dfc3 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.dv.repair; + +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.dv.repair.vo.MesDvRepairPageReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair.MesDvRepairDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * MES 维修工单 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface MesDvRepairMapper extends BaseMapperX { + + default PageResult selectPage(MesDvRepairPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(MesDvRepairDO::getCode, reqVO.getCode()) + .likeIfPresent(MesDvRepairDO::getName, reqVO.getName()) + .eqIfPresent(MesDvRepairDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(MesDvRepairDO::getRequireDate, reqVO.getRequireDate()) + .orderByDesc(MesDvRepairDO::getId)); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvCheckRecordStatusEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvCheckRecordStatusEnum.java new file mode 100644 index 0000000..ce675a1 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/dv/MesDvCheckRecordStatusEnum.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.mes.enums.dv; + +import cn.iocoder.yudao.framework.common.core.ArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * MES 设备点检记录状态枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum MesDvCheckRecordStatusEnum implements ArrayValuable { + + DRAFT(10, "草稿"), + FINISHED(20, "已完成"); + + public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesDvCheckRecordStatusEnum::getStatus).toArray(Integer[]::new); + + /** + * 状态值 + */ + private final Integer status; + /** + * 状态名 + */ + private final String name; + + @Override + public Integer[] array() { + return ARRAYS; + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordLineServiceImpl.java index 49737de..e1af013 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordLineServiceImpl.java @@ -37,6 +37,7 @@ public class MesDvMaintenRecordLineServiceImpl implements MesDvMaintenRecordLine public Long createMaintenRecordLine(MesDvMaintenRecordLineSaveReqVO createReqVO) { // 1. 校验关联数据 validateMaintenRecordLineRelation(createReqVO); + // TODO @AI:已提交时,不允许编辑(最好对方提供一个通用方法) // 2. 插入 MesDvMaintenRecordLineDO maintenRecordLine = BeanUtils.toBean(createReqVO, MesDvMaintenRecordLineDO.class); @@ -58,7 +59,11 @@ public class MesDvMaintenRecordLineServiceImpl implements MesDvMaintenRecordLine @Override public void deleteMaintenRecordLine(Long id) { + // 1. 校验存在 validateMaintenRecordLineExists(id); + // TODO @AI:已提交时,不允许删除;(最好对方提供一个通用方法) + + // 2. 删除 maintenRecordLineMapper.deleteById(id); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordServiceImpl.java index ebea183..89e3ca3 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/maintenrecord/MesDvMaintenRecordServiceImpl.java @@ -42,6 +42,7 @@ public class MesDvMaintenRecordServiceImpl implements MesDvMaintenRecordService // 2. 插入 MesDvMaintenRecordDO maintenRecord = BeanUtils.toBean(createReqVO, MesDvMaintenRecordDO.class); + // TODO @AI:设置下默认状态; maintenRecordMapper.insert(maintenRecord); return maintenRecord.getId(); } @@ -52,9 +53,11 @@ public class MesDvMaintenRecordServiceImpl implements MesDvMaintenRecordService validateMaintenRecordExists(updateReqVO.getId()); // 1.2 校验关联数据 validateMaintenRecordRelation(updateReqVO); + // TODO @AI:已提交时,不允许编辑 // 2. 更新 MesDvMaintenRecordDO updateObj = BeanUtils.toBean(updateReqVO, MesDvMaintenRecordDO.class); + // TODO 设置为空,避免更新; maintenRecordMapper.updateById(updateObj); } @@ -63,6 +66,7 @@ public class MesDvMaintenRecordServiceImpl implements MesDvMaintenRecordService public void deleteMaintenRecord(Long id) { // 校验存在 validateMaintenRecordExists(id); + // TODO @AI:已提交时,不允许删除 // 删除 maintenRecordMapper.deleteById(id); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineService.java new file mode 100644 index 0000000..e1e37bb --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.mes.service.dv.repair; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.line.MesDvRepairLinePageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.line.MesDvRepairLineSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair.MesDvRepairLineDO; + +import jakarta.validation.Valid; + +/** + * MES 维修工单行 Service 接口 + * + * @author 芋道源码 + */ +public interface MesDvRepairLineService { + + /** + * 创建维修工单行 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createRepairLine(@Valid MesDvRepairLineSaveReqVO createReqVO); + + /** + * 更新维修工单行 + * + * @param updateReqVO 更新信息 + */ + void updateRepairLine(@Valid MesDvRepairLineSaveReqVO updateReqVO); + + /** + * 删除维修工单行 + * + * @param id 编号 + */ + void deleteRepairLine(Long id); + + /** + * 获得维修工单行 + * + * @param id 编号 + * @return 维修工单行 + */ + MesDvRepairLineDO getRepairLine(Long id); + + /** + * 获得维修工单行分页 + * + * @param pageReqVO 分页查询 + * @return 维修工单行分页 + */ + PageResult getRepairLinePage(MesDvRepairLinePageReqVO pageReqVO); + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java new file mode 100644 index 0000000..901cbae --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.module.mes.service.dv.repair; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.line.MesDvRepairLinePageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.line.MesDvRepairLineSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair.MesDvRepairLineDO; +import cn.iocoder.yudao.module.mes.dal.mysql.dv.repair.MesDvRepairLineMapper; +import cn.iocoder.yudao.module.mes.service.dv.subject.MesDvSubjectService; +import jakarta.annotation.Resource; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +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 MesDvRepairLineServiceImpl implements MesDvRepairLineService { + + @Resource + private MesDvRepairLineMapper repairLineMapper; + + @Resource + @Lazy + private MesDvRepairService repairService; + @Resource + private MesDvSubjectService subjectService; + + @Override + public Long createRepairLine(MesDvRepairLineSaveReqVO createReqVO) { + // 1. 校验关联数据 + validateRepairLineRelation(createReqVO); + // TODO @AI:关联数据的状态的校验(最好对方提供的方法) + + // 2. 插入 + MesDvRepairLineDO repairLine = BeanUtils.toBean(createReqVO, MesDvRepairLineDO.class); + repairLineMapper.insert(repairLine); + return repairLine.getId(); + } + + @Override + public void updateRepairLine(MesDvRepairLineSaveReqVO updateReqVO) { + // 1.1 校验存在 + validateRepairLineExists(updateReqVO.getId()); + // 1.2 校验关联数据 + validateRepairLineRelation(updateReqVO); + // TODO @AI:关联数据的状态的校验(最好对方提供的方法) + + // 2. 更新 + MesDvRepairLineDO updateObj = BeanUtils.toBean(updateReqVO, MesDvRepairLineDO.class); + repairLineMapper.updateById(updateObj); + } + + @Override + public void deleteRepairLine(Long id) { + // 校验存在 + validateRepairLineExists(id); + // TODO @AI:关联数据的状态的校验(最好对方提供的方法) + + // 删除 + repairLineMapper.deleteById(id); + } + + private void validateRepairLineRelation(MesDvRepairLineSaveReqVO reqVO) { + // 校验维修工单是否存在 + repairService.validateRepairExists(reqVO.getRepairId()); + // 校验点检保养项目是否存在(可选) + if (reqVO.getSubjectId() != null) { + subjectService.validateSubjectExists(reqVO.getSubjectId()); + } + } + + private void validateRepairLineExists(Long id) { + if (repairLineMapper.selectById(id) == null) { + throw exception(DV_REPAIR_LINE_NOT_EXISTS); + } + } + + @Override + public MesDvRepairLineDO getRepairLine(Long id) { + return repairLineMapper.selectById(id); + } + + @Override + public PageResult getRepairLinePage(MesDvRepairLinePageReqVO pageReqVO) { + return repairLineMapper.selectPage(pageReqVO); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairService.java new file mode 100644 index 0000000..6610cfa --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.mes.service.dv.repair; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair.MesDvRepairDO; + +import jakarta.validation.Valid; + +/** + * MES 维修工单 Service 接口 + * + * @author 芋道源码 + */ +public interface MesDvRepairService { + + /** + * 创建维修工单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createRepair(@Valid MesDvRepairSaveReqVO createReqVO); + + /** + * 更新维修工单 + * + * @param updateReqVO 更新信息 + */ + void updateRepair(@Valid MesDvRepairSaveReqVO updateReqVO); + + /** + * 删除维修工单 + * + * @param id 编号 + */ + void deleteRepair(Long id); + + /** + * 校验维修工单是否存在 + * + * @param id 编号 + */ + void validateRepairExists(Long id); + + /** + * 获得维修工单 + * + * @param id 编号 + * @return 维修工单 + */ + MesDvRepairDO getRepair(Long id); + + /** + * 获得维修工单分页 + * + * @param pageReqVO 分页查询 + * @return 维修工单分页 + */ + PageResult getRepairPage(MesDvRepairPageReqVO pageReqVO); + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java new file mode 100644 index 0000000..8f67f38 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java @@ -0,0 +1,94 @@ +package cn.iocoder.yudao.module.mes.service.dv.repair; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair.MesDvRepairDO; +import cn.iocoder.yudao.module.mes.dal.mysql.dv.repair.MesDvRepairLineMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.dv.repair.MesDvRepairMapper; +import cn.iocoder.yudao.module.mes.service.dv.machinery.MesDvMachineryService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +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 MesDvRepairServiceImpl implements MesDvRepairService { + + @Resource + private MesDvRepairMapper repairMapper; + @Resource + private MesDvRepairLineMapper repairLineMapper; + @Resource + private MesDvMachineryService machineryService; + + @Override + public Long createRepair(MesDvRepairSaveReqVO createReqVO) { + // 1. 校验关联数据 + validateRepairRelation(createReqVO); + + // 2. 插入 + MesDvRepairDO repair = BeanUtils.toBean(createReqVO, MesDvRepairDO.class); + // TODO @AI:status + repairMapper.insert(repair); + return repair.getId(); + } + + @Override + public void updateRepair(MesDvRepairSaveReqVO updateReqVO) { + // 1.1 校验存在 + validateRepairExists(updateReqVO.getId()); + // 1.2 校验关联数据 + validateRepairRelation(updateReqVO); + + // 2. 更新 + MesDvRepairDO updateObj = BeanUtils.toBean(updateReqVO, MesDvRepairDO.class); + // TODO @AI:status + repairMapper.updateById(updateObj); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteRepair(Long id) { + // 校验存在 + validateRepairExists(id); + + // 删除 + repairMapper.deleteById(id); + // 级联删除子表 + repairLineMapper.deleteByRepairId(id); + } + + private void validateRepairRelation(MesDvRepairSaveReqVO reqVO) { + // 校验设备是否存在 + machineryService.validateMachineryExists(reqVO.getMachineryId()); + } + + @Override + public void validateRepairExists(Long id) { + if (repairMapper.selectById(id) == null) { + throw exception(DV_REPAIR_NOT_EXISTS); + } + } + + @Override + public MesDvRepairDO getRepair(Long id) { + return repairMapper.selectById(id); + } + + @Override + public PageResult getRepairPage(MesDvRepairPageReqVO pageReqVO) { + return repairMapper.selectPage(pageReqVO); + } + +} -- libgit2 0.21.4