Commit 2baa1d0a by zhangxingmin

push

parent 19b3f83f
...@@ -235,7 +235,7 @@ public class ApiCommissionExpectedController { ...@@ -235,7 +235,7 @@ public class ApiCommissionExpectedController {
List<CommissionExpected> commissionExpectedList = commissionExpectedService.list(queryWrapper); List<CommissionExpected> commissionExpectedList = commissionExpectedService.list(queryWrapper);
// 计算统计数据 // 计算统计数据
List<Long> expectedIds = commissionExpectedList.stream().map(CommissionExpected::getId).collect(Collectors.toList()); List<Long> expectedIds = commissionExpectedList.stream().map(CommissionExpected::getId).collect(Collectors.toList());
CommissionExpectedStatisticsVO expectedStatisticsVO = commissionExpectedService.getExpectedStatistics(expectedIds); CommissionExpectedStatisticsVO expectedStatisticsVO = commissionExpectedService.getExpectedStatisticsNew(expectedIds);
CommissionExpectedStatisticsNewVO statisticsNewVO = null; CommissionExpectedStatisticsNewVO statisticsNewVO = null;
if (expectedStatisticsVO != null) { if (expectedStatisticsVO != null) {
statisticsNewVO = new CommissionExpectedStatisticsNewVO(); statisticsNewVO = new CommissionExpectedStatisticsNewVO();
......
...@@ -62,6 +62,8 @@ public interface CommissionExpectedService extends IService<CommissionExpected> ...@@ -62,6 +62,8 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
CommissionExpectedStatisticsVO getExpectedStatistics(List<Long> expectedIds); CommissionExpectedStatisticsVO getExpectedStatistics(List<Long> expectedIds);
CommissionExpectedStatisticsVO getExpectedStatisticsNew(List<Long> expectedIds);
CommissionExpected getByBizId(String commissionExpectedBizId); CommissionExpected getByBizId(String commissionExpectedBizId);
void getExpectedCommissionByProductlaunchId(Policy policy, String productLaunchBizId, String insuranceCompanyBizId, String reconciliationCompany, String reconciliationCompanyCode, String reconciliationCompanyBizId, String professionalInvestor); void getExpectedCommissionByProductlaunchId(Policy policy, String productLaunchBizId, String insuranceCompanyBizId, String reconciliationCompany, String reconciliationCompanyCode, String reconciliationCompanyBizId, String professionalInvestor);
......
...@@ -884,6 +884,91 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -884,6 +884,91 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
} }
@Override @Override
public CommissionExpectedStatisticsVO getExpectedStatisticsNew(List<Long> expectedIds) {
// 空集合直接返回空统计
if (CollectionUtils.isEmpty(expectedIds)) {
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;
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));
if (StringUtils.isNotBlank(expected.getPolicyNo())) {
policyNoSet.add(expected.getPolicyNo());
}
}
// 计算总保费(HKD)
BigDecimal totalPremium = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(policyNoSet)) {
List<Policy> policyList = policyService.lambdaQuery()
.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));
}
}
}
// 组装返回对象
CommissionExpectedStatisticsVO vo = new CommissionExpectedStatisticsVO();
vo.setTotalAmount(totalAmount);
vo.setTotalPaidAmount(totalPaidAmount);
vo.setPendingPaidAmount(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);
}
vo.setTotalPolicyCount(policyNoSet.size());
vo.setTotalPremium(totalPremium);
vo.setPolicyNos(null); // 原字段可能用于其他逻辑,此处置空
return vo;
}
/**
* 返回空的统计对象
*/
private CommissionExpectedStatisticsVO emptyStatistics() {
CommissionExpectedStatisticsVO vo = new CommissionExpectedStatisticsVO();
vo.setTotalAmount(BigDecimal.ZERO);
vo.setTotalPaidAmount(BigDecimal.ZERO);
vo.setPendingPaidAmount(BigDecimal.ZERO);
vo.setPaidAmountRatio(BigDecimal.ZERO);
vo.setTotalPolicyCount(0);
vo.setTotalPremium(BigDecimal.ZERO);
return vo;
}
@Override
public CommissionExpected getByBizId(String commissionExpectedBizId) { public CommissionExpected getByBizId(String commissionExpectedBizId) {
return this.getOne(new QueryWrapper<CommissionExpected>().eq("commission_expected_biz_id", commissionExpectedBizId)); return this.getOne(new QueryWrapper<CommissionExpected>().eq("commission_expected_biz_id", commissionExpectedBizId));
} }
......
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