Prechádzať zdrojové kódy

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

donglang 2 mesiacov pred
rodič
commit
46789b8cd1
24 zmenil súbory, kde vykonal 932 pridanie a 14 odobranie
  1. 2 0
      sckw-modules-api/sckw-product-api/src/main/java/com/sckw/product/api/dubbo/GoodsInfoService.java
  2. 7 3
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportRemoteService.java
  3. 35 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/RTransportEntVo.java
  4. 93 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/RWaybillSubOrderVo.java
  5. 12 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/TradeOrderManageController.java
  6. 7 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrder.java
  7. 4 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderAddress.java
  8. 6 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderGoods.java
  9. 3 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderUnit.java
  10. 70 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/QueryTradeOrderReq.java
  11. 143 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/QueryTradeOrderResp.java
  12. 26 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderAddressRepository.java
  13. 26 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderContractRepository.java
  14. 40 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderGoodsRepository.java
  15. 35 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderRepository.java
  16. 26 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderUnitRepository.java
  17. 239 5
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/TradeOrderManageService.java
  18. 45 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/dubbo/GoodsInfoServiceImpl.java
  19. 8 2
      sckw-modules/sckw-product/src/main/java/com/sckw/product/repository/KwpGoodsRepository.java
  20. 81 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java
  21. 7 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderRepository.java
  22. 6 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderUnitRepository.java
  23. 6 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderSubtaskRepository.java
  24. 5 0
      sql/2025/11/30/2025_11_30_cxf_alert.sql

+ 2 - 0
sckw-modules-api/sckw-product-api/src/main/java/com/sckw/product/api/dubbo/GoodsInfoService.java

@@ -73,4 +73,6 @@ public interface GoodsInfoService {
     KwpGoods getGoodsByGoodsName(String goodsName);
 
     List<Long> getGoodsByGoodsNameAndTaxRate(String goodsName, String goodsTaxRate);
+
+    List<KwpGoods> getGoodsByNameTypeDesc(String goodsName, String goodsType, String goodsSpec);
 }

+ 7 - 3
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportRemoteService.java

@@ -7,11 +7,10 @@ import com.sckw.transport.api.model.dto.RWaybillOrderDto;
 import com.sckw.transport.api.model.param.ContractSignLogisticsParam;
 import com.sckw.transport.api.model.param.LogisticsOrderParam;
 import com.sckw.transport.api.model.param.UpdateOrderStatusDto;
-import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
-import com.sckw.transport.api.model.vo.RTruckMonitorVo;
-import com.sckw.transport.api.model.vo.RWaybillOrderVo;
+import com.sckw.transport.api.model.vo.*;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * @author lfdc
@@ -119,4 +118,9 @@ public interface TransportRemoteService {
     HttpResult logisticsOrderInitiateReconciliationUpdateStatus(UpdateOrderStatusDto params);
 
     List<RWaybillOrderVo> queryWaybillOrderByEntId(Long entId);
+
+
+    List<RTransportEntVo> queryTransportEnt(Set<Long> tradeOrderIds);
+
+    List<RWaybillSubOrderVo> queryWaybillOrderByTradeOrderIds(Set<Long> tradeOrderIds);
 }

+ 35 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/RTransportEntVo.java

@@ -0,0 +1,35 @@
+package com.sckw.transport.api.model.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 运输企业对象
+ * @create :2025-11-07 14:34:00
+ */
+@Data
+public class RTransportEntVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 8890768862260851922L;
+    /**
+     * 贸易订单id
+     */
+    private Long tradeOrderId;
+    /**
+     * 运输单位类型
+     */
+    private Integer transportEntType;
+    /**
+     * 运输企业id
+     */
+    private Long transportEntId;
+    /**
+     * 运输企业名称
+     */
+    private String transportEntName;
+}

+ 93 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/RWaybillSubOrderVo.java

@@ -0,0 +1,93 @@
+package com.sckw.transport.api.model.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * @author PC
+ */
+@Data
+public class RWaybillSubOrderVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -2991208083876944003L;
+    /**
+     * 交易订单
+     */
+    private Long tradeId;
+    private List<BillSubOrder> subOrders;
+
+
+
+
+    @Data
+    public static class BillSubOrder implements Serializable{
+        @Serial
+        private static final long serialVersionUID = -3897987095923103657L;
+
+        /**
+         * 企业id
+         */
+        private Long entId;
+
+        /**
+         * 物流订单id(kwt_logistics_order)
+         */
+        private Long lOrderId;
+
+        /**
+         * 物流订单id
+         */
+        private Long wOrderId;
+
+        /**
+         * 编号
+         */
+        private String wOrderNo;
+
+        /**
+         * 托量单位
+         */
+        private String unit;
+
+        /**
+         * 已委托量
+         */
+        private BigDecimal entrustAmount;
+
+        /**
+         * 卸货重量
+         */
+        private BigDecimal unloadAmount;
+
+        /**
+         * 计划结束日期
+         */
+        private Date unloadTime;
+
+        /**
+         * 装货重量
+         */
+        private BigDecimal loadAmount;
+
+        /**
+         * 计划开始日期
+         */
+        private Date loadTime;
+
+        /**
+         * 亏吨重量
+         */
+        private BigDecimal deficitAmount;
+
+        /**
+         * 亏吨扣款
+         */
+        private BigDecimal deficitPrice;
+    }
+}

+ 12 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/TradeOrderManageController.java

@@ -3,9 +3,12 @@ package com.sckw.order.controller;
 import com.sckw.core.exception.CustomPromptException;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.web.constant.HttpStatus;
+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.ExcelUtil;
 import com.sckw.order.model.vo.req.*;
+import com.sckw.order.model.vo.res.QueryTradeOrderResp;
 import com.sckw.order.serivce.TradeOrderManageService;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
@@ -84,4 +87,13 @@ public class TradeOrderManageController {
         return HttpResult.ok(tradeOrderManageService.contractAssociationList(params));
     }
 
+
+    /**
+     * 分页查询贸易订单
+     */
+    @PostMapping(value = "/pageQueryTradeOrder")
+    public BaseResult<PageDataResult<QueryTradeOrderResp>> pageQueryTradeOrder(@RequestBody @Validated QueryTradeOrderReq req) {
+        return BaseResult.success(tradeOrderManageService.pageQueryTradeOrder(req));
+    }
+
 }

+ 7 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrder.java

@@ -1,5 +1,6 @@
 package com.sckw.order.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.sckw.core.model.base.BaseModel;
@@ -105,4 +106,10 @@ public class KwoTradeOrder extends BaseModel implements Serializable {
      */
     private String source;
 
+    /**
+     * 计费方式
+     */
+    @TableField("charge_type")
+    private Integer chargeType;
+
 }

+ 4 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderAddress.java

@@ -1,5 +1,6 @@
 package com.sckw.order.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.sckw.core.model.base.BaseModel;
@@ -100,4 +101,7 @@ public class KwoTradeOrderAddress extends BaseModel implements Serializable {
      */
     private Integer sort;
 
+    @TableField(exist = false)
+    private String tradeOrderIdTypeKey;
+
 }

+ 6 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderGoods.java

@@ -1,5 +1,6 @@
 package com.sckw.order.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.sckw.core.model.base.BaseModel;
@@ -67,5 +68,10 @@ public class KwoTradeOrderGoods extends BaseModel implements Serializable {
      * kwp_goods_price_range表主键ID
      */
     private Long priceRangeId;
+    /**
+     * 商品名称
+     */
+    @TableField("goods_name")
+    private String goodsName ;
 
 }

+ 3 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderUnit.java

@@ -1,5 +1,6 @@
 package com.sckw.order.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.sckw.core.model.base.BaseModel;
@@ -71,5 +72,6 @@ public class KwoTradeOrderUnit extends BaseModel implements Serializable {
      * 联系电话
      */
     private String phone;
-
+    @TableField(exist = false)
+    private String tradeOrderIdAndUnitType;
 }

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

@@ -0,0 +1,70 @@
+package com.sckw.order.model.vo.req;
+
+import com.sckw.core.web.request.PageReq;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 贸易订单请求参数
+ * @create :2025-11-07 08:58:00
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class QueryTradeOrderReq extends PageReq implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -1255552097881890061L;
+    /**
+     * 订单编号
+     */
+    @Schema(description = "订单编号")
+    private String orderNo;
+    /**
+     * 商品名称
+     */
+    @Schema(description = "商品名称")
+    private String goodsName;
+
+    /**
+     * 商品类别
+     */
+    @Schema(description = "商品类别")
+    private String goodsType;
+    /**
+     * 商品规格
+     */
+    @Schema(description = "商品规格")
+    private String goodsSpec;
+    /**
+     * 采购单位id
+     */
+    @Schema(description = "采购单位id")
+    private String purchaseEntId;
+    /**
+     * 供应单位id
+     */
+    @Schema(description = "供应单位id")
+    private String supplyEntId;
+
+    /**
+     * 承运单位id
+     */
+    @Schema(description = "承运单位id")
+    private String carriageEntId;
+    /**
+     * 下单开始时间
+     */
+    @Schema(description = "下单开始时间")
+    private String orderStartTime;
+    /**
+     * 下单结束时间
+     */
+    @Schema(description = "下单结束时间")
+    private String orderEndTime;
+
+}

+ 143 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/QueryTradeOrderResp.java

@@ -0,0 +1,143 @@
+package com.sckw.order.model.vo.res;
+
+import com.sckw.core.web.request.PageReq;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 贸易订单响应对象
+ * @create :2025-11-07 08:58:00
+ */
+
+@Data
+public class QueryTradeOrderResp  implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -1255552097881890061L;
+    /**
+     * 贸易订单id
+     */
+    @Schema(description = "贸易订单id")
+    private String orderId;
+    /**
+     * 贸易订单编号
+     */
+    @Schema(description = "贸易订单编号")
+    private String orderNo;
+    /**
+     * 采购单位id
+     */
+    @Schema(description = "采购单位id")
+    private String purchaseEntId;
+    /**
+     * 采购单位名称
+     */
+    @Schema(description = "采购单位名称")
+    private String purchaseFirmName;
+    /**
+     * 供应单位id
+     */
+    @Schema(description = "供应单位id")
+    private String supplyEntId;
+    /**
+     * 供应单位名称
+     */
+    @Schema(description = "供应单位名称")
+    private String supplyFirmName;
+    /**
+     * 运输单位 id
+     *
+     */
+    @Schema(description = "运输单位 id")
+    private String transportEntId;
+    /**
+     * 运输单位名称
+     */
+    @Schema(description = "运输单位名称")
+    private String transportFirmName;
+    /**
+     * 商品名称
+     */
+    @Schema(description = "商品名称")
+    private String goodsName;
+    /**
+     * 商品价格
+     */
+    @Schema(description = "商品价格")
+    private String goodsPrice;
+    /**
+     * 计费方式
+     */
+    @Schema(description = "计费方式")
+    private String chargeType;
+    /**
+     * 计费方式描述
+     */
+    private String chargeTypeDesc;
+
+    /**
+     * 下单量
+     */
+    @Schema(description = "下单量")
+    private String orderQty;
+    /**
+     * 累计装货量
+     */
+    @Schema(description = "累计装货量")
+    private String loadQty;
+    /**
+     * 累计卸货量
+     */
+    @Schema(description = "累计卸货量")
+    private String unloadQty;
+    /**
+     * 装货地址
+     */
+    @Schema(description = "装货地址")
+    private String loadAddress;
+    /**
+     * 卸货地址
+     */
+    @Schema(description = "卸货地址")
+    private String unloadAddress;
+    /**
+     * 卸货联系人
+     */
+    @Schema(description = "卸货联系人")
+    private String unloadContacts;
+    /**
+     * 卸货联系电话
+     */
+    @Schema(description = "卸货联系电话")
+    private String unloadPhone;
+    /**
+     * 开始时间
+     */
+    @Schema(description = "开始时间")
+    private String startTime;
+    /**
+     * 结束时间
+     */
+    @Schema(description = "结束时间")
+    private String endTime;
+    /**
+     * 关联合同编号
+     */
+    @Schema(description = "关联合同编号")
+    private String contractNo;
+    /**
+     * 创建人
+     */
+    @Schema(description = "创建人")
+    private String createUser;
+    /**
+     * 创建时间
+     */
+    @Schema(description = "创建时间")
+    private String createTime;
+}

+ 26 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderAddressRepository.java

@@ -0,0 +1,26 @@
+package com.sckw.order.repository;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sckw.core.model.base.BaseModel;
+import com.sckw.order.dao.KwoTradeOrderAddressMapper;
+import com.sckw.order.model.KwoTradeOrderAddress;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 贸易订单地址信息接口
+ * @create :2025-11-07 11:00:00
+ */
+@Repository
+public class KwoTradeOrderAddressRepository extends ServiceImpl<KwoTradeOrderAddressMapper, KwoTradeOrderAddress> {
+    public List<KwoTradeOrderAddress> queryByOrderIds(Set<Long> tradeOrderIds) {
+        return list(Wrappers.<KwoTradeOrderAddress>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwoTradeOrderAddress::getTOrderId,tradeOrderIds));
+    }
+}

+ 26 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderContractRepository.java

@@ -0,0 +1,26 @@
+package com.sckw.order.repository;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sckw.core.model.base.BaseModel;
+import com.sckw.order.dao.KwoTradeOrderContractMapper;
+import com.sckw.order.model.KwoTradeOrderContract;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 贸易合同和贸易订单关联接口
+ * @create :2025-11-07 10:58:00
+ */
+@Repository
+public class KwoTradeOrderContractRepository extends ServiceImpl<KwoTradeOrderContractMapper, KwoTradeOrderContract> {
+    public List<KwoTradeOrderContract> queryByOrderIds(Set<Long> tradeOrderIds) {
+        return list(Wrappers.<KwoTradeOrderContract>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwoTradeOrderContract::getTOrderId, tradeOrderIds));
+    }
+}

+ 40 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderGoodsRepository.java

@@ -0,0 +1,40 @@
+package com.sckw.order.repository;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sckw.core.model.base.BaseModel;
+import com.sckw.order.dao.KwoTradeOrderGoodsMapper;
+import com.sckw.order.model.KwoTradeOrderGoods;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 贸易订单商品接口
+ * @create :2025-11-07 09:51:00
+ */
+@Repository
+public class KwoTradeOrderGoodsRepository extends ServiceImpl<KwoTradeOrderGoodsMapper, KwoTradeOrderGoods> {
+    public List<KwoTradeOrderGoods> queryByCondition(KwoTradeOrderGoods kwoTradeOrderGoods) {
+        return list(Wrappers.<KwoTradeOrderGoods>lambdaQuery()
+                .eq(BaseModel::getDelFlag, 0)
+                .like(StringUtils.isNotBlank(kwoTradeOrderGoods.getGoodsName()),KwoTradeOrderGoods::getGoodsName,
+                kwoTradeOrderGoods.getGoodsName()));
+    }
+
+    public List<KwoTradeOrderGoods> queryByOrderIds(Set<Long> tradeOrderIds) {
+        return list(Wrappers.<KwoTradeOrderGoods>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwoTradeOrderGoods::getTOrderId,tradeOrderIds));
+    }
+
+    public List<KwoTradeOrderGoods> queryByGoodsIds(Set<Long> goodsIds) {
+        return list(Wrappers.<KwoTradeOrderGoods>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwoTradeOrderGoods::getGoodsId,goodsIds));
+    }
+}

+ 35 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderRepository.java

@@ -0,0 +1,35 @@
+package com.sckw.order.repository;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.order.dao.KwoTradeOrderMapper;
+import com.sckw.order.model.KwoTradeOrder;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 贸易订单接口
+ * @create :2025-11-07 10:14:00
+ */
+@Repository
+public class KwoTradeOrderRepository extends ServiceImpl<KwoTradeOrderMapper, KwoTradeOrder> {
+    public IPage<KwoTradeOrder> queryByPage(List<Long> orderIds, String orderNo, 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(orderIds),KwoTradeOrder::getId, orderIds)
+                .eq(KwoTradeOrder::getDelFlag, 0)
+                .ge(StringUtils.isNotBlank(orderStartTime),KwoTradeOrder::getCreateTime, orderStartTime)
+                .le(StringUtils.isNotBlank(orderEndTime),KwoTradeOrder::getCreateTime, orderEndTime));
+    }
+}

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

@@ -0,0 +1,26 @@
+package com.sckw.order.repository;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sckw.core.model.base.BaseModel;
+import com.sckw.order.dao.KwoTradeOrderUnitMapper;
+import com.sckw.order.model.KwoTradeOrderUnit;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 贸易订单公司信息
+ * @create :2025-11-07 10:57:00
+ */
+@Repository
+public class KwoTradeOrderUnitRepository extends ServiceImpl<KwoTradeOrderUnitMapper, KwoTradeOrderUnit> {
+    public List<KwoTradeOrderUnit> queryByOrderIds(Set<Long> tradeOrderIds) {
+        return list(Wrappers.<KwoTradeOrderUnit>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwoTradeOrderUnit::getTOrderId, tradeOrderIds));
+    }
+}

+ 239 - 5
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/TradeOrderManageService.java

@@ -1,31 +1,54 @@
 package com.sckw.order.serivce;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.pagehelper.PageHelper;
+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.DictEnum;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
+import com.sckw.core.model.base.BaseModel;
+import com.sckw.core.model.enums.AddressTypeEnum;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.model.vo.TableBottom;
 import com.sckw.core.model.vo.TableStatisticRes;
 import com.sckw.core.model.vo.TableTop;
 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.context.LoginUserHolder;
+import com.sckw.core.web.response.result.PageDataResult;
 import com.sckw.order.dao.KwoTradeOrderMapper;
 import com.sckw.order.enums.OrderStatusEnum;
-import com.sckw.order.model.dto.OperatorTOrderListStsConditionDTO;
+import com.sckw.order.enums.OrderUnitTypeEnum;
+import com.sckw.order.model.*;
 import com.sckw.order.model.dto.OrderListResDTO;
 import com.sckw.order.model.dto.TradeOrderListSelectDTO;
 import com.sckw.order.model.vo.req.*;
+import com.sckw.order.model.vo.res.QueryTradeOrderResp;
+import com.sckw.order.repository.*;
+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.UserCacheResDto;
+import com.sckw.transport.api.dubbo.TransportRemoteService;
+import com.sckw.transport.api.model.vo.RTransportEntVo;
+import com.sckw.transport.api.model.vo.RWaybillSubOrderVo;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.math.RoundingMode;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * @desc: 运营端贸易订单管理相关service
@@ -39,10 +62,21 @@ public class TradeOrderManageService {
 
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteUserService remoteUserService;
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private GoodsInfoService goodsInfoService;
+
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private TransportRemoteService transportRemoteService;
 
     private final KwoTradeOrderService tradeOrderService;
     private final KwoTradeOrderMapper tradeOrderMapper;
-
+    private final KwoTradeOrderGoodsRepository tradeOrderGoodsRepository;
+    private final KwoTradeOrderRepository tradeOrderRepository;
+    private final KwoTradeOrderAddressRepository tradeOrderAddressRepository;
+    private final KwoTradeOrderUnitRepository tradeOrderUnitRepository;
+    private final KwoTradeOrderContractRepository tradeOrderContractRepository;
 
     /**
      * @desc: 贸易订单列表分页查询
@@ -140,4 +174,204 @@ public class TradeOrderManageService {
         Sort sort = Sort.by(Sort.Direction.DESC, "contractId", "createTime");
         return null;
     }
+
+    public PageDataResult<QueryTradeOrderResp> pageQueryTradeOrder(QueryTradeOrderReq req) {
+        log.info("查询物流订单请求参数:{}", JSON.toJSONString( 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 = kwoTradeOrderGoodsList.stream()
+                    .map(KwoTradeOrderGoods::getTOrderId)
+                    .toList();
+        }
+
+        //分页查询订单
+        IPage<KwoTradeOrder> page = tradeOrderRepository.queryByPage(orderIds,req.getOrderNo(),req.getOrderStartTime(),
+                req.getOrderEndTime(),
+                req.getPageNum(),req.getPageSize());
+        List<KwoTradeOrder> records = page.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            return PageDataResult.empty(req.getPageNum(), req.getPageSize());
+        }
+
+
+        //贸易订单号
+        Set<Long> tradeOrderIds = records.stream()
+                .map(BaseModel::getId)
+                .collect(Collectors.toSet());
+        //获取创建人id
+        List<Long> createByIds = records.stream()
+                .map(BaseModel::getCreateBy).distinct()
+                .collect(Collectors.toList());
+
+        //查询用户信息
+        Map<Long, UserCacheResDto> userIdAndUserMap = Maps.newHashMap() ;
+        if (CollectionUtils.isNotEmpty(createByIds)){
+            userIdAndUserMap = remoteSystemService.queryUserCacheMapByIds(createByIds);
+        }
+
+        //查询贸易合同商品信息
+        Map<Long, KwoTradeOrderGoods> tradeOrderIdGoodsMap = Maps.newHashMap() ;
+        List<KwoTradeOrderGoods> tradeOrderGoods = tradeOrderGoodsRepository.queryByOrderIds(tradeOrderIds);
+        List<Long> goodsList = Lists.newArrayList();
+        if (CollectionUtils.isNotEmpty(tradeOrderGoods)){
+            tradeOrderIdGoodsMap = tradeOrderGoods.stream()
+                    .collect(Collectors.toMap(KwoTradeOrderGoods::getTOrderId, Function.identity(), (k, v) -> k));
+            //获取商品id
+            goodsList = tradeOrderGoods.stream()
+                    .map(KwoTradeOrderGoods::getGoodsId)
+                    .distinct()
+                    .collect(Collectors.toList());
+        }
+
+        //查询商品信息
+        Map<Long, KwpGoods> goodsIdAndGoodsMap = Maps.newHashMap() ;
+        if (CollectionUtils.isNotEmpty(goodsList)){
+           goodsIdAndGoodsMap = goodsInfoService.getGoodsByIds(goodsList);
+        }
+
+        //查询贸易订单公司信息
+        List<KwoTradeOrderUnit> tradeOrderUnits = tradeOrderUnitRepository.queryByOrderIds(tradeOrderIds);
+        Map<String, KwoTradeOrderUnit> orderIdUnitTypeAndUnitMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeOrderUnits)){
+            //按照订单号类型进行映射
+            orderIdUnitTypeAndUnitMap = tradeOrderUnits.stream()
+                    .peek(x -> x.setTradeOrderIdAndUnitType(x.getTOrderNo() + "-" + x.getUnitType()))
+                    .collect(Collectors.toMap(KwoTradeOrderUnit::getTradeOrderIdAndUnitType, Function.identity(), (k,
+                                                                                                                   v) -> k));
+        }
+        //查询贸易订单地址信息
+        List<KwoTradeOrderAddress> tradeOrderAddresses = tradeOrderAddressRepository.queryByOrderIds(tradeOrderIds);
+        Map<String, KwoTradeOrderAddress> orderIdAndAddressMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeOrderAddresses)){
+            //将贸易订单id和地址类型组成key映射地址信息
+            orderIdAndAddressMap = tradeOrderAddresses.stream()
+                    .peek(x -> x.setTradeOrderIdTypeKey(x.getTOrderId() + "-" + x.getAddressType()))
+                    .collect(Collectors.toMap(KwoTradeOrderAddress::getTradeOrderIdTypeKey,Function.identity(),
+                            (k, v)->k));
+         }
+        //查询贸易订单合同信息(一个贸易合同对应多个贸易订单)
+        List<KwoTradeOrderContract> tradeOrderContracts = tradeOrderContractRepository.queryByOrderIds(tradeOrderIds);
+        Map<Long, KwoTradeOrderContract> tradeOrderIdAndContractMap = Maps.newHashMap();
+        if (CollectionUtils.isNotEmpty(tradeOrderContracts)){
+            tradeOrderIdAndContractMap = tradeOrderContracts.stream()
+                    .collect(Collectors.toMap(KwoTradeOrderContract::getTOrderId,
+                    Function.identity(), (k1, k2) -> k1));
+        }
+
+        //查询物流信息
+        List<RTransportEntVo> transportEnts = transportRemoteService.queryTransportEnt(tradeOrderIds);
+        Map<Integer, RTransportEntVo> entTypeAndTransportEntMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(transportEnts)){
+            entTypeAndTransportEntMap =
+                    transportEnts.stream().collect(Collectors.toMap(RTransportEntVo::getTransportEntType, Function.identity(),
+                    (k, v) -> k));
+        }
+        //查询运单信息
+        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);
+    }
+
+    @NotNull
+    private static QueryTradeOrderResp getQueryTradeOrderResp(KwoTradeOrder tradeOrder, Map<String, KwoTradeOrderUnit> finalOrderIdUnitTypeAndUnitMap, Map<Integer, RTransportEntVo> finalEntTypeAndTransportEntMap, Map<Long, KwoTradeOrderGoods> finalTradeOrderIdGoodsMap, Map<Long, KwpGoods> finalGoodsIdAndGoodsMap, Map<Long, RWaybillSubOrderVo> finalTradeIdAndSubOrderVoMap, Map<String, KwoTradeOrderAddress> finalOrderIdAndAddressMap, Map<Long, KwoTradeOrderContract> finalTradeOrderIdAndContractMap, Map<Long, UserCacheResDto> finalUserIdAndUserMap) {
+        QueryTradeOrderResp queryTradeOrderResp = new QueryTradeOrderResp();
+        queryTradeOrderResp.setOrderId(String.valueOf(tradeOrder.getId()));
+        queryTradeOrderResp.setOrderNo(tradeOrder.getTOrderNo());
+        KwoTradeOrderUnit purchaseEnt = finalOrderIdUnitTypeAndUnitMap.getOrDefault(tradeOrder.getId() + "-" + OrderUnitTypeEnum.PURCHASE.getType(),
+                new KwoTradeOrderUnit());
+
+        queryTradeOrderResp.setPurchaseEntId(String.valueOf(purchaseEnt.getEntId()));
+        queryTradeOrderResp.setPurchaseFirmName(purchaseEnt.getFirmName());
+        KwoTradeOrderUnit supplyEnt =
+                finalOrderIdUnitTypeAndUnitMap.getOrDefault(tradeOrder.getId() + "-" + OrderUnitTypeEnum.SALE.getType(),
+                        new KwoTradeOrderUnit());
+        queryTradeOrderResp.setSupplyEntId(String.valueOf(supplyEnt.getEntId()));
+        queryTradeOrderResp.setSupplyFirmName(supplyEnt.getFirmName());
+        //1.承运 2.拖运
+        RTransportEntVo transportEntVo = finalEntTypeAndTransportEntMap.getOrDefault(2, new RTransportEntVo());
+        queryTradeOrderResp.setTransportEntId(String.valueOf(transportEntVo.getTransportEntId()));
+        queryTradeOrderResp.setTransportFirmName(transportEntVo.getTransportEntName());
+
+        KwoTradeOrderGoods tradeOrderGood = finalTradeOrderIdGoodsMap.getOrDefault(tradeOrder.getId(), new KwoTradeOrderGoods());
+        KwpGoods kwpGoods = finalGoodsIdAndGoodsMap.getOrDefault(tradeOrderGood.getGoodsId(), new KwpGoods());
+        queryTradeOrderResp.setGoodsName(kwpGoods.getName() + "/" + kwpGoods.getGoodsType() + "/" + kwpGoods.getSpec());
+        queryTradeOrderResp.setGoodsPrice(Objects.nonNull(tradeOrderGood.getUnitPrice()) ?
+                tradeOrderGood.getUnitPrice().setScale(2, RoundingMode.HALF_UP).toPlainString() : "");
+        queryTradeOrderResp.setChargeType(String.valueOf(tradeOrder.getChargeType()));
+        queryTradeOrderResp.setChargeType(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(),
+                String.valueOf(tradeOrder.getChargeType())));
+
+
+        RWaybillSubOrderVo subOrderVo = finalTradeIdAndSubOrderVoMap.getOrDefault(tradeOrder.getId(),
+                new RWaybillSubOrderVo());
+        List<RWaybillSubOrderVo.BillSubOrder> subOrders = subOrderVo.getSubOrders();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(subOrders)) {
+            double sum = subOrders.stream()
+                    .filter(s -> Objects.nonNull(s.getLoadAmount()))
+                    .mapToDouble(s -> s.getLoadAmount().doubleValue()).sum();
+            double unloadQty = subOrders.stream()
+                    .filter(s -> Objects.nonNull(s.getUnloadAmount()))
+                    .mapToDouble(s -> s.getUnloadAmount().doubleValue()).sum();
+            queryTradeOrderResp.setLoadQty(String.valueOf(sum));
+            queryTradeOrderResp.setUnloadQty(String.valueOf(unloadQty));
+        }
+        queryTradeOrderResp.setOrderQty(Objects.nonNull(tradeOrder.getAmount()) ?
+                tradeOrder.getAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "");
+        KwoTradeOrderAddress loadAdd = finalOrderIdAndAddressMap.getOrDefault(tradeOrder.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(),
+                new KwoTradeOrderAddress());
+        queryTradeOrderResp.setLoadAddress(loadAdd.getDetailAddress());
+
+        KwoTradeOrderAddress unLoadAdd =
+                finalOrderIdAndAddressMap.getOrDefault(tradeOrder.getId() + "-" + AddressTypeEnum.TAKE.getCode(),
+                        new KwoTradeOrderAddress());
+        queryTradeOrderResp.setUnloadAddress(unLoadAdd.getDetailAddress());
+        queryTradeOrderResp.setUnloadContacts(unLoadAdd.getContacts());
+        queryTradeOrderResp.setUnloadPhone(unLoadAdd.getPhone());
+        queryTradeOrderResp.setStartTime(DateUtils.format(tradeOrder.getStartTime(), DateUtils.DATE_PATTERN));
+        queryTradeOrderResp.setEndTime(DateUtils.format(tradeOrder.getEndTime(), DateUtils.DATE_PATTERN));
+        KwoTradeOrderContract orderContract = finalTradeOrderIdAndContractMap.getOrDefault(tradeOrder.getId(),
+                new KwoTradeOrderContract());
+        queryTradeOrderResp.setContractNo(orderContract.getContractNo());
+        UserCacheResDto userCacheResDto = finalUserIdAndUserMap.getOrDefault(tradeOrder.getCreateBy(), new UserCacheResDto());
+        queryTradeOrderResp.setCreateUser(userCacheResDto.getName());
+        queryTradeOrderResp.setCreateTime(DateUtils.format(tradeOrder.getCreateTime(), DateUtils.DATE_TIME_PATTERN));
+        return queryTradeOrderResp;
+    }
 }

+ 45 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/dubbo/GoodsInfoServiceImpl.java

@@ -7,11 +7,14 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.GoodsDetail;
 import com.sckw.product.api.model.KwpGoods;
+import com.sckw.product.repository.KwpGoodsRepository;
 import com.sckw.product.service.KwpGoodsService;
 import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.math.BigDecimal;
@@ -28,10 +31,12 @@ import java.util.stream.Collectors;
  */
 @DubboService(group = "design", version = "1.0.0")
 @Slf4j
+@RequiredArgsConstructor
 public class GoodsInfoServiceImpl implements GoodsInfoService {
 
     @Autowired
     private KwpGoodsService kwpGoodsService;
+    private final KwpGoodsRepository kwpGoodsRepository;
 
     @Override
     public GoodsDetail getDetailById(Long id) {
@@ -101,4 +106,44 @@ public class GoodsInfoServiceImpl implements GoodsInfoService {
         List<Long> ids = kwpGoodsService.selectIdsTaxRateAndLikeGoodsName(name, goodsTaxRate);
         return CollUtil.emptyIfNull(ids);
     }
+
+    @Override
+    public List<KwpGoods> getGoodsByNameTypeDesc(String goodsName, String goodsType, String goodsSpec) {
+        List<com.sckw.product.model.KwpGoods> kwpGoods = kwpGoodsRepository.queryByGoodsNameAndTypeAndDesc(goodsName, goodsType, goodsSpec);
+        return kwpGoods.stream()
+                .map(GoodsInfoServiceImpl::getKwpGoods)
+                .collect(Collectors.toList());
+    }
+
+    @NotNull
+    private static KwpGoods getKwpGoods(com.sckw.product.model.KwpGoods g) {
+        KwpGoods goods = new KwpGoods();
+        goods.setEntId(g.getEntId());
+        goods.setSupplyEntId(g.getSupplyEntId());
+        goods.setCode(g.getCode());
+        goods.setName(g.getName());
+        goods.setGoodsType(g.getGoodsType());
+        goods.setAreaCode(g.getAreaCode());
+        goods.setAddressName(g.getAddressName());
+        goods.setAmount(g.getAmount());
+        goods.setUnit(g.getUnit());
+        goods.setSpec(g.getSpec());
+        goods.setTaxRate(g.getTaxRate());
+        goods.setPrepaidLimit(g.getPrepaidLimit());
+        goods.setAdvancePrice(g.getAdvancePrice());
+        goods.setManager(g.getManager());
+        goods.setPerformedAmount(g.getPerformedAmount());
+        goods.setThumb(g.getThumb());
+        goods.setAddedTime(g.getAddedTime());
+        goods.setShelfTime(g.getShelfTime());
+        goods.setId(g.getId());
+        goods.setRemark(g.getRemark());
+        goods.setStatus(g.getStatus());
+        goods.setCreateBy(g.getCreateBy());
+        goods.setCreateTime(g.getCreateTime());
+        goods.setUpdateBy(g.getUpdateBy());
+        goods.setUpdateTime(g.getUpdateTime());
+        goods.setDelFlag(g.getDelFlag());
+        return goods;
+    }
 }

+ 8 - 2
sckw-modules/sckw-product/src/main/java/com/sckw/product/repository/KwpGoodsRepository.java

@@ -4,12 +4,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sckw.product.dao.KwpGoodsMapper;
 import com.sckw.product.model.KwpGoods;
-import jakarta.validation.constraints.NotBlank;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
-import java.util.Objects;
 
 /**
  * @author :chenXiaoFei
@@ -26,4 +24,12 @@ public class KwpGoodsRepository extends ServiceImpl<KwpGoodsMapper, KwpGoods> {
                 .like(StringUtils.isNotBlank(goodsName),KwpGoods::getName,goodsName));
 
     }
+
+    public List<KwpGoods> queryByGoodsNameAndTypeAndDesc(String goodsName, String goodsType, String goodsSpec) {
+        return list(Wrappers.<KwpGoods>lambdaQuery()
+                .eq(KwpGoods::getDelFlag,0)
+                .like(StringUtils.isNotBlank(goodsName),KwpGoods::getName,goodsName)
+                .like(StringUtils.isNotBlank(goodsType),KwpGoods::getGoodsType,goodsType)
+                .like(StringUtils.isNotBlank(goodsSpec),KwpGoods::getSpec,goodsSpec));
+    }
 }

+ 81 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java

@@ -38,16 +38,18 @@ import com.sckw.transport.api.model.dto.RWaybillOrderDto;
 import com.sckw.transport.api.model.param.ContractSignLogisticsParam;
 import com.sckw.transport.api.model.param.LogisticsOrderParam;
 import com.sckw.transport.api.model.param.UpdateOrderStatusDto;
-import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
-import com.sckw.transport.api.model.vo.RTruckMonitorVo;
-import com.sckw.transport.api.model.vo.RWaybillOrderVo;
+import com.sckw.transport.api.model.vo.*;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.vo.WaybillCountVo;
+import com.sckw.transport.repository.KwtLogisticsOrderRepository;
+import com.sckw.transport.repository.KwtLogisticsOrderUnitRepository;
 import com.sckw.transport.repository.KwtWaybillOrderRepository;
+import com.sckw.transport.repository.KwtWaybillOrderSubtaskRepository;
 import com.sckw.transport.service.KwtCommonService;
 import jakarta.annotation.Resource;
 import jodd.util.StringUtil;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -70,6 +72,7 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 @DubboService(group = "design", version = "1.0.0", timeout = 50000)
+@RequiredArgsConstructor
 public class TransportServiceImpl implements TransportRemoteService {
 
     @Autowired
@@ -116,6 +119,9 @@ public class TransportServiceImpl implements TransportRemoteService {
     @Resource
     private KwtWaybillOrderRepository waybillOrderRepository;
 
+    private final KwtWaybillOrderSubtaskRepository waybillOrderSubtaskRepository;
+    private final KwtLogisticsOrderRepository logisticsOrderRepository;
+    private final KwtLogisticsOrderUnitRepository logisticsOrderUnitRepository;
     /**
      * 对账管理-ids查询
      *
@@ -818,6 +824,78 @@ public class TransportServiceImpl implements TransportRemoteService {
                .collect(Collectors.toList());
     }
 
+    @Override
+    public List<RTransportEntVo> queryTransportEnt(Set<Long> tradeOrderIds) {
+        List<KwtLogisticsOrder> logisticsOrders = logisticsOrderRepository.queryByTradeOrderIds(tradeOrderIds);
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(logisticsOrders)){
+            return Collections.emptyList();
+        }
+        List<Long> logIds = logisticsOrders.stream()
+                .map(KwtLogisticsOrder::getId)
+                .collect(Collectors.toList());
+        List<KwtLogisticsOrderUnit> units = logisticsOrderUnitRepository.queryByLogOrderIds(logIds);
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(units)){
+            return Collections.emptyList();
+        }
+       return units.stream().map(unit -> {
+            RTransportEntVo rTransportEntVo = new RTransportEntVo();
+            rTransportEntVo.setTransportEntType(unit.getUnitType());
+            rTransportEntVo.setTransportEntId(unit.getEntId());
+            rTransportEntVo.setTransportEntName(unit.getFirmName());
+            return rTransportEntVo;
+        }).collect(Collectors.toList());
+    }
+
+    @Override
+    public List<RWaybillSubOrderVo> queryWaybillOrderByTradeOrderIds(Set<Long> tradeOrderIds) {
+        List<KwtLogisticsOrder> logisticsOrders = logisticsOrderRepository.queryByTradeOrderIds(tradeOrderIds);
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(logisticsOrders)){
+            return Collections.emptyList();
+        }
+        List<Long> logIds = logisticsOrders.stream()
+                .map(KwtLogisticsOrder::getId)
+                .collect(Collectors.toList());
+        List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskRepository.queryByLogIds(logIds);
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(subtasks)){
+            return Collections.emptyList();
+        }
+        //物理订单id映射运单
+        Map<Long, List<KwtWaybillOrderSubtask>> logIdAndSubtasksMap =
+                subtasks.stream().collect(Collectors.groupingBy(KwtWaybillOrderSubtask::getLOrderId));
+      return logisticsOrders.stream().map(l-> {
+            RWaybillSubOrderVo rWaybillOrderVo = new RWaybillSubOrderVo();
+            rWaybillOrderVo.setTradeId(l.getTOrderId());
+            List<KwtWaybillOrderSubtask> waybillOrderSubtasks = logIdAndSubtasksMap.get(l.getId());
+            List<RWaybillSubOrderVo.BillSubOrder> subOrders = null;
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(waybillOrderSubtasks)) {
+                subOrders = waybillOrderSubtasks.stream()
+                        .map(TransportServiceImpl::getRWaybillSubOrderVo)
+                        .collect(Collectors.toList());
+            }
+            rWaybillOrderVo.setSubOrders(subOrders);
+            return rWaybillOrderVo;
+        }).collect(Collectors.toList());
+
+    }
+
+    @NotNull
+    private static RWaybillSubOrderVo.BillSubOrder getRWaybillSubOrderVo(KwtWaybillOrderSubtask subtask) {
+        RWaybillSubOrderVo.BillSubOrder billSubOrder = new RWaybillSubOrderVo.BillSubOrder();
+        billSubOrder.setEntId(subtask.getEntId());
+        billSubOrder.setLOrderId(subtask.getLOrderId());
+        billSubOrder.setWOrderId(subtask.getWOrderId());
+        billSubOrder.setWOrderNo(subtask.getWOrderNo());
+        billSubOrder.setUnit(subtask.getUnit());
+        billSubOrder.setEntrustAmount(subtask.getEntrustAmount());
+        billSubOrder.setUnloadAmount(subtask.getUnloadAmount());
+        billSubOrder.setUnloadTime(subtask.getUnloadTime());
+        billSubOrder.setLoadAmount(subtask.getLoadAmount());
+        billSubOrder.setLoadTime(subtask.getLoadTime());
+        billSubOrder.setDeficitAmount(subtask.getDeficitAmount());
+        billSubOrder.setDeficitPrice(subtask.getDeficitPrice());
+        return billSubOrder;
+    }
+
     @NotNull
     private static RWaybillOrderVo getWaybillOrderVo(KwtWaybillOrder waybillOrder) {
         RWaybillOrderVo vo = new RWaybillOrderVo();

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

@@ -8,6 +8,7 @@ import org.springframework.stereotype.Repository;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Set;
 
 /**
  * @author PC
@@ -19,4 +20,10 @@ public class KwtLogisticsOrderRepository extends ServiceImpl<KwtLogisticsOrderMa
                 .ge(KwtLogisticsOrder::getCreateTime, localDateTime)
                 .eq(KwtLogisticsOrder::getDelFlag, 0));
     }
+
+    public List<KwtLogisticsOrder> queryByTradeOrderIds(Set<Long> tradeOrderIds) {
+        return list(Wrappers.<KwtLogisticsOrder>lambdaQuery()
+                .eq(KwtLogisticsOrder::getDelFlag, 0)
+                .in(KwtLogisticsOrder::getTOrderId, tradeOrderIds));
+    }
 }

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

@@ -29,4 +29,10 @@ public class KwtLogisticsOrderUnitRepository extends ServiceImpl<KwtLogisticsOrd
                 .in(KwtLogisticsOrderUnit::getLOrderId,lOrderIds)
                 .eq(KwtLogisticsOrderUnit::getUnitType,unitType));
     }
+
+    public List<KwtLogisticsOrderUnit> queryByLogOrderIds(List<Long> logIds) {
+        return list(Wrappers.<KwtLogisticsOrderUnit>lambdaQuery()
+                .eq(KwtLogisticsOrderUnit::getDelFlag,0)
+                .in(KwtLogisticsOrderUnit::getLOrderId,logIds));
+    }
 }

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

@@ -41,4 +41,10 @@ public class KwtWaybillOrderSubtaskRepository extends ServiceImpl<KwtWaybillOrde
                 .eq(BaseModel::getDelFlag,0)
                 .in(KwtWaybillOrderSubtask::getWOrderId,wOrderIds));
     }
+
+    public List<KwtWaybillOrderSubtask> queryByLogIds(List<Long> logIds) {
+        return list(Wrappers.<KwtWaybillOrderSubtask>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwtWaybillOrderSubtask::getLOrderId,logIds));
+    }
 }

+ 5 - 0
sql/2025/11/30/2025_11_30_cxf_alert.sql

@@ -24,3 +24,8 @@ ALTER TABLE kwc_contract_trade_order ADD unload_address  varchar(255) NOT NULL d
 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 kwo_trade_order ADD charge_type TINYINT NOT NULL default '0'  comment '计费方式';
+ALTER TABLE kwo_trade_order_goods ADD goods_name varchar(255)   NOT NULL default ''  comment '商品名称';
+