|
@@ -11,7 +11,9 @@ import com.google.common.collect.Maps;
|
|
|
import com.google.common.collect.Sets;
|
|
import com.google.common.collect.Sets;
|
|
|
import com.sckw.core.common.enums.enums.DictEnum;
|
|
import com.sckw.core.common.enums.enums.DictEnum;
|
|
|
import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
|
|
|
+import com.sckw.core.common.enums.enums.ErrorCodeEnum;
|
|
|
import com.sckw.core.exception.BusinessException;
|
|
import com.sckw.core.exception.BusinessException;
|
|
|
|
|
+import com.sckw.core.exception.BusinessPlatfromException;
|
|
|
import com.sckw.core.model.constant.Global;
|
|
import com.sckw.core.model.constant.Global;
|
|
|
import com.sckw.core.model.constant.NumberConstant;
|
|
import com.sckw.core.model.constant.NumberConstant;
|
|
|
import com.sckw.core.model.constant.UrlConstants;
|
|
import com.sckw.core.model.constant.UrlConstants;
|
|
@@ -52,6 +54,7 @@ import com.sckw.transport.model.param.WaybillOrderReq;
|
|
|
import com.sckw.transport.model.param.WaybillOrderResp;
|
|
import com.sckw.transport.model.param.WaybillOrderResp;
|
|
|
import com.sckw.transport.model.vo.*;
|
|
import com.sckw.transport.model.vo.*;
|
|
|
import com.sckw.transport.repository.*;
|
|
import com.sckw.transport.repository.*;
|
|
|
|
|
+import com.sckw.transport.utils.DistanceUtils;
|
|
|
import jakarta.annotation.Resource;
|
|
import jakarta.annotation.Resource;
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
import jakarta.validation.Valid;
|
|
import jakarta.validation.Valid;
|
|
@@ -129,7 +132,6 @@ public class KwtWaybillOrderV1Service {
|
|
|
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 KwtWaybillOrderNodeRepository waybillOrderNodeRepository;
|
|
|
|
|
@Resource
|
|
@Resource
|
|
|
private StreamBridge streamBridge;
|
|
private StreamBridge streamBridge;
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
@@ -3329,7 +3331,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//查询轨迹
|
|
//查询轨迹
|
|
|
- List<KwtWaybillOrderNode> kwtWaybillOrderNodes = waybillOrderNodeRepository.queryNodesByOrderId(billOrder.getId(), subtask.getId());
|
|
|
|
|
|
|
+ List<KwtWaybillOrderNode> kwtWaybillOrderNodes = kwtWaybillOrderNodeRepository.queryNodesByOrderId(billOrder.getId(), subtask.getId());
|
|
|
List<KwtWaybillOrderNode> nodeList = Lists.newArrayList() ;
|
|
List<KwtWaybillOrderNode> nodeList = Lists.newArrayList() ;
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwtWaybillOrderNodes)){
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwtWaybillOrderNodes)){
|
|
|
nodeList = kwtWaybillOrderNodes.stream()
|
|
nodeList = kwtWaybillOrderNodes.stream()
|
|
@@ -3352,8 +3354,17 @@ public class KwtWaybillOrderV1Service {
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ //装卸货信息
|
|
|
|
|
+ List<KwtWaybillOrderTicket> orderTicketList = kwtWaybillOrderTicketRepository.queryByWOrderId(req.getOrderId());
|
|
|
|
|
+ if (CollectionUtils.isEmpty(orderTicketList)) {
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_TICKET, "当前车辆无物流运单装卸货信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ Map<String, KwtWaybillOrderTicket> ticketMap = orderTicketList.stream().collect(
|
|
|
|
|
+ Collectors.toMap(ticket -> ticket.getWOrderId() + "-" + ticket.getType(),
|
|
|
|
|
+ Function.identity(), (x, y) -> x));
|
|
|
|
|
+
|
|
|
return getWaybillOrderDetailResp( subtask,billOrder, logOrder, truck, fleet, goods,
|
|
return getWaybillOrderDetailResp( subtask,billOrder, logOrder, truck, fleet, goods,
|
|
|
- keyAndAddressMap,kwpGoods,logisticsOrderUnitMap,nodeList,userCacheResDto,billOrders);
|
|
|
|
|
|
|
+ keyAndAddressMap,kwpGoods,logisticsOrderUnitMap,nodeList,userCacheResDto,billOrders,ticketMap);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@NotNull
|
|
@NotNull
|
|
@@ -3367,7 +3378,8 @@ public class KwtWaybillOrderV1Service {
|
|
|
Map<String, KwtLogisticsOrderUnit> logisticsOrderUnitMap,
|
|
Map<String, KwtLogisticsOrderUnit> logisticsOrderUnitMap,
|
|
|
List<KwtWaybillOrderNode> nodeList,
|
|
List<KwtWaybillOrderNode> nodeList,
|
|
|
UserCacheResDto userCacheResDto,
|
|
UserCacheResDto userCacheResDto,
|
|
|
- List<KwtWaybillOrder> billOrders) {
|
|
|
|
|
|
|
+ List<KwtWaybillOrder> billOrders,
|
|
|
|
|
+ Map<String, KwtWaybillOrderTicket> ticketMap) {
|
|
|
WaybillOrderDetailResp waybillOrderDetailResp = new WaybillOrderDetailResp();
|
|
WaybillOrderDetailResp waybillOrderDetailResp = new WaybillOrderDetailResp();
|
|
|
waybillOrderDetailResp.setWaybillOrderId(String.valueOf(billOrder.getId()));
|
|
waybillOrderDetailResp.setWaybillOrderId(String.valueOf(billOrder.getId()));
|
|
|
waybillOrderDetailResp.setWaybillOrderNo(billOrder.getWOrderNo());
|
|
waybillOrderDetailResp.setWaybillOrderNo(billOrder.getWOrderNo());
|
|
@@ -3385,10 +3397,17 @@ public class KwtWaybillOrderV1Service {
|
|
|
}
|
|
}
|
|
|
KwtWaybillOrderAddress loadAdd = keyAndAddressMap.getOrDefault(billOrder.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new KwtWaybillOrderAddress());
|
|
KwtWaybillOrderAddress loadAdd = keyAndAddressMap.getOrDefault(billOrder.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new KwtWaybillOrderAddress());
|
|
|
waybillOrderDetailResp.setLoadAddress(loadAdd.getDetailAddress());
|
|
waybillOrderDetailResp.setLoadAddress(loadAdd.getDetailAddress());
|
|
|
- KwtWaybillOrderAddress unLoadAdd =
|
|
|
|
|
- keyAndAddressMap.getOrDefault(billOrder.getId() + "-" + AddressTypeEnum.TAKE.getCode(),
|
|
|
|
|
- new KwtWaybillOrderAddress());
|
|
|
|
|
|
|
+ KwtWaybillOrderAddress unLoadAdd = keyAndAddressMap.getOrDefault(billOrder.getId() + "-" + AddressTypeEnum.TAKE.getCode(), new KwtWaybillOrderAddress());
|
|
|
waybillOrderDetailResp.setUnloadAddress(unLoadAdd.getDetailAddress());
|
|
waybillOrderDetailResp.setUnloadAddress(unLoadAdd.getDetailAddress());
|
|
|
|
|
+
|
|
|
|
|
+ //预计里程
|
|
|
|
|
+ double distanceKm = DistanceUtils.calculateDistance(
|
|
|
|
|
+ Optional.ofNullable(loadAdd.getLat()).map(Double::valueOf).orElse(null),
|
|
|
|
|
+ Optional.ofNullable(loadAdd.getLng()).map(Double::valueOf).orElse(null),
|
|
|
|
|
+ Optional.ofNullable(unLoadAdd.getLat()).map(Double::valueOf).orElse(null),
|
|
|
|
|
+ Optional.ofNullable(unLoadAdd.getLng()).map(Double::valueOf).orElse(null));
|
|
|
|
|
+ waybillOrderDetailResp.setDistanceKm(distanceKm);
|
|
|
|
|
+
|
|
|
waybillOrderDetailResp.setTaskVolume(Objects.nonNull(subtask.getEntrustAmount()) ?
|
|
waybillOrderDetailResp.setTaskVolume(Objects.nonNull(subtask.getEntrustAmount()) ?
|
|
|
subtask.getEntrustAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "");
|
|
subtask.getEntrustAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "");
|
|
|
waybillOrderDetailResp.setLoadAmount(Objects.nonNull(subtask.getLoadAmount()) ?
|
|
waybillOrderDetailResp.setLoadAmount(Objects.nonNull(subtask.getLoadAmount()) ?
|
|
@@ -3400,6 +3419,17 @@ public class KwtWaybillOrderV1Service {
|
|
|
KwtLogisticsOrderUnit carrierEnt = logisticsOrderUnitMap.getOrDefault(logOrder.getId() + "-" + UnitTypeEnum.CARRIAGE.getCode(), new KwtLogisticsOrderUnit());
|
|
KwtLogisticsOrderUnit carrierEnt = logisticsOrderUnitMap.getOrDefault(logOrder.getId() + "-" + UnitTypeEnum.CARRIAGE.getCode(), new KwtLogisticsOrderUnit());
|
|
|
waybillOrderDetailResp.setTransEntName(transEnt.getFirmName());
|
|
waybillOrderDetailResp.setTransEntName(transEnt.getFirmName());
|
|
|
waybillOrderDetailResp.setCarrierEntName(carrierEnt.getFirmName());
|
|
waybillOrderDetailResp.setCarrierEntName(carrierEnt.getFirmName());
|
|
|
|
|
+
|
|
|
|
|
+ //皮重
|
|
|
|
|
+ KwtWaybillOrderTicket tareAmountTicket = ticketMap.getOrDefault(subtask.getWOrderId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new KwtWaybillOrderTicket());
|
|
|
|
|
+ waybillOrderDetailResp.setTareAmount(tareAmountTicket.getTareAmount());
|
|
|
|
|
+ //毛重
|
|
|
|
|
+ KwtWaybillOrderTicket grossAmountTicket = ticketMap.getOrDefault(subtask.getWOrderId() + "-" + AddressTypeEnum.TAKE.getCode(), new KwtWaybillOrderTicket());
|
|
|
|
|
+ waybillOrderDetailResp.setGrossAmount(grossAmountTicket.getTareAmount());
|
|
|
|
|
+
|
|
|
|
|
+ waybillOrderDetailResp.setStatus(subtask.getStatus());
|
|
|
|
|
+ waybillOrderDetailResp.setStatusDesc(CarWaybillV1Enum.geDesc(subtask.getStatus()));
|
|
|
|
|
+ waybillOrderDetailResp.setLegalLoad(truck.getActualWeight());
|
|
|
|
|
|
|
|
// 计算装货完成率 = (装货量 / 任务量) × 100%
|
|
// 计算装货完成率 = (装货量 / 任务量) × 100%
|
|
|
String loadCompleteRate = "0.00%";
|
|
String loadCompleteRate = "0.00%";
|
|
@@ -3591,7 +3621,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
kwtWaybillOrderNode.setRemark(remark);
|
|
kwtWaybillOrderNode.setRemark(remark);
|
|
|
kwtWaybillOrderNode.setCreateBy(LoginUserHolder.getUserId());
|
|
kwtWaybillOrderNode.setCreateBy(LoginUserHolder.getUserId());
|
|
|
kwtWaybillOrderNode.setTruckId(billOrder.getTruckId());
|
|
kwtWaybillOrderNode.setTruckId(billOrder.getTruckId());
|
|
|
- waybillOrderNodeRepository.save(kwtWaybillOrderNode);
|
|
|
|
|
|
|
+ kwtWaybillOrderNodeRepository.save(kwtWaybillOrderNode);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@NotNull
|
|
@NotNull
|