|
|
@@ -51,6 +51,7 @@ import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.cloud.stream.function.StreamBridge;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -58,6 +59,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.ConcurrentHashMap;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -366,6 +368,40 @@ public class WaybillOrderService {
|
|
|
if (StringUtils.isBlank(param.getTruckNo())) {
|
|
|
return PageDataResult.empty(param.getPageNum(), param.getPageSize());
|
|
|
}
|
|
|
+ //构建查询条件
|
|
|
+ LambdaQueryWrapper<KwtWaybillOrder> queryWrapper = buildAndExecuteQuery(param);
|
|
|
+
|
|
|
+ //分页查询运单主数据
|
|
|
+ Page<KwtWaybillOrder> waybillOrderList = waybillOrderRepository.page(new Page<>(param.getPageNum(), param.getPageSize()), queryWrapper);
|
|
|
+ List<KwtWaybillOrder> records = waybillOrderList.getRecords();
|
|
|
+ if (CollectionUtils.isEmpty(records)) {
|
|
|
+ log.info("当前车辆辆的无物流运单,truckNo:{}", param.getTruckNo());
|
|
|
+ return PageDataResult.empty(param.getPageNum(), param.getPageSize());
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取运单关联数据并返回结果
|
|
|
+ List<WaybillOrderStatusResp> ordderList = getWaybillOrderRelevantData(param, records);
|
|
|
+ log.info("查询司机的物流运单成功!");
|
|
|
+ return PageDataResult.success(param.getPageNum(), param.getPageSize(), (long) ordderList.size(), ordderList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建查询条件并执行分页查询
|
|
|
+ */
|
|
|
+ private LambdaQueryWrapper<KwtWaybillOrder> buildAndExecuteQuery(WaybillOrderQueryParam param) {
|
|
|
+ //基础查询条件
|
|
|
+ LambdaQueryWrapper<KwtWaybillOrder> queryWrapper = buildBaseQueryWrapper(param);
|
|
|
+ //模糊查询条件
|
|
|
+ handleSearchKeyword(queryWrapper, param.getSearchKeyword(), param);
|
|
|
+ return queryWrapper;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建基础查询条件
|
|
|
+ * @param param
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static LambdaQueryWrapper<KwtWaybillOrder> buildBaseQueryWrapper(WaybillOrderQueryParam param) {
|
|
|
LambdaQueryWrapper<KwtWaybillOrder> queryWrapper = Wrappers.<KwtWaybillOrder>lambdaQuery()
|
|
|
.eq(KwtWaybillOrder::getEntId, param.getEntId())
|
|
|
.eq(KwtWaybillOrder::getTruckNo, param.getTruckNo())
|
|
|
@@ -382,31 +418,151 @@ public class WaybillOrderService {
|
|
|
//已完成
|
|
|
queryWrapper.in(KwtWaybillOrder::getStatus, COMPLETED);
|
|
|
}
|
|
|
+ return queryWrapper;
|
|
|
+ }
|
|
|
|
|
|
- //模糊查询
|
|
|
- String searchKeyword = param.getSearchKeyword();
|
|
|
- if (StringUtils.isNotBlank(searchKeyword)) {
|
|
|
- // 1. 先查询匹配的物流订单ID
|
|
|
- Set<Long> matchedOrderIds = findMatchedLogisticsOrderIds(searchKeyword);
|
|
|
+ /**
|
|
|
+ * 关键词模糊查询
|
|
|
+ */
|
|
|
+ private void handleSearchKeyword(LambdaQueryWrapper<KwtWaybillOrder> queryWrapper, String searchKeyword, WaybillOrderQueryParam param) {
|
|
|
+ if (StringUtils.isBlank(searchKeyword)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Set<Long> matchedWaybillOrderIds = findMatchedWaybillOrderIds(searchKeyword, param);
|
|
|
+ if (CollectionUtils.isEmpty(matchedWaybillOrderIds)) {
|
|
|
+ log.info("模糊查询无匹配结果,关键词:{},车牌号:{}", searchKeyword, param.getTruckNo());
|
|
|
+ // 设置一个不可能的条件,确保返回空结果
|
|
|
+ queryWrapper.eq(KwtWaybillOrder::getId, Global.MINUS_ONE);
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+ queryWrapper.in(KwtWaybillOrder::getId, matchedWaybillOrderIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询匹配的运单ID(以运单ID为主键)
|
|
|
+ */
|
|
|
+ private Set<Long> findMatchedWaybillOrderIds(String keyword, WaybillOrderQueryParam param) {
|
|
|
+ Set<Long> waybillOrderIds = ConcurrentHashMap.newKeySet();;
|
|
|
+ List<Runnable> searchTasks = Arrays.asList(
|
|
|
+ //1. 运单编号查询(主表字段,直接匹配)
|
|
|
+ () -> addMatchedIdsFromWaybillNo(keyword, param, waybillOrderIds),
|
|
|
+
|
|
|
+ // 2. 通过物流订单编号查询关联的运单
|
|
|
+ () -> addMatchedIdsFromLogisticsOrderNo(waybillOrderIds, keyword, param),
|
|
|
+
|
|
|
+ // 3. 通过托运单位查询关联的运单
|
|
|
+ () -> addMatchedIdsFromShipper(waybillOrderIds, keyword, param),
|
|
|
+
|
|
|
+ // 4. 通过货物名称查询关联的运单
|
|
|
+ () -> addMatchedIdsFromGoodsName(waybillOrderIds, keyword, param)
|
|
|
+ );
|
|
|
+ // 使用并行流执行查询任务
|
|
|
+ searchTasks.parallelStream().forEach(Runnable::run);
|
|
|
+ return waybillOrderIds;
|
|
|
+ }
|
|
|
|
|
|
- if (CollectionUtils.isEmpty(matchedOrderIds)) {
|
|
|
- // 如果没有匹配的,直接返回空分页
|
|
|
- return PageDataResult.empty(param.getPageNum(), param.getPageSize());
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 从运单编号查询匹配运单ID
|
|
|
+ * @param keyword
|
|
|
+ * @param param
|
|
|
+ * @param waybillOrderIds
|
|
|
+ */
|
|
|
+ private void addMatchedIdsFromWaybillNo(String keyword, WaybillOrderQueryParam param, Set<Long> waybillOrderIds) {
|
|
|
+ // 1. 运单编号查询(主表字段,直接匹配)
|
|
|
+ List<KwtWaybillOrder> waybillOrders = waybillOrderRepository.list(
|
|
|
+ Wrappers.<KwtWaybillOrder>lambdaQuery()
|
|
|
+ .like(KwtWaybillOrder::getWOrderNo, keyword)
|
|
|
+ .eq(KwtWaybillOrder::getEntId, param.getEntId())
|
|
|
+ .eq(KwtWaybillOrder::getTruckNo, param.getTruckNo())
|
|
|
+ .eq(KwtWaybillOrder::getDelFlag, 0)
|
|
|
+ );
|
|
|
+ waybillOrderIds.addAll(waybillOrders.stream()
|
|
|
+ .map(KwtWaybillOrder::getId)
|
|
|
+ .collect(Collectors.toList()));
|
|
|
+ }
|
|
|
|
|
|
- // 2. 在主查询中使用IN条件
|
|
|
- queryWrapper.in(KwtWaybillOrder::getLOrderId, matchedOrderIds);
|
|
|
+ /**
|
|
|
+ * 从物流订单编号查询运单ID
|
|
|
+ */
|
|
|
+ private void addMatchedIdsFromLogisticsOrderNo(Set<Long> waybillOrderIds, String keyword, WaybillOrderQueryParam param) {
|
|
|
+ // 2. 通过物流订单编号查询关联的运单
|
|
|
+ List<KwtLogisticsOrder> logisticsOrders = logisticsOrderRepository.list(
|
|
|
+ Wrappers.<KwtLogisticsOrder>lambdaQuery()
|
|
|
+ .like(KwtLogisticsOrder::getLOrderNo, keyword)
|
|
|
+ .eq(KwtLogisticsOrder::getDelFlag, 0)
|
|
|
+ );
|
|
|
+ if (CollectionUtils.isNotEmpty(logisticsOrders)) {
|
|
|
+ List<Long> matchedLogOrderIds = logisticsOrders.stream()
|
|
|
+ .map(KwtLogisticsOrder::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 查询这些物流订单对应的运单
|
|
|
+ List<KwtWaybillOrder> waybillsByLogOrder = waybillOrderRepository
|
|
|
+ .queryWaybillOrderByLogOrderIds(matchedLogOrderIds, param.getEntId(), param.getTruckNo());
|
|
|
+
|
|
|
+ waybillOrderIds.addAll(waybillsByLogOrder.stream()
|
|
|
+ .map(KwtWaybillOrder::getId)
|
|
|
+ .collect(Collectors.toList()));
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 从托运单位查询匹配运单ID
|
|
|
+ */
|
|
|
+ private void addMatchedIdsFromShipper(Set<Long> waybillOrderIds, String keyword, WaybillOrderQueryParam param) {
|
|
|
+ List<KwtLogisticsOrderUnit> orderUnits = logisticsOrderUnitRepository.list(
|
|
|
+ Wrappers.<KwtLogisticsOrderUnit>lambdaQuery()
|
|
|
+ .eq(KwtLogisticsOrderUnit::getUnitType, UnitTypeEnum.CONSIGN.getCode())
|
|
|
+ .like(KwtLogisticsOrderUnit::getFirmName, keyword)
|
|
|
+ .eq(KwtLogisticsOrderUnit::getDelFlag, 0)
|
|
|
+ );
|
|
|
+ if (CollectionUtils.isNotEmpty(orderUnits)) {
|
|
|
+ List<Long> matchedLogOrderIds = orderUnits.stream()
|
|
|
+ .map(KwtLogisticsOrderUnit::getLOrderId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 查询这些物流订单对应的运单
|
|
|
+ List<KwtWaybillOrder> waybillsByUnits = waybillOrderRepository
|
|
|
+ .queryWaybillOrderByLogOrderIds(matchedLogOrderIds, param.getEntId(), param.getTruckNo());
|
|
|
+
|
|
|
+ waybillOrderIds.addAll(waybillsByUnits.stream()
|
|
|
+ .map(KwtWaybillOrder::getId)
|
|
|
+ .collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- //当前车辆的运单
|
|
|
- Page<KwtWaybillOrder> waybillOrderList = waybillOrderRepository.page(new Page<>(param.getPageNum(), param.getPageSize()), queryWrapper);
|
|
|
- List<KwtWaybillOrder> records = waybillOrderList.getRecords();
|
|
|
- if (CollectionUtils.isEmpty(records)) {
|
|
|
- log.info("当前车辆辆的无物流运单,truckNo:{}", param.getTruckNo());
|
|
|
- return PageDataResult.empty(param.getPageNum(), param.getPageSize());
|
|
|
+ /**
|
|
|
+ * 从货物名称查询匹配运单ID
|
|
|
+ */
|
|
|
+ private void addMatchedIdsFromGoodsName(Set<Long> waybillOrderIds, String keyword, WaybillOrderQueryParam param) {
|
|
|
+ List<KwtLogisticsOrderGoods> orderGoods = logisticsOrderGoodsRepository.list(
|
|
|
+ Wrappers.<KwtLogisticsOrderGoods>lambdaQuery()
|
|
|
+ .like(KwtLogisticsOrderGoods::getGoodsName, keyword)
|
|
|
+ .eq(KwtLogisticsOrderGoods::getDelFlag, 0)
|
|
|
+ );
|
|
|
+ if (CollectionUtils.isNotEmpty(orderGoods)) {
|
|
|
+ List<Long> matchedLogOrderIds = orderGoods.stream()
|
|
|
+ .map(KwtLogisticsOrderGoods::getLOrderId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 查询这些物流订单对应的运单
|
|
|
+ List<KwtWaybillOrder> waybillsByGoods = waybillOrderRepository
|
|
|
+ .queryWaybillOrderByLogOrderIds(matchedLogOrderIds, param.getEntId(), param.getTruckNo());
|
|
|
+
|
|
|
+ waybillOrderIds.addAll(waybillsByGoods.stream()
|
|
|
+ .map(KwtWaybillOrder::getId)
|
|
|
+ .collect(Collectors.toList()));
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取运单关联数据
|
|
|
+ * @param param
|
|
|
+ * @param records
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<WaybillOrderStatusResp> getWaybillOrderRelevantData(WaybillOrderQueryParam param, List<KwtWaybillOrder> records) {
|
|
|
//物流运单id
|
|
|
List<Long> wbOrderIdList = records.stream().map(KwtWaybillOrder::getId)
|
|
|
.filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
@@ -480,61 +636,7 @@ public class WaybillOrderService {
|
|
|
return getWaybillOrderResp(billOrder, subtaskMap, logOrderMap, logOrderIdAndCirculateMap,
|
|
|
logOrderIdAndGoodsMap, logOrderIdAndUnitMap, logOrderIdAndAddressMap, ticketMap);
|
|
|
}).collect(Collectors.toList());
|
|
|
- log.info("查询司机的物流运单成功!");
|
|
|
- return PageDataResult.success(param.getPageNum(), param.getPageSize(), (long) ordderList.size(), ordderList);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 查询匹配的物流订单ID
|
|
|
- * @param keyword
|
|
|
- * @return
|
|
|
- */
|
|
|
- private Set<Long> findMatchedLogisticsOrderIds(String keyword) {
|
|
|
- Set<Long> orderIds = new HashSet<>();
|
|
|
-
|
|
|
- // 运单编号查询(主表)
|
|
|
- List<KwtWaybillOrder> waybillOrders = waybillOrderRepository.list(
|
|
|
- Wrappers.<KwtWaybillOrder>lambdaQuery()
|
|
|
- .like(KwtWaybillOrder::getWOrderNo, keyword)
|
|
|
- .eq(KwtWaybillOrder::getDelFlag, 0)
|
|
|
- );
|
|
|
- orderIds.addAll(waybillOrders.stream()
|
|
|
- .map(KwtWaybillOrder::getLOrderId)
|
|
|
- .collect(Collectors.toList()));
|
|
|
-
|
|
|
- // 物流订单编号查询
|
|
|
- List<KwtLogisticsOrder> logisticsOrders = logisticsOrderRepository.list(
|
|
|
- Wrappers.<KwtLogisticsOrder>lambdaQuery()
|
|
|
- .like(KwtLogisticsOrder::getLOrderNo, keyword)
|
|
|
- .eq(KwtLogisticsOrder::getDelFlag, 0)
|
|
|
- );
|
|
|
- orderIds.addAll(logisticsOrders.stream()
|
|
|
- .map(KwtLogisticsOrder::getId)
|
|
|
- .collect(Collectors.toList()));
|
|
|
-
|
|
|
- // 托运单位查询
|
|
|
- List<KwtLogisticsOrderUnit> orderUnits = logisticsOrderUnitRepository.list(
|
|
|
- Wrappers.<KwtLogisticsOrderUnit>lambdaQuery()
|
|
|
- .eq(KwtLogisticsOrderUnit::getUnitType, UnitTypeEnum.CONSIGN.getCode())
|
|
|
- .like(KwtLogisticsOrderUnit::getFirmName, keyword)
|
|
|
- .eq(KwtLogisticsOrderUnit::getDelFlag, 0)
|
|
|
- );
|
|
|
- orderIds.addAll(orderUnits.stream()
|
|
|
- .map(KwtLogisticsOrderUnit::getLOrderId)
|
|
|
- .collect(Collectors.toList()));
|
|
|
-
|
|
|
- // 货物名称查询
|
|
|
- List<KwtLogisticsOrderGoods> orderGoods = logisticsOrderGoodsRepository.list(
|
|
|
- Wrappers.<KwtLogisticsOrderGoods>lambdaQuery()
|
|
|
- .like(KwtLogisticsOrderGoods::getGoodsName, keyword)
|
|
|
- .eq(KwtLogisticsOrderGoods::getDelFlag, 0)
|
|
|
- );
|
|
|
- orderIds.addAll(orderGoods.stream()
|
|
|
- .map(KwtLogisticsOrderGoods::getLOrderId)
|
|
|
- .collect(Collectors.toList()));
|
|
|
-
|
|
|
- return orderIds;
|
|
|
+ return ordderList;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -581,9 +683,13 @@ public class WaybillOrderService {
|
|
|
//装货地址
|
|
|
KwtLogisticsOrderAddress shipmentAddress = logOrderIdAndAddressMap.getOrDefault(wbOrder.getLOrderId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new KwtLogisticsOrderAddress());
|
|
|
wbOrderResp.setLoadAddress(shipmentAddress.getDetailAddress());
|
|
|
+ wbOrderResp.setLoadLng(shipmentAddress.getLng());
|
|
|
+ wbOrderResp.setLoadLat(shipmentAddress.getLat());
|
|
|
//卸货地址
|
|
|
KwtLogisticsOrderAddress takeAddress = logOrderIdAndAddressMap.getOrDefault(wbOrder.getLOrderId() + "-" + AddressTypeEnum.TAKE.getCode(), new KwtLogisticsOrderAddress());
|
|
|
wbOrderResp.setUnloadAddress(takeAddress.getDetailAddress());
|
|
|
+ wbOrderResp.setUnloadLng(takeAddress.getLng());
|
|
|
+ wbOrderResp.setUnloadLat(takeAddress.getLat());
|
|
|
//装卸地之间距离
|
|
|
double distanceKm = DistanceUtils.calculateDistance(
|
|
|
Optional.ofNullable(shipmentAddress.getLat()).map(Double::valueOf).orElse(null),
|
|
|
@@ -597,7 +703,7 @@ public class WaybillOrderService {
|
|
|
wbOrderResp.setTareAmount(tareAmountTicket.getTareAmount());
|
|
|
//毛重
|
|
|
KwtWaybillOrderTicket grossAmountTicket = ticketMap.getOrDefault(wbOrder.getId() + "-" + AddressTypeEnum.TAKE.getCode(), new KwtWaybillOrderTicket());
|
|
|
- wbOrderResp.setGrossAmount(grossAmountTicket.getTareAmount());
|
|
|
+ wbOrderResp.setGrossAmount(grossAmountTicket.getGrossAmount());
|
|
|
|
|
|
//司机信息
|
|
|
wbOrderResp.setDriverId(wbOrder.getDriverId());
|
|
|
@@ -625,44 +731,69 @@ public class WaybillOrderService {
|
|
|
|
|
|
}
|
|
|
|
|
|
- public StatisticsWaybillResp statisticsWaybillOrder(WaybillStatisticsParam param) {
|
|
|
+ /**
|
|
|
+ * 运单统计
|
|
|
+ * @param param
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public StatisticsWaybillResp statisticsWaybillOrder(WaybillOrderQueryParam param) {
|
|
|
+ log.info("运单状态统计,参数:{}", JSON.toJSONString(param));
|
|
|
StatisticsWaybillResp waybillResp = new StatisticsWaybillResp();
|
|
|
- log.info("运单状态统计");
|
|
|
- WaybillOrderReq waybillOrderReq = new WaybillOrderReq();
|
|
|
- waybillOrderReq.setEntId(String.valueOf(param.getEntId()));
|
|
|
- waybillOrderReq.setTruckNo(param.getTruckNo());
|
|
|
- StatisticsWaybillResp statisticsWaybillResp = waybillOrderV1Service.statisticsWaybillOrder(waybillOrderReq);
|
|
|
- if (statisticsWaybillResp == null || CollectionUtils.isEmpty(statisticsWaybillResp.getOrderStatusStatistics())) {
|
|
|
- return new StatisticsWaybillResp();
|
|
|
+ if (StringUtils.isBlank(param.getTruckNo())) {
|
|
|
+ return waybillResp;
|
|
|
+ }
|
|
|
+ //构建查询条件并获取运单数据
|
|
|
+ LambdaQueryWrapper<KwtWaybillOrder> queryWrapper = buildAndExecuteQuery(param);
|
|
|
+ List<KwtWaybillOrder> records = waybillOrderRepository.list(queryWrapper);
|
|
|
+ if (CollectionUtils.isEmpty(records)) {
|
|
|
+ log.info("当前车辆辆的无物流运单,统计结果为空, truckNo:{}", param.getTruckNo());
|
|
|
+ return waybillResp;
|
|
|
}
|
|
|
+
|
|
|
+ //查询运单关联数据
|
|
|
+ List<WaybillOrderStatusResp> waybillOrdertDatas = getWaybillOrderRelevantData(param, records);
|
|
|
+ waybillResp.setOrderStatusStatistics(calculateStatusStatistics(waybillOrdertDatas));
|
|
|
+ return waybillResp;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算运单状态统计
|
|
|
+ * @param waybillOrdertDatas
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static List<StatisticsWaybillResp.OrderBillStatusStatistics> calculateStatusStatistics(List<WaybillOrderStatusResp> waybillOrdertDatas) {
|
|
|
// 定义状态码聚合规则
|
|
|
Map<List<String>, String[]> aggregateRules = Map.of(
|
|
|
Arrays.asList("1", "5", "10", "15"), new String[]{"1", "进行中"},
|
|
|
Arrays.asList("20", "30"), new String[]{"2", "单证审核"},
|
|
|
Arrays.asList("25", "99"), new String[]{"3", "已完成"}
|
|
|
);
|
|
|
- List<StatisticsWaybillResp.OrderBillStatusStatistics> orderStatusStatistics = statisticsWaybillResp.getOrderStatusStatistics();
|
|
|
|
|
|
- List<StatisticsWaybillResp.OrderBillStatusStatistics> aggregatedList = aggregateRules.entrySet()
|
|
|
- .stream().map(rule -> {
|
|
|
+ // 按原始状态统计数量
|
|
|
+ Map<String, Long> statusCountMap = waybillOrdertDatas.stream()
|
|
|
+ .collect(Collectors.groupingBy(va ->String.valueOf(va.getStatus()), Collectors.counting()));
|
|
|
+
|
|
|
+ // 进行状态聚合
|
|
|
+ List<StatisticsWaybillResp.OrderBillStatusStatistics> aggregatedList = aggregateRules.entrySet().stream()
|
|
|
+ .map(rule -> {
|
|
|
List<String> originalStatuses = rule.getKey();
|
|
|
String[] aggregateInfo = rule.getValue();
|
|
|
- // 过滤并汇总对应状态的数量
|
|
|
- int totalNum = orderStatusStatistics.stream()
|
|
|
- .filter(stat -> originalStatuses.contains(stat.getOrderStatus()))
|
|
|
- .mapToInt(stat -> Integer.parseInt(stat.getOrderNum()))
|
|
|
+
|
|
|
+ // 汇总对应状态的数量
|
|
|
+ long totalNum = originalStatuses.stream()
|
|
|
+ .mapToLong(status -> statusCountMap.getOrDefault(status, 0L))
|
|
|
.sum();
|
|
|
- // 构建聚合结果对象
|
|
|
- StatisticsWaybillResp.OrderBillStatusStatistics aggregateStat = new StatisticsWaybillResp.OrderBillStatusStatistics();
|
|
|
- aggregateStat.setOrderStatus(aggregateInfo[0]); // 聚合状态编码
|
|
|
- aggregateStat.setOrderStatusDesc(aggregateInfo[1]); // 聚合状态描述
|
|
|
- aggregateStat.setOrderNum(String.valueOf(totalNum)); // 汇总数量
|
|
|
- return aggregateStat;
|
|
|
- }).collect(Collectors.toList());
|
|
|
- aggregatedList.sort(Comparator.comparing(StatisticsWaybillResp.OrderBillStatusStatistics::getOrderStatus));
|
|
|
-
|
|
|
- waybillResp.setOrderStatusStatistics(aggregatedList);
|
|
|
- return waybillResp;
|
|
|
+ // 构建聚合结果对象
|
|
|
+ StatisticsWaybillResp.OrderBillStatusStatistics aggregateStat = new StatisticsWaybillResp.OrderBillStatusStatistics();
|
|
|
+ aggregateStat.setOrderStatus(aggregateInfo[0]); // 聚合状态编码
|
|
|
+ aggregateStat.setOrderStatusDesc(aggregateInfo[1]); // 聚合状态描述
|
|
|
+ aggregateStat.setOrderNum(String.valueOf(totalNum)); // 汇总数量
|
|
|
+ return aggregateStat;
|
|
|
+ })
|
|
|
+ .filter(stat -> Long.parseLong(stat.getOrderNum()) > 0)
|
|
|
+ .sorted(Comparator.comparing(StatisticsWaybillResp.OrderBillStatusStatistics::getOrderStatus))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ return aggregatedList;
|
|
|
}
|
|
|
|
|
|
/**
|