lipenghui 3 сар өмнө
parent
commit
c425506b76

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

@@ -39,5 +39,5 @@ public class IotInspectOrderPageReqVO extends PageParam {
 
     private String type;
 
-    private String charge;
+    private Long charge;
 }

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

@@ -45,6 +45,9 @@ public class IotInspectOrderRespVO {
     @ExcelProperty("设备id")
     private String deviceIds;
 
+    private String planCode;
+    private String chargeName;
     private String type;
+
     private Map<Long, List<IotInspectOrderDetailDO>> detail;
 }

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

@@ -70,7 +70,7 @@ public class IotInspectPlanController {
     public CommonResult<IotInspectPlanRespVO> getIotInspectPlan(@RequestParam("id") Long id) {
         IotInspectPlanDO iotInspectPlan = iotInspectPlanService.getIotInspectPlan(id);
         IotInspectPlanRespVO bean = BeanUtils.toBean(iotInspectPlan, IotInspectPlanRespVO.class);
-        bean.setCharges(Arrays.asList(iotInspectPlan.getCharge().split(",")));
+//        bean.setCharges(Arrays.asList(iotInspectPlan.getCharge().split(",")));
         return success(bean);
     }
 

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

@@ -45,4 +45,6 @@ public class IotInspectPlanPageReqVO extends PageParam {
 
     @Schema(description = "状态")
     private Integer status;
+
+    private String chargeName;
 }

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

@@ -54,7 +54,7 @@ public class IotInspectOrderDO extends BaseDO {
 
     private String type;
 
-    private String charge;
+    private Long charge;
     private String planCode;
     private String chargeName;
 }

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

@@ -28,7 +28,7 @@ public interface IotInspectOrderMapper extends BaseMapperX<IotInspectOrderDO> {
                 .betweenIfPresent(IotInspectOrderDO::getCreateTime, reqVO.getCreateTime())
                 .eqIfPresent(IotInspectOrderDO::getDeptId, reqVO.getDeptId())
                 .eqIfPresent(IotInspectOrderDO::getDeviceIds, reqVO.getDeviceIds())
-                .likeIfPresent(IotInspectOrderDO::getCharge, reqVO.getCharge())
+                .eqIfPresent(IotInspectOrderDO::getCharge, reqVO.getCharge())
                 .orderByDesc(IotInspectOrderDO::getId));
     }
     default Long selectCountByTimeAndStatus(IotInspectOrderPageReqVO reqVO) {

+ 61 - 31
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/InspectCreateOrderJob.java

@@ -6,12 +6,18 @@ import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
+import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonPageReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.*;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotdeviceperson.IotDevicePersonDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderDetailMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectPlanMapper;
 import cn.iocoder.yudao.module.pms.service.inspect.IotInspectPlanService;
+import cn.iocoder.yudao.module.pms.service.iotdeviceperson.IotDevicePersonService;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson.JSON;
+import com.google.common.collect.ImmutableList;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +39,10 @@ public class InspectCreateOrderJob implements JobHandler {
     private IotInspectOrderMapper iotInspectOrderMapper;
     @Autowired
     private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
+    @Autowired
+    private IotDevicePersonService iotDevicePersonService;
+    @Resource
+    private AdminUserApi adminUserApi;
 
     @Override
     @TenantJob
@@ -59,7 +69,7 @@ public class InspectCreateOrderJob implements JobHandler {
     private void deal(IotInspectPlanDO plan, Date date) {
         Date date1 = new Date();
         if ("hour".equals(plan.getPlanUnit())){
-            DateTime dateTime = DateUtil.offsetHour(date, Integer.parseInt(StringUtils.substringBeforeLast(String.valueOf(plan.getPlanCycle()),".")));
+            DateTime dateTime = DateUtil.offsetMinute(date, Integer.parseInt(StringUtils.substringBeforeLast(String.valueOf(plan.getPlanCycle()),".")));
             if (date1.compareTo(dateTime) > 0){
                 createPlan(plan);
             }
@@ -76,39 +86,59 @@ public class InspectCreateOrderJob implements JobHandler {
         }
     }
 
+    private Map<Long, List<IotInspectRouteDO>> generate(String deviceIds) {
+        List<IotInspectRouteDO> routeDOS = JSON.parseArray(deviceIds, IotInspectRouteDO.class);
+
+        Map<Long, List<IotInspectRouteDO>> personToDevices = new HashMap<>();
+
+        for (IotInspectRouteDO routeDO : routeDOS) {
+            IotDevicePersonPageReqVO iotDevicePersonPageReqVO = new IotDevicePersonPageReqVO();
+            iotDevicePersonPageReqVO.setDeviceIds(ImmutableList.of(routeDO.getDeviceId()));
+            List<IotDevicePersonDO> persons = iotDevicePersonService.getPersonsByDeviceIds(iotDevicePersonPageReqVO);
+            for (IotDevicePersonDO person : persons) {
+                personToDevices.computeIfAbsent(person.getPersonId(), k -> new ArrayList<>())
+                        .add(routeDO);
+            }
+        }
+        return personToDevices;
+    }
     private void createPlan(IotInspectPlanDO iotInspectPlan) {
-        IotInspectOrderDO iotInspectOrderDO = new IotInspectOrderDO();
-        iotInspectOrderDO.setInspectOrderTitle(iotInspectPlan.getPlanTitle()+"-巡检工单");
-        iotInspectOrderDO.setInspectOrderCode("IN"+ DateUtil.format(new Date(),"yyyyMMddHHmmss"));
-        String collect = Arrays.stream(iotInspectPlan.getCharge().split(",")).map(charge -> "io" + charge + "io").collect(Collectors.joining(","));
-        iotInspectOrderDO.setCharge(collect);
-        iotInspectOrderDO.setStatus("todo");
-        iotInspectOrderDO.setDeviceIds(iotInspectPlan.getDeviceIds());
-        iotInspectOrderDO.setType("计划生成");
-        iotInspectOrderDO.setPlanCode(iotInspectPlan.getPlanCode());
-        iotInspectOrderDO.setDeleted(false);
-        iotInspectOrderDO.setChargeName(iotInspectPlan.getChargeName());
-        iotInspectOrderDO.setDeptId(iotInspectPlan.getDeptId());
-        iotInspectOrderMapper.insert(iotInspectOrderDO);
-        List<IotInspectRouteDO> routeDOS = JSON.parseArray(iotInspectPlan.getDeviceIds(), IotInspectRouteDO.class);
-        List<IotInspectOrderDetailDO> results = new ArrayList<>();
-        //处理巡检项
-        routeDOS.forEach(routeDO -> {
-            List<Map> itemos = JSON.parseArray(routeDO.getItemJson(), Map.class);
-            itemos.forEach(item -> {
-                IotInspectOrderDetailDO detailDO = new IotInspectOrderDetailDO();
-                detailDO.setOrderId(iotInspectOrderDO.getId());
-                detailDO.setDeviceId(routeDO.getDeviceId());
-                detailDO.setItemId(Objects.isNull(item.get("itemId"))?null:Long.valueOf(String.valueOf(item.get("itemId"))));
-                detailDO.setIndexId(Long.valueOf(String.valueOf(item.get("index"))));
-                detailDO.setDeleted(false);
-                detailDO.setDeptId(iotInspectPlan.getDeptId());
-                results.add(detailDO);
+        Map<Long, List<IotInspectRouteDO>> generate = generate(iotInspectPlan.getDeviceIds());
+        generate.forEach((k, v)->{
+            IotInspectOrderDO iotInspectOrderDO = new IotInspectOrderDO();
+            iotInspectOrderDO.setInspectOrderTitle(iotInspectPlan.getPlanTitle()+"-巡检工单");
+            iotInspectOrderDO.setInspectOrderCode("IN"+ DateUtil.format(new Date(),"yyyyMMddHHmmss"));
+//            String collect = Arrays.stream(iotInspectPlan.getCharge().split(",")).map(charge -> "io" + charge + "io").collect(Collectors.joining(","));
+            iotInspectOrderDO.setCharge(k);
+            iotInspectOrderDO.setStatus("todo");
+            iotInspectOrderDO.setDeviceIds(JSON.toJSONString(v));
+            iotInspectOrderDO.setType("计划生成");
+            iotInspectOrderDO.setPlanCode(iotInspectPlan.getPlanCode());
+            iotInspectOrderDO.setDeleted(false);
+            AdminUserRespDTO user = adminUserApi.getUser(k);
+            iotInspectOrderDO.setChargeName(Objects.nonNull(user)?user.getNickname():"");
+            iotInspectOrderDO.setDeptId(iotInspectPlan.getDeptId());
+            iotInspectOrderMapper.insert(iotInspectOrderDO);
+            //List<IotInspectRouteDO> routeDOS = JSON.parseArray(v, IotInspectRouteDO.class);
+            List<IotInspectOrderDetailDO> results = new ArrayList<>();
+            //处理巡检项
+            v.forEach(routeDO -> {
+                List<Map> itemos = JSON.parseArray(routeDO.getItemJson(), Map.class);
+                itemos.forEach(item -> {
+                    IotInspectOrderDetailDO detailDO = new IotInspectOrderDetailDO();
+                    detailDO.setOrderId(iotInspectOrderDO.getId());
+                    detailDO.setDeviceId(routeDO.getDeviceId());
+                    detailDO.setItemId(Objects.isNull(item.get("itemId"))?null:Long.valueOf(String.valueOf(item.get("itemId"))));
+                    detailDO.setIndexId(Long.valueOf(String.valueOf(item.get("index"))));
+                    detailDO.setDeleted(false);
+                    detailDO.setDeptId(iotInspectPlan.getDeptId());
+                    results.add(detailDO);
+                });
             });
+            iotInspectOrderDetailMapper.insertBatch(results);
+            iotInspectPlan.setLastCreateTime(LocalDateTime.now());
+            iotInspectPlanMapper.updateById(iotInspectPlan);
         });
-        iotInspectOrderDetailMapper.insertBatch(results);
-        iotInspectPlan.setLastCreateTime(LocalDateTime.now());
-        iotInspectPlanMapper.updateById(iotInspectPlan);
     }
 
 }

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

@@ -49,10 +49,10 @@ public class IotInspectPlanServiceImpl implements IotInspectPlanService {
         iotInspectPlan.setDeleted(false);
         iotInspectPlan.setStatus(0);
         iotInspectPlan.setPlanCode("INPL"+ DateUtil.format(new Date(), "yyyyMMddHHmmss"));
-        iotInspectPlan.setCharge(String.join(",", createReqVO.getCharges()));
+//        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);
+//        String collect1 = adminUserApi.getUserList(collect).stream().map(AdminUserRespDTO::getNickname).collect(Collectors.joining(","));
+//        iotInspectPlan.setChargeName(collect1);
         iotInspectPlanMapper.insert(iotInspectPlan);
         //创建定时任务
         // 返回

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

@@ -107,9 +107,10 @@ public class IotMaintainServiceImpl implements IotMaintainService {
     public Long createIotMaintain(IotMaintainSaveVO createReqVO) {
         // 插入工单
         IotMaintainDO iotMaintain = BeanUtils.toBean(createReqVO.getMaintain(), IotMaintainDO.class);
-        //iotMaintain.setFailureCode("GZ"+ DateUtil.format(new Date(), "yyyyMMddHHmmss"));
-        //iotMaintain.setFailureName(createReqVO.getMaintain().getDeviceName()+DateUtil.format(new Date(), "yyyyMMddHHmmss"));
+        iotMaintain.setFailureCode("GZ"+ DateUtil.format(new Date(), "yyyyMMddHHmmss"));
+        iotMaintain.setFailureName(createReqVO.getMaintain().getDeviceName()+DateUtil.format(new Date(), "yyyyMMddHHmmss"));
         iotMaintain.setDeleted(false);
+        iotMaintain.setMaintainPerson(SecurityFrameworkUtils.getLoginUserId());
         iotMaintain.setMaintainType("手动新增");
         iotMaintainMapper.insert(iotMaintain);
         //插入工单bom