From 1e18240afc8003710d072478ea340fdac07a9cc9 Mon Sep 17 00:00:00 2001 From: chenyuan <1154693969@qq.com> Date: Thu, 1 Aug 2024 17:31:09 +0800 Subject: [PATCH] add mold record --- .../module/mes/enums/ErrorCodeConstants.java | 3 + .../moldrecord/MoldRecordController.java | 104 ++++++++++++ .../moldrecord/vo/MoldRecordPageReqVO.java | 62 +++++++ .../admin/moldrecord/vo/MoldRecordRespVO.java | 71 ++++++++ .../moldrecord/vo/MoldRecordSaveReqVO.java | 60 +++++++ .../MoldRecordSubjectController.java | 93 ++++++++++ .../vo/MoldRecordSubjectPageReqVO.java | 24 +++ .../vo/MoldRecordSubjectRespVO.java | 36 ++++ .../vo/MoldRecordSubjectSaveReqVO.java | 22 +++ .../dataobject/moldrecord/MoldRecordDO.java | 85 ++++++++++ .../moldrecord/MoldRecordSubjectDetailDO.java | 53 ++++++ .../MoldRecordSubjectDO.java | 39 +++++ .../mysql/moldrecord/MoldRecordMapper.java | 35 ++++ .../MoldRecordSubjectDetailMapper.java | 28 +++ .../MoldRecordSubjectMapper.java | 27 +++ .../service/moldrecord/MoldRecordService.java | 67 ++++++++ .../moldrecord/MoldRecordServiceImpl.java | 111 ++++++++++++ .../MoldRecordSubjectService.java | 55 ++++++ .../MoldRecordSubjectServiceImpl.java | 71 ++++++++ .../mapper/moldrecord/MoldRecordMapper.xml | 12 ++ .../MoldRecordSubjectMapper.xml | 12 ++ .../moldrecord/MoldRecordServiceImplTest.java | 159 ++++++++++++++++++ .../MoldRecordSubjectServiceImplTest.java | 126 ++++++++++++++ .../src/test/resources/sql/clean.sql | 4 +- .../src/test/resources/sql/create_tables.sql | 51 ++++++ 25 files changed, 1409 insertions(+), 1 deletion(-) create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/MoldRecordController.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordPageReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordRespVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordSaveReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/MoldRecordSubjectController.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectPageReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectRespVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectSaveReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecord/MoldRecordDO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecord/MoldRecordSubjectDetailDO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecordsubject/MoldRecordSubjectDO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecord/MoldRecordMapper.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecord/MoldRecordSubjectDetailMapper.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecordsubject/MoldRecordSubjectMapper.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordService.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImpl.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectService.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectServiceImpl.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrecord/MoldRecordMapper.xml create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrecordsubject/MoldRecordSubjectMapper.xml create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImplTest.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectServiceImplTest.java diff --git a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index ababcfbcb..73aa7380d 100644 --- a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -64,4 +64,7 @@ public interface ErrorCodeConstants { ErrorCode ENERGY_DEVICE_NOT_EXISTS = new ErrorCode(5_0084, "能源抄表记录不存在"); ErrorCode ENERGY_DEVICE_CHECK_RECORD_NOT_EXISTS = new ErrorCode(5_0085, "能源设备不存在"); + ErrorCode MOLD_RECORD_SUBJECT_NOT_EXISTS = new ErrorCode(5_0086, "维保项目不存在"); + ErrorCode MOLD_RECORD_NOT_EXISTS = new ErrorCode(5_0087, "模具维保不存在"); + } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/MoldRecordController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/MoldRecordController.java new file mode 100644 index 000000000..9bfc07e45 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/MoldRecordController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrecord; + +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.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord.MoldRecordDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord.MoldRecordSubjectDetailDO; +import cn.iocoder.yudao.module.mes.service.moldrecord.MoldRecordService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 模具维保") +@RestController +@RequestMapping("/mes/mold-record") +@Validated +public class MoldRecordController { + + @Resource + private MoldRecordService moldRecordService; + + @PostMapping("/create") + @Operation(summary = "创建模具维保") + @PreAuthorize("@ss.hasPermission('mes:mold-record:create')") + public CommonResult createMoldRecord(@Valid @RequestBody MoldRecordSaveReqVO createReqVO) { + return success(moldRecordService.createMoldRecord(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模具维保") + @PreAuthorize("@ss.hasPermission('mes:mold-record:update')") + public CommonResult updateMoldRecord(@Valid @RequestBody MoldRecordSaveReqVO updateReqVO) { + moldRecordService.updateMoldRecord(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除模具维保") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:mold-record:delete')") + public CommonResult deleteMoldRecord(@RequestParam("id") Long id) { + moldRecordService.deleteMoldRecord(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得模具维保") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:mold-record:query')") + public CommonResult getMoldRecord(@RequestParam("id") Long id) { + MoldRecordDO moldRecord = moldRecordService.getMoldRecord(id); + return success(BeanUtils.toBean(moldRecord, MoldRecordRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得模具维保分页") + @PreAuthorize("@ss.hasPermission('mes:mold-record:query')") + public CommonResult> getMoldRecordPage(@Valid MoldRecordPageReqVO pageReqVO) { + PageResult pageResult = moldRecordService.getMoldRecordPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MoldRecordRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出模具维保 Excel") + @PreAuthorize("@ss.hasPermission('mes:mold-record:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMoldRecordExcel(@Valid MoldRecordPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = moldRecordService.getMoldRecordPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "模具维保.xls", "数据", MoldRecordRespVO.class, + BeanUtils.toBean(list, MoldRecordRespVO.class)); + } + + // ==================== 子表(模具维保明细) ==================== + + @GetMapping("/mold-record-subject-detail/list-by-record-id") + @Operation(summary = "获得模具维保明细列表") + @Parameter(name = "recordId", description = "维保记录id") + @PreAuthorize("@ss.hasPermission('mes:mold-record:query')") + public CommonResult> getMoldRecordSubjectDetailListByRecordId(@RequestParam("recordId") Long recordId) { + return success(moldRecordService.getMoldRecordSubjectDetailListByRecordId(recordId)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordPageReqVO.java new file mode 100644 index 000000000..20d8fc985 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordPageReqVO.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrecord.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 = "管理后台 - 模具维保分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MoldRecordPageReqVO extends PageParam { + /** + * 编码 + */ + @Schema(description = "单号") + private String code; + @Schema(description = "流程ID") + private String flowCode; + + @Schema(description = "模具型号ID", example = "17427") + private Long brandId; + + @Schema(description = "模具ID", example = "21232") + private Long moldId; + + @Schema(description = "前模具ID", example = "23487") + private Long oldMoldId; + + @Schema(description = "机台ID", example = "1825") + private Long machineId; + + @Schema(description = "负责人ID", example = "27306") + private Long userId; + + @Schema(description = "单据类型", example = "2") + private String recordType; + + @Schema(description = "状态", example = "2") + private String recordStatus; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startTime; + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endTime; +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordRespVO.java new file mode 100644 index 000000000..6f199c3cc --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordRespVO.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo; + +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 模具维保 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MoldRecordRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30464") + @ExcelProperty("ID") + private Long id; + @Schema(description = "单号") + @ExcelProperty("单号") + private String code; + @Schema(description = "流程ID") + @ExcelProperty("流程ID") + private String flowCode; + + @Schema(description = "模具型号ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17427") + @ExcelProperty("模具型号ID") + private Long brandId; + + @Schema(description = "模具ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21232") + @ExcelProperty("模具ID") + private Long moldId; + + @Schema(description = "前模具ID", example = "23487") + @ExcelProperty("前模具ID") + private Long oldMoldId; + + @Schema(description = "机台ID", example = "1825") + @ExcelProperty("机台ID") + private Long machineId; + + @Schema(description = "负责人ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27306") + @ExcelProperty("负责人ID") + private Long userId; + + @Schema(description = "单据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty(value = "单据类型", converter = DictConvert.class) + @DictFormat("mes_mold_record_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String recordType; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty(value = "状态", converter = DictConvert.class) + @DictFormat("mes_mold_record_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String recordStatus; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + @Schema(description = "开始时间") + @ExcelProperty("开始时间") + private LocalDateTime startTime; + + @Schema(description = "结束时间") + @ExcelProperty("结束时间") + private LocalDateTime endTime; +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordSaveReqVO.java new file mode 100644 index 000000000..1a0b9670a --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecord/vo/MoldRecordSaveReqVO.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo; + +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord.MoldRecordSubjectDetailDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 模具维保新增/修改 Request VO") +@Data +public class MoldRecordSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30464") + private Long id; + @Schema(description = "单号") + private String code; + @Schema(description = "流程ID") + private String flowCode; + + @Schema(description = "模具型号ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17427") + @NotNull(message = "模具型号ID不能为空") + private Long brandId; + + @Schema(description = "模具ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21232") + @NotNull(message = "模具ID不能为空") + private Long moldId; + + @Schema(description = "前模具ID", example = "23487") + private Long oldMoldId; + + @Schema(description = "机台ID", example = "1825") + private Long machineId; + + @Schema(description = "负责人ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27306") + @NotNull(message = "负责人ID不能为空") + private Long userId; + + @Schema(description = "单据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "单据类型不能为空") + private String recordType; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "状态不能为空") + private String recordStatus; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") + @NotEmpty(message = "备注不能为空") + private String remark; + + @Schema(description = "模具维保明细列表") + private List moldRecordSubjectDetails; + @Schema(description = "开始时间") + private LocalDateTime startTime; + + @Schema(description = "结束时间") + private LocalDateTime endTime; +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/MoldRecordSubjectController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/MoldRecordSubjectController.java new file mode 100644 index 000000000..fbd483b3f --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/MoldRecordSubjectController.java @@ -0,0 +1,93 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject; + +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.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo.MoldRecordSubjectPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo.MoldRecordSubjectRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo.MoldRecordSubjectSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecordsubject.MoldRecordSubjectDO; +import cn.iocoder.yudao.module.mes.service.moldrecordsubject.MoldRecordSubjectService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 维保项目") +@RestController +@RequestMapping("/mes/mold-record-subject") +@Validated +public class MoldRecordSubjectController { + + @Resource + private MoldRecordSubjectService moldRecordSubjectService; + + @PostMapping("/create") + @Operation(summary = "创建维保项目") + @PreAuthorize("@ss.hasPermission('mes:mold-record-subject:create')") + public CommonResult createMoldRecordSubject(@Valid @RequestBody MoldRecordSubjectSaveReqVO createReqVO) { + return success(moldRecordSubjectService.createMoldRecordSubject(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新维保项目") + @PreAuthorize("@ss.hasPermission('mes:mold-record-subject:update')") + public CommonResult updateMoldRecordSubject(@Valid @RequestBody MoldRecordSubjectSaveReqVO updateReqVO) { + moldRecordSubjectService.updateMoldRecordSubject(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除维保项目") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:mold-record-subject:delete')") + public CommonResult deleteMoldRecordSubject(@RequestParam("id") Long id) { + moldRecordSubjectService.deleteMoldRecordSubject(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得维保项目") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:mold-record-subject:query')") + public CommonResult getMoldRecordSubject(@RequestParam("id") Long id) { + MoldRecordSubjectDO moldRecordSubject = moldRecordSubjectService.getMoldRecordSubject(id); + return success(BeanUtils.toBean(moldRecordSubject, MoldRecordSubjectRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得维保项目分页") + @PreAuthorize("@ss.hasPermission('mes:mold-record-subject:query')") + public CommonResult> getMoldRecordSubjectPage(@Valid MoldRecordSubjectPageReqVO pageReqVO) { + PageResult pageResult = moldRecordSubjectService.getMoldRecordSubjectPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MoldRecordSubjectRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出维保项目 Excel") + @PreAuthorize("@ss.hasPermission('mes:mold-record-subject:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMoldRecordSubjectExcel(@Valid MoldRecordSubjectPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = moldRecordSubjectService.getMoldRecordSubjectPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "维保项目.xls", "数据", MoldRecordSubjectRespVO.class, + BeanUtils.toBean(list, MoldRecordSubjectRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectPageReqVO.java new file mode 100644 index 000000000..509e7b7af --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectPageReqVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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 = "管理后台 - 维保项目分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MoldRecordSubjectPageReqVO extends PageParam { + + @Schema(description = "项目") + private String subject; + + @Schema(description = "预期") + private String expect; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectRespVO.java new file mode 100644 index 000000000..68517a5a0 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectRespVO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 维保项目 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MoldRecordSubjectRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32394") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "项目", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("项目") + private String subject; + + @Schema(description = "预期") + @ExcelProperty("预期") + private String expect; + + @Schema(description = "创建者") + @ExcelProperty("创建者") + private String creator; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectSaveReqVO.java new file mode 100644 index 000000000..30cf451b2 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrecordsubject/vo/MoldRecordSubjectSaveReqVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Schema(description = "管理后台 - 维保项目新增/修改 Request VO") +@Data +public class MoldRecordSubjectSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32394") + private Long id; + + @Schema(description = "项目", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "项目不能为空") + private String subject; + + @Schema(description = "预期") + private String expect; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecord/MoldRecordDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecord/MoldRecordDO.java new file mode 100644 index 000000000..c0e5acded --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecord/MoldRecordDO.java @@ -0,0 +1,85 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.sun.xml.bind.v2.TODO; +import lombok.*; + +import java.time.LocalDateTime; + +/** + * 模具维保 DO + * + * @author 内蒙必硕 + */ +@TableName("mes_mold_record") +@KeySequence("mes_mold_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MoldRecordDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 流程ID + */ + private String flowCode; + /** + * 单号 + */ + private String code; + /** + * 模具型号ID + */ + private Long brandId; + /** + * 模具ID + */ + private Long moldId; + /** + * 前模具ID + */ + private Long oldMoldId; + /** + * 机台ID + */ + private Long machineId; + /** + * 负责人ID + */ + private Long userId; + /** + * 单据类型 + * + * 枚举 {@link TODO mes_mold_record_type 对应的类} + */ + private String recordType; + /** + * 状态 + * + * 枚举 {@link TODO mes_mold_record_status 对应的类} + */ + private String recordStatus; + /** + * 备注 + */ + private String remark; + /** + * 开始时间 + */ + private LocalDateTime startTime; + /** + * 结束时间 + */ + private LocalDateTime endTime; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecord/MoldRecordSubjectDetailDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecord/MoldRecordSubjectDetailDO.java new file mode 100644 index 000000000..dc7dc152b --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecord/MoldRecordSubjectDetailDO.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 模具维保明细 DO + * + * @author 内蒙必硕 + */ +@TableName("mes_mold_record_subject_detail") +@KeySequence("mes_mold_record_subject_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MoldRecordSubjectDetailDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 项目 + */ + private String subject; + /** + * 预期 + */ + private String expect; + /** + * 结果 + */ + private String result; + /** + * 明细状态 + * + * 枚举 {@link TODO mes_pass_or_nopass 对应的类} + */ + private String detailStatus; + /** + * 维保记录id + */ + private Long recordId; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecordsubject/MoldRecordSubjectDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecordsubject/MoldRecordSubjectDO.java new file mode 100644 index 000000000..96edc0d20 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrecordsubject/MoldRecordSubjectDO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.moldrecordsubject; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 维保项目 DO + * + * @author 内蒙必硕 + */ +@TableName("mes_mold_record_subject") +@KeySequence("mes_mold_record_subject_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MoldRecordSubjectDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 项目 + */ + private String subject; + /** + * 预期 + */ + private String expect; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecord/MoldRecordMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecord/MoldRecordMapper.java new file mode 100644 index 000000000..f04bb811f --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecord/MoldRecordMapper.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.moldrecord; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord.MoldRecordDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.*; + +/** + * 模具维保 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface MoldRecordMapper extends BaseMapperX { + + default PageResult selectPage(MoldRecordPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MoldRecordDO::getFlowCode, reqVO.getFlowCode()) + .eqIfPresent(MoldRecordDO::getBrandId, reqVO.getBrandId()) + .eqIfPresent(MoldRecordDO::getMoldId, reqVO.getMoldId()) + .eqIfPresent(MoldRecordDO::getOldMoldId, reqVO.getOldMoldId()) + .eqIfPresent(MoldRecordDO::getMachineId, reqVO.getMachineId()) + .eqIfPresent(MoldRecordDO::getUserId, reqVO.getUserId()) + .eqIfPresent(MoldRecordDO::getRecordType, reqVO.getRecordType()) + .eqIfPresent(MoldRecordDO::getRecordStatus, reqVO.getRecordStatus()) + .eqIfPresent(MoldRecordDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(MoldRecordDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MoldRecordDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecord/MoldRecordSubjectDetailMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecord/MoldRecordSubjectDetailMapper.java new file mode 100644 index 000000000..88d23500a --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecord/MoldRecordSubjectDetailMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.moldrecord; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord.MoldRecordSubjectDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 模具维保明细 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface MoldRecordSubjectDetailMapper extends BaseMapperX { + + default List selectListByRecordId(Long recordId) { + return selectList(MoldRecordSubjectDetailDO::getRecordId, recordId); + } + + default int deleteByRecordId(Long recordId) { + return delete(MoldRecordSubjectDetailDO::getRecordId, recordId); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecordsubject/MoldRecordSubjectMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecordsubject/MoldRecordSubjectMapper.java new file mode 100644 index 000000000..682325e9f --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrecordsubject/MoldRecordSubjectMapper.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.moldrecordsubject; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecordsubject.MoldRecordSubjectDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo.*; + +/** + * 维保项目 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface MoldRecordSubjectMapper extends BaseMapperX { + + default PageResult selectPage(MoldRecordSubjectPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MoldRecordSubjectDO::getSubject, reqVO.getSubject()) + .eqIfPresent(MoldRecordSubjectDO::getExpect, reqVO.getExpect()) + .orderByDesc(MoldRecordSubjectDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordService.java new file mode 100644 index 000000000..48d3e917b --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordService.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.mes.service.moldrecord; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord.MoldRecordDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord.MoldRecordSubjectDetailDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 模具维保 Service 接口 + * + * @author 内蒙必硕 + */ +public interface MoldRecordService { + + /** + * 创建模具维保 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMoldRecord(@Valid MoldRecordSaveReqVO createReqVO); + + /** + * 更新模具维保 + * + * @param updateReqVO 更新信息 + */ + void updateMoldRecord(@Valid MoldRecordSaveReqVO updateReqVO); + + /** + * 删除模具维保 + * + * @param id 编号 + */ + void deleteMoldRecord(Long id); + + /** + * 获得模具维保 + * + * @param id 编号 + * @return 模具维保 + */ + MoldRecordDO getMoldRecord(Long id); + + /** + * 获得模具维保分页 + * + * @param pageReqVO 分页查询 + * @return 模具维保分页 + */ + PageResult getMoldRecordPage(MoldRecordPageReqVO pageReqVO); + + // ==================== 子表(模具维保明细) ==================== + + /** + * 获得模具维保明细列表 + * + * @param recordId 维保记录id + * @return 模具维保明细列表 + */ + List getMoldRecordSubjectDetailListByRecordId(Long recordId); + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImpl.java new file mode 100644 index 000000000..526bad39e --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImpl.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.mes.service.moldrecord; + +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.moldrecord.vo.MoldRecordPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord.MoldRecordDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord.MoldRecordSubjectDetailDO; +import cn.iocoder.yudao.module.mes.dal.mysql.moldrecord.MoldRecordMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.moldrecord.MoldRecordSubjectDetailMapper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MOLD_RECORD_NOT_EXISTS; + +/** + * 模具维保 Service 实现类 + * + * @author 内蒙必硕 + */ +@Service +@Validated +public class MoldRecordServiceImpl implements MoldRecordService { + + @Resource + private MoldRecordMapper moldRecordMapper; + @Resource + private MoldRecordSubjectDetailMapper moldRecordSubjectDetailMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createMoldRecord(MoldRecordSaveReqVO createReqVO) { + // 插入 + MoldRecordDO moldRecord = BeanUtils.toBean(createReqVO, MoldRecordDO.class); + moldRecordMapper.insert(moldRecord); + + // 插入子表 + createMoldRecordSubjectDetailList(moldRecord.getId(), createReqVO.getMoldRecordSubjectDetails()); + // 返回 + return moldRecord.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateMoldRecord(MoldRecordSaveReqVO updateReqVO) { + // 校验存在 + validateMoldRecordExists(updateReqVO.getId()); + // 更新 + MoldRecordDO updateObj = BeanUtils.toBean(updateReqVO, MoldRecordDO.class); + moldRecordMapper.updateById(updateObj); + + // 更新子表 + updateMoldRecordSubjectDetailList(updateReqVO.getId(), updateReqVO.getMoldRecordSubjectDetails()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteMoldRecord(Long id) { + // 校验存在 + validateMoldRecordExists(id); + // 删除 + moldRecordMapper.deleteById(id); + + // 删除子表 + deleteMoldRecordSubjectDetailByRecordId(id); + } + + private void validateMoldRecordExists(Long id) { + if (moldRecordMapper.selectById(id) == null) { + throw exception(MOLD_RECORD_NOT_EXISTS); + } + } + + @Override + public MoldRecordDO getMoldRecord(Long id) { + return moldRecordMapper.selectById(id); + } + + @Override + public PageResult getMoldRecordPage(MoldRecordPageReqVO pageReqVO) { + return moldRecordMapper.selectPage(pageReqVO); + } + + // ==================== 子表(模具维保明细) ==================== + + @Override + public List getMoldRecordSubjectDetailListByRecordId(Long recordId) { + return moldRecordSubjectDetailMapper.selectListByRecordId(recordId); + } + + private void createMoldRecordSubjectDetailList(Long recordId, List list) { + list.forEach(o -> o.setRecordId(recordId)); + moldRecordSubjectDetailMapper.insertBatch(list); + } + + private void updateMoldRecordSubjectDetailList(Long recordId, List list) { + deleteMoldRecordSubjectDetailByRecordId(recordId); + list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + createMoldRecordSubjectDetailList(recordId, list); + } + + private void deleteMoldRecordSubjectDetailByRecordId(Long recordId) { + moldRecordSubjectDetailMapper.deleteByRecordId(recordId); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectService.java new file mode 100644 index 000000000..5b86429ea --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.mes.service.moldrecordsubject; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo.MoldRecordSubjectPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo.MoldRecordSubjectSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecordsubject.MoldRecordSubjectDO; + +import javax.validation.Valid; + +/** + * 维保项目 Service 接口 + * + * @author 内蒙必硕 + */ +public interface MoldRecordSubjectService { + + /** + * 创建维保项目 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMoldRecordSubject(@Valid MoldRecordSubjectSaveReqVO createReqVO); + + /** + * 更新维保项目 + * + * @param updateReqVO 更新信息 + */ + void updateMoldRecordSubject(@Valid MoldRecordSubjectSaveReqVO updateReqVO); + + /** + * 删除维保项目 + * + * @param id 编号 + */ + void deleteMoldRecordSubject(Long id); + + /** + * 获得维保项目 + * + * @param id 编号 + * @return 维保项目 + */ + MoldRecordSubjectDO getMoldRecordSubject(Long id); + + /** + * 获得维保项目分页 + * + * @param pageReqVO 分页查询 + * @return 维保项目分页 + */ + PageResult getMoldRecordSubjectPage(MoldRecordSubjectPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectServiceImpl.java new file mode 100644 index 000000000..ef138fcb9 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectServiceImpl.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.mes.service.moldrecordsubject; + +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.moldrecordsubject.vo.MoldRecordSubjectPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo.MoldRecordSubjectSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecordsubject.MoldRecordSubjectDO; +import cn.iocoder.yudao.module.mes.dal.mysql.moldrecordsubject.MoldRecordSubjectMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MOLD_RECORD_SUBJECT_NOT_EXISTS; + +/** + * 维保项目 Service 实现类 + * + * @author 内蒙必硕 + */ +@Service +@Validated +public class MoldRecordSubjectServiceImpl implements MoldRecordSubjectService { + + @Resource + private MoldRecordSubjectMapper moldRecordSubjectMapper; + + @Override + public Long createMoldRecordSubject(MoldRecordSubjectSaveReqVO createReqVO) { + // 插入 + MoldRecordSubjectDO moldRecordSubject = BeanUtils.toBean(createReqVO, MoldRecordSubjectDO.class); + moldRecordSubjectMapper.insert(moldRecordSubject); + // 返回 + return moldRecordSubject.getId(); + } + + @Override + public void updateMoldRecordSubject(MoldRecordSubjectSaveReqVO updateReqVO) { + // 校验存在 + validateMoldRecordSubjectExists(updateReqVO.getId()); + // 更新 + MoldRecordSubjectDO updateObj = BeanUtils.toBean(updateReqVO, MoldRecordSubjectDO.class); + moldRecordSubjectMapper.updateById(updateObj); + } + + @Override + public void deleteMoldRecordSubject(Long id) { + // 校验存在 + validateMoldRecordSubjectExists(id); + // 删除 + moldRecordSubjectMapper.deleteById(id); + } + + private void validateMoldRecordSubjectExists(Long id) { + if (moldRecordSubjectMapper.selectById(id) == null) { + throw exception(MOLD_RECORD_SUBJECT_NOT_EXISTS); + } + } + + @Override + public MoldRecordSubjectDO getMoldRecordSubject(Long id) { + return moldRecordSubjectMapper.selectById(id); + } + + @Override + public PageResult getMoldRecordSubjectPage(MoldRecordSubjectPageReqVO pageReqVO) { + return moldRecordSubjectMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrecord/MoldRecordMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrecord/MoldRecordMapper.xml new file mode 100644 index 000000000..2ecf702b8 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrecord/MoldRecordMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrecordsubject/MoldRecordSubjectMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrecordsubject/MoldRecordSubjectMapper.xml new file mode 100644 index 000000000..d096e68d9 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrecordsubject/MoldRecordSubjectMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImplTest.java b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImplTest.java new file mode 100644 index 000000000..bac6eeb35 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImplTest.java @@ -0,0 +1,159 @@ +package cn.iocoder.yudao.module.mes.service.moldrecord; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecord.MoldRecordDO; +import cn.iocoder.yudao.module.mes.dal.mysql.moldrecord.MoldRecordMapper; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MOLD_RECORD_NOT_EXISTS; +import static org.junit.jupiter.api.Assertions.*; + +/** + * {@link MoldRecordServiceImpl} 的单元测试类 + * + * @author 内蒙必硕 + */ +@Import(MoldRecordServiceImpl.class) +public class MoldRecordServiceImplTest extends BaseDbUnitTest { + + @Resource + private MoldRecordServiceImpl moldRecordService; + + @Resource + private MoldRecordMapper moldRecordMapper; + + @Test + public void testCreateMoldRecord_success() { + // 准备参数 + MoldRecordSaveReqVO createReqVO = randomPojo(MoldRecordSaveReqVO.class).setId(null); + + // 调用 + Long moldRecordId = moldRecordService.createMoldRecord(createReqVO); + // 断言 + assertNotNull(moldRecordId); + // 校验记录的属性是否正确 + MoldRecordDO moldRecord = moldRecordMapper.selectById(moldRecordId); + assertPojoEquals(createReqVO, moldRecord, "id"); + } + + @Test + public void testUpdateMoldRecord_success() { + // mock 数据 + MoldRecordDO dbMoldRecord = randomPojo(MoldRecordDO.class); + moldRecordMapper.insert(dbMoldRecord);// @Sql: 先插入出一条存在的数据 + // 准备参数 + MoldRecordSaveReqVO updateReqVO = randomPojo(MoldRecordSaveReqVO.class, o -> { + o.setId(dbMoldRecord.getId()); // 设置更新的 ID + }); + + // 调用 + moldRecordService.updateMoldRecord(updateReqVO); + // 校验是否更新正确 + MoldRecordDO moldRecord = moldRecordMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, moldRecord); + } + + @Test + public void testUpdateMoldRecord_notExists() { + // 准备参数 + MoldRecordSaveReqVO updateReqVO = randomPojo(MoldRecordSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> moldRecordService.updateMoldRecord(updateReqVO), MOLD_RECORD_NOT_EXISTS); + } + + @Test + public void testDeleteMoldRecord_success() { + // mock 数据 + MoldRecordDO dbMoldRecord = randomPojo(MoldRecordDO.class); + moldRecordMapper.insert(dbMoldRecord);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbMoldRecord.getId(); + + // 调用 + moldRecordService.deleteMoldRecord(id); + // 校验数据不存在了 + assertNull(moldRecordMapper.selectById(id)); + } + + @Test + public void testDeleteMoldRecord_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> moldRecordService.deleteMoldRecord(id), MOLD_RECORD_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetMoldRecordPage() { + // mock 数据 + MoldRecordDO dbMoldRecord = randomPojo(MoldRecordDO.class, o -> { // 等会查询到 + o.setFlowCode(null); + o.setBrandId(null); + o.setMoldId(null); + o.setOldMoldId(null); + o.setMachineId(null); + o.setUserId(null); + o.setRecordType(null); + o.setRecordStatus(null); + o.setRemark(null); + o.setCreateTime(null); + }); + moldRecordMapper.insert(dbMoldRecord); + // 测试 flowCode 不匹配 + moldRecordMapper.insert(cloneIgnoreId(dbMoldRecord, o -> o.setFlowCode(null))); + // 测试 brandId 不匹配 + moldRecordMapper.insert(cloneIgnoreId(dbMoldRecord, o -> o.setBrandId(null))); + // 测试 moldId 不匹配 + moldRecordMapper.insert(cloneIgnoreId(dbMoldRecord, o -> o.setMoldId(null))); + // 测试 oldMoldId 不匹配 + moldRecordMapper.insert(cloneIgnoreId(dbMoldRecord, o -> o.setOldMoldId(null))); + // 测试 machineId 不匹配 + moldRecordMapper.insert(cloneIgnoreId(dbMoldRecord, o -> o.setMachineId(null))); + // 测试 userId 不匹配 + moldRecordMapper.insert(cloneIgnoreId(dbMoldRecord, o -> o.setUserId(null))); + // 测试 recordType 不匹配 + moldRecordMapper.insert(cloneIgnoreId(dbMoldRecord, o -> o.setRecordType(null))); + // 测试 recordStatus 不匹配 + moldRecordMapper.insert(cloneIgnoreId(dbMoldRecord, o -> o.setRecordStatus(null))); + // 测试 remark 不匹配 + moldRecordMapper.insert(cloneIgnoreId(dbMoldRecord, o -> o.setRemark(null))); + // 测试 createTime 不匹配 + moldRecordMapper.insert(cloneIgnoreId(dbMoldRecord, o -> o.setCreateTime(null))); + // 准备参数 + MoldRecordPageReqVO reqVO = new MoldRecordPageReqVO(); + reqVO.setFlowCode(null); + reqVO.setBrandId(null); + reqVO.setMoldId(null); + reqVO.setOldMoldId(null); + reqVO.setMachineId(null); + reqVO.setUserId(null); + reqVO.setRecordType(null); + reqVO.setRecordStatus(null); + reqVO.setRemark(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = moldRecordService.getMoldRecordPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbMoldRecord, pageResult.getList().get(0)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectServiceImplTest.java b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectServiceImplTest.java new file mode 100644 index 000000000..e74e79334 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/moldrecordsubject/MoldRecordSubjectServiceImplTest.java @@ -0,0 +1,126 @@ +package cn.iocoder.yudao.module.mes.service.moldrecordsubject; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo.MoldRecordSubjectPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.moldrecordsubject.vo.MoldRecordSubjectSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrecordsubject.MoldRecordSubjectDO; +import cn.iocoder.yudao.module.mes.dal.mysql.moldrecordsubject.MoldRecordSubjectMapper; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MOLD_RECORD_SUBJECT_NOT_EXISTS; +import static org.junit.jupiter.api.Assertions.*; + +/** + * {@link MoldRecordSubjectServiceImpl} 的单元测试类 + * + * @author 内蒙必硕 + */ +@Import(MoldRecordSubjectServiceImpl.class) +public class MoldRecordSubjectServiceImplTest extends BaseDbUnitTest { + + @Resource + private MoldRecordSubjectServiceImpl moldRecordSubjectService; + + @Resource + private MoldRecordSubjectMapper moldRecordSubjectMapper; + + @Test + public void testCreateMoldRecordSubject_success() { + // 准备参数 + MoldRecordSubjectSaveReqVO createReqVO = randomPojo(MoldRecordSubjectSaveReqVO.class).setId(null); + + // 调用 + Long moldRecordSubjectId = moldRecordSubjectService.createMoldRecordSubject(createReqVO); + // 断言 + assertNotNull(moldRecordSubjectId); + // 校验记录的属性是否正确 + MoldRecordSubjectDO moldRecordSubject = moldRecordSubjectMapper.selectById(moldRecordSubjectId); + assertPojoEquals(createReqVO, moldRecordSubject, "id"); + } + + @Test + public void testUpdateMoldRecordSubject_success() { + // mock 数据 + MoldRecordSubjectDO dbMoldRecordSubject = randomPojo(MoldRecordSubjectDO.class); + moldRecordSubjectMapper.insert(dbMoldRecordSubject);// @Sql: 先插入出一条存在的数据 + // 准备参数 + MoldRecordSubjectSaveReqVO updateReqVO = randomPojo(MoldRecordSubjectSaveReqVO.class, o -> { + o.setId(dbMoldRecordSubject.getId()); // 设置更新的 ID + }); + + // 调用 + moldRecordSubjectService.updateMoldRecordSubject(updateReqVO); + // 校验是否更新正确 + MoldRecordSubjectDO moldRecordSubject = moldRecordSubjectMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, moldRecordSubject); + } + + @Test + public void testUpdateMoldRecordSubject_notExists() { + // 准备参数 + MoldRecordSubjectSaveReqVO updateReqVO = randomPojo(MoldRecordSubjectSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> moldRecordSubjectService.updateMoldRecordSubject(updateReqVO), MOLD_RECORD_SUBJECT_NOT_EXISTS); + } + + @Test + public void testDeleteMoldRecordSubject_success() { + // mock 数据 + MoldRecordSubjectDO dbMoldRecordSubject = randomPojo(MoldRecordSubjectDO.class); + moldRecordSubjectMapper.insert(dbMoldRecordSubject);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbMoldRecordSubject.getId(); + + // 调用 + moldRecordSubjectService.deleteMoldRecordSubject(id); + // 校验数据不存在了 + assertNull(moldRecordSubjectMapper.selectById(id)); + } + + @Test + public void testDeleteMoldRecordSubject_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> moldRecordSubjectService.deleteMoldRecordSubject(id), MOLD_RECORD_SUBJECT_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetMoldRecordSubjectPage() { + // mock 数据 + MoldRecordSubjectDO dbMoldRecordSubject = randomPojo(MoldRecordSubjectDO.class, o -> { // 等会查询到 + o.setSubject(null); + o.setExpect(null); + }); + moldRecordSubjectMapper.insert(dbMoldRecordSubject); + // 测试 subject 不匹配 + moldRecordSubjectMapper.insert(cloneIgnoreId(dbMoldRecordSubject, o -> o.setSubject(null))); + // 测试 expect 不匹配 + moldRecordSubjectMapper.insert(cloneIgnoreId(dbMoldRecordSubject, o -> o.setExpect(null))); + // 准备参数 + MoldRecordSubjectPageReqVO reqVO = new MoldRecordSubjectPageReqVO(); + reqVO.setSubject(null); + reqVO.setExpect(null); + + // 调用 + PageResult pageResult = moldRecordSubjectService.getMoldRecordSubjectPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbMoldRecordSubject, pageResult.getList().get(0)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/clean.sql b/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/clean.sql index 48aa90078..825ba9827 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/clean.sql +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/clean.sql @@ -55,7 +55,9 @@ DELETE FROM "mes_energy_device_check_record"; DELETE FROM "mes_energy_device"; - +DELETE FROM "mes_mold_record_subject"; +DELETE FROM "mes_mold_record"; +DELETE FROM "mes_mold_record_subject_detail"; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/create_tables.sql b/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/create_tables.sql index 114193a33..848b41798 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/create_tables.sql +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/create_tables.sql @@ -563,3 +563,54 @@ CREATE TABLE IF NOT EXISTS "mes_energy_device_check_record" "tenant_id" bigint, PRIMARY KEY ("id") ) COMMENT '抄表记录'; + + +CREATE TABLE IF NOT EXISTS "mes_mold_record" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "flow_code" varchar, + "brand_id" bigint NOT NULL, + "mold_id" bigint NOT NULL, + "old_mold_id" bigint, + "machine_id" bigint, + "user_id" bigint NOT NULL, + "record_type" varchar NOT NULL, + "record_status" varchar NOT NULL, + "remark" varchar NOT NULL, + "creator" varchar DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + "tenant_id" bigint, + PRIMARY KEY ("id") +) COMMENT '模具维保'; +CREATE TABLE IF NOT EXISTS "mes_mold_record_subject" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "subject" varchar NOT NULL, + "expect" varchar, + "creator" varchar DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + "tenant_id" bigint, + PRIMARY KEY ("id") +) COMMENT '维保项目'; +CREATE TABLE IF NOT EXISTS "mes_mold_record_subject_detail" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "subject" varchar, + "expect" varchar, + "result" varchar, + "detail_status" varchar, + "creator" varchar DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + "tenant_id" bigint, + "record_id" bigint, + PRIMARY KEY ("id") +) COMMENT '模具维保明细';