|
@@ -5,30 +5,18 @@ import cn.hutool.core.date.DateUtil;
|
|
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
|
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
|
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.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.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.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 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.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
-import java.time.LocalDateTime;
|
|
|
|
import java.time.ZoneId;
|
|
import java.time.ZoneId;
|
|
-import java.util.*;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.List;
|
|
|
|
|
|
@Component
|
|
@Component
|
|
@Slf4j
|
|
@Slf4j
|
|
@@ -36,17 +24,8 @@ public class InspectCreateOrderJob implements JobHandler {
|
|
@Resource
|
|
@Resource
|
|
private IotInspectPlanMapper iotInspectPlanMapper;
|
|
private IotInspectPlanMapper iotInspectPlanMapper;
|
|
@Resource
|
|
@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
|
|
@Override
|
|
@TenantJob
|
|
@TenantJob
|
|
@@ -70,7 +49,7 @@ public class InspectCreateOrderJob implements JobHandler {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
- throw new ServiceException();
|
|
|
|
|
|
+ throw new RuntimeException(e.getMessage());
|
|
}
|
|
}
|
|
return "创建成功";
|
|
return "创建成功";
|
|
}
|
|
}
|
|
@@ -81,89 +60,19 @@ public class InspectCreateOrderJob implements JobHandler {
|
|
//todo
|
|
//todo
|
|
DateTime dateTime = DateUtil.offsetMinute(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);
|
|
|
|
|
|
+ iotInspectOrderService.createPlan(plan);
|
|
}
|
|
}
|
|
} else if ("day".equals(plan.getPlanUnit())){
|
|
} else if ("day".equals(plan.getPlanUnit())){
|
|
DateTime dateTime = DateUtil.offsetDay(date, Integer.parseInt(String.valueOf(plan.getPlanCycle())));
|
|
DateTime dateTime = DateUtil.offsetDay(date, Integer.parseInt(String.valueOf(plan.getPlanCycle())));
|
|
if (date1.compareTo(dateTime) > 0){
|
|
if (date1.compareTo(dateTime) > 0){
|
|
- createPlan(plan);
|
|
|
|
|
|
+ iotInspectOrderService.createPlan(plan);
|
|
}
|
|
}
|
|
} else if ("month".equals(plan.getPlanUnit())){
|
|
} else if ("month".equals(plan.getPlanUnit())){
|
|
DateTime dateTime = DateUtil.offsetMonth(date, Integer.parseInt(String.valueOf(plan.getPlanCycle())));
|
|
DateTime dateTime = DateUtil.offsetMonth(date, Integer.parseInt(String.valueOf(plan.getPlanCycle())));
|
|
if (date1.compareTo(dateTime) > 0){
|
|
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);
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
}
|
|
}
|