mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 02:55:04 +08:00
按照 memberId 对 SplitData 列表中的 amount 进行汇总,保留原始的 feeFlag 数据
This commit is contained in:
@@ -2330,9 +2330,46 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
resultList.add(insuranceSplit);
|
||||
}
|
||||
|
||||
// TODO 是否可以分多笔给同一个账户?,如果不行,下面进行根据adapayMemberId进行金额累加
|
||||
// 下面进行根据adapayMemberId进行金额累加
|
||||
return aggregateSplitDataByMemberId(resultList);
|
||||
}
|
||||
|
||||
return resultList;
|
||||
/**
|
||||
* 按照 memberId 对 SplitData 列表中的 amount 进行汇总,保留原始的 feeFlag 数据
|
||||
* @param splitDataList 包含 SplitData 对象的列表
|
||||
* @return 按 memberId 分组后的汇总结果列表
|
||||
*/
|
||||
private List<SplitData> aggregateSplitDataByMemberId(List<SplitData> splitDataList) {
|
||||
if (splitDataList == null || splitDataList.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// 按 memberId 分组,并保留每组第一条记录的 feeFlag
|
||||
Map<String, List<SplitData>> groupedByMemberId = splitDataList.stream()
|
||||
.collect(Collectors.groupingBy(SplitData::getMemberId));
|
||||
|
||||
List<SplitData> result = new ArrayList<>();
|
||||
|
||||
for (Map.Entry<String, List<SplitData>> entry : groupedByMemberId.entrySet()) {
|
||||
String memberId = entry.getKey();
|
||||
List<SplitData> group = entry.getValue();
|
||||
|
||||
// 计算该组的 amount 总和
|
||||
BigDecimal totalAmount = group.stream()
|
||||
.map(splitData -> new BigDecimal(splitData.getAmount()))
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
// 创建新的汇总记录,使用该组第一条记录的 feeFlag
|
||||
SplitData aggregatedData = new SplitData();
|
||||
aggregatedData.setMemberId(memberId);
|
||||
aggregatedData.setAmount(totalAmount.toString());
|
||||
// 保留原始的 feeFlag 数据(取第一条记录的值)
|
||||
if (!group.isEmpty()) {
|
||||
aggregatedData.setFeeFlag(group.get(0).getFeeFlag());
|
||||
}
|
||||
result.add(aggregatedData);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user