|
|
@@ -1,16 +1,23 @@
|
|
|
package com.sckw.transport.service;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import com.google.common.collect.Maps;
|
|
|
+import com.sckw.core.model.enums.AddressTypeEnum;
|
|
|
import com.sckw.core.web.response.BaseIotResult;
|
|
|
import com.sckw.core.web.response.result.PageDataResult;
|
|
|
import com.sckw.transport.api.feign.VehicleTraceClient;
|
|
|
import com.sckw.transport.api.model.dto.VehicleDataDTO;
|
|
|
import com.sckw.transport.api.model.dto.VehicleReturnData;
|
|
|
+import com.sckw.transport.model.KwtLogisticsOrderAddress;
|
|
|
import com.sckw.transport.model.KwtVehicleException;
|
|
|
+import com.sckw.transport.model.KwtWaybillOrderSubtask;
|
|
|
import com.sckw.transport.model.dto.VehicleExceptionQueryReq;
|
|
|
import com.sckw.transport.model.enuma.VehicleExceptionTypeEnum;
|
|
|
import com.sckw.transport.model.vo.VehicleExceptionVo;
|
|
|
+import com.sckw.transport.repository.KwtLogisticsOrderAddressRepository;
|
|
|
import com.sckw.transport.repository.KwtVehicleExceptionRepository;
|
|
|
+import com.sckw.transport.repository.KwtWaybillOrderSubtaskRepository;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
@@ -19,6 +26,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -33,6 +41,8 @@ public class VehicleExceptionService {
|
|
|
|
|
|
private final KwtVehicleExceptionRepository exceptionImageRepository;
|
|
|
private final VehicleTraceClient vehicleTraceClient;
|
|
|
+ private final KwtWaybillOrderSubtaskRepository waybillOrderSubtaskRepository;
|
|
|
+ private final KwtLogisticsOrderAddressRepository logisticsOrderAddressRepository;
|
|
|
|
|
|
/**
|
|
|
* 分页查询车辆异常图片信息
|
|
|
@@ -65,11 +75,37 @@ public class VehicleExceptionService {
|
|
|
|
|
|
truckLocationStatusMap = queryVehicleLocationStatus(truckNos);
|
|
|
}
|
|
|
-
|
|
|
+ List<Long> waybillOrderNos = records.stream()
|
|
|
+ .map(KwtVehicleException::getWOrderId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Map<String, KwtLogisticsOrderAddress> logisticsOrderAddressMap = Maps.newHashMap();
|
|
|
+ Map<Long, KwtWaybillOrderSubtask> waybillOrderSubtaskMap = Maps.newHashMap();
|
|
|
+ if (CollectionUtils.isNotEmpty(waybillOrderNos)){
|
|
|
+ //查询运单
|
|
|
+ List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskRepository.queryByWOrderIds(waybillOrderNos);
|
|
|
+ List<Long> logisticOrderIds = Lists.newArrayList();
|
|
|
+ if (CollectionUtils.isNotEmpty(subtasks)){
|
|
|
+ logisticOrderIds = subtasks.stream().map(KwtWaybillOrderSubtask::getLOrderId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ waybillOrderSubtaskMap = subtasks.stream()
|
|
|
+ .collect(Collectors.toMap(KwtWaybillOrderSubtask::getWOrderId, Function.identity(), (k1, k2) -> k1));
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(logisticOrderIds)){
|
|
|
+ //查询地址
|
|
|
+ List<KwtLogisticsOrderAddress> logisticOrderAddresses = logisticsOrderAddressRepository.queryByLogOrderIds(logisticOrderIds);
|
|
|
+ logisticsOrderAddressMap = Optional.ofNullable(logisticOrderAddresses)
|
|
|
+ .orElse(List.of())
|
|
|
+ .stream().collect(Collectors.toMap(x -> x.getLOrderId() + "_" + x.getAddressType(), Function.identity(), (k1, k2) -> k1));
|
|
|
+ }
|
|
|
+ }
|
|
|
// 转换为VO
|
|
|
final Map<String, Integer> finalLocationStatusMap = truckLocationStatusMap;
|
|
|
+ Map<String, KwtLogisticsOrderAddress> finalLogisticsOrderAddressMap = logisticsOrderAddressMap;
|
|
|
+ Map<Long, KwtWaybillOrderSubtask> finalWaybillOrderSubtaskMap = waybillOrderSubtaskMap;
|
|
|
List<VehicleExceptionVo> voList = records.stream()
|
|
|
- .map(image -> buildVehicleExceptionVo(image, finalLocationStatusMap))
|
|
|
+ .map(image -> buildVehicleExceptionVo(image, finalLocationStatusMap,finalWaybillOrderSubtaskMap, finalLogisticsOrderAddressMap))
|
|
|
.filter(Objects::nonNull)
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
@@ -91,7 +127,9 @@ public class VehicleExceptionService {
|
|
|
* @return VO对象
|
|
|
*/
|
|
|
private VehicleExceptionVo buildVehicleExceptionVo(KwtVehicleException image,
|
|
|
- Map<String, Integer> locationStatusMap) {
|
|
|
+ Map<String, Integer> locationStatusMap,
|
|
|
+ Map<Long, KwtWaybillOrderSubtask> waybillOrderSubtaskMap ,
|
|
|
+ Map<String, KwtLogisticsOrderAddress> logisticsOrderAddressMap) {
|
|
|
VehicleExceptionVo vo = new VehicleExceptionVo();
|
|
|
|
|
|
vo.setId(image.getId());
|
|
|
@@ -110,6 +148,7 @@ public class VehicleExceptionService {
|
|
|
vo.setLatitude(image.getLatitude());
|
|
|
vo.setLocation(image.getLocation());
|
|
|
vo.setDescription(image.getDescription());
|
|
|
+ vo.setDriverId(image.getDriverId());
|
|
|
vo.setDriverName(image.getDriverName());
|
|
|
vo.setDriverPhone(image.getDriverPhone());
|
|
|
|
|
|
@@ -122,7 +161,15 @@ public class VehicleExceptionService {
|
|
|
vo.setLocationStatus(0);
|
|
|
vo.setLocationStatusDesc("离线");
|
|
|
}
|
|
|
-
|
|
|
+ KwtWaybillOrderSubtask subtask = waybillOrderSubtaskMap.getOrDefault(image.getWOrderId(), new KwtWaybillOrderSubtask());
|
|
|
+ KwtLogisticsOrderAddress loadAdd = logisticsOrderAddressMap.getOrDefault(subtask.getLOrderId() + "_" + AddressTypeEnum.SHIPMENT.getCode(), new KwtLogisticsOrderAddress());
|
|
|
+ KwtLogisticsOrderAddress unLoadAdd = logisticsOrderAddressMap.getOrDefault(subtask.getLOrderId() + "_" + AddressTypeEnum.TAKE.getCode(), new KwtLogisticsOrderAddress());
|
|
|
+ vo.setLoadAddress(loadAdd.getDetailAddress());
|
|
|
+ vo.setStartLng(loadAdd.getLng());
|
|
|
+ vo.setStartLat(loadAdd.getLat());
|
|
|
+ vo.setUnloadAddress(unLoadAdd.getDetailAddress());
|
|
|
+ vo.setEndLng(unLoadAdd.getLng());
|
|
|
+ vo.setEndLat(unLoadAdd.getLat());
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
|
@@ -189,11 +236,37 @@ public class VehicleExceptionService {
|
|
|
|
|
|
truckLocationStatusMap = queryVehicleLocationStatus(truckNos);
|
|
|
}
|
|
|
-
|
|
|
+ List<Long> waybillOrderNos = records.stream()
|
|
|
+ .map(KwtVehicleException::getWOrderId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Map<String, KwtLogisticsOrderAddress> logisticsOrderAddressMap = Maps.newHashMap();
|
|
|
+ Map<Long, KwtWaybillOrderSubtask> waybillOrderSubtaskMap = Maps.newHashMap();
|
|
|
+ if (CollectionUtils.isNotEmpty(waybillOrderNos)){
|
|
|
+ //查询运单
|
|
|
+ List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskRepository.queryByWOrderIds(waybillOrderNos);
|
|
|
+ List<Long> logisticOrderIds = Lists.newArrayList();
|
|
|
+ if (CollectionUtils.isNotEmpty(subtasks)){
|
|
|
+ logisticOrderIds = subtasks.stream().map(KwtWaybillOrderSubtask::getLOrderId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ waybillOrderSubtaskMap = subtasks.stream()
|
|
|
+ .collect(Collectors.toMap(KwtWaybillOrderSubtask::getWOrderId, Function.identity(), (k1, k2) -> k1));
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(logisticOrderIds)){
|
|
|
+ //查询地址
|
|
|
+ List<KwtLogisticsOrderAddress> logisticOrderAddresses = logisticsOrderAddressRepository.queryByLogOrderIds(logisticOrderIds);
|
|
|
+ logisticsOrderAddressMap = Optional.ofNullable(logisticOrderAddresses)
|
|
|
+ .orElse(List.of())
|
|
|
+ .stream().collect(Collectors.toMap(x -> x.getLOrderId() + "_" + x.getAddressType(), Function.identity(), (k1, k2) -> k1));
|
|
|
+ }
|
|
|
+ }
|
|
|
// 转换为VO
|
|
|
final Map<String, Integer> finalLocationStatusMap = truckLocationStatusMap;
|
|
|
+ Map<String, KwtLogisticsOrderAddress> finalLogisticsOrderAddressMap = logisticsOrderAddressMap;
|
|
|
+ Map<Long, KwtWaybillOrderSubtask> finalWaybillOrderSubtaskMap = waybillOrderSubtaskMap;
|
|
|
List<VehicleExceptionVo> voList = records.stream()
|
|
|
- .map(image -> buildVehicleExceptionVo(image, finalLocationStatusMap))
|
|
|
+ .map(image -> buildVehicleExceptionVo(image, finalLocationStatusMap, finalWaybillOrderSubtaskMap, finalLogisticsOrderAddressMap))
|
|
|
.filter(Objects::nonNull)
|
|
|
.collect(Collectors.toList());
|
|
|
|