Procházet zdrojové kódy

保养计划及保养明细

lipenghui před 4 měsíci
rodič
revize
5eb6ed3fd7
17 změnil soubory, kde provedl 985 přidání a 0 odebrání
  1. 2 0
      yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/ErrorCodeConstant.java
  2. 97 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/IotMaintenanceDetailsController.java
  3. 97 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/IotMaintenancePlanController.java
  4. 61 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenanceDetailsPageReqVO.java
  5. 72 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenanceDetailsRespVO.java
  6. 52 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenanceDetailsSaveReqVO.java
  7. 43 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenancePlanPageReqVO.java
  8. 51 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenancePlanRespVO.java
  9. 36 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenancePlanSaveReqVO.java
  10. 82 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/maintenance/IotMaintenanceDetailsDO.java
  11. 59 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/maintenance/IotMaintenancePlanDO.java
  12. 38 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/maintenance/IotMaintenanceDetailsMapper.java
  13. 33 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/maintenance/IotMaintenancePlanMapper.java
  14. 56 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintenance/IotMaintenanceDetailsService.java
  15. 75 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintenance/IotMaintenanceDetailsServiceImpl.java
  16. 56 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintenance/IotMaintenancePlanService.java
  17. 75 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintenance/IotMaintenancePlanServiceImpl.java

+ 2 - 0
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/ErrorCodeConstant.java

@@ -31,4 +31,6 @@ public interface ErrorCodeConstant{
     ErrorCode IOT_MAINTAIN_MATERIAL_NOT_EXISTS = new ErrorCode(129, "工单物料不存在");
     ErrorCode IOT_INFORMATION_DB_NOT_EXISTS = new ErrorCode(130, "知识库不存在");
     ErrorCode IOT_LOCK_STOCK_FUSHU = new ErrorCode(131, "超过本地库存");
+    ErrorCode IOT_MAINTENANCE_PLAN_NOT_EXISTS = new ErrorCode(133, "保养计划明细不存在");
+    ErrorCode IOT_MAINTENANCE_DETAILS_NOT_EXISTS = new ErrorCode(134, "保养计划明细不存在");
 }

+ 97 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/IotMaintenanceDetailsController.java

@@ -0,0 +1,97 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintenance;
+
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenanceDetailsPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenanceDetailsRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenanceDetailsSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintenance.IotMaintenanceDetailsDO;
+import cn.iocoder.yudao.module.pms.service.maintenance.IotMaintenanceDetailsService;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+
+@Tag(name = "管理后台 - 保养计划明细")
+@RestController
+@RequestMapping("/rq/iot-maintenance-details")
+@Validated
+public class IotMaintenanceDetailsController {
+
+    @Resource
+    private IotMaintenanceDetailsService iotMaintenanceDetailsService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建保养计划明细")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-details:create')")
+    public CommonResult<Long> createIotMaintenanceDetails(@Valid @RequestBody IotMaintenanceDetailsSaveReqVO createReqVO) {
+        return success(iotMaintenanceDetailsService.createIotMaintenanceDetails(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新保养计划明细")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-details:update')")
+    public CommonResult<Boolean> updateIotMaintenanceDetails(@Valid @RequestBody IotMaintenanceDetailsSaveReqVO updateReqVO) {
+        iotMaintenanceDetailsService.updateIotMaintenanceDetails(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除保养计划明细")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-details:delete')")
+    public CommonResult<Boolean> deleteIotMaintenanceDetails(@RequestParam("id") Long id) {
+        iotMaintenanceDetailsService.deleteIotMaintenanceDetails(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得保养计划明细")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-details:query')")
+    public CommonResult<IotMaintenanceDetailsRespVO> getIotMaintenanceDetails(@RequestParam("id") Long id) {
+        IotMaintenanceDetailsDO iotMaintenanceDetails = iotMaintenanceDetailsService.getIotMaintenanceDetails(id);
+        return success(BeanUtils.toBean(iotMaintenanceDetails, IotMaintenanceDetailsRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得保养计划明细分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-details:query')")
+    public CommonResult<PageResult<IotMaintenanceDetailsRespVO>> getIotMaintenanceDetailsPage(@Valid IotMaintenanceDetailsPageReqVO pageReqVO) {
+        PageResult<IotMaintenanceDetailsDO> pageResult = iotMaintenanceDetailsService.getIotMaintenanceDetailsPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotMaintenanceDetailsRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出保养计划明细 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-details:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotMaintenanceDetailsExcel(@Valid IotMaintenanceDetailsPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotMaintenanceDetailsDO> list = iotMaintenanceDetailsService.getIotMaintenanceDetailsPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "保养计划明细.xls", "数据", IotMaintenanceDetailsRespVO.class,
+                        BeanUtils.toBean(list, IotMaintenanceDetailsRespVO.class));
+    }
+
+}

+ 97 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/IotMaintenancePlanController.java

@@ -0,0 +1,97 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintenance;
+
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenancePlanPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenancePlanRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenancePlanSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintenance.IotMaintenancePlanDO;
+import cn.iocoder.yudao.module.pms.service.maintenance.IotMaintenancePlanService;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+
+@Tag(name = "管理后台 - 保养计划")
+@RestController
+@RequestMapping("/rq/iot-maintenance-plan")
+@Validated
+public class IotMaintenancePlanController {
+
+    @Resource
+    private IotMaintenancePlanService iotMaintenancePlanService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建保养计划")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-plan:create')")
+    public CommonResult<Long> createIotMaintenancePlan(@Valid @RequestBody IotMaintenancePlanSaveReqVO createReqVO) {
+        return success(iotMaintenancePlanService.createIotMaintenancePlan(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新保养计划")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-plan:update')")
+    public CommonResult<Boolean> updateIotMaintenancePlan(@Valid @RequestBody IotMaintenancePlanSaveReqVO updateReqVO) {
+        iotMaintenancePlanService.updateIotMaintenancePlan(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除保养计划")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-plan:delete')")
+    public CommonResult<Boolean> deleteIotMaintenancePlan(@RequestParam("id") Long id) {
+        iotMaintenancePlanService.deleteIotMaintenancePlan(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得保养计划")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-plan:query')")
+    public CommonResult<IotMaintenancePlanRespVO> getIotMaintenancePlan(@RequestParam("id") Long id) {
+        IotMaintenancePlanDO iotMaintenancePlan = iotMaintenancePlanService.getIotMaintenancePlan(id);
+        return success(BeanUtils.toBean(iotMaintenancePlan, IotMaintenancePlanRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得保养计划分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-plan:query')")
+    public CommonResult<PageResult<IotMaintenancePlanRespVO>> getIotMaintenancePlanPage(@Valid IotMaintenancePlanPageReqVO pageReqVO) {
+        PageResult<IotMaintenancePlanDO> pageResult = iotMaintenancePlanService.getIotMaintenancePlanPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotMaintenancePlanRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出保养计划 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintenance-plan:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotMaintenancePlanExcel(@Valid IotMaintenancePlanPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotMaintenancePlanDO> list = iotMaintenancePlanService.getIotMaintenancePlanPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "保养计划.xls", "数据", IotMaintenancePlanRespVO.class,
+                        BeanUtils.toBean(list, IotMaintenancePlanRespVO.class));
+    }
+
+}

+ 61 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenanceDetailsPageReqVO.java

@@ -0,0 +1,61 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintenance.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 IotMaintenanceDetailsPageReqVO extends PageParam {
+
+    @Schema(description = "保养计划id", example = "7027")
+    private Long planId;
+
+    @Schema(description = "设备id", example = "14317")
+    private Long deviceId;
+
+    @Schema(description = "设备资产编号")
+    private String deviceAssetNumber;
+
+    @Schema(description = "设备名称", example = "李四")
+    private String deviceName;
+
+    @Schema(description = "设备类别")
+    private String deviceCategory;
+
+    @Schema(description = "设备品牌")
+    private String deviceBrand;
+
+    @Schema(description = "当前运行公里数(km)")
+    private BigDecimal runningKilometers;
+
+    @Schema(description = "当前运行时间(小时)")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private BigDecimal[] runningTime;
+
+    @Schema(description = "自然日期(天)")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private BigDecimal[] naturalDate;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "排序")
+    private Integer sort;
+
+    @Schema(description = "状态 0启用  1停用", example = "1")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 72 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenanceDetailsRespVO.java

@@ -0,0 +1,72 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 保养计划明细 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotMaintenanceDetailsRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31782")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "保养计划id", example = "7027")
+    @ExcelProperty("保养计划id")
+    private Long planId;
+
+    @Schema(description = "设备id", example = "14317")
+    @ExcelProperty("设备id")
+    private Long deviceId;
+
+    @Schema(description = "设备资产编号")
+    @ExcelProperty("设备资产编号")
+    private String deviceAssetNumber;
+
+    @Schema(description = "设备名称", example = "李四")
+    @ExcelProperty("设备名称")
+    private String deviceName;
+
+    @Schema(description = "设备类别")
+    @ExcelProperty("设备类别")
+    private String deviceCategory;
+
+    @Schema(description = "设备品牌")
+    @ExcelProperty("设备品牌")
+    private String deviceBrand;
+
+    @Schema(description = "当前运行公里数(km)")
+    @ExcelProperty("当前运行公里数(km)")
+    private BigDecimal runningKilometers;
+
+    @Schema(description = "当前运行时间(小时)")
+    @ExcelProperty("当前运行时间(小时)")
+    private BigDecimal runningTime;
+
+    @Schema(description = "自然日期(天)")
+    @ExcelProperty("自然日期(天)")
+    private BigDecimal naturalDate;
+
+    @Schema(description = "备注", example = "你猜")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "排序")
+    @ExcelProperty("排序")
+    private Integer sort;
+
+    @Schema(description = "状态 0启用  1停用", example = "1")
+    @ExcelProperty("状态 0启用  1停用")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 52 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenanceDetailsSaveReqVO.java

@@ -0,0 +1,52 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 保养计划明细新增/修改 Request VO")
+@Data
+public class IotMaintenanceDetailsSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31782")
+    private Long id;
+
+    @Schema(description = "保养计划id", example = "7027")
+    private Long planId;
+
+    @Schema(description = "设备id", example = "14317")
+    private Long deviceId;
+
+    @Schema(description = "设备资产编号")
+    private String deviceAssetNumber;
+
+    @Schema(description = "设备名称", example = "李四")
+    private String deviceName;
+
+    @Schema(description = "设备类别")
+    private String deviceCategory;
+
+    @Schema(description = "设备品牌")
+    private String deviceBrand;
+
+    @Schema(description = "当前运行公里数(km)")
+    private BigDecimal runningKilometers;
+
+    @Schema(description = "当前运行时间(小时)")
+    private BigDecimal runningTime;
+
+    @Schema(description = "自然日期(天)")
+    private BigDecimal naturalDate;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "排序")
+    private Integer sort;
+
+    @Schema(description = "状态 0启用  1停用", example = "1")
+    private Integer status;
+
+}

+ 43 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenancePlanPageReqVO.java

@@ -0,0 +1,43 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintenance.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 IotMaintenancePlanPageReqVO extends PageParam {
+
+    @Schema(description = "组织id", example = "1052")
+    private Long deptId;
+
+    @Schema(description = "计划编号 自动生成")
+    private String serialNumber;
+
+    @Schema(description = "计划名称 默认以队伍名称生成", example = "张三")
+    private String name;
+
+    @Schema(description = "负责人id 多个以逗号分隔")
+    private String responsiblePerson;
+
+    @Schema(description = "负责人id 多个以逗号分隔", example = "王五")
+    private String responsiblePersonName;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "状态 0启用  1停用", example = "1")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 51 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenancePlanRespVO.java

@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 保养计划 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotMaintenancePlanRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3796")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "组织id", example = "1052")
+    @ExcelProperty("组织id")
+    private Long deptId;
+
+    @Schema(description = "计划编号 自动生成")
+    @ExcelProperty("计划编号 自动生成")
+    private String serialNumber;
+
+    @Schema(description = "计划名称 默认以队伍名称生成", example = "张三")
+    @ExcelProperty("计划名称 默认以队伍名称生成")
+    private String name;
+
+    @Schema(description = "负责人id 多个以逗号分隔")
+    @ExcelProperty("负责人id 多个以逗号分隔")
+    private String responsiblePerson;
+
+    @Schema(description = "负责人id 多个以逗号分隔", example = "王五")
+    @ExcelProperty("负责人id 多个以逗号分隔")
+    private String responsiblePersonName;
+
+    @Schema(description = "备注", example = "你猜")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "状态 0启用  1停用", example = "1")
+    @ExcelProperty("状态 0启用  1停用")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 36 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintenance/vo/IotMaintenancePlanSaveReqVO.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 保养计划新增/修改 Request VO")
+@Data
+public class IotMaintenancePlanSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3796")
+    private Long id;
+
+    @Schema(description = "组织id", example = "1052")
+    private Long deptId;
+
+    @Schema(description = "计划编号 自动生成")
+    private String serialNumber;
+
+    @Schema(description = "计划名称 默认以队伍名称生成", example = "张三")
+    private String name;
+
+    @Schema(description = "负责人id 多个以逗号分隔")
+    private String responsiblePerson;
+
+    @Schema(description = "负责人id 多个以逗号分隔", example = "王五")
+    private String responsiblePersonName;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "状态 0启用  1停用", example = "1")
+    private Integer status;
+
+}

+ 82 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/maintenance/IotMaintenanceDetailsDO.java

@@ -0,0 +1,82 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.maintenance;
+
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import java.math.BigDecimal;
+import java.math.BigDecimal;
+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("rq_iot_maintenance_details")
+@KeySequence("rq_iot_maintenance_details_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotMaintenanceDetailsDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 保养计划id
+     */
+    private Long planId;
+    /**
+     * 设备id
+     */
+    private Long deviceId;
+    /**
+     * 设备资产编号
+     */
+    private String deviceAssetNumber;
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+    /**
+     * 设备类别
+     */
+    private String deviceCategory;
+    /**
+     * 设备品牌
+     */
+    private String deviceBrand;
+    /**
+     * 当前运行公里数(km)
+     */
+    private BigDecimal runningKilometers;
+    /**
+     * 当前运行时间(小时)
+     */
+    private BigDecimal runningTime;
+    /**
+     * 自然日期(天)
+     */
+    private BigDecimal naturalDate;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 排序
+     */
+    private Integer sort;
+    /**
+     * 状态 0启用  1停用
+     */
+    private Integer status;
+
+}

+ 59 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/maintenance/IotMaintenancePlanDO.java

@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.maintenance;
+
+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("rq_iot_maintenance_plan")
+@KeySequence("rq_iot_maintenance_plan_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotMaintenancePlanDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 组织id
+     */
+    private Long deptId;
+    /**
+     * 计划编号 自动生成
+     */
+    private String serialNumber;
+    /**
+     * 计划名称 默认以队伍名称生成
+     */
+    private String name;
+    /**
+     * 负责人id 多个以逗号分隔
+     */
+    private String responsiblePerson;
+    /**
+     * 负责人id 多个以逗号分隔
+     */
+    private String responsiblePersonName;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 状态 0启用  1停用
+     */
+    private Integer status;
+
+}

+ 38 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/maintenance/IotMaintenanceDetailsMapper.java

@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.maintenance;
+
+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.pms.controller.admin.maintenance.vo.IotMaintenanceDetailsPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintenance.IotMaintenanceDetailsDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 保养计划明细 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface IotMaintenanceDetailsMapper extends BaseMapperX<IotMaintenanceDetailsDO> {
+
+    default PageResult<IotMaintenanceDetailsDO> selectPage(IotMaintenanceDetailsPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotMaintenanceDetailsDO>()
+                .eqIfPresent(IotMaintenanceDetailsDO::getPlanId, reqVO.getPlanId())
+                .eqIfPresent(IotMaintenanceDetailsDO::getDeviceId, reqVO.getDeviceId())
+                .eqIfPresent(IotMaintenanceDetailsDO::getDeviceAssetNumber, reqVO.getDeviceAssetNumber())
+                .likeIfPresent(IotMaintenanceDetailsDO::getDeviceName, reqVO.getDeviceName())
+                .eqIfPresent(IotMaintenanceDetailsDO::getDeviceCategory, reqVO.getDeviceCategory())
+                .eqIfPresent(IotMaintenanceDetailsDO::getDeviceBrand, reqVO.getDeviceBrand())
+                .eqIfPresent(IotMaintenanceDetailsDO::getRunningKilometers, reqVO.getRunningKilometers())
+                .betweenIfPresent(IotMaintenanceDetailsDO::getRunningTime, reqVO.getRunningTime())
+                .betweenIfPresent(IotMaintenanceDetailsDO::getNaturalDate, reqVO.getNaturalDate())
+                .eqIfPresent(IotMaintenanceDetailsDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(IotMaintenanceDetailsDO::getSort, reqVO.getSort())
+                .eqIfPresent(IotMaintenanceDetailsDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(IotMaintenanceDetailsDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotMaintenanceDetailsDO::getId));
+    }
+
+}

+ 33 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/maintenance/IotMaintenancePlanMapper.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.maintenance;
+
+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.pms.controller.admin.maintenance.vo.IotMaintenancePlanPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintenance.IotMaintenancePlanDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 保养计划 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface IotMaintenancePlanMapper extends BaseMapperX<IotMaintenancePlanDO> {
+
+    default PageResult<IotMaintenancePlanDO> selectPage(IotMaintenancePlanPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotMaintenancePlanDO>()
+                .eqIfPresent(IotMaintenancePlanDO::getDeptId, reqVO.getDeptId())
+                .eqIfPresent(IotMaintenancePlanDO::getSerialNumber, reqVO.getSerialNumber())
+                .likeIfPresent(IotMaintenancePlanDO::getName, reqVO.getName())
+                .eqIfPresent(IotMaintenancePlanDO::getResponsiblePerson, reqVO.getResponsiblePerson())
+                .likeIfPresent(IotMaintenancePlanDO::getResponsiblePersonName, reqVO.getResponsiblePersonName())
+                .eqIfPresent(IotMaintenancePlanDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(IotMaintenancePlanDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(IotMaintenancePlanDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotMaintenancePlanDO::getId));
+    }
+
+}

+ 56 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintenance/IotMaintenanceDetailsService.java

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.pms.service.maintenance;
+
+import java.util.*;
+import javax.validation.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenanceDetailsPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenanceDetailsSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintenance.IotMaintenanceDetailsDO;
+
+/**
+ * 保养计划明细 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface IotMaintenanceDetailsService {
+
+    /**
+     * 创建保养计划明细
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotMaintenanceDetails(@Valid IotMaintenanceDetailsSaveReqVO createReqVO);
+
+    /**
+     * 更新保养计划明细
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotMaintenanceDetails(@Valid IotMaintenanceDetailsSaveReqVO updateReqVO);
+
+    /**
+     * 删除保养计划明细
+     *
+     * @param id 编号
+     */
+    void deleteIotMaintenanceDetails(Long id);
+
+    /**
+     * 获得保养计划明细
+     *
+     * @param id 编号
+     * @return 保养计划明细
+     */
+    IotMaintenanceDetailsDO getIotMaintenanceDetails(Long id);
+
+    /**
+     * 获得保养计划明细分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 保养计划明细分页
+     */
+    PageResult<IotMaintenanceDetailsDO> getIotMaintenanceDetailsPage(IotMaintenanceDetailsPageReqVO pageReqVO);
+
+}

+ 75 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintenance/IotMaintenanceDetailsServiceImpl.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.pms.service.maintenance;
+
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenanceDetailsPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenanceDetailsSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintenance.IotMaintenanceDetailsDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.maintenance.IotMaintenanceDetailsMapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_MAINTENANCE_DETAILS_NOT_EXISTS;
+
+/**
+ * 保养计划明细 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class IotMaintenanceDetailsServiceImpl implements IotMaintenanceDetailsService {
+
+    @Resource
+    private IotMaintenanceDetailsMapper iotMaintenanceDetailsMapper;
+
+    @Override
+    public Long createIotMaintenanceDetails(IotMaintenanceDetailsSaveReqVO createReqVO) {
+        // 插入
+        IotMaintenanceDetailsDO iotMaintenanceDetails = BeanUtils.toBean(createReqVO, IotMaintenanceDetailsDO.class);
+        iotMaintenanceDetailsMapper.insert(iotMaintenanceDetails);
+        // 返回
+        return iotMaintenanceDetails.getId();
+    }
+
+    @Override
+    public void updateIotMaintenanceDetails(IotMaintenanceDetailsSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotMaintenanceDetailsExists(updateReqVO.getId());
+        // 更新
+        IotMaintenanceDetailsDO updateObj = BeanUtils.toBean(updateReqVO, IotMaintenanceDetailsDO.class);
+        iotMaintenanceDetailsMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotMaintenanceDetails(Long id) {
+        // 校验存在
+        validateIotMaintenanceDetailsExists(id);
+        // 删除
+        iotMaintenanceDetailsMapper.deleteById(id);
+    }
+
+    private void validateIotMaintenanceDetailsExists(Long id) {
+        if (iotMaintenanceDetailsMapper.selectById(id) == null) {
+            throw exception(IOT_MAINTENANCE_DETAILS_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public IotMaintenanceDetailsDO getIotMaintenanceDetails(Long id) {
+        return iotMaintenanceDetailsMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotMaintenanceDetailsDO> getIotMaintenanceDetailsPage(IotMaintenanceDetailsPageReqVO pageReqVO) {
+        return iotMaintenanceDetailsMapper.selectPage(pageReqVO);
+    }
+
+}

+ 56 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintenance/IotMaintenancePlanService.java

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.pms.service.maintenance;
+
+import java.util.*;
+import javax.validation.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenancePlanPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenancePlanSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintenance.IotMaintenancePlanDO;
+
+/**
+ * 保养计划 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface IotMaintenancePlanService {
+
+    /**
+     * 创建保养计划
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotMaintenancePlan(@Valid IotMaintenancePlanSaveReqVO createReqVO);
+
+    /**
+     * 更新保养计划
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotMaintenancePlan(@Valid IotMaintenancePlanSaveReqVO updateReqVO);
+
+    /**
+     * 删除保养计划
+     *
+     * @param id 编号
+     */
+    void deleteIotMaintenancePlan(Long id);
+
+    /**
+     * 获得保养计划
+     *
+     * @param id 编号
+     * @return 保养计划
+     */
+    IotMaintenancePlanDO getIotMaintenancePlan(Long id);
+
+    /**
+     * 获得保养计划分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 保养计划分页
+     */
+    PageResult<IotMaintenancePlanDO> getIotMaintenancePlanPage(IotMaintenancePlanPageReqVO pageReqVO);
+
+}

+ 75 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintenance/IotMaintenancePlanServiceImpl.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.pms.service.maintenance;
+
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenancePlanPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintenance.vo.IotMaintenancePlanSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintenance.IotMaintenancePlanDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.maintenance.IotMaintenancePlanMapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_MAINTENANCE_PLAN_NOT_EXISTS;
+
+/**
+ * 保养计划 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class IotMaintenancePlanServiceImpl implements IotMaintenancePlanService {
+
+    @Resource
+    private IotMaintenancePlanMapper iotMaintenancePlanMapper;
+
+    @Override
+    public Long createIotMaintenancePlan(IotMaintenancePlanSaveReqVO createReqVO) {
+        // 插入
+        IotMaintenancePlanDO iotMaintenancePlan = BeanUtils.toBean(createReqVO, IotMaintenancePlanDO.class);
+        iotMaintenancePlanMapper.insert(iotMaintenancePlan);
+        // 返回
+        return iotMaintenancePlan.getId();
+    }
+
+    @Override
+    public void updateIotMaintenancePlan(IotMaintenancePlanSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotMaintenancePlanExists(updateReqVO.getId());
+        // 更新
+        IotMaintenancePlanDO updateObj = BeanUtils.toBean(updateReqVO, IotMaintenancePlanDO.class);
+        iotMaintenancePlanMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotMaintenancePlan(Long id) {
+        // 校验存在
+        validateIotMaintenancePlanExists(id);
+        // 删除
+        iotMaintenancePlanMapper.deleteById(id);
+    }
+
+    private void validateIotMaintenancePlanExists(Long id) {
+        if (iotMaintenancePlanMapper.selectById(id) == null) {
+            throw exception(IOT_MAINTENANCE_PLAN_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public IotMaintenancePlanDO getIotMaintenancePlan(Long id) {
+        return iotMaintenancePlanMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotMaintenancePlanDO> getIotMaintenancePlanPage(IotMaintenancePlanPageReqVO pageReqVO) {
+        return iotMaintenancePlanMapper.selectPage(pageReqVO);
+    }
+
+}