lipenghui před 3 měsíci
rodič
revize
6c2fd03e0c
25 změnil soubory, kde provedl 944 přidání a 8 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/inspect/order/IotInspectOrderController.java
  3. 94 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderDetailController.java
  4. 46 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailPageReqVO.java
  5. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailRespVO.java
  6. 43 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailSaveReqVO.java
  7. 40 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderPageReqVO.java
  8. 47 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderRespVO.java
  9. 36 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderSaveReqVO.java
  10. 4 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/IotInspectPlanController.java
  11. 6 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/vo/IotInspectPlanRespVO.java
  12. 5 2
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/vo/IotInspectPlanSaveReqVO.java
  13. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/vo/IotInspectRouteRespVO.java
  14. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/vo/IotInspectRouteSaveReqVO.java
  15. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/inspect/IotInspectOrderDO.java
  16. 62 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/inspect/IotInspectOrderDetailDO.java
  17. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/inspect/IotInspectPlanDO.java
  18. 4 5
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/inspect/IotInspectRouteDO.java
  19. 34 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/inspect/IotInspectOrderDetailMapper.java
  20. 32 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/inspect/IotInspectOrderMapper.java
  21. 56 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderDetailService.java
  22. 75 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderDetailServiceImpl.java
  23. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderService.java
  24. 71 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderServiceImpl.java
  25. 19 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectPlanServiceImpl.java

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

@@ -41,4 +41,6 @@ public interface ErrorCodeConstant{
     ErrorCode IOT_MAIN_PLAN_BOM_MATERIAL_NOT_EXISTS = new ErrorCode(136, "PMS 保养计划明细设备BOM挂载物料关联不存在");
     ErrorCode IOT_INSPECT_ROUTE_NOT_EXISTS = new ErrorCode(134, "巡检项不存在");
     ErrorCode IOT_INSPECT_PLAN_NOT_EXISTS = new ErrorCode(135, "巡检计划不存在");
+    ErrorCode IOT_INSPECT_ORDER_NOT_EXISTS = new ErrorCode(136, "巡检工单不存在");
+    ErrorCode IOT_INSPECT_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(137, "巡检工单巡检明细不存在");
 }

+ 97 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderController.java

@@ -0,0 +1,97 @@
+package cn.iocoder.yudao.module.pms.controller.admin.inspect.order;
+
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
+import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderService;
+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-inspect-order")
+@Validated
+public class IotInspectOrderController {
+
+    @Resource
+    private IotInspectOrderService iotInspectOrderService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建巡检工单")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:create')")
+    public CommonResult<Long> createIotInspectOrder(@Valid @RequestBody IotInspectOrderSaveReqVO createReqVO) {
+        return success(iotInspectOrderService.createIotInspectOrder(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新巡检工单")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:update')")
+    public CommonResult<Boolean> updateIotInspectOrder(@Valid @RequestBody IotInspectOrderSaveReqVO updateReqVO) {
+        iotInspectOrderService.updateIotInspectOrder(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除巡检工单")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:delete')")
+    public CommonResult<Boolean> deleteIotInspectOrder(@RequestParam("id") Long id) {
+        iotInspectOrderService.deleteIotInspectOrder(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得巡检工单")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
+    public CommonResult<IotInspectOrderRespVO> getIotInspectOrder(@RequestParam("id") Long id) {
+        IotInspectOrderDO iotInspectOrder = iotInspectOrderService.getIotInspectOrder(id);
+        return success(BeanUtils.toBean(iotInspectOrder, IotInspectOrderRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得巡检工单分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
+    public CommonResult<PageResult<IotInspectOrderRespVO>> getIotInspectOrderPage(@Valid IotInspectOrderPageReqVO pageReqVO) {
+        PageResult<IotInspectOrderDO> pageResult = iotInspectOrderService.getIotInspectOrderPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotInspectOrderRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出巡检工单 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotInspectOrderExcel(@Valid IotInspectOrderPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotInspectOrderDO> list = iotInspectOrderService.getIotInspectOrderPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "巡检工单.xls", "数据", IotInspectOrderRespVO.class,
+                        BeanUtils.toBean(list, IotInspectOrderRespVO.class));
+    }
+
+}

+ 94 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderDetailController.java

@@ -0,0 +1,94 @@
+package cn.iocoder.yudao.module.pms.controller.admin.inspect.order;
+
+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.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
+import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderDetailService;
+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("/rq/iot-inspect-order-detail")
+@Validated
+public class IotInspectOrderDetailController {
+
+    @Resource
+    private IotInspectOrderDetailService iotInspectOrderDetailService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建巡检工单巡检明细")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:create')")
+    public CommonResult<Long> createIotInspectOrderDetail(@Valid @RequestBody IotInspectOrderDetailSaveReqVO createReqVO) {
+        return success(iotInspectOrderDetailService.createIotInspectOrderDetail(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新巡检工单巡检明细")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:update')")
+    public CommonResult<Boolean> updateIotInspectOrderDetail(@Valid @RequestBody IotInspectOrderDetailSaveReqVO updateReqVO) {
+        iotInspectOrderDetailService.updateIotInspectOrderDetail(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除巡检工单巡检明细")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:delete')")
+    public CommonResult<Boolean> deleteIotInspectOrderDetail(@RequestParam("id") Long id) {
+        iotInspectOrderDetailService.deleteIotInspectOrderDetail(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得巡检工单巡检明细")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:query')")
+    public CommonResult<IotInspectOrderDetailRespVO> getIotInspectOrderDetail(@RequestParam("id") Long id) {
+        IotInspectOrderDetailDO iotInspectOrderDetail = iotInspectOrderDetailService.getIotInspectOrderDetail(id);
+        return success(BeanUtils.toBean(iotInspectOrderDetail, IotInspectOrderDetailRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得巡检工单巡检明细分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:query')")
+    public CommonResult<PageResult<IotInspectOrderDetailRespVO>> getIotInspectOrderDetailPage(@Valid IotInspectOrderDetailPageReqVO pageReqVO) {
+        PageResult<IotInspectOrderDetailDO> pageResult = iotInspectOrderDetailService.getIotInspectOrderDetailPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotInspectOrderDetailRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出巡检工单巡检明细 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotInspectOrderDetailExcel(@Valid IotInspectOrderDetailPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotInspectOrderDetailDO> list = iotInspectOrderDetailService.getIotInspectOrderDetailPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "巡检工单巡检明细.xls", "数据", IotInspectOrderDetailRespVO.class,
+                        BeanUtils.toBean(list, IotInspectOrderDetailRespVO.class));
+    }
+
+}

+ 46 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailPageReqVO.java

@@ -0,0 +1,46 @@
+package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.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 IotInspectOrderDetailPageReqVO extends PageParam {
+
+    @Schema(description = "工单id", example = "9096")
+    private Long orderId;
+
+    @Schema(description = "设备id", example = "28723")
+    private Long deviceId;
+
+    @Schema(description = "巡检项id", example = "14105")
+    private Long itemId;
+
+    @Schema(description = "是否正常")
+    private Boolean ifNormal;
+
+    @Schema(description = "异常描述", example = "你猜")
+    private String description;
+
+    @Schema(description = "图片", example = "https://www.iocoder.cn")
+    private String picUrl;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "部门id", example = "26288")
+    private Long deptId;
+
+}

+ 55 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailRespVO.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.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 IotInspectOrderDetailRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4075")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "工单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9096")
+    @ExcelProperty("工单id")
+    private Long orderId;
+
+    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28723")
+    @ExcelProperty("设备id")
+    private Long deviceId;
+
+    @Schema(description = "巡检项id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14105")
+    @ExcelProperty("巡检项id")
+    private Long itemId;
+
+    @Schema(description = "是否正常", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("是否正常")
+    private Boolean ifNormal;
+
+    @Schema(description = "异常描述", example = "你猜")
+    @ExcelProperty("异常描述")
+    private String description;
+
+    @Schema(description = "图片", example = "https://www.iocoder.cn")
+    @ExcelProperty("图片")
+    private String picUrl;
+
+    @Schema(description = "备注", example = "你猜")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "部门id", example = "26288")
+    @ExcelProperty("部门id")
+    private Long deptId;
+
+}

+ 43 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailSaveReqVO.java

@@ -0,0 +1,43 @@
+package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.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 IotInspectOrderDetailSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4075")
+    private Long id;
+
+    @Schema(description = "工单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9096")
+    @NotNull(message = "工单id不能为空")
+    private Long orderId;
+
+    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28723")
+    @NotNull(message = "设备id不能为空")
+    private Long deviceId;
+
+    @Schema(description = "巡检项id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14105")
+    @NotNull(message = "巡检项id不能为空")
+    private Long itemId;
+
+    @Schema(description = "是否正常", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "是否正常不能为空")
+    private Boolean ifNormal;
+
+    @Schema(description = "异常描述", example = "你猜")
+    private String description;
+
+    @Schema(description = "图片", example = "https://www.iocoder.cn")
+    private String picUrl;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "部门id", example = "26288")
+    private Long deptId;
+
+}

+ 40 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderPageReqVO.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.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 IotInspectOrderPageReqVO extends PageParam {
+
+    @Schema(description = "巡检工单名")
+    private String inspectOrderTitle;
+
+    @Schema(description = "巡检工单编码")
+    private String inspectOrderCode;
+
+    @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;
+
+    @Schema(description = "部门id", example = "27771")
+    private Long deptId;
+
+    @Schema(description = "设备id")
+    private String deviceIds;
+
+}

+ 47 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderRespVO.java

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.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 IotInspectOrderRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30405")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "巡检工单名", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("巡检工单名")
+    private String inspectOrderTitle;
+
+    @Schema(description = "巡检工单编码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("巡检工单编码")
+    private String inspectOrderCode;
+
+    @Schema(description = "巡检工单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("巡检工单状态")
+    private String status;
+
+    @Schema(description = "备注", example = "你猜")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "部门id", example = "27771")
+    @ExcelProperty("部门id")
+    private Long deptId;
+
+    @Schema(description = "设备id")
+    @ExcelProperty("设备id")
+    private String deviceIds;
+
+}

+ 36 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderSaveReqVO.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.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 IotInspectOrderSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30405")
+    private Long id;
+
+    @Schema(description = "巡检工单名", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "巡检工单名不能为空")
+    private String inspectOrderTitle;
+
+    @Schema(description = "巡检工单编码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "巡检工单编码不能为空")
+    private String inspectOrderCode;
+
+    @Schema(description = "巡检工单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotEmpty(message = "巡检工单状态不能为空")
+    private String status;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "部门id", example = "27771")
+    private Long deptId;
+
+    @Schema(description = "设备id")
+    private String deviceIds;
+
+}

+ 4 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/IotInspectPlanController.java

@@ -23,6 +23,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
@@ -68,7 +69,9 @@ public class IotInspectPlanController {
     @PreAuthorize("@ss.hasPermission('rq:iot-inspect-plan:query')")
     public CommonResult<IotInspectPlanRespVO> getIotInspectPlan(@RequestParam("id") Long id) {
         IotInspectPlanDO iotInspectPlan = iotInspectPlanService.getIotInspectPlan(id);
-        return success(BeanUtils.toBean(iotInspectPlan, IotInspectPlanRespVO.class));
+        IotInspectPlanRespVO bean = BeanUtils.toBean(iotInspectPlan, IotInspectPlanRespVO.class);
+        bean.setCharges(Arrays.asList(iotInspectPlan.getCharge().split(",")));
+        return success(bean);
     }
 
     @GetMapping("/page")

+ 6 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/vo/IotInspectPlanRespVO.java

@@ -5,6 +5,8 @@ import lombok.*;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.List;
+
 import com.alibaba.excel.annotation.*;
 
 @Schema(description = "管理后台 - 巡检计划 Response VO")
@@ -54,4 +56,8 @@ public class IotInspectPlanRespVO {
 
     @Schema(description = "状态")
     private Integer status;
+
+    private String chargeName;
+
+    private List<String> charges;
 }

+ 5 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/vo/IotInspectPlanSaveReqVO.java

@@ -5,6 +5,7 @@ import lombok.*;
 
 import javax.validation.constraints.*;
 import java.math.BigDecimal;
+import java.util.List;
 
 @Schema(description = "管理后台 - 巡检计划新增/修改 Request VO")
 @Data
@@ -18,7 +19,7 @@ public class IotInspectPlanSaveReqVO {
     private String planTitle;
 
     @Schema(description = "巡检计划编号", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "巡检计划编号不能为空")
+//    @NotEmpty(message = "巡检计划编号不能为空")
     private String planCode;
 
     @Schema(description = "周期", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -30,7 +31,7 @@ public class IotInspectPlanSaveReqVO {
     private String planUnit;
 
     @Schema(description = "负责人", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "负责人不能为空")
+//    @NotEmpty(message = "负责人不能为空")
     private String charge;
 
     @Schema(description = "设备", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -45,4 +46,6 @@ public class IotInspectPlanSaveReqVO {
 
     @Schema(description = "状态")
     private Integer status;
+    @Schema(description = "负责人")
+    private List<String> charges;
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/vo/IotInspectRouteRespVO.java

@@ -52,4 +52,6 @@ public class IotInspectRouteRespVO {
     @ExcelProperty("部门id")
     private Long deptId;
 
+    @Schema(description = "资产编码")
+    private String deviceCode;
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/vo/IotInspectRouteSaveReqVO.java

@@ -39,4 +39,6 @@ public class IotInspectRouteSaveReqVO {
     @Schema(description = "部门id", example = "27993")
     private Long deptId;
 
+    @Schema(description = "资产编码")
+    private String deviceCode;
 }

+ 55 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/inspect/IotInspectOrderDO.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.inspect;
+
+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_inspect_order")
+@KeySequence("rq_iot_inspect_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotInspectOrderDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 巡检工单名
+     */
+    private String inspectOrderTitle;
+    /**
+     * 巡检工单编码
+     */
+    private String inspectOrderCode;
+    /**
+     * 巡检工单状态
+     */
+    private String status;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 部门id
+     */
+    private Long deptId;
+    /**
+     * 设备id
+     */
+    private String deviceIds;
+
+}

+ 62 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/inspect/IotInspectOrderDetailDO.java

@@ -0,0 +1,62 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.inspect;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 巡检工单巡检明细 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("rq_iot_inspect_order_detail")
+@KeySequence("rq_iot_inspect_order_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotInspectOrderDetailDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 工单id
+     */
+    private Long orderId;
+    /**
+     * 设备id
+     */
+    private Long deviceId;
+    /**
+     * 巡检项id
+     */
+    private Long itemId;
+    /**
+     * 是否正常
+     */
+    private Boolean ifNormal;
+    /**
+     * 异常描述
+     */
+    private String description;
+    /**
+     * 图片
+     */
+    private String picUrl;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+}

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/inspect/IotInspectPlanDO.java

@@ -48,6 +48,8 @@ public class IotInspectPlanDO extends BaseDO {
      * 负责人
      */
     private String charge;
+
+    private String chargeName;
     /**
      * 设备
      */

+ 4 - 5
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/inspect/IotInspectRouteDO.java

@@ -1,11 +1,10 @@
 package cn.iocoder.yudao.module.pms.dal.dataobject.inspect;
 
-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;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
 
 /**
  * 巡检路线 DO

+ 34 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/inspect/IotInspectOrderDetailMapper.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.inspect;
+
+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.inspect.order.vo.IotInspectOrderDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 巡检工单巡检明细 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface IotInspectOrderDetailMapper extends BaseMapperX<IotInspectOrderDetailDO> {
+
+    default PageResult<IotInspectOrderDetailDO> selectPage(IotInspectOrderDetailPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotInspectOrderDetailDO>()
+                .eqIfPresent(IotInspectOrderDetailDO::getOrderId, reqVO.getOrderId())
+                .eqIfPresent(IotInspectOrderDetailDO::getDeviceId, reqVO.getDeviceId())
+                .eqIfPresent(IotInspectOrderDetailDO::getItemId, reqVO.getItemId())
+                .eqIfPresent(IotInspectOrderDetailDO::getIfNormal, reqVO.getIfNormal())
+                .eqIfPresent(IotInspectOrderDetailDO::getDescription, reqVO.getDescription())
+                .eqIfPresent(IotInspectOrderDetailDO::getPicUrl, reqVO.getPicUrl())
+                .eqIfPresent(IotInspectOrderDetailDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(IotInspectOrderDetailDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(IotInspectOrderDetailDO::getDeptId, reqVO.getDeptId())
+                .orderByDesc(IotInspectOrderDetailDO::getId));
+    }
+
+}

+ 32 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/inspect/IotInspectOrderMapper.java

@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.inspect;
+
+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.inspect.order.vo.IotInspectOrderPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 巡检工单 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface IotInspectOrderMapper extends BaseMapperX<IotInspectOrderDO> {
+
+    default PageResult<IotInspectOrderDO> selectPage(IotInspectOrderPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotInspectOrderDO>()
+                .eqIfPresent(IotInspectOrderDO::getInspectOrderTitle, reqVO.getInspectOrderTitle())
+                .eqIfPresent(IotInspectOrderDO::getInspectOrderCode, reqVO.getInspectOrderCode())
+                .eqIfPresent(IotInspectOrderDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(IotInspectOrderDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(IotInspectOrderDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(IotInspectOrderDO::getDeptId, reqVO.getDeptId())
+                .eqIfPresent(IotInspectOrderDO::getDeviceIds, reqVO.getDeviceIds())
+                .orderByDesc(IotInspectOrderDO::getId));
+    }
+
+}

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

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.pms.service.inspect;
+
+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.inspect.order.vo.IotInspectOrderDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
+
+/**
+ * 巡检工单巡检明细 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface IotInspectOrderDetailService {
+
+    /**
+     * 创建巡检工单巡检明细
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotInspectOrderDetail(@Valid IotInspectOrderDetailSaveReqVO createReqVO);
+
+    /**
+     * 更新巡检工单巡检明细
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotInspectOrderDetail(@Valid IotInspectOrderDetailSaveReqVO updateReqVO);
+
+    /**
+     * 删除巡检工单巡检明细
+     *
+     * @param id 编号
+     */
+    void deleteIotInspectOrderDetail(Long id);
+
+    /**
+     * 获得巡检工单巡检明细
+     *
+     * @param id 编号
+     * @return 巡检工单巡检明细
+     */
+    IotInspectOrderDetailDO getIotInspectOrderDetail(Long id);
+
+    /**
+     * 获得巡检工单巡检明细分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 巡检工单巡检明细分页
+     */
+    PageResult<IotInspectOrderDetailDO> getIotInspectOrderDetailPage(IotInspectOrderDetailPageReqVO pageReqVO);
+
+}

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

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.pms.service.inspect;
+
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderDetailMapper;
+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_INSPECT_ORDER_DETAIL_NOT_EXISTS;
+
+/**
+ * 巡检工单巡检明细 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class IotInspectOrderDetailServiceImpl implements IotInspectOrderDetailService {
+
+    @Resource
+    private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
+
+    @Override
+    public Long createIotInspectOrderDetail(IotInspectOrderDetailSaveReqVO createReqVO) {
+        // 插入
+        IotInspectOrderDetailDO iotInspectOrderDetail = BeanUtils.toBean(createReqVO, IotInspectOrderDetailDO.class);
+        iotInspectOrderDetailMapper.insert(iotInspectOrderDetail);
+        // 返回
+        return iotInspectOrderDetail.getId();
+    }
+
+    @Override
+    public void updateIotInspectOrderDetail(IotInspectOrderDetailSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotInspectOrderDetailExists(updateReqVO.getId());
+        // 更新
+        IotInspectOrderDetailDO updateObj = BeanUtils.toBean(updateReqVO, IotInspectOrderDetailDO.class);
+        iotInspectOrderDetailMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotInspectOrderDetail(Long id) {
+        // 校验存在
+        validateIotInspectOrderDetailExists(id);
+        // 删除
+        iotInspectOrderDetailMapper.deleteById(id);
+    }
+
+    private void validateIotInspectOrderDetailExists(Long id) {
+        if (iotInspectOrderDetailMapper.selectById(id) == null) {
+            throw exception(IOT_INSPECT_ORDER_DETAIL_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public IotInspectOrderDetailDO getIotInspectOrderDetail(Long id) {
+        return iotInspectOrderDetailMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotInspectOrderDetailDO> getIotInspectOrderDetailPage(IotInspectOrderDetailPageReqVO pageReqVO) {
+        return iotInspectOrderDetailMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderService.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.service.inspect;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
+
+import javax.validation.Valid;
+
+/**
+ * 巡检工单 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface IotInspectOrderService {
+
+    /**
+     * 创建巡检工单
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotInspectOrder(@Valid IotInspectOrderSaveReqVO createReqVO);
+
+    /**
+     * 更新巡检工单
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotInspectOrder(@Valid IotInspectOrderSaveReqVO updateReqVO);
+
+    /**
+     * 删除巡检工单
+     *
+     * @param id 编号
+     */
+    void deleteIotInspectOrder(Long id);
+
+    /**
+     * 获得巡检工单
+     *
+     * @param id 编号
+     * @return 巡检工单
+     */
+    IotInspectOrderDO getIotInspectOrder(Long id);
+
+    /**
+     * 获得巡检工单分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 巡检工单分页
+     */
+    PageResult<IotInspectOrderDO> getIotInspectOrderPage(IotInspectOrderPageReqVO pageReqVO);
+
+}

+ 71 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderServiceImpl.java

@@ -0,0 +1,71 @@
+package cn.iocoder.yudao.module.pms.service.inspect;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderMapper;
+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.pms.enums.ErrorCodeConstant.IOT_INSPECT_ORDER_NOT_EXISTS;
+
+/**
+ * 巡检工单 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class IotInspectOrderServiceImpl implements IotInspectOrderService {
+
+    @Resource
+    private IotInspectOrderMapper iotInspectOrderMapper;
+
+    @Override
+    public Long createIotInspectOrder(IotInspectOrderSaveReqVO createReqVO) {
+        // 插入
+        IotInspectOrderDO iotInspectOrder = BeanUtils.toBean(createReqVO, IotInspectOrderDO.class);
+        iotInspectOrderMapper.insert(iotInspectOrder);
+        // 返回
+        return iotInspectOrder.getId();
+    }
+
+    @Override
+    public void updateIotInspectOrder(IotInspectOrderSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotInspectOrderExists(updateReqVO.getId());
+        // 更新
+        IotInspectOrderDO updateObj = BeanUtils.toBean(updateReqVO, IotInspectOrderDO.class);
+        iotInspectOrderMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotInspectOrder(Long id) {
+        // 校验存在
+        validateIotInspectOrderExists(id);
+        // 删除
+        iotInspectOrderMapper.deleteById(id);
+    }
+
+    private void validateIotInspectOrderExists(Long id) {
+        if (iotInspectOrderMapper.selectById(id) == null) {
+            throw exception(IOT_INSPECT_ORDER_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public IotInspectOrderDO getIotInspectOrder(Long id) {
+        return iotInspectOrderMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotInspectOrderDO> getIotInspectOrderPage(IotInspectOrderPageReqVO pageReqVO) {
+        return iotInspectOrderMapper.selectPage(pageReqVO);
+    }
+
+}

+ 19 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectPlanServiceImpl.java

@@ -1,16 +1,24 @@
 package cn.iocoder.yudao.module.pms.service.inspect;
 
+import cn.hutool.core.date.DateUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.plan.vo.IotInspectPlanPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.plan.vo.IotInspectPlanSaveReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectPlanDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectPlanMapper;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_INSPECT_PLAN_NOT_EXISTS;
 
@@ -25,6 +33,8 @@ public class IotInspectPlanServiceImpl implements IotInspectPlanService {
 
     @Resource
     private IotInspectPlanMapper iotInspectPlanMapper;
+    @Autowired
+    private AdminUserApi adminUserApi;
 
     @Override
     public void updateInspectPlanStatus(Long id, Integer status) {
@@ -38,6 +48,11 @@ public class IotInspectPlanServiceImpl implements IotInspectPlanService {
         IotInspectPlanDO iotInspectPlan = BeanUtils.toBean(createReqVO, IotInspectPlanDO.class);
         iotInspectPlan.setDeleted(false);
         iotInspectPlan.setStatus(0);
+        iotInspectPlan.setPlanCode("INPL"+ DateUtil.format(new Date(), "yyyyMMddHHmmss"));
+        iotInspectPlan.setCharge(String.join(",", createReqVO.getCharges()));
+        List<Long> collect = createReqVO.getCharges().stream().map(Long::valueOf).collect(Collectors.toList());
+        String collect1 = adminUserApi.getUserList(collect).stream().map(AdminUserRespDTO::getNickname).collect(Collectors.joining(","));
+        iotInspectPlan.setChargeName(collect1);
         iotInspectPlanMapper.insert(iotInspectPlan);
         // 返回
         return iotInspectPlan.getId();
@@ -49,6 +64,10 @@ public class IotInspectPlanServiceImpl implements IotInspectPlanService {
         validateIotInspectPlanExists(updateReqVO.getId());
         // 更新
         IotInspectPlanDO updateObj = BeanUtils.toBean(updateReqVO, IotInspectPlanDO.class);
+        updateObj.setCharge(String.join(",", updateReqVO.getCharges()));
+        List<Long> collect = updateReqVO.getCharges().stream().map(Long::valueOf).collect(Collectors.toList());
+        String collect1 = adminUserApi.getUserList(collect).stream().map(AdminUserRespDTO::getNickname).collect(Collectors.joining(","));
+        updateObj.setChargeName(collect1);
         iotInspectPlanMapper.updateById(updateObj);
     }