Browse Source

巡检调整测试

lipenghui 2 tháng trước cách đây
mục cha
commit
e150e3632b

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

@@ -35,6 +35,6 @@ public interface IotInspectRouteMapper extends BaseMapperX<IotInspectRouteDO> {
                 .eqIfPresent(IotInspectRouteDO::getDeptId, reqVO.getDeptId())
                 .orderByDesc(IotInspectRouteDO::getId));
     }
-    IPage<IotInspectRouteDO> getRoute(IPage<IotInspectRouteRespVO> page,@Param("reqVO")  IotInspectRoutePageReqVO reqVO);
+    IPage<IotInspectRouteDO> getRoute(IPage<IotInspectRoutePageReqVO> page,@Param("reqVO")  IotInspectRoutePageReqVO reqVO);
 
 }

+ 10 - 101
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/InspectCreateOrderJob.java

@@ -5,30 +5,18 @@ import cn.hutool.core.date.DateUtil;
 import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
 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.IotDeviceDO;
-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.IotDeviceMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectItemMapper;
-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.dataobject.inspect.IotInspectPlanDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectPlanMapper;
-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 cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.time.LocalDateTime;
 import java.time.ZoneId;
-import java.util.*;
+import java.util.Date;
+import java.util.List;
 
 @Component
 @Slf4j
@@ -36,17 +24,8 @@ public class InspectCreateOrderJob implements JobHandler {
     @Resource
     private IotInspectPlanMapper iotInspectPlanMapper;
     @Resource
-    private IotInspectOrderMapper iotInspectOrderMapper;
-    @Autowired
-    private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
-    @Autowired
-    private IotDevicePersonService iotDevicePersonService;
-    @Resource
-    private AdminUserApi adminUserApi;
-    @Autowired
-    private IotInspectItemMapper iotInspectItemMapper;
-    @Autowired
-    private IotDeviceMapper iotDeviceMapper;
+    private IotInspectOrderService iotInspectOrderService;
+
 
     @Override
     @TenantJob
@@ -70,7 +49,7 @@ public class InspectCreateOrderJob implements JobHandler {
                 }
             });
         } catch (Exception e) {
-            throw new ServiceException();
+            throw new RuntimeException(e.getMessage());
         }
         return "创建成功";
     }
@@ -81,89 +60,19 @@ public class InspectCreateOrderJob implements JobHandler {
             //todo
             DateTime dateTime = DateUtil.offsetMinute(date, Integer.parseInt(StringUtils.substringBeforeLast(String.valueOf(plan.getPlanCycle()),".")));
             if (date1.compareTo(dateTime) > 0){
-                createPlan(plan);
+                iotInspectOrderService.createPlan(plan);
             }
         } else if ("day".equals(plan.getPlanUnit())){
             DateTime dateTime = DateUtil.offsetDay(date, Integer.parseInt(String.valueOf(plan.getPlanCycle())));
             if (date1.compareTo(dateTime) > 0){
-                createPlan(plan);
+                iotInspectOrderService.createPlan(plan);
             }
         } else if ("month".equals(plan.getPlanUnit())){
             DateTime dateTime = DateUtil.offsetMonth(date, Integer.parseInt(String.valueOf(plan.getPlanCycle())));
             if (date1.compareTo(dateTime) > 0){
-                createPlan(plan);
+                iotInspectOrderService.createPlan(plan);
             }
         }
     }
 
-    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)  {
-        Map<Long, List<IotInspectRouteDO>> generate = generate(iotInspectPlan.getDeviceIds());
-        generate.forEach((k, v)->{
-            IotInspectOrderDO iotInspectOrderDO = new IotInspectOrderDO();
-            AdminUserRespDTO user = adminUserApi.getUser(k);
-            iotInspectOrderDO.setInspectOrderTitle((Objects.nonNull(user)?user.getNickname():"")+"/"+DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd")+"-巡检工单");
-            iotInspectOrderDO.setInspectOrderCode("IN"+ DateUtil.format(new Date(),"yyyyMMddHHmmss")+UUID.randomUUID().toString().substring(0, 4));
-            iotInspectOrderDO.setCharge(k);
-            iotInspectOrderDO.setStatus("todo");
-            iotInspectOrderDO.setType("计划生成");
-            iotInspectOrderDO.setPlanCode(iotInspectPlan.getPlanCode());
-            iotInspectOrderDO.setDeleted(false);
-            iotInspectOrderDO.setChargeName(Objects.nonNull(user)?user.getNickname():"");
-            iotInspectOrderDO.setDeptId(v.get(0).getDeptId());
-            iotInspectOrderMapper.insert(iotInspectOrderDO);
-            List<IotInspectOrderDetailDO> results = new ArrayList<>();
-            //处理巡检项
-            List<IotInspectItemDO> items = iotInspectItemMapper.selectList();
-            v.forEach(routeDO -> {
-                List<Map> itemos = JSON.parseArray(routeDO.getItemJson(), Map.class);
-                itemos.forEach(item -> {
-                    Long deviceId = Long.valueOf(String.valueOf(item.get("deviceId")));
-                    IotDeviceDO deviceDO = iotDeviceMapper.selectById(deviceId);
-                    if (Objects.nonNull(deviceDO)){
-                        //如果部门id没调拨过
-                        if (String.valueOf(deviceDO.getDeptId()).equals(String.valueOf(item.get("deptId")))){
-                            IotInspectOrderDetailDO detailDO = new IotInspectOrderDetailDO();
-                            detailDO.setOrderId(iotInspectOrderDO.getId());
-                            detailDO.setDeviceId(routeDO.getDeviceId());
-                            detailDO.setRouteId(routeDO.getId());
-                            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);
-                            items.stream().filter(e -> e.getId().equals(detailDO.getItemId())).findFirst().ifPresent(iotItem->{
-                                detailDO.setStandard(iotItem.getStandard());
-                                detailDO.setUrls(iotItem.getUrls());
-                                detailDO.setItem(iotItem.getItem());
-                            });
-                            IotDeviceDO iotDeviceDO = iotDeviceMapper.selectById(routeDO.getDeviceId());
-                            if (Objects.nonNull(iotDeviceDO)){
-                                detailDO.setDeptId(iotDeviceDO.getDeptId());
-                            }
-                            results.add(detailDO);
-                        }
-                    }
-                });
-            });
-            iotInspectOrderDetailMapper.insertBatch(results);
-            iotInspectPlan.setLastCreateTime(LocalDateTime.now());
-            iotInspectPlanMapper.updateById(iotInspectPlan);
-        });
-    }
-
 }

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

@@ -4,6 +4,7 @@ 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 cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectPlanDO;
 
 import javax.validation.Valid;
 import java.util.List;
@@ -60,4 +61,5 @@ public interface IotInspectOrderService {
      * @param deptId 调拨后的部门id
      */
     void syncWordOrderData(List<Long> deviceIds, Long deptId);
+    void createPlan(IotInspectPlanDO planDO);
 }

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

@@ -1,15 +1,26 @@
 package cn.iocoder.yudao.module.pms.service.inspect;
 
 import cn.hutool.core.collection.CollUtil;
+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.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.dataobject.inspect.IotInspectOrderDetailDO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
+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.IotDeviceMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectItemMapper;
 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.iotdeviceperson.IotDevicePersonService;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -17,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -39,6 +51,16 @@ public class IotInspectOrderServiceImpl implements IotInspectOrderService {
     private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
     @Resource
     private DeptService deptService;
+    @Resource
+    private AdminUserApi adminUserApi;
+    @Autowired
+    private IotInspectItemMapper iotInspectItemMapper;
+    @Autowired
+    private IotDeviceMapper iotDeviceMapper;
+    @Resource
+    private IotInspectPlanMapper iotInspectPlanMapper;
+    @Autowired
+    private IotDevicePersonService iotDevicePersonService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -190,4 +212,78 @@ public class IotInspectOrderServiceImpl implements IotInspectOrderService {
 
     }
 
+
+    @Transactional(rollbackFor = Exception.class)
+    public void createPlan(IotInspectPlanDO iotInspectPlan)  {
+        Map<Long, List<IotInspectRouteDO>> generate = generate(iotInspectPlan.getDeviceIds());
+        generate.forEach((k, v)->{
+            IotInspectOrderDO iotInspectOrderDO = new IotInspectOrderDO();
+            AdminUserRespDTO user = adminUserApi.getUser(k);
+            iotInspectOrderDO.setInspectOrderTitle((Objects.nonNull(user)?user.getNickname():"")+"/"+ DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd")+"-巡检工单");
+            iotInspectOrderDO.setInspectOrderCode("IN"+ DateUtil.format(new Date(),"yyyyMMddHHmmss")+UUID.randomUUID().toString().substring(0, 4));
+            iotInspectOrderDO.setCharge(k);
+            iotInspectOrderDO.setStatus("todo");
+            iotInspectOrderDO.setType("计划生成");
+            iotInspectOrderDO.setPlanCode(iotInspectPlan.getPlanCode());
+            iotInspectOrderDO.setDeleted(false);
+            iotInspectOrderDO.setChargeName(Objects.nonNull(user)?user.getNickname():"");
+            iotInspectOrderDO.setDeptId(v.get(0).getDeptId());
+            iotInspectOrderMapper.insert(iotInspectOrderDO);
+            List<IotInspectOrderDetailDO> results = new ArrayList<>();
+            //处理巡检项
+            List<IotInspectItemDO> items = iotInspectItemMapper.selectList();
+            v.forEach(routeDO -> {
+                List<Map> itemos = JSON.parseArray(routeDO.getItemJson(), Map.class);
+                itemos.forEach(item -> {
+                    Long deviceId = routeDO.getDeviceId();
+                    IotDeviceDO deviceDO = iotDeviceMapper.selectById(deviceId);
+                    if (Objects.nonNull(deviceDO)){
+                        //如果部门id没调拨过
+                        if (deviceDO.getDeptId().equals(routeDO.getDeptId())){
+                            IotInspectOrderDetailDO detailDO = new IotInspectOrderDetailDO();
+                            detailDO.setOrderId(iotInspectOrderDO.getId());
+                            detailDO.setDeviceId(routeDO.getDeviceId());
+                            detailDO.setRouteId(routeDO.getId());
+                            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);
+                            items.stream().filter(e -> e.getId().equals(detailDO.getItemId())).findFirst().ifPresent(iotItem->{
+                                detailDO.setStandard(iotItem.getStandard());
+                                detailDO.setUrls(iotItem.getUrls());
+                                detailDO.setItem(iotItem.getItem());
+                            });
+                            IotDeviceDO iotDeviceDO = iotDeviceMapper.selectById(routeDO.getDeviceId());
+                            if (Objects.nonNull(iotDeviceDO)){
+                                detailDO.setDeptId(iotDeviceDO.getDeptId());
+                            }
+                            results.add(detailDO);
+                        }
+                    }
+                });
+            });
+            if (CollUtil.isEmpty(results)){
+                throw new RuntimeException();
+            }
+            iotInspectOrderDetailMapper.insertBatch(results);
+            iotInspectPlan.setLastCreateTime(LocalDateTime.now());
+            iotInspectPlanMapper.updateById(iotInspectPlan);
+        });
+    }
+
+    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;
+    }
 }

+ 2 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotInspectRouteMapper.xml

@@ -10,11 +10,11 @@
      -->
     <select id="getRoute"
             resultType="cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectRouteDO">
-        select* from (select * from (select route.route_name, device.device_name, device.id device_id,route.id, route.item_json,route.create_time,device.dept_id from (select * from rq_iot_inspect_route where device_id is null) route
+        select* from (select * from (select route.route_name, device.device_name, device.id device_id,route.id, route.item_json,route.create_time,device.dept_id, device.device_code from (select * from rq_iot_inspect_route where device_id is null) route
         left join rq_iot_device device on route.device_classify = device.asset_class)a where a.device_id not in (select device_id from rq_iot_inspect_route where device_id is not null)
 
         union all
-        select route_name, device_name, device_id,id,item_json,create_time,dept_id from rq_iot_inspect_route where device_id is not null)fin
+        select route_name, device_name, device_id,id,item_json,create_time,dept_id,device_code from rq_iot_inspect_route where device_id is not null)fin
         <if test="reqVO.deviceName!=null and reqVO.deviceName!=''">
             AND fin.device_name LIKE concat(concat("%",#{reqVO.deviceName}),"%")
         </if>