ソースを参照

提交修改商品名称

chenxiaofei 5 ヶ月 前
コミット
53b8d48ab0

+ 79 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/LocUtils.java

@@ -1,6 +1,8 @@
 package com.sckw.core.utils;
 
 import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
@@ -129,6 +131,82 @@ public class LocUtils {
         return null;
     }
 
+    /**
+     * 使用高德API计算两点之间的距离(驾车距离)
+     *
+     * @param startLng    起点经度
+     * @param startLat    起点纬度
+     * @param endLng      终点经度
+     * @param endLat      终点纬度
+     * @return 距离(千米),如果计算失败返回-1
+     */
+    public static double calculateDistanceByAmap(String startLng, String startLat, String endLng, String endLat) {
+        log.info("开始调用高德API计算两点之间的距离,起点: {},{} 终点: {},{}",startLat, startLng, endLat, endLng);
+        if (org.apache.commons.lang3.StringUtils.isAnyBlank(startLng, startLat, endLng, endLat)){
+            log.warn("高德API计算距离参数不完整");
+            return -1;
+        }
+        
+        // 构建高德驾车路径规划API请求
+        StringBuilder requestUrl = new StringBuilder();
+        requestUrl.append("https://restapi.amap.com/v3/direction/driving?");
+        requestUrl.append("origin=").append(startLng).append(",").append(startLat);
+        requestUrl.append("&destination=").append(endLng).append(",").append(endLat);
+        requestUrl.append("&extensions=base&output=json");
+        requestUrl.append("&key=").append(GD_KEY);
+
+        try {
+            HttpClient httpClient = HttpClients.createDefault();
+            HttpGet httpGet = new HttpGet(requestUrl.toString());
+            HttpResponse response = httpClient.execute(httpGet);
+            HttpEntity entity = response.getEntity();
+            String responseStr = EntityUtils.toString(entity, "UTF-8");
+            
+            log.info("高德驾车路径规划API计算距离响应: {}", responseStr);
+            
+            JSONObject resultJson = responseStr != null ? JSON.parseObject(responseStr) : null;
+            if (resultJson == null || !"1".equals(resultJson.getString("status"))) {
+                log.warn("高德API计算距离调用失败");
+                return -1;
+            }
+            
+            // 解析距离信息(单位:米)
+            Double distance = parseDistance(resultJson);
+            if (distance != null) {
+                // 将米转换为千米并保留2位小数
+                return new BigDecimal(distance / 1000)
+                        .setScale(2, RoundingMode.HALF_UP)
+                        .doubleValue();
+            }
+            
+            return -1;
+        } catch (Exception e) {
+            log.error("调用高德API计算距离异常", e);
+            return -1;
+        }
+    }
+
+    /**
+     * 解析高德API返回的路径距离(单位:米)
+     */
+    private static Double parseDistance(JSONObject resultJson) {
+        try {
+            JSONObject route = resultJson.getJSONObject("route");
+            if (route == null) return null;
+            
+            JSONArray paths = route.getJSONArray("paths");
+            if (paths == null || paths.isEmpty()) return null;
+            
+            JSONObject path = paths.getJSONObject(0);
+            // distance字段表示距离,单位:米
+            String distanceStr = path.getString("distance");
+            return Double.parseDouble(distanceStr);
+        } catch (Exception e) {
+            log.error("解析路径距离异常", e);
+            return null;
+        }
+    }
+
     /**
      * 解析高德API返回的路径耗时(单位:秒)
      */
@@ -248,4 +326,4 @@ public class LocUtils {
         String res = regeo("118.879289", "38.052237");
         System.out.println(res);
     }
-}
+}

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/TruckSelectReq.java

@@ -28,5 +28,10 @@ public class TruckSelectReq implements Serializable {
      */
     @Schema(description = "定位状态筛选(1-在线,0-离线,null-全部)")
     private Integer locationStatus;
+    /**
+     * 运单号
+     */
+    @Schema(description = "运单号(模糊匹配)")
+    private String waybillOrderNo;
 
 }

+ 8 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderSelectReq.java

@@ -1,6 +1,7 @@
 package com.sckw.transport.model.dto;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
 import java.io.Serial;
@@ -28,4 +29,11 @@ public class WaybillOrderSelectReq implements Serializable {
      */
     @Schema(description = "企业ID")
     private Long entId;
+
+    /**
+     * 日期(格式:yyyy-MM-dd)
+     */
+    @Schema(description = "日期(格式:yyyy-MM-dd)", example = "2025-11-18", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "日期不能为空")
+    private String date;
 }

+ 9 - 7
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderRepository.java

@@ -35,7 +35,7 @@ public class KwtWaybillOrderRepository extends ServiceImpl<KwtWaybillOrderMapper
      * @param wOrderNo 运单号(模糊匹配)
      * @return 运单号列表
      */
-    public List<KwtWaybillOrder> selectWaybillOrderOptions(Set<Long> wayOrderIds, String wOrderNo) {
+    public List<KwtWaybillOrder> selectWaybillOrderOptions(Set<Long> wayOrderIds, String wOrderNo,LocalDateTime startDateTime, LocalDateTime endDateTime) {
         LambdaQueryWrapper<KwtWaybillOrder> wrapper = Wrappers.<KwtWaybillOrder>lambdaQuery()
                 .select(KwtWaybillOrder::getId,
                         KwtWaybillOrder::getWOrderNo,
@@ -46,6 +46,8 @@ public class KwtWaybillOrderRepository extends ServiceImpl<KwtWaybillOrderMapper
                 .eq(KwtWaybillOrder::getDelFlag, 0)
                 .in(CollectionUtils.isNotEmpty(wayOrderIds), KwtWaybillOrder::getId, wayOrderIds)
                 .like(StringUtils.isNotBlank(wOrderNo), KwtWaybillOrder::getWOrderNo, wOrderNo)
+                .ge(Objects.nonNull(startDateTime),KwtWaybillOrder::getCreateTime, startDateTime)
+                .le(Objects.nonNull(endDateTime),KwtWaybillOrder::getCreateTime, endDateTime)
                 .orderByDesc(KwtWaybillOrder::getCreateTime);
 
         return list(wrapper);
@@ -86,11 +88,11 @@ public class KwtWaybillOrderRepository extends ServiceImpl<KwtWaybillOrderMapper
                 .last("limit 1"));
     }
 
-    public KwtWaybillOrder findOneByTruckNo(String truckNo, Long entId ) {
+    public KwtWaybillOrder findOneByTruckNo(String truckNo, Set<Long> wayOrderIds ) {
         return getOne(Wrappers.<KwtWaybillOrder>lambdaQuery()
                 .eq(KwtWaybillOrder::getDelFlag,0)
                 .eq(KwtWaybillOrder::getTruckNo,truckNo)
-                .eq(KwtWaybillOrder::getEntId, entId)
+                .in(KwtWaybillOrder::getId, wayOrderIds)
                 .orderByDesc(KwtWaybillOrder::getId)
                 .last("limit 1"));
     }
@@ -209,7 +211,7 @@ public class KwtWaybillOrderRepository extends ServiceImpl<KwtWaybillOrderMapper
      * @param truckNo 车牌号关键字(模糊匹配)
      * @return 车辆列表(按车牌号分组去重,最多返回100条)
      */
-    public List<KwtWaybillOrder> selectTruckListForSelect(String truckNo,Long entId) {
+    public List<KwtWaybillOrder> selectTruckListForSelect(String truckNo,Set<Long> wayOrderIds,String waybillNo) {
         LambdaQueryWrapper<KwtWaybillOrder> wrapper = Wrappers.<KwtWaybillOrder>lambdaQuery()
                 .select(KwtWaybillOrder::getTruckId,
                         KwtWaybillOrder::getTruckNo,
@@ -218,11 +220,11 @@ public class KwtWaybillOrderRepository extends ServiceImpl<KwtWaybillOrderMapper
                         KwtWaybillOrder::getDriverPhone,
                         KwtWaybillOrder::getStatus)
                 .eq(KwtWaybillOrder::getDelFlag, 0)
-                .eq(KwtWaybillOrder::getEntId,entId)
+                .in(KwtWaybillOrder::getId,wayOrderIds)
                 .like(StringUtils.isNotBlank(truckNo), KwtWaybillOrder::getTruckNo, truckNo)
+                .like(StringUtils.isNotBlank(waybillNo), KwtWaybillOrder::getWOrderNo, waybillNo)
                 .groupBy(KwtWaybillOrder::getTruckNo)
-                .orderByDesc(KwtWaybillOrder::getUpdateTime)
-                .last("LIMIT 100");
+                .orderByDesc(KwtWaybillOrder::getUpdateTime);
         return list(wrapper);
     }
 

+ 28 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java

@@ -2518,7 +2518,21 @@ public class KwtLogisticsConsignmentService {
         logisticsOrderResp.setUnloadPhone(unloadAdd.getPhone());
         logisticsOrderResp.setStartTime(DateUtils.format(kwtLogisticsOrder.getStartTime(), DateUtils.DATE_PATTERN));
         logisticsOrderResp.setEndTime(DateUtils.format(kwtLogisticsOrder.getEndTime(), DateUtils.DATE_PATTERN));
-
+        //装卸地之间距离
+        double distanceKm = LocUtils.calculateDistanceByAmap(
+                Optional.ofNullable(loadAdd.getLng()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(loadAdd.getLat()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(unloadAdd.getLng()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(unloadAdd.getLat()).map(String::valueOf).orElse(null));
+        // 如果高德API调用失败,使用原始方法作为备选
+        if (distanceKm == -1) {
+            distanceKm = DistanceUtils.calculateDistance(
+                Optional.ofNullable(loadAdd.getLng()).map(Double::valueOf).orElse(null),
+                Optional.ofNullable(loadAdd.getLat()).map(Double::valueOf).orElse(null),
+                Optional.ofNullable(unloadAdd.getLng()).map(Double::valueOf).orElse(null),
+                Optional.ofNullable(unloadAdd.getLat()).map(Double::valueOf).orElse(null));
+        }
+        logisticsOrderResp.setDistanceKm(distanceKm);
         KwtLogisticsOrderContract orderContract = finalLogOrderIdAndContractMap.getOrDefault(kwtLogisticsOrder.getId(),
                 new KwtLogisticsOrderContract());
         logisticsOrderResp.setContractNo(orderContract.getContractNo());
@@ -2782,11 +2796,19 @@ public class KwtLogisticsConsignmentService {
         loadingInfoVO.setUnloadAddress(unloadAdd.getCityName() + unloadAdd.getDetailAddress());
         loadingInfoVO.setUnloadContacts(unloadAdd.getContacts());
         loadingInfoVO.setUnloadPhone(unloadAdd.getPhone());
-        double distanceKm = DistanceUtils.calculateDistance(
-                Optional.ofNullable(loadAdd.getLng()).map(Double::valueOf).orElse(null),
-                Optional.ofNullable(loadAdd.getLat()).map(Double::valueOf).orElse(null),
-                Optional.ofNullable(unloadAdd.getLng()).map(Double::valueOf).orElse(null),
-                Optional.ofNullable(unloadAdd.getLat()).map(Double::valueOf).orElse(null));
+        //装卸地之间距离
+        double distanceKm = LocUtils.calculateDistanceByAmap(
+                Optional.ofNullable(loadAdd.getLng()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(loadAdd.getLat()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(unloadAdd.getLng()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(unloadAdd.getLat()).map(String::valueOf).orElse(null));
+        if (distanceKm ==-1){
+               distanceKm = DistanceUtils.calculateDistance(
+                    Optional.ofNullable(loadAdd.getLng()).map(Double::valueOf).orElse(null),
+                    Optional.ofNullable(loadAdd.getLat()).map(Double::valueOf).orElse(null),
+                    Optional.ofNullable(unloadAdd.getLng()).map(Double::valueOf).orElse(null),
+                    Optional.ofNullable(unloadAdd.getLat()).map(Double::valueOf).orElse(null));
+        }
         loadingInfoVO.setReferenceDistance(String.valueOf(distanceKm));
         logisticsOrderDetailResp.setLoadingInfoVO(loadingInfoVO);
     }

+ 7 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -56,6 +56,9 @@ import org.springframework.web.bind.annotation.RequestParam;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -125,7 +128,9 @@ public class KwtWaybillOrderService {
      */
     public List<WaybillOrderSelectOptionVo> getWaybillOrderSelectList(WaybillOrderSelectReq req) {
         Long entId = req.getEntId() != null ? req.getEntId() : LoginUserHolder.getEntId();
-
+        LocalDate date = LocalDate.parse(req.getDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        LocalDateTime startDateTime = date.atStartOfDay();
+        LocalDateTime endDateTime = date.atTime(23, 59, 59);
         //根据企业查询物流订单
         List<KwtLogisticsOrderUnit> kwtLogisticsOrderUnits = logisticsOrderUnitRepository.queryByEntId(entId);
         if (CollUtil.isEmpty(kwtLogisticsOrderUnits)) {
@@ -154,7 +159,7 @@ public class KwtWaybillOrderService {
                 .map(KwtWaybillOrderSubtask::getWOrderId)
                 .collect(Collectors.toSet());
         //查询
-        List<KwtWaybillOrder> waybillOrders = waybillOrderRepository.selectWaybillOrderOptions(wayOrderIds, req.getKeyword());
+        List<KwtWaybillOrder> waybillOrders = waybillOrderRepository.selectWaybillOrderOptions(wayOrderIds, req.getKeyword(),startDateTime,endDateTime);
         if (org.apache.commons.collections4.CollectionUtils.isEmpty(waybillOrders)) {
             return List.of();
         }

+ 18 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -3559,11 +3559,19 @@ public class KwtWaybillOrderV1Service {
         waybillOrderDetailResp.setUnloadAddress(unLoadAdd.getCityName()+unLoadAdd.getDetailAddress());
 
         //预计里程
-        double distanceKm = DistanceUtils.calculateDistance(
+        double distanceKm = com.sckw.core.utils.LocUtils.calculateDistanceByAmap(
+                Optional.ofNullable(loadAdd.getLat()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(loadAdd.getLng()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(unLoadAdd.getLat()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(unLoadAdd.getLng()).map(String::valueOf).orElse(null));
+        // 如果高德API调用失败,使用原始方法作为备选
+        if (distanceKm == -1) {
+            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.setLoadLatitude(loadAdd.getLat());
         waybillOrderDetailResp.setLoadLongitude(loadAdd.getLng());
@@ -3944,11 +3952,19 @@ public class KwtWaybillOrderV1Service {
         KwtWaybillOrderAddress takeAddress = addressMap.getOrDefault(AddressTypeEnum.TAKE.getCode(), new KwtWaybillOrderAddress());
 
         //应卸货地与实际卸货地之间距离
-        double twoPlaceDistanceKm = DistanceUtils.calculateDistance(
+        double twoPlaceDistanceKm = com.sckw.core.utils.LocUtils.calculateDistanceByAmap(
+                Optional.ofNullable(takeAddress.getLng()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(takeAddress.getLat()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(shipmentAddress.getLng()).map(String::valueOf).orElse(null),
+                Optional.ofNullable(shipmentAddress.getLat()).map(String::valueOf).orElse(null));
+        // 如果高德API调用失败,使用原始方法作为备选
+        if (twoPlaceDistanceKm == -1) {
+            twoPlaceDistanceKm = DistanceUtils.calculateDistance(
                 Optional.ofNullable(takeAddress.getLng()).map(Double::valueOf).orElse(null),
                 Optional.ofNullable(takeAddress.getLat()).map(Double::valueOf).orElse(null),
                 Optional.ofNullable(shipmentAddress.getLng()).map(Double::valueOf).orElse(null),
                 Optional.ofNullable(shipmentAddress.getLat()).map(Double::valueOf).orElse(null));
+        }
         //运输时间/返回时间(小时) = 两地距离除以平均行驶速度
         if (twoPlaceDistanceKm == 0.0 || Double.isNaN(twoPlaceDistanceKm)) {
             throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "物流运单装货地址有误!");

+ 58 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/kwfTruckTraceService.java

@@ -1,5 +1,6 @@
 package com.sckw.transport.service;
 
+import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -10,6 +11,7 @@ import com.google.common.collect.Sets;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
+import com.sckw.core.model.base.BaseModel;
 import com.sckw.core.model.enums.AddressTypeEnum;
 import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.CarWaybillV1Enum;
@@ -36,6 +38,7 @@ import com.sckw.system.api.model.dto.res.KwsEnterpriseResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.transport.api.model.vo.RWaybillOrderVo;
 import com.sckw.transport.common.config.UrlConfigProperties;
+import com.sckw.transport.dao.KwtWaybillOrderSubtaskMapper;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.TruckDto;
 import com.sckw.transport.api.feign.VehicleTraceClient;
@@ -95,6 +98,7 @@ public class kwfTruckTraceService {
     private final KwtLogisticsOrderGoodsRepository kwtLogisticsOrderGoodsRepository;
     private final KwtLogisticsOrderRepository kwtLogisticsOrderRepository;
     private final KwtVehicleExceptionRepository kwtVehicleExceptionRepository;
+    private final KwtWaybillOrderSubtaskMapper waybillOrderSubtaskDao;;
     private final KwtLogisticsOrderAddressRepository kwtLogisticsOrderAddressRepository;
     @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 8000)
     RemoteSystemService remoteSystemService;
@@ -471,7 +475,7 @@ public class kwfTruckTraceService {
         }
         //查询关联订单号
 
-        KwtWaybillOrder oneByTruckNo = kwtWaybillOrderRepository.findOneByTruckNo(truckNo,LoginUserHolder.getEntId());
+        KwtWaybillOrder oneByTruckNo = kwtWaybillOrderRepository.findOneByTruckNo(truckNo,null);
 
         KwtWaybillOrderSubtask waybillOrderSubtask = kwtWaybillOrderSubtaskRepository.findOneByWOrderNo(oneByTruckNo.getWOrderNo());
         instance.setLogicOrderNo(Objects.nonNull(waybillOrderSubtask) && Objects.nonNull(waybillOrderSubtask.getLOrderId())
@@ -549,12 +553,36 @@ public class kwfTruckTraceService {
         // 获取当前登录用户的企业ID
         Long entId = LoginUserHolder.getEntId();
         String wOrderNo = StringUtils.EMPTY ;
-        
         // 如果请求中包含订单号,则直接使用;否则根据车牌号查询对应订单号
         if (StringUtils.isNotBlank(req.getOrderNo())){
             wOrderNo  = req.getOrderNo();
         }else {
-            KwtWaybillOrder waybillOrder = kwtWaybillOrderRepository.findOneByTruckNo(req.getTruckNo(),entId);
+            //根据企业查询物流订单
+            List<KwtLogisticsOrderUnit> kwtLogisticsOrderUnits = kwtLogisticsOrderUnitRepository.queryByEntId(entId);
+            if (CollUtil.isEmpty(kwtLogisticsOrderUnits)) {
+                log.info("该企业未查询到物流订单数据,企业id:{}", entId);
+                return new CurrentTaskTraceReqVo();
+            }
+            //获取物流订单号
+            Set<Long> logOrderIds = kwtLogisticsOrderUnits.stream()
+                    .map(KwtLogisticsOrderUnit::getLOrderId)
+                    .collect(Collectors.toSet());
+            if (CollUtil.isEmpty(logOrderIds)) {
+                log.info("该企业下物流订单数据,企业id:{}", entId);
+                return new CurrentTaskTraceReqVo();
+            }
+            //查询子运单
+            List<KwtWaybillOrderSubtask> kwtWaybillOrderSubtasks = waybillOrderSubtaskDao.selectList(Wrappers.<KwtWaybillOrderSubtask>lambdaQuery()
+                    .in(KwtWaybillOrderSubtask::getLOrderId, logOrderIds)
+                    .eq(BaseModel::getDelFlag, 0));
+            if(org.apache.commons.collections4.CollectionUtils.isEmpty(kwtWaybillOrderSubtasks)){
+                log.info("该企业下子运单的订单数据不存在,企业id:{}", entId);
+                return new CurrentTaskTraceReqVo();
+            }
+            Set<Long> wayOrderIds = kwtWaybillOrderSubtasks.stream()
+                    .map(KwtWaybillOrderSubtask::getWOrderId)
+                    .collect(Collectors.toSet());
+            KwtWaybillOrder waybillOrder = kwtWaybillOrderRepository.findOneByTruckNo(req.getTruckNo(),wayOrderIds);
             wOrderNo = Optional.ofNullable(waybillOrder).map(KwtWaybillOrder::getWOrderNo).orElse("");
         }
         
@@ -829,9 +857,34 @@ public class kwfTruckTraceService {
      */
     public List<TruckSelectVo> getTruckSelectList(TruckSelectReq req) {
         log.info("查询车辆下拉列表参数:{}", JSON.toJSONString( req));
-        
+        Long entId = LoginUserHolder.getEntId();
+        //根据企业查询物流订单
+        List<KwtLogisticsOrderUnit> kwtLogisticsOrderUnits = kwtLogisticsOrderUnitRepository.queryByEntId(entId);
+        if (CollUtil.isEmpty(kwtLogisticsOrderUnits)) {
+            log.info("该企业未查询到物流订单数据,企业id:{}", entId);
+            return List.of();
+        }
+        //获取物流订单号
+        Set<Long> logOrderIds = kwtLogisticsOrderUnits.stream()
+                .map(KwtLogisticsOrderUnit::getLOrderId)
+                .collect(Collectors.toSet());
+        if (CollUtil.isEmpty(logOrderIds)) {
+            log.info("该企业下物流订单数据,企业id:{}", entId);
+            return List.of();
+        }
+        //查询子运单
+        List<KwtWaybillOrderSubtask> kwtWaybillOrderSubtasks = waybillOrderSubtaskDao.selectList(Wrappers.<KwtWaybillOrderSubtask>lambdaQuery()
+                .in(KwtWaybillOrderSubtask::getLOrderId, logOrderIds)
+                .eq(BaseModel::getDelFlag, 0));
+        if(org.apache.commons.collections4.CollectionUtils.isEmpty(kwtWaybillOrderSubtasks)){
+            log.info("该企业下子运单的订单数据不存在,企业id:{}", entId);
+            return List.of();
+        }
+        Set<Long> wayOrderIds = kwtWaybillOrderSubtasks.stream()
+                .map(KwtWaybillOrderSubtask::getWOrderId)
+                .collect(Collectors.toSet());
         // 使用 Repository 查询车辆运单数据
-        List<KwtWaybillOrder> waybillOrders = kwtWaybillOrderRepository.selectTruckListForSelect(req.getTruckNo(),LoginUserHolder.getEntId());
+        List<KwtWaybillOrder> waybillOrders = kwtWaybillOrderRepository.selectTruckListForSelect(req.getTruckNo(),wayOrderIds,req.getWaybillOrderNo());
         
         if (CollectionUtils.isEmpty(waybillOrders)) {
             return new ArrayList<>();