Commit 3617eaf1 by zhangxingmin

push

parent 0bb7ac53
...@@ -969,34 +969,118 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -969,34 +969,118 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
return commissionStatistics; return commissionStatistics;
} }
// @Override
// public CommissionExpectedStatisticsVO getExpectedStatisticsNew(List<CommissionExpected> allExpectedList) {
// // 空集合直接返回空统计
// if (CollectionUtils.isEmpty(allExpectedList)) {
// return emptyStatistics();
// }
//
// // 查询所有记录(包含失效状态)
//// List<CommissionExpected> allExpectedList = this.listByIds(expectedIds);
//// if (CollectionUtils.isEmpty(allExpectedList)) {
//// return emptyStatistics();
//// }
//
// // 过滤掉已失效的记录(status = "3")
// List<CommissionExpected> validList = allExpectedList.stream()
// .filter(e -> !"3".equals(e.getStatus()))
// .collect(Collectors.toList());
//
// if (validList.isEmpty()) {
// return emptyStatistics();
// }
//
// // 手动聚合计算
// BigDecimal totalAmount = BigDecimal.ZERO;
// BigDecimal totalPaidAmount = BigDecimal.ZERO;
// //累计已入账来佣比例(同保单多个入账项目累计的实佣率)
// BigDecimal totalPaidRatio = BigDecimal.ZERO;
// //累计来佣比例(同保单多个入账项目累计的产品来佣率)
// BigDecimal totalCommissionRatio = BigDecimal.ZERO;
// Set<String> policyNoSet = new HashSet<>();
//
// for (CommissionExpected expected : validList) {
// totalAmount = totalAmount.add(ObjectUtils.defaultIfNull(expected.getExpectedAmount(), BigDecimal.ZERO));
// totalPaidAmount = totalPaidAmount.add(ObjectUtils.defaultIfNull(expected.getPaidAmount(), BigDecimal.ZERO));
// totalPaidRatio = totalPaidRatio.add(ObjectUtils.defaultIfNull(expected.getPaidRatio(), BigDecimal.ZERO));
// totalCommissionRatio = totalCommissionRatio.add(ObjectUtils.defaultIfNull(expected.getCommissionRatio(), BigDecimal.ZERO));
// if (StringUtils.isNotBlank(expected.getPolicyNo())) {
// policyNoSet.add(expected.getPolicyNo());
// }
// }
//
// // 计算总保费(HKD)
// BigDecimal totalPremium = BigDecimal.ZERO;
// BigDecimal fromTotalPremium = BigDecimal.ZERO;
// if (CollectionUtils.isNotEmpty(policyNoSet)) {
// List<Policy> policyList = policyService.lambdaQuery()
// .select(Policy::getPolicyNo,
// Policy::getTotalPaymentPremium,
// Policy::getCurrency)
// .in(Policy::getPolicyNo, policyNoSet)
// .list();
// if (CollectionUtils.isNotEmpty(policyList)) {
// for (Policy policy : policyList) {
// // 获取保单币种到港币的汇率
// BigDecimal rate = queryExchangeRateByFeign(policy.getCurrency(), "HKD");
// if (rate == null) rate = BigDecimal.ONE;
// totalPremium = totalPremium.add(policy.getTotalPaymentPremium().multiply(rate));
// fromTotalPremium = fromTotalPremium.add(policy.getTotalPaymentPremium());
// }
// }
// }
//
// // 组装返回对象
// CommissionExpectedStatisticsVO vo = new CommissionExpectedStatisticsVO();
// vo.setTotalAmount(totalAmount);
// vo.setTotalPaidAmount(totalPaidAmount);
// vo.setPendingPaidAmountS(totalAmount.subtract(totalPaidAmount));
//
// if (totalAmount.compareTo(BigDecimal.ZERO) > 0) {
// BigDecimal ratio = totalPaidAmount.divide(totalAmount, 4, RoundingMode.HALF_UP)
// .multiply(BigDecimal.valueOf(100));
// vo.setPaidAmountRatio(ratio);
// } else {
// vo.setPaidAmountRatio(BigDecimal.ZERO);
// }
//
// // 待入账金额归零 = 已入账来佣比例(累计实佣率)>= 累计产品来佣率
//// if (totalPaidRatio.compareTo(totalCommissionRatio) >= 0){
//// vo.setPendingPaidAmount(BigDecimal.ZERO);
//// }
// vo.setPendingPaidAmount(totalAmount);
// vo.setTotalPolicyCount(policyNoSet.size());
// vo.setTotalPremium(totalPremium);
// vo.setFromTotalPremium(fromTotalPremium);
// vo.setPolicyNos(null); // 原字段可能用于其他逻辑,此处置空
// return vo;
// }
@Override @Override
public CommissionExpectedStatisticsVO getExpectedStatisticsNew(List<CommissionExpected> allExpectedList) { public CommissionExpectedStatisticsVO getExpectedStatisticsNew(List<CommissionExpected> allExpectedList) {
// 空集合直接返回空统计 long t0 = System.currentTimeMillis();
log.info("getExpectedStatisticsNew 开始, 输入大小: {}", allExpectedList == null ? 0 : allExpectedList.size());
if (CollectionUtils.isEmpty(allExpectedList)) { if (CollectionUtils.isEmpty(allExpectedList)) {
return emptyStatistics(); return emptyStatistics();
} }
// 查询所有记录(包含失效状态) long t1 = System.currentTimeMillis();
// List<CommissionExpected> allExpectedList = this.listByIds(expectedIds);
// if (CollectionUtils.isEmpty(allExpectedList)) {
// return emptyStatistics();
// }
// 过滤掉已失效的记录(status = "3")
List<CommissionExpected> validList = allExpectedList.stream() List<CommissionExpected> validList = allExpectedList.stream()
.filter(e -> !"3".equals(e.getStatus())) .filter(e -> !"3".equals(e.getStatus()))
.collect(Collectors.toList()); .collect(Collectors.toList());
log.info("过滤 status=3 耗时: {} ms, 有效数量: {}", System.currentTimeMillis() - t1, validList.size());
if (validList.isEmpty()) { if (validList.isEmpty()) {
return emptyStatistics(); return emptyStatistics();
} }
long t2 = System.currentTimeMillis();
// 手动聚合计算 // 手动聚合计算
BigDecimal totalAmount = BigDecimal.ZERO; BigDecimal totalAmount = BigDecimal.ZERO;
BigDecimal totalPaidAmount = BigDecimal.ZERO; BigDecimal totalPaidAmount = BigDecimal.ZERO;
//累计已入账来佣比例(同保单多个入账项目累计的实佣率)
BigDecimal totalPaidRatio = BigDecimal.ZERO; BigDecimal totalPaidRatio = BigDecimal.ZERO;
//累计来佣比例(同保单多个入账项目累计的产品来佣率)
BigDecimal totalCommissionRatio = BigDecimal.ZERO; BigDecimal totalCommissionRatio = BigDecimal.ZERO;
Set<String> policyNoSet = new HashSet<>(); Set<String> policyNoSet = new HashSet<>();
...@@ -1009,8 +1093,10 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -1009,8 +1093,10 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
policyNoSet.add(expected.getPolicyNo()); policyNoSet.add(expected.getPolicyNo());
} }
} }
log.info("内存聚合耗时: {} ms, 保单数: {}", System.currentTimeMillis() - t2, policyNoSet.size());
// 计算总保费(HKD) long t3 = System.currentTimeMillis();
// 计算总保费
BigDecimal totalPremium = BigDecimal.ZERO; BigDecimal totalPremium = BigDecimal.ZERO;
BigDecimal fromTotalPremium = BigDecimal.ZERO; BigDecimal fromTotalPremium = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(policyNoSet)) { if (CollectionUtils.isNotEmpty(policyNoSet)) {
...@@ -1020,15 +1106,16 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -1020,15 +1106,16 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
Policy::getCurrency) Policy::getCurrency)
.in(Policy::getPolicyNo, policyNoSet) .in(Policy::getPolicyNo, policyNoSet)
.list(); .list();
if (CollectionUtils.isNotEmpty(policyList)) { log.info("查询保单信息耗时: {} ms, 结果数量: {}", System.currentTimeMillis() - t3, policyList.size());
long t4 = System.currentTimeMillis();
for (Policy policy : policyList) { for (Policy policy : policyList) {
// 获取保单币种到港币的汇率
BigDecimal rate = queryExchangeRateByFeign(policy.getCurrency(), "HKD"); BigDecimal rate = queryExchangeRateByFeign(policy.getCurrency(), "HKD");
if (rate == null) rate = BigDecimal.ONE; if (rate == null) rate = BigDecimal.ONE;
totalPremium = totalPremium.add(policy.getTotalPaymentPremium().multiply(rate)); totalPremium = totalPremium.add(policy.getTotalPaymentPremium().multiply(rate));
fromTotalPremium = fromTotalPremium.add(policy.getTotalPaymentPremium()); fromTotalPremium = fromTotalPremium.add(policy.getTotalPaymentPremium());
} }
} log.info("汇率计算及保费累加耗时: {} ms", System.currentTimeMillis() - t4);
} }
// 组装返回对象 // 组装返回对象
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment