|
@@ -6,12 +6,18 @@ import cn.hutool.core.date.LocalDateTimeUtil;
|
|
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
|
|
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.aop.TenantIgnore;
|
|
import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
|
|
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.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.IotInspectOrderDetailMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderMapper;
|
|
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.dal.mysql.inspect.IotInspectPlanMapper;
|
|
import cn.iocoder.yudao.module.pms.service.inspect.IotInspectPlanService;
|
|
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.alibaba.fastjson.JSON;
|
|
|
|
+import com.google.common.collect.ImmutableList;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -33,6 +39,10 @@ public class InspectCreateOrderJob implements JobHandler {
|
|
private IotInspectOrderMapper iotInspectOrderMapper;
|
|
private IotInspectOrderMapper iotInspectOrderMapper;
|
|
@Autowired
|
|
@Autowired
|
|
private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
|
|
private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private IotDevicePersonService iotDevicePersonService;
|
|
|
|
+ @Resource
|
|
|
|
+ private AdminUserApi adminUserApi;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@TenantJob
|
|
@TenantJob
|
|
@@ -59,7 +69,7 @@ public class InspectCreateOrderJob implements JobHandler {
|
|
private void deal(IotInspectPlanDO plan, Date date) {
|
|
private void deal(IotInspectPlanDO plan, Date date) {
|
|
Date date1 = new Date();
|
|
Date date1 = new Date();
|
|
if ("hour".equals(plan.getPlanUnit())){
|
|
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){
|
|
if (date1.compareTo(dateTime) > 0){
|
|
createPlan(plan);
|
|
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) {
|
|
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);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|