|
|
@@ -40,8 +40,8 @@ import com.sckw.transport.dao.*;
|
|
|
import com.sckw.transport.handler.*;
|
|
|
import com.sckw.transport.model.*;
|
|
|
import com.sckw.transport.model.param.*;
|
|
|
-import com.sckw.transport.model.vo.OrderCirculateTotalTakeVo;
|
|
|
import com.sckw.transport.model.vo.OrderStatusStatisticsResp;
|
|
|
+import com.sckw.transport.model.vo.OrderTotalTakeVo;
|
|
|
import com.sckw.transport.model.vo.StatisticsWaybillResp;
|
|
|
import com.sckw.transport.repository.*;
|
|
|
import com.sckw.transport.service.*;
|
|
|
@@ -143,39 +143,41 @@ public class WaybillOrderService {
|
|
|
* @param param
|
|
|
* @return
|
|
|
*/
|
|
|
- public OrderCirculateTotalTakeVo queryTotalTake(OrderCirculateTotalTakeParam param) {
|
|
|
+ public OrderTotalTakeVo queryTotalTake(OrderCirculateTotalTakeParam param) {
|
|
|
log.info("查询司机关联完成运单和累计运输量:{}", JSON.toJSONString(param));
|
|
|
- LambdaQueryWrapper<KwtLogisticsOrderCirculate> queryWrapper = Wrappers.<KwtLogisticsOrderCirculate>lambdaQuery()
|
|
|
- .eq(KwtLogisticsOrderCirculate::getEntId, param.getEntId())
|
|
|
- .eq(KwtLogisticsOrderCirculate::getDriverId, param.getDriverId())
|
|
|
- .eq(KwtLogisticsOrderCirculate::getDelFlag,0)
|
|
|
- .orderByDesc(KwtLogisticsOrderCirculate::getCreateTime)
|
|
|
- .orderByDesc(KwtLogisticsOrderCirculate::getId);
|
|
|
- List<KwtLogisticsOrderCirculate> circulateList = logisticsOrderCirculateRepository.list(queryWrapper);
|
|
|
- if (CollectionUtils.isEmpty(circulateList)) {
|
|
|
+ LambdaQueryWrapper<KwtWaybillOrder> queryWrapper = Wrappers.<KwtWaybillOrder>lambdaQuery()
|
|
|
+ .eq(KwtWaybillOrder::getEntId, param.getEntId())
|
|
|
+ .eq(KwtWaybillOrder::getDriverId, param.getDriverId())
|
|
|
+ .eq(KwtWaybillOrder::getDelFlag,0)
|
|
|
+ .eq(KwtWaybillOrder::getStatus,CarWaybillV1Enum.WAIT_UNLOADING.getCode())
|
|
|
+ .orderByDesc(KwtWaybillOrder::getCreateTime)
|
|
|
+ .orderByDesc(KwtWaybillOrder::getId);
|
|
|
+ //1. 查询司机的完成运单
|
|
|
+ List<KwtWaybillOrder> waybillOrders = waybillOrderRepository.list(queryWrapper);
|
|
|
+ if (CollectionUtils.isEmpty(waybillOrders)) {
|
|
|
log.info("当前司机的无运单,driverId: {}", JSON.toJSONString(param));
|
|
|
- return new OrderCirculateTotalTakeVo();
|
|
|
+ return new OrderTotalTakeVo();
|
|
|
+ }
|
|
|
+ //2. 批量查询子运单
|
|
|
+ List<Long> waybillOrderIds = waybillOrders.stream().map(KwtWaybillOrder::getId).distinct().collect(Collectors.toList());
|
|
|
+ List<KwtWaybillOrderSubtask> kwtWaybillOrderSubtasks = waybillOrderSubtaskRepository.queryByWOrderIds(waybillOrderIds);
|
|
|
+ if (CollectionUtils.isEmpty(kwtWaybillOrderSubtasks)) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_SUB_NOT_FOUND, "当前车辆的物流订单无商品信息");
|
|
|
}
|
|
|
|
|
|
- //总运单量
|
|
|
- int totalTake = circulateList.stream()
|
|
|
- .filter(cr -> cr.getTotalTake() != null)
|
|
|
- .mapToInt(KwtLogisticsOrderCirculate::getTotalTake)
|
|
|
- .sum();
|
|
|
- //总运输量
|
|
|
- BigDecimal toalEntrustAmount = circulateList.stream().map(KwtLogisticsOrderCirculate::getEntrustAmount)
|
|
|
- .filter(Objects::nonNull)
|
|
|
+ // 总运输量 = 累计装货量 + 卸货量
|
|
|
+ BigDecimal toalEntrustAmount = kwtWaybillOrderSubtasks
|
|
|
+ .stream()
|
|
|
+ .map(sub -> {
|
|
|
+ BigDecimal loadAmount = Optional.ofNullable(sub.getLoadAmount()).orElse(BigDecimal.ZERO);
|
|
|
+ BigDecimal unloadAmount = Optional.ofNullable(sub.getUnloadAmount()).orElse(BigDecimal.ZERO);
|
|
|
+ return loadAmount.add(unloadAmount);
|
|
|
+ })
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
- //单位
|
|
|
- String unit = circulateList.stream().map(KwtLogisticsOrderCirculate::getUnit)
|
|
|
- .filter(Objects::nonNull)
|
|
|
- .findFirst().orElse(null);
|
|
|
-
|
|
|
- OrderCirculateTotalTakeVo totalTakeVo = new OrderCirculateTotalTakeVo();
|
|
|
- totalTakeVo.setTotalTake(totalTake);
|
|
|
+ OrderTotalTakeVo totalTakeVo = new OrderTotalTakeVo();
|
|
|
+ totalTakeVo.setTotalTake(waybillOrders.size());
|
|
|
totalTakeVo.setEntrustAmount(toalEntrustAmount);
|
|
|
- totalTakeVo.setUnit(unit);
|
|
|
log.info("查询司机关联完成运单和累计运输量成功,结果:{}", JSON.toJSONString(totalTakeVo));
|
|
|
|
|
|
return totalTakeVo;
|
|
|
@@ -740,6 +742,8 @@ public class WaybillOrderService {
|
|
|
log.info("运单状态统计,参数:{}", JSON.toJSONString(param));
|
|
|
StatisticsWaybillResp waybillResp = new StatisticsWaybillResp();
|
|
|
if (StringUtils.isBlank(param.getTruckNo())) {
|
|
|
+ // 车牌号为空时,返回默认的三种状态
|
|
|
+ waybillResp.setOrderStatusStatistics(buildDefaultStatusStatistics());
|
|
|
return waybillResp;
|
|
|
}
|
|
|
//构建查询条件并获取运单数据
|
|
|
@@ -747,6 +751,7 @@ public class WaybillOrderService {
|
|
|
List<KwtWaybillOrder> records = waybillOrderRepository.list(queryWrapper);
|
|
|
if (CollectionUtils.isEmpty(records)) {
|
|
|
log.info("当前车辆辆的无物流运单,统计结果为空, truckNo:{}", param.getTruckNo());
|
|
|
+ waybillResp.setOrderStatusStatistics(buildDefaultStatusStatistics());
|
|
|
return waybillResp;
|
|
|
}
|
|
|
|
|
|
@@ -756,6 +761,34 @@ public class WaybillOrderService {
|
|
|
return waybillResp;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建默认的状态统计列表(三种状态,数量均为0)
|
|
|
+ * @return 默认统计列表
|
|
|
+ */
|
|
|
+ private List<StatisticsWaybillResp.OrderBillStatusStatistics> buildDefaultStatusStatistics() {
|
|
|
+ List<StatisticsWaybillResp.OrderBillStatusStatistics> defaultList = new ArrayList<>();
|
|
|
+ // 进行中
|
|
|
+ StatisticsWaybillResp.OrderBillStatusStatistics underWay = new StatisticsWaybillResp.OrderBillStatusStatistics();
|
|
|
+ underWay.setOrderStatus("1");
|
|
|
+ underWay.setOrderStatusDesc("进行中");
|
|
|
+ underWay.setOrderNum("0");
|
|
|
+ defaultList.add(underWay);
|
|
|
+ // 单证审核
|
|
|
+ StatisticsWaybillResp.OrderBillStatusStatistics review = new StatisticsWaybillResp.OrderBillStatusStatistics();
|
|
|
+ review.setOrderStatus("2");
|
|
|
+ review.setOrderStatusDesc("单证审核");
|
|
|
+ review.setOrderNum("0");
|
|
|
+ defaultList.add(review);
|
|
|
+ // 已完成
|
|
|
+ StatisticsWaybillResp.OrderBillStatusStatistics completed = new StatisticsWaybillResp.OrderBillStatusStatistics();
|
|
|
+ completed.setOrderStatus("3");
|
|
|
+ completed.setOrderStatusDesc("已完成");
|
|
|
+ completed.setOrderNum("0");
|
|
|
+ defaultList.add(completed);
|
|
|
+ return defaultList;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 计算运单状态统计
|
|
|
* @param waybillOrdertDatas
|
|
|
@@ -778,7 +811,7 @@ public class WaybillOrderService {
|
|
|
.map(rule -> {
|
|
|
List<String> originalStatuses = rule.getKey();
|
|
|
String[] aggregateInfo = rule.getValue();
|
|
|
-
|
|
|
+
|
|
|
// 汇总对应状态的数量
|
|
|
long totalNum = originalStatuses.stream()
|
|
|
.mapToLong(status -> statusCountMap.getOrDefault(status, 0L))
|
|
|
@@ -790,7 +823,6 @@ public class WaybillOrderService {
|
|
|
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;
|