From eb1a060f566e9d4b8cd624c703ccec7c092f3cd9 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Thu, 16 Oct 2025 13:11:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/data/dao/vv/VvTradeOrderLineDao.java | 5 +- .../order/VvTradeOrderLineTrackNumberDTO.java | 20 ++++++ .../api/controller/vv/AppOrderController.java | 64 +++++++++++++++---- 3 files changed, 76 insertions(+), 13 deletions(-) create mode 100644 api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvTradeOrderLineTrackNumberDTO.java diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvTradeOrderLineDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvTradeOrderLineDao.java index 14280eb..23b8f89 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvTradeOrderLineDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvTradeOrderLineDao.java @@ -127,7 +127,7 @@ public interface VvTradeOrderLineDao extends BaseMapper List selectByAppCondition(IPage page, @IF @IN List tradeOrderIds, @IF String status, - @IF@NE String deleteStatus, + @IF@NE @Column(VvTradeOrderLineEntity.status_) String deleteStatus, @IF @GE @Column(VvTradeOrderLineEntity.create_timestamp) Long minCreateTimestamp, @IF @LE @Column(VvTradeOrderLineEntity.create_timestamp) Long maxCreateTimestamp, @IF @LIKE String productName, @@ -143,4 +143,7 @@ public interface VvTradeOrderLineDao extends BaseMapper List selectVvTradeOrderLineByTrackNumber(String trackNumber); + + + List selectVvTradeOrderByTradeOrderIds(@IN List tradeOrderId); } \ No newline at end of file diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvTradeOrderLineTrackNumberDTO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvTradeOrderLineTrackNumberDTO.java new file mode 100644 index 0000000..4131941 --- /dev/null +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvTradeOrderLineTrackNumberDTO.java @@ -0,0 +1,20 @@ +package com.heyu.api.alibaba.request.mm.order; + +import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class VvTradeOrderLineTrackNumberDTO { + + + private List vvTradeOrderLineEntities =new ArrayList<>(); + + /*** + * 物流单号 + */ + private String trackNumber; + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java index e1345f1..39f9ab6 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.heyu.api.alibaba.request.mm.enums.OrderStatusEnums; import com.heyu.api.alibaba.request.mm.order.AppDeliveredDTO; +import com.heyu.api.alibaba.request.mm.order.VvTradeOrderLineTrackNumberDTO; import com.heyu.api.alibaba.request.mm.order.resp.*; import com.heyu.api.alibaba.request.vv.AppOrderRequest; import com.heyu.api.data.dao.vv.*; @@ -12,6 +13,7 @@ import com.heyu.api.data.entity.vv.*; import com.heyu.api.data.utils.BigDecimalUtil; import com.heyu.api.data.utils.R; import com.heyu.api.data.utils.SanUtils; +import com.heyu.api.data.utils.StringUtils; import com.heyu.api.utils.ISelect; import com.heyu.api.utils.PPageUtils; import lombok.extern.slf4j.Slf4j; @@ -85,17 +87,23 @@ public class AppOrderController { ); } }); - // 获取子单 - List vvTradeOrderLineEntities = pageUtils.getRows(); - // 获取订单 - List tradeOrderIds = SanUtils.list2listFilterNull(vvTradeOrderLineEntities, VvTradeOrderLineEntity::getTradeOrderId); + // 获取子单 + List vvTradeOrderLineEntitiesGroupByTradeOrderId = pageUtils.getRows(); + // 获取订单 + List tradeOrderIds = SanUtils.list2listFilterNull(vvTradeOrderLineEntitiesGroupByTradeOrderId, VvTradeOrderLineEntity::getTradeOrderId); + // 拿到订单的顺序 List tradeOrderEntities = vvTradeOrderDao.selectVvTradeOrderByTradeOrderIds(tradeOrderIds); + // 拿到所有的子订单 + List vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderByTradeOrderIds(tradeOrderIds); + + Map> listGroupByTradeOrderId = SanUtils.list2GroupBy(vvTradeOrderLineEntities, VvTradeOrderLineEntity::getTradeOrderId); + // 对订单进行排序,必须按照子单的顺序 Map vvTradeOrderEntityMap = SanUtils.list2Map(tradeOrderEntities, VvTradeOrderEntity::getId); - + // 拿到所有的trackNumbers List trackNumbers = SanUtils.list2listFilterNull(vvTradeOrderLineEntities, VvTradeOrderLineEntity::getTrackNumber); List packageEntities = vvPackageDao.selectVvPackageByTrackNumbers(trackNumbers); @@ -104,20 +112,52 @@ public class AppOrderController { List vvOrderListResps = new ArrayList<>(); + // 如果有tracknumber ,则以 trader_order_id_sku_id 分组, 如果有trackNumber ,则以 trader_order_id_track_number_sku_id 分组 + Map> groupBytrader_order_id_sku_id = new HashMap<>(); for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) { - AppTradeOrderLineResp appTradeOrderLineResp = new AppTradeOrderLineResp(); - BeanUtils.copyProperties(vvTradeOrderLineEntity, appTradeOrderLineResp); + Long tradeOrderId = vvTradeOrderLineEntity.getTradeOrderId(); + Map keyMap = groupBytrader_order_id_sku_id.get(tradeOrderId); + if (keyMap == null) { + keyMap = new HashMap<>(); + } + String key = vvTradeOrderLineEntity.getSkuId() + ""; - VvPackageEntity packageDTO = vvPackageEntityMap.get(vvTradeOrderLineEntity.getTrackNumber()); + if (StringUtils.isNotEmpty(vvTradeOrderLineEntity.getTrackNumber())) { + key = vvTradeOrderLineEntity.getTrackNumber() +"_"+ vvTradeOrderLineEntity.getSkuId() + ""; + } - VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderEntityMap.get(vvTradeOrderLineEntity.getTradeOrderId()); + VvTradeOrderLineTrackNumberDTO vvTradeOrderLineTrackNumberDTO = keyMap.get(key); + if (vvTradeOrderLineTrackNumberDTO == null) { + vvTradeOrderLineTrackNumberDTO = new VvTradeOrderLineTrackNumberDTO(); + } + vvTradeOrderLineTrackNumberDTO.getVvTradeOrderLineEntities().add(vvTradeOrderLineEntity); + vvTradeOrderLineTrackNumberDTO.setTrackNumber(vvTradeOrderLineEntity.getTrackNumber()); - appTradeOrderLineResp.setVvPackageEntity(packageDTO); - appTradeOrderLineResp.setTradeOrderEntity(vvTradeOrderEntity); + keyMap.put(key, vvTradeOrderLineTrackNumberDTO); + groupBytrader_order_id_sku_id.put(tradeOrderId, keyMap); + } - vvOrderListResps.add(appTradeOrderLineResp); + for (Long tradeOrderId : tradeOrderIds) { + VvTradeOrderLineEntity vvTradeOrderLineEntity = listGroupByTradeOrderId.get(tradeOrderId).get(0); + Map stringVvTradeOrderLineTrackNumberDTOMap = groupBytrader_order_id_sku_id.get(tradeOrderId); + for (Map.Entry mapEntry : stringVvTradeOrderLineTrackNumberDTOMap.entrySet()) { + VvTradeOrderLineTrackNumberDTO vvTradeOrderLineTrackNumberDTO = mapEntry.getValue(); + AppTradeOrderLineResp appTradeOrderLineResp = new AppTradeOrderLineResp(); + BeanUtils.copyProperties(vvTradeOrderLineEntity, appTradeOrderLineResp); + // 如果有tracknumber ,则以 trader_order_id_sku_id 分组, 如果有trackNumber ,则以 trader_order_id_track_number_sku_id 分组 + if (StringUtils.isNotEmpty(vvTradeOrderLineTrackNumberDTO.getTrackNumber())) { + VvPackageEntity packageDTO = vvPackageEntityMap.get(vvTradeOrderLineTrackNumberDTO.getTrackNumber()); + appTradeOrderLineResp.setVvPackageEntity(packageDTO); + } + appTradeOrderLineResp.setNum(vvTradeOrderLineTrackNumberDTO.getVvTradeOrderLineEntities().size()); + VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderEntityMap.get(vvTradeOrderLineEntity.getTradeOrderId()); + appTradeOrderLineResp.setTrackNumber(vvTradeOrderLineTrackNumberDTO.getTrackNumber()); + appTradeOrderLineResp.setTradeOrderEntity(vvTradeOrderEntity); + + vvOrderListResps.add(appTradeOrderLineResp); + } } return R.ok().setData(vvOrderListResps); }