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 73aa7380d7..55a1986766 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 @@ -67,4 +67,7 @@ public interface ErrorCodeConstants { ErrorCode MOLD_RECORD_SUBJECT_NOT_EXISTS = new ErrorCode(5_0086, "维保项目不存在"); ErrorCode MOLD_RECORD_NOT_EXISTS = new ErrorCode(5_0087, "模具维保不存在"); + ErrorCode DV_CHECK_NOT_EXISTS = new ErrorCode(5_0087, "维保计划不存在"); + ErrorCode DV_SUBJECT_NOT_EXISTS = new ErrorCode(5_0087, "维保项目不存在"); + ErrorCode DV_REPAIR_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/dvcheck/DvCheckController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvcheck/DvCheckController.java new file mode 100644 index 0000000000..335b47db53 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvcheck/DvCheckController.java @@ -0,0 +1,115 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvcheck; + +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.dvcheck.vo.DvCheckPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvcheck.vo.DvCheckRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvcheck.vo.DvCheckSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvcheck.DvCheckDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvcheckdevice.DvCheckDeviceDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvchecksubject.DvCheckSubjectDO; +import cn.iocoder.yudao.module.mes.service.dvcheck.DvCheckService; +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/dv-check") +@Validated +public class DvCheckController { + + @Resource + private DvCheckService dvCheckService; + + @PostMapping("/create") + @Operation(summary = "创建维保计划") + @PreAuthorize("@ss.hasPermission('mes:dv-check:create')") + public CommonResult createDvCheck(@Valid @RequestBody DvCheckSaveReqVO createReqVO) { + return success(dvCheckService.createDvCheck(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新维保计划") + @PreAuthorize("@ss.hasPermission('mes:dv-check:update')") + public CommonResult updateDvCheck(@Valid @RequestBody DvCheckSaveReqVO updateReqVO) { + dvCheckService.updateDvCheck(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除维保计划") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:dv-check:delete')") + public CommonResult deleteDvCheck(@RequestParam("id") Long id) { + dvCheckService.deleteDvCheck(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得维保计划") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:dv-check:query')") + public CommonResult getDvCheck(@RequestParam("id") Long id) { + DvCheckDO dvCheck = dvCheckService.getDvCheck(id); + return success(BeanUtils.toBean(dvCheck, DvCheckRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得维保计划分页") + @PreAuthorize("@ss.hasPermission('mes:dv-check:query')") + public CommonResult> getDvCheckPage(@Valid DvCheckPageReqVO pageReqVO) { + PageResult pageResult = dvCheckService.getDvCheckPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DvCheckRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出维保计划 Excel") + @PreAuthorize("@ss.hasPermission('mes:dv-check:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDvCheckExcel(@Valid DvCheckPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = dvCheckService.getDvCheckPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "维保计划.xls", "数据", DvCheckRespVO.class, + BeanUtils.toBean(list, DvCheckRespVO.class)); + } + + // ==================== 子表(维保计划设备) ==================== + + @GetMapping("/dv-check-device/list-by-plan-id") + @Operation(summary = "获得维保计划设备列表") + @Parameter(name = "planId", description = "计划ID") + @PreAuthorize("@ss.hasPermission('mes:dv-check:query')") + public CommonResult> getDvCheckDeviceListByPlanId(@RequestParam("planId") Long planId) { + return success(dvCheckService.getDvCheckDeviceListByPlanId(planId)); + } + + // ==================== 子表(维保计划项目) ==================== + + @GetMapping("/dv-check-subject/list-by-plan-id") + @Operation(summary = "获得维保计划项目列表") + @Parameter(name = "planId", description = "计划ID") + @PreAuthorize("@ss.hasPermission('mes:dv-check:query')") + public CommonResult> getDvCheckSubjectListByPlanId(@RequestParam("planId") Long planId) { + return success(dvCheckService.getDvCheckSubjectListByPlanId(planId)); + } + +} \ 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/dvcheck/vo/DvCheckPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvcheck/vo/DvCheckPageReqVO.java new file mode 100644 index 0000000000..73f01132da --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvcheck/vo/DvCheckPageReqVO.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvcheck.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +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 DvCheckPageReqVO extends PageParam { + + @Schema(description = "计划编码") + private String planCode; + + @Schema(description = "计划名称", example = "张三") + private String planName; + + @Schema(description = "计划类型", example = "2") + private String planType; + + @Schema(description = "开始日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startDate; + + @Schema(description = "结束日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endDate; + + @Schema(description = "状态", example = "1") + private String status; + + @Schema(description = "备注", example = "你说的对") + private String remark; + + @Schema(description = "是否启用") + private Boolean isEnable; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "频率单位") + private String cycleUnit; + + @Schema(description = "频率", example = "16646") + private BigDecimal cycleCount; + + @Schema(description = "维保等级") + private String planLevel; + + @Schema(description = "上次执行时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] lastTime; + + @Schema(description = "计算公式") + private String formulaCode; + +} \ 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/dvcheck/vo/DvCheckRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvcheck/vo/DvCheckRespVO.java new file mode 100644 index 0000000000..277dd6ef19 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvcheck/vo/DvCheckRespVO.java @@ -0,0 +1,82 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvcheck.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 维保计划 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DvCheckRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4576") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "计划编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计划编码") + private String planCode; + + @Schema(description = "计划名称", example = "张三") + @ExcelProperty("计划名称") + private String planName; + + @Schema(description = "计划类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("计划类型") + private String planType; + + @Schema(description = "开始日期") + @ExcelProperty("开始日期") + private LocalDateTime startDate; + + @Schema(description = "结束日期") + @ExcelProperty("结束日期") + private LocalDateTime endDate; + + @Schema(description = "状态", example = "1") + @ExcelProperty("状态") + private String status; + + @Schema(description = "备注", example = "你说的对") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "是否启用", converter = DictConvert.class) + @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Boolean isEnable; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "频率单位") + @ExcelProperty(value = "频率单位", converter = DictConvert.class) + @DictFormat("mes_maintain_time_unit") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String cycleUnit; + + @Schema(description = "频率", example = "16646") + @ExcelProperty("频率") + private BigDecimal cycleCount; + + @Schema(description = "维保等级") + @ExcelProperty(value = "维保等级", converter = DictConvert.class) + @DictFormat("mes_mantain_level") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String planLevel; + + @Schema(description = "上次执行时间") + @ExcelProperty("上次执行时间") + private LocalDateTime lastTime; + + @Schema(description = "计算公式") + @ExcelProperty("计算公式") + private String formulaCode; + +} \ 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/dvcheck/vo/DvCheckSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvcheck/vo/DvCheckSaveReqVO.java new file mode 100644 index 0000000000..beb94683eb --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvcheck/vo/DvCheckSaveReqVO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvcheck.vo; + +import cn.iocoder.yudao.module.mes.dal.dataobject.dvcheckdevice.DvCheckDeviceDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvchecksubject.DvCheckSubjectDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 维保计划新增/修改 Request VO") +@Data +public class DvCheckSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4576") + private Long id; + + @Schema(description = "计划编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计划编码不能为空") + private String planCode; + + @Schema(description = "计划名称", example = "张三") + private String planName; + + @Schema(description = "计划类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "计划类型不能为空") + private String planType; + + @Schema(description = "开始日期") + private LocalDateTime startDate; + + @Schema(description = "结束日期") + private LocalDateTime endDate; + + @Schema(description = "状态", example = "1") + private String status; + + @Schema(description = "备注", example = "你说的对") + private String remark; + + @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否启用不能为空") + private Boolean isEnable; + + @Schema(description = "频率单位") + private String cycleUnit; + + @Schema(description = "频率", example = "16646") + private BigDecimal cycleCount; + + @Schema(description = "维保等级") + private String planLevel; + + @Schema(description = "上次执行时间") + private LocalDateTime lastTime; + + @Schema(description = "计算公式") + private String formulaCode; + + @Schema(description = "维保计划设备列表") + private List dvCheckDevices; + + @Schema(description = "维保计划项目列表") + private List dvCheckSubjects; + +} \ 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/dvrepair/DvRepairController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/DvRepairController.java new file mode 100644 index 0000000000..baba71adfe --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/DvRepairController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvrepair; + +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.dvrepair.vo.DvRepairPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepairline.DvRepairLineDO; +import cn.iocoder.yudao.module.mes.service.dvrepair.DvRepairService; +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/dv-repair") +@Validated +public class DvRepairController { + + @Resource + private DvRepairService dvRepairService; + + @PostMapping("/create") + @Operation(summary = "创建设备维修记录") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:create')") + public CommonResult createDvRepair(@Valid @RequestBody DvRepairSaveReqVO createReqVO) { + return success(dvRepairService.createDvRepair(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新设备维修记录") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:update')") + public CommonResult updateDvRepair(@Valid @RequestBody DvRepairSaveReqVO updateReqVO) { + dvRepairService.updateDvRepair(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除设备维修记录") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:dv-repair:delete')") + public CommonResult deleteDvRepair(@RequestParam("id") Long id) { + dvRepairService.deleteDvRepair(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 getDvRepair(@RequestParam("id") Long id) { + DvRepairDO dvRepair = dvRepairService.getDvRepair(id); + return success(BeanUtils.toBean(dvRepair, DvRepairRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得设备维修记录分页") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:query')") + public CommonResult> getDvRepairPage(@Valid DvRepairPageReqVO pageReqVO) { + PageResult pageResult = dvRepairService.getDvRepairPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DvRepairRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出设备维修记录 Excel") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDvRepairExcel(@Valid DvRepairPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = dvRepairService.getDvRepairPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "设备维修记录.xls", "数据", DvRepairRespVO.class, + BeanUtils.toBean(list, DvRepairRespVO.class)); + } + + // ==================== 子表(设备维修记录行) ==================== + + @GetMapping("/dv-repair-line/list-by-repair-id") + @Operation(summary = "获得设备维修记录行列表") + @Parameter(name = "repairId", description = "维修单ID") + @PreAuthorize("@ss.hasPermission('mes:dv-repair:query')") + public CommonResult> getDvRepairLineListByRepairId(@RequestParam("repairId") Long repairId) { + return success(dvRepairService.getDvRepairLineListByRepairId(repairId)); + } + +} \ 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/dvrepair/vo/DvRepairPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairPageReqVO.java new file mode 100644 index 0000000000..e687112f11 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairPageReqVO.java @@ -0,0 +1,73 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvrepair.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 DvRepairPageReqVO extends PageParam { + + @Schema(description = "维修单编号") + private String repairCode; + + @Schema(description = "维修单名称", example = "王五") + private String repairName; + + @Schema(description = "设备ID", example = "6979") + private Long machineryId; + + @Schema(description = "设备编码") + private String machineryCode; + + @Schema(description = "设备名称", example = "张三") + private String machineryName; + + @Schema(description = "品牌") + private String machineryBrand; + + @Schema(description = "规格型号") + private String machinerySpec; + + @Schema(description = "设备类型", example = "1622") + private Long machineryTypeId; + + @Schema(description = "报修日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] requireDate; + + @Schema(description = "完成日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] finishDate; + + @Schema(description = "验收日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] confirmDate; + + @Schema(description = "维修结果") + private String repairResult; + + @Schema(description = "维修人员") + private String acceptedBy; + + @Schema(description = "验收人员") + private String confirmBy; + + @Schema(description = "单据状态", example = "1") + private String status; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + 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/dvrepair/vo/DvRepairRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairRespVO.java new file mode 100644 index 0000000000..12cdc901da --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairRespVO.java @@ -0,0 +1,92 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvrepair.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.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 设备维修记录 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DvRepairRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27809") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "维修单编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("维修单编号") + private String repairCode; + + @Schema(description = "维修单名称", example = "王五") + @ExcelProperty("维修单名称") + private String repairName; + + @Schema(description = "设备ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6979") + @ExcelProperty("设备ID") + private Long machineryId; + + @Schema(description = "设备编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("设备编码") + private String machineryCode; + + @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("设备名称") + private String machineryName; + + @Schema(description = "品牌") + @ExcelProperty("品牌") + private String machineryBrand; + + @Schema(description = "规格型号") + @ExcelProperty("规格型号") + private String machinerySpec; + + @Schema(description = "设备类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1622") + @ExcelProperty(value = "设备类型", converter = DictConvert.class) + @DictFormat("mes_machine_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Long machineryTypeId; + + @Schema(description = "报修日期") + @ExcelProperty("报修日期") + private LocalDateTime requireDate; + + @Schema(description = "完成日期") + @ExcelProperty("完成日期") + private LocalDateTime finishDate; + + @Schema(description = "验收日期") + @ExcelProperty("验收日期") + private LocalDateTime confirmDate; + + @Schema(description = "维修结果") + @ExcelProperty("维修结果") + private String repairResult; + + @Schema(description = "维修人员") + @ExcelProperty("维修人员") + private String acceptedBy; + + @Schema(description = "验收人员") + @ExcelProperty("验收人员") + private String confirmBy; + + @Schema(description = "单据状态", example = "1") + @ExcelProperty(value = "单据状态", converter = DictConvert.class) + @DictFormat("mes_mold_record_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String status; + + @Schema(description = "备注", example = "你猜") + @ExcelProperty("备注") + private String remark; + + @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/dvrepair/vo/DvRepairSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairSaveReqVO.java new file mode 100644 index 0000000000..ed17d8e760 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvrepair/vo/DvRepairSaveReqVO.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo; + +import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepairline.DvRepairLineDO; +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 DvRepairSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27809") + private Long id; + + @Schema(description = "维修单编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "维修单编号不能为空") + private String repairCode; + + @Schema(description = "维修单名称", example = "王五") + private String repairName; + + @Schema(description = "设备ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6979") + @NotNull(message = "设备ID不能为空") + private Long machineryId; + + @Schema(description = "设备编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "设备编码不能为空") + private String machineryCode; + + @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "设备名称不能为空") + private String machineryName; + + @Schema(description = "品牌") + private String machineryBrand; + + @Schema(description = "规格型号") + private String machinerySpec; + + @Schema(description = "设备类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1622") + @NotNull(message = "设备类型不能为空") + private Long machineryTypeId; + + @Schema(description = "报修日期") + private LocalDateTime requireDate; + + @Schema(description = "完成日期") + private LocalDateTime finishDate; + + @Schema(description = "验收日期") + private LocalDateTime confirmDate; + + @Schema(description = "维修结果") + private String repairResult; + + @Schema(description = "维修人员") + private String acceptedBy; + + @Schema(description = "验收人员") + private String confirmBy; + + @Schema(description = "单据状态", example = "1") + private String status; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "设备维修记录行列表") + private List dvRepairLines; + +} \ 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/dvsubject/DvSubjectController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvsubject/DvSubjectController.java new file mode 100644 index 0000000000..33c2fb2a2c --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvsubject/DvSubjectController.java @@ -0,0 +1,93 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvsubject; + +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.dvsubject.vo.DvSubjectPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvsubject.vo.DvSubjectRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvsubject.vo.DvSubjectSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvsubject.DvSubjectDO; +import cn.iocoder.yudao.module.mes.service.dvsubject.DvSubjectService; +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/dv-subject") +@Validated +public class DvSubjectController { + + @Resource + private DvSubjectService dvSubjectService; + + @PostMapping("/create") + @Operation(summary = "创建维保项目") + @PreAuthorize("@ss.hasPermission('mes:dv-subject:create')") + public CommonResult createDvSubject(@Valid @RequestBody DvSubjectSaveReqVO createReqVO) { + return success(dvSubjectService.createDvSubject(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新维保项目") + @PreAuthorize("@ss.hasPermission('mes:dv-subject:update')") + public CommonResult updateDvSubject(@Valid @RequestBody DvSubjectSaveReqVO updateReqVO) { + dvSubjectService.updateDvSubject(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除维保项目") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:dv-subject:delete')") + public CommonResult deleteDvSubject(@RequestParam("id") Long id) { + dvSubjectService.deleteDvSubject(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得维保项目") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:dv-subject:query')") + public CommonResult getDvSubject(@RequestParam("id") Long id) { + DvSubjectDO dvSubject = dvSubjectService.getDvSubject(id); + return success(BeanUtils.toBean(dvSubject, DvSubjectRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得维保项目分页") + @PreAuthorize("@ss.hasPermission('mes:dv-subject:query')") + public CommonResult> getDvSubjectPage(@Valid DvSubjectPageReqVO pageReqVO) { + PageResult pageResult = dvSubjectService.getDvSubjectPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DvSubjectRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出维保项目 Excel") + @PreAuthorize("@ss.hasPermission('mes:dv-subject:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDvSubjectExcel(@Valid DvSubjectPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = dvSubjectService.getDvSubjectPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "维保项目.xls", "数据", DvSubjectRespVO.class, + BeanUtils.toBean(list, DvSubjectRespVO.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/dvsubject/vo/DvSubjectPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvsubject/vo/DvSubjectPageReqVO.java new file mode 100644 index 0000000000..00a3ce7690 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvsubject/vo/DvSubjectPageReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvsubject.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 DvSubjectPageReqVO extends PageParam { + + @Schema(description = "项目编码") + private String subjectCode; + + @Schema(description = "项目名称", example = "李四") + private String subjectName; + + @Schema(description = "项目类型", example = "2") + private String subjectType; + + @Schema(description = "项目内容") + private String subjectContent; + + @Schema(description = "标准") + private String subjectStandard; + + @Schema(description = "是否启用") + private Boolean isEnable; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + 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/dvsubject/vo/DvSubjectRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvsubject/vo/DvSubjectRespVO.java new file mode 100644 index 0000000000..db906ab6d0 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvsubject/vo/DvSubjectRespVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvsubject.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.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 维保项目 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DvSubjectRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24679") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "项目编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("项目编码") + private String subjectCode; + + @Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("项目名称") + private String subjectName; + + @Schema(description = "项目类型", example = "2") + @ExcelProperty("项目类型") + private String subjectType; + + @Schema(description = "项目内容", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("项目内容") + private String subjectContent; + + @Schema(description = "标准") + @ExcelProperty("标准") + private String subjectStandard; + + @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "是否启用", converter = DictConvert.class) + @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Boolean isEnable; + + @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/dvsubject/vo/DvSubjectSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvsubject/vo/DvSubjectSaveReqVO.java new file mode 100644 index 0000000000..1325476c02 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dvsubject/vo/DvSubjectSaveReqVO.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.mes.controller.admin.dvsubject.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 维保项目新增/修改 Request VO") +@Data +public class DvSubjectSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24679") + private Long id; + + @Schema(description = "项目编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "项目编码不能为空") + private String subjectCode; + + @Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "项目名称不能为空") + private String subjectName; + + @Schema(description = "项目类型", example = "2") + private String subjectType; + + @Schema(description = "项目内容", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "项目内容不能为空") + private String subjectContent; + + @Schema(description = "标准") + private String subjectStandard; + + @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否启用不能为空") + private Boolean isEnable; + +} \ 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/dvcheck/DvCheckDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvcheck/DvCheckDO.java new file mode 100644 index 0000000000..723f6100ce --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvcheck/DvCheckDO.java @@ -0,0 +1,93 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.dvcheck; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 维保计划 DO + * + * @author 内蒙必硕 + */ +@TableName("mes_dv_check") +@KeySequence("mes_dv_check_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DvCheckDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 计划编码 + */ + private String planCode; + /** + * 计划名称 + */ + private String planName; + /** + * 计划类型 + */ + private String planType; + /** + * 开始日期 + */ + private LocalDateTime startDate; + /** + * 结束日期 + */ + private LocalDateTime endDate; + /** + * 状态 + */ + private String status; + /** + * 备注 + */ + private String remark; + /** + * 是否启用 + * + * 枚举 {@link TODO infra_boolean_string 对应的类} + */ + private Boolean isEnable; + /** + * 频率单位 + * + * 枚举 {@link TODO mes_maintain_time_unit 对应的类} + */ + private String cycleUnit; + /** + * 频率 + */ + private BigDecimal cycleCount; + /** + * 维保等级 + * + * 枚举 {@link TODO mes_mantain_level 对应的类} + */ + private String planLevel; + /** + * 上次执行时间 + */ + private LocalDateTime lastTime; + /** + * 计算公式 + */ + private String formulaCode; + +} \ 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/dvcheck/DvCheckDeviceDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvcheck/DvCheckDeviceDO.java new file mode 100644 index 0000000000..2eb97e6332 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvcheck/DvCheckDeviceDO.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.dvcheckdevice; + +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_dv_check_device") +@KeySequence("mes_dv_check_device_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DvCheckDeviceDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 计划ID + */ + private Long planId; + /** + * 设备ID + */ + private Long machineryId; + /** + * 设备编码 + */ + private String machineryCode; + /** + * 设备名称 + */ + private String machineryName; + /** + * 品牌 + */ + private String machineryBrand; + /** + * 规格型号 + */ + private String machinerySpec; + /** + * 备注 + */ + private String remark; + +} \ 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/dvcheck/DvCheckSubjectDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvcheck/DvCheckSubjectDO.java new file mode 100644 index 0000000000..f1875348c2 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvcheck/DvCheckSubjectDO.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.dvchecksubject; + +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_dv_check_subject") +@KeySequence("mes_dv_check_subject_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DvCheckSubjectDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 计划ID + */ + private Long planId; + /** + * 设备ID + */ + private Long subjectId; + /** + * 项目编码 + */ + private String subjectCode; + /** + * 项目名称 + */ + private String subjectName; + /** + * 项目类型 + */ + private String subjectType; + /** + * 项目内容 + */ + private String subjectContent; + /** + * 标准 + */ + private String subjectStandard; + /** + * 备注 + */ + private String remark; + +} \ 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/dvrepair/DvRepairDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvrepair/DvRepairDO.java new file mode 100644 index 0000000000..5a71704b8e --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvrepair/DvRepairDO.java @@ -0,0 +1,102 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +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_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 DvRepairDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 维修单编号 + */ + private String repairCode; + /** + * 维修单名称 + */ + private String repairName; + /** + * 设备ID + */ + private Long machineryId; + /** + * 设备编码 + */ + private String machineryCode; + /** + * 设备名称 + */ + private String machineryName; + /** + * 品牌 + */ + private String machineryBrand; + /** + * 规格型号 + */ + private String machinerySpec; + /** + * 设备类型 + * + * 枚举 {@link TODO mes_machine_type 对应的类} + */ + private Long machineryTypeId; + /** + * 报修日期 + */ + private LocalDateTime requireDate; + /** + * 完成日期 + */ + private LocalDateTime finishDate; + /** + * 验收日期 + */ + private LocalDateTime confirmDate; + /** + * 维修结果 + */ + private String repairResult; + /** + * 维修人员 + */ + private String acceptedBy; + /** + * 验收人员 + */ + private String confirmBy; + /** + * 单据状态 + * + * 枚举 {@link TODO mes_mold_record_status 对应的类} + */ + private String status; + /** + * 备注 + */ + private String remark; + +} \ 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/dvrepair/DvRepairLineDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvrepair/DvRepairLineDO.java new file mode 100644 index 0000000000..8c11b576cc --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvrepair/DvRepairLineDO.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.dvrepairline; + +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_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 DvRepairLineDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 维修单ID + */ + private Long repairId; + /** + * 项目ID + */ + private Long subjectId; + /** + * 项目编码 + */ + private String subjectCode; + /** + * 项目名称 + */ + private String subjectName; + /** + * 项目类型 + */ + private String subjectType; + /** + * 项目内容 + */ + private String subjectContent; + /** + * 标准 + */ + private String subjectStandard; + /** + * 故障描述 + */ + private String malfunction; + /** + * 故障描述资源 + */ + private String malfunctionUrl; + /** + * 维修情况 + */ + private String repairDes; + /** + * 备注 + */ + private String remark; + +} \ 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/dvsubject/DvSubjectDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvsubject/DvSubjectDO.java new file mode 100644 index 0000000000..5da3cfc4c1 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/dvsubject/DvSubjectDO.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.dvsubject; + +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_dv_subject") +@KeySequence("mes_dv_subject_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DvSubjectDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 项目编码 + */ + private String subjectCode; + /** + * 项目名称 + */ + private String subjectName; + /** + * 项目类型 + */ + private String subjectType; + /** + * 项目内容 + */ + private String subjectContent; + /** + * 标准 + */ + private String subjectStandard; + /** + * 是否启用 + * + * 枚举 {@link TODO infra_boolean_string 对应的类} + */ + private Boolean isEnable; + +} \ 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/dvcheck/DvCheckDeviceMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvcheck/DvCheckDeviceMapper.java new file mode 100644 index 0000000000..84632c89e8 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvcheck/DvCheckDeviceMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.dvcheckdevice; + +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.dvcheckdevice.DvCheckDeviceDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 维保计划设备 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface DvCheckDeviceMapper extends BaseMapperX { + + default List selectListByPlanId(Long planId) { + return selectList(DvCheckDeviceDO::getPlanId, planId); + } + + default int deleteByPlanId(Long planId) { + return delete(DvCheckDeviceDO::getPlanId, planId); + } + +} \ 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/dvcheck/DvCheckMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvcheck/DvCheckMapper.java new file mode 100644 index 0000000000..b9058a941c --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvcheck/DvCheckMapper.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.dvcheck; + +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.dvcheck.DvCheckDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.mes.controller.admin.dvcheck.vo.*; + +/** + * 维保计划 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface DvCheckMapper extends BaseMapperX { + + default PageResult selectPage(DvCheckPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DvCheckDO::getPlanCode, reqVO.getPlanCode()) + .likeIfPresent(DvCheckDO::getPlanName, reqVO.getPlanName()) + .eqIfPresent(DvCheckDO::getPlanType, reqVO.getPlanType()) + .betweenIfPresent(DvCheckDO::getStartDate, reqVO.getStartDate()) + .betweenIfPresent(DvCheckDO::getEndDate, reqVO.getEndDate()) + .eqIfPresent(DvCheckDO::getStatus, reqVO.getStatus()) + .eqIfPresent(DvCheckDO::getRemark, reqVO.getRemark()) + .eqIfPresent(DvCheckDO::getIsEnable, reqVO.getIsEnable()) + .betweenIfPresent(DvCheckDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(DvCheckDO::getCycleUnit, reqVO.getCycleUnit()) + .eqIfPresent(DvCheckDO::getCycleCount, reqVO.getCycleCount()) + .eqIfPresent(DvCheckDO::getPlanLevel, reqVO.getPlanLevel()) + .betweenIfPresent(DvCheckDO::getLastTime, reqVO.getLastTime()) + .eqIfPresent(DvCheckDO::getFormulaCode, reqVO.getFormulaCode()) + .orderByDesc(DvCheckDO::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/dvcheck/DvCheckSubjectMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvcheck/DvCheckSubjectMapper.java new file mode 100644 index 0000000000..3912b7269b --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvcheck/DvCheckSubjectMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.dvchecksubject; + +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.dvchecksubject.DvCheckSubjectDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 维保计划项目 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface DvCheckSubjectMapper extends BaseMapperX { + + default List selectListByPlanId(Long planId) { + return selectList(DvCheckSubjectDO::getPlanId, planId); + } + + default int deleteByPlanId(Long planId) { + return delete(DvCheckSubjectDO::getPlanId, planId); + } + +} \ 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/dvrepair/DvRepairLineMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvrepair/DvRepairLineMapper.java new file mode 100644 index 0000000000..45f4fd8839 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvrepair/DvRepairLineMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.dvrepairline; + +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.dvrepairline.DvRepairLineDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 设备维修记录行 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface DvRepairLineMapper extends BaseMapperX { + + default List selectListByRepairId(Long repairId) { + return selectList(DvRepairLineDO::getRepairId, repairId); + } + + default int deleteByRepairId(Long repairId) { + return delete(DvRepairLineDO::getRepairId, repairId); + } + +} \ 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/dvrepair/DvRepairMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvrepair/DvRepairMapper.java new file mode 100644 index 0000000000..1701a88ba6 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvrepair/DvRepairMapper.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.dvrepair; + +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.dvrepair.DvRepairDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.*; + +/** + * 设备维修记录 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface DvRepairMapper extends BaseMapperX { + + default PageResult selectPage(DvRepairPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DvRepairDO::getRepairCode, reqVO.getRepairCode()) + .likeIfPresent(DvRepairDO::getRepairName, reqVO.getRepairName()) + .eqIfPresent(DvRepairDO::getMachineryId, reqVO.getMachineryId()) + .eqIfPresent(DvRepairDO::getMachineryCode, reqVO.getMachineryCode()) + .likeIfPresent(DvRepairDO::getMachineryName, reqVO.getMachineryName()) + .eqIfPresent(DvRepairDO::getMachineryBrand, reqVO.getMachineryBrand()) + .eqIfPresent(DvRepairDO::getMachinerySpec, reqVO.getMachinerySpec()) + .eqIfPresent(DvRepairDO::getMachineryTypeId, reqVO.getMachineryTypeId()) + .betweenIfPresent(DvRepairDO::getRequireDate, reqVO.getRequireDate()) + .betweenIfPresent(DvRepairDO::getFinishDate, reqVO.getFinishDate()) + .betweenIfPresent(DvRepairDO::getConfirmDate, reqVO.getConfirmDate()) + .eqIfPresent(DvRepairDO::getRepairResult, reqVO.getRepairResult()) + .eqIfPresent(DvRepairDO::getAcceptedBy, reqVO.getAcceptedBy()) + .eqIfPresent(DvRepairDO::getConfirmBy, reqVO.getConfirmBy()) + .eqIfPresent(DvRepairDO::getStatus, reqVO.getStatus()) + .eqIfPresent(DvRepairDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(DvRepairDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DvRepairDO::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/dvsubject/DvSubjectMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvsubject/DvSubjectMapper.java new file mode 100644 index 0000000000..cc70a7f19f --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dvsubject/DvSubjectMapper.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.dvsubject; + +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.dvsubject.DvSubjectDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.mes.controller.admin.dvsubject.vo.*; + +/** + * 维保项目 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface DvSubjectMapper extends BaseMapperX { + + default PageResult selectPage(DvSubjectPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DvSubjectDO::getSubjectCode, reqVO.getSubjectCode()) + .likeIfPresent(DvSubjectDO::getSubjectName, reqVO.getSubjectName()) + .eqIfPresent(DvSubjectDO::getSubjectType, reqVO.getSubjectType()) + .eqIfPresent(DvSubjectDO::getSubjectContent, reqVO.getSubjectContent()) + .eqIfPresent(DvSubjectDO::getSubjectStandard, reqVO.getSubjectStandard()) + .eqIfPresent(DvSubjectDO::getIsEnable, reqVO.getIsEnable()) + .betweenIfPresent(DvSubjectDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DvSubjectDO::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/dvcheck/DvCheckService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvcheck/DvCheckService.java new file mode 100644 index 0000000000..8996959639 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvcheck/DvCheckService.java @@ -0,0 +1,78 @@ +package cn.iocoder.yudao.module.mes.service.dvcheck; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.dvcheck.vo.DvCheckPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvcheck.vo.DvCheckSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvcheck.DvCheckDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvcheckdevice.DvCheckDeviceDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvchecksubject.DvCheckSubjectDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 维保计划 Service 接口 + * + * @author 内蒙必硕 + */ +public interface DvCheckService { + + /** + * 创建维保计划 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDvCheck(@Valid DvCheckSaveReqVO createReqVO); + + /** + * 更新维保计划 + * + * @param updateReqVO 更新信息 + */ + void updateDvCheck(@Valid DvCheckSaveReqVO updateReqVO); + + /** + * 删除维保计划 + * + * @param id 编号 + */ + void deleteDvCheck(Long id); + + /** + * 获得维保计划 + * + * @param id 编号 + * @return 维保计划 + */ + DvCheckDO getDvCheck(Long id); + + /** + * 获得维保计划分页 + * + * @param pageReqVO 分页查询 + * @return 维保计划分页 + */ + PageResult getDvCheckPage(DvCheckPageReqVO pageReqVO); + + // ==================== 子表(维保计划设备) ==================== + + /** + * 获得维保计划设备列表 + * + * @param planId 计划ID + * @return 维保计划设备列表 + */ + List getDvCheckDeviceListByPlanId(Long planId); + + // ==================== 子表(维保计划项目) ==================== + + /** + * 获得维保计划项目列表 + * + * @param planId 计划ID + * @return 维保计划项目列表 + */ + List getDvCheckSubjectListByPlanId(Long planId); + +} \ 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/dvcheck/DvCheckServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvcheck/DvCheckServiceImpl.java new file mode 100644 index 0000000000..a6a4d32f85 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvcheck/DvCheckServiceImpl.java @@ -0,0 +1,140 @@ +package cn.iocoder.yudao.module.mes.service.dvcheck; + +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.dvcheck.vo.DvCheckPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvcheck.vo.DvCheckSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvcheck.DvCheckDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvcheckdevice.DvCheckDeviceDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvchecksubject.DvCheckSubjectDO; +import cn.iocoder.yudao.module.mes.dal.mysql.dvcheck.DvCheckMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.dvcheckdevice.DvCheckDeviceMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.dvchecksubject.DvCheckSubjectMapper; +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.DV_CHECK_NOT_EXISTS; + +/** + * 维保计划 Service 实现类 + * + * @author 内蒙必硕 + */ +@Service +@Validated +public class DvCheckServiceImpl implements DvCheckService { + + @Resource + private DvCheckMapper dvCheckMapper; + @Resource + private DvCheckDeviceMapper dvCheckDeviceMapper; + @Resource + private DvCheckSubjectMapper dvCheckSubjectMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createDvCheck(DvCheckSaveReqVO createReqVO) { + // 插入 + DvCheckDO dvCheck = BeanUtils.toBean(createReqVO, DvCheckDO.class); + dvCheckMapper.insert(dvCheck); + + // 插入子表 + createDvCheckDeviceList(dvCheck.getId(), createReqVO.getDvCheckDevices()); + createDvCheckSubjectList(dvCheck.getId(), createReqVO.getDvCheckSubjects()); + // 返回 + return dvCheck.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateDvCheck(DvCheckSaveReqVO updateReqVO) { + // 校验存在 + validateDvCheckExists(updateReqVO.getId()); + // 更新 + DvCheckDO updateObj = BeanUtils.toBean(updateReqVO, DvCheckDO.class); + dvCheckMapper.updateById(updateObj); + + // 更新子表 + updateDvCheckDeviceList(updateReqVO.getId(), updateReqVO.getDvCheckDevices()); + updateDvCheckSubjectList(updateReqVO.getId(), updateReqVO.getDvCheckSubjects()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteDvCheck(Long id) { + // 校验存在 + validateDvCheckExists(id); + // 删除 + dvCheckMapper.deleteById(id); + + // 删除子表 + deleteDvCheckDeviceByPlanId(id); + deleteDvCheckSubjectByPlanId(id); + } + + private void validateDvCheckExists(Long id) { + if (dvCheckMapper.selectById(id) == null) { + throw exception(DV_CHECK_NOT_EXISTS); + } + } + + @Override + public DvCheckDO getDvCheck(Long id) { + return dvCheckMapper.selectById(id); + } + + @Override + public PageResult getDvCheckPage(DvCheckPageReqVO pageReqVO) { + return dvCheckMapper.selectPage(pageReqVO); + } + + // ==================== 子表(维保计划设备) ==================== + + @Override + public List getDvCheckDeviceListByPlanId(Long planId) { + return dvCheckDeviceMapper.selectListByPlanId(planId); + } + + private void createDvCheckDeviceList(Long planId, List list) { + list.forEach(o -> o.setPlanId(planId)); + dvCheckDeviceMapper.insertBatch(list); + } + + private void updateDvCheckDeviceList(Long planId, List list) { + deleteDvCheckDeviceByPlanId(planId); + list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + createDvCheckDeviceList(planId, list); + } + + private void deleteDvCheckDeviceByPlanId(Long planId) { + dvCheckDeviceMapper.deleteByPlanId(planId); + } + + // ==================== 子表(维保计划项目) ==================== + + @Override + public List getDvCheckSubjectListByPlanId(Long planId) { + return dvCheckSubjectMapper.selectListByPlanId(planId); + } + + private void createDvCheckSubjectList(Long planId, List list) { + list.forEach(o -> o.setPlanId(planId)); + dvCheckSubjectMapper.insertBatch(list); + } + + private void updateDvCheckSubjectList(Long planId, List list) { + deleteDvCheckSubjectByPlanId(planId); + list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + createDvCheckSubjectList(planId, list); + } + + private void deleteDvCheckSubjectByPlanId(Long planId) { + dvCheckSubjectMapper.deleteByPlanId(planId); + } + +} \ 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/dvrepair/DvRepairService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairService.java new file mode 100644 index 0000000000..4615761389 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairService.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.mes.service.dvrepair; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepairline.DvRepairLineDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 设备维修记录 Service 接口 + * + * @author 内蒙必硕 + */ +public interface DvRepairService { + + /** + * 创建设备维修记录 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDvRepair(@Valid DvRepairSaveReqVO createReqVO); + + /** + * 更新设备维修记录 + * + * @param updateReqVO 更新信息 + */ + void updateDvRepair(@Valid DvRepairSaveReqVO updateReqVO); + + /** + * 删除设备维修记录 + * + * @param id 编号 + */ + void deleteDvRepair(Long id); + + /** + * 获得设备维修记录 + * + * @param id 编号 + * @return 设备维修记录 + */ + DvRepairDO getDvRepair(Long id); + + /** + * 获得设备维修记录分页 + * + * @param pageReqVO 分页查询 + * @return 设备维修记录分页 + */ + PageResult getDvRepairPage(DvRepairPageReqVO pageReqVO); + + // ==================== 子表(设备维修记录行) ==================== + + /** + * 获得设备维修记录行列表 + * + * @param repairId 维修单ID + * @return 设备维修记录行列表 + */ + List getDvRepairLineListByRepairId(Long repairId); + +} \ 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/dvrepair/DvRepairServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImpl.java new file mode 100644 index 0000000000..def03327a5 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImpl.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.mes.service.dvrepair; + +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.dvrepair.vo.DvRepairPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepairline.DvRepairLineDO; +import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.dvrepairline.DvRepairLineMapper; +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.DV_REPAIR_NOT_EXISTS; + +/** + * 设备维修记录 Service 实现类 + * + * @author 内蒙必硕 + */ +@Service +@Validated +public class DvRepairServiceImpl implements DvRepairService { + + @Resource + private DvRepairMapper dvRepairMapper; + @Resource + private DvRepairLineMapper dvRepairLineMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createDvRepair(DvRepairSaveReqVO createReqVO) { + // 插入 + DvRepairDO dvRepair = BeanUtils.toBean(createReqVO, DvRepairDO.class); + dvRepairMapper.insert(dvRepair); + + // 插入子表 + createDvRepairLineList(dvRepair.getId(), createReqVO.getDvRepairLines()); + // 返回 + return dvRepair.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateDvRepair(DvRepairSaveReqVO updateReqVO) { + // 校验存在 + validateDvRepairExists(updateReqVO.getId()); + // 更新 + DvRepairDO updateObj = BeanUtils.toBean(updateReqVO, DvRepairDO.class); + dvRepairMapper.updateById(updateObj); + + // 更新子表 + updateDvRepairLineList(updateReqVO.getId(), updateReqVO.getDvRepairLines()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteDvRepair(Long id) { + // 校验存在 + validateDvRepairExists(id); + // 删除 + dvRepairMapper.deleteById(id); + + // 删除子表 + deleteDvRepairLineByRepairId(id); + } + + private void validateDvRepairExists(Long id) { + if (dvRepairMapper.selectById(id) == null) { + throw exception(DV_REPAIR_NOT_EXISTS); + } + } + + @Override + public DvRepairDO getDvRepair(Long id) { + return dvRepairMapper.selectById(id); + } + + @Override + public PageResult getDvRepairPage(DvRepairPageReqVO pageReqVO) { + return dvRepairMapper.selectPage(pageReqVO); + } + + // ==================== 子表(设备维修记录行) ==================== + + @Override + public List getDvRepairLineListByRepairId(Long repairId) { + return dvRepairLineMapper.selectListByRepairId(repairId); + } + + private void createDvRepairLineList(Long repairId, List list) { + list.forEach(o -> o.setRepairId(repairId)); + dvRepairLineMapper.insertBatch(list); + } + + private void updateDvRepairLineList(Long repairId, List list) { + deleteDvRepairLineByRepairId(repairId); + list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + createDvRepairLineList(repairId, list); + } + + private void deleteDvRepairLineByRepairId(Long repairId) { + dvRepairLineMapper.deleteByRepairId(repairId); + } + +} \ 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/dvsubject/DvSubjectService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvsubject/DvSubjectService.java new file mode 100644 index 0000000000..9d816f497a --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvsubject/DvSubjectService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.mes.service.dvsubject; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.dvsubject.vo.DvSubjectPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvsubject.vo.DvSubjectSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvsubject.DvSubjectDO; + +import javax.validation.Valid; + +/** + * 维保项目 Service 接口 + * + * @author 内蒙必硕 + */ +public interface DvSubjectService { + + /** + * 创建维保项目 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDvSubject(@Valid DvSubjectSaveReqVO createReqVO); + + /** + * 更新维保项目 + * + * @param updateReqVO 更新信息 + */ + void updateDvSubject(@Valid DvSubjectSaveReqVO updateReqVO); + + /** + * 删除维保项目 + * + * @param id 编号 + */ + void deleteDvSubject(Long id); + + /** + * 获得维保项目 + * + * @param id 编号 + * @return 维保项目 + */ + DvSubjectDO getDvSubject(Long id); + + /** + * 获得维保项目分页 + * + * @param pageReqVO 分页查询 + * @return 维保项目分页 + */ + PageResult getDvSubjectPage(DvSubjectPageReqVO 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/dvsubject/DvSubjectServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvsubject/DvSubjectServiceImpl.java new file mode 100644 index 0000000000..efce2241a2 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvsubject/DvSubjectServiceImpl.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.mes.service.dvsubject; + +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.dvsubject.vo.DvSubjectPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvsubject.vo.DvSubjectSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvsubject.DvSubjectDO; +import cn.iocoder.yudao.module.mes.dal.mysql.dvsubject.DvSubjectMapper; +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.DV_SUBJECT_NOT_EXISTS; + +/** + * 维保项目 Service 实现类 + * + * @author 内蒙必硕 + */ +@Service +@Validated +public class DvSubjectServiceImpl implements DvSubjectService { + + @Resource + private DvSubjectMapper dvSubjectMapper; + + @Override + public Long createDvSubject(DvSubjectSaveReqVO createReqVO) { + // 插入 + DvSubjectDO dvSubject = BeanUtils.toBean(createReqVO, DvSubjectDO.class); + dvSubjectMapper.insert(dvSubject); + // 返回 + return dvSubject.getId(); + } + + @Override + public void updateDvSubject(DvSubjectSaveReqVO updateReqVO) { + // 校验存在 + validateDvSubjectExists(updateReqVO.getId()); + // 更新 + DvSubjectDO updateObj = BeanUtils.toBean(updateReqVO, DvSubjectDO.class); + dvSubjectMapper.updateById(updateObj); + } + + @Override + public void deleteDvSubject(Long id) { + // 校验存在 + validateDvSubjectExists(id); + // 删除 + dvSubjectMapper.deleteById(id); + } + + private void validateDvSubjectExists(Long id) { + if (dvSubjectMapper.selectById(id) == null) { + throw exception(DV_SUBJECT_NOT_EXISTS); + } + } + + @Override + public DvSubjectDO getDvSubject(Long id) { + return dvSubjectMapper.selectById(id); + } + + @Override + public PageResult getDvSubjectPage(DvSubjectPageReqVO pageReqVO) { + return dvSubjectMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/dvcheck/DvCheckMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/dvcheck/DvCheckMapper.xml new file mode 100644 index 0000000000..a83e31c9ec --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/dvcheck/DvCheckMapper.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/dvrepair/DvRepairMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/dvrepair/DvRepairMapper.xml new file mode 100644 index 0000000000..61046babd0 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/dvrepair/DvRepairMapper.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/dvsubject/DvSubjectMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/dvsubject/DvSubjectMapper.xml new file mode 100644 index 0000000000..caeb58af01 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/dvsubject/DvSubjectMapper.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/dvcheck/DvCheckServiceImplTest.java b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/dvcheck/DvCheckServiceImplTest.java new file mode 100644 index 0000000000..2631dae62b --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/dvcheck/DvCheckServiceImplTest.java @@ -0,0 +1,175 @@ +package cn.iocoder.yudao.module.mes.service.dvcheck; + +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.dvcheck.vo.DvCheckPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvcheck.vo.DvCheckSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvcheck.DvCheckDO; +import cn.iocoder.yudao.module.mes.dal.mysql.dvcheck.DvCheckMapper; +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.DV_CHECK_NOT_EXISTS; +import static org.junit.jupiter.api.Assertions.*; + +/** + * {@link DvCheckServiceImpl} 的单元测试类 + * + * @author 内蒙必硕 + */ +@Import(DvCheckServiceImpl.class) +public class DvCheckServiceImplTest extends BaseDbUnitTest { + + @Resource + private DvCheckServiceImpl dvCheckService; + + @Resource + private DvCheckMapper dvCheckMapper; + + @Test + public void testCreateDvCheck_success() { + // 准备参数 + DvCheckSaveReqVO createReqVO = randomPojo(DvCheckSaveReqVO.class).setId(null); + + // 调用 + Long dvCheckId = dvCheckService.createDvCheck(createReqVO); + // 断言 + assertNotNull(dvCheckId); + // 校验记录的属性是否正确 + DvCheckDO dvCheck = dvCheckMapper.selectById(dvCheckId); + assertPojoEquals(createReqVO, dvCheck, "id"); + } + + @Test + public void testUpdateDvCheck_success() { + // mock 数据 + DvCheckDO dbDvCheck = randomPojo(DvCheckDO.class); + dvCheckMapper.insert(dbDvCheck);// @Sql: 先插入出一条存在的数据 + // 准备参数 + DvCheckSaveReqVO updateReqVO = randomPojo(DvCheckSaveReqVO.class, o -> { + o.setId(dbDvCheck.getId()); // 设置更新的 ID + }); + + // 调用 + dvCheckService.updateDvCheck(updateReqVO); + // 校验是否更新正确 + DvCheckDO dvCheck = dvCheckMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, dvCheck); + } + + @Test + public void testUpdateDvCheck_notExists() { + // 准备参数 + DvCheckSaveReqVO updateReqVO = randomPojo(DvCheckSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> dvCheckService.updateDvCheck(updateReqVO), DV_CHECK_NOT_EXISTS); + } + + @Test + public void testDeleteDvCheck_success() { + // mock 数据 + DvCheckDO dbDvCheck = randomPojo(DvCheckDO.class); + dvCheckMapper.insert(dbDvCheck);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbDvCheck.getId(); + + // 调用 + dvCheckService.deleteDvCheck(id); + // 校验数据不存在了 + assertNull(dvCheckMapper.selectById(id)); + } + + @Test + public void testDeleteDvCheck_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> dvCheckService.deleteDvCheck(id), DV_CHECK_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetDvCheckPage() { + // mock 数据 + DvCheckDO dbDvCheck = randomPojo(DvCheckDO.class, o -> { // 等会查询到 + o.setPlanCode(null); + o.setPlanName(null); + o.setPlanType(null); + o.setStartDate(null); + o.setEndDate(null); + o.setStatus(null); + o.setRemark(null); + o.setIsEnable(null); + o.setCreateTime(null); + o.setCycleUnit(null); + o.setCycleCount(null); + o.setPlanLevel(null); + o.setLastTime(null); + o.setFormulaCode(null); + }); + dvCheckMapper.insert(dbDvCheck); + // 测试 planCode 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setPlanCode(null))); + // 测试 planName 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setPlanName(null))); + // 测试 planType 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setPlanType(null))); + // 测试 startDate 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setStartDate(null))); + // 测试 endDate 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setEndDate(null))); + // 测试 status 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setStatus(null))); + // 测试 remark 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setRemark(null))); + // 测试 isEnable 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setIsEnable(null))); + // 测试 createTime 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setCreateTime(null))); + // 测试 cycleUnit 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setCycleUnit(null))); + // 测试 cycleCount 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setCycleCount(null))); + // 测试 planLevel 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setPlanLevel(null))); + // 测试 lastTime 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setLastTime(null))); + // 测试 formulaCode 不匹配 + dvCheckMapper.insert(cloneIgnoreId(dbDvCheck, o -> o.setFormulaCode(null))); + // 准备参数 + DvCheckPageReqVO reqVO = new DvCheckPageReqVO(); + reqVO.setPlanCode(null); + reqVO.setPlanName(null); + reqVO.setPlanType(null); + reqVO.setStartDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setEndDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setStatus(null); + reqVO.setRemark(null); + reqVO.setIsEnable(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setCycleUnit(null); + reqVO.setCycleCount(null); + reqVO.setPlanLevel(null); + reqVO.setLastTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setFormulaCode(null); + + // 调用 + PageResult pageResult = dvCheckService.getDvCheckPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbDvCheck, 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/dvrepair/DvRepairServiceImplTest.java b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImplTest.java new file mode 100644 index 0000000000..1d84086f2c --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImplTest.java @@ -0,0 +1,187 @@ +package cn.iocoder.yudao.module.mes.service.dvrepair; + +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.dvrepair.vo.DvRepairPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO; +import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairMapper; +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.DV_REPAIR_NOT_EXISTS; +import static org.junit.jupiter.api.Assertions.*; + +/** + * {@link DvRepairServiceImpl} 的单元测试类 + * + * @author 内蒙必硕 + */ +@Import(DvRepairServiceImpl.class) +public class DvRepairServiceImplTest extends BaseDbUnitTest { + + @Resource + private DvRepairServiceImpl dvRepairService; + + @Resource + private DvRepairMapper dvRepairMapper; + + @Test + public void testCreateDvRepair_success() { + // 准备参数 + DvRepairSaveReqVO createReqVO = randomPojo(DvRepairSaveReqVO.class).setId(null); + + // 调用 + Long dvRepairId = dvRepairService.createDvRepair(createReqVO); + // 断言 + assertNotNull(dvRepairId); + // 校验记录的属性是否正确 + DvRepairDO dvRepair = dvRepairMapper.selectById(dvRepairId); + assertPojoEquals(createReqVO, dvRepair, "id"); + } + + @Test + public void testUpdateDvRepair_success() { + // mock 数据 + DvRepairDO dbDvRepair = randomPojo(DvRepairDO.class); + dvRepairMapper.insert(dbDvRepair);// @Sql: 先插入出一条存在的数据 + // 准备参数 + DvRepairSaveReqVO updateReqVO = randomPojo(DvRepairSaveReqVO.class, o -> { + o.setId(dbDvRepair.getId()); // 设置更新的 ID + }); + + // 调用 + dvRepairService.updateDvRepair(updateReqVO); + // 校验是否更新正确 + DvRepairDO dvRepair = dvRepairMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, dvRepair); + } + + @Test + public void testUpdateDvRepair_notExists() { + // 准备参数 + DvRepairSaveReqVO updateReqVO = randomPojo(DvRepairSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> dvRepairService.updateDvRepair(updateReqVO), DV_REPAIR_NOT_EXISTS); + } + + @Test + public void testDeleteDvRepair_success() { + // mock 数据 + DvRepairDO dbDvRepair = randomPojo(DvRepairDO.class); + dvRepairMapper.insert(dbDvRepair);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbDvRepair.getId(); + + // 调用 + dvRepairService.deleteDvRepair(id); + // 校验数据不存在了 + assertNull(dvRepairMapper.selectById(id)); + } + + @Test + public void testDeleteDvRepair_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> dvRepairService.deleteDvRepair(id), DV_REPAIR_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetDvRepairPage() { + // mock 数据 + DvRepairDO dbDvRepair = randomPojo(DvRepairDO.class, o -> { // 等会查询到 + o.setRepairCode(null); + o.setRepairName(null); + o.setMachineryId(null); + o.setMachineryCode(null); + o.setMachineryName(null); + o.setMachineryBrand(null); + o.setMachinerySpec(null); + o.setMachineryTypeId(null); + o.setRequireDate(null); + o.setFinishDate(null); + o.setConfirmDate(null); + o.setRepairResult(null); + o.setAcceptedBy(null); + o.setConfirmBy(null); + o.setStatus(null); + o.setRemark(null); + o.setCreateTime(null); + }); + dvRepairMapper.insert(dbDvRepair); + // 测试 repairCode 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setRepairCode(null))); + // 测试 repairName 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setRepairName(null))); + // 测试 machineryId 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setMachineryId(null))); + // 测试 machineryCode 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setMachineryCode(null))); + // 测试 machineryName 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setMachineryName(null))); + // 测试 machineryBrand 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setMachineryBrand(null))); + // 测试 machinerySpec 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setMachinerySpec(null))); + // 测试 machineryTypeId 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setMachineryTypeId(null))); + // 测试 requireDate 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setRequireDate(null))); + // 测试 finishDate 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setFinishDate(null))); + // 测试 confirmDate 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setConfirmDate(null))); + // 测试 repairResult 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setRepairResult(null))); + // 测试 acceptedBy 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setAcceptedBy(null))); + // 测试 confirmBy 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setConfirmBy(null))); + // 测试 status 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setStatus(null))); + // 测试 remark 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setRemark(null))); + // 测试 createTime 不匹配 + dvRepairMapper.insert(cloneIgnoreId(dbDvRepair, o -> o.setCreateTime(null))); + // 准备参数 + DvRepairPageReqVO reqVO = new DvRepairPageReqVO(); + reqVO.setRepairCode(null); + reqVO.setRepairName(null); + reqVO.setMachineryId(null); + reqVO.setMachineryCode(null); + reqVO.setMachineryName(null); + reqVO.setMachineryBrand(null); + reqVO.setMachinerySpec(null); + reqVO.setMachineryTypeId(null); + reqVO.setRequireDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setFinishDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setConfirmDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setRepairResult(null); + reqVO.setAcceptedBy(null); + reqVO.setConfirmBy(null); + reqVO.setStatus(null); + reqVO.setRemark(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = dvRepairService.getDvRepairPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbDvRepair, 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/dvsubject/DvSubjectServiceImplTest.java b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/dvsubject/DvSubjectServiceImplTest.java new file mode 100644 index 0000000000..53aeb823a9 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/dvsubject/DvSubjectServiceImplTest.java @@ -0,0 +1,147 @@ +package cn.iocoder.yudao.module.mes.service.dvsubject; + +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.dvsubject.vo.DvSubjectPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.dvsubject.vo.DvSubjectSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.dvsubject.DvSubjectDO; +import cn.iocoder.yudao.module.mes.dal.mysql.dvsubject.DvSubjectMapper; +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.DV_SUBJECT_NOT_EXISTS; +import static org.junit.jupiter.api.Assertions.*; + +/** + * {@link DvSubjectServiceImpl} 的单元测试类 + * + * @author 内蒙必硕 + */ +@Import(DvSubjectServiceImpl.class) +public class DvSubjectServiceImplTest extends BaseDbUnitTest { + + @Resource + private DvSubjectServiceImpl dvSubjectService; + + @Resource + private DvSubjectMapper dvSubjectMapper; + + @Test + public void testCreateDvSubject_success() { + // 准备参数 + DvSubjectSaveReqVO createReqVO = randomPojo(DvSubjectSaveReqVO.class).setId(null); + + // 调用 + Long dvSubjectId = dvSubjectService.createDvSubject(createReqVO); + // 断言 + assertNotNull(dvSubjectId); + // 校验记录的属性是否正确 + DvSubjectDO dvSubject = dvSubjectMapper.selectById(dvSubjectId); + assertPojoEquals(createReqVO, dvSubject, "id"); + } + + @Test + public void testUpdateDvSubject_success() { + // mock 数据 + DvSubjectDO dbDvSubject = randomPojo(DvSubjectDO.class); + dvSubjectMapper.insert(dbDvSubject);// @Sql: 先插入出一条存在的数据 + // 准备参数 + DvSubjectSaveReqVO updateReqVO = randomPojo(DvSubjectSaveReqVO.class, o -> { + o.setId(dbDvSubject.getId()); // 设置更新的 ID + }); + + // 调用 + dvSubjectService.updateDvSubject(updateReqVO); + // 校验是否更新正确 + DvSubjectDO dvSubject = dvSubjectMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, dvSubject); + } + + @Test + public void testUpdateDvSubject_notExists() { + // 准备参数 + DvSubjectSaveReqVO updateReqVO = randomPojo(DvSubjectSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> dvSubjectService.updateDvSubject(updateReqVO), DV_SUBJECT_NOT_EXISTS); + } + + @Test + public void testDeleteDvSubject_success() { + // mock 数据 + DvSubjectDO dbDvSubject = randomPojo(DvSubjectDO.class); + dvSubjectMapper.insert(dbDvSubject);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbDvSubject.getId(); + + // 调用 + dvSubjectService.deleteDvSubject(id); + // 校验数据不存在了 + assertNull(dvSubjectMapper.selectById(id)); + } + + @Test + public void testDeleteDvSubject_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> dvSubjectService.deleteDvSubject(id), DV_SUBJECT_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetDvSubjectPage() { + // mock 数据 + DvSubjectDO dbDvSubject = randomPojo(DvSubjectDO.class, o -> { // 等会查询到 + o.setSubjectCode(null); + o.setSubjectName(null); + o.setSubjectType(null); + o.setSubjectContent(null); + o.setSubjectStandard(null); + o.setIsEnable(null); + o.setCreateTime(null); + }); + dvSubjectMapper.insert(dbDvSubject); + // 测试 subjectCode 不匹配 + dvSubjectMapper.insert(cloneIgnoreId(dbDvSubject, o -> o.setSubjectCode(null))); + // 测试 subjectName 不匹配 + dvSubjectMapper.insert(cloneIgnoreId(dbDvSubject, o -> o.setSubjectName(null))); + // 测试 subjectType 不匹配 + dvSubjectMapper.insert(cloneIgnoreId(dbDvSubject, o -> o.setSubjectType(null))); + // 测试 subjectContent 不匹配 + dvSubjectMapper.insert(cloneIgnoreId(dbDvSubject, o -> o.setSubjectContent(null))); + // 测试 subjectStandard 不匹配 + dvSubjectMapper.insert(cloneIgnoreId(dbDvSubject, o -> o.setSubjectStandard(null))); + // 测试 isEnable 不匹配 + dvSubjectMapper.insert(cloneIgnoreId(dbDvSubject, o -> o.setIsEnable(null))); + // 测试 createTime 不匹配 + dvSubjectMapper.insert(cloneIgnoreId(dbDvSubject, o -> o.setCreateTime(null))); + // 准备参数 + DvSubjectPageReqVO reqVO = new DvSubjectPageReqVO(); + reqVO.setSubjectCode(null); + reqVO.setSubjectName(null); + reqVO.setSubjectType(null); + reqVO.setSubjectContent(null); + reqVO.setSubjectStandard(null); + reqVO.setIsEnable(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = dvSubjectService.getDvSubjectPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbDvSubject, 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 825ba98270..deba20439b 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 @@ -48,10 +48,7 @@ DELETE FROM "mes_org_worker"; DELETE FROM "mes_produce_report_change_record"; DELETE FROM "mes_work_report_plan"; - --- 将该删表 SQL 语句,添加到 yudao-module-mes-biz 模块的 test/resources/sql/clean.sql 文件里 DELETE FROM "mes_energy_device_check_record"; --- 将该删表 SQL 语句,添加到 yudao-module-mes-biz 模块的 test/resources/sql/clean.sql 文件里 DELETE FROM "mes_energy_device"; @@ -59,7 +56,8 @@ DELETE FROM "mes_mold_record_subject"; DELETE FROM "mes_mold_record"; DELETE FROM "mes_mold_record_subject_detail"; - - +DELETE FROM "mes_dv_subject"; +DELETE FROM "mes_dv_check"; +DELETE FROM "mes_dv_repair"; 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 848b41798d..3c491a30fa 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 @@ -614,3 +614,72 @@ CREATE TABLE IF NOT EXISTS "mes_mold_record_subject_detail" "record_id" bigint, PRIMARY KEY ("id") ) COMMENT '模具维保明细'; + +CREATE TABLE IF NOT EXISTS "mes_dv_subject" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "subject_code" varchar NOT NULL, + "subject_name" varchar NOT NULL, + "subject_type" varchar, + "subject_content" varchar NOT NULL, + "subject_standard" varchar, + "is_enable" bit 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_dv_repair" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "repair_code" varchar NOT NULL, + "repair_name" varchar, + "machinery_id" bigint NOT NULL, + "machinery_code" varchar NOT NULL, + "machinery_name" varchar NOT NULL, + "machinery_brand" varchar, + "machinery_spec" varchar, + "machinery_type_id" bigint NOT NULL, + "require_date" varchar, + "finish_date" varchar, + "confirm_date" varchar, + "repair_result" varchar, + "accepted_by" varchar, + "confirm_by" varchar, + "status" varchar, + "remark" 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_dv_check" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "plan_code" varchar NOT NULL, + "plan_name" varchar, + "plan_type" varchar NOT NULL, + "start_date" varchar, + "end_date" varchar, + "status" varchar, + "remark" varchar, + "is_enable" bit 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, + "cycle_unit" varchar, + "cycle_count" varchar, + "plan_level" varchar, + "last_time" varchar, + "formula_code" varchar, + PRIMARY KEY ("id") +) COMMENT '点检计划表'; diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index 13eb395ace..2d4e07d438 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -48,11 +48,11 @@ spring: datasource: master: name: besure_neimeng - url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 + url: jdbc:mysql://47.106.185.127:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 # url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例 username: besure_user1 password: zpW5:,LGHACh - # username: sa # SQL Server 连接的示例 + # username: sa # SQL Server 连接的示例111.67.199.122http://47.106.185.127/ # password: Yudao@2024 # SQL Server 连接的示例 # username: SYSDBA # DM 连接的示例 # password: SYSDBA001 # DM 连接的示例