Commit 110119f3 by jianan

应收款管理-总保费

parent 38c7f0fd
...@@ -20,10 +20,7 @@ import com.yd.common.utils.RedisUtil; ...@@ -20,10 +20,7 @@ import com.yd.common.utils.RedisUtil;
import com.yd.csf.service.component.ReceivableService; import com.yd.csf.service.component.ReceivableService;
import com.yd.csf.service.dto.*; import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.CommissionExpectedStatusEnum; import com.yd.csf.service.enums.CommissionExpectedStatusEnum;
import com.yd.csf.service.model.Commission; import com.yd.csf.service.model.*;
import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.service.*; import com.yd.csf.service.service.*;
import com.yd.csf.service.dao.CommissionExpectedMapper; import com.yd.csf.service.dao.CommissionExpectedMapper;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO; import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
...@@ -545,11 +542,37 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -545,11 +542,37 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
expectedStatisticsVO.setPendingPaidAmount(BigDecimal.ZERO); expectedStatisticsVO.setPendingPaidAmount(BigDecimal.ZERO);
expectedStatisticsVO.setPaidAmountRatio(BigDecimal.ZERO); expectedStatisticsVO.setPaidAmountRatio(BigDecimal.ZERO);
expectedStatisticsVO.setTotalPolicyCount(0); expectedStatisticsVO.setTotalPolicyCount(0);
expectedStatisticsVO.setTotalPremium(BigDecimal.ZERO);
return expectedStatisticsVO; return expectedStatisticsVO;
} }
// 自定义统计数据 // 自定义统计数据
CommissionExpectedStatisticsVO commissionStatistics = baseMapper.getExpectedStatistics(expectedIds); CommissionExpectedStatisticsVO commissionStatistics = baseMapper.getExpectedStatistics(expectedIds);
// 计算总保费
String policyNos = commissionStatistics.getPolicyNos();
if (ObjectUtils.isNotEmpty(policyNos)) {
List<CommissionExpected> commissionExpectedList = this.listByIds(expectedIds);
Map<String, BigDecimal> exchangeRateMap = new HashMap<>();
for (CommissionExpected commissionExpected : commissionExpectedList) {
exchangeRateMap.put(commissionExpected.getPolicyNo(), commissionExpected.getDefaultExchangeRate());
}
Set<String> policyNoSet = commissionExpectedList.stream().map(CommissionExpected::getPolicyNo).collect(Collectors.toSet());
// 查询总保费
List<Policy> policyList = policyService.lambdaQuery().in(Policy::getPolicyNo, policyNoSet).list();
BigDecimal totalPremium = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(policyList)) {
for (Policy policy : policyList) {
BigDecimal exchangeRate = exchangeRateMap.getOrDefault(policy.getPolicyNo(), BigDecimal.ONE);
totalPremium = totalPremium.add(policy.getTotalPaymentPremium().multiply(exchangeRate));
}
commissionStatistics.setTotalPremium(totalPremium);
}
} else {
commissionStatistics.setTotalPremium(BigDecimal.ZERO);
}
BigDecimal totalAmount = commissionStatistics.getTotalAmount(); BigDecimal totalAmount = commissionStatistics.getTotalAmount();
BigDecimal totalPaidAmount = commissionStatistics.getTotalPaidAmount(); BigDecimal totalPaidAmount = commissionStatistics.getTotalPaidAmount();
// 计算待入账金额 // 计算待入账金额
......
package com.yd.csf.service.vo; package com.yd.csf.service.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -39,4 +40,13 @@ public class CommissionExpectedStatisticsVO { ...@@ -39,4 +40,13 @@ public class CommissionExpectedStatisticsVO {
*/ */
@Schema(description = "总保单数") @Schema(description = "总保单数")
private Integer totalPolicyCount; private Integer totalPolicyCount;
/**
* 总保费(HKD)
*/
@Schema(description = "总保费(HKD)")
private BigDecimal totalPremium;
@JsonIgnore
private String policyNos;
} }
...@@ -53,9 +53,10 @@ ...@@ -53,9 +53,10 @@
SELECT SELECT
IFNULL(SUM(expected_amount),0) AS totalAmount, IFNULL(SUM(expected_amount),0) AS totalAmount,
IFNULL(SUM(paid_amount),0) AS totalPaidAmount, IFNULL(SUM(paid_amount),0) AS totalPaidAmount,
COUNT(DISTINCT policy_no) AS totalPolicyCount COUNT(DISTINCT policy_no) AS totalPolicyCount,
GROUP_CONCAT(DISTINCT policy_no) AS policyNos
FROM FROM
commission_expected commission_expected ce
<where> <where>
<if test="expectedIds != null and expectedIds.size > 0"> <if test="expectedIds != null and expectedIds.size > 0">
id IN id IN
......
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