提交修改
This commit is contained in:
parent
6a9814c83e
commit
eb1a060f56
@ -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);
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user