|
|
@@ -2,8 +2,10 @@ package com.sckw.transport.service;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
|
+
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.alibaba.nacos.shaded.io.grpc.StatusException;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
@@ -161,6 +163,7 @@ public class KwtLogisticsConsignmentService {
|
|
|
private final KwtLogisticsOrderAddressRepository logisticsOrderAddressRepository;
|
|
|
private final KwtLogisticsOrderContractRepository logisticsOrderContractRepository;
|
|
|
private final KwtWaybillOrderSubtaskRepository logisticsOrderSubtaskRepository;
|
|
|
+ private final KwtWaybillOrderRepository waybillOrderRepository;
|
|
|
/**
|
|
|
* 采购订单-物流托运生成托运订单
|
|
|
*
|
|
|
@@ -2550,4 +2553,70 @@ public class KwtLogisticsConsignmentService {
|
|
|
}
|
|
|
logisticsOrderDetailResp.setContractInfoVO(contractInfoVO);
|
|
|
}
|
|
|
+
|
|
|
+ public PageDataResult<LogisticsOrderDispatchResp> getLogisticsOrderDispatch(@Valid LogisticsOrderReq req) {
|
|
|
+ KwtLogisticsOrder kwtLogisticsOrder = logisticsOrderRepository.queryByLogisticsOrderId(Long.parseLong(req.getLogisticsOrderId()));
|
|
|
+ if (Objects.nonNull(kwtLogisticsOrder)) {
|
|
|
+ throw new BusinessException("物流订单不存在");
|
|
|
+ }
|
|
|
+ //通过物流订单号查询运单
|
|
|
+
|
|
|
+ List<KwtWaybillOrderSubtask> waybillOrderSubtasks = logisticsOrderSubtaskRepository.queryByLogId(kwtLogisticsOrder.getId());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(waybillOrderSubtasks)) {
|
|
|
+ return PageDataResult.empty(req.getPageNum(), req.getPageSize());
|
|
|
+ }
|
|
|
+ //物流订单id列表
|
|
|
+ Set<Long> billOrderIds =
|
|
|
+ waybillOrderSubtasks.stream().map(KwtWaybillOrderSubtask::getWOrderId).collect(Collectors.toSet());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(billOrderIds)) {
|
|
|
+ return PageDataResult.empty(req.getPageNum(), req.getPageSize());
|
|
|
+ }
|
|
|
+ //根据运单id查询物流运单
|
|
|
+ IPage<KwtWaybillOrder> page = waybillOrderRepository.queryPageByBillOrderIds(billOrderIds, req.getPageNum(), req.getPageSize());
|
|
|
+
|
|
|
+ List<KwtWaybillOrder> records = page.getRecords();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(records)) {
|
|
|
+ return PageDataResult.empty(req.getPageNum(), req.getPageSize());
|
|
|
+ }
|
|
|
+ //获取车辆id
|
|
|
+ Set<Long> truckIds = records.stream()
|
|
|
+ .map(KwtWaybillOrder::getTruckId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ Map<Long, RTruckVo> truckIdAndTruckMap = Maps.newHashMap();
|
|
|
+ List<RTruckVo> truckByTruckIds = Lists.newArrayList() ;
|
|
|
+ //查询车辆信息
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(truckIds)) {
|
|
|
+ truckByTruckIds = remoteFleetService.findTruckByTruckIds(truckIds);
|
|
|
+ }
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(truckByTruckIds)){
|
|
|
+ truckIdAndTruckMap =
|
|
|
+ truckByTruckIds.stream()
|
|
|
+ .collect(Collectors.toMap(RTruckVo::getId, Function.identity(),(k1, k2)->k1));
|
|
|
+ }
|
|
|
+ //组装返回信息
|
|
|
+ Map<Long, RTruckVo> finalTruckIdAndTruckMap = truckIdAndTruckMap;
|
|
|
+ List<LogisticsOrderDispatchResp> resps = records.stream()
|
|
|
+ .map(record -> getLogisticsOrderDispatchResp(record, finalTruckIdAndTruckMap, kwtLogisticsOrder))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ return PageDataResult.of(page,resps);
|
|
|
+ }
|
|
|
+
|
|
|
+ @NotNull
|
|
|
+ private static LogisticsOrderDispatchResp getLogisticsOrderDispatchResp(KwtWaybillOrder record, Map<Long, RTruckVo> finalTruckIdAndTruckMap, KwtLogisticsOrder kwtLogisticsOrder) {
|
|
|
+ LogisticsOrderDispatchResp logisticsOrderDispatchResp = new LogisticsOrderDispatchResp();
|
|
|
+ logisticsOrderDispatchResp.setWayBillId(String.valueOf(record.getId()));
|
|
|
+ RTruckVo truckVo = finalTruckIdAndTruckMap.getOrDefault(record.getTruckId(), new RTruckVo());
|
|
|
+ logisticsOrderDispatchResp.setTruckNo(truckVo.getTruckNo());
|
|
|
+ logisticsOrderDispatchResp.setCarAxis(truckVo.getCarAxis());
|
|
|
+ logisticsOrderDispatchResp.setFinishWaybillCount(String.valueOf(kwtLogisticsOrder.getTotalTake()));
|
|
|
+ logisticsOrderDispatchResp.setLoadAmount(Objects.nonNull(record.getLoadAmount()) ?
|
|
|
+ record.getLoadAmount().setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00");
|
|
|
+ logisticsOrderDispatchResp.setUnloadAmount(Objects.nonNull(record.getUnloadAmount())? record.getUnloadAmount().setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00");
|
|
|
+ logisticsOrderDispatchResp.setStatus(String.valueOf(record.getStatus()));
|
|
|
+ logisticsOrderDispatchResp.setStatusDesc(CarWaybillEnum.getName(record.getStatus()));
|
|
|
+
|
|
|
+ logisticsOrderDispatchResp.setCloseOrder(String.valueOf(truckVo.getStatus()));
|
|
|
+ logisticsOrderDispatchResp.setCloseOrderDesc(CarStatusEnum.getName(truckVo.getStatus()));
|
|
|
+ return logisticsOrderDispatchResp;
|
|
|
+ }
|
|
|
}
|