Jelajahi Sumber

巡检工单设备调拨调整

Zimo 1 Minggu lalu
induk
melakukan
2137e70da9

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

@@ -37,4 +37,9 @@ public interface IotInspectPlanMapper extends BaseMapperX<IotInspectPlanDO> {
         return selectCount(new LambdaQueryWrapperX<IotInspectPlanDO>()
                 .inIfPresent(IotInspectPlanDO::getPlanCode, planCodes));
     }
+
+    default List<IotInspectPlanDO> getListByJsonDeviceId(String deviceId) {
+        return selectList(new LambdaQueryWrapperX<IotInspectPlanDO>()
+                .likeIfPresent(IotInspectPlanDO::getDeviceIds, deviceId));
+    }
 }

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

@@ -53,4 +53,5 @@ public interface IotInspectPlanService {
      */
     PageResult<IotInspectPlanDO> getIotInspectPlanPage(IotInspectPlanPageReqVO pageReqVO);
 
+    void syncInspectPlanData(List<Long> deviceIds, Long deptId);
 }

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

@@ -1,23 +1,25 @@
 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.framework.quartz.core.handler.JobHandler;
 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.controller.admin.inspect.route.vo.IotInspectRouteRespVO;
 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.IotDeviceService;
 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 org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
-
 import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -38,6 +40,9 @@ public class IotInspectPlanServiceImpl implements IotInspectPlanService {
     private AdminUserApi adminUserApi;
     @Resource
     private DeptService deptService;
+    @Autowired
+    private IotDeviceService iotDeviceService;
+
     @Override
     public void updateInspectPlanStatus(Long id, Integer status) {
         IotInspectPlanDO iotInspectPlanDO = iotInspectPlanMapper.selectById(id).setStatus(status);
@@ -103,4 +108,43 @@ public class IotInspectPlanServiceImpl implements IotInspectPlanService {
         return iotInspectPlanMapper.selectPage(pageReqVO, ids);
     }
 
+    /**
+     * 设备调拨后修改巡检计划
+     * @param deviceIds 多个设备
+     * @param deptId 调拨后部门id
+     */
+    @Override
+    public void syncInspectPlanData(List<Long> deviceIds, Long deptId) {
+        deviceIds.forEach(e ->{
+            //设备为瑞恒的话进行该调整
+            String deviceCompany = iotDeviceService.getDeviceCompany(e);
+            if ("rh".equals(deviceCompany)) {
+                String device = "\"deviceId\":"+e;
+                List<IotInspectPlanDO> listByJsonDeviceId = iotInspectPlanMapper.getListByJsonDeviceId(device);
+                //遍历巡检计划
+                AtomicReference<IotInspectRouteRespVO> iotInspectRouteDO = new AtomicReference<>(new IotInspectRouteRespVO());
+                listByJsonDeviceId.forEach(f ->{
+                    List<IotInspectRouteRespVO> routeDOS = JSON.parseArray(f.getDeviceIds(), IotInspectRouteRespVO.class);
+                    List<IotInspectRouteRespVO> collect = routeDOS.stream().filter(g -> !e.equals(g.getDeviceId())).collect(Collectors.toList());
+                    routeDOS.stream().filter(g -> e.equals(g.getDeviceId())).findFirst().ifPresent(iotInspectRouteDO::set);
+                    //更新巡检计划的巡检明细
+                    f.setDeviceIds(JSON.toJSONString(collect));
+                    iotInspectPlanMapper.updateById(f);
+                });
+                //往新的队伍中添加该设备
+                List<IotInspectPlanDO> targetPlan = iotInspectPlanMapper.selectList("dept_id", deptId);
+                if (CollUtil.isNotEmpty(targetPlan)) {
+                    IotInspectPlanDO iotInspectPlanDO = targetPlan.get(0);
+                    List<IotInspectRouteRespVO> routeDOS = JSON.parseArray(iotInspectPlanDO.getDeviceIds(), IotInspectRouteRespVO.class);
+                    if (Objects.nonNull(iotInspectRouteDO.get())){
+                        routeDOS.add(iotInspectRouteDO.get());
+                    }
+                    //更新巡检计划的巡检明细
+                    iotInspectPlanDO.setDeviceIds(JSON.toJSONString(routeDOS));
+                    iotInspectPlanMapper.updateById(iotInspectPlanDO);
+                }
+            }
+        });
+    }
+
 }

+ 6 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotdeviceallotlog/IotDeviceAllotLogServiceImpl.java

@@ -15,10 +15,12 @@ import cn.iocoder.yudao.module.pms.dal.mysql.iotdeviceallotlog.IotDeviceAllotLog
 import cn.iocoder.yudao.module.pms.service.IotTreeService;
 import cn.iocoder.yudao.module.pms.service.failure.IotFailureReportService;
 import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderService;
+import cn.iocoder.yudao.module.pms.service.inspect.IotInspectPlanService;
 import cn.iocoder.yudao.module.pms.service.iotdeviceperson.IotDevicePersonService;
 import cn.iocoder.yudao.module.pms.service.iotmainworkorder.IotMainWorkOrderService;
 import cn.iocoder.yudao.module.pms.service.iotopeationfill.IotOpeationFillService;
 import cn.iocoder.yudao.module.pms.service.maintain.IotMaintainService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -65,6 +67,8 @@ public class IotDeviceAllotLogServiceImpl implements IotDeviceAllotLogService {
     private ThreadPoolTaskExecutor pmsThreadPoolTaskExecutor;
     @Resource
     private IotTreeService iotTreeService;
+    @Autowired
+    private IotInspectPlanService iotInspectPlanService;
 
     @Override
     public Long createIotDeviceAllotLog(IotDeviceAllotLogSaveReqVO createReqVO) {
@@ -190,6 +194,8 @@ public class IotDeviceAllotLogServiceImpl implements IotDeviceAllotLogService {
             iotMaintainService.syncWordOrderData(changedDeviceIds, deptId.get());
             // 修改巡检历史工单
             iotInspectOrderService.syncWordOrderData(changedDeviceIds, deptId.get());
+            //巡检计划调拨
+            iotInspectPlanService.syncInspectPlanData(changedDeviceIds, deptId.get());
             if (CollUtil.isNotEmpty(reqVOS.get(0).getPersonIds())) {
                 // 修改保养历史工单
                 iotMainWorkOrderService.syncWorkOrderData(changedDeviceIds, deptId.get(), reqVOS.get(0).getPersonIds(), oldDeptPair);