Bläddra i källkod

维修工单的处理:基地维修及瑞恒故障

lipenghui 12 timmar sedan
förälder
incheckning
2572a2f00b
33 ändrade filer med 846 tillägg och 34 borttagningar
  1. 1 1
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/message/BpmMessageServiceImpl.java
  2. 12 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotDeviceController.java
  3. 3 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotTreeController.java
  4. 17 4
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/IotFailureReportController.java
  5. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportPageReqVO.java
  6. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportRespVO.java
  7. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportSaveReqVO.java
  8. 21 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/IotMaintainController.java
  9. 150 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/record/IotJdRecordController.java
  10. 48 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/record/vo/IotJdRecordPageReqVO.java
  11. 63 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/record/vo/IotJdRecordRespVO.java
  12. 50 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/record/vo/IotJdRecordSaveReqVO.java
  13. 8 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/vo/IotMaintainRespVO.java
  14. 4 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/vo/IotMaintainSaveReqVO.java
  15. 4 9
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/excel/DeviceImportExcelVO.java
  16. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/failure/IotFailureReportDO.java
  17. 4 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/maintain/IotMaintainDO.java
  18. 75 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/maintain/record/IotJdRecordDO.java
  19. 34 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/maintain/record/IotJdRecordMapper.java
  20. 0 3
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/alarm/AlarmJob.java
  21. 24 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/listener/RhFailureListener.java
  22. 1 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotDeviceService.java
  23. 51 5
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotDeviceServiceImpl.java
  24. 35 5
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotTreeServiceImpl.java
  25. 27 6
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/failure/IotFailureReportServiceImpl.java
  26. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/IotMaintainService.java
  27. 19 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/IotMaintainServiceImpl.java
  28. 58 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/record/IotJdRecordService.java
  29. 112 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/record/IotJdRecordServiceImpl.java
  30. 1 0
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java
  31. 5 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java
  32. 1 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java
  33. 8 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java

+ 1 - 1
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/message/BpmMessageServiceImpl.java

@@ -86,7 +86,7 @@ public class BpmMessageServiceImpl implements BpmMessageService {
         AdminUserRespDTO user = adminUserApi.getUser(reqDTO.getAssigneeUserId());
         String msg = "【DeepOil】供应商审核流程 - 有新的供应商信息需要审核"+",请前往 http://1.94.244.160:91/ 处理。"+"["+new Date()+"]";
         String url = "";
-        if ("故障上报流程".equals(reqDTO.getProcessInstanceName())){
+        if ("故障上报流程".equals(reqDTO.getProcessInstanceName())||"瑞恒故障上报".equals(reqDTO.getProcessInstanceName())) {
             String templateCode = "failure-report";
             templateParams.put("businessType", "failureReport");
             templateParams.put("businessId", reqDTO.getProcessInstanceId());

+ 12 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotDeviceController.java

@@ -20,6 +20,7 @@ import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSimpleRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.excel.DeviceImportExcelVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotProductClassifyDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.yanfan.YfDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.TDDeviceMapper;
 import cn.iocoder.yudao.module.pms.enums.common.IotDeviceStatusEnum;
@@ -27,6 +28,7 @@ import cn.iocoder.yudao.module.pms.oa.OaFlow;
 import cn.iocoder.yudao.module.pms.service.DeviceServiceImpl;
 import cn.iocoder.yudao.module.pms.service.IotDeviceService;
 import cn.iocoder.yudao.module.pms.service.IotProductClassifyService;
+import cn.iocoder.yudao.module.pms.service.failure.IotFailureReportService;
 import cn.iocoder.yudao.module.pms.service.iotbom.IotBomService;
 import cn.iocoder.yudao.module.pms.service.iotdeviceallotlog.IotDeviceAllotLogService;
 import cn.iocoder.yudao.module.pms.service.iotdeviceperson.IotDevicePersonService;
@@ -92,6 +94,16 @@ public class IotDeviceController {
     private IotDevicePersonService iotDevicePersonService;
     @Autowired
     private IotDeviceAllotLogService iotDeviceAllotLogService;
+    @Autowired
+    private IotFailureReportService iotFailureReportService;
+
+    @GetMapping(value = {"/company"})
+    @Operation(summary = "获取最大的编码", description = "获取最大的编码")
+    public CommonResult<String> getDeviceCompany(@RequestParam Long id) {
+        IotFailureReportDO failureReport = iotFailureReportService.getIotFailureReport(id);
+        String maxCode = iotDeviceService.getDeviceCompany(failureReport.getDeviceId());
+        return success(maxCode);
+    }
 
     @PostMapping("/create")
     @Operation(summary = "创建设备台账")

+ 3 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotTreeController.java

@@ -167,4 +167,7 @@ public class IotTreeController {
     public void initTreeCode() {
         iotTreeService.initTreeCode();
     }
+
+
+
 }

+ 17 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/IotFailureReportController.java

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.pms.controller.admin.failure;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
 import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportProcessVO;
@@ -137,17 +138,29 @@ public class IotFailureReportController {
     @PreAuthorize("@ss.hasPermission('rq:iot-failure-report:create')")
     public CommonResult<String> updateIotFailureReportProcess(@RequestParam("processId") String processId,@RequestParam("id")String id, @RequestParam("type") String type,
                                                             @RequestParam("assigneeUserId") String assigneeUserId,@RequestParam("trans") String trans) {
-        if ("true".equals(trans)) {
-            Map<String, Object> params = new HashMap<>();
+        IotFailureReportDO failureReport = iotFailureReportService.getIotFailureReport(Long.valueOf(id));
+        if (Objects.isNull(failureReport)) {
+            throw new ServiceException(666,"无该故障");
+        }
+        String deviceCompany = iotDeviceService.getDeviceCompany(failureReport.getDeviceId());
+        if ("rh".equals(deviceCompany)) {
             IotFailureReportProcessVO iotFailureReportProcessVO = new IotFailureReportProcessVO();
             iotFailureReportProcessVO.setId(id);
             iotFailureReportProcessVO.setType(type);
             iotFailureReportProcessVO.setAssigneeUserId(Long.valueOf(assigneeUserId));
-            params.put("continue", "1");
-            bpmProcessInstanceApi.updateProcessVariables(processId, params);
             iotFailureReportService.updateIotFailureReportProcess(iotFailureReportProcessVO);
             return success("完成");
         } else {
+            if ("true".equals(trans)) {
+                Map<String, Object> params = new HashMap<>();
+                params.put("continue", "1");
+                bpmProcessInstanceApi.updateProcessVariables(processId, params);
+                IotFailureReportProcessVO iotFailureReportProcessVO = new IotFailureReportProcessVO();
+                iotFailureReportProcessVO.setId(id);
+                iotFailureReportProcessVO.setType(type);
+                iotFailureReportProcessVO.setAssigneeUserId(Long.valueOf(assigneeUserId));
+                iotFailureReportService.updateIotFailureReportProcess(iotFailureReportProcessVO);
+            }
             return success("完成");
         }
     }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportPageReqVO.java

@@ -78,4 +78,6 @@ public class IotFailureReportPageReqVO extends PageParam {
 
     @Schema(description = "设备编码")
     private String deviceCode;
+
+    private String failureType;
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportRespVO.java

@@ -103,4 +103,6 @@ public class IotFailureReportRespVO {
     private Long approvalId;
 
     private String approvalName;
+
+    private String failureType;
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportSaveReqVO.java

@@ -77,4 +77,6 @@ public class IotFailureReportSaveReqVO {
     /**审批人id*/
     @Schema(description = "审批人id逗号分隔")
     private String approvalId;
+
+    private String failureType;
 }

+ 21 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/IotMaintainController.java

@@ -35,6 +35,7 @@ import com.xingyuv.captcha.util.StringUtils;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.Data;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -119,6 +120,7 @@ public class IotMaintainController {
         }
         List<IotMaintainBomDO> listByMaintainId = iotMaintainBomService.getListByMaintainId(id);
         bean.setMaintainBomDOS(listByMaintainId);
+        bean.setYfDeviceCode(iotDevice.getYfDeviceCode());
         bean.setDeviceCode(iotDevice.getDeviceCode());
         return success(bean);
     }
@@ -144,6 +146,8 @@ public class IotMaintainController {
                     iotMaintainRespVO.setCreateName(user.getNickname());
                 }
             }
+            String deviceCompany = iotDeviceService.getDeviceCompany(e.getDeviceId());
+            iotMaintainRespVO.setCompany(deviceCompany);
             return iotMaintainRespVO;
         }).collect(Collectors.toList());
         return success(new PageResult<>(collect, pageResult.getTotal()));
@@ -226,4 +230,21 @@ public class IotMaintainController {
         iotMaintainService.oaDeal(callBackOaVo);
         return success("成功");
     }
+
+    @Data
+    public static class MaintainMethod{
+        private Long id;
+        private String maintainMethod;
+        private String methodDescription;
+    }
+
+    @PostMapping("/method")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintain:update')")
+    public CommonResult<String> maintainMethod(@RequestBody MaintainMethod maintainMethod) {
+        if (Objects.isNull(maintainMethod) || Objects.isNull(maintainMethod.getId()) || StringUtils.isBlank(maintainMethod.getMaintainMethod())) {
+            throw new ServiceException(new ErrorCode(200, "参数缺失"));
+        }
+        iotMaintainService.methodDeal(maintainMethod);
+        return success("成功");
+    }
 }

+ 150 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/record/IotJdRecordController.java

@@ -0,0 +1,150 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintain.record;
+
+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.IotInspectOrderRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.record.vo.IotJdRecordPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.record.vo.IotJdRecordRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.record.vo.IotJdRecordSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.record.IotJdRecordDO;
+import cn.iocoder.yudao.module.pms.service.maintain.record.IotJdRecordService;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
+import com.xingyuv.captcha.util.StringUtils;
+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.beans.factory.annotation.Autowired;
+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.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+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-jd-record")
+@Validated
+public class IotJdRecordController {
+
+    @Resource
+    private IotJdRecordService iotJdRecordService;
+    @Autowired
+    private AdminUserApi adminUserApi;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建基地维修记录")
+    @PreAuthorize("@ss.hasPermission('rq:iot-jd-record:create')")
+    public CommonResult<Long> createIotJdRecord(@Valid @RequestBody IotJdRecordSaveReqVO createReqVO) {
+        return success(iotJdRecordService.createIotJdRecord(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新基地维修记录")
+    @PreAuthorize("@ss.hasPermission('rq:iot-jd-record:update')")
+    public CommonResult<Boolean> updateIotJdRecord(@Valid @RequestBody IotJdRecordSaveReqVO updateReqVO) {
+        iotJdRecordService.updateIotJdRecord(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除基地维修记录")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-jd-record:delete')")
+    public CommonResult<Boolean> deleteIotJdRecord(@RequestParam("id") Long id) {
+        iotJdRecordService.deleteIotJdRecord(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得基地维修记录")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-jd-record:query')")
+    public CommonResult<IotJdRecordRespVO> getIotJdRecord(@RequestParam("id") Long id) {
+        IotJdRecordDO iotJdRecord = iotJdRecordService.getIotJdRecord(id);
+        return success(BeanUtils.toBean(iotJdRecord, IotJdRecordRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得基地维修记录分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-jd-record:query')")
+    public CommonResult<PageResult<IotJdRecordRespVO>> getIotJdRecordPage(@Valid IotJdRecordPageReqVO pageReqVO) {
+        PageResult<IotJdRecordDO> pageResult = iotJdRecordService.getIotJdRecordPage(pageReqVO);
+        List<IotJdRecordRespVO> collect = pageResult.getList().stream().map(e -> {
+            IotJdRecordRespVO iotJdRecordRespVO = new IotJdRecordRespVO();
+            BeanUtils.copyProperties(e, iotJdRecordRespVO);
+            if (StringUtils.isNotBlank(e.getCreator())) {
+                AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(e.getCreator()));
+                if (Objects.nonNull(user)) {
+                    iotJdRecordRespVO.setCreateName(user.getNickname());
+                }
+            }
+            return iotJdRecordRespVO;
+        }).collect(Collectors.toList());
+        return success(new PageResult<>(collect, pageResult.getTotal()));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出基地维修记录 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-jd-record:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotJdRecordExcel(@Valid IotJdRecordPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotJdRecordDO> list = iotJdRecordService.getIotJdRecordPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "基地维修记录.xls", "数据", IotJdRecordRespVO.class,
+                        BeanUtils.toBean(list, IotJdRecordRespVO.class));
+    }
+
+
+    @GetMapping("/repair")
+    @Operation(summary = "获取特定维修工单的维修记录")
+    @PreAuthorize("@ss.hasPermission('rq:iot-jd-record:query')")
+    public CommonResult<List<IotJdRecordRespVO>> getIotJdRecordPage(Long repairId) {
+        IotJdRecordPageReqVO pageReqVO = new IotJdRecordPageReqVO();
+        pageReqVO.setRepairId(repairId);
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        PageResult<IotJdRecordDO> iotJdRecordPage = iotJdRecordService.getIotJdRecordPage(pageReqVO);
+        List<IotJdRecordRespVO> collect = iotJdRecordPage.getList().stream().map(e -> {
+            IotJdRecordRespVO iotJdRecordRespVO = new IotJdRecordRespVO();
+            BeanUtils.copyProperties(e, iotJdRecordRespVO);
+            if (StringUtils.isNotBlank(e.getCreator())) {
+                AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(e.getCreator()));
+                if (Objects.nonNull(user)) {
+                    iotJdRecordRespVO.setCreateName(user.getNickname());
+                }
+            }
+            return iotJdRecordRespVO;
+        }).collect(Collectors.toList());
+        return success(collect.stream().sorted(Comparator.comparing(IotJdRecordRespVO::getRepairTime)).collect(Collectors.toList()));
+    }
+
+
+    @GetMapping("/assist/{id}")
+    @Operation(summary = "获得配合维修的维修人员")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-failure-report:query')")
+    public CommonResult<List<AdminUserRespDTO>> getAssistPeople(@PathVariable Long id) {
+        List<AdminUserRespDTO> assist = iotJdRecordService.getAssist(id);
+        return success(assist);
+    }
+}

+ 48 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/record/vo/IotJdRecordPageReqVO.java

@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintain.record.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 IotJdRecordPageReqVO extends PageParam {
+
+    @Schema(description = "设备id", example = "5588")
+    private Long deviceId;
+    @Schema(description = "维修工单id")
+    private Long repairId;
+
+    @Schema(description = "维修日期时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] repairTime;
+
+    @Schema(description = "维修内容")
+    private String repairContent;
+
+    @Schema(description = "图片")
+    private String pic;
+
+    @Schema(description = "解决办法")
+    private String solution;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "设备名称", example = "芋艿")
+    private String deviceName;
+
+    @Schema(description = "维修项")
+    private String repairItem;
+}

+ 63 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/record/vo/IotJdRecordRespVO.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintain.record.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 IotJdRecordRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "18309")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5588")
+    @ExcelProperty("设备id")
+    private Long deviceId;
+
+    @Schema(description = "维修日期时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("维修日期时间")
+    private LocalDateTime repairTime;
+
+    @Schema(description = "维修内容", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("维修内容")
+    private String repairContent;
+
+    @Schema(description = "图片")
+    @ExcelProperty("图片")
+    private String pic;
+
+    @Schema(description = "解决办法")
+    @ExcelProperty("解决办法")
+    private String solution;
+
+    @Schema(description = "备注", example = "你猜")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "设备名称", example = "芋艿")
+    @ExcelProperty("设备名称")
+    private String deviceName;
+    @Schema(description = "创建人")
+    private String creator;
+
+    @Schema(description = "维修项")
+    private String repairItem;
+
+    @Schema(description = "创建人")
+    private String createName;
+
+    @Schema(description = "配合维修人员")
+    private String repairPerson;
+    @Schema(description = "配合维修人员")
+    private String repairPersonName;
+}

+ 50 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/record/vo/IotJdRecordSaveReqVO.java

@@ -0,0 +1,50 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintain.record.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 基地维修记录新增/修改 Request VO")
+@Data
+public class IotJdRecordSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "18309")
+    private Long id;
+
+    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5588")
+//    @NotNull(message = "设备id不能为空")
+    private Long deviceId;
+
+    @Schema(description = "维修id")
+    private Long repairId;
+
+    @Schema(description = "维修日期时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "维修日期时间不能为空")
+    private LocalDateTime repairTime;
+
+    @Schema(description = "维修内容", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "维修内容不能为空")
+    private String repairContent;
+
+    @Schema(description = "图片")
+    private String pic;
+
+    @Schema(description = "解决办法")
+    private String solution;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "设备名称", example = "芋艿")
+    private String deviceName;
+    @Schema(description = "维修项")
+    private String repairItem;
+
+    @Schema(description = "配合维修人员")
+    private String repairPerson;
+    @Schema(description = "配合维修人员")
+    private String repairPersonName;
+}

+ 8 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/vo/IotMaintainRespVO.java

@@ -156,4 +156,12 @@ public class IotMaintainRespVO {
     private String maintainItem;
     /**oa返回的请求id*/
     private String requestId;
+    /**维修方式*/
+    private String maintainMethod;
+    /**维修方式描述*/
+    private String methodDescription;
+    /**所在公司*/
+    private String company;
+    /**油服设备编码*/
+    private String yfDeviceCode;
 }

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/vo/IotMaintainSaveReqVO.java

@@ -126,4 +126,8 @@ public class IotMaintainSaveReqVO {
     private String projectManager;
 
     private String maintainItem;
+    /**维修方式描述*/
+    private String methodDescription;
+    /**维修方式*/
+    private String maintainMethod;
 }

+ 4 - 9
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/excel/DeviceImportExcelVO.java

@@ -21,19 +21,14 @@ import java.time.LocalDateTime;
 @NoArgsConstructor
 @Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
 public class DeviceImportExcelVO {
-
+    @ExcelProperty("序号")
+    private String xh;
     @ExcelProperty("资产编号")
     private String deviceCode;
 
-    @ExcelProperty("资产名称")
-    private String deviceName;
+    @ExcelProperty("设备编码")
+    private String yfDeviceCode;
 
-    @ExcelProperty("启用时间")
-    private LocalDateTime enableDate;
 
-    @ExcelProperty("使用项目")
-    private String useProject;
 
-    @ExcelProperty("资产归属")
-    private String assetOwnership;
 }

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

@@ -110,4 +110,6 @@ public class IotFailureReportDO extends BaseDO {
     private String deviceCode;
     /**审批人id*/
     private String approvalId;
+
+    private String failureType;
 }

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/maintain/IotMaintainDO.java

@@ -166,4 +166,8 @@ public class IotMaintainDO extends BaseDO {
     private String requestId;
     /**请求意见*/
     private String suggestionJson;
+    /**维修方式*/
+    private String maintainMethod;
+    /**维修方式说明*/
+    private String methodDescription;
 }

+ 75 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/maintain/record/IotJdRecordDO.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.maintain.record;
+
+import lombok.*;
+import java.util.*;
+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("rq_iot_jd_record")
+@KeySequence("rq_iot_jd_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotJdRecordDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 设备id
+     */
+    private Long deviceId;
+    /**
+     * 维修工单id
+     */
+    private Long repairId;
+    /**
+     * 维修日期时间
+     */
+    private LocalDateTime repairTime;
+    /**
+     * 维修内容
+     */
+    private String repairContent;
+    /**
+     * 图片
+     */
+    private String pic;
+    /**
+     * 解决办法
+     */
+    private String solution;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+    /**
+     * 维修项
+     */
+    private String repairItem;
+    /**
+     * 配合维修人员
+     */
+    private String repairPerson;
+    /**
+     * 配合维修人员
+     */
+    private String repairPersonName;
+}

+ 34 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/maintain/record/IotJdRecordMapper.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.maintain.record;
+
+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.maintain.record.vo.IotJdRecordPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.record.IotJdRecordDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 基地维修记录 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface IotJdRecordMapper extends BaseMapperX<IotJdRecordDO> {
+
+    default PageResult<IotJdRecordDO> selectPage(IotJdRecordPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotJdRecordDO>()
+                .eqIfPresent(IotJdRecordDO::getDeviceId, reqVO.getDeviceId())
+                .eqIfPresent(IotJdRecordDO::getRepairId, reqVO.getRepairId())
+                .betweenIfPresent(IotJdRecordDO::getRepairTime, reqVO.getRepairTime())
+                .eqIfPresent(IotJdRecordDO::getRepairContent, reqVO.getRepairContent())
+                .eqIfPresent(IotJdRecordDO::getPic, reqVO.getPic())
+                .eqIfPresent(IotJdRecordDO::getSolution, reqVO.getSolution())
+                .eqIfPresent(IotJdRecordDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(IotJdRecordDO::getCreateTime, reqVO.getCreateTime())
+                .likeIfPresent(IotJdRecordDO::getDeviceName, reqVO.getDeviceName())
+                .orderByDesc(IotJdRecordDO::getId));
+    }
+
+}

+ 0 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/alarm/AlarmJob.java

@@ -71,9 +71,6 @@ public class AlarmJob implements JobHandler {
         Timestamp end = generateTimestamp(now);
         list.stream().filter(e -> e.getIfInline()==3).forEach(f ->{
             //调用延凡接口获取该设备的所有参数
-            if (f.getId()==73){
-                System.out.println("2222");
-            }
             List<ThingsModelDTO> tdParams = iotDeviceService.getTdParams(f);
             tdParams.forEach(model ->{
                 //获取设备id与属性标识相同的告警配置

+ 24 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/listener/RhFailureListener.java

@@ -0,0 +1,24 @@
+package cn.iocoder.yudao.module.pms.listener;
+
+import cn.iocoder.yudao.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.iocoder.yudao.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.iocoder.yudao.module.pms.service.failure.IotFailureReportService;
+import cn.iocoder.yudao.module.pms.service.failure.IotFailureReportServiceImpl;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+public class RhFailureListener extends BpmProcessInstanceStatusEventListener {
+    @Resource
+    private IotFailureReportService iotFailureReportService;
+    @Override
+    protected String getProcessDefinitionKey() {
+        return IotFailureReportServiceImpl.RH_PROCESS_KEY;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
+        iotFailureReportService.approvalFailureReport(Long.parseLong(event.getBusinessKey()), event.getStatus());
+    }
+}

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotDeviceService.java

@@ -22,6 +22,7 @@ import java.util.Map;
  * @author 芋道源码
  */
 public interface IotDeviceService {
+    String getDeviceCompany(Long id);
     String getMaxCode(String prefix);
     List<IotDeviceDO> getAllDevices(IotDevicePageReqVO pageReqVO);
     void templateChange(String categoryId, List<IotDeviceProperty> properties);

+ 51 - 5
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotDeviceServiceImpl.java

@@ -60,6 +60,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.xingyuv.captcha.util.StringUtils;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -136,6 +137,44 @@ public class IotDeviceServiceImpl implements IotDeviceService {
     @Autowired
     private DeptApi deptApi;
 
+
+    @Override
+    public String getDeviceCompany(Long id) {
+        List<DeptRespDTO> rhdept = deptApi.getDeptByNamePermission("瑞恒兴域");
+        Set<Long> rhDeptIds = Collections.emptySet();
+        if (CollUtil.isNotEmpty(rhdept)) {
+            Long deptId = rhdept.get(0).getId();
+            rhDeptIds = deptService.getChildDeptIdListFromCache(deptId);
+            rhDeptIds.add(deptId);
+        }
+
+        List<DeptRespDTO> rddept = deptApi.getDeptByNamePermission("四川瑞都");
+        Set<Long> rdDeptIds = Collections.emptySet();
+        if (CollUtil.isNotEmpty(rddept)) {
+            Long deptId = rddept.get(0).getId();
+            rdDeptIds = deptService.getChildDeptIdListFromCache(deptId);
+            rdDeptIds.add(deptId);
+        }
+
+        List<DeptRespDTO> rydept = deptApi.getDeptByNamePermission("瑞鹰国际");
+        Set<Long> ryDeptIds;
+        if (CollUtil.isNotEmpty(rydept)) {
+            Long deptId = rydept.get(0).getId();
+            ryDeptIds = deptService.getChildDeptIdListFromCache(deptId);
+            ryDeptIds.add(deptId);
+        }
+
+        IotDeviceDO iotDeviceDO = iotDeviceMapper.selectById(id);
+        Long deviceDept = iotDeviceDO.getDeptId();
+        if (rhDeptIds.contains(deviceDept)) {
+            return "rh";
+        } else if (rdDeptIds.contains(deviceDept)) {
+            return "rd";
+        } else {
+            return "ry";
+        }
+    }
+
     @Override
     public String getMaxCode(String prefix) {
         IotDevicePageReqVO iotDevicePageReqVO = new IotDevicePageReqVO();
@@ -202,10 +241,17 @@ public class IotDeviceServiceImpl implements IotDeviceService {
         List<IotDeviceDO> iotDeviceDOS = iotDeviceMapper.selectList();
         for (DeviceImportExcelVO deviceImportExcelVO : list) {
             iotDeviceDOS.stream().filter(e -> e.getDeviceCode().equals(deviceImportExcelVO.getDeviceCode())).forEach(f ->{
-                f.setEnableDate(deviceImportExcelVO.getEnableDate());
-                f.setAssetOwnership(deviceImportExcelVO.getAssetOwnership());
-                f.setUseProject(deviceImportExcelVO.getUseProject());
-                iotDeviceMapper.updateById(f);
+//                f.setEnableDate(deviceImportExcelVO.getEnableDate());
+//                f.setAssetOwnership(deviceImportExcelVO.getAssetOwnership());
+//                f.setUseProject(deviceImportExcelVO.getUseProject());
+                if (Objects.nonNull(deviceImportExcelVO.getYfDeviceCode())&&StringUtils.isNotBlank(deviceImportExcelVO.getYfDeviceCode())) {
+                    String de = org.apache.commons.lang3.StringUtils.substring(deviceImportExcelVO.getYfDeviceCode(), 0,2);
+                    String ee = org.apache.commons.lang3.StringUtils.substring(deviceImportExcelVO.getYfDeviceCode(), 2,4);
+                    String ff = org.apache.commons.lang3.StringUtils.substring(deviceImportExcelVO.getYfDeviceCode(), 4,7);
+                    f.setYfClass(de+","+ee+","+ff);
+                    f.setYfDeviceCode(deviceImportExcelVO.getYfDeviceCode());
+                    iotDeviceMapper.updateById(f);
+                }
             });
         }
     }
@@ -367,7 +413,7 @@ public class IotDeviceServiceImpl implements IotDeviceService {
         iotDeviceMapper.updateById(updateObj);
         //更新pms树
         List<IotTreeDO> iotTreeDOS = iotTreeMapper.selectListByOriginId(updateObj.getId(), "device");
-        if (org.apache.commons.collections4.CollectionUtils.isEmpty(iotTreeDOS)) {
+        if (CollectionUtils.isEmpty(iotTreeDOS)) {
             throw new ServiceException(ErrorCodeConstants.DEPT_NOT_FOUND.getCode(),"无资料库信息");
         }
         IotTreeDO iotTreeDO = iotTreeDOS.get(0);

+ 35 - 5
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotTreeServiceImpl.java

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
 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.vo.IotDevicePageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeListReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreePageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeSaveReqVO;
@@ -20,6 +21,7 @@ import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
+import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -54,18 +56,46 @@ public class IotTreeServiceImpl implements IotTreeService {
     private IotInfoClassifyMapper iotInfoClassifyMapper;
     @Autowired
     private IotInfoMapper iotInfoMapper;
+    @Resource
+    private DeptService deptService;
 
     @Override
     public void initTreeCode() {
         List<IotTreeDO> iotTreeDOS = iotTreeMapper.selectList();
         List<IotTreeDO> devices = iotTreeDOS.stream().filter(e -> "device".equals(e.getType())).collect(Collectors.toList());
+        Set<Long> ids = new HashSet<>();
+//        if (Objects.nonNull(pageReqVO.getDeptId())) {
+            ids = deptService.getChildDeptIdListFromCache(157L);
+            ids.add(157L);
+        IotDevicePageReqVO iotDevicePageReqVO = new IotDevicePageReqVO();
+        List<Long> idds = new ArrayList<>(ids);
+        iotDevicePageReqVO.setDeptIds((idds));
+        List<Long> deviceIds = iotDeviceMapper.selectList(iotDevicePageReqVO).stream().map(IotDeviceDO::getId).collect(Collectors.toList());
         devices.forEach(device -> {
-            Long deviceOriginId = device.getOriginId();
-            IotDeviceDO iotDevice = iotDeviceService.getIotDevice(deviceOriginId);
-            device.setDeviceCode(iotDevice.getDeviceCode());
-            device.setName(device.getDeviceCode()+iotDevice.getDeviceName());
-            iotTreeMapper.updateById(device);
+            if (deviceIds.contains(device.getOriginId())) {
+                IotDeviceDO iotDevice = iotDeviceService.getIotDevice(device.getOriginId());
+                device.setName(iotDevice.getDeviceCode()+iotDevice.getDeviceName());
+                iotTreeMapper.updateById(device);
+            }
         });
+
+//        }
+//        List<IotTreeDO> rh = devices.stream().filter(e -> e.getName().contains("RH")).collect(Collectors.toList());
+//        rh.forEach(e -> {
+//            IotDeviceDO iotDevice = iotDeviceService.getIotDevice(e.getOriginId());
+//            if (Objects.nonNull(iotDevice)) {
+//                e.setDeviceCode(iotDevice.getDeviceCode());
+//                e.setName(iotDevice.getDeviceCode()+iotDevice.getDeviceName());
+//                iotTreeMapper.updateById(e);
+//            }
+//        });
+//        devices.forEach(device -> {
+//            Long deviceOriginId = device.getOriginId();
+//            IotDeviceDO iotDevice = iotDeviceService.getIotDevice(deviceOriginId);
+//            device.setDeviceCode(iotDevice.getDeviceCode());
+//            device.setName(device.getDeviceCode()+iotDevice.getDeviceName());
+//            iotTreeMapper.updateById(device);
+//        });
     }
 
     @Override

+ 27 - 6
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/failure/IotFailureReportServiceImpl.java

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.date.DateUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
@@ -24,6 +25,7 @@ import cn.iocoder.yudao.module.pms.dal.mysql.failure.IotFailureReportMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainMapper;
 import cn.iocoder.yudao.module.pms.enums.common.FailureAuditStatusEnum;
 import cn.iocoder.yudao.module.pms.message.PmsMessage;
+import cn.iocoder.yudao.module.pms.service.IotDeviceService;
 import cn.iocoder.yudao.module.pms.service.iotdeviceperson.IotDevicePersonService;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
@@ -61,6 +63,7 @@ import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_FAILURE_RE
 @Validated
 public class IotFailureReportServiceImpl implements IotFailureReportService {
     public static final String PROCESS_KEY = "failure-report";
+    public static final String RH_PROCESS_KEY = "rh-failure-report";
     @Resource
     private IotFailureReportMapper iotFailureReportMapper;
     @Resource
@@ -85,6 +88,8 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
     private PmsMessage pmsMessage;
     @Autowired
     private IotDevicePersonService iotDevicePersonService;
+    @Autowired
+    private IotDeviceService iotDeviceService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -99,7 +104,14 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
                 //生成工单
                 IotMaintainDO iotMaintainDO = new IotMaintainDO();
                 BeanUtils.copyProperties(failureReportDO, iotMaintainDO);
-                iotMaintainDO.setStatus("tx");
+                //判断是否是瑞恒,如果是瑞恒的话先更新状态为维修人员填写
+                String deviceCompany = iotDeviceService.getDeviceCompany(failureReportDO.getDeviceId());
+                if ("rh".equals(deviceCompany)) {
+                    iotMaintainDO.setStatus("personnel");
+                    iotMaintainDO.setType("");
+                } else {
+                    iotMaintainDO.setStatus("tx");
+                }
                 iotMaintainDO.setPic(null);
                 //iotMaintainDO.setAuditStatus(0);
                 iotMaintainDO.setAuditStatus(null);
@@ -171,11 +183,19 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
         for (String s : iotFailureReportDO.getApprovalId().split(",")) {
             approvalIds.add(Long.parseLong(s));
         }
-        assigness.put("failure_approval", approvalIds);
         Map<String, Object> variable = new HashMap<>();
-        variable.put("continue", "0");
-        String processInstanceId = processInstanceApi.createProcessInstance(SecurityFrameworkUtils.getLoginUserId(),
-                new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY).setBusinessKey(String.valueOf(id)).setStartUserSelectAssignees(assigness).setVariables(variable));
+        String deviceCompany = iotDeviceService.getDeviceCompany(iotFailureReportDO.getDeviceId());
+        String processInstanceId;
+        if ("rh".equals(deviceCompany)) {
+            assigness.put("rh_failure_approval", approvalIds);
+            processInstanceId = processInstanceApi.createProcessInstance(SecurityFrameworkUtils.getLoginUserId(),
+                    new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(RH_PROCESS_KEY).setBusinessKey(String.valueOf(id)).setStartUserSelectAssignees(assigness).setVariables(variable));
+        } else {
+            assigness.put("failure_approval", approvalIds);
+            variable.put("continue", "0");
+            processInstanceId = processInstanceApi.createProcessInstance(SecurityFrameworkUtils.getLoginUserId(),
+                    new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY).setBusinessKey(String.valueOf(id)).setStartUserSelectAssignees(assigness).setVariables(variable));
+        }
         // 将流程实例id 更新到 供应商主数据表
         iotFailureReportMapper.updateById(new IotFailureReportDO().setId(id).setProcessInstanceId(processInstanceId).setAuditStatus(FailureAuditStatusEnum.PROCESS.getStatus()));
         return processInstanceId;
@@ -191,7 +211,7 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
         if (Objects.isNull(iotDeviceDO)) {
             throw new ServiceException();
         }
-        iotFailureReport.setFailureName(iotDeviceDO.getDeviceCode()+iotDeviceDO.getDeviceName()+DateUtil.format(new Date(), "yyMMdd"));
+        iotFailureReport.setFailureName(iotDeviceDO.getDeviceCode()+iotDeviceDO.getDeviceName()+DateUtil.format(new Date(), "yyMMddHHmm"));
         iotFailureReport.setDeviceName(iotDeviceDO.getDeviceName());
         iotFailureReport.setDeleted(false);
         if (iotFailureReport.getIfDeal()) {
@@ -277,6 +297,7 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
     }
 
     @Override
+    @DataPermission(enable = false)
     public IotFailureReportDO getIotFailureReport(Long id) {
         return iotFailureReportMapper.selectById(id);
     }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/IotMaintainService.java

@@ -4,6 +4,7 @@ import java.util.*;
 import javax.validation.*;
 
 import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportProcessVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.IotMaintainController;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainSaveReqVO;
@@ -23,6 +24,7 @@ import cn.iocoder.yudao.module.pms.oa.CallBackOaVo;
  * @author phli
  */
 public interface IotMaintainService {
+    void methodDeal(IotMaintainController.MaintainMethod method);
     void oaDeal(CallBackOaVo callBackOaVo);
     List<IotOaPersonDO> getMaintainPerson(String id);
     List<IotOaPersonDO> getProjectPerson(String id);

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

@@ -11,6 +11,7 @@ import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
 import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportProcessVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.IotMaintainController;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.bom.vo.IotMaintainBomSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainSaveReqVO;
@@ -446,6 +447,24 @@ public class IotMaintainServiceImpl implements IotMaintainService {
     }
 
 
+    @Override
+    public void methodDeal(IotMaintainController.MaintainMethod method) {
+        IotMaintainDO iotMaintainDO = iotMaintainMapper.selectById(method.getId());
+        iotMaintainDO.setMaintainMethod(method.getMaintainMethod());
+        iotMaintainDO.setMethodDescription(method.getMethodDescription());
+        iotMaintainDO.setStatus("tx");
+        //如果维修方式是基地维修的话设置维修类型为jd维修
+        if ("jd".equals(method.getMaintainMethod())) {
+            iotMaintainDO.setType("jd");
+            AdminUserRespDTO user = adminUserApi.getUser(iotMaintainDO.getMaintainPerson());
+            if (Objects.nonNull(user)) {
+                //如果基地维修,将该工单的部门id设置为维修人员所在部门id
+                iotMaintainDO.setDeptId(user.getDeptId());
+            }
+        }
+        iotMaintainMapper.updateById(iotMaintainDO);
+    }
+
     @Override
     public void oaDeal(CallBackOaVo callBackOaVo) {
         List<IotMaintainDO> iotMaintainDOS = iotMaintainMapper.selectList("request_id", callBackOaVo.getRequestId());

+ 58 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/record/IotJdRecordService.java

@@ -0,0 +1,58 @@
+package cn.iocoder.yudao.module.pms.service.maintain.record;
+
+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.maintain.record.vo.IotJdRecordPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.record.vo.IotJdRecordSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.record.IotJdRecordDO;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
+
+/**
+ * 基地维修记录 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface IotJdRecordService {
+
+    /**
+     * 创建基地维修记录
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotJdRecord(@Valid IotJdRecordSaveReqVO createReqVO);
+
+    /**
+     * 更新基地维修记录
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotJdRecord(@Valid IotJdRecordSaveReqVO updateReqVO);
+
+    /**
+     * 删除基地维修记录
+     *
+     * @param id 编号
+     */
+    void deleteIotJdRecord(Long id);
+
+    /**
+     * 获得基地维修记录
+     *
+     * @param id 编号
+     * @return 基地维修记录
+     */
+    IotJdRecordDO getIotJdRecord(Long id);
+
+    /**
+     * 获得基地维修记录分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 基地维修记录分页
+     */
+    PageResult<IotJdRecordDO> getIotJdRecordPage(IotJdRecordPageReqVO pageReqVO);
+
+    List<AdminUserRespDTO> getAssist(Long id);
+}

+ 112 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/record/IotJdRecordServiceImpl.java

@@ -0,0 +1,112 @@
+package cn.iocoder.yudao.module.pms.service.maintain.record;
+
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.record.vo.IotJdRecordPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.record.vo.IotJdRecordSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.record.IotJdRecordDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.maintain.record.IotJdRecordMapper;
+import cn.iocoder.yudao.module.system.api.dept.DeptApi;
+import cn.iocoder.yudao.module.system.api.permission.RoleApi;
+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 javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+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;
+
+/**
+ * 基地维修记录 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class IotJdRecordServiceImpl implements IotJdRecordService {
+
+    @Resource
+    private IotJdRecordMapper iotJdRecordMapper;
+    @Autowired
+    private IotMaintainMapper iotMaintainMapper;
+    @Autowired
+    private DeptApi deptApi;
+    @Autowired
+    private AdminUserApi adminUserApi;
+    @Autowired
+    private RoleApi roleApi;
+
+    @Override
+    public Long createIotJdRecord(IotJdRecordSaveReqVO createReqVO) {
+        // 插入
+        IotJdRecordDO iotJdRecord = BeanUtils.toBean(createReqVO, IotJdRecordDO.class);
+        iotJdRecord.setDeleted(false);
+        iotJdRecordMapper.insert(iotJdRecord);
+        // 返回
+        return iotJdRecord.getId();
+    }
+
+    @Override
+    public void updateIotJdRecord(IotJdRecordSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotJdRecordExists(updateReqVO.getId());
+        // 更新
+        IotJdRecordDO updateObj = BeanUtils.toBean(updateReqVO, IotJdRecordDO.class);
+        iotJdRecordMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotJdRecord(Long id) {
+        // 校验存在
+        validateIotJdRecordExists(id);
+        // 删除
+        iotJdRecordMapper.deleteById(id);
+    }
+
+    private void validateIotJdRecordExists(Long id) {
+        if (iotJdRecordMapper.selectById(id) == null) {
+            throw exception(new ErrorCode(666,"不存在记录"));
+        }
+    }
+
+    @Override
+    public IotJdRecordDO getIotJdRecord(Long id) {
+        return iotJdRecordMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotJdRecordDO> getIotJdRecordPage(IotJdRecordPageReqVO pageReqVO) {
+        return iotJdRecordMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public List<AdminUserRespDTO> getAssist(Long id) {
+//        IotJdRecordDO iotJdRecordDO = iotJdRecordMapper.selectById(id);
+//        if (Objects.isNull(iotJdRecordDO)) {
+//            throw new ServiceException(new ErrorCode(111,"没有维修记录"));
+//        }
+//        if (Objects.isNull(iotJdRecordDO.getRepairId())){
+//            throw new ServiceException(new ErrorCode(222,"维修工单id不存在"));
+//        }
+        IotMaintainDO maintainDO = iotMaintainMapper.selectById(id);
+        AdminUserRespDTO user = adminUserApi.getUser(maintainDO.getMaintainPerson());
+        List<AdminUserRespDTO> userListByDept = adminUserApi.getUserListByDeptId(user.getDeptId());
+        List<Long> roleUserIds = roleApi.getRoleUserIds("维修人员");
+
+        List<AdminUserRespDTO> collect = userListByDept.stream().filter(e -> roleUserIds.contains(e.getId())).collect(Collectors.toList());
+        return collect;
+    }
+
+}

+ 1 - 0
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java

@@ -73,4 +73,5 @@ public interface DeptApi {
     List<DeptRespDTO> getChildDeptList(Long id);
 
     List<DeptRespDTO> getDeptByName(String deptName);
+    List<DeptRespDTO> getDeptByNamePermission(String deptName);
 }

+ 5 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java

@@ -70,6 +70,10 @@ public class DeptApiImpl implements DeptApi {
         List<DeptDO> deptByName = deptService.getDeptByName(deptName);
         return BeanUtils.toBean(deptByName, DeptRespDTO.class);
     }
-
+    @Override
+    public List<DeptRespDTO> getDeptByNamePermission(String deptName) {
+        List<DeptDO> deptByName = deptService.getDeptByNameNoPermission(deptName);
+        return BeanUtils.toBean(deptByName, DeptRespDTO.class);
+    }
 
 }

+ 1 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java

@@ -77,6 +77,7 @@ public interface DeptService {
     List<DeptDO> companyLevelDepts(DeptListReqVO reqVO);
 
     List<DeptDO> getDeptByName(String deptName);
+    List<DeptDO> getDeptByNameNoPermission(String deptName);
     /**
      * 获得指定编号的部门 Map
      *

+ 8 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java

@@ -341,6 +341,14 @@ public class DeptServiceImpl implements DeptService {
         return deptMapper.selectList(reqVO);
     }
 
+    @Override
+    @DataPermission(enable = false)
+    public List<DeptDO> getDeptByNameNoPermission(String deptName) {
+        DeptListReqVO reqVO = new DeptListReqVO();
+        reqVO.setName(deptName);
+        return deptMapper.selectList(reqVO);
+    }
+
     @Override
     public List<DeptDO> getChildDeptList(Collection<Long> ids) {
         List<DeptDO> children = new LinkedList<>();