Merge branch 'master' into dev

# Conflicts:
#	jsowell-admin/src/test/resources/payment_ids
This commit is contained in:
Guoqs
2025-10-10 13:34:33 +08:00
2 changed files with 45 additions and 3 deletions

View File

@@ -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;
}
/**

View File

@@ -683,7 +683,12 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService {
List<OrderSplitRecord> orderSplitRecords = orderSplitRecordService.queryOrderSplitRecordList(stationInfo.getMerchantId(), stationId, tradeDate, tradeDate);
log.info("查分账记录,站点:{}, 在{}-{}查询到分账数据{}条", stationInfo.getStationName(), startTime, endTime, orderSplitRecords.size());
// orderSplitRecords转为map, key为订单编号, value为分账记录
Map<String, OrderSplitRecord> splitRecordMap = orderSplitRecords.stream().collect(Collectors.toMap(OrderSplitRecord::getOrderCode, v -> v));
// Map<String, OrderSplitRecord> splitRecordMap = orderSplitRecords.stream().collect(Collectors.toMap(OrderSplitRecord::getOrderCode, v -> v));
// orderSplitRecords转为map, key为订单编号, value为分账记录过滤该运营商分账记录
Map<String, OrderSplitRecord> splitRecordMap = orderSplitRecords.stream()
.filter(v -> v.getFeeAmount().compareTo(BigDecimal.ZERO) > 0)
.collect(Collectors.toMap(OrderSplitRecord::getOrderCode, v -> v));
// 统计出日报信息
BigDecimal useElectricity = BigDecimal.ZERO; // 总电量使用量