提交修改

This commit is contained in:
quyixiao 2025-11-15 23:46:55 +08:00
parent 5e92f27913
commit 195cc38459
21 changed files with 372 additions and 178 deletions

View File

@ -1,13 +1,12 @@
package com.heyu.api.data.utils;
import com.alibaba.fastjson.JSON;
import com.heyu.api.common.LBiFunction0;
import com.heyu.api.common.test.AriseUser;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ClassUtils;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import java.lang.invoke.SerializedLambda;
import java.lang.reflect.Method;
@ -55,9 +54,6 @@ public class SanUtils {
}
public static <T, R, V> List<R> setNull(List<V> values, LBiFunction0<T, R>... functions) {
List<R> list = new ArrayList<>();
try {
@ -81,6 +77,23 @@ public class SanUtils {
}
public static <T, V, R> List<R> convert2list(List<V> values, Class clazz) {
List<R> list = new ArrayList<>();
if (CollectionUtils.isEmpty(values)) {
return new ArrayList<>();
}
try {
for (V value : values) {
Object o = clazz.newInstance();
BeanUtils.copyProperties(value, o);
list.add((R) o);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
public static <T, R, V> List<R> list2list(List<V> values, LBiFunction0<T, R> function) {
List<R> list = new ArrayList<>();
try {
@ -100,7 +113,7 @@ public class SanUtils {
}
public static <T, R, V> Map<R, List<V>> groupBy(List<V> values, LBiFunction0<T, R> function) {
if(CollectionUtils.isEmpty(values)){
if (CollectionUtils.isEmpty(values)) {
return new HashMap<>();
}
Map<R, List<V>> listmap = new HashMap<>();
@ -123,7 +136,6 @@ public class SanUtils {
}
public static <T, R, V> R findAnyNotNull(List<V> values, LBiFunction0<T, R> function) {
try {
if (CollectionUtils.isEmpty(values)) {
@ -167,67 +179,147 @@ public class SanUtils {
}
public static <T, V> List<V> merge(List<V> values, LBiFunction0<T, ? extends Number>... functionArray) {
List<V> list = new ArrayList<>();
try {
if (CollectionUtils.isEmpty(values)) {
return list;
}
V v = values.get(0);
for (LBiFunction0<T, ? extends Number> tlBiFunction0 : functionArray) {
Method method = getMethod(tlBiFunction0);
Class<?> returnClazz = method.getReturnType();
public static <T, V, R> List<R> getFieldList(List<V> values, LBiFunction0<T, R> tlBiFunction0) {
List<R> list = new ArrayList<>();
if (CollectionUtils.isEmpty(values)) {
BigDecimal sum = new BigDecimal(0);
for (V value : values) {
Object r = method.invoke(value);
if (r != null) {
sum = NumberUtils.objToBigDecimalDefault(r, BigDecimal.ZERO).add(sum);
}
}
String getMethodName = method.getName();
String setMethodName = "set" + getMethodName.substring(3);
Method methods[] = v.getClass().getDeclaredMethods();
for (Method m : methods) {
if (m.getName().equals(setMethodName)) {
Object obj = parseBasicTypeWrapper(returnClazz, sum);
m.invoke(v,new Object[]{obj});
}
return list;
}
Method method = getMethod(tlBiFunction0);
for (V value : values) {
try {
Object r = method.invoke(value);
if (r != null) {
list.add((R) r);
}
} catch (Exception e) {
e.printStackTrace();
}
list.add(v);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public static <T, V, R> List<V> groupByMerge2List(LBiFunction0<T, R> groupByFunction, List<V> values, LBiFunction0<T, ? extends Object>... functionArray) {
List<V> vList = new ArrayList<>();
Map<R, V> map = groupByMerge2Map(groupByFunction, values, functionArray);
if (map != null) {
for (Map.Entry<R, V> entry : map.entrySet()) {
vList.add(entry.getValue());
}
}
return vList;
}
public static <T, V, R> Map<R, V> groupByMerge2Map(LBiFunction0<T, R> groupByFunction, List<V> values, LBiFunction0<T, ? extends Object>... functionArray) {
Map<R, List<V>> mapData = new HashMap<>();
if (CollectionUtils.isEmpty(values)) {
return new HashMap<>();
}
for (V value : values) {
try {
Method method = getMethod(groupByFunction);
Object object = method.invoke(value);
R r = null;
if (object != null) {
r = (R) object;
}
List<V> list = mapData.get(r);
if (list == null) {
list = new ArrayList<>();
}
list.add(value);
mapData.put(r, list);
} catch (Exception e) {
e.printStackTrace();
}
}
Map<R, V> result = new HashMap<>();
if (!mapData.isEmpty()) {
for (Map.Entry<R, List<V>> map : mapData.entrySet()) {
List<V> list = map.getValue();
if (com.heyu.api.data.utils.CollectionUtils.isNotEmpty(list)) {
V v = merge(list, functionArray);
result.put(map.getKey(), v);
}
}
}
return result;
}
public static void main(String[] args) {
public static <T, V> V merge(List<V> values, LBiFunction0<T, ? extends Object>... functionArray) {
try {
if (CollectionUtils.isEmpty(values)) {
return null;
}
V v = values.get(0);
for (LBiFunction0<T, ? extends Object> tlBiFunction0 : functionArray) {
Method method = getMethod(tlBiFunction0);
Class<?> returnClazz = method.getReturnType();
BigDecimal sum = new BigDecimal(0);
StringBuffer sb = new StringBuffer();
List<Object> list = new ArrayList<>();
if (returnClazz == String.class) {
for (V value : values) {
Object r = method.invoke(value);
sb.append(r).append("_");
}
} else if (isNumberTypes(returnClazz)) {
for (V value : values) {
Object r = method.invoke(value);
if (r != null) {
sum = NumberUtils.objToBigDecimalDefault(r, BigDecimal.ZERO).add(sum);
}
}
}
for (V value : values) {
Object r = method.invoke(value);
list.add(r);
}
String getMethodName = method.getName();
String setMethodName = "set" + getMethodName.substring(3);
String setMethodNameList = "setMerge" + getMethodName.substring(3) + "List";
Method setMehtod = null;
VvTradeOrderLineEntity vvTradeOrderLineEntity1 = new VvTradeOrderLineEntity();
VvTradeOrderLineEntity vvTradeOrderLineEntity2 = new VvTradeOrderLineEntity();
List<Method> methods = new ArrayList<>();
getAllDeclaredMethods(methods,v.getClass());
for (Method m : methods) {
if (m.getName().equals(setMethodNameList)) {
setMehtod = m;
m.invoke(v, new Object[]{list});
}
}
if (setMehtod == null) {
for (Method m : methods) {
if (m.getName().equals(setMethodName)) {
if (returnClazz == String.class) {
m.invoke(v, new Object[]{sb});
} else if (isNumberTypes(returnClazz)) {
Object obj = parseBasicTypeWrapper(returnClazz, sum);
m.invoke(v, new Object[]{obj});
}
}
}
}
}
return v;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
vvTradeOrderLineEntity1.setSalePrice(new BigDecimal(10));
vvTradeOrderLineEntity2.setSalePrice(new BigDecimal(15));
vvTradeOrderLineEntity1.setPromotionPrice(new BigDecimal(3));
vvTradeOrderLineEntity2.setPromotionPrice(new BigDecimal(2));
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = new ArrayList<>();
vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity1);
vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity2);
List<VvTradeOrderLineEntity> vvTradeOrderLine = merge(vvTradeOrderLineEntityList,VvTradeOrderLineEntity::getSalePrice,
VvTradeOrderLineEntity::getPromotionPrice,
VvTradeOrderLineEntity::getRefundCount
);
System.out.println(JSON.toJSONString(vvTradeOrderLine));
public static void getAllDeclaredMethods(List<Method> list ,Class<?> clazz) {
if(clazz==Object.class){
return ;
}
Method methods[] = clazz.getDeclaredMethods();
for (Method m : methods) {
list.add(m);
}
getAllDeclaredMethods(list,clazz.getSuperclass());
}
@ -340,7 +432,7 @@ public class SanUtils {
public static <R> List<R> asList(R r) {
List<R> result = new ArrayList<>();
if(r != null){
if (r != null) {
result.add(r);
}
return result;
@ -404,6 +496,7 @@ public class SanUtils {
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
private static final List<Class<?>> primitiveTypes = new ArrayList<>(32);
private static final List<Class<?>> isNumberTypes = new ArrayList<>(32);
static {
primitiveTypes.add(Boolean.class);
@ -426,12 +519,35 @@ public class SanUtils {
primitiveTypes.add(short.class);
primitiveTypes.add(String.class);
primitiveTypes.add(Date.class);
isNumberTypes.add(Byte.class);
isNumberTypes.add(Double.class);
isNumberTypes.add(Float.class);
isNumberTypes.add(Integer.class);
isNumberTypes.add(Long.class);
isNumberTypes.add(Short.class);
isNumberTypes.add(BigDecimal.class);
isNumberTypes.add(byte.class);
isNumberTypes.add(char.class);
isNumberTypes.add(double.class);
isNumberTypes.add(float.class);
isNumberTypes.add(int.class);
isNumberTypes.add(long.class);
isNumberTypes.add(short.class);
}
public static boolean isBasicDataTypes(Class clazz) {
return primitiveTypes.contains(clazz) ? true : false;
}
public static boolean isNumberTypes(Class clazz) {
return isNumberTypes.contains(clazz) ? true : false;
}
public static <T> T get(Future<T> t) {
@ -564,7 +680,7 @@ public class SanUtils {
return (R) object;
} catch (Exception e) {
log.error("线程池异常",e);
log.error("线程池异常", e);
} finally {
}
@ -574,8 +690,7 @@ public class SanUtils {
}
private static Callable getAsynRun(Runnable runnable) {
private static Callable getAsynRun(Runnable runnable) {
return new Callable() {
@Override
public R call() throws Exception {
@ -585,7 +700,7 @@ public class SanUtils {
runnable.run();
} catch (Exception e) {
log.error("线程池异常",e);
log.error("线程池异常", e);
}
return null;
}
@ -593,8 +708,7 @@ public class SanUtils {
}
public static AsynRunDTO build(Runnable ... target){
public static AsynRunDTO build(Runnable... target) {
Map<String, Future<R>> map = new HashMap<>();
for (int i = 0; i < target.length; i++) {
Runnable v = target[i];
@ -602,28 +716,25 @@ public class SanUtils {
map.put(i + "", countFuture);
}
AsynRunDTO asynRunDTO = new AsynRunDTO();
AsynRunDTO asynRunDTO = new AsynRunDTO();
asynRunDTO.setMap(map);
return asynRunDTO;
}
@Test
public void test(){
public void test() {
build(
()->{
() -> {
System.out.println("1");
},
()->{
() -> {
System.out.println("2");
}
).run();
).run();
}
public static AriseUser getName(AriseUser ariseUser) {
return ariseUser;

View File

@ -0,0 +1,17 @@
package com.heyu.api.alibaba.request.mm.order.resp;
import com.heyu.api.data.entity.vv.VvPackageEntity;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class AdminPackageDTO extends VvPackageEntity {
private List<VvTradeOrderLineDO> vvTradeOrderLineDOList = new ArrayList<>();
private List<OrderActionDTO> orderActionList;
}

View File

@ -0,0 +1,28 @@
package com.heyu.api.alibaba.request.mm.order.resp;
import com.heyu.api.data.entity.vv.VvPackageEntity;
import com.heyu.api.data.entity.vv.VvTradeOrderEntity;
import lombok.Data;
import java.util.List;
@Data
public class AppPackageDTO extends VvPackageEntity {
/***
* 子单信息
*/
private List<VvTradeOrderLineDO> vvTradeOrderLineDOList;
/***
* 操作相关的信息
*/
private List<OrderActionDTO> orderActionList;
/***
* 订单信息
*/
private VvTradeOrderEntity vvTradeOrderEntity;
}

View File

@ -3,25 +3,18 @@ package com.heyu.api.alibaba.request.mm.order.resp;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class AppTradeOrderLineDTO extends VvTradeOrderLineEntity {
/****
* 子订单列表信息
*/
private List<Long> tradeOrderLineIdList;
/***
* 实际支付金额
*/
private BigDecimal realPayAmount;
}

View File

@ -1,13 +0,0 @@
package com.heyu.api.alibaba.request.mm.order.resp;
import com.heyu.api.data.entity.vv.VvPackageEntity;
import lombok.Data;
import java.util.List;
@Data
public class PackageDTO extends VvPackageEntity {
private List<VvTradeOrderLineDO> vvTradeOrderLineDOList;
}

View File

@ -9,17 +9,10 @@ import java.util.List;
@Data
public class VVOrderListResp extends VvTradeOrderEntity {
/***
* 订单行信息
*/
private List<VvTradeOrderLineDO> vvTradeOrderLineDOList;
/***
* 包裹信息
*/
private List<PackageDTO> packageList;
private List<AdminPackageDTO> packageList;
}

View File

@ -3,11 +3,22 @@ package com.heyu.api.alibaba.request.mm.order.resp;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class VvTradeOrderLineDO extends VvTradeOrderLineEntity {
private List<OrderActionDTO> orderActionList;
/***
* 订单id
*/
private List<Long> mergeIdList ;
/***
* 数据合并
*/
private List<BigDecimal> mergeSalePriceList ;
}

View File

@ -3,7 +3,7 @@ package com.heyu.api.service.impl;
import com.heyu.api.alibaba.request.mm.order.resp.OrderActionDTO;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.enums.OrderActionEnums;
import com.heyu.api.service.impl.impl.*;
import com.heyu.api.service.impl.order.*;
import java.util.ArrayList;
import java.util.Arrays;

View File

@ -1,8 +1,8 @@
package com.heyu.api.service.impl;
import com.heyu.api.alibaba.request.mm.order.VvTradeOrderLineTrackNumberDTO;
import com.heyu.api.alibaba.request.mm.order.resp.AdminPackageDTO;
import com.heyu.api.alibaba.request.mm.order.resp.OrderActionDTO;
import com.heyu.api.alibaba.request.mm.order.resp.PackageDTO;
import com.heyu.api.alibaba.request.mm.order.resp.VVOrderListResp;
import com.heyu.api.alibaba.request.mm.order.resp.VvTradeOrderLineDO;
import com.heyu.api.data.dao.vv.VvPackageDao;
@ -32,21 +32,23 @@ public class VvTradeOrderConvertServiceImpl implements VvTradeOrderConvertServic
List<VvPackageEntity> packageEntities = vvPackageDao.selectVvPackageByTrackNumbers(trackNumbers);
Map<String, VvPackageEntity> vvPackageEntityMap = SanUtils.list2Map(packageEntities, VvPackageEntity::getTrackNumber);
Map<Long, Map<String, VvTradeOrderLineTrackNumberDTO>> groupBytraderOrderIdSkuId = groupBytraderOrderIdSkuId(list);
Map<Long,List<VvTradeOrderLineEntity>> groupByTradeOrderIdMap = SanUtils.groupBy(list,VvTradeOrderLineEntity::getTradeOrderId );
List<VVOrderListResp> vvOrderListResps = new ArrayList<>();
for (VvTradeOrderEntity vvTradeOrderEntity : vvTradeOrderEntities) {
VVOrderListResp vvOrderListResp = new VVOrderListResp();
BeanUtils.copyProperties(vvTradeOrderEntity, vvOrderListResp);
Map<String, VvTradeOrderLineTrackNumberDTO> vvTradeOrderLineEntityMap = groupBytraderOrderIdSkuId.get(vvTradeOrderEntity.getId());
List<PackageDTO> packageList = new ArrayList<>();
List<VvTradeOrderLineDO> vvTradeOrderLineDOList = new ArrayList<>();
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = groupByTradeOrderIdMap.get(vvTradeOrderEntity.getId());
Map<String, List<VvTradeOrderLineEntity>> groupByTrackNumberMap = SanUtils.groupBy(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTrackNumber);
for (Map.Entry<String, VvTradeOrderLineTrackNumberDTO> vvTradeOrderLineTrackNumber : vvTradeOrderLineEntityMap.entrySet()) {
VvTradeOrderLineTrackNumberDTO vvTradeOrderLineTrackNumberDTO = vvTradeOrderLineTrackNumber.getValue();
List<VvTradeOrderLineEntity> vvTradeOrderLines = vvTradeOrderLineTrackNumberDTO.getVvTradeOrderLineEntities();
List<VvTradeOrderLineEntity> mergeTradeOrderLineList = SanUtils.merge(
vvTradeOrderLines,
List<AdminPackageDTO> packageList = new ArrayList<>();
for (Map.Entry<String, List<VvTradeOrderLineEntity>> vvTradeOrderLineTrackNumber : groupByTrackNumberMap.entrySet()) {
List<VvTradeOrderLineEntity> vvTradeOrderLineTrackNumberList = vvTradeOrderLineTrackNumber.getValue();
String trackNumber = vvTradeOrderLineTrackNumber.getKey();
List<VvTradeOrderLineDO> vvTradeOrderLineDOList = SanUtils.convert2list(vvTradeOrderLineTrackNumberList,VvTradeOrderLineDO.class);
List<VvTradeOrderLineDO> mergeTradeOrderLine = SanUtils.groupByMerge2List(
VvTradeOrderLineEntity::getSkuId,
vvTradeOrderLineDOList,
VvTradeOrderLineEntity::getPromotionPrice,
VvTradeOrderLineEntity::getSalePrice,
VvTradeOrderLineEntity::getNum,
@ -54,33 +56,22 @@ public class VvTradeOrderConvertServiceImpl implements VvTradeOrderConvertServic
VvTradeOrderLineEntity::getShippingAmount,
VvTradeOrderLineEntity::getRefundAmount,
VvTradeOrderLineEntity::getRefundCount,
VvTradeOrderLineEntity::getProfitAmount
VvTradeOrderLineEntity::getProfitAmount,
VvTradeOrderLineEntity::getId
);
List<VvTradeOrderLineDO> vvTradeOrderLineRespList = new ArrayList<>();
for (VvTradeOrderLineEntity vvTradeOrderLine : mergeTradeOrderLineList) {
VvTradeOrderLineDO vvTradeOrderLineDO = new VvTradeOrderLineDO();
BeanUtils.copyProperties(vvTradeOrderLine, vvTradeOrderLineDO);
AdminPackageDTO adminPackageDTO = new AdminPackageDTO();
VvPackageEntity vvPackage = vvPackageEntityMap.get(trackNumber);
if(vvPackage != null){
BeanUtils.copyProperties(vvPackage,adminPackageDTO);
}
adminPackageDTO.setVvTradeOrderLineDOList(mergeTradeOrderLine);
List<OrderActionDTO> orderActionList = AbstractAction.getOrderActionDTO(mergeTradeOrderLine.get(0), false);
adminPackageDTO.setOrderActionList(orderActionList);
packageList.add(adminPackageDTO);
List<OrderActionDTO> orderActionList = AbstractAction.getOrderActionDTO(vvTradeOrderLine, false);
vvTradeOrderLineDO.setOrderActionList(orderActionList);
vvTradeOrderLineRespList.add(vvTradeOrderLineDO);
}
String trackNumber = vvTradeOrderLineTrackNumberDTO.getTrackNumber();
if (StringUtils.isNotEmpty(trackNumber)) {
VvPackageEntity vvPackage = vvPackageEntityMap.get(trackNumber);
if (vvPackage != null) {
PackageDTO packageDTO = new PackageDTO();
BeanUtils.copyProperties(vvPackage, packageDTO);
packageDTO.setVvTradeOrderLineDOList(vvTradeOrderLineRespList);
packageList.add(packageDTO);
}
} else {
vvTradeOrderLineDOList.addAll(vvTradeOrderLineRespList);
}
}
vvOrderListResp.setPackageList(packageList);
vvOrderListResp.setVvTradeOrderLineDOList(vvTradeOrderLineDOList);
vvOrderListResps.add(vvOrderListResp);
}
return vvOrderListResps;

View File

@ -1,4 +1,4 @@
package com.heyu.api.service.impl.impl;
package com.heyu.api.service.impl.order;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.enums.OrderActionEnums;

View File

@ -1,4 +1,4 @@
package com.heyu.api.service.impl.impl;
package com.heyu.api.service.impl.order;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.enums.OrderActionEnums;

View File

@ -1,4 +1,4 @@
package com.heyu.api.service.impl.impl;
package com.heyu.api.service.impl.order;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.enums.OrderActionEnums;

View File

@ -1,4 +1,4 @@
package com.heyu.api.service.impl.impl;
package com.heyu.api.service.impl.order;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;

View File

@ -1,4 +1,4 @@
package com.heyu.api.service.impl.impl;
package com.heyu.api.service.impl.order;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.enums.OrderActionEnums;

View File

@ -1,4 +1,4 @@
package com.heyu.api.service.impl.impl;
package com.heyu.api.service.impl.order;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.enums.OrderActionEnums;

View File

@ -1,4 +1,4 @@
package com.heyu.api.service.impl.impl;
package com.heyu.api.service.impl.order;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.enums.OrderActionEnums;

View File

@ -1,4 +1,4 @@
package com.heyu.api.service.impl.impl;
package com.heyu.api.service.impl.order;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.enums.OrderActionEnums;

View File

@ -1,4 +1,4 @@
package com.heyu.api.service.impl.impl;
package com.heyu.api.service.impl.order;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;

View File

@ -140,9 +140,7 @@ public class AdminOrderController {
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) {
vvTradeOrderEntities.add(vvTradeOrderEntityMap.get(vvTradeOrderLineEntity.getTradeOrderId()));
}
vvOrderRequest.setTradeOrderIds(tradeOrderIds);
// 重新获取子单
List<VvTradeOrderLineEntity> list = vvTradeOrderLineDao.selectByAdminConditionList(
vvOrderRequest.getTradeOrderIds(),

View File

@ -3,7 +3,6 @@ package com.heyu.api.controller.vv;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.heyu.api.data.enums.OrderStatusEnums;
import com.heyu.api.alibaba.request.mm.order.AppCloseDTO;
import com.heyu.api.alibaba.request.mm.order.AppDeliveredDTO;
import com.heyu.api.alibaba.request.mm.order.VvTradeOrderLineTrackNumberDTO;
@ -14,6 +13,7 @@ import com.heyu.api.data.dao.vv.*;
import com.heyu.api.data.dto.WeiXinPayDelayDTO;
import com.heyu.api.data.entity.vv.*;
import com.heyu.api.data.enums.DelayTypeEnums;
import com.heyu.api.data.enums.OrderStatusEnums;
import com.heyu.api.data.enums.PayTypeEnums;
import com.heyu.api.data.enums.RoleEnums;
import com.heyu.api.data.utils.*;
@ -26,7 +26,6 @@ import com.heyu.api.utils.PPageUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.MessageDeliveryMode;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestBody;
@ -129,22 +128,19 @@ public class AppOrderController {
}
});
// 获取子单
List<VvTradeOrderLineEntity> vvTradeOrderLineEntitiesGroupByTradeOrderId = pageUtils.getRows();
// 获取订单
List<Long> tradeOrderIds = SanUtils.list2listFilterNull(vvTradeOrderLineEntitiesGroupByTradeOrderId, VvTradeOrderLineEntity::getTradeOrderId);
// 拿到订单的顺序
List<VvTradeOrderEntity> tradeOrderEntities = vvTradeOrderDao.selectVvTradeOrderByTradeOrderIds(tradeOrderIds);
// 拿到所有的子订单
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectAppTradeOrderByTradeOrderIds(tradeOrderIds);
// 对订单进行排序必须按照子单的顺序
Map<Long, VvTradeOrderEntity> vvTradeOrderEntityMap = SanUtils.list2Map(tradeOrderEntities, VvTradeOrderEntity::getId);
// 拿到所有的trackNumbers
List<String> trackNumbers = SanUtils.list2listFilterNull(vvTradeOrderLineEntities, VvTradeOrderLineEntity::getTrackNumber);
List<VvPackageEntity> packageEntities = vvPackageDao.selectVvPackageByTrackNumbers(trackNumbers);
Map<String, VvPackageEntity> vvPackageEntityMap = SanUtils.list2Map(packageEntities, VvPackageEntity::getTrackNumber);
@ -155,42 +151,44 @@ public class AppOrderController {
for (Long tradeOrderId : tradeOrderIds) {
Map<String, VvTradeOrderLineTrackNumberDTO> stringVvTradeOrderLineTrackNumberDTOMap = groupBytraderOrderIdSkuId.get(tradeOrderId);
VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderEntityMap.get(tradeOrderId);
AppTradeOrderPackageDTO appTradeOrderPackageDTO = new AppTradeOrderPackageDTO();
VvPackageEntity packageDTO = null;
List<AppTradeOrderLineDTO> appTradeOrderLineDTOList = new ArrayList<>();
for (Map.Entry<String, VvTradeOrderLineTrackNumberDTO> mapEntry : stringVvTradeOrderLineTrackNumberDTOMap.entrySet()) {
AppTradeOrderPackageDTO appTradeOrderPackageDTO = new AppTradeOrderPackageDTO();
VvTradeOrderLineTrackNumberDTO vvTradeOrderLineTrackNumberDTO = mapEntry.getValue();
VvTradeOrderLineEntity vvTradeOrderLineEntity = vvTradeOrderLineTrackNumberDTO.getVvTradeOrderLineEntities().get(0);
AppTradeOrderLineDTO appTradeOrderLineResp = new AppTradeOrderLineDTO();
BeanUtils.copyProperties(vvTradeOrderLineEntity, appTradeOrderLineResp);
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineTrackNumberDTO.getVvTradeOrderLineEntities();
// 设置促销价格和销售价格
BigDecimal promotionPrice = BigDecimal.ZERO;
BigDecimal salePrice = BigDecimal.ZERO;
List<Long> tradeOrderLineIdList = new ArrayList<>();
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
//当时促销价
promotionPrice = BigDecimalUtil.add(promotionPrice, tradeOrderLineEntity.getPromotionPrice());
salePrice = BigDecimalUtil.add(salePrice, tradeOrderLineEntity.getSalePrice());
tradeOrderLineIdList.add(tradeOrderLineEntity.getId());
}
List<Long> tradeOrderLineIdList = SanUtils.getFieldList(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId);
VvPackageEntity packageDTO = null;
VvTradeOrderLineEntity vvTradeOrderLine = SanUtils.merge(vvTradeOrderLineEntityList,
VvTradeOrderLineEntity::getSalePrice,
VvTradeOrderLineEntity::getPromotionPrice,
VvTradeOrderLineEntity::getNum
);
List<AppTradeOrderLineDTO> appTradeOrderLineDTOList = new ArrayList<>();
// for (VvTradeOrderLineEntity vvTradeOrderLine : vvTradeOrderLineEntityList) {
// AppTradeOrderLineDTO appTradeOrderLineResp = new AppTradeOrderLineDTO();
// BeanUtils.copyProperties(vvTradeOrderLine, appTradeOrderLineResp);
// appTradeOrderLineResp.setTradeOrderLineIdList(tradeOrderLineIdList);
// appTradeOrderLineDTOList.add(appTradeOrderLineResp);
// }
vvTradeOrderLineEntity.setPromotionPrice(promotionPrice);
vvTradeOrderLineEntity.setSalePrice(salePrice);
// 如果有tracknumber ,则以 trader_order_id_sku_id 分组 如果有trackNumber 则以 trader_order_id_track_number_sku_id 分组
if (StringUtils.isNotEmpty(vvTradeOrderLineTrackNumberDTO.getTrackNumber())) {
packageDTO = vvPackageEntityMap.get(vvTradeOrderLineTrackNumberDTO.getTrackNumber());
}
appTradeOrderLineResp.setNum(vvTradeOrderLineTrackNumberDTO.getVvTradeOrderLineEntities().size());
appTradeOrderLineResp.setTradeOrderLineIdList(tradeOrderLineIdList);
appTradeOrderLineDTOList.add(appTradeOrderLineResp);
appTradeOrderPackageDTO.setAppTradeOrderLineDTOList(appTradeOrderLineDTOList);
appTradeOrderPackageDTO.setVvPackageEntity(packageDTO);
appTradeOrderPackageDTO.setTradeOrderEntity(vvTradeOrderEntity);
appTradeOrderPackageDTOList.add(appTradeOrderPackageDTO);
}
appTradeOrderPackageDTO.setAppTradeOrderLineDTOList(appTradeOrderLineDTOList);
appTradeOrderPackageDTO.setVvPackageEntity(packageDTO);
appTradeOrderPackageDTO.setTradeOrderEntity(vvTradeOrderEntity);
appTradeOrderPackageDTOList.add(appTradeOrderPackageDTO);
}
return R.ok().setData(appTradeOrderPackageDTOList);
}

View File

@ -1,6 +1,16 @@
package com.api.test;
import com.alibaba.fastjson.JSON;
import com.heyu.api.alibaba.request.mm.order.resp.VvTradeOrderLineDO;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.utils.MD5Utils;
import com.heyu.api.data.utils.SanUtils;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class Test4 {
public static void main(String[] args) {
@ -13,4 +23,61 @@ public class Test4 {
System.out.println(code2);
}
}
@Test
public void test1() {
VvTradeOrderLineEntity vvTradeOrderLineEntity1 = new VvTradeOrderLineEntity();
VvTradeOrderLineEntity vvTradeOrderLineEntity2 = new VvTradeOrderLineEntity();
VvTradeOrderLineEntity vvTradeOrderLineEntity3 = new VvTradeOrderLineEntity();
vvTradeOrderLineEntity1.setId(1L);
vvTradeOrderLineEntity2.setId(2L);
vvTradeOrderLineEntity3.setId(3L);
vvTradeOrderLineEntity1.setSkuId(1L);
vvTradeOrderLineEntity2.setSkuId(2L);
vvTradeOrderLineEntity3.setSkuId(2L);
vvTradeOrderLineEntity1.setSalePrice(new BigDecimal(10));
vvTradeOrderLineEntity2.setSalePrice(new BigDecimal(15));
vvTradeOrderLineEntity3.setSalePrice(new BigDecimal(18));
vvTradeOrderLineEntity1.setPromotionPrice(new BigDecimal(3));
vvTradeOrderLineEntity2.setPromotionPrice(new BigDecimal(2));
vvTradeOrderLineEntity3.setPromotionPrice(new BigDecimal(19));
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = new ArrayList<>();
vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity1);
vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity2);
vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity3);
// VvTradeOrderLineEntity vvTradeOrderLine = merge(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getSalePrice,
// VvTradeOrderLineEntity::getPromotionPrice,
// VvTradeOrderLineEntity::getRefundCount
// );
//System.out.println(JSON.toJSONString(vvTradeOrderLine));
List<VvTradeOrderLineDO> vvTradeOrderLineDOList = SanUtils.convert2list(vvTradeOrderLineEntityList, VvTradeOrderLineDO.class);
Map<Long, VvTradeOrderLineDO> vvTradeOrderLineMap = SanUtils.groupByMerge2Map(VvTradeOrderLineEntity::getSkuId,
vvTradeOrderLineDOList,
VvTradeOrderLineEntity::getSalePrice,
VvTradeOrderLineEntity::getPromotionPrice,
VvTradeOrderLineEntity::getRefundCount,
VvTradeOrderLineEntity::getId
);
System.out.println(JSON.toJSONString(vvTradeOrderLineMap));
}
}