Commit fed16fba by jianan

前端对接问题修复15

parent 37e3791f
...@@ -25,6 +25,7 @@ import com.yd.csf.service.vo.CommissionStatisticsVO; ...@@ -25,6 +25,7 @@ import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO; import com.yd.csf.service.vo.CommissionVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -686,20 +687,14 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -686,20 +687,14 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "来佣数据不能为空"); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "来佣数据不能为空");
} }
Set<String> policyNoSet = customerAddRequestList.stream().map(CommissionAddRequest::getPolicyNo).collect(Collectors.toSet()); Set<String> policyNoSet = customerAddRequestList.stream().map(CommissionAddRequest::getPolicyNo).collect(Collectors.toSet());
// 校验来佣所属保单跟进是否存在
List<PolicyFollow> policyFollowList = policyFollowService.list(new QueryWrapper<PolicyFollow>().in("policy_no", policyNoSet)); Map<String, PolicyFollow> policyFollowMap = null;
if (!CollectionUtils.isEmpty(policyNoSet)) { if (!CollectionUtils.isEmpty(policyNoSet)) {
// 保单号映射 // 查询来佣所属保单跟进
Map<String, PolicyFollow> policyFollowMap = policyFollowList.stream().collect(Collectors.toMap(PolicyFollow::getPolicyNo, Function.identity())); List<PolicyFollow> policyFollowList = policyFollowService.list(new QueryWrapper<PolicyFollow>().in("policy_no", policyNoSet));
for (CommissionAddRequest commissionAddRequest : customerAddRequestList) { // policyFollowList 映射
PolicyFollow policyFollow = policyFollowMap.get(commissionAddRequest.getPolicyNo()); policyFollowMap = policyFollowList.stream().collect(Collectors.toMap(PolicyFollow::getPolicyNo, Function.identity()));
if (policyFollow == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), String.format("新单跟进:保单号:%s不存在,不能添加来佣", commissionAddRequest.getPolicyNo()));
}
}
} }
// policyFollowList 映射
Map<String, PolicyFollow> policyFollowMap = policyFollowList.stream().collect(Collectors.toMap(PolicyFollow::getPolicyNo, Function.identity()));
List<Commission> commissionList = new ArrayList<>(); List<Commission> commissionList = new ArrayList<>();
for (CommissionAddRequest request : customerAddRequestList) { for (CommissionAddRequest request : customerAddRequestList) {
...@@ -707,15 +702,16 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -707,15 +702,16 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
BeanUtils.copyProperties(request, commission); BeanUtils.copyProperties(request, commission);
// 入账业务id // 入账业务id
commission.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode())); commission.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode()));
// 关联业务id
PolicyFollow policyFollow = policyFollowMap.get(request.getPolicyNo()); if (MapUtils.isNotEmpty(policyFollowMap)) {
if (policyFollow != null) { PolicyFollow policyFollow = policyFollowMap.get(request.getPolicyNo());
// 关联业务id if (policyFollow != null) {
commission.setReconciliationCompany(policyFollow.getReconciliationCompany()); commission.setReconciliationCompany(policyFollow.getReconciliationCompany());
commission.setReconciliationCompanyBizId(policyFollow.getReconciliationCompanyBizId()); commission.setReconciliationCompanyBizId(policyFollow.getReconciliationCompanyBizId());
commission.setProductLaunchBizId(policyFollow.getProductLaunchBizId()); commission.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
commission.setInsuranceCompanyBizId(policyFollow.getInsuranceCompanyBizId()); commission.setInsuranceCompanyBizId(policyFollow.getInsuranceCompanyBizId());
commission.setPremium(Convert.toStr(policyFollow.getPaymentPremium())); commission.setPremium(Convert.toStr(policyFollow.getPaymentPremium()));
}
} }
commissionList.add(commission); commissionList.add(commission);
} }
...@@ -815,17 +811,32 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -815,17 +811,32 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 自定义统计数据 // 自定义统计数据
CommissionStatisticsVO commissionStatistics = baseMapper.getCommissionStatistics(commissionIds); CommissionStatisticsVO commissionStatistics = baseMapper.getCommissionStatistics(commissionIds);
// BigDecimal totalAmount = commissionStatistics.getTotalAmount(); // 确保所有字段都有值,避免null值
// BigDecimal totalPaidAmount = commissionStatistics.getTotalPaidAmount(); if (commissionStatistics.getTotalPaidAmount() == null) {
// // 计算待入账金额 commissionStatistics.setTotalPaidAmount(BigDecimal.ZERO);
// commissionStatistics.setPendingPaidAmount(totalAmount.subtract(totalPaidAmount)); }
// // 计算已入账比例 if (commissionStatistics.getExpectePaidAmount() == null) {
// BigDecimal divided = BigDecimal.ZERO; commissionStatistics.setExpectePaidAmount(BigDecimal.ZERO);
// if (totalAmount.compareTo(BigDecimal.ZERO) > 0) { }
// divided = totalPaidAmount.divide(totalAmount, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); if (commissionStatistics.getPendingPaidAmount() == null) {
// } commissionStatistics.setPendingPaidAmount(BigDecimal.ZERO);
// // 格式化 % }
// commissionStatistics.setPaidAmountRatio(divided); if (commissionStatistics.getDifferenceAmount() == null) {
commissionStatistics.setDifferenceAmount(BigDecimal.ZERO);
}
if (commissionStatistics.getTotalPremium() == null) {
commissionStatistics.setTotalPremium(BigDecimal.ZERO);
}
// 计算差额(估-实)
BigDecimal differenceAmount = commissionStatistics.getExpectePaidAmount()
.subtract(commissionStatistics.getTotalPaidAmount());
commissionStatistics.setDifferenceAmount(differenceAmount);
// 如果待入账金额为0,重新计算(预计入账金额 - 实际入账金额)
if (commissionStatistics.getPendingPaidAmount().compareTo(BigDecimal.ZERO) == 0) {
commissionStatistics.setPendingPaidAmount(differenceAmount);
}
return commissionStatistics; return commissionStatistics;
} }
......
...@@ -69,17 +69,45 @@ ...@@ -69,17 +69,45 @@
</select> </select>
<!-- 总金额:统计保单预计来佣表 已入账金额:统计来佣表--> <!-- 总金额:统计保单预计来佣表 已入账金额:统计来佣表-->
<!-- <select id="getCommissionStatistics" resultType="com.yd.csf.service.vo.CommissionStatisticsVO">-->
<!-- SELECT-->
<!-- COALESCE(SUM(e.amount), 0) as totalAmount,-->
<!-- COALESCE(SUM(c.amount), 0) as totalPaidAmount,-->
<!-- COUNT(DISTINCT c.policy_no) as totalPolicyCount-->
<!-- FROM commission c-->
<!-- LEFT JOIN (-->
<!-- SELECT policy_no, SUM(expected_amount) as amount-->
<!-- FROM commission_expected-->
<!-- GROUP BY policy_no-->
<!-- ) e ON c.policy_no = e.policy_no-->
<!-- <where>-->
<!-- <if test="commissionIdList != null and commissionIdList.size > 0">-->
<!-- c.id IN-->
<!-- <foreach collection="commissionIdList" item="item" open="(" separator="," close=")">-->
<!-- #{item}-->
<!-- </foreach>-->
<!-- </if>-->
<!-- </where>-->
<!-- </select>-->
<!-- 总金额:统计保单预计来佣表 已入账金额:统计来佣表-->
<select id="getCommissionStatistics" resultType="com.yd.csf.service.vo.CommissionStatisticsVO"> <select id="getCommissionStatistics" resultType="com.yd.csf.service.vo.CommissionStatisticsVO">
SELECT SELECT
COALESCE(SUM(e.amount), 0) as totalAmount, COALESCE(SUM(c.amount), 0) as totalPaidAmount,
COALESCE(SUM(c.amount), 0) as totalPaidAmount, COALESCE(SUM(e.expected_amount), 0) as expectePaidAmount,
COUNT(DISTINCT c.policy_no) as totalPolicyCount COALESCE(SUM(e.expected_amount) - SUM(c.amount), 0) as pendingPaidAmount,
COALESCE(SUM(e.expected_amount) - SUM(c.amount), 0) as differenceAmount,
COUNT(DISTINCT c.policy_no) as totalPolicyCount,
COALESCE(SUM(CAST(c.premium AS DECIMAL(15,2))), 0) as totalPremium,
COUNT(DISTINCT c.reconciliation_company) as reconciliationCompanyCount,
COUNT(DISTINCT c.id) as totalCompareCommissionCount,
SUM(CASE WHEN c.status = '1' THEN 1 ELSE 0 END) as successCompareCommissionCount,
SUM(CASE WHEN c.status = '2' THEN 1 ELSE 0 END) as failedCompareCommissionCount
FROM commission c FROM commission c
LEFT JOIN ( LEFT JOIN commission_expected e ON c.policy_no = e.policy_no
SELECT policy_no, SUM(expected_amount) as amount AND c.commission_name = e.commission_name
FROM commission_expected AND c.commission_period = e.commission_period
GROUP BY policy_no AND c.currency = e.currency
) e ON c.policy_no = e.policy_no
<where> <where>
<if test="commissionIdList != null and commissionIdList.size > 0"> <if test="commissionIdList != null and commissionIdList.size > 0">
c.id IN c.id IN
...@@ -87,6 +115,8 @@ ...@@ -87,6 +115,8 @@
#{item} #{item}
</foreach> </foreach>
</if> </if>
AND c.is_deleted = 0
</where> </where>
</select> </select>
</mapper> </mapper>
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