|
|
@@ -66,6 +66,7 @@ import org.apache.commons.collections4.MapUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.RoundingMode;
|
|
|
@@ -988,7 +989,7 @@ public class kwfTruckTraceService {
|
|
|
if (Objects.nonNull(req.getStatus())) {
|
|
|
taskingStatus.add(req.getStatus());
|
|
|
} else {
|
|
|
- taskingStatus.addAll(Arrays.asList(CarWaybillV1Enum.PENDING_VEHICLE.getCode(), CarWaybillV1Enum.REFUSE_TRAFFIC.getCode(),
|
|
|
+ taskingStatus.addAll(Arrays.asList(CarWaybillV1Enum.PENDING_VEHICLE.getCode(),CarWaybillV1Enum.WEIGHT_TRAFFIC.getCode(), CarWaybillV1Enum.REFUSE_TRAFFIC.getCode(),
|
|
|
CarWaybillV1Enum.EXIT_COMPLETED.getCode(), CarWaybillV1Enum.WAIT_LOADING.getCode()));
|
|
|
}
|
|
|
|
|
|
@@ -1049,6 +1050,7 @@ public class kwfTruckTraceService {
|
|
|
List<KwtLogisticsOrderUnit> logisticsOrderUnits = Lists.newArrayList();
|
|
|
List<KwtLogisticsOrderGoods> goodsList = Lists.newArrayList();
|
|
|
List<KwtLogisticsOrderAddress> logisticsOrderAddress = Lists.newArrayList();
|
|
|
+ Map<Long, KwtLogisticsOrder> logisticsOrderMap = Maps.newHashMap();
|
|
|
if (CollectionUtils.isNotEmpty(lOrderIds)) {
|
|
|
// 查询托运企业和承运企业
|
|
|
logisticsOrderUnits = kwtLogisticsOrderUnitRepository.queryByLOrderIds(new ArrayList<>(lOrderIds));
|
|
|
@@ -1056,6 +1058,10 @@ public class kwfTruckTraceService {
|
|
|
goodsList = kwtLogisticsOrderGoodsRepository.queryByLOrderIds(new ArrayList<>(lOrderIds));
|
|
|
//查询物流地址
|
|
|
logisticsOrderAddress = kwtLogisticsOrderAddressRepository.queryByLogOrderIds(new ArrayList<>(lOrderIds));
|
|
|
+ List<KwtLogisticsOrder> kwtLogisticsOrders = kwtLogisticsOrderRepository.queryByLogisticsOrderIds(new ArrayList<>(lOrderIds));
|
|
|
+ logisticsOrderMap = Optional.ofNullable(kwtLogisticsOrders)
|
|
|
+ .orElse(List.of()).stream()
|
|
|
+ .collect(Collectors.toMap(KwtLogisticsOrder::getId, Function.identity(), (k1, k2) -> k1));
|
|
|
}
|
|
|
Map<String, KwtLogisticsOrderAddress> logisticsOrderAddressMap = Maps.newHashMap();
|
|
|
if (CollectionUtils.isNotEmpty(logisticsOrderAddress)){
|
|
|
@@ -1124,9 +1130,10 @@ public class kwfTruckTraceService {
|
|
|
Map<Long, RTruckVo> finalTruckIdMap = truckIdMap;
|
|
|
Map<String, SysDictResDto> finalEnergyTypeMap = energyTypeMap;
|
|
|
Map<String, KwtLogisticsOrderAddress> finalLogisticsOrderAddressMap = logisticsOrderAddressMap;
|
|
|
+ Map<Long, KwtLogisticsOrder> finalLogisticsOrderMap = logisticsOrderMap;
|
|
|
List<MapVehicleVo> result = filteredOrders.stream()
|
|
|
.map(order -> buildMapVehicleVo(order, wOrderIdSubtaskMap, finalUnitMap, finalGoodsMap,
|
|
|
- locationInfoMap, exceptionCountMap, finalTruckIdMap, finalEnergyTypeMap, finalLogisticsOrderAddressMap))
|
|
|
+ locationInfoMap, exceptionCountMap, finalTruckIdMap, finalEnergyTypeMap, finalLogisticsOrderAddressMap, finalLogisticsOrderMap))
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
// 根据排序类型进行排序
|
|
|
@@ -1173,7 +1180,7 @@ public class kwfTruckTraceService {
|
|
|
Wrappers.<KwtLogisticsOrderUnit>lambdaQuery()
|
|
|
.eq(KwtLogisticsOrderUnit::getDelFlag, 0)
|
|
|
.in(KwtLogisticsOrderUnit::getEntId, allEnt)
|
|
|
- .in(KwtLogisticsOrderUnit::getUnitType, Arrays.asList(1, 2)));
|
|
|
+ .in(KwtLogisticsOrderUnit::getUnitType, Arrays.asList(1, 2,3)));
|
|
|
if (CollectionUtils.isEmpty(allUnits)) {
|
|
|
return Set.of();
|
|
|
}
|
|
|
@@ -1373,7 +1380,8 @@ public class kwfTruckTraceService {
|
|
|
Map<String, Integer> exceptionCountMap,
|
|
|
Map<Long, RTruckVo> truckIdMap,
|
|
|
Map<String, SysDictResDto> energyTypeMap,
|
|
|
- Map<String, KwtLogisticsOrderAddress> logisticsOrderAddressMap) {
|
|
|
+ Map<String, KwtLogisticsOrderAddress> logisticsOrderAddressMap,
|
|
|
+ Map<Long, KwtLogisticsOrder> logisticsOrderMap) {
|
|
|
MapVehicleVo vo = new MapVehicleVo();
|
|
|
|
|
|
// 车辆和司机信息
|
|
|
@@ -1391,7 +1399,8 @@ public class kwfTruckTraceService {
|
|
|
KwtWaybillOrderSubtask subtask = subtaskMap.get(order.getId());
|
|
|
if (subtask != null) {
|
|
|
vo.setLogisticOrderId(subtask.getLOrderId());
|
|
|
- vo.setLogisticOrderNo(String.valueOf(subtask.getLOrderId()));
|
|
|
+ KwtLogisticsOrder logisticsOrder = logisticsOrderMap.getOrDefault(subtask.getLOrderId(), new KwtLogisticsOrder());
|
|
|
+ vo.setLogisticOrderNo(logisticsOrder.getLOrderNo());
|
|
|
vo.setLoadAmount(subtask.getLoadAmount());
|
|
|
vo.setEntrustAmount(subtask.getEntrustAmount());
|
|
|
vo.setUnit(subtask.getUnit());
|
|
|
@@ -1502,11 +1511,20 @@ public class kwfTruckTraceService {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 生成车辆轨迹数据
|
|
|
+ * 生成车辆轨迹数据(异步执行)
|
|
|
* @param req 生成轨迹请求参数
|
|
|
*/
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
+ // @Async("traceTaskExecutor")
|
|
|
public void generateTrace(GenerateTraceReq req) {
|
|
|
+ generateTraceInternal(req);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成车辆轨迹数据(内部方法,包含事务)
|
|
|
+ * @param req 生成轨迹请求参数
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void generateTraceInternal(GenerateTraceReq req) {
|
|
|
log.info("生成车辆轨迹参数:{}", JSON.toJSONString(req));
|
|
|
LocalDate date = LocalDate.parse(req.getDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
LocalDateTime startDateTime = date.atStartOfDay();
|