Parcourir la source

物流订单详情查询

chenxiaofei il y a 2 mois
Parent
commit
e4cb199300

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java

@@ -662,7 +662,7 @@ public class KwtWaybillOrderController {
      */
     @PostMapping("/findBillOrderListPage")
     public BaseResult<PageDataResult<WaybillOrderResp>> findBillOrderListPage(@RequestBody WaybillOrderReq req) {
-        return waybillOrderV1Service.findBillOrderListPage(req);
+        return BaseResult.success(waybillOrderV1Service.findBillOrderListPage(req));
     }
 
 }

+ 2 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderAddress.java

@@ -152,4 +152,6 @@ public class KwtWaybillOrderAddress implements Serializable {
 
     @TableField(exist = false)
     private String wOrderIdAddressTypeKey;
+    @TableField(exist = false)
+    private String subOrderIdAddressTypeKey;
 }

+ 3 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderTrack.java

@@ -1,5 +1,6 @@
 package com.sckw.transport.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonProperty;
@@ -67,5 +68,7 @@ public class KwtWaybillOrderTrack implements Serializable {
     private Integer delFlag;
 
     private static final long serialVersionUID = 1L;
+    @TableField(exist = false)
+    private String subBillIdAddressIdKey;
 
 }

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderReq.java

@@ -19,6 +19,11 @@ import java.io.Serializable;
 public class WaybillOrderReq extends PageReq implements Serializable {
     @Serial
     private static final long serialVersionUID = 5288474055629950242L;
+    /**
+     * 企业id
+     */
+    @Schema(description = "企业id")
+    private String entId;
     /**
      * 物流订单id 订单模块调整的时候会用
      */

+ 9 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderResp.java

@@ -70,12 +70,12 @@ public class WaybillOrderResp implements Serializable {
      * 任务量
      */
     @Schema(description = "任务量")
-    private Integer taskNum;
+    private String taskNum;
     /**
      * 装货净重
      */
     @Schema(description = "装货净化重")
-    private Double loadingNetWeight;
+    private String loadingNetWeight;
     /**
      * 装货地址
      */
@@ -85,7 +85,7 @@ public class WaybillOrderResp implements Serializable {
      * 卸货净重
      */
     @Schema(description = "卸货净重")
-    private Double unloadingNetWeight;
+    private String unloadingNetWeight;
     /**
      * 卸货地址
      */
@@ -111,4 +111,10 @@ public class WaybillOrderResp implements Serializable {
      */
     @Schema(description = "状态")
     private String status;
+
+    /**
+     * 状态描述
+     */
+    @Schema(description = "状态描述")
+    private String statusDesc;
 }

+ 13 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderRepository.java

@@ -57,4 +57,17 @@ public class KwtLogisticsOrderRepository extends ServiceImpl<KwtLogisticsOrderMa
                 .eq(KwtLogisticsOrder::getDelFlag,0)
                 .eq(KwtLogisticsOrder::getId, logOrderId));
     }
+
+    public KwtLogisticsOrder queryByLogisticsOrderNo(String logisticsOrderNo) {
+        return getOne(Wrappers.<KwtLogisticsOrder>lambdaQuery()
+                .eq(KwtLogisticsOrder::getDelFlag,0)
+                .like(KwtLogisticsOrder::getLOrderNo, logisticsOrderNo)
+                .last("limit 1"));
+    }
+
+    public List<KwtLogisticsOrder> queryByLogisticsOrderIds(List<Long> logisOrderIds) {
+        return list(Wrappers.<KwtLogisticsOrder>lambdaQuery()
+                .eq(KwtLogisticsOrder::getDelFlag,0)
+                .in(KwtLogisticsOrder::getId, logisOrderIds));
+    }
 }

+ 7 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderAddressRepository.java

@@ -9,6 +9,7 @@ import jakarta.validation.constraints.NotNull;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -28,4 +29,10 @@ public class KwtWaybillOrderAddressRepository extends ServiceImpl<KwtWaybillOrde
                 .eq(KwtWaybillOrderAddress::getDelFlag, 0)
                 .in(KwtWaybillOrderAddress::getWOrderId, wOrderIds));
     }
+
+    public List<KwtWaybillOrderAddress> queryBySubBillOrderId(Set<Long> subWayBillOrderIds) {
+        return list(Wrappers.<KwtWaybillOrderAddress>lambdaQuery()
+                .eq(KwtWaybillOrderAddress::getDelFlag, 0)
+                .in(KwtWaybillOrderAddress::getWSubtaskId, subWayBillOrderIds));
+    }
 }

+ 18 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderRepository.java

@@ -111,4 +111,22 @@ public class KwtWaybillOrderRepository extends ServiceImpl<KwtWaybillOrderMapper
                         .orderByDesc(KwtWaybillOrder::getCreateTime)
                         .orderByDesc(KwtWaybillOrder::getId));
     }
+
+    public List<KwtWaybillOrder> queryByCondition(KwtWaybillOrder order) {
+        return list(Wrappers.<KwtWaybillOrder>lambdaQuery()
+                .eq(KwtWaybillOrder::getDelFlag,0)
+                .like(StringUtils.isNotBlank(order.getWOrderNo()),KwtWaybillOrder::getWOrderNo, order.getWOrderNo())
+                .like(StringUtils.isNotBlank(order.getTruckNo()),KwtWaybillOrder::getTruckNo, order.getTruckNo())
+                .like(StringUtils.isNotBlank(order.getDriverName()),KwtWaybillOrder::getDriverName, order.getDriverName())
+                .like(StringUtils.isNotBlank(order.getDriverPhone()),KwtWaybillOrder::getDriverPhone, order.getDriverPhone())
+        );
+    }
+
+    public List<KwtWaybillOrder> queryByBillOrderIds(Set<Long> wayBillOrderIds) {
+
+        return list(Wrappers.<KwtWaybillOrder>lambdaQuery()
+                .eq(KwtWaybillOrder::getDelFlag,0)
+                .in(KwtWaybillOrder::getId, wayBillOrderIds)
+        );
+    }
 }

+ 10 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderSubtaskRepository.java

@@ -8,9 +8,11 @@ import com.sckw.core.model.base.BaseModel;
 import com.sckw.transport.dao.KwtWaybillOrderSubtaskMapper;
 import com.sckw.transport.model.KwtWaybillOrderSubtask;
 import jakarta.validation.constraints.NotBlank;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 
 /**
@@ -57,10 +59,16 @@ public class KwtWaybillOrderSubtaskRepository extends ServiceImpl<KwtWaybillOrde
                 .eq(KwtWaybillOrderSubtask::getLOrderId,logOrderId));
     }
 
-    public IPage<KwtWaybillOrderSubtask> queryByPage(@NotBlank(message = "物流订单id不能为空") String logisticsOrderId, int pageNum, int pageSize) {
+    public IPage<KwtWaybillOrderSubtask> queryByPage(Long entId, Set<Long> logOrderIds, Set<Long> billOrderIds,
+                                                     int pageNum,
+                                                     int pageSize) {
         return page(new Page<>(pageNum, pageSize),
                 Wrappers.<KwtWaybillOrderSubtask>lambdaQuery()
                         .eq(BaseModel::getDelFlag,0)
-                        .eq(KwtWaybillOrderSubtask::getLOrderId,logisticsOrderId));
+                        .eq(Objects.nonNull(entId),KwtWaybillOrderSubtask::getEntId, entId)
+                        .in(CollectionUtils.isNotEmpty(logOrderIds),KwtWaybillOrderSubtask::getLOrderId, logOrderIds)
+                        .in(CollectionUtils.isNotEmpty(billOrderIds),KwtWaybillOrderSubtask::getWOrderId, billOrderIds)
+                        .orderByDesc(BaseModel::getCreateTime)
+                        .orderByDesc(KwtWaybillOrderSubtask::getId));
     }
 }

+ 244 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -3,9 +3,14 @@ package com.sckw.transport.service;
 import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
+import com.sckw.core.model.base.BaseModel;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.constant.UrlConstants;
@@ -25,6 +30,8 @@ import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.*;
 import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
+import com.sckw.product.api.dubbo.GoodsInfoService;
+import com.sckw.product.api.model.KwpGoods;
 import com.sckw.stream.enums.MessageEnum;
 import com.sckw.stream.model.SckwMessage;
 import com.sckw.stream.model.UserInfo;
@@ -42,14 +49,14 @@ import com.sckw.transport.model.enuma.CarWaybillTableTopEnum;
 import com.sckw.transport.model.param.WaybillOrderReq;
 import com.sckw.transport.model.param.WaybillOrderResp;
 import com.sckw.transport.model.vo.*;
-import com.sckw.transport.repository.KwtWaybillOrderAddressRepository;
-import com.sckw.transport.repository.KwtWaybillOrderTrackRepository;
+import com.sckw.transport.repository.*;
 import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.stream.function.StreamBridge;
@@ -111,6 +118,11 @@ public class KwtWaybillOrderV1Service {
     private UrlConfigProperties urlConfigProperties;
     private final KwtWaybillOrderAddressRepository waybillOrderAddressRepository;
     private final KwtWaybillOrderTrackRepository kwtWaybillOrderTrackRepository;
+    private final KwtWaybillOrderSubtaskRepository waybillOrderSubtaskRepository;
+    private final KwtLogisticsOrderRepository logisticsOrderRepository;
+    private final KwtWaybillOrderRepository kwtWaybillOrderRepository;
+    private final KwtLogisticsOrderUnitRepository kwtLogisticsOrderUnitRepository;
+    private final KwtLogisticsOrderGoodsRepository kwtLogisticsOrderGoodsRepository;
     @Resource
     private StreamBridge streamBridge;
     @DubboReference(version = "1.0.0", group = "design", check = false)
@@ -126,6 +138,10 @@ public class KwtWaybillOrderV1Service {
     @Value("${message.waybill.refuseSendCar.pc}")
     private String refuseSendCarPcUrl;
 
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private GoodsInfoService goodsInfoService;
+
+
     /**
      * @param params 请求参数
      * @desc 统计
@@ -2915,8 +2931,231 @@ public class KwtWaybillOrderV1Service {
         return orderDetailVo;
     }
 
-    public BaseResult<PageDataResult<WaybillOrderResp>> findBillOrderListPage(WaybillOrderReq req) {
-        //
-        return null;
+    public PageDataResult<WaybillOrderResp> findBillOrderListPage(WaybillOrderReq req) {
+        log.info("查询订单列表请求阐述:{}",JSON.toJSONString( req));
+
+        //物流订单号集合
+        Set<Long> logOrderIds = getLogOrderIds(req);
+
+        //查询运单信息
+        //运单id集合
+        Set<Long> billOrderIds = getBillOrderIds(req);
+
+        Long entId = StringUtils.isNotBlank(req.getEntId()) ? Long.parseLong(req.getEntId()) : null;
+        IPage<KwtWaybillOrderSubtask> page = waybillOrderSubtaskRepository.queryByPage(entId ,logOrderIds,
+                billOrderIds, req.getPageNum(), req.getPageSize());
+        List<KwtWaybillOrderSubtask> records = page.getRecords();
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(records)){
+            return PageDataResult.empty(req.getPageNum(), req.getPageSize());
+        }
+        //运单id集合
+        Set<Long> wayBillOrderIds = records.stream()
+                .map(KwtWaybillOrderSubtask::getWOrderId)
+                .collect(Collectors.toSet());
+        //物流订单id集合
+        List<Long> logicsOrderIds = records.stream()
+                .map(KwtWaybillOrderSubtask::getLOrderId)
+                .distinct()
+                .collect(Collectors.toList());
+
+        //子运单id集合
+        Set<Long> subWayBillOrderIds = records.stream()
+                .map(BaseModel::getId)
+                .collect(Collectors.toSet());
+        //查询主运单信息
+        Map<Long, KwtWaybillOrder> waybillOrderIdAndBillOrderMap = getLongKwtWaybillOrderMap(wayBillOrderIds);
+        //查询承运托运单位信息
+        Map<String, KwtLogisticsOrderUnit> logOrderIdUnitTypeKeyAndUnitMap = getStringKwtLogisticsOrderUnitMap(logicsOrderIds);
+
+        //查询装卸货地址
+        List<KwtWaybillOrderAddress> orderAddresses = waybillOrderAddressRepository.queryBySubBillOrderId(subWayBillOrderIds);
+        Map<String, KwtWaybillOrderAddress> subOrderIdAddressTypeKeyAndAddressMap = Maps.newHashMap();
+        Set<Long> addressIds = Sets.newHashSet() ;
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(orderAddresses)){
+             subOrderIdAddressTypeKeyAndAddressMap =
+                    orderAddresses.stream().peek(x -> x.setSubOrderIdAddressTypeKey(x.getWSubtaskId() + "-" + x.getAddressType()))
+                    .collect(Collectors.toMap(KwtWaybillOrderAddress::getSubOrderIdAddressTypeKey, Function.identity()
+                            , (k1, k2) -> k1));
+            addressIds =
+                    orderAddresses.stream().map(KwtWaybillOrderAddress::getId).collect(Collectors.toSet());
+        }
+
+        // 查询运单相关的装卸货时间信息
+        Map<String, KwtWaybillOrderTrack> subBillIdAddressIdKeyAndOrderTrackMap = getStringKwtWaybillOrderTrackMap(addressIds);
+
+        //更具物流订单查询商品
+        List<KwtLogisticsOrderGoods> logisticsOrderGoods = kwtLogisticsOrderGoodsRepository.queryByLogOrderIds(logicsOrderIds);
+        Map<Long, KwtLogisticsOrderGoods> logOrderIdAndGoodsIdMap = Maps.newHashMap();
+        List<Long> goodsIds = Lists.newArrayList() ;
+        if (CollectionUtils.isNotEmpty(logisticsOrderGoods)){
+            goodsIds = logisticsOrderGoods.stream()
+                    .map(KwtLogisticsOrderGoods::getGoodsId).distinct().collect(Collectors.toList());
+            logOrderIdAndGoodsIdMap =
+                    logisticsOrderGoods.stream().collect(Collectors.toMap(KwtLogisticsOrderGoods::getId, Function.identity(),
+                    (k1, k2) -> k1));
+        }
+        //查询商品信息
+        Map<Long, KwpGoods> kwpGoodsMap = goodsInfoService.getGoodsByIds(goodsIds);
+
+
+        Map<String, KwtWaybillOrderAddress> finalSubOrderIdAddressTypeKeyAndAddressMap = subOrderIdAddressTypeKeyAndAddressMap;
+        Map<Long, KwtLogisticsOrderGoods> finalLogOrderIdAndGoodsIdMap = logOrderIdAndGoodsIdMap;
+        List<WaybillOrderResp> resps = records.stream()
+                .map(record -> getWaybillOrderResp(record, waybillOrderIdAndBillOrderMap, logOrderIdUnitTypeKeyAndUnitMap, finalLogOrderIdAndGoodsIdMap, kwpGoodsMap, finalSubOrderIdAddressTypeKeyAndAddressMap, subBillIdAddressIdKeyAndOrderTrackMap))
+                .collect(Collectors.toList());
+        return PageDataResult.of(page,resps);
+    }
+
+    @NotNull
+    private Map<Long, KwtWaybillOrder> getLongKwtWaybillOrderMap(Set<Long> wayBillOrderIds) {
+        List<KwtWaybillOrder> waybillOrders = kwtWaybillOrderRepository.queryByBillOrderIds(wayBillOrderIds);
+        Map<Long, KwtWaybillOrder> waybillOrderIdAndBillOrderMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(waybillOrders)){
+            waybillOrderIdAndBillOrderMap = waybillOrders.stream()
+                    .collect(Collectors.toMap(KwtWaybillOrder::getId, Function.identity(), (k1, k2) -> k1));
+        }
+        return waybillOrderIdAndBillOrderMap;
+    }
+
+    @NotNull
+    private Map<String, KwtLogisticsOrderUnit> getStringKwtLogisticsOrderUnitMap(List<Long> logicsOrderIds) {
+        List<KwtLogisticsOrderUnit> logisticsOrderUnits = kwtLogisticsOrderUnitRepository.queryByLogOrderIds(logicsOrderIds);
+        Map<String, KwtLogisticsOrderUnit> logOrderIdUnitTypeKeyAndUnitMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(logisticsOrderUnits)){
+            logOrderIdUnitTypeKeyAndUnitMap =
+                    logisticsOrderUnits.stream().peek(x -> x.setLogisticsOrderIdAndUnitTypeKey(x.getLOrderId() + "-" + x.getUnitType()))
+                    .collect(Collectors.toMap(KwtLogisticsOrderUnit::getLogisticsOrderIdAndUnitTypeKey,
+                            Function.identity(), (k1, k2) -> k1));
+        }
+        return logOrderIdUnitTypeKeyAndUnitMap;
+    }
+
+    @NotNull
+    private Map<String, KwtWaybillOrderTrack> getStringKwtWaybillOrderTrackMap(Set<Long> addressIds) {
+        List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = Lists.newArrayList();
+        if (CollectionUtils.isNotEmpty(addressIds)){
+             kwtWaybillOrderTracks = kwtWaybillOrderTrackRepository.queryByAddressIds(addressIds);
+        }
+        Map<String, KwtWaybillOrderTrack> subBillIdAddressIdKeyAndOrderTrackMap = Maps.newHashMap();
+        if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)){
+            subBillIdAddressIdKeyAndOrderTrackMap =
+                    kwtWaybillOrderTracks.stream().peek(x->x.setSubBillIdAddressIdKey(x.getWSubtaskId()+"-"+x.getWAddressId()))
+                            .collect(Collectors.toMap(KwtWaybillOrderTrack::getSubBillIdAddressIdKey,
+                                    Function.identity(), (k1, k2) -> k1));
+        }
+        return subBillIdAddressIdKeyAndOrderTrackMap;
+    }
+
+    @NotNull
+    private Set<Long> getLogOrderIds(WaybillOrderReq req) {
+        Set<Long> logOrderIds = Sets.newHashSet();
+        if (StringUtils.isNotBlank(req.getLogisticsOrderId())){
+            logOrderIds.add(Long.parseLong(req.getLogisticsOrderId()));
+        }
+
+        if (StringUtils.isNotBlank(req.getLogisticsOrderNo()) && StringUtils.isBlank(req.getLogisticsOrderId())){
+            KwtLogisticsOrder kwtLogisticsOrder = logisticsOrderRepository.queryByLogisticsOrderNo(req.getLogisticsOrderNo());
+            if (Objects.nonNull(kwtLogisticsOrder)){
+                logOrderIds.add(kwtLogisticsOrder.getId());
+            }
+        }
+        Set<Long> entIds = Sets.newHashSet();
+        if (StringUtils.isNotBlank(req.getConsignorId())){
+            entIds.add(Long.parseLong(req.getConsignorId()));
+        }
+        if (StringUtils.isNotBlank(req.getCarrierId())){
+            entIds.add(Long.parseLong(req.getCarrierId()));
+        }
+        //根据单位查询订单id
+        List<KwtLogisticsOrderUnit> unitList = kwtLogisticsOrderUnitRepository.queryByEntIds(entIds);
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(unitList)){
+            logOrderIds.addAll(unitList.stream()
+                    .map(KwtLogisticsOrderUnit::getLOrderId)
+                    .collect(Collectors.toSet())) ;
+        }
+        return logOrderIds;
+    }
+
+    @NotNull
+    private Set<Long> getBillOrderIds(WaybillOrderReq req) {
+        Set<Long> billOrderIds = Sets.newHashSet();
+        KwtWaybillOrder order = getKwtWaybillOrder(req);
+        boolean b = Stream.of(req.getWaybillNo(), req.getTruckNo(), req.getDriverName(), req.getPhone()).anyMatch(StringUtils::isNotBlank);
+        if (b){
+            List<KwtWaybillOrder> waybillOrders = kwtWaybillOrderRepository.queryByCondition(order);
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(waybillOrders)){
+                billOrderIds.addAll(waybillOrders.stream()
+                        .map(KwtWaybillOrder::getId)
+                        .collect(Collectors.toSet()));
+            }
+        }
+        return billOrderIds;
+    }
+
+    @NotNull
+    private static WaybillOrderResp getWaybillOrderResp(KwtWaybillOrderSubtask record, Map<Long, KwtWaybillOrder> finalWaybillOrderIdAndBillOrderMap,
+                                                        Map<String, KwtLogisticsOrderUnit> finalLogOrderIdUnitTypeKeyAndUnitMap, Map<Long, KwtLogisticsOrderGoods> finalLogOrderIdAndGoodsIdMap, Map<Long, KwpGoods> kwpGoodsMap
+            , Map<String, KwtWaybillOrderAddress> finalSubOrderIdAddressTypeKeyAndAddressMap, Map<String, KwtWaybillOrderTrack> finalSubBillIdAddressIdKeyAndOrderTrackMap) {
+        WaybillOrderResp waybillOrderResp = new WaybillOrderResp();
+        KwtWaybillOrder billOrder = finalWaybillOrderIdAndBillOrderMap.getOrDefault(record.getWOrderId(),
+                new KwtWaybillOrder());
+        waybillOrderResp.setWaybillOrderId(String.valueOf(billOrder.getId()));
+        waybillOrderResp.setWaybillOrderNo(billOrder.getWOrderNo());
+        KwtLogisticsOrderUnit consignUnit = finalLogOrderIdUnitTypeKeyAndUnitMap.getOrDefault(record.getLOrderId() + "-" + NumberConstant.ONE,
+                new KwtLogisticsOrderUnit());
+        waybillOrderResp.setConsignUnitId(String.valueOf(consignUnit.getEntId()));
+        waybillOrderResp.setConsignUnitName(consignUnit.getFirmName());
+        KwtLogisticsOrderUnit carriageUnit =
+                finalLogOrderIdUnitTypeKeyAndUnitMap.getOrDefault(record.getLOrderId() + "-" + NumberConstant.TWO,
+                new KwtLogisticsOrderUnit());
+        waybillOrderResp.setCarriageUnitId(String.valueOf(carriageUnit.getEntId()));
+        waybillOrderResp.setCarriageUnitName(carriageUnit.getFirmName());
+        waybillOrderResp.setTruckNo(billOrder.getTruckNo());
+        waybillOrderResp.setDriverName(billOrder.getDriverName());
+        waybillOrderResp.setDriverPhone(billOrder.getDriverPhone());
+        Long lOrderId = record.getLOrderId();
+
+        KwtLogisticsOrderGoods goods = finalLogOrderIdAndGoodsIdMap.getOrDefault(lOrderId,
+                new KwtLogisticsOrderGoods());
+        KwpGoods kwpGoods = kwpGoodsMap.getOrDefault(goods.getGoodsId(), new KwpGoods());
+        waybillOrderResp.setGoodsName(kwpGoods.getName()+"/"+kwpGoods.getGoodsType()+"/"+kwpGoods.getSpec());
+        waybillOrderResp.setTaskNum(Objects.nonNull(billOrder.getEntrustAmount()) ?
+                billOrder.getEntrustAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "0.00");
+        waybillOrderResp.setLoadingNetWeight(Objects.nonNull(billOrder.getLoadAmount()) ?
+                billOrder.getLoadAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "0.00");
+        KwtWaybillOrderAddress loadingAdd = finalSubOrderIdAddressTypeKeyAndAddressMap.getOrDefault(record.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(),
+                new KwtWaybillOrderAddress());
+        waybillOrderResp.setLoadingAddress(loadingAdd.getDetailAddress());
+        waybillOrderResp.setUnloadingNetWeight(Objects.nonNull(billOrder.getUnloadAmount()) ?
+                billOrder.getUnloadAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "0.00");
+        KwtWaybillOrderAddress unloadingAdd =
+                finalSubOrderIdAddressTypeKeyAndAddressMap.getOrDefault(record.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(),
+                new KwtWaybillOrderAddress());
+        waybillOrderResp.setUnloadingAddress(unloadingAdd.getDetailAddress());
+
+        KwtWaybillOrderTrack loadTrack =
+                finalSubBillIdAddressIdKeyAndOrderTrackMap.getOrDefault(record.getId() + "-" + loadingAdd.getId(),
+                new KwtWaybillOrderTrack());
+
+        waybillOrderResp.setAcceptTime(DateUtils.format(record.getCreateTime(),DateUtils.DATE_TIME_PATTERN));
+        KwtWaybillOrderTrack unloadTrack =
+                finalSubBillIdAddressIdKeyAndOrderTrackMap.getOrDefault(record.getId() + "-" + loadingAdd.getId(),
+                        new KwtWaybillOrderTrack());
+        waybillOrderResp.setLoadingTime(DateUtils.format(loadTrack.getOperateTime(),DateUtils.DATE_TIME_PATTERN));
+        waybillOrderResp.setOffsiteTime(DateUtils.format(unloadTrack.getOperateTime(),DateUtils.DATE_TIME_PATTERN));
+        waybillOrderResp.setStatus(String.valueOf(record.getStatus()));
+        waybillOrderResp.setStatusDesc(CarWaybillEnum.getName(record.getStatus()));
+        return waybillOrderResp;
     }
+
+    @NotNull
+    private static KwtWaybillOrder getKwtWaybillOrder(WaybillOrderReq req) {
+        KwtWaybillOrder order = new KwtWaybillOrder();
+        order.setWOrderNo(req.getWaybillNo());
+        order.setTruckNo(req.getTruckNo());
+        order.setDriverName(req.getDriverName());
+        order.setDriverPhone(req.getPhone());
+        return order;
+    }
+
 }

+ 1 - 1
sql/2025/11/30/2025_11_30_cxf_alert.sql

@@ -23,7 +23,7 @@ ALTER TABLE kwc_contract_trade_goods ADD end_time date NOT NULL default '1000-01
 
 # ALTER TABLE kwc_contract_logistics_goods ADD price decimal(10, 2)  NOT NULL default '0'  comment '运输单价';
 
-ALTER TABLE kwc_contract_logistics_goods ADD common_price decimal(10, 2)  NOT NULL default '0'  comment '通用价格';
+ALTER TABLE kwc_contract_logistics ADD common_price decimal(10, 2)  NOT NULL default '0'  comment '通用价格';
 
 
 ALTER TABLE kwo_trade_order ADD charge_type TINYINT NOT NULL default '0'  comment '计费方式';