Explorar el Código

Merge remote-tracking branch 'origin/dev_20251130' into dev_20251130

# Conflicts:
#	sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java
xucaiqin hace 2 meses
padre
commit
49dbbfabab
Se han modificado 45 ficheros con 1388 adiciones y 154 borrados
  1. 2 0
      sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/RemoteFleetService.java
  2. 2 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportRemoteService.java
  3. 10 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryLogisticDetailResp.java
  4. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryLogisticListResp.java
  5. 19 18
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractLogisticsService.java
  6. 11 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfFleetController.java
  7. 10 3
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java
  8. 33 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dubbo/RemoteFleetServiceImpl.java
  9. 25 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/request/QueryFleetReq.java
  10. 5 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/request/TruckInfoReq.java
  11. 125 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/QueryFleetResp.java
  12. 7 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfFleetRepository.java
  13. 2 2
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfFleetTruckRepository.java
  14. 20 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfTruckRepository.java
  15. 107 4
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfFleetService.java
  16. 27 3
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java
  17. 15 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/QueryTradeOrderReq.java
  18. 5 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderRepository.java
  19. 6 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderUnitRepository.java
  20. 134 45
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/TradeOrderManageService.java
  21. 2 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/EntInfoReq.java
  22. 4 4
      sckw-modules/sckw-system/src/main/java/com/sckw/system/repository/KwsEntTypeRepository.java
  23. 2 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java
  24. 32 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtLogisticsOrderController.java
  25. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java
  26. 22 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java
  27. 3 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderCirculate.java
  28. 2 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderAddress.java
  29. 3 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderTrack.java
  30. 5 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/QueryLogisticsOrderReq.java
  31. 5 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderReq.java
  32. 9 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderResp.java
  33. 41 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/CapacityReq.java
  34. 69 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/CapacityVo.java
  35. 41 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/DeleteCapacityReq.java
  36. 46 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderCirculateRepository.java
  37. 7 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderContractRepository.java
  38. 23 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderRepository.java
  39. 6 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderUnitRepository.java
  40. 7 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderAddressRepository.java
  41. 27 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderRepository.java
  42. 10 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderSubtaskRepository.java
  43. 206 55
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java
  44. 242 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java
  45. 3 1
      sql/2025/11/30/2025_11_30_cxf_alert.sql

+ 2 - 0
sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/RemoteFleetService.java

@@ -107,4 +107,6 @@ public interface RemoteFleetService {
 
 
     List<RTruckVo> findTruckByTruckIds(Set<Long> truckIds);
+
+    List<RFleetVo> findFleetByIds(Set<Long> fleetIds);
 }

+ 2 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportRemoteService.java

@@ -146,4 +146,6 @@ public interface TransportRemoteService {
      * @param tradeId 贸易订单id
      */
     List<KwtLogisticsOrderVO> queryLogisticOrderByTradeId(Long tradeId);
+
+    List<KwtLogisticsOrderVO> queryTransportEntByEntId(Long entId);
 }

+ 10 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryLogisticDetailResp.java

@@ -148,6 +148,16 @@ public class QueryLogisticDetailResp implements Serializable {
         @Schema(description = "通用价格")
         private BigDecimal commonPrice;
 
+        /**
+         * 合同状态
+         */
+        @Schema(description = "合同状态")
+        private String contractStatus;
+        /**
+         * 合同状态描述
+         */
+        @Schema(description = "合同状态描述")
+        private String contractStatusDesc;
 
 
     }

+ 5 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryLogisticListResp.java

@@ -100,6 +100,11 @@ public class QueryLogisticListResp implements Serializable {
      */
     @Schema(description = "终止日期")
     private String endDate;
+    /**
+     * 发起人id
+     */
+    @Schema(description = "发起人id")
+    private Long initiatorId;
     /**
      * 发起人
      */

+ 19 - 18
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractLogisticsService.java

@@ -1058,7 +1058,7 @@ public class KwcContractLogisticsService {
                 req.getContractNo(),
                 req.getContractName(),entIdList);
         List<KwcContractLogistics> records = page.getRecords();
-        if (CollectionUtils.isNotEmpty(records)) {
+        if (CollectionUtils.isEmpty(records)) {
             return PageDataResult.empty(req.getPageNum(),req.getPageSize());
         }
         //发起人id
@@ -1071,10 +1071,7 @@ public class KwcContractLogisticsService {
         if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(userIds)){
             longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(userIds);
         }
-        //企业id
-        Set<Long> entIds = records.stream()
-                .map(KwcContractLogistics::getEntId)
-                .collect(Collectors.toSet());
+
         //合同id
         Set<Long> contractIds = records.stream()
                 .map(KwcContractLogistics::getId)
@@ -1151,6 +1148,7 @@ public class KwcContractLogisticsService {
             queryLogisticListResp.setStartDate(startDate);
             String endDate = DateUtils.format(r.getEndTime(), DateUtils.DATE_TIME_PATTERN);
             queryLogisticListResp.setEndDate(endDate);
+            queryLogisticListResp.setInitiatorId(r.getCreateBy());
             UserCacheResDto userCacheResDto = finalLongUserCacheResDtoMap.getOrDefault(r.getCreateBy(), new UserCacheResDto());
             queryLogisticListResp.setInitiator(userCacheResDto.getName());
             EntCacheResDto entInfo = userCacheResDto.getEntInfo();
@@ -1170,19 +1168,13 @@ public class KwcContractLogisticsService {
     public Boolean addOrUpdateLogisticsContract(LogisticListReq req) {
         log.info("新增物流合同,请求参数 :{}", JSON.toJSONString(req));
         //查询物流合同
-        KwcContractLogistics kwcContractLogistics =
-                kwcContractLogisticsRepository.queryById(req.getId());
-        if (org.apache.commons.lang3.StringUtils.equals(kwcContractLogistics.getContractNo(),
-                req.getBaseInfo().getContractCode())){
-            throw new BusinessException("合同已存在,合同编号:{}", req.getBaseInfo().getContractCode());
-        }
         long contactId = new IdWorker(1L).nextId();
 
         KwcContractLogistics saveContractLogistics = new KwcContractLogistics();
         Date date = new Date();
         LogisticListReq.TradeBaseInfo baseInfo = req.getBaseInfo();
         if (Objects.nonNull(req.getId())){
-            saveContractLogistics.setId(contactId);
+            saveContractLogistics.setId(req.getId());
         }else {
             saveContractLogistics.setId(contactId);
         }
@@ -1274,11 +1266,13 @@ public class KwcContractLogisticsService {
         List<KwcContractLogisticsUnit> units = Lists.newArrayList();
         //存供应商
         if(Objects.nonNull(baseInfo.getProvideEntId())) {
-            buildLogisticsUnit(contactId, baseInfo.getProvideEntId(), baseInfo.getProvidePhone(), entCacheResDtoMap, date, units);
+            buildLogisticsUnit(contactId, baseInfo.getProvideEntId(), baseInfo.getProvidePhone(), entCacheResDtoMap,
+                    date, units,CooperateTypeEnum.SUPPLIER.getCode());
         }
         //存采购商
         if (Objects.nonNull(baseInfo.getPurchaseEntId())) {
-            buildLogisticsUnit(contactId, baseInfo.getPurchaseEntId(), baseInfo.getPurchasePhone(), entCacheResDtoMap, date, units);
+            buildLogisticsUnit(contactId, baseInfo.getPurchaseEntId(), baseInfo.getPurchasePhone(), entCacheResDtoMap
+                    , date, units,CooperateTypeEnum.PURCHASER.getCode());
         }
         //删除企业
         kwcContractLogisticsUnitRepository.removeByContractId(contactId);
@@ -1288,18 +1282,22 @@ public class KwcContractLogisticsService {
 
     private static void buildLogisticsUnit(long contactId, Long entId, String phone ,
                                            Map<Long
-            , EntCacheResDto> entCacheResDtoMap, Date date, List<KwcContractLogisticsUnit> units) {
+            , EntCacheResDto> entCacheResDtoMap, Date date, List<KwcContractLogisticsUnit> units,Integer unitType) {
         KwcContractLogisticsUnit kwcContractTradeUnit = new KwcContractLogisticsUnit();
         kwcContractTradeUnit.setId(new IdWorker(1L).nextId());
         kwcContractTradeUnit.setContractId(contactId);
-        kwcContractTradeUnit.setUnitType(CooperateTypeEnum.SUPPLIER.getCode());
+        kwcContractTradeUnit.setUnitType(unitType);
         kwcContractTradeUnit.setEntId(entId);
         EntCacheResDto entCacheResDto = entCacheResDtoMap.get(kwcContractTradeUnit.getEntId());
+        kwcContractTradeUnit.setFirmName("");
+        kwcContractTradeUnit.setContacts("");
+        kwcContractTradeUnit.setPhone("");
         if (Objects.nonNull(entCacheResDto)) {
             kwcContractTradeUnit.setFirmName(entCacheResDto.getFirmName());
+            kwcContractTradeUnit.setContacts(entCacheResDto.getContacts());
+            kwcContractTradeUnit.setPhone(entCacheResDto.getPhone());
         }
-        kwcContractTradeUnit.setContacts(entCacheResDto.getContacts());
-        kwcContractTradeUnit.setPhone(entCacheResDto.getPhone());
+
         kwcContractTradeUnit.setSignPhone(phone);
         kwcContractTradeUnit.setStatus(Global.NO);
         kwcContractTradeUnit.setCreateBy(LoginUserHolder.getUserId());
@@ -1368,6 +1366,9 @@ public class KwcContractLogisticsService {
                 String.valueOf(logistics.getSigningWay())));
         tradeBaseInfo.setStartTime(logistics.getStartTime());
         tradeBaseInfo.setCommonPrice(logistics.getCommonPrice());
+        tradeBaseInfo.setContractStatus(String.valueOf(logistics.getStatus()));
+        tradeBaseInfo.setContractStatusDesc(ContractStatusEnum.getNameByCode(logistics.getStatus()));
+
 
         queryLogisticListResp.setBaseInfo(tradeBaseInfo);
         queryLogisticListResp.setContractFile(logistics.getSigningUrl());

+ 11 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfFleetController.java

@@ -10,12 +10,16 @@ import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.core.web.response.BaseResult;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.core.web.response.ResponseUtil;
+import com.sckw.core.web.response.result.PageDataResult;
 import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.fleet.model.dto.KwfFleetDto;
+import com.sckw.fleet.model.request.QueryFleetReq;
 import com.sckw.fleet.model.vo.KwfFleetVo;
+import com.sckw.fleet.model.vo.QueryFleetResp;
 import com.sckw.fleet.service.KwfFleetService;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
@@ -140,4 +144,11 @@ public class KwfFleetController {
     public HttpResult findTruckList(@RequestBody Map<String, Object> params) throws SystemException {
         return HttpResult.ok(fleetService.findTruckList(params));
     }
+    /**
+     * 分页查询车队列表
+     */
+    @PostMapping("/findFleetByPage")
+    public BaseResult<PageDataResult<QueryFleetResp>> findFleetByPage(@RequestBody QueryFleetReq req) {
+        return BaseResult.success(fleetService.findFleetByPage(req));
+    }
 }

+ 10 - 3
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java

@@ -19,9 +19,7 @@ import com.sckw.fleet.model.dto.GpsByTruckNoDto;
 import com.sckw.fleet.model.dto.KwfTransportLicenseDto;
 import com.sckw.fleet.model.dto.KwfTruckDto;
 import com.sckw.fleet.model.dto.KwfTruckLicenseDto;
-import com.sckw.fleet.model.request.CapacityStatusReq;
-import com.sckw.fleet.model.request.TruckInfoReq;
-import com.sckw.fleet.model.request.TruckNoReq;
+import com.sckw.fleet.model.request.*;
 import com.sckw.fleet.model.vo.*;
 import com.sckw.fleet.service.KwfTruckService;
 import com.sckw.system.api.RemoteSystemService;
@@ -344,4 +342,13 @@ public class KwfTruckController {
     public BaseResult<List<KwfTruckVo>> queryTruckNo(@RequestBody TruckNoReq req) {
         return BaseResult.success(truckService.queryTruckNo(req));
     }
+
+    /**
+     * 添加运力分页查询车辆信息
+     */
+    @PostMapping("/queryPageCapacityTruck")
+    @Operation(summary = "添加运力分页查询车辆信息", description = "添加运力分页查询车辆信息")
+    public BaseResult<PageDataResult<KwfTruckDetailVo>> queryPageCapacityTruck(@RequestBody TruckInfoReq req) {
+        return BaseResult.success(truckService.queryPageCapacityTruck(req));
+    }
 }

+ 33 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dubbo/RemoteFleetServiceImpl.java

@@ -14,6 +14,7 @@ import com.sckw.fleet.model.*;
 import com.sckw.fleet.repository.*;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -400,5 +401,37 @@ public class RemoteFleetServiceImpl implements RemoteFleetService {
 
     }
 
+    @Override
+    public List<RFleetVo> findFleetByIds(Set<Long> fleetIds) {
+        List<KwfFleet> fleets = fleetRepository.findByfleetIds(fleetIds);
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(fleets)){
+            return Collections.emptyList();
+        }
+        return fleets.stream()
+                .map(RemoteFleetServiceImpl::getRFleetVo)
+                .collect(Collectors.toList());
+    }
+
+    @NotNull
+    private static RFleetVo getRFleetVo(KwfFleet fleet) {
+        RFleetVo rFleetVo = new RFleetVo();
+        rFleetVo.setId(fleet.getId());
+        rFleetVo.setRemark(fleet.getRemark());
+        rFleetVo.setStatus(fleet.getStatus());
+        rFleetVo.setCreateBy(fleet.getCreateBy());
+        rFleetVo.setCreateTime(fleet.getCreateTime());
+        rFleetVo.setUpdateBy(fleet.getUpdateBy());
+        rFleetVo.setUpdateTime(fleet.getUpdateTime());
+        rFleetVo.setDelFlag(fleet.getDelFlag());
+        rFleetVo.setEntId(fleet.getEntId());
+        rFleetVo.setCaptainId(fleet.getCaptainId());
+        rFleetVo.setName(fleet.getName());
+        rFleetVo.setContacts(fleet.getContacts());
+        rFleetVo.setPhone(fleet.getPhone());
+
+
+        return rFleetVo;
+    }
+
 
 }

+ 25 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/request/QueryFleetReq.java

@@ -0,0 +1,25 @@
+package com.sckw.fleet.model.request;
+
+import com.sckw.core.web.request.PageReq;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 查询车辆请求参数
+ * @create :2025-11-12 16:11:00
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class QueryFleetReq extends PageReq implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 6703980100931396505L;
+    /**
+     * 车队id
+     */
+    private String fleetId;
+}

+ 5 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/request/TruckInfoReq.java

@@ -40,4 +40,9 @@ public class TruckInfoReq extends PageReq implements Serializable {
      */
     @Schema(description = "结束时间")
     private String endTime;
+    /**
+     * 车辆业务状态(0空闲、1任务)
+     */
+    @Schema(description = "车辆业务状态(0空闲、1任务)")
+    private String businessStatus;
 }

+ 125 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/QueryFleetResp.java

@@ -0,0 +1,125 @@
+package com.sckw.fleet.model.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 查询车辆请求参数
+ * @create :2025-11-12 16:11:00
+ */
+
+@Data
+public class QueryFleetResp  implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 6703980100931396505L;
+    /**
+     * 主键id
+     */
+    @Schema(description = "主键id")
+    private Long id;
+
+    /**
+     * 企业id
+     */
+    @Schema(description = "企业id")
+    private Long entId;
+
+    /**
+     * 车队长id
+     */
+    @Schema(description = "车队长id")
+    private Long captainId;
+    /**
+     * 车队长名称
+     */
+    @Schema(description = "车队长名称")
+    private String captainName;
+
+    /**
+     * 车队名称
+     */
+    @Schema(description = "车队名称")
+    private String name;
+
+    /**
+     * 车队联系人
+     */
+    @Schema(description = "车队联系人")
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    @Schema(description = "联系电话")
+    private String phone;
+
+    /**
+     * 创建人
+     */
+    @Schema(description = "创建人")
+    private String createBy;
+
+    /**
+     * 创建人
+     */
+    @Schema(description = "创建人")
+    private String createByName;
+
+    /**
+     * 创建时间
+     */
+    @Schema(description = "创建时间")
+    private String createTime;
+
+
+   /**
+     * 更新时间
+     */
+    @Schema(description = "更新时间")
+    private String updateTime;
+
+    /**
+     * 备注
+     */
+    @Schema(description = "备注")
+    private String remark;
+    /**
+     * 车队车辆数量
+     */
+    @Schema(description = "车队车辆数量")
+    private Integer truckNum;
+
+    /**
+     * 车辆信息
+     */
+    @Schema(description = "车辆信息")
+    private List<TruckInfo> truckInfo;
+    @Data
+    public static class TruckInfo implements Serializable{
+        @Serial
+        private static final long serialVersionUID = -1243328886609432583L;
+        /**
+         * 车辆id
+         */
+        @Schema(description = "车辆id")
+        private Long truckId;
+        /**
+         * 车牌号
+         */
+        @Schema(description = "车牌号")
+        private String truckNo;
+        /**
+         * 车辆轴数
+         */
+        @Schema(description = "车辆轴数")
+        private String axleNum;
+    }
+}

+ 7 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfFleetRepository.java

@@ -63,4 +63,11 @@ public class KwfFleetRepository extends ServiceImpl<KwfFleetMapper, KwfFleet> {
                 .orderByDesc(BaseModel::getId)
                 .last("limit 1"));
     }
+
+    public IPage<KwfFleet> queryByPage(String fleetId, int pageNum, int pageSize) {
+        return page(new Page<>(pageNum, pageSize),
+                Wrappers.<KwfFleet>lambdaQuery()
+                        .eq(BaseModel::getDelFlag,0)
+                        .eq(StringUtils.isNotBlank(fleetId),KwfFleet::getId, fleetId));
+    }
 }

+ 2 - 2
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfFleetTruckRepository.java

@@ -17,11 +17,11 @@ import java.util.Set;
  */
 @Repository
 public class KwfFleetTruckRepository extends ServiceImpl<KwfFleetTruckMapper, KwfFleetTruck> {
-    public List<KwfFleetTruck> queryByFleetIds(Set<Long> truckIds) {
+    public List<KwfFleetTruck> queryByFleetIds(Set<Long> fleetIds) {
 
         return list(Wrappers.<KwfFleetTruck>lambdaQuery()
                 .eq(BaseModel::getDelFlag,0)
-                .in(KwfFleetTruck::getFleetId,truckIds));
+                .in(KwfFleetTruck::getFleetId,fleetIds));
     }
 
     public List<KwfFleetTruck> queryByTruckId(Long truckId) {

+ 20 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfTruckRepository.java

@@ -84,4 +84,24 @@ public class KwfTruckRepository extends ServiceImpl<KwfTruckMapper, KwfTruck> {
                 .eq(BaseModel::getDelFlag,0)
                 .in(KwfTruck::getId, truckIds));
     }
+
+    public IPage<KwfTruck> queryByPage(int pageNum, int pageSize, Long entId,Integer businessStatus, String truckNo) {
+        return page(new Page<>(pageNum, pageSize), Wrappers.<KwfTruck>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .eq(Objects.nonNull(entId),KwfTruck::getEntId, entId)
+                .like(StringUtils.isNotBlank(truckNo),KwfTruck::getTruckNo, truckNo)
+                .eq(Objects.nonNull(businessStatus),KwfTruck::getBusinessStatus, businessStatus)
+                .orderByDesc(KwfTruck::getId));
+    }
+
+    public KwfTruck queryByTruckId(Long truckId) {
+        return getOne(Wrappers.<KwfTruck>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .eq(KwfTruck::getId, truckId)
+                .last("limit 1"));
+    }
+
+    public Boolean updateTruck(KwfTruck updateTruck) {
+       return update(updateTruck, Wrappers.<KwfTruck>lambdaQuery().eq(KwfTruck::getId, updateTruck.getId()));
+    }
 }

+ 107 - 4
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfFleetService.java

@@ -1,27 +1,44 @@
 package com.sckw.fleet.service;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.base.BaseModel;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.DateUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.core.web.response.result.PageDataResult;
 import com.sckw.fleet.dao.KwfFleetMapper;
 import com.sckw.fleet.model.KwfFleet;
+import com.sckw.fleet.model.KwfFleetTruck;
+import com.sckw.fleet.model.KwfTruck;
 import com.sckw.fleet.model.dto.KwfFleetDto;
+import com.sckw.fleet.model.request.QueryFleetReq;
 import com.sckw.fleet.model.vo.KwfFleetTruckCountVo;
 import com.sckw.fleet.model.vo.KwfFleetVo;
+import com.sckw.fleet.model.vo.QueryFleetResp;
+import com.sckw.fleet.repository.KwfFleetRepository;
+import com.sckw.fleet.repository.KwfFleetTruckRepository;
+import com.sckw.fleet.repository.KwfTruckRepository;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
+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.stereotype.Service;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+
+import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -29,13 +46,19 @@ import java.util.stream.Collectors;
  * @desc 车队
  * @date 2023/7/6 0006
  */
+@Slf4j
 @Service
+@RequiredArgsConstructor
 public class KwfFleetService {
 
     @Autowired
     KwfFleetMapper fleetDao;
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
+    private final KwfFleetRepository kwfFleetRepository;
+    private final KwfFleetTruckRepository kwfFleetTruckRepository;
+    @Autowired
+    private KwfTruckRepository kwfTruckRepository;
 
     /**
      * @param key 主键id
@@ -184,4 +207,84 @@ public class KwfFleetService {
         result.put("truckCounts", truckCounts);
         return result;
     }
+
+    public PageDataResult<QueryFleetResp> findFleetByPage(QueryFleetReq req) {
+        log.info("查询车队列表请求:{}", JSON.toJSONString( req));
+        IPage<KwfFleet> page = kwfFleetRepository.queryByPage(req.getFleetId(),req.getPageNum(), req.getPageSize());
+        List<KwfFleet> records = page.getRecords();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(records)){
+            return PageDataResult.empty(req.getPageNum(), req.getPageSize());
+        }
+        Set<Long> userIds = Sets.newHashSet();
+        Set<Long> fleetIds = Sets.newHashSet();
+        records.forEach(item -> {
+            userIds.add(item.getCreateBy());
+            userIds.add(item.getCaptainId());
+        });
+        //查询用户信息
+        Map<Long, UserCacheResDto> userIdAndUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(new ArrayList<>(userIds));
+        //查询车辆
+        List<KwfFleetTruck> kwfFleetTrucks = kwfFleetTruckRepository.queryByFleetIds(fleetIds);
+        Map<Long, List<KwfFleetTruck>> fleetIdAndKwfFleetTruckList = Maps.newHashMap();
+        Set<Long> truckIds = Sets.newHashSet();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwfFleetTrucks)){
+            fleetIdAndKwfFleetTruckList =
+                    kwfFleetTrucks.stream().collect(Collectors.groupingBy(KwfFleetTruck::getFleetId));
+            truckIds = kwfFleetTrucks.stream().map(KwfFleetTruck::getTruckId).collect(Collectors.toSet());
+        }
+        //查询车辆信息
+        Map<Long, KwfTruck> truckIdAndTruckMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(truckIds)){
+            List<KwfTruck> trucks = kwfTruckRepository.queryByTruckIds(truckIds);
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(trucks)){
+                truckIdAndTruckMap = trucks.stream()
+                        .collect(Collectors.toMap(BaseModel::getId,
+                        Function.identity(), (e1, e2) -> e1));
+            }
+        }
+
+        Map<Long, List<KwfFleetTruck>> finalFleetIdAndKwfFleetTruckList = fleetIdAndKwfFleetTruckList;
+        List<QueryFleetResp> fleets = records.stream()
+                .map(item -> getQueryFleetResp(item, userIdAndUserCacheResDtoMap, finalFleetIdAndKwfFleetTruckList,truckIdAndTruckMap))
+                .toList();
+        return PageDataResult.of(page, fleets);
+    }
+
+    @NotNull
+    private static QueryFleetResp getQueryFleetResp(KwfFleet item,
+                                                    Map<Long, UserCacheResDto> userIdAndUserCacheResDtoMap, Map<Long, List<KwfFleetTruck>> finalFleetIdAndKwfFleetTruckList,Map<Long, KwfTruck> truckIdAndTruckMap) {
+        QueryFleetResp fleet = new QueryFleetResp();
+        fleet.setId(item.getId());
+        fleet.setEntId(item.getEntId());
+        fleet.setCaptainId(item.getCaptainId());
+        UserCacheResDto userCacheResDto = userIdAndUserCacheResDtoMap.getOrDefault(item.getCaptainId(), new UserCacheResDto());
+        fleet.setCaptainName(userCacheResDto.getName());
+        fleet.setName(item.getName());
+        fleet.setContacts(item.getContacts());
+        fleet.setPhone(item.getPhone());
+        fleet.setCreateBy(String.valueOf(item.getCreateBy()));
+        UserCacheResDto createUser = userIdAndUserCacheResDtoMap.getOrDefault(item.getCreateBy(),
+                new UserCacheResDto());
+        fleet.setCreateByName(createUser.getName());
+        fleet.setCreateTime(DateUtils.format(item.getCreateTime(),DateUtils.DATE_TIME_PATTERN));
+        fleet.setUpdateTime(DateUtils.format(item.getUpdateTime(),DateUtils.DATE_TIME_PATTERN));
+        fleet.setRemark(item.getRemark());
+        List<KwfFleetTruck> trucks = finalFleetIdAndKwfFleetTruckList.getOrDefault(item.getId(), new ArrayList<>());
+        List<QueryFleetResp.TruckInfo> truckInfos = trucks.stream()
+                .map(x -> getTruckInfo(truckIdAndTruckMap, x))
+                .collect(Collectors.toList());
+        fleet.setTruckInfo(truckInfos);
+        fleet.setTruckNum(trucks.size());
+
+        return fleet;
+    }
+
+    private static QueryFleetResp.TruckInfo getTruckInfo(Map<Long, KwfTruck> truckIdAndTruckMap, KwfFleetTruck x) {
+        QueryFleetResp.TruckInfo truckInfo = new QueryFleetResp.TruckInfo();
+        KwfTruck truck = truckIdAndTruckMap.getOrDefault(x.getTruckId(), new KwfTruck());
+        truckInfo.setTruckId(truck.getId());
+        truckInfo.setTruckNo(truck.getTruckNo());
+        truckInfo.setAxleNum(truck.getCarAxis());
+        return truckInfo;
+    }
 }

+ 27 - 3
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java

@@ -12,6 +12,7 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.common.enums.enums.FileEnum;
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.base.BaseModel;
 import com.sckw.core.model.constant.Global;
@@ -33,9 +34,7 @@ import com.sckw.fleet.config.UrlConfigProperties;
 import com.sckw.fleet.dao.*;
 import com.sckw.fleet.model.*;
 import com.sckw.fleet.model.dto.*;
-import com.sckw.fleet.model.request.CapacityStatusReq;
-import com.sckw.fleet.model.request.TruckInfoReq;
-import com.sckw.fleet.model.request.TruckNoReq;
+import com.sckw.fleet.model.request.*;
 import com.sckw.fleet.model.vo.*;
 import com.sckw.fleet.repository.*;
 import com.sckw.system.api.RemoteSystemService;
@@ -1809,4 +1808,29 @@ public class KwfTruckService {
         }
         return truckVoList;
     }
+
+
+    public PageDataResult<KwfTruckDetailVo> queryPageCapacityTruck(TruckInfoReq req) {
+         log.info("查询添加运力车辆请求参数:{}",JSON.toJSONString( req));
+         if (Objects.isNull(req.getEntId())){
+             throw new BusinessException("企业id不能为空");
+         }
+         Integer businessStatus = org.apache.commons.lang3.StringUtils.isBlank(req.getBusinessStatus()) ? null :
+                 Integer.parseInt(req.getBusinessStatus());
+        IPage<KwfTruck> kwfTruckIPage = kwfTruckRepository.queryByPage(req.getPageNum(), req.getPageSize(), req.getEntId(), businessStatus,
+                req.getTruckNo());
+        List<KwfTruck> records = kwfTruckIPage.getRecords();
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty( records)){
+            return PageDataResult.empty(req.getPageNum(),req.getPageSize());
+        }
+        List<KwfTruckDetailVo> truckInfoVos = records.stream().map(truck -> {
+            KwfTruckDetailVo truckInfoVo = new KwfTruckDetailVo();
+            truckInfoVo.setId(truck.getId());
+            truckInfoVo.setTruckNo(truck.getTruckNo());
+            truckInfoVo.setBusinessStatus(truck.getBusinessStatus());
+            truckInfoVo.setCarAxis(truck.getCarAxis());
+            return truckInfoVo;
+        }).collect(Collectors.toList());
+        return PageDataResult.of(kwfTruckIPage, truckInfoVos);
+    }
 }

+ 15 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/QueryTradeOrderReq.java

@@ -19,6 +19,16 @@ import java.io.Serializable;
 public class QueryTradeOrderReq extends PageReq implements Serializable {
     @Serial
     private static final long serialVersionUID = -1255552097881890061L;
+    /**
+     * 企业id
+     */
+    @Schema(description = "企业id")
+    private String entId;
+    /**
+     * 企业类型
+     */
+    @Schema(description = "企业类型")
+    private String entType;
     /**
      * 贸易合同id
      */
@@ -71,5 +81,10 @@ public class QueryTradeOrderReq extends PageReq implements Serializable {
      */
     @Schema(description = "下单结束时间")
     private String orderEndTime;
+    /**
+     * 贸易订单状态
+     */
+    @Schema(description = "贸易订单状态")
+    private String tradeOrderStatus;
 
 }

+ 5 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderRepository.java

@@ -12,6 +12,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * @author :chenXiaoFei
@@ -21,15 +22,18 @@ import java.util.List;
  */
 @Repository
 public class KwoTradeOrderRepository extends ServiceImpl<KwoTradeOrderMapper, KwoTradeOrder> {
-    public IPage<KwoTradeOrder> queryByPage(List<Long> orderIds, String orderNo, String orderStartTime,
+    public IPage<KwoTradeOrder> queryByPage(Set<Long> entIds,List<Long> orderIds, String orderNo, String status,
+                                            String orderStartTime,
                                             String orderEndTime,
                                             int pageNum,
                                             int pageSize) {
         Page<KwoTradeOrder> orderPage = new Page<>(pageNum, pageSize);
         return page(orderPage, Wrappers.<KwoTradeOrder>lambdaQuery()
                 .like(StringUtils.isNotBlank(orderNo),KwoTradeOrder::getTOrderNo, orderNo)
+                .in(CollectionUtils.isNotEmpty(entIds),KwoTradeOrder::getEntId, entIds)
                 .in(CollectionUtils.isNotEmpty(orderIds),KwoTradeOrder::getId, orderIds)
                 .eq(KwoTradeOrder::getDelFlag, 0)
+                .eq(StringUtils.isNotBlank(status),KwoTradeOrder::getStatus, status)
                 .ge(StringUtils.isNotBlank(orderStartTime),KwoTradeOrder::getCreateTime, orderStartTime)
                 .le(StringUtils.isNotBlank(orderEndTime),KwoTradeOrder::getCreateTime, orderEndTime));
     }

+ 6 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderUnitRepository.java

@@ -29,4 +29,10 @@ public class KwoTradeOrderUnitRepository extends ServiceImpl<KwoTradeOrderUnitMa
                 .eq(BaseModel::getDelFlag,0)
                 .eq(KwoTradeOrderUnit::getTOrderId, traderOrderId));
     }
+
+    public List<KwoTradeOrderUnit> queryByEntIds(List<Object> entIds) {
+        return list(Wrappers.<KwoTradeOrderUnit>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwoTradeOrderUnit::getEntId, entIds));
+    }
 }

+ 134 - 45
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/TradeOrderManageService.java

@@ -37,6 +37,7 @@ import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.KwpGoods;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.RemoteUserService;
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.api.dubbo.TransportRemoteService;
 import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
@@ -185,38 +186,19 @@ public class TradeOrderManageService {
 
     public PageDataResult<QueryTradeOrderResp> pageQueryTradeOrder(QueryTradeOrderReq req) {
         log.info("查询物流订单请求参数:{}", JSON.toJSONString( req));
+
+        Set<Long> allEnt = getEnt(req);
+
         //查询商品信息
-        List<KwpGoods> kwpGoodsList = Lists.newArrayList();
-        if (!org.apache.commons.lang3.StringUtils.isAllBlank(req.getGoodsName(), req.getGoodsType(),
-                req.getGoodsSpec())){
-            kwpGoodsList = goodsInfoService.getGoodsByNameTypeDesc(req.getGoodsName(), req.getGoodsType(),
-                    req.getGoodsSpec());
+        List<Long> orderIds = getOrderIds(req);
 
-        }
-        Set<Long> goodsIds = Sets.newHashSet();
-        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwpGoodsList)){
-            goodsIds = kwpGoodsList.stream().map(KwpGoods::getId).collect(Collectors.toSet());
-        }
 
 
-        //根据商品信息查询物流订单商品
-        List<KwoTradeOrderGoods> kwoTradeOrderGoodsList = Lists.newArrayList();
-        if (CollectionUtils.isNotEmpty(goodsIds)){
-            kwoTradeOrderGoodsList =
-                    tradeOrderGoodsRepository.queryByGoodsIds(goodsIds);
-        }
-        List<Long> orderIds = Lists.newArrayList();
-        if (CollectionUtils.isNotEmpty(kwoTradeOrderGoodsList)){
-            orderIds = kwoTradeOrderGoodsList.stream()
-                    .map(KwoTradeOrderGoods::getTOrderId)
-                    .toList();
-        }
-        if (StringUtils.isNotBlank(req.getTradeOrderId())){
-            orderIds.add(Long.valueOf(req.getTradeOrderId()));
-        }
 
         //分页查询订单
-        IPage<KwoTradeOrder> page = tradeOrderRepository.queryByPage(orderIds,req.getOrderNo(),req.getOrderStartTime(),
+        IPage<KwoTradeOrder> page = tradeOrderRepository.queryByPage(allEnt,orderIds,req.getOrderNo(),
+                req.getTradeOrderStatus(),
+                req.getOrderStartTime(),
                 req.getOrderEndTime(),
                 req.getPageNum(),req.getPageSize());
         List<KwoTradeOrder> records = page.getRecords();
@@ -255,12 +237,117 @@ public class TradeOrderManageService {
         }
 
         //查询商品信息
+        Map<Long, KwpGoods> goodsIdAndGoodsMap = getLongKwpGoodsMap(goodsIdList);
+
+        //查询贸易订单公司信息
+        Map<String, KwoTradeOrderUnit> orderIdUnitTypeAndUnitMap = getStringKwoTradeOrderUnitMap(tradeOrderIds);
+        //查询贸易订单地址信息
+        Map<String, KwoTradeOrderAddress> orderIdAndAddressMap = getStringKwoTradeOrderAddressMap(tradeOrderIds);
+        //查询贸易订单合同信息(一个贸易合同对应多个贸易订单)
+        Map<Long, KwoTradeOrderContract> tradeOrderIdAndContractMap = getLongKwoTradeOrderContractMap(tradeOrderIds);
+
+        //查询物流信息
+        Map<Integer, RTransportEntVo> entTypeAndTransportEntMap = getIntegerRTransportEntVoMap(tradeOrderIds);
+        //查询运单信息
+        Map<Long, RWaybillSubOrderVo> tradeIdAndSubOrderVoMap = getLongRWaybillSubOrderVoMap(tradeOrderIds);
+
+        Map<Long, KwoTradeOrderGoods> finalTradeOrderIdGoodsMap = tradeOrderIdGoodsMap;
+        Map<Long, UserCacheResDto> finalUserIdAndUserMap = userIdAndUserMap;
+        //组装返回参数
+        List<QueryTradeOrderResp> results = records.stream()
+                .map(tradeOrder -> getQueryTradeOrderResp(tradeOrder, orderIdUnitTypeAndUnitMap, entTypeAndTransportEntMap, finalTradeOrderIdGoodsMap, goodsIdAndGoodsMap, tradeIdAndSubOrderVoMap
+                        , orderIdAndAddressMap, tradeOrderIdAndContractMap, finalUserIdAndUserMap))
+                .collect(Collectors.toList());
+        return PageDataResult.of(page, results);
+    }
+
+    @NotNull
+    private Set<Long> getEnt(QueryTradeOrderReq req) {
+        Set<Long> allEnt = Sets.newHashSet();
+        //根据企业类型查询企业
+        if(StringUtils.isNotBlank(req.getEntId())){
+            allEnt.add(Long.parseLong(req.getEntId()));
+            EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(Long.parseLong(req.getEntId()));
+            if (Objects.nonNull(entCacheResDto)) {
+                EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntTreeById(entCacheResDto.getId());
+                List<EntCacheResDto> child = entCacheResDto1.getChild();
+                if (CollectionUtils.isNotEmpty(child)) {
+                    allEnt.addAll(child.stream().filter(x->x.getEntTypes().contains(req.getEntType())).map(EntCacheResDto::getId).toList());
+                }
+            }
+        }
+        return allEnt;
+    }
+
+    @NotNull
+    private List<Long> getOrderIds(QueryTradeOrderReq req) {
+        List<KwpGoods> kwpGoodsList = Lists.newArrayList();
+        if (!org.apache.commons.lang3.StringUtils.isAllBlank(req.getGoodsName(), req.getGoodsType(),
+                req.getGoodsSpec())){
+            kwpGoodsList = goodsInfoService.getGoodsByNameTypeDesc(req.getGoodsName(), req.getGoodsType(),
+                    req.getGoodsSpec());
+
+        }
+        Set<Long> goodsIds = Sets.newHashSet();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwpGoodsList)){
+            goodsIds = kwpGoodsList.stream().map(KwpGoods::getId).collect(Collectors.toSet());
+        }
+
+
+        //根据商品信息查询物流订单商品
+        List<KwoTradeOrderGoods> kwoTradeOrderGoodsList = Lists.newArrayList();
+        if (CollectionUtils.isNotEmpty(goodsIds)){
+            kwoTradeOrderGoodsList =
+                    tradeOrderGoodsRepository.queryByGoodsIds(goodsIds);
+        }
+        List<Long> orderIds = Lists.newArrayList();
+        if (CollectionUtils.isNotEmpty(kwoTradeOrderGoodsList)){
+            orderIds.addAll(kwoTradeOrderGoodsList.stream()
+                    .map(KwoTradeOrderGoods::getTOrderId)
+                    .toList());
+        }
+
+
+        if (StringUtils.isNotBlank(req.getTradeOrderId())){
+            orderIds.add(Long.valueOf(req.getTradeOrderId()));
+        }
+        List<Object> entIds = Lists.newArrayList();
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getSupplyEntId())){
+            entIds.add(Long.valueOf(req.getSupplyEntId()));
+        }
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getPurchaseEntId())){
+            entIds.add(Long.valueOf(req.getPurchaseEntId()));
+        }
+
+        //查询供应企业
+        List<KwoTradeOrderUnit> kwoTradeOrderUnits = tradeOrderUnitRepository.queryByEntIds(entIds);
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwoTradeOrderUnits)){
+            orderIds.addAll(kwoTradeOrderUnits.stream()
+                    .map(KwoTradeOrderUnit::getTOrderId)
+                    .collect(Collectors.toSet()));
+        }
+        //查询承运单位
+        if (StringUtils.isNotBlank(req.getCarriageEntId())){
+            List<KwtLogisticsOrderVO> kwtLogisticsOrderVOS = transportRemoteService.queryTransportEntByEntId(Long.parseLong(req.getCarriageEntId()));
+            if (CollectionUtils.isNotEmpty(kwtLogisticsOrderVOS)){
+                orderIds.addAll(kwtLogisticsOrderVOS.stream()
+                        .map(KwtLogisticsOrderVO::getTOrderId)
+                        .collect(Collectors.toSet()));
+            }
+        }
+        return orderIds;
+    }
+
+    private Map<Long, KwpGoods> getLongKwpGoodsMap(List<Long> goodsIdList) {
         Map<Long, KwpGoods> goodsIdAndGoodsMap = Maps.newHashMap() ;
         if (CollectionUtils.isNotEmpty(goodsIdList)){
            goodsIdAndGoodsMap = goodsInfoService.getGoodsByIds(goodsIdList);
         }
+        return goodsIdAndGoodsMap;
+    }
 
-        //查询贸易订单公司信息
+    @NotNull
+    private Map<String, KwoTradeOrderUnit> getStringKwoTradeOrderUnitMap(Set<Long> tradeOrderIds) {
         List<KwoTradeOrderUnit> tradeOrderUnits = tradeOrderUnitRepository.queryByOrderIds(tradeOrderIds);
         Map<String, KwoTradeOrderUnit> orderIdUnitTypeAndUnitMap = Maps.newHashMap();
         if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeOrderUnits)){
@@ -270,7 +357,11 @@ public class TradeOrderManageService {
                     .collect(Collectors.toMap(KwoTradeOrderUnit::getTradeOrderIdAndUnitType, Function.identity(), (k,
                                                                                                                    v) -> k));
         }
-        //查询贸易订单地址信息
+        return orderIdUnitTypeAndUnitMap;
+    }
+
+    @NotNull
+    private Map<String, KwoTradeOrderAddress> getStringKwoTradeOrderAddressMap(Set<Long> tradeOrderIds) {
         List<KwoTradeOrderAddress> tradeOrderAddresses = tradeOrderAddressRepository.queryByOrderIds(tradeOrderIds);
         Map<String, KwoTradeOrderAddress> orderIdAndAddressMap = Maps.newHashMap();
         if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeOrderAddresses)){
@@ -280,7 +371,11 @@ public class TradeOrderManageService {
                     .collect(Collectors.toMap(KwoTradeOrderAddress::getTradeOrderIdTypeKey,Function.identity(),
                             (k, v)->k));
          }
-        //查询贸易订单合同信息(一个贸易合同对应多个贸易订单)
+        return orderIdAndAddressMap;
+    }
+
+    @NotNull
+    private Map<Long, KwoTradeOrderContract> getLongKwoTradeOrderContractMap(Set<Long> tradeOrderIds) {
         List<KwoTradeOrderContract> tradeOrderContracts = tradeOrderContractRepository.queryByOrderIds(tradeOrderIds);
         Map<Long, KwoTradeOrderContract> tradeOrderIdAndContractMap = Maps.newHashMap();
         if (CollectionUtils.isNotEmpty(tradeOrderContracts)){
@@ -288,8 +383,11 @@ public class TradeOrderManageService {
                     .collect(Collectors.toMap(KwoTradeOrderContract::getTOrderId,
                     Function.identity(), (k1, k2) -> k1));
         }
+        return tradeOrderIdAndContractMap;
+    }
 
-        //查询物流信息
+    @NotNull
+    private Map<Integer, RTransportEntVo> getIntegerRTransportEntVoMap(Set<Long> tradeOrderIds) {
         List<RTransportEntVo> transportEnts = transportRemoteService.queryTransportEnt(tradeOrderIds);
         Map<Integer, RTransportEntVo> entTypeAndTransportEntMap = Maps.newHashMap();
         if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(transportEnts)){
@@ -297,27 +395,18 @@ public class TradeOrderManageService {
                     transportEnts.stream().collect(Collectors.toMap(RTransportEntVo::getTransportEntType, Function.identity(),
                     (k, v) -> k));
         }
-        //查询运单信息
+        return entTypeAndTransportEntMap;
+    }
+
+    @NotNull
+    private Map<Long, RWaybillSubOrderVo> getLongRWaybillSubOrderVoMap(Set<Long> tradeOrderIds) {
         List<RWaybillSubOrderVo> subOrderVoList = transportRemoteService.queryWaybillOrderByTradeOrderIds(tradeOrderIds);
         Map<Long, RWaybillSubOrderVo> tradeIdAndSubOrderVoMap = Maps.newHashMap();
         if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(subOrderVoList)){
             tradeIdAndSubOrderVoMap = subOrderVoList.stream()
                     .collect(Collectors.toMap(RWaybillSubOrderVo::getTradeId, Function.identity(), (k, v) -> k));
         }
-
-        Map<Long, KwoTradeOrderGoods> finalTradeOrderIdGoodsMap = tradeOrderIdGoodsMap;
-        Map<Long, KwpGoods> finalGoodsIdAndGoodsMap = goodsIdAndGoodsMap;
-        Map<String, KwoTradeOrderAddress> finalOrderIdAndAddressMap = orderIdAndAddressMap;
-        Map<Long, KwoTradeOrderContract> finalTradeOrderIdAndContractMap = tradeOrderIdAndContractMap;
-        Map<Long, UserCacheResDto> finalUserIdAndUserMap = userIdAndUserMap;
-        Map<String, KwoTradeOrderUnit> finalOrderIdUnitTypeAndUnitMap = orderIdUnitTypeAndUnitMap;
-        Map<Integer, RTransportEntVo> finalEntTypeAndTransportEntMap = entTypeAndTransportEntMap;
-        Map<Long, RWaybillSubOrderVo> finalTradeIdAndSubOrderVoMap = tradeIdAndSubOrderVoMap;
-        //组装返回参数
-        List<QueryTradeOrderResp> results = records.stream()
-                .map(tradeOrder -> getQueryTradeOrderResp(tradeOrder, finalOrderIdUnitTypeAndUnitMap, finalEntTypeAndTransportEntMap, finalTradeOrderIdGoodsMap, finalGoodsIdAndGoodsMap, finalTradeIdAndSubOrderVoMap, finalOrderIdAndAddressMap, finalTradeOrderIdAndContractMap, finalUserIdAndUserMap))
-                .collect(Collectors.toList());
-        return PageDataResult.of(page, results);
+        return tradeIdAndSubOrderVoMap;
     }
 
     @NotNull

+ 2 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/EntInfoReq.java

@@ -5,6 +5,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @author :chenXiaoFei
@@ -25,7 +26,7 @@ public class EntInfoReq implements Serializable {
      * 企业类型
      */
     @Schema(description = "企业类型")
-    private String entType;
+    private List<String> entType;
     /**
      * 登录用户的企业类型
      */

+ 4 - 4
sckw-modules/sckw-system/src/main/java/com/sckw/system/repository/KwsEntTypeRepository.java

@@ -18,16 +18,16 @@ import java.util.Set;
  */
 @Repository
 public class KwsEntTypeRepository extends ServiceImpl<KwsEntTypeDao, KwsEntType> {
-    public List<KwsEntType> queryByEntIdsAndType(Set<Long> entIds, String entType) {
+    public List<KwsEntType> queryByEntIdsAndType(Set<Long> entIds, List<String> entTypes) {
         return list(Wrappers.<KwsEntType>lambdaQuery()
                 .eq(BaseModel::getDelFlag,0)
                 .in(KwsEntType::getEntId, entIds)
-                .eq(KwsEntType::getType, entType));
+                .in(KwsEntType::getType, entTypes));
     }
 
-    public List<KwsEntType> queryByType(String entType) {
+    public List<KwsEntType> queryByType(List<String> entTypes) {
         return list(Wrappers.<KwsEntType>lambdaQuery()
                 .eq(BaseModel::getDelFlag,0)
-                .eq(KwsEntType::getType, entType));
+                .in(KwsEntType::getType, entTypes));
     }
 }

+ 2 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java

@@ -1455,7 +1455,8 @@ public class KwsEnterpriseService {
     public EntInfoResp queryEntInfo(EntInfoReq req) {
         //如果是发起方是采购方,采购方只能是自己和下级,供应方可以选所有入住的供应企业
         // 如果发起方是供应方,则供应方是能自己和下级,采购方可以是所有入住企业
-        if (org.apache.commons.lang3.StringUtils.equals(req.getEntType(), req.getLoginEntType())) {
+        if (org.apache.commons.lang3.StringUtils.equals(req.getEntType(),req.getLoginEntType())){
+        if (req.getEntType().contains(req.getLoginEntType())){
             //登录客户的企业类型和查询的类型是一直的说明只能查询自己和自己的下级
             //发起方的公司信息
             return getEntInfoResp(req);

+ 32 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtLogisticsOrderController.java

@@ -1,7 +1,11 @@
 package com.sckw.transport.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.google.common.collect.Sets;
 import com.sckw.core.annotation.RepeatSubmit;
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.BaseResult;
 import com.sckw.core.web.response.HttpResult;
@@ -12,11 +16,11 @@ import com.sckw.transport.model.dto.LogisticsOrderSubcontractDto;
 import com.sckw.transport.model.param.AddLogisticsOrderParam;
 import com.sckw.transport.model.param.LogisticsOrderResp;
 import com.sckw.transport.model.param.QueryLogisticsOrderReq;
-import com.sckw.transport.model.vo.LogisticsOrderDetailResp;
-import com.sckw.transport.model.vo.LogisticsOrderDispatchResp;
-import com.sckw.transport.model.vo.LogisticsOrderReq;
+import com.sckw.transport.model.vo.*;
 import com.sckw.transport.service.KwtLogisticsConsignmentService;
 import com.sckw.transport.service.KwtTransportCommonService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -25,6 +29,9 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @author lfdc
@@ -36,6 +43,7 @@ import java.util.List;
 @RestController
 @RequiredArgsConstructor
 @RequestMapping(value = "/kwtLogisticsOrder")
+@Tag(name = "物流订单相关接口")
 public class KwtLogisticsOrderController {
 
     @Autowired
@@ -127,6 +135,7 @@ public class KwtLogisticsOrderController {
      * 分页查询物流订单
      */
     @PostMapping(value = "/queryLogisticsOrderByPage")
+    @Operation(summary = "分页查询物流订单", description = "分页查询物流订单")
     public BaseResult<PageDataResult<LogisticsOrderResp>> queryLogisticsOrderByPage(@RequestBody QueryLogisticsOrderReq req) {
         return BaseResult.success(logisticsConsignmentService.queryLogisticsOrderByPage( req));
     }
@@ -146,4 +155,24 @@ public class KwtLogisticsOrderController {
         return BaseResult.success(logisticsConsignmentService.getLogisticsOrderDispatch(req));
     }
 
+    /**
+     * 分页查询已派运力
+     */
+    @PostMapping("/pageCapacity")
+    @Operation(summary = "分页查询已派运力", description = "分页查询已派运力")
+    public BaseResult<PageDataResult<CapacityVo>> pageCapacity(@RequestBody @Valid CapacityReq req) {
+        return BaseResult.success(logisticsConsignmentService.pageCapacity(req));
+    }
+
+
+    /**
+     * 关闭启用已派运力
+     */
+
+    @PostMapping("/closeCapacity")
+    @Operation(summary = "关闭启用已派运力", description = "关闭启用已派运力")
+    public BaseResult<Boolean> closeCapacity(@RequestBody @Valid DeleteCapacityReq req) {
+        return BaseResult.success(logisticsConsignmentService.closeCapacity(req));
+    }
+
 }

+ 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));
     }
 
 }

+ 22 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java

@@ -947,6 +947,28 @@ public class TransportServiceImpl implements TransportRemoteService {
 
     }
 
+    @Override
+    public List<KwtLogisticsOrderVO> queryTransportEntByEntId(Long entId) {
+        //通过承运单位查询物流订单
+        List<KwtLogisticsOrderUnit> unitList = logisticsOrderUnitRepository.queryByEntId(entId);
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(unitList)){
+            return Collections.emptyList();
+        }
+        // 物流订单号
+        Set<Long> logOrderIds = unitList.stream()
+                .map(KwtLogisticsOrderUnit::getLOrderId)
+                .collect(Collectors.toSet());
+        //通过物流订单号查询物流订单
+        List<KwtLogisticsOrder> logOrders = logisticsOrderRepository.queryByLogOrderIds(logOrderIds);
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(logOrders)){
+            return Collections.emptyList();
+        }
+       return logOrders.stream()
+                .map(TransportServiceImpl::getLogisticsOrderVo)
+                .collect(Collectors.toList());
+
+    }
+
     private static KwtLogisticsOrderVO getLogisticsOrderVo(KwtLogisticsOrder logOrder) {
         KwtLogisticsOrderVO kwtLogisticsOrderVO = new KwtLogisticsOrderVO();
         kwtLogisticsOrderVO.setId(logOrder.getId());

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

@@ -1,5 +1,7 @@
 package com.sckw.transport.model;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -21,6 +23,7 @@ public class KwtLogisticsOrderCirculate implements Serializable {
     /**
      * 主键
      */
+    @TableId(type = IdType.NONE)
     private Long id;
 
 

+ 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/QueryLogisticsOrderReq.java

@@ -19,6 +19,11 @@ import java.io.Serializable;
 public class QueryLogisticsOrderReq extends PageReq implements Serializable {
     @Serial
     private static final long serialVersionUID = -1959135761190054856L;
+    /**
+     * 物流合同id
+     */
+    @Schema(description = "物流合同id")
+    private String contractId;
     /**
      * 订单编号
      */

+ 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;
 }

+ 41 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/CapacityReq.java

@@ -0,0 +1,41 @@
+package com.sckw.transport.model.vo;
+
+import com.sckw.core.web.request.PageReq;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 运力查询请求参数
+ * @create :2025-11-13 08:58:00
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class CapacityReq extends PageReq implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -8135595203081724425L;
+    /**
+     * 车牌号
+     */
+    @Schema(description = "车牌号")
+    private String truckNo;
+    /**
+     * 运单id
+     */
+    @Schema(description = "运单id")
+    @NotBlank(message = "运单id不能为空")
+    private String logOrderId;
+    /**
+     * 企业id
+     */
+    @Schema(description = "企业id")
+    @NotBlank(message = "企业id不能为空")
+    private String entId;
+}

+ 69 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/CapacityVo.java

@@ -0,0 +1,69 @@
+package com.sckw.transport.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description :
+ * @create :2025-11-13 08:59:00
+ */
+@Data
+public class CapacityVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -4852346389057003547L;
+    /**
+     * 车辆id
+     */
+    @Schema(description = "车辆id")
+    private String truckId;
+    /**
+     * 车牌号
+     */
+    @Schema(description = "车牌号")
+    private String truckNo;
+    /**
+     * 车辆轴数
+     */
+    @Schema(description = "车辆轴数")
+    private String carAxis;
+    /**
+     * 完成车次
+     */
+    @Schema(description = "完成车次")
+    private String finishWaybillCount;
+    /**
+     * 累计装货量
+     */
+    @Schema(description = "累计装货量")
+    private String loadAmount;
+    /**
+     * 累计卸货量
+     */
+    @Schema(description = "累计卸货量")
+    private String unloadAmount;
+    /**
+     * 状态
+     */
+    @Schema(description = "状态")
+    private String status;
+    /**
+     * 状态描述
+     */
+    @Schema(description = "状态描述")
+    private String statusDesc;
+    /**
+     * 派车状态 0正常、1关闭
+     */
+    @Schema(description = "派车状态 0正常、1关闭")
+    private String dispatchStatus;
+    /**
+     * 派车状态描述
+     */
+    @Schema(description = "派车状态描述")
+    private String dispatchStatusDesc;
+}

+ 41 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/DeleteCapacityReq.java

@@ -0,0 +1,41 @@
+package com.sckw.transport.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description :
+ * @create :2025-11-13 09:40:00
+ */
+@Data
+public class DeleteCapacityReq implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -7642942717551088599L;
+    /**
+     * 车辆id
+     */
+    @Schema(description = "车辆id")
+    private String truckId;
+
+    /**
+     * 物流订单id
+     */
+    @NotNull(message = "物流订单id")
+    @Schema(description = "物流订单id")
+    private List<String> logisticsOrderIds;
+    /**
+     * 派车状态(0-启用,1-关闭)
+     */
+    @NotBlank(message = "派车状态不能为空")
+    @Schema(description = "派车状态(0-启用,1-关闭)")
+    private String status;
+
+}

+ 46 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderCirculateRepository.java

@@ -0,0 +1,46 @@
+package com.sckw.transport.repository;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sckw.transport.dao.KwtLogisticsOrderCirculateMapper;
+import com.sckw.transport.model.KwtLogisticsOrderCirculate;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 物流订单车辆关系
+ * @create :2025-11-13 11:31:00
+ */
+@Repository
+public class KwtLogisticsOrderCirculateRepository extends ServiceImpl<KwtLogisticsOrderCirculateMapper, KwtLogisticsOrderCirculate> {
+    public IPage<KwtLogisticsOrderCirculate> queryByPage(int pageNum, int pageSize,String truckNo, Long entId) {
+        return page(new Page<>(pageNum, pageSize), Wrappers.<KwtLogisticsOrderCirculate>lambdaQuery()
+                .like(StringUtils.isNotBlank(truckNo),KwtLogisticsOrderCirculate::getTruckNo, truckNo)
+                .eq(KwtLogisticsOrderCirculate::getDelFlag,0)
+                .eq(KwtLogisticsOrderCirculate::getEntId, entId)
+                .orderByDesc(KwtLogisticsOrderCirculate::getCreateTime)
+                .orderByDesc(KwtLogisticsOrderCirculate::getId));
+    }
+
+    public List<KwtLogisticsOrderCirculate> findOneByLogOrderIdsAndTruckId(List<Long> logOrderIds, Long truckId) {
+        return list(Wrappers.<KwtLogisticsOrderCirculate>lambdaQuery().eq(KwtLogisticsOrderCirculate::getDelFlag,0)
+                .in(KwtLogisticsOrderCirculate::getLOrderId, logOrderIds)
+                .eq(Objects.nonNull(truckId),KwtLogisticsOrderCirculate::getTruckId, truckId)
+        );
+    }
+
+    @Transactional
+    public Boolean updateCirculates(List<KwtLogisticsOrderCirculate> updateCirculates) {
+        return updateBatchById(updateCirculates);
+
+    }
+}

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

@@ -6,6 +6,7 @@ import com.sckw.transport.dao.KwtLogisticsOrderContractMapper;
 import com.sckw.transport.model.KwtLogisticsOrderContract;
 import org.springframework.stereotype.Repository;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
@@ -30,4 +31,10 @@ public class KwtLogisticsOrderContractRepository extends ServiceImpl<KwtLogistic
                 .orderByDesc(KwtLogisticsOrderContract::getId)
                 .last("limit 1"));
     }
+
+    public List<KwtLogisticsOrderContract> queryByContractId(Long contractId ) {
+        return list(Wrappers.<KwtLogisticsOrderContract>lambdaQuery()
+                .eq(KwtLogisticsOrderContract::getDelFlag,0)
+                .eq(KwtLogisticsOrderContract::getContractId,contractId));
+    }
 }

+ 23 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderRepository.java

@@ -37,12 +37,14 @@ public class KwtLogisticsOrderRepository extends ServiceImpl<KwtLogisticsOrderMa
                 .eq(KwtLogisticsOrder::getTOrderId, tradeId));
     }
 
-        public IPage<KwtLogisticsOrder> queryByPage(Set<Long> logisticsOrderIds,String orderNo,String status,
+        public IPage<KwtLogisticsOrder> queryByPage(Set<Long> entIds,Set<Long> logisticsOrderIds,String orderNo,
+                                                    String status,
                                                  String startTime, String endTime,  int pageNum, int pageSize) {
         return page(new Page<>(pageNum, pageSize),
                 Wrappers.<KwtLogisticsOrder>lambdaQuery()
                         .eq(KwtLogisticsOrder::getDelFlag, 0)
                         .in(CollectionUtils.isNotEmpty(logisticsOrderIds), KwtLogisticsOrder::getId, logisticsOrderIds)
+                        .in(CollectionUtils.isNotEmpty(entIds), KwtLogisticsOrder::getEntId, entIds)
                         .eq(StringUtils.isNotBlank(status),KwtLogisticsOrder::getStatus, status)
                         .like(StringUtils.isNotBlank(orderNo),KwtLogisticsOrder::getLOrderNo, orderNo)
                         .ge(StringUtils.isNotBlank(startTime),KwtLogisticsOrder::getLoadTime, startTime)
@@ -57,4 +59,24 @@ 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));
+    }
+
+    public List<KwtLogisticsOrder> queryByLogOrderIds(Set<Long> logOrderIds) {
+
+        return list(Wrappers.<KwtLogisticsOrder>lambdaQuery()
+                .eq(KwtLogisticsOrder::getDelFlag,0)
+                .in(KwtLogisticsOrder::getId, logOrderIds));
+    }
 }

+ 6 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderUnitRepository.java

@@ -47,4 +47,10 @@ public class KwtLogisticsOrderUnitRepository extends ServiceImpl<KwtLogisticsOrd
                 .eq(KwtLogisticsOrderUnit::getDelFlag,0)
                 .eq(KwtLogisticsOrderUnit::getLOrderId,logOrderId));
     }
+
+    public List<KwtLogisticsOrderUnit> queryByEntId(Long entId) {
+        return list(Wrappers.<KwtLogisticsOrderUnit>lambdaQuery()
+                .eq(KwtLogisticsOrderUnit::getDelFlag,0)
+                .eq(KwtLogisticsOrderUnit::getEntId,entId));
+    }
 }

+ 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));
+    }
 }

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

@@ -111,4 +111,31 @@ 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)
+        );
+    }
+
+    public List<KwtWaybillOrder> queryByBillOrderIdsAndEntId(Set<Long> billOrderIds, Long entId) {
+        return list(Wrappers.<KwtWaybillOrder>lambdaQuery()
+                .eq(KwtWaybillOrder::getDelFlag,0)
+                .eq(KwtWaybillOrder::getEntId,entId)
+                .in(KwtWaybillOrder::getId, billOrderIds)
+                .orderByDesc(KwtWaybillOrder::getCreateTime)
+        );
+    }
 }

+ 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));
     }
 }

+ 206 - 55
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java

@@ -5,7 +5,6 @@ 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;
@@ -33,6 +32,7 @@ import com.sckw.core.web.response.result.PageDataResult;
 import com.sckw.excel.utils.DateUtil;
 import com.sckw.excel.utils.ValidUtil;
 import com.sckw.fleet.api.RemoteFleetService;
+import com.sckw.fleet.api.model.vo.RFleetVo;
 import com.sckw.fleet.api.model.vo.RTruckVo;
 import com.sckw.mongo.enums.BusinessTypeEnum;
 import com.sckw.mongo.model.SckwLogisticsOrder;
@@ -164,6 +164,7 @@ public class KwtLogisticsConsignmentService {
     private final KwtLogisticsOrderContractRepository logisticsOrderContractRepository;
     private final KwtWaybillOrderSubtaskRepository logisticsOrderSubtaskRepository;
     private final KwtWaybillOrderRepository waybillOrderRepository;
+    private final KwtLogisticsOrderCirculateRepository logisticsOrderCirculateRepository;
     /**
      * 采购订单-物流托运生成托运订单
      *
@@ -2220,51 +2221,17 @@ public class KwtLogisticsConsignmentService {
 
     public PageDataResult<LogisticsOrderResp> queryLogisticsOrderByPage(QueryLogisticsOrderReq req) {
         log.info("分页查询物流订单传递参数信息:{}", JSONObject.toJSONString(req));
-        Set<Long> logOrderIds = Sets.newHashSet();
-        Set<Long> allEnt = Sets.newHashSet();
-        //根据企业类型查询企业
-        if(StringUtils.isNotBlank(req.getEntId())){
-            allEnt.add(Long.parseLong(req.getEntId()));
-            EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(Long.parseLong(req.getEntId()));
-            if (Objects.nonNull(entCacheResDto)) {
-                EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntTreeById(entCacheResDto.getId());
-                List<EntCacheResDto> child = entCacheResDto1.getChild();
-                if (CollectionUtils.isNotEmpty(child)) {
-                    allEnt.addAll(child.stream().filter(x->x.getEntTypes().contains(req.getEntType())).map(EntCacheResDto::getId).toList());
-                }
-            }
-        }
-        //根据托运单位或者承运单位查询企业
 
-        if (StringUtils.isNotBlank(req.getConsignCompanyId())){
-            allEnt.add(Long.parseLong(req.getConsignCompanyId()));
-        }
-        if (StringUtils.isNotBlank(req.getCarriageCompanyId())){
-            allEnt.add(Long.parseLong(req.getCarriageCompanyId()));
-        }
+        Set<Long> allEnt = getAllEnt(req);
+        //根据托运单位或者承运单位查询企业
+        Set<Long> entList = getEntList(req);
 
         //根据商品名称查询物流订单
-        List<KwtLogisticsOrderGoods>  logisticsOrderGoodsList=
-                logisticsOrderGoodsRepository.queryByGoodsName(req.getGoodsName());
-        if(org.springframework.util.CollectionUtils.isEmpty(logisticsOrderGoodsList)){
-            //获取物流订单
-            Set<Long> logOrderFormGoodsIds =
-                    logisticsOrderGoodsList.stream().map(KwtLogisticsOrderGoods::getLOrderId).collect(Collectors.toSet());
-            logOrderIds.addAll(logOrderFormGoodsIds);
-        }
-
-        List<KwtLogisticsOrderUnit> logOrderUnits =logisticsOrderUnitRepository.queryByEntIds(allEnt);
-        if(org.springframework.util.CollectionUtils.isEmpty(logOrderUnits)){
-            //获取物流订单
-            Set<Long> logOrderFormUnitIds =
-                    logOrderUnits.stream().map(KwtLogisticsOrderUnit::getLOrderId).collect(Collectors.toSet());
-            logOrderIds.addAll(logOrderFormUnitIds);
-        }
-
+        Set<Long> logOrderIds = getLogOrderIds(req, entList);
 
 
         //分页查询物流订单
-       IPage<KwtLogisticsOrder> page = logisticsOrderRepository.queryByPage(logOrderIds,req.getOrderStatus(),
+       IPage<KwtLogisticsOrder> page = logisticsOrderRepository.queryByPage(allEnt,logOrderIds,req.getOrderStatus(),
                req.getOrderNo(),
                req.getStartTime(), req.getEndTime(), req.getPageNum(), req.getPageSize());
         List<KwtLogisticsOrder> records = page.getRecords();
@@ -2301,22 +2268,9 @@ public class KwtLogisticsConsignmentService {
         }
 
         //查询地址信息
-        List<KwtLogisticsOrderAddress> logOrderAddressList =logisticsOrderAddressRepository.queryByLogOrderIds(logOrderIdList);
-        Map<String, KwtLogisticsOrderAddress> logisticsOrderIdAndUnitTypeKeyAndAddressMap = Maps.newHashMap();
-        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(logOrderAddressList)){
-           logisticsOrderIdAndUnitTypeKeyAndAddressMap =
-                    logOrderAddressList.stream().peek(x -> x.setLogisticsOrderIdAndUnitTypeKey(x.getLOrderId() + "-" + x.getAddressType()))
-                    .collect(Collectors.toMap(KwtLogisticsOrderAddress::getLogisticsOrderIdAndUnitTypeKey,
-                            Function.identity(), (x, y) -> x));
-        }
+        Map<String, KwtLogisticsOrderAddress> logisticsOrderIdAndUnitTypeKeyAndAddressMap = getStringKwtLogisticsOrderAddressMap(logOrderIdList);
         //查询物流订单合同信息
-        List<KwtLogisticsOrderContract> logOrderContractList =logisticsOrderContractRepository.queryByLogOrderIds( new HashSet<>(logOrderIdList));
-        Map<Long, KwtLogisticsOrderContract> logOrderIdAndContractMap = Maps.newHashMap();
-        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(logOrderContractList)){
-            logOrderIdAndContractMap =
-                    logOrderContractList.stream().collect(Collectors.toMap(KwtLogisticsOrderContract::getLOrderId,
-                    Function.identity(), (x, y) -> x));
-        }
+        Map<Long, KwtLogisticsOrderContract> logOrderIdAndContractMap = getLongKwtLogisticsOrderContractMap(logOrderIdList);
 
         Map<String, KwtLogisticsOrderUnit> finalLogOrderIdAndUnitTypeKeyAndUnitMap = logOrderIdAndUnitTypeKeyAndUnitMap;
         Map<Long, KwtLogisticsOrderGoods> finalLogIdAndGoodsMap = logIdAndGoodsMap;
@@ -2332,6 +2286,97 @@ public class KwtLogisticsConsignmentService {
         return PageDataResult.of(page,resps);
     }
 
+    @NotNull
+    private static Set<Long> getEntList(QueryLogisticsOrderReq req) {
+        Set<Long> entList = Sets.newHashSet();
+        if (StringUtils.isNotBlank(req.getConsignCompanyId())){
+            entList.add(Long.parseLong(req.getConsignCompanyId()));
+        }
+        if (StringUtils.isNotBlank(req.getCarriageCompanyId())){
+            entList.add(Long.parseLong(req.getCarriageCompanyId()));
+        }
+        return entList;
+    }
+
+    @NotNull
+    private Map<Long, KwtLogisticsOrderContract> getLongKwtLogisticsOrderContractMap(List<Long> logOrderIdList) {
+        List<KwtLogisticsOrderContract> logOrderContractList =logisticsOrderContractRepository.queryByLogOrderIds( new HashSet<>(logOrderIdList));
+        Map<Long, KwtLogisticsOrderContract> logOrderIdAndContractMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(logOrderContractList)){
+            logOrderIdAndContractMap =
+                    logOrderContractList.stream().collect(Collectors.toMap(KwtLogisticsOrderContract::getLOrderId,
+                    Function.identity(), (x, y) -> x));
+        }
+        return logOrderIdAndContractMap;
+    }
+
+    @NotNull
+    private Map<String, KwtLogisticsOrderAddress> getStringKwtLogisticsOrderAddressMap(List<Long> logOrderIdList) {
+        List<KwtLogisticsOrderAddress> logOrderAddressList =logisticsOrderAddressRepository.queryByLogOrderIds(logOrderIdList);
+        Map<String, KwtLogisticsOrderAddress> logisticsOrderIdAndUnitTypeKeyAndAddressMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(logOrderAddressList)){
+           logisticsOrderIdAndUnitTypeKeyAndAddressMap =
+                    logOrderAddressList.stream().peek(x -> x.setLogisticsOrderIdAndUnitTypeKey(x.getLOrderId() + "-" + x.getAddressType()))
+                    .collect(Collectors.toMap(KwtLogisticsOrderAddress::getLogisticsOrderIdAndUnitTypeKey,
+                            Function.identity(), (x, y) -> x));
+        }
+        return logisticsOrderIdAndUnitTypeKeyAndAddressMap;
+    }
+
+    @NotNull
+    private Set<Long> getLogOrderIds(QueryLogisticsOrderReq req, Set<Long> entList) {
+        Set<Long> logOrderIds = Sets.newHashSet();
+        if (StringUtils.isNotBlank(req.getContractId())){
+            List<KwtLogisticsOrderContract> kwtLogisticsOrderContracts = logisticsOrderContractRepository.queryByContractId(Long.parseLong(req.getContractId()));
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwtLogisticsOrderContracts)){
+                logOrderIds.addAll(kwtLogisticsOrderContracts.stream()
+                        .map(KwtLogisticsOrderContract::getLOrderId)
+                        .collect(Collectors.toSet()));
+            }
+        }
+
+        if (StringUtils.isNotBlank(req.getGoodsName())){
+            List<KwtLogisticsOrderGoods>  logisticsOrderGoodsList=
+                    logisticsOrderGoodsRepository.queryByGoodsName(req.getGoodsName());
+            if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(logisticsOrderGoodsList)){
+                //获取物流订单
+                Set<Long> logOrderFormGoodsIds =
+                        logisticsOrderGoodsList.stream().map(KwtLogisticsOrderGoods::getLOrderId).collect(Collectors.toSet());
+                logOrderIds.addAll(logOrderFormGoodsIds);
+            }
+        }
+
+        if (CollectionUtils.isNotEmpty(entList)){
+            List<KwtLogisticsOrderUnit> logOrderUnits =logisticsOrderUnitRepository.queryByEntIds(entList);
+            if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(logOrderUnits)){
+                //获取物流订单
+                Set<Long> logOrderFormUnitIds =
+                        logOrderUnits.stream().map(KwtLogisticsOrderUnit::getLOrderId).collect(Collectors.toSet());
+                logOrderIds.addAll(logOrderFormUnitIds);
+            }
+        }
+        return logOrderIds;
+    }
+
+    @NotNull
+    private Set<Long> getAllEnt(QueryLogisticsOrderReq req) {
+        Set<Long> allEnt = Sets.newHashSet();
+        //根据企业类型查询企业
+        if (StringUtils.isBlank(req.getEntId())){
+            return allEnt;
+        }
+        allEnt.add(Long.parseLong(req.getEntId()));
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(Long.parseLong(req.getEntId()));
+        if (Objects.nonNull(entCacheResDto)) {
+            EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntTreeById(entCacheResDto.getId());
+            List<EntCacheResDto> child = entCacheResDto1.getChild();
+            if (CollectionUtils.isNotEmpty(child)) {
+                allEnt.addAll(child.stream().filter(x->x.getEntTypes().contains(req.getEntType())).map(EntCacheResDto::getId).toList());
+            }
+        }
+        return allEnt;
+    }
+
     @NotNull
     private static LogisticsOrderResp getLogisticsOrderResp(KwtLogisticsOrder kwtLogisticsOrder, Map<String, KwtLogisticsOrderUnit> finalLogOrderIdAndUnitTypeKeyAndUnitMap, Map<Long, KwtLogisticsOrderGoods> finalLogIdAndGoodsMap, Map<Long, KwpGoods> finalGoodsIdAndGoodsMap, Map<String, KwtLogisticsOrderAddress> finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap, Map<Long, KwtLogisticsOrderContract> finalLogOrderIdAndContractMap) {
         LogisticsOrderResp logisticsOrderResp = new LogisticsOrderResp();
@@ -2619,4 +2664,110 @@ public class KwtLogisticsConsignmentService {
         logisticsOrderDispatchResp.setCloseOrderDesc(CarStatusEnum.getName(truckVo.getStatus()));
         return logisticsOrderDispatchResp;
     }
+
+    public PageDataResult<CapacityVo> pageCapacity(CapacityReq req) {
+        log.info("查询车辆列表请求:{}", JSON.toJSONString( req));
+        Long logOrderId = Long.parseLong(req.getLogOrderId());
+        Long entId = Long.parseLong(req.getEntId());
+        IPage<KwtLogisticsOrderCirculate> page = logisticsOrderCirculateRepository.queryByPage(req.getPageNum(),
+                req.getPageSize(), req.getTruckNo(),Long.parseLong(req.getEntId()));
+        List<KwtLogisticsOrderCirculate> records = page.getRecords();
+
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty( records)){
+            return PageDataResult.empty(req.getPageNum(), req.getPageSize());
+        }
+
+        Set<Long> truckIds = records.stream()
+                .map(KwtLogisticsOrderCirculate::getTruckId)
+                .collect(Collectors.toSet());
+        List<RTruckVo> truckByTruckIds = remoteFleetService.findTruckByTruckIds(truckIds);
+        Map<Long, RTruckVo> truckIdAndTruckMap = Maps.newHashMap();
+        if (CollectionUtils.isNotEmpty(truckByTruckIds)){
+            truckIdAndTruckMap = truckByTruckIds.stream()
+                    .collect(Collectors.toMap(RTruckVo::getId, Function.identity(),(k1, k2)->k1));
+        }
+        //查询子运单信息
+        List<KwtWaybillOrderSubtask> waybillOrderSubtasks = logisticsOrderSubtaskRepository.queryByLogId(logOrderId);
+        Set<Long> billOrderIds = Sets.newHashSet();
+        if (CollectionUtils.isNotEmpty(waybillOrderSubtasks)){
+            //获取主运单id
+            billOrderIds = waybillOrderSubtasks.stream()
+                    .map(KwtWaybillOrderSubtask::getWOrderId)
+                    .collect(Collectors.toSet());
+        }
+        //查询运单信息
+        Map<Long, List<KwtWaybillOrder>> billOrderIdAndWaybillOrderMap = Maps.newHashMap();
+        if (CollectionUtils.isNotEmpty(billOrderIds)){
+            List<KwtWaybillOrder> waybillOrders = waybillOrderRepository.queryByBillOrderIdsAndEntId(billOrderIds,
+                    entId);
+            if (CollectionUtils.isNotEmpty(waybillOrders)){
+                billOrderIdAndWaybillOrderMap = waybillOrders.stream().filter(x->Objects.equals(x.getStatus(),
+                                CarWaybillEnum.APPROVAL_PASS.getCode()))
+                        .collect(Collectors.groupingBy(KwtWaybillOrder::getTruckId));
+            }
+        }
+
+
+        Map<Long, RTruckVo> finalTruckIdAndTruckMap = truckIdAndTruckMap;
+        Map<Long, List<KwtWaybillOrder>> finalBillOrderIdAndWaybillOrderMap = billOrderIdAndWaybillOrderMap;
+        List<CapacityVo> capacityVos = records.stream()
+                .map(t -> getCapacityVo(t, finalTruckIdAndTruckMap, finalBillOrderIdAndWaybillOrderMap))
+                .collect(Collectors.toList());
+        return PageDataResult.of(page, capacityVos);
+
+    }
+
+    @NotNull
+    private static CapacityVo getCapacityVo(KwtLogisticsOrderCirculate t, Map<Long, RTruckVo> finalTruckIdAndTruckMap, Map<Long, List<KwtWaybillOrder>> finalBillOrderIdAndWaybillOrderMap) {
+        CapacityVo capacityVo = new CapacityVo();
+        capacityVo.setTruckId(String.valueOf(t.getTruckId()));
+        capacityVo.setTruckNo(t.getTruckNo());
+        RTruckVo truckVo = finalTruckIdAndTruckMap.getOrDefault(t.getTruckId(), new RTruckVo());
+        capacityVo.setCarAxis(truckVo.getCarAxis());
+        List<KwtWaybillOrder> waybillOrders = finalBillOrderIdAndWaybillOrderMap.get(t.getTruckId());
+        capacityVo.setFinishWaybillCount(String.valueOf(waybillOrders.size()));
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(waybillOrders)){
+            BigDecimal loadAmount = waybillOrders.stream()
+                    .filter(x -> Objects.nonNull(x.getLoadAmount()))
+                    .map(KwtWaybillOrder::getLoadAmount)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal unloadAmount = waybillOrders.stream()
+                    .filter(x -> Objects.nonNull(x.getUnloadAmount()))
+                    .map(KwtWaybillOrder::getUnloadAmount)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            capacityVo.setLoadAmount(loadAmount.setScale(2,RoundingMode.HALF_UP).toPlainString());
+            capacityVo.setUnloadAmount(unloadAmount.setScale(2,RoundingMode.HALF_UP).toPlainString());
+            capacityVo.setStatus(String.valueOf(waybillOrders.get(0).getStatus()));
+            capacityVo.setStatusDesc(CarWaybillEnum.getName(waybillOrders.get(0).getStatus()));
+        }
+
+        capacityVo.setDispatchStatus(String.valueOf(t.getStatus()));
+        capacityVo.setDispatchStatusDesc(Objects.equals(t.getStatus(),0) ? "启用" : "关闭");
+        return capacityVo;
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean closeCapacity(@Valid DeleteCapacityReq req) {
+        log.info("关闭启用已派运力请求参数:{}", JSON.toJSONString(req));
+        List<Long> logisticsOrderIds = req.getLogisticsOrderIds()
+                .stream().map(x -> Long.parseLong(x)).collect(Collectors.toList());
+        List<KwtLogisticsOrderCirculate> logisticsOrderCirculate =
+                logisticsOrderCirculateRepository.findOneByLogOrderIdsAndTruckId(logisticsOrderIds,
+                        Long.parseLong(req.getTruckId()));
+        if (Objects.isNull(logisticsOrderCirculate)) {
+            throw new BusinessException("未找到该运力信息");
+        }
+        List<KwtLogisticsOrderCirculate> orderCirculates = logisticsOrderCirculate.stream()
+                .map(x -> {
+            KwtLogisticsOrderCirculate updateCirCulate = new KwtLogisticsOrderCirculate();
+            updateCirCulate.setId(x.getId());
+            updateCirCulate.setStatus(Integer.parseInt(req.getStatus()));
+            updateCirCulate.setUpdateTime(new Date());
+            updateCirCulate.setUpdateBy(LoginUserHolder.getUserId());
+            return updateCirCulate;
+        }).collect(Collectors.toList());
+
+        return logisticsOrderCirculateRepository.updateCirculates(orderCirculates);
+    }
 }

+ 242 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -3,8 +3,12 @@ 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.constant.Global;
 import com.sckw.core.model.constant.NumberConstant;
@@ -17,7 +21,6 @@ import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.CommonConstants;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
-import com.sckw.core.web.response.BaseResult;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.core.web.response.result.PageDataResult;
 import com.sckw.excel.utils.DateUtil;
@@ -25,6 +28,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 +47,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 +116,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 +136,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 +2929,230 @@ 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 = Sets.newHashSet();
+        //物流订单id集合
+        Set<Long> logicsOrderIds = Sets.newHashSet();
+        //子运单id集合
+        Set<Long> subWayBillOrderIds = Sets.newHashSet();
+        records.forEach(x->{
+            wayBillOrderIds.add(x.getWOrderId());
+            logicsOrderIds.add(x.getLOrderId());
+            subWayBillOrderIds.add(x.getId());
+        });
+
+        //查询主运单信息
+        Map<Long, KwtWaybillOrder> waybillOrderIdAndBillOrderMap = getLongKwtWaybillOrderMap(wayBillOrderIds);
+        //查询承运托运单位信息
+        Map<String, KwtLogisticsOrderUnit> logOrderIdUnitTypeKeyAndUnitMap = getStringKwtLogisticsOrderUnitMap(new ArrayList<>(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(new ArrayList<>(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;
+    }
+
 }

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

@@ -23,10 +23,12 @@ 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 '计费方式';
 ALTER TABLE kwo_trade_order ADD consignment_way TINYINT NOT NULL default '0'  comment '托运方式 1-采购方托运,2-供应方托运';
 ALTER TABLE kwo_trade_order_goods ADD goods_name varchar(255)   NOT NULL default ''  comment '商品名称';
 
+
+ALTER TABLE kwf_truck ADD selected_capacity tinyint NOT NULL default '0'  comment '已选运力(0-未选运力,1-已选运力)';