提交修改

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; package com.heyu.api.data.utils;
import com.alibaba.fastjson.JSON;
import com.heyu.api.common.LBiFunction0; import com.heyu.api.common.LBiFunction0;
import com.heyu.api.common.test.AriseUser; import com.heyu.api.common.test.AriseUser;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ClassUtils; import org.apache.commons.lang3.ClassUtils;
import org.junit.Test; import org.junit.Test;
import org.springframework.beans.BeanUtils;
import java.lang.invoke.SerializedLambda; import java.lang.invoke.SerializedLambda;
import java.lang.reflect.Method; 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) { public static <T, R, V> List<R> setNull(List<V> values, LBiFunction0<T, R>... functions) {
List<R> list = new ArrayList<>(); List<R> list = new ArrayList<>();
try { 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) { public static <T, R, V> List<R> list2list(List<V> values, LBiFunction0<T, R> function) {
List<R> list = new ArrayList<>(); List<R> list = new ArrayList<>();
try { 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) { 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<>(); return new HashMap<>();
} }
Map<R, List<V>> listmap = 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) { public static <T, R, V> R findAnyNotNull(List<V> values, LBiFunction0<T, R> function) {
try { try {
if (CollectionUtils.isEmpty(values)) { 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) { public static <T, V, R> List<R> getFieldList(List<V> values, LBiFunction0<T, R> tlBiFunction0) {
List<V> list = new ArrayList<>(); List<R> list = new ArrayList<>();
try { if (CollectionUtils.isEmpty(values)) {
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();
BigDecimal sum = new BigDecimal(0); return list;
for (V value : values) { }
Object r = method.invoke(value); Method method = getMethod(tlBiFunction0);
if (r != null) {
sum = NumberUtils.objToBigDecimalDefault(r, BigDecimal.ZERO).add(sum); for (V value : values) {
} try {
} Object r = method.invoke(value);
String getMethodName = method.getName(); if (r != null) {
String setMethodName = "set" + getMethodName.substring(3); list.add((R) r);
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});
}
} }
} catch (Exception e) {
e.printStackTrace();
} }
list.add(v);
} catch (Exception e) {
e.printStackTrace();
} }
return list; 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(); List<Method> methods = new ArrayList<>();
VvTradeOrderLineEntity vvTradeOrderLineEntity2 = new VvTradeOrderLineEntity(); 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)); public static void getAllDeclaredMethods(List<Method> list ,Class<?> clazz) {
vvTradeOrderLineEntity2.setSalePrice(new BigDecimal(15)); if(clazz==Object.class){
return ;
}
Method methods[] = clazz.getDeclaredMethods();
vvTradeOrderLineEntity1.setPromotionPrice(new BigDecimal(3)); for (Method m : methods) {
vvTradeOrderLineEntity2.setPromotionPrice(new BigDecimal(2)); list.add(m);
}
getAllDeclaredMethods(list,clazz.getSuperclass());
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));
} }
@ -340,7 +432,7 @@ public class SanUtils {
public static <R> List<R> asList(R r) { public static <R> List<R> asList(R r) {
List<R> result = new ArrayList<>(); List<R> result = new ArrayList<>();
if(r != null){ if (r != null) {
result.add(r); result.add(r);
} }
return result; return result;
@ -404,6 +496,7 @@ public class SanUtils {
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; 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<?>> primitiveTypes = new ArrayList<>(32);
private static final List<Class<?>> isNumberTypes = new ArrayList<>(32);
static { static {
primitiveTypes.add(Boolean.class); primitiveTypes.add(Boolean.class);
@ -426,12 +519,35 @@ public class SanUtils {
primitiveTypes.add(short.class); primitiveTypes.add(short.class);
primitiveTypes.add(String.class); primitiveTypes.add(String.class);
primitiveTypes.add(Date.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) { public static boolean isBasicDataTypes(Class clazz) {
return primitiveTypes.contains(clazz) ? true : false; 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) { public static <T> T get(Future<T> t) {
@ -564,7 +680,7 @@ public class SanUtils {
return (R) object; return (R) object;
} catch (Exception e) { } catch (Exception e) {
log.error("线程池异常",e); log.error("线程池异常", e);
} finally { } finally {
} }
@ -574,8 +690,7 @@ public class SanUtils {
} }
private static Callable getAsynRun(Runnable runnable) {
private static Callable getAsynRun(Runnable runnable) {
return new Callable() { return new Callable() {
@Override @Override
public R call() throws Exception { public R call() throws Exception {
@ -585,7 +700,7 @@ public class SanUtils {
runnable.run(); runnable.run();
} catch (Exception e) { } catch (Exception e) {
log.error("线程池异常",e); log.error("线程池异常", e);
} }
return null; 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<>(); Map<String, Future<R>> map = new HashMap<>();
for (int i = 0; i < target.length; i++) { for (int i = 0; i < target.length; i++) {
Runnable v = target[i]; Runnable v = target[i];
@ -602,28 +716,25 @@ public class SanUtils {
map.put(i + "", countFuture); map.put(i + "", countFuture);
} }
AsynRunDTO asynRunDTO = new AsynRunDTO(); AsynRunDTO asynRunDTO = new AsynRunDTO();
asynRunDTO.setMap(map); asynRunDTO.setMap(map);
return asynRunDTO; return asynRunDTO;
} }
@Test @Test
public void test(){ public void test() {
build( build(
()->{ () -> {
System.out.println("1"); System.out.println("1");
}, },
()->{ () -> {
System.out.println("2"); System.out.println("2");
} }
).run(); ).run();
} }
public static AriseUser getName(AriseUser ariseUser) { public static AriseUser getName(AriseUser ariseUser) {
return 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 com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
@Data @Data
public class AppTradeOrderLineDTO extends VvTradeOrderLineEntity { public class AppTradeOrderLineDTO extends VvTradeOrderLineEntity {
/**** /****
* 子订单列表信息 * 子订单列表信息
*/ */
private List<Long> tradeOrderLineIdList; 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 @Data
public class VVOrderListResp extends VvTradeOrderEntity { 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 com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
@Data @Data
public class VvTradeOrderLineDO extends VvTradeOrderLineEntity { 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.alibaba.request.mm.order.resp.OrderActionDTO;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.enums.OrderActionEnums; 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.ArrayList;
import java.util.Arrays; import java.util.Arrays;

View File

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

View File

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

View File

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

View File

@ -1,6 +1,16 @@
package com.api.test; 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.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 class Test4 {
public static void main(String[] args) { public static void main(String[] args) {
@ -13,4 +23,61 @@ public class Test4 {
System.out.println(code2); 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));
}
}