|
@@ -1,6 +1,7 @@
|
|
|
package cn.iocoder.yudao.module.pms.service.inspect;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.date.DatePattern;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
|
@@ -8,6 +9,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
|
|
|
import cn.iocoder.yudao.module.pms.constant.PmsConstants;
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailPageReqVO;
|
|
|
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.controller.admin.inspect.route.vo.IotInspectRouteRespVO;
|
|
@@ -117,6 +119,48 @@ public class IotInspectOrderServiceImpl implements IotInspectOrderService {
|
|
|
order.setExecuteDate(LocalDateTime.now());
|
|
|
}
|
|
|
iotInspectOrderMapper.updateById(order);
|
|
|
+
|
|
|
+ CompletableFuture.runAsync(()->{
|
|
|
+ //处理多责任人工单逻辑
|
|
|
+ //判断该设备是否多个责任人
|
|
|
+ Map<Long, String> iotDevicePerson = iotDevicePersonService.getIotDevicePerson(ImmutableList.of(Long.valueOf(deviceId)));
|
|
|
+ String person = iotDevicePerson.get(Long.valueOf(deviceId));
|
|
|
+ if (StringUtils.isNotBlank(person)) {
|
|
|
+ String[] persons = person.split(",");
|
|
|
+ //多个责任人的处理
|
|
|
+ if (persons.length>1) {
|
|
|
+ //查询出该工单的该设备的所有巡检项
|
|
|
+ List<IotInspectOrderDetailDO> detailDOS = iotInspectOrderDetailMapper.selectByMap(ImmutableMap.of("order_id", orderId, "device_id", deviceId));
|
|
|
+ boolean allFinish = detailDOS.stream().noneMatch(e -> Objects.isNull(e.getIfNormal()));
|
|
|
+ //如果该工单该设备都巡检完成
|
|
|
+ if (allFinish) {
|
|
|
+ //查询所有当天的该设备的巡检明细
|
|
|
+ IotInspectOrderDetailDO todayDetail = detailDOS.get(0);
|
|
|
+ LocalDateTime createTime = todayDetail.getCreateTime();
|
|
|
+ String create = DateUtil.format(createTime, DatePattern.NORM_DATE_PATTERN);
|
|
|
+ LocalDateTime startOfDay = DateUtils.getStartOfDay(create);
|
|
|
+ LocalDateTime endOfDay = DateUtils.getEndOfDay(create);
|
|
|
+ IotInspectOrderDetailPageReqVO iotInspectOrderDetailPageReqVO = new IotInspectOrderDetailPageReqVO();
|
|
|
+ iotInspectOrderDetailPageReqVO.setCreateTime(new LocalDateTime[]{startOfDay, endOfDay});
|
|
|
+ iotInspectOrderDetailPageReqVO.setDeviceId(Long.valueOf(deviceId));
|
|
|
+ List<IotInspectOrderDetailDO> deviceIdDetails = iotInspectOrderDetailMapper.selectByTimeAndOrderIdAndDeviceId(iotInspectOrderDetailPageReqVO);
|
|
|
+ Map<Long, List<IotInspectOrderDetailDO>> otherOrderMap = deviceIdDetails.stream().filter(e -> !orderId.equals(e.getOrderId())).collect(Collectors.groupingBy(IotInspectOrderDetailDO::getOrderId));
|
|
|
+ otherOrderMap.forEach((k, v) -> {
|
|
|
+ iotInspectOrderDetailPageReqVO.setDeviceId(null);
|
|
|
+ iotInspectOrderDetailPageReqVO.setOrderId(k);
|
|
|
+ List<IotInspectOrderDetailDO> orderIdDetails = iotInspectOrderDetailMapper.selectByTimeAndOrderIdAndDeviceId(iotInspectOrderDetailPageReqVO);
|
|
|
+ //删除巡检明细
|
|
|
+ v.forEach(f -> iotInspectOrderDetailMapper.deleteById(f));
|
|
|
+ //如果工单里面只有这一个设备的话,删除该工单
|
|
|
+ if (v.size()==orderIdDetails.size()) {
|
|
|
+ iotInspectOrderMapper.deleteById(k);
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
@Override
|