Jelajahi Sumber

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

xucaiqin 1 bulan lalu
induk
melakukan
1ce75a95fa

+ 1 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java

@@ -52,7 +52,7 @@ public enum DictTypeEnum {
     ORDER_SOURCE("order_source", "订单来源"),
     CONSIGNMENT_WAY("consignment_way", "托运方式"),
     SETTLEMENT_WAY(" settlement_way", "结算方式"),
-    LOAD_UNLOAD_WAY("load_unLoad_way", "装卸方式"),
+    LOAD_UNLOAD_WAY("load_unload_way", "装卸方式"),
     ;
 
     private final String type;

+ 2 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java

@@ -160,4 +160,6 @@ public interface TradeOrderInfoService {
     void orderSettle(TradeOrderSettlePara tradeOrderSettlePara);
 
 
+    List<TradeOrderContractVo> queryByTradeContactIds(Set<Long> tradeContractIds);
+
 }

+ 49 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/TradeOrderContractVo.java

@@ -0,0 +1,49 @@
+package com.sckw.order.api.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.sckw.core.model.base.BaseModel;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @desc: 交易订单合同(采购合同/销售合同)
+ * @author: yzc
+ * @date: 2023-06-25 9:31
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class TradeOrderContractVo extends BaseModel implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3482504164031633290L;
+    /**
+     * 合同id
+     */
+    private Long contractId;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 订单id(销售订单/采购订单)
+     */
+    @JsonProperty("tOrderId")
+    private Long tOrderId;
+
+    /**
+     * 订单编号(销售订单/采购订单)
+     */
+    @JsonProperty("tOrderNo")
+    private String tOrderNo;
+
+}

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

@@ -21,6 +21,7 @@ public class RWaybillSubOrderVo implements Serializable {
      */
     private Long tradeId;
     private List<BillSubOrder> subOrders;
+    private List<LogisticGoodsInfo> logisticGoodsInfos;
 
 
 
@@ -39,6 +40,10 @@ public class RWaybillSubOrderVo implements Serializable {
          * 物流订单id(kwt_logistics_order)
          */
         private Long lOrderId;
+        /**
+         * 商品id
+         */
+        private Long goodId;
 
         /**
          * 物流订单id
@@ -90,4 +95,11 @@ public class RWaybillSubOrderVo implements Serializable {
          */
         private BigDecimal deficitPrice;
     }
+    @Data
+    public static class LogisticGoodsInfo implements Serializable{
+        @Serial
+        private static final long serialVersionUID = -5467651145344958760L;
+        private Long lOrderId;
+        private Long goodsId;
+    }
 }

+ 61 - 59
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractTradeService.java

@@ -41,6 +41,7 @@ import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
 import com.sckw.order.api.model.ContractSignCompletedParam;
 import com.sckw.order.api.model.OrderDetailVo;
+import com.sckw.order.api.model.TradeOrderContractVo;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.KwpGoods;
 import com.sckw.stream.enums.MessageEnum;
@@ -171,55 +172,7 @@ public class KwcContractTradeService {
         queryTradeReq.setPageSize(reqVo.getPageSize());
 
         List<QueryListResVo> queryListResVoPageDataResult = queryTradeListByPage(queryTradeReq);
-       // List<QueryListResVo> list1 = queryListResVoPageDataResult.getList();
-//        QueryListReqDto queryListReqDto = new QueryListReqDto();
-//        BeanUtils.copyProperties(reqVo, queryListReqDto);
-//        List<Long> allEnt = new ArrayList<>();
-//        if (Objects.isNull(reqVo.getEntId())) {
-//            queryListReqDto.setEntId(LoginUserHolder.getEntId());
-//        }
-//        allEnt.add(queryListReqDto.getEntId());
-//
-//        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(queryListReqDto.getEntId());
-//        if (Objects.nonNull(entCacheResDto)) {
-//            EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntTreeById(entCacheResDto.getId());
-//            List<EntCacheResDto> child = entCacheResDto1.getChild();
-//            if (CollectionUtils.isNotEmpty(child)) {
-//                allEnt.addAll(child.stream().map(EntCacheResDto::getId).toList());
-//            }
-//        }
-//        queryListReqDto.setAllEnt(allEnt);
-//
-//        if (StringUtils.isNotBlank(reqVo.getKeywords())) {
-//            List<KwsUserResDto> userByName = remoteUserService.getUserByName(reqVo.getKeywords());
-//            if (CollectionUtils.isNotEmpty(userByName)) {
-//                queryListReqDto.setInitiateList(userByName.stream().map(KwsUserResDto::getId).toList());
-//            }
-//        }
-//
-//        List<QueryListResDto> queryListResDtos = kwcContractTradeMapper.queryList1(queryListReqDto);
-//        if (CollectionUtils.isEmpty(queryListResDtos)) {
-//            return PageHelperUtil.getPageResult(new PageInfo<>());
-//        }
-//        //查询公司信息
-//        Set<Long> tradeContractIds = queryListResDtos.stream().map(QueryListResDto::getId).collect(Collectors.toSet());
-//        List<KwcContractTradeUnit> tradeUnits = kwcContractTradeUnitRepository.queryByContractIds(tradeContractIds);
-//        Map<String, KwcContractTradeUnit> contractUnitTypeKeyAndUnitMap = Maps.newHashMap();
-//        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeUnits)){
-//            contractUnitTypeKeyAndUnitMap = tradeUnits.stream()
-//                    .peek(x -> x.setContractIdUniTypeKey(x.getContractId() + "-" + x.getUnitType()))
-//                    .collect(Collectors.toMap(KwcContractTradeUnit::getContractIdUniTypeKey, Function.identity(), (v1
-//                            , v2) -> v1));
-//        }
-//
-//        //查询贸易合同关联商品
-//        List<KwcContractTradeGoods> tradeContractGoods = kwcContractTradeGoodsRepository.queryByContractIds(tradeContractIds);
-//        Map<Long, List<KwcContractTradeGoods>> contractIdGoodsIdKeyAndGoodsMap = Maps.newHashMap();
-//        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeContractGoods)){
-//            contractIdGoodsIdKeyAndGoodsMap =
-//                    tradeContractGoods.stream().collect(Collectors.groupingBy(KwcContractTradeGoods::getContractId));
-//        }
-//        List<QueryListResVo> list = getQueryListResVos(queryListResDtos, contractIdGoodsIdKeyAndGoodsMap,contractUnitTypeKeyAndUnitMap);
+
         return PageHelperUtil.getPageResult(new PageInfo<>(queryListResVoPageDataResult), queryListResVoPageDataResult, reqVo.getPageSize());
     }
 
@@ -1464,7 +1417,7 @@ public class KwcContractTradeService {
         tradeGoodsInfo.setGoodsName(goods.getName()+"/"+goods.getGoodsType()+"/"+goods.getSpec());
         tradeGoodsInfo.setAmount(t.getAmount());
         tradeGoodsInfo.setPrice(t.getPrice());
-        tradeGoodsInfo.setUnit(t.getUnit());
+        tradeGoodsInfo.setUnit(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(),t.getUnit()));
         tradeGoodsInfo.setEffectiveStartTime(t.getStartTime());
         tradeGoodsInfo.setEffectiveEntTime(t.getEndTime());
         return tradeGoodsInfo;
@@ -1586,10 +1539,39 @@ public class KwcContractTradeService {
         List<Long> createBys =
                 records.stream().map(KwcContractTrade::getCreateBy).distinct().collect(Collectors.toList());
         Map<Long, UserCacheResDto> longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(createBys);
+        //根据物流查询贸易订单
+        List<TradeOrderContractVo> tradeOrderContractVos = tradeOrderInfoService.queryByTradeContactIds(tradeContractIds);
+        Map<Long, RWaybillSubOrderVo> tradeOrderIdAndWaybillMap = Maps.newHashMap();
+        Map<Long, TradeOrderContractVo> contractIdAndContractMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeOrderContractVos)){
+            contractIdAndContractMap = tradeOrderContractVos.stream()
+                    .collect(Collectors.toMap(TradeOrderContractVo::getContractId, Function.identity(), (v1, v2) -> v1));
+            //贸易订单id
+            Set<Long> tradeOrderIds = tradeOrderContractVos.stream()
+                    .map(TradeOrderContractVo::getTOrderId)
+                    .collect(Collectors.toSet());
+            //通过贸易订单id查询物流运单
+            List<RWaybillSubOrderVo> rWaybillSubOrderVos = transportRemoteService.queryWaybillOrderByTradeOrderIds(tradeOrderIds);
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(rWaybillSubOrderVos)){
+                tradeOrderIdAndWaybillMap = rWaybillSubOrderVos.stream()
+                        .collect(Collectors.toMap(RWaybillSubOrderVo::getTradeId, Function.identity(), (k1, k2) -> k1));
+            }
+        }
+        //根据合同id查询合同商品
+        List<KwcContractTradeGoods> tradeGoods = kwcContractTradeGoodsRepository.queryByContractIds(tradeContractIds);
+        Map<Long, KwcContractTradeGoods> goodsIdAndGoodsMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeGoods)){
+            goodsIdAndGoodsMap = tradeGoods.stream().collect(Collectors.toMap(KwcContractTradeGoods::getGoodsId,Function.identity(), (v1, v2) -> v1));
+        }
+
         Map<Long, KwcContractTrade> finalPidIdAndTradeMap = pidIdAndTradeMap;
         Map<String, KwcContractTradeUnit> finalContractUnitTypeKeyAndUnitMap = contractUnitTypeKeyAndUnitMap;
+        Map<Long, RWaybillSubOrderVo> finalTradeOrderIdAndWaybillMap = tradeOrderIdAndWaybillMap;
+        Map<Long, TradeOrderContractVo> finalContractIdAndContractMap = contractIdAndContractMap;
+        Map<Long, KwcContractTradeGoods> finalGoodsIdAndGoodsMap = goodsIdAndGoodsMap;
         List<QueryListResVo> queryListResVos = records.stream()
-                .map(t -> getQueryListResVo(t, finalContractUnitTypeKeyAndUnitMap, finalPidIdAndTradeMap, longUserCacheResDtoMap))
+                .map(t -> getQueryListResVo(t, finalContractUnitTypeKeyAndUnitMap, finalPidIdAndTradeMap, longUserCacheResDtoMap,
+                        finalTradeOrderIdAndWaybillMap, finalContractIdAndContractMap, finalGoodsIdAndGoodsMap))
                 .collect(Collectors.toList());
         if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getPurchaseEntId())){
             queryListResVos = queryListResVos.stream()
@@ -1606,7 +1588,13 @@ public class KwcContractTradeService {
     }
 
     @NotNull
-    private static QueryListResVo getQueryListResVo(KwcContractTrade t, Map<String, KwcContractTradeUnit> finalContractUnitTypeKeyAndUnitMap, Map<Long, KwcContractTrade> finalPidIdAndTradeMap, Map<Long, UserCacheResDto> longUserCacheResDtoMap) {
+    private static QueryListResVo getQueryListResVo(KwcContractTrade t,
+                                                    Map<String, KwcContractTradeUnit> finalContractUnitTypeKeyAndUnitMap,
+                                                    Map<Long, KwcContractTrade> finalPidIdAndTradeMap,
+                                                    Map<Long, UserCacheResDto> longUserCacheResDtoMap,
+                                                    Map<Long, RWaybillSubOrderVo> tradeOrderIdAndWaybillMap,
+                                                    Map<Long, TradeOrderContractVo> contractIdAndContractMap,
+                                                    Map<Long, KwcContractTradeGoods> goodsIdAndGoodsMap) {
         QueryListResVo queryListResVo = new QueryListResVo();
         queryListResVo.setId(t.getId());
         queryListResVo.setStatus(t.getStatus());
@@ -1630,17 +1618,31 @@ public class KwcContractTradeService {
         queryListResVo.setUnloadWayName(DictEnum.getLabel(DictTypeEnum.LOAD_UNLOAD_WAY.getType(),
                 String.valueOf(t.getUnloadWay())));
         queryListResVo.setAmount(t.getAmount());
-        queryListResVo.setPerformedAmount(t.getPerformedAmount());
-
-        // queryListResVo.setPerformedAmountMoney();
+        TradeOrderContractVo tradeOrderContractVo = contractIdAndContractMap.getOrDefault(t.getId(), new TradeOrderContractVo());
+        RWaybillSubOrderVo subOrderVo = tradeOrderIdAndWaybillMap.getOrDefault(tradeOrderContractVo.getTOrderId(), new RWaybillSubOrderVo());
+        List<RWaybillSubOrderVo.BillSubOrder> subOrders = subOrderVo.getSubOrders();
+        BigDecimal unloadQty = BigDecimal.ZERO;
+        BigDecimal performedAmountMoney = BigDecimal.ZERO;
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(subOrders)){
+            unloadQty = subOrders.stream()
+                    .map(RWaybillSubOrderVo.BillSubOrder::getUnloadAmount)
+                    .filter(Objects::nonNull)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            performedAmountMoney = subOrders.stream()
+                    .filter(x -> Objects.nonNull(x.getUnloadAmount()))
+                    .map(x -> {
+                        KwcContractTradeGoods orDefault = goodsIdAndGoodsMap.getOrDefault(x.getGoodId(), new KwcContractTradeGoods());
+                        BigDecimal price = Optional.ofNullable(orDefault).map(KwcContractTradeGoods::getPrice).orElse(BigDecimal.ZERO);
+                        return x.getUnloadAmount().multiply(price);
+                    }).reduce(BigDecimal.ZERO, BigDecimal::add);
+        }
+        queryListResVo.setPerformedAmount(unloadQty.setScale(2, RoundingMode.HALF_UP));
+
+        queryListResVo.setPerformedAmountMoney(performedAmountMoney.setScale(2, RoundingMode.HALF_UP));
         queryListResVo.setContractPid(t.getContractPid());
         KwcContractTrade parentTrade = finalPidIdAndTradeMap.getOrDefault(t.getContractPid(),
                 new KwcContractTrade());
         queryListResVo.setContractPname(parentTrade.getName());
-
-//            queryListResVo.setChargingName();
-//            queryListResVo.setTradingName();
-//            queryListResVo.setCarrierEntName();
         UserCacheResDto userCacheResDto = longUserCacheResDtoMap.getOrDefault(t.getCreateBy(), new UserCacheResDto());
         queryListResVo.setInitiateName(userCacheResDto.getName());
         if (Objects.nonNull(userCacheResDto.getEntInfo())){

+ 16 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -591,6 +591,22 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
         kwoTradeOrderService.updateOrderAmount(tradeOrderSettlePara);
     }
 
+    @Override
+    public List<TradeOrderContractVo> queryByTradeContactIds(Set<Long> tradeContractIds) {
+        List<KwoTradeOrderContract> kwoTradeOrderContracts = kwoTradeOrderContractRepository.queryByContractIds(tradeContractIds);
+        if (CollectionUtils.isEmpty(kwoTradeOrderContracts)) {
+            return List.of();
+        }
+        return kwoTradeOrderContracts.stream().map(item -> {
+            TradeOrderContractVo tradeOrderContractVo = new TradeOrderContractVo();
+            tradeOrderContractVo.setContractId(item.getContractId());
+            tradeOrderContractVo.setContractNo(item.getContractNo());
+            tradeOrderContractVo.setTOrderId(item.getTOrderId());
+            tradeOrderContractVo.setTOrderNo(item.getTOrderNo());
+            return tradeOrderContractVo;
+        }).collect(Collectors.toList());
+    }
+
     @Override
     public List<OrderSaleVo> queryRecentSale(LocalDateTime start, LocalDateTime end) {
         return kwoTradeOrderService.queryRecentSale(start, end);

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

@@ -30,4 +30,10 @@ public class KwoTradeOrderContractRepository extends ServiceImpl<KwoTradeOrderCo
                 .eq(KwoTradeOrderContract::getTOrderId, traceOrderId)
                 .last("limit 1"));
     }
+
+    public List<KwoTradeOrderContract> queryByContractIds(Set<Long> tradeContractIds) {
+       return list(Wrappers.<KwoTradeOrderContract>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwoTradeOrderContract::getContractId, tradeContractIds));
+    }
 }

+ 1 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -1428,7 +1428,7 @@ public class KwpGoodsService {
     private static GoodsInfoResp.GoodsInfo getGoodsInfo(KwpGoods x) {
         GoodsInfoResp.GoodsInfo goodsInfo = new GoodsInfoResp.GoodsInfo();
         goodsInfo.setGoodsId(x.getId());
-        goodsInfo.setGoodsName(x.getName());
+        goodsInfo.setGoodsName(x.getName()+"/"+x.getGoodsType()+"/"+x.getSpec());
         goodsInfo.setAmountUnit(x.getUnit());
         goodsInfo.setPriceUnit(x.getPriceUnit());
         return goodsInfo;

+ 13 - 14
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java

@@ -15,7 +15,6 @@ import com.sckw.core.web.response.result.PageDataResult;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.*;
-import com.sckw.system.api.model.pojo.DeptInfoPojo;
 import com.sckw.system.dao.KwsRoleDao;
 import com.sckw.system.dao.SysDictDao;
 import com.sckw.system.model.*;
@@ -575,27 +574,27 @@ public class RemoteSystemServiceImpl implements RemoteSystemService {
             BeanUtils.copyProperties(kwsUser, userCacheResDto);
             userCacheResDto.setRoleInfo(remoteBaseService.queryRoleInfoByUserId(userId));
 
-            List<KwsUserDeptResDto> kwsUserDeptResDtos = remoteBaseService.queryUserDeptByUserId(userId);
-            if (CollectionUtils.isEmpty(kwsUserDeptResDtos)) {
-                return userCacheResDto;
-            }
+//            List<KwsUserDeptResDto> kwsUserDeptResDtos = remoteBaseService.queryUserDeptByUserId(userId);
+//            if (CollectionUtils.isEmpty(kwsUserDeptResDtos)) {
+//                return userCacheResDto;
+//            }
 
-            List<Long> deptIds = kwsUserDeptResDtos.stream().map(KwsUserDeptResDto::getDeptId).toList();
-            List<KwsDeptResDto> kwsDeptResDtos = remoteBaseService.queryDeptByIds(deptIds);
-            if (CollectionUtils.isEmpty(kwsDeptResDtos)) {
-                return userCacheResDto;
-            }
+//            List<Long> deptIds = kwsUserDeptResDtos.stream().map(KwsUserDeptResDto::getDeptId).toList();
+//            List<KwsDeptResDto> kwsDeptResDtos = remoteBaseService.queryDeptByIds(deptIds);
+//            if (CollectionUtils.isEmpty(kwsDeptResDtos)) {
+//                return userCacheResDto;
+//            }
 
-            Long entId = kwsDeptResDtos.get(0).getEntId();
-            KwsEnterpriseResDto kwsEnterpriseResDto = remoteBaseService.queryEnterpriseById(entId);
+           // Long entId = kwsDeptResDtos.get(0).getEntId();
+            KwsEnterpriseResDto kwsEnterpriseResDto = remoteBaseService.queryEnterpriseById(kwsUser.getEntId());
             if (Objects.isNull(kwsEnterpriseResDto)) {
                 return userCacheResDto;
             }
 
             EntCacheResDto entCacheResDto = new EntCacheResDto();
             BeanUtils.copyProperties(kwsEnterpriseResDto, entCacheResDto);
-            entCacheResDto.setDeptInfo(BeanUtils.copyToList(kwsDeptResDtos, DeptInfoPojo.class));
-            entCacheResDto.setCertificateInfo(remoteBaseService.queryCertificateByEntId(entId));
+            //entCacheResDto.setDeptInfo(BeanUtils.copyToList(kwsDeptResDtos, DeptInfoPojo.class));
+            entCacheResDto.setCertificateInfo(remoteBaseService.queryCertificateByEntId(kwsUser.getId()));
             userCacheResDto.setEntInfo(entCacheResDto);
             RedissonUtils.putString(key, JSON.toJSONString(userCacheResDto), Global.COMMON_EXPIRE);
             return userCacheResDto;

+ 38 - 13
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
@@ -135,6 +136,7 @@ public class TransportServiceImpl implements TransportRemoteService {
     private final KwtLogisticsOrderCirculateRepository logisticsOrderCirculateRepository;
     private final KwtAcceptCarriageOrderService kwtAcceptCarriageOrderService;
     private final KwtLogisticsConsignmentService logisticsConsignmentService;
+    private final KwtLogisticsOrderGoodsRepository logisticsOrderGoodsRepository;
 
     // 定义禁止关联车辆删除的状态集合
     private static final List<Integer> FORBIDDEN_STATUSES = Arrays.asList(
@@ -881,22 +883,44 @@ public class TransportServiceImpl implements TransportRemoteService {
         if (org.apache.commons.collections4.CollectionUtils.isEmpty(subtasks)){
             return Collections.emptyList();
         }
+        //查询物流订单和的商品关系
+        List<KwtLogisticsOrderGoods> logOrderGoods = logisticsOrderGoodsRepository.queryByLogIds(logIds);
+        Map<Long, KwtLogisticsOrderGoods> logisticsOrderGoodsMap = Maps.newHashMap();
+        if (CollectionUtils.isNotEmpty(logOrderGoods)){
+            logisticsOrderGoodsMap = logOrderGoods.stream()
+                    .collect(Collectors.toMap(KwtLogisticsOrderGoods::getLOrderId, Function.identity(), (x, y) -> x));
+        }
         //物理订单id映射运单
         Map<Long, List<KwtWaybillOrderSubtask>> logIdAndSubtasksMap =
                 subtasks.stream().collect(Collectors.groupingBy(KwtWaybillOrderSubtask::getLOrderId));
-      return logisticsOrders.stream().map(l-> {
+        Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogisticsOrdersMap = logisticsOrders.stream().collect(Collectors.groupingBy(KwtLogisticsOrder::getTOrderId));
+
+        List<RWaybillSubOrderVo> result = Lists.newArrayList();
+        Map<Long, KwtLogisticsOrderGoods> finalLogisticsOrderGoodsMap = logisticsOrderGoodsMap;
+        tradeIdAndLogisticsOrdersMap.forEach((tradeId, logisticsOrderList) -> {
             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());
+            rWaybillOrderVo.setTradeId(tradeId);
+            List<RWaybillSubOrderVo.BillSubOrder> subOrdersList = Lists.newArrayList();
+            List<RWaybillSubOrderVo.LogisticGoodsInfo> goodsInfos = Lists.newArrayList();
+            logisticsOrderList.forEach(l -> {
+                KwtLogisticsOrderGoods goods = finalLogisticsOrderGoodsMap.getOrDefault(l.getId(),new KwtLogisticsOrderGoods());
+                RWaybillSubOrderVo.LogisticGoodsInfo logisticGoodsInfo = new RWaybillSubOrderVo.LogisticGoodsInfo();
+                logisticGoodsInfo.setLOrderId(l.getId());
+                logisticGoodsInfo.setGoodsId(goods.getGoodsId());
+                goodsInfos.add(logisticGoodsInfo);
+                List<KwtWaybillOrderSubtask> waybillOrderSubtasks = logIdAndSubtasksMap.get(l.getId());
+                if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(waybillOrderSubtasks)) {
+                    List<RWaybillSubOrderVo.BillSubOrder> collect = waybillOrderSubtasks.stream()
+                            .map(x -> getRWaybillSubOrderVo(x, goods.getGoodsId()))
+                            .collect(Collectors.toList());
+                    subOrdersList.addAll(collect);
+                }
+            });
+            rWaybillOrderVo.setSubOrders(subOrdersList);
+            result.add(rWaybillOrderVo);
+        });
+        return result;
+
 
     }
 
@@ -1034,7 +1058,7 @@ public class TransportServiceImpl implements TransportRemoteService {
     }
 
     @NotNull
-    private static RWaybillSubOrderVo.BillSubOrder getRWaybillSubOrderVo(KwtWaybillOrderSubtask subtask) {
+    private static RWaybillSubOrderVo.BillSubOrder getRWaybillSubOrderVo(KwtWaybillOrderSubtask subtask,Long goodsId) {
         RWaybillSubOrderVo.BillSubOrder billSubOrder = new RWaybillSubOrderVo.BillSubOrder();
         billSubOrder.setEntId(subtask.getEntId());
         billSubOrder.setLOrderId(subtask.getLOrderId());
@@ -1048,6 +1072,7 @@ public class TransportServiceImpl implements TransportRemoteService {
         billSubOrder.setLoadTime(subtask.getLoadTime());
         billSubOrder.setDeficitAmount(subtask.getDeficitAmount());
         billSubOrder.setDeficitPrice(subtask.getDeficitPrice());
+        billSubOrder.setGoodId(goodsId);
         return billSubOrder;
     }
 

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

@@ -45,4 +45,11 @@ public class KwtLogisticsOrderGoodsRepository extends ServiceImpl<KwtLogisticsOr
                 .in(KwtLogisticsOrderGoods::getGoodsId,goodsIds)
         );
     }
+
+    public List<KwtLogisticsOrderGoods> queryByLogIds(List<Long> logIds) {
+        return list(Wrappers.<KwtLogisticsOrderGoods>lambdaQuery()
+                .eq(KwtLogisticsOrderGoods::getDelFlag,0)
+                .in(KwtLogisticsOrderGoods::getLOrderId,logIds)
+        );
+    }
 }