|
@@ -150,7 +150,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
private final KwtLogisticsOrderGoodsRepository kwtLogisticsOrderGoodsRepository;
|
|
private final KwtLogisticsOrderGoodsRepository kwtLogisticsOrderGoodsRepository;
|
|
|
private final KwtWaybillOrderSubtaskRepository kwtWaybillOrderSubtaskRepository;
|
|
private final KwtWaybillOrderSubtaskRepository kwtWaybillOrderSubtaskRepository;
|
|
|
private final KwtLogisticsOrderRepository kwtLogisticsOrderRepository;
|
|
private final KwtLogisticsOrderRepository kwtLogisticsOrderRepository;
|
|
|
- private final KwtWaybillOrderTicketRepository kwtWaybillOrderTicketRepository;
|
|
|
|
|
|
|
+ private final KwtWaybillOrderTicketRepository kwtWaybillOrderTicketRepository;
|
|
|
private final KwtWaybillOrderNodeRepository kwtWaybillOrderNodeRepository;
|
|
private final KwtWaybillOrderNodeRepository kwtWaybillOrderNodeRepository;
|
|
|
private final VehicleTraceClient vehicleTraceClient;
|
|
private final VehicleTraceClient vehicleTraceClient;
|
|
|
@Resource
|
|
@Resource
|
|
@@ -183,6 +183,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
private KwtLogisticsOrderAddressRepository kwtLogisticsOrderAddressRepository;
|
|
private KwtLogisticsOrderAddressRepository kwtLogisticsOrderAddressRepository;
|
|
|
// 定义超时时间常量
|
|
// 定义超时时间常量
|
|
|
private static final long PARALLEL_TIMEOUT_SECONDS = 60;
|
|
private static final long PARALLEL_TIMEOUT_SECONDS = 60;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* @param params 请求参数
|
|
* @param params 请求参数
|
|
|
* @desc 统计
|
|
* @desc 统计
|
|
@@ -452,10 +453,10 @@ public class KwtWaybillOrderV1Service {
|
|
|
waybillOrder.setSendCarWeigh(NumberUtils.parseBigDecimal(waybillOrder.getEntrustAmount()));
|
|
waybillOrder.setSendCarWeigh(NumberUtils.parseBigDecimal(waybillOrder.getEntrustAmount()));
|
|
|
waybillOrder.setDefectiveWeigh(NumberUtils.parseBigDecimal(waybillOrder.getDeficitAmount()));
|
|
waybillOrder.setDefectiveWeigh(NumberUtils.parseBigDecimal(waybillOrder.getDeficitAmount()));
|
|
|
waybillOrder.setDeduct(deficitPrice(NumberUtils.parseBigDecimal(waybillOrder.getLoadAmount(), null),
|
|
waybillOrder.setDeduct(deficitPrice(NumberUtils.parseBigDecimal(waybillOrder.getLoadAmount(), null),
|
|
|
- NumberUtils.parseBigDecimal(waybillOrder.getDeficitAmount(), null),
|
|
|
|
|
- waybillOrder.getLoss(),
|
|
|
|
|
- waybillOrder.getLossLabel(),
|
|
|
|
|
- waybillOrder.getGoodsPrice()));
|
|
|
|
|
|
|
+ NumberUtils.parseBigDecimal(waybillOrder.getDeficitAmount(), null),
|
|
|
|
|
+ waybillOrder.getLoss(),
|
|
|
|
|
+ waybillOrder.getLossLabel(),
|
|
|
|
|
+ waybillOrder.getGoodsPrice()));
|
|
|
}
|
|
}
|
|
|
return PageHelperUtil.getPageResult(new PageInfo<>(list));
|
|
return PageHelperUtil.getPageResult(new PageInfo<>(list));
|
|
|
}
|
|
}
|
|
@@ -2227,13 +2228,13 @@ public class KwtWaybillOrderV1Service {
|
|
|
//从中台查询轨迹信息
|
|
//从中台查询轨迹信息
|
|
|
VehicleDataDTO vehicleDataDTO = new VehicleDataDTO();
|
|
VehicleDataDTO vehicleDataDTO = new VehicleDataDTO();
|
|
|
vehicleDataDTO.setWOrderNo(waybillOrder.getWOrderNo());
|
|
vehicleDataDTO.setWOrderNo(waybillOrder.getWOrderNo());
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
try {
|
|
try {
|
|
|
// 使用 Feign 调用查询车辆轨迹列表
|
|
// 使用 Feign 调用查询车辆轨迹列表
|
|
|
com.sckw.transport.api.model.dto.VehicleDataDTO vehicleDataDTO1 = new com.sckw.transport.api.model.dto.VehicleDataDTO();
|
|
com.sckw.transport.api.model.dto.VehicleDataDTO vehicleDataDTO1 = new com.sckw.transport.api.model.dto.VehicleDataDTO();
|
|
|
vehicleDataDTO.setWOrderNo(waybillOrder.getWOrderNo());
|
|
vehicleDataDTO.setWOrderNo(waybillOrder.getWOrderNo());
|
|
|
BaseIotResult<List<com.sckw.transport.api.model.dto.VehicleReturnData>> result = vehicleTraceClient.queryVehicleDataList(vehicleDataDTO1);
|
|
BaseIotResult<List<com.sckw.transport.api.model.dto.VehicleReturnData>> result = vehicleTraceClient.queryVehicleDataList(vehicleDataDTO1);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (result != null && org.apache.commons.lang3.StringUtils.equals(result.getCode(), "0") && result.getData() != null) {
|
|
if (result != null && org.apache.commons.lang3.StringUtils.equals(result.getCode(), "0") && result.getData() != null) {
|
|
|
List<com.sckw.transport.api.model.dto.VehicleReturnData> vehicleReturn = result.getData();
|
|
List<com.sckw.transport.api.model.dto.VehicleReturnData> vehicleReturn = result.getData();
|
|
|
List<VehicleRouteData> vehicleReturnData = vehicleReturn.stream().map(x->{
|
|
List<VehicleRouteData> vehicleReturnData = vehicleReturn.stream().map(x->{
|
|
@@ -3003,21 +3004,21 @@ public class KwtWaybillOrderV1Service {
|
|
|
Long entId =LoginUserHolder.getEntId();
|
|
Long entId =LoginUserHolder.getEntId();
|
|
|
//entIds.add(entId);
|
|
//entIds.add(entId);
|
|
|
log.debug("获取企业ID集合: {}", entIds);
|
|
log.debug("获取企业ID集合: {}", entIds);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
CompletableFuture<Set<Long>> logOrderIdsFuture = CompletableFuture.supplyAsync(() -> {
|
|
CompletableFuture<Set<Long>> logOrderIdsFuture = CompletableFuture.supplyAsync(() -> {
|
|
|
log.debug("开始查询物流订单ID,参数: {}, 企业ID: {}", JSON.toJSONString(req), entIds);
|
|
log.debug("开始查询物流订单ID,参数: {}, 企业ID: {}", JSON.toJSONString(req), entIds);
|
|
|
Set<Long> result = getLogOrderIds(req, entIds,entId);
|
|
Set<Long> result = getLogOrderIds(req, entIds,entId);
|
|
|
log.debug("物流订单ID查询完成,结果数量: {}", result.size());
|
|
log.debug("物流订单ID查询完成,结果数量: {}", result.size());
|
|
|
return result;
|
|
return result;
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
CompletableFuture<Set<Long>> billOrderIdsFuture = CompletableFuture.supplyAsync(() -> {
|
|
CompletableFuture<Set<Long>> billOrderIdsFuture = CompletableFuture.supplyAsync(() -> {
|
|
|
log.debug("开始查询运单ID,参数: {}", req);
|
|
log.debug("开始查询运单ID,参数: {}", req);
|
|
|
Set<Long> result = getBillOrderIds(req);
|
|
Set<Long> result = getBillOrderIds(req);
|
|
|
log.debug("运单ID查询完成,结果数量: {}", result.size());
|
|
log.debug("运单ID查询完成,结果数量: {}", result.size());
|
|
|
return result;
|
|
return result;
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
CompletableFuture<Map<String, Map<String, String>>> dictFuture = CompletableFuture.supplyAsync(() -> {
|
|
CompletableFuture<Map<String, Map<String, String>>> dictFuture = CompletableFuture.supplyAsync(() -> {
|
|
|
log.debug("开始查询字典数据");
|
|
log.debug("开始查询字典数据");
|
|
|
Map<String, Map<String, String>> result = queryDictionaryData();
|
|
Map<String, Map<String, String>> result = queryDictionaryData();
|
|
@@ -3049,7 +3050,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 分页查询子运单信息
|
|
// 分页查询子运单信息
|
|
|
- log.info("开始分页查询子运单信息,物流订单ID数量: {}, 运单ID数量: {}, 状态: {}",
|
|
|
|
|
|
|
+ log.info("开始分页查询子运单信息,物流订单ID数量: {}, 运单ID数量: {}, 状态: {}",
|
|
|
logOrderIds.size(), billOrderIds.size(), status);
|
|
logOrderIds.size(), billOrderIds.size(), status);
|
|
|
IPage<KwtWaybillOrderSubtask> page = waybillOrderSubtaskRepository.queryByPage(
|
|
IPage<KwtWaybillOrderSubtask> page = waybillOrderSubtaskRepository.queryByPage(
|
|
|
logOrderIds, billOrderIds, status, req.getPageNum(), req.getPageSize());
|
|
logOrderIds, billOrderIds, status, req.getPageNum(), req.getPageSize());
|
|
@@ -3078,7 +3079,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
log.debug("开始查询物流订单,物流订单ID数量: {}", orderIds.getLogicsOrderIds().size());
|
|
log.debug("开始查询物流订单,物流订单ID数量: {}", orderIds.getLogicsOrderIds().size());
|
|
|
- CompletableFuture<List<KwtLogisticsOrder>> logisticsOrderFuture = CompletableFuture.supplyAsync(() ->
|
|
|
|
|
|
|
+ CompletableFuture<List<KwtLogisticsOrder>> logisticsOrderFuture = CompletableFuture.supplyAsync(() ->
|
|
|
logisticsOrderRepository.queryByLogOrderIds(orderIds.getLogicsOrderIds()), traceTaskExecutor)
|
|
logisticsOrderRepository.queryByLogOrderIds(orderIds.getLogicsOrderIds()), traceTaskExecutor)
|
|
|
.exceptionally(ex -> {
|
|
.exceptionally(ex -> {
|
|
|
log.error("查询物流订单失败", ex);
|
|
log.error("查询物流订单失败", ex);
|
|
@@ -3143,8 +3144,8 @@ public class KwtWaybillOrderV1Service {
|
|
|
log.debug("开始查询贸易合同商品");
|
|
log.debug("开始查询贸易合同商品");
|
|
|
CompletableFuture<List<TradeContractGoodsDto>> contractGoodsFuture =
|
|
CompletableFuture<List<TradeContractGoodsDto>> contractGoodsFuture =
|
|
|
tradeOrderContractFuture.thenCombine(goodsIdsFuture, (contracts, goodsIds) -> {
|
|
tradeOrderContractFuture.thenCombine(goodsIdsFuture, (contracts, goodsIds) -> {
|
|
|
- log.debug("贸易合同和商品ID准备完成,合同数量: {}, 商品ID数量: {}",
|
|
|
|
|
- Optional.ofNullable(contracts).map(List::size).orElse(0),
|
|
|
|
|
|
|
+ log.debug("贸易合同和商品ID准备完成,合同数量: {}, 商品ID数量: {}",
|
|
|
|
|
+ Optional.ofNullable(contracts).map(List::size).orElse(0),
|
|
|
goodsIds.size());
|
|
goodsIds.size());
|
|
|
Set<Long> contractIds = Optional.ofNullable(contracts)
|
|
Set<Long> contractIds = Optional.ofNullable(contracts)
|
|
|
.orElse(List.of())
|
|
.orElse(List.of())
|
|
@@ -3467,6 +3468,20 @@ public class KwtWaybillOrderV1Service {
|
|
|
orderContracGoodstoMap);
|
|
orderContracGoodstoMap);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public WaybillOrderSaleVo saleSum() {
|
|
|
|
|
+ //石灰石
|
|
|
|
|
+ WaybillOrderSaleDto waybillOrderSaleDto = waybillOrderV1Dao.saleSum(List.of("002", "0001", "0002", "0003", "0004", "0005", "0006"));
|
|
|
|
|
+ //氧化钙
|
|
|
|
|
+ WaybillOrderSaleDto waybillOrderSaleDto2 = waybillOrderV1Dao.saleSum(List.of("003", "0007", "0008", "0009"));
|
|
|
|
|
+ WaybillOrderSaleVo waybillOrderSaleVo = new WaybillOrderSaleVo();
|
|
|
|
|
+ waybillOrderSaleVo.setShsChl(waybillOrderSaleDto.getChl());
|
|
|
|
|
+ waybillOrderSaleVo.setShsXsl(waybillOrderSaleDto.getXsl());
|
|
|
|
|
+ waybillOrderSaleVo.setYhgChl(waybillOrderSaleDto2.getChl());
|
|
|
|
|
+ waybillOrderSaleVo.setYhgXsl(waybillOrderSaleDto2.getXsl());
|
|
|
|
|
+
|
|
|
|
|
+ return waybillOrderSaleVo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 订单ID集合容器
|
|
* 订单ID集合容器
|
|
|
*/
|
|
*/
|
|
@@ -3558,7 +3573,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
}
|
|
}
|
|
|
return subBillIdAddressIdKeyAndOrderTrackMap;
|
|
return subBillIdAddressIdKeyAndOrderTrackMap;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 批量查询运单的离场节点
|
|
* 批量查询运单的离场节点
|
|
|
* @param wOrderIds 运单ID集合
|
|
* @param wOrderIds 运单ID集合
|
|
@@ -3567,11 +3582,11 @@ public class KwtWaybillOrderV1Service {
|
|
|
@NotNull
|
|
@NotNull
|
|
|
private Map<Long, KwtWaybillOrderNode> getOffsiteNodeMap(Set<Long> wOrderIds) {
|
|
private Map<Long, KwtWaybillOrderNode> getOffsiteNodeMap(Set<Long> wOrderIds) {
|
|
|
Map<Long, KwtWaybillOrderNode> offsiteNodeMap = Maps.newHashMap();
|
|
Map<Long, KwtWaybillOrderNode> offsiteNodeMap = Maps.newHashMap();
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (CollectionUtils.isEmpty(wOrderIds)) {
|
|
if (CollectionUtils.isEmpty(wOrderIds)) {
|
|
|
return offsiteNodeMap;
|
|
return offsiteNodeMap;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 查询所有运单的节点数据,过滤出状态为“已离场”的节点
|
|
// 查询所有运单的节点数据,过滤出状态为“已离场”的节点
|
|
|
List<KwtWaybillOrderNode> nodes = kwtWaybillOrderNodeRepository.list(
|
|
List<KwtWaybillOrderNode> nodes = kwtWaybillOrderNodeRepository.list(
|
|
|
Wrappers.<KwtWaybillOrderNode>lambdaQuery()
|
|
Wrappers.<KwtWaybillOrderNode>lambdaQuery()
|
|
@@ -3579,18 +3594,18 @@ public class KwtWaybillOrderV1Service {
|
|
|
.eq(KwtWaybillOrderNode::getOrderStatus, CarWaybillV1Enum.WAIT_LOADING.getCode())
|
|
.eq(KwtWaybillOrderNode::getOrderStatus, CarWaybillV1Enum.WAIT_LOADING.getCode())
|
|
|
.orderByAsc(KwtWaybillOrderNode::getCreateTime)
|
|
.orderByAsc(KwtWaybillOrderNode::getCreateTime)
|
|
|
);
|
|
);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (CollectionUtils.isNotEmpty(nodes)) {
|
|
if (CollectionUtils.isNotEmpty(nodes)) {
|
|
|
// 每个运单只取最后一条离场记录
|
|
// 每个运单只取最后一条离场记录
|
|
|
offsiteNodeMap = nodes.stream()
|
|
offsiteNodeMap = nodes.stream()
|
|
|
.collect(Collectors.toMap(
|
|
.collect(Collectors.toMap(
|
|
|
KwtWaybillOrderNode::getWOrderId,
|
|
KwtWaybillOrderNode::getWOrderId,
|
|
|
Function.identity(),
|
|
Function.identity(),
|
|
|
- (existing, replacement) ->
|
|
|
|
|
|
|
+ (existing, replacement) ->
|
|
|
existing.getCreateTime().before(replacement.getCreateTime()) ? existing : replacement
|
|
existing.getCreateTime().before(replacement.getCreateTime()) ? existing : replacement
|
|
|
));
|
|
));
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
return offsiteNodeMap;
|
|
return offsiteNodeMap;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -3715,16 +3730,16 @@ public class KwtWaybillOrderV1Service {
|
|
|
*/
|
|
*/
|
|
|
private Set<Long> applyDataPermissionFilterToLogOrderIds(Set<Long> logOrderIds) {
|
|
private Set<Long> applyDataPermissionFilterToLogOrderIds(Set<Long> logOrderIds) {
|
|
|
log.debug("开始应用数据权限过滤,原始物流订单ID数量: {}", CollectionUtils.isEmpty(logOrderIds) ? 0 : logOrderIds.size());
|
|
log.debug("开始应用数据权限过滤,原始物流订单ID数量: {}", CollectionUtils.isEmpty(logOrderIds) ? 0 : logOrderIds.size());
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 1. 获取当前用户的数据权限配置
|
|
// 1. 获取当前用户的数据权限配置
|
|
|
DataPermissionDTO perm = fetchDataPermissionForCurrentUser();
|
|
DataPermissionDTO perm = fetchDataPermissionForCurrentUser();
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 如果无需过滤或权限配置为空,直接返回原始ID集合
|
|
// 如果无需过滤或权限配置为空,直接返回原始ID集合
|
|
|
if (perm == null || !perm.needFilter()) {
|
|
if (perm == null || !perm.needFilter()) {
|
|
|
log.debug("无需进行数据权限过滤,直接返回原始ID集合");
|
|
log.debug("无需进行数据权限过滤,直接返回原始ID集合");
|
|
|
return logOrderIds;
|
|
return logOrderIds;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 如果原始ID集合为空,直接返回
|
|
// 如果原始ID集合为空,直接返回
|
|
|
if (CollectionUtils.isEmpty(logOrderIds)) {
|
|
if (CollectionUtils.isEmpty(logOrderIds)) {
|
|
|
log.debug("原始物流订单ID集合为空,无需过滤");
|
|
log.debug("原始物流订单ID集合为空,无需过滤");
|
|
@@ -3736,25 +3751,25 @@ public class KwtWaybillOrderV1Service {
|
|
|
// 2. 处理企业维度的数据权限
|
|
// 2. 处理企业维度的数据权限
|
|
|
if (!perm.isAllVisible()) {
|
|
if (!perm.isAllVisible()) {
|
|
|
log.debug("非全量可见模式,开始执行企业维度权限过滤");
|
|
log.debug("非全量可见模式,开始执行企业维度权限过滤");
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 如果可见企业ID列表为空,说明该企业维度下无权限,返回空集合
|
|
// 如果可见企业ID列表为空,说明该企业维度下无权限,返回空集合
|
|
|
if (CollectionUtils.isEmpty(perm.getVisibleEntIds())) {
|
|
if (CollectionUtils.isEmpty(perm.getVisibleEntIds())) {
|
|
|
log.warn("当前用户可见企业ID列表为空,过滤结果为空");
|
|
log.warn("当前用户可见企业ID列表为空,过滤结果为空");
|
|
|
return Sets.newHashSet();
|
|
return Sets.newHashSet();
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 查询可见企业ID关联的所有物流订单单位信息
|
|
// 查询可见企业ID关联的所有物流订单单位信息
|
|
|
List<KwtLogisticsOrderUnit> units =
|
|
List<KwtLogisticsOrderUnit> units =
|
|
|
kwtLogisticsOrderUnitRepository.queryByEntIds(new HashSet<>(perm.getVisibleEntIds()));
|
|
kwtLogisticsOrderUnitRepository.queryByEntIds(new HashSet<>(perm.getVisibleEntIds()));
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 提取这些单位关联的物流订单ID
|
|
// 提取这些单位关联的物流订单ID
|
|
|
Set<Long> entScopeLogOrderIds = units.stream()
|
|
Set<Long> entScopeLogOrderIds = units.stream()
|
|
|
.map(KwtLogisticsOrderUnit::getLOrderId)
|
|
.map(KwtLogisticsOrderUnit::getLOrderId)
|
|
|
.filter(Objects::nonNull)
|
|
.filter(Objects::nonNull)
|
|
|
.collect(Collectors.toSet());
|
|
.collect(Collectors.toSet());
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
log.debug("企业维度过滤:可见企业关联的物流订单ID数量: {}", entScopeLogOrderIds.size());
|
|
log.debug("企业维度过滤:可见企业关联的物流订单ID数量: {}", entScopeLogOrderIds.size());
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 取交集:只保留既在原始列表中,又在可见企业关联列表中的ID
|
|
// 取交集:只保留既在原始列表中,又在可见企业关联列表中的ID
|
|
|
result.retainAll(entScopeLogOrderIds);
|
|
result.retainAll(entScopeLogOrderIds);
|
|
|
log.debug("企业维度过滤后剩余ID数量: {}", result.size());
|
|
log.debug("企业维度过滤后剩余ID数量: {}", result.size());
|
|
@@ -3808,7 +3823,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
.map(KwtLogisticsOrder::getTOrderId)
|
|
.map(KwtLogisticsOrder::getTOrderId)
|
|
|
.filter(Objects::nonNull)
|
|
.filter(Objects::nonNull)
|
|
|
.collect(Collectors.toSet());
|
|
.collect(Collectors.toSet());
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (CollectionUtils.isEmpty(tradeIds)) {
|
|
if (CollectionUtils.isEmpty(tradeIds)) {
|
|
|
log.debug("物流订单中未关联有效的贸易订单ID,返回空集合");
|
|
log.debug("物流订单中未关联有效的贸易订单ID,返回空集合");
|
|
|
return Sets.newHashSet();
|
|
return Sets.newHashSet();
|
|
@@ -3860,7 +3875,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
.filter(order -> order.getTOrderId() != null && allowedTradeIds.contains(order.getTOrderId()))
|
|
.filter(order -> order.getTOrderId() != null && allowedTradeIds.contains(order.getTOrderId()))
|
|
|
.map(KwtLogisticsOrder::getId)
|
|
.map(KwtLogisticsOrder::getId)
|
|
|
.collect(Collectors.toSet());
|
|
.collect(Collectors.toSet());
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
log.debug("个人数据权限过滤完成,最终保留物流订单ID数量: {}", finalResult.size());
|
|
log.debug("个人数据权限过滤完成,最终保留物流订单ID数量: {}", finalResult.size());
|
|
|
return finalResult;
|
|
return finalResult;
|
|
|
}
|
|
}
|
|
@@ -3963,7 +3978,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
* 对物流订单ID集合进行交集操作
|
|
* 对物流订单ID集合进行交集操作
|
|
|
* 如果原集合为空,则添加新集合的所有元素
|
|
* 如果原集合为空,则添加新集合的所有元素
|
|
|
* 如果原集合不为空,则保留原集合与新集合的交集
|
|
* 如果原集合不为空,则保留原集合与新集合的交集
|
|
|
- *
|
|
|
|
|
|
|
+ *
|
|
|
* @param logOrderIds 原物流订单ID集合
|
|
* @param logOrderIds 原物流订单ID集合
|
|
|
* @param newOrderIds 新物流订单ID集合
|
|
* @param newOrderIds 新物流订单ID集合
|
|
|
*/
|
|
*/
|
|
@@ -4159,13 +4174,13 @@ public class KwtWaybillOrderV1Service {
|
|
|
waybillOrderNodeMap.getOrDefault(record.getWOrderId() + "-" + CarWaybillV1Enum.COMPLETION_LOADING.getCode(),
|
|
waybillOrderNodeMap.getOrDefault(record.getWOrderId() + "-" + CarWaybillV1Enum.COMPLETION_LOADING.getCode(),
|
|
|
new KwtWaybillOrderNode());
|
|
new KwtWaybillOrderNode());
|
|
|
waybillOrderResp.setLoadingTime(DateUtils.format(loadTrack.getCreateTime(),DateUtils.DATE_TIME_PATTERN));
|
|
waybillOrderResp.setLoadingTime(DateUtils.format(loadTrack.getCreateTime(),DateUtils.DATE_TIME_PATTERN));
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 从节点表中获取离场时间
|
|
// 从节点表中获取离场时间
|
|
|
KwtWaybillOrderNode offsiteNode = wOrderIdAndOffsiteNodeMap.get(record.getWOrderId());
|
|
KwtWaybillOrderNode offsiteNode = wOrderIdAndOffsiteNodeMap.get(record.getWOrderId());
|
|
|
if (offsiteNode != null) {
|
|
if (offsiteNode != null) {
|
|
|
waybillOrderResp.setOffsiteTime(DateUtils.format(offsiteNode.getCreateTime(), DateUtils.DATE_TIME_PATTERN));
|
|
waybillOrderResp.setOffsiteTime(DateUtils.format(offsiteNode.getCreateTime(), DateUtils.DATE_TIME_PATTERN));
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
waybillOrderResp.setUnloadingTime(DateUtils.format(unloadTrack.getCreateTime(),DateUtils.DATE_TIME_PATTERN));
|
|
waybillOrderResp.setUnloadingTime(DateUtils.format(unloadTrack.getCreateTime(),DateUtils.DATE_TIME_PATTERN));
|
|
|
if (Objects.equals(record.getStatus(), CarWaybillV1Enum.COMPLETED.getCode())){
|
|
if (Objects.equals(record.getStatus(), CarWaybillV1Enum.COMPLETED.getCode())){
|
|
|
waybillOrderResp.setCompleteTime(DateUtils.format(record.getUpdateTime(),DateUtils.DATE_TIME_PATTERN));
|
|
waybillOrderResp.setCompleteTime(DateUtils.format(record.getUpdateTime(),DateUtils.DATE_TIME_PATTERN));
|
|
@@ -4299,9 +4314,9 @@ public class KwtWaybillOrderV1Service {
|
|
|
log.debug("所有并行查询完成");
|
|
log.debug("所有并行查询完成");
|
|
|
|
|
|
|
|
// 获取查询结果
|
|
// 获取查询结果
|
|
|
- return buildWaybillOrderDetailResp(billOrder, subtask, logOrder, truckFuture.join(),
|
|
|
|
|
- fleetFuture.join(), addressFuture.join(), ticketFuture.join(), userFuture.join(),
|
|
|
|
|
- goodsFuture.join(), orderDetailFuture.join(), unitFuture.join(),
|
|
|
|
|
|
|
+ return buildWaybillOrderDetailResp(billOrder, subtask, logOrder, truckFuture.join(),
|
|
|
|
|
+ fleetFuture.join(), addressFuture.join(), ticketFuture.join(), userFuture.join(),
|
|
|
|
|
+ goodsFuture.join(), orderDetailFuture.join(), unitFuture.join(),
|
|
|
nodeFuture.join(), waybillSubtaskFuture.join(),contractFuture.join());
|
|
nodeFuture.join(), waybillSubtaskFuture.join(),contractFuture.join());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -4387,10 +4402,10 @@ public class KwtWaybillOrderV1Service {
|
|
|
/**
|
|
/**
|
|
|
* 构建运单详情响应对象
|
|
* 构建运单详情响应对象
|
|
|
*/
|
|
*/
|
|
|
- private WaybillOrderDetailResp buildWaybillOrderDetailResp(KwtWaybillOrder billOrder,
|
|
|
|
|
- KwtWaybillOrderSubtask subtask,
|
|
|
|
|
|
|
+ private WaybillOrderDetailResp buildWaybillOrderDetailResp(KwtWaybillOrder billOrder,
|
|
|
|
|
+ KwtWaybillOrderSubtask subtask,
|
|
|
KwtLogisticsOrder logOrder,
|
|
KwtLogisticsOrder logOrder,
|
|
|
- RTruckVo truck,
|
|
|
|
|
|
|
+ RTruckVo truck,
|
|
|
RFleetVo fleet,
|
|
RFleetVo fleet,
|
|
|
List<KwtLogisticsOrderAddress> kwtWaybillOrderAddresses,
|
|
List<KwtLogisticsOrderAddress> kwtWaybillOrderAddresses,
|
|
|
List<KwtWaybillOrderTicket> orderTicketList,
|
|
List<KwtWaybillOrderTicket> orderTicketList,
|
|
@@ -4460,7 +4475,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
* 获取合同采购单位信息
|
|
* 获取合同采购单位信息
|
|
|
*/
|
|
*/
|
|
|
private List<TradeContractUnitDto> getTradeContractUnits(OrderDetailVo orderDetailVo) {
|
|
private List<TradeContractUnitDto> getTradeContractUnits(OrderDetailVo orderDetailVo) {
|
|
|
- if (Objects.nonNull(orderDetailVo) && Objects.nonNull(orderDetailVo.getContractInfo())
|
|
|
|
|
|
|
+ if (Objects.nonNull(orderDetailVo) && Objects.nonNull(orderDetailVo.getContractInfo())
|
|
|
&& Objects.nonNull(orderDetailVo.getContractInfo().getContractId())) {
|
|
&& Objects.nonNull(orderDetailVo.getContractInfo().getContractId())) {
|
|
|
log.debug("查询合同单位信息,合同ID: {}", orderDetailVo.getContractInfo().getContractId());
|
|
log.debug("查询合同单位信息,合同ID: {}", orderDetailVo.getContractInfo().getContractId());
|
|
|
return remoteContractService.queryContractUnitByContractId(
|
|
return remoteContractService.queryContractUnitByContractId(
|
|
@@ -4478,7 +4493,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
.filter(Objects::nonNull)
|
|
.filter(Objects::nonNull)
|
|
|
.collect(Collectors.toMap(
|
|
.collect(Collectors.toMap(
|
|
|
x -> x.getLOrderId() + "-" + x.getAddressType(),
|
|
x -> x.getLOrderId() + "-" + x.getAddressType(),
|
|
|
- Function.identity(),
|
|
|
|
|
|
|
+ Function.identity(),
|
|
|
(x, y) -> x));
|
|
(x, y) -> x));
|
|
|
}
|
|
}
|
|
|
return Maps.newHashMap();
|
|
return Maps.newHashMap();
|
|
@@ -4493,7 +4508,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
.filter(Objects::nonNull)
|
|
.filter(Objects::nonNull)
|
|
|
.collect(Collectors.toMap(
|
|
.collect(Collectors.toMap(
|
|
|
x -> x.getLOrderId() + "-" + x.getUnitType(),
|
|
x -> x.getLOrderId() + "-" + x.getUnitType(),
|
|
|
- Function.identity(),
|
|
|
|
|
|
|
+ Function.identity(),
|
|
|
(x, y) -> x));
|
|
(x, y) -> x));
|
|
|
}
|
|
}
|
|
|
return Maps.newHashMap();
|
|
return Maps.newHashMap();
|
|
@@ -4505,7 +4520,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
private List<KwtWaybillOrderNode> processNodes(List<KwtWaybillOrderNode> nodes) {
|
|
private List<KwtWaybillOrderNode> processNodes(List<KwtWaybillOrderNode> nodes) {
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(nodes)) {
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(nodes)) {
|
|
|
return nodes.stream()
|
|
return nodes.stream()
|
|
|
- .filter(x -> Objects.nonNull(x) && Objects.nonNull(x.getWeighbridgeId()) &&
|
|
|
|
|
|
|
+ .filter(x -> Objects.nonNull(x) && Objects.nonNull(x.getWeighbridgeId()) &&
|
|
|
Objects.nonNull(x.getRemark()) && x.getRemark().contains("称重"))
|
|
Objects.nonNull(x.getRemark()) && x.getRemark().contains("称重"))
|
|
|
.sorted(Comparator.comparing(KwtWaybillOrderNode::getCreateTime))
|
|
.sorted(Comparator.comparing(KwtWaybillOrderNode::getCreateTime))
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
@@ -4539,7 +4554,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
.filter(Objects::nonNull)
|
|
.filter(Objects::nonNull)
|
|
|
.collect(Collectors.toMap(
|
|
.collect(Collectors.toMap(
|
|
|
ticket -> ticket.getWOrderId() + "-" + ticket.getType(),
|
|
ticket -> ticket.getWOrderId() + "-" + ticket.getType(),
|
|
|
- Function.identity(),
|
|
|
|
|
|
|
+ Function.identity(),
|
|
|
(x, y) -> x));
|
|
(x, y) -> x));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -4548,7 +4563,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 构建运单详情响应对象
|
|
* 构建运单详情响应对象
|
|
|
- *
|
|
|
|
|
|
|
+ *
|
|
|
* @param subtask 运单子任务信息
|
|
* @param subtask 运单子任务信息
|
|
|
* @param billOrder 运单主信息
|
|
* @param billOrder 运单主信息
|
|
|
* @param logOrder 物流订单信息
|
|
* @param logOrder 物流订单信息
|
|
@@ -5473,11 +5488,11 @@ public class KwtWaybillOrderV1Service {
|
|
|
*/
|
|
*/
|
|
|
public WaybillOrderNodeVo queryWaybillOrderNodeTimeline(WaybillOrderNodeReq req) {
|
|
public WaybillOrderNodeVo queryWaybillOrderNodeTimeline(WaybillOrderNodeReq req) {
|
|
|
log.info("查询运单节点轨迹,请求参数:{}", JSON.toJSONString(req));
|
|
log.info("查询运单节点轨迹,请求参数:{}", JSON.toJSONString(req));
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 查询节点轨迹数据
|
|
// 查询节点轨迹数据
|
|
|
List<KwtWaybillOrderNode> nodes = kwtWaybillOrderNodeRepository.queryNodesByOrderId(
|
|
List<KwtWaybillOrderNode> nodes = kwtWaybillOrderNodeRepository.queryNodesByOrderId(
|
|
|
req.getWOrderId(), req.getWSubtaskId());
|
|
req.getWOrderId(), req.getWSubtaskId());
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (CollectionUtils.isEmpty(nodes)) {
|
|
if (CollectionUtils.isEmpty(nodes)) {
|
|
|
return new WaybillOrderNodeVo();
|
|
return new WaybillOrderNodeVo();
|
|
|
}
|
|
}
|
|
@@ -5557,7 +5572,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
* 构建状态描述文本
|
|
* 构建状态描述文本
|
|
|
* 格式:车辆【川A5478C】司机【张三】装载货物【铁矿石】【参运】【28.70吨】
|
|
* 格式:车辆【川A5478C】司机【张三】装载货物【铁矿石】【参运】【28.70吨】
|
|
|
*/
|
|
*/
|
|
|
- private String buildStatusDescription(KwtWaybillOrderNode node,
|
|
|
|
|
|
|
+ private String buildStatusDescription(KwtWaybillOrderNode node,
|
|
|
KwtWaybillOrderSubtask subtask,
|
|
KwtWaybillOrderSubtask subtask,
|
|
|
Map<Long, KwtLogisticsOrderGoods> goodsMap,
|
|
Map<Long, KwtLogisticsOrderGoods> goodsMap,
|
|
|
Map<String, String> unitMap) {
|
|
Map<String, String> unitMap) {
|
|
@@ -5615,7 +5630,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
if (status == null || subtask == null) {
|
|
if (status == null || subtask == null) {
|
|
|
return "";
|
|
return "";
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 根据状态返回不同的重量
|
|
// 根据状态返回不同的重量
|
|
|
// CarWaybillV1Enum: 1-已接单, 5-到达装货点, 10-已装货, 15-已离场, 20-已卸货, 25-已完成, 30-审核驳回, 99-已取消
|
|
// CarWaybillV1Enum: 1-已接单, 5-到达装货点, 10-已装货, 15-已离场, 20-已卸货, 25-已完成, 30-审核驳回, 99-已取消
|
|
|
if (status.equals(CarWaybillV1Enum.WAIT_LOADING.getCode())) {
|
|
if (status.equals(CarWaybillV1Enum.WAIT_LOADING.getCode())) {
|
|
@@ -5628,7 +5643,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
// 20-已卸货-卸货显示实卸量
|
|
// 20-已卸货-卸货显示实卸量
|
|
|
return String.valueOf(subtask.getUnloadAmount());
|
|
return String.valueOf(subtask.getUnloadAmount());
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
return "";
|
|
return "";
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -5644,7 +5659,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
// 暂时返回经纬度格式
|
|
// 暂时返回经纬度格式
|
|
|
return String.format("经度:%s, 纬度:%s", lng, lat);
|
|
return String.format("经度:%s, 纬度:%s", lng, lat);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 根据运单号模糊查询运单ID和运单号列表
|
|
* 根据运单号模糊查询运单ID和运单号列表
|
|
|
*
|
|
*
|
|
@@ -5654,7 +5669,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
public List<WaybillOrderSimpleVo> queryWaybillOrderListByWOrderNo(String wOrderNo) {
|
|
public List<WaybillOrderSimpleVo> queryWaybillOrderListByWOrderNo(String wOrderNo) {
|
|
|
// 查询运单数据
|
|
// 查询运单数据
|
|
|
List<KwtWaybillOrder> waybillOrders = kwtWaybillOrderRepository.queryWaybillOrderListByWOrderNo(wOrderNo);
|
|
List<KwtWaybillOrder> waybillOrders = kwtWaybillOrderRepository.queryWaybillOrderListByWOrderNo(wOrderNo);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 转换为VO
|
|
// 转换为VO
|
|
|
return waybillOrders.stream()
|
|
return waybillOrders.stream()
|
|
|
.map(order -> {
|
|
.map(order -> {
|