提交修改

This commit is contained in:
quyixiao 2025-10-16 13:11:04 +08:00
parent 6a9814c83e
commit eb1a060f56
3 changed files with 76 additions and 13 deletions

View File

@ -127,7 +127,7 @@ public interface VvTradeOrderLineDao extends BaseMapper<VvTradeOrderLineEntity>
List<VvTradeOrderLineEntity> selectByAppCondition(IPage page,
@IF @IN List<Long> 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<VvTradeOrderLineEntity>
List<VvTradeOrderLineEntity> selectVvTradeOrderLineByTrackNumber(String trackNumber);
List<VvTradeOrderLineEntity> selectVvTradeOrderByTradeOrderIds(@IN List<Long> tradeOrderId);
}

View File

@ -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<VvTradeOrderLineEntity> vvTradeOrderLineEntities =new ArrayList<>();
/***
* 物流单号
*/
private String trackNumber;
}

View File

@ -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<VvTradeOrderLineEntity> vvTradeOrderLineEntities = pageUtils.getRows();
// 获取订单
List<Long> tradeOrderIds = SanUtils.list2listFilterNull(vvTradeOrderLineEntities, VvTradeOrderLineEntity::getTradeOrderId);
// 获取子单
List<VvTradeOrderLineEntity> vvTradeOrderLineEntitiesGroupByTradeOrderId = pageUtils.getRows();
// 获取订单
List<Long> tradeOrderIds = SanUtils.list2listFilterNull(vvTradeOrderLineEntitiesGroupByTradeOrderId, VvTradeOrderLineEntity::getTradeOrderId);
// 拿到订单的顺序
List<VvTradeOrderEntity> tradeOrderEntities = vvTradeOrderDao.selectVvTradeOrderByTradeOrderIds(tradeOrderIds);
// 拿到所有的子订单
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderByTradeOrderIds(tradeOrderIds);
Map<Long, List<VvTradeOrderLineEntity>> listGroupByTradeOrderId = SanUtils.list2GroupBy(vvTradeOrderLineEntities, VvTradeOrderLineEntity::getTradeOrderId);
// 对订单进行排序必须按照子单的顺序
Map<Long, VvTradeOrderEntity> vvTradeOrderEntityMap = SanUtils.list2Map(tradeOrderEntities, VvTradeOrderEntity::getId);
// 拿到所有的trackNumbers
List<String> trackNumbers = SanUtils.list2listFilterNull(vvTradeOrderLineEntities, VvTradeOrderLineEntity::getTrackNumber);
List<VvPackageEntity> packageEntities = vvPackageDao.selectVvPackageByTrackNumbers(trackNumbers);
@ -104,20 +112,52 @@ public class AppOrderController {
List<AppTradeOrderLineResp> vvOrderListResps = new ArrayList<>();
// 如果有tracknumber ,则以 trader_order_id_sku_id 分组 如果有trackNumber 则以 trader_order_id_track_number_sku_id 分组
Map<Long, Map<String, VvTradeOrderLineTrackNumberDTO>> groupBytrader_order_id_sku_id = new HashMap<>();
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) {
AppTradeOrderLineResp appTradeOrderLineResp = new AppTradeOrderLineResp();
BeanUtils.copyProperties(vvTradeOrderLineEntity, appTradeOrderLineResp);
Long tradeOrderId = vvTradeOrderLineEntity.getTradeOrderId();
Map<String, VvTradeOrderLineTrackNumberDTO> 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<String, VvTradeOrderLineTrackNumberDTO> stringVvTradeOrderLineTrackNumberDTOMap = groupBytrader_order_id_sku_id.get(tradeOrderId);
for (Map.Entry<String, VvTradeOrderLineTrackNumberDTO> 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);
}