Commit 24017a14 by zhangxingmin

Merge remote-tracking branch 'origin/test' into test

parents 996be7ed 84d81828
...@@ -144,6 +144,18 @@ public class ApiExpectedFortunePageResponse { ...@@ -144,6 +144,18 @@ public class ApiExpectedFortunePageResponse {
private String currency; private String currency;
/** /**
* 默认结算汇率
*/
@Schema(description = "默认结算汇率")
private BigDecimal defaultExchangeRate;
/**
* 港币预计出账金额
*/
@Schema(description = "港币预计出账金额")
private BigDecimal hkdAmount;
/**
* 出账状态 * 出账状态
*/ */
@Schema(description = "出账状态 0=待出账 1=可出帐,待检核 2=完成出账 3=部分出账 4=保留 5=已失效 6=可出账, 已检核 7=未找到当前预计出账对应的来佣 字典值: csf_expected_fortune_status") @Schema(description = "出账状态 0=待出账 1=可出帐,待检核 2=完成出账 3=部分出账 4=保留 5=已失效 6=可出账, 已检核 7=未找到当前预计出账对应的来佣 字典值: csf_expected_fortune_status")
......
...@@ -118,6 +118,11 @@ public class Policy implements Serializable { ...@@ -118,6 +118,11 @@ public class Policy implements Serializable {
private BigDecimal paymentPremium; private BigDecimal paymentPremium;
/** /**
* 总保费
*/
private BigDecimal totalPaymentPremium;
/**
* 保单状态 * 保单状态
*/ */
private String status; private String status;
......
package com.yd.csf.service.service.impl; package com.yd.csf.service.service.impl;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date; import java.util.Date;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...@@ -496,6 +499,14 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -496,6 +499,14 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
if (policy == null) { if (policy == null) {
throw new BusinessException(ErrorCode.NOT_FOUND_ERROR.getCode(), "policy不存在"); throw new BusinessException(ErrorCode.NOT_FOUND_ERROR.getCode(), "policy不存在");
} }
BigDecimal paymentPremium = policy.getPaymentPremium();
if (paymentPremium == null) {
throw new BusinessException("期交保费不能为空");
}
Object paymentTerm = policy.getPaymentTerm();
if (paymentTerm == null) {
throw new BusinessException("供款期数不能为空");
}
policy.setPolicyNo(policyFollow.getPolicyNo()); policy.setPolicyNo(policyFollow.getPolicyNo());
policy.setPolicyHolderAge(calculatePolicyHolderAge(policyFollow.getCustomerBizId())); policy.setPolicyHolderAge(calculatePolicyHolderAge(policyFollow.getCustomerBizId()));
policy.setCoolingOffEndDate(policyFollow.getCoolingOffEndDate()); policy.setCoolingOffEndDate(policyFollow.getCoolingOffEndDate());
...@@ -507,6 +518,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -507,6 +518,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
policy.setPaymentPremium(policyFollow.getInitialPremium()); policy.setPaymentPremium(policyFollow.getInitialPremium());
policy.setCurrency(policyFollow.getPolicyCurrency()); policy.setCurrency(policyFollow.getPolicyCurrency());
policy.setPaymentTerm(policyFollow.getIssueNumber()); policy.setPaymentTerm(policyFollow.getIssueNumber());
policy.setTotalPaymentPremium(calculateTotalPaymentPremium(policy));
policy.setUnderwritingDate(changePolicyFollowStatusRequest.getUnderwritingDate()); policy.setUnderwritingDate(changePolicyFollowStatusRequest.getUnderwritingDate());
policy.setEffectiveDate(changePolicyFollowStatusRequest.getEffectiveDate()); policy.setEffectiveDate(changePolicyFollowStatusRequest.getEffectiveDate());
...@@ -554,6 +566,13 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -554,6 +566,13 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
return true; return true;
} }
private BigDecimal calculateTotalPaymentPremium(Policy policy) {
BigDecimal paymentPremium = policy.getPaymentPremium();
Object paymentTerm = policy.getPaymentTerm();
// 计算总保费 = 每期保费 * 供款期数
return paymentPremium.multiply(Convert.toBigDecimal(paymentTerm)).setScale(4, RoundingMode.HALF_UP);
}
private Integer calculatePolicyHolderAge(String customerBizId) { private Integer calculatePolicyHolderAge(String customerBizId) {
Customer customer = customerService.getByCustomerBizId(customerBizId); Customer customer = customerService.getByCustomerBizId(customerBizId);
if (customer == null) { if (customer == null) {
......
package com.yd.csf.service.service.impl; package com.yd.csf.service.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.json.JSONArray; import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.common.enums.ResultCode; import com.yd.common.enums.ResultCode;
...@@ -23,11 +21,7 @@ import com.yd.csf.service.service.PolicyService; ...@@ -23,11 +21,7 @@ import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.dao.PolicyMapper; import com.yd.csf.service.dao.PolicyMapper;
import com.yd.csf.service.vo.PolicyVO; import com.yd.csf.service.vo.PolicyVO;
import com.yd.product.feign.client.relprojectproductlaunch.ApiRelProjectProductLaunchFeignClient; import com.yd.product.feign.client.relprojectproductlaunch.ApiRelProjectProductLaunchFeignClient;
import com.yd.product.feign.request.productlaunch.ApiProductLaunchParameterPageRequest;
import com.yd.product.feign.request.relprojectproductlaunch.ApiRelProjectProductLaunchPageRequest; import com.yd.product.feign.request.relprojectproductlaunch.ApiRelProjectProductLaunchPageRequest;
import com.yd.product.feign.response.productlaunch.ApiAttributeSettingDto;
import com.yd.product.feign.response.relprojectproductlaunch.ApiRelProjectProductLaunchPageResponse;
import io.swagger.v3.core.util.Json;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -37,6 +31,8 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -37,6 +31,8 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -114,12 +110,22 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy> ...@@ -114,12 +110,22 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
if (policy == null) { if (policy == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保单不存在"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保单不存在");
} }
BigDecimal paymentPremium = policy.getPaymentPremium();
if (paymentPremium == null) {
throw new BusinessException("期交保费不能为空");
}
Object paymentTerm = policy.getPaymentTerm();
if (paymentTerm == null) {
throw new BusinessException("供款期数不能为空");
}
Date now = new Date(); Date now = new Date();
// 保单信息 // 保单信息
ApiProductPlanMainInfoDto apiProductPlanMainInfoDto = policyUpdateRequest.getApiProductPlanMainInfoDto(); ApiProductPlanMainInfoDto apiProductPlanMainInfoDto = policyUpdateRequest.getApiProductPlanMainInfoDto();
if (apiProductPlanMainInfoDto != null) { if (apiProductPlanMainInfoDto != null) {
BeanUtils.copyProperties(apiProductPlanMainInfoDto, policy, "policyBizId", "id"); BeanUtils.copyProperties(apiProductPlanMainInfoDto, policy, "policyBizId", "id");
policy.setPaymentPremium(apiProductPlanMainInfoDto.getEachIssuePremium()); policy.setPaymentPremium(apiProductPlanMainInfoDto.getEachIssuePremium());
policy.setTotalPaymentPremium(calculateTotalPaymentPremium(apiProductPlanMainInfoDto));
policy.setIsPrepaid(apiProductPlanMainInfoDto.getIsPrepay()); policy.setIsPrepaid(apiProductPlanMainInfoDto.getIsPrepay());
policy.setUpdateTime(now); policy.setUpdateTime(now);
// 更新保单 // 更新保单
...@@ -150,6 +156,13 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy> ...@@ -150,6 +156,13 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
return true; return true;
} }
private BigDecimal calculateTotalPaymentPremium(ApiProductPlanMainInfoDto apiProductPlanMainInfoDto) {
// 计算总保费
return apiProductPlanMainInfoDto.getEachIssuePremium()
.multiply(new BigDecimal(apiProductPlanMainInfoDto.getPaymentFrequency()))
.setScale(4, RoundingMode.HALF_UP);
}
/** /**
* 查询列表 * 查询列表
......
...@@ -29,11 +29,11 @@ ...@@ -29,11 +29,11 @@
ifnull(sum(ef.hkd_amount),0) as totalExpectedAmount, ifnull(sum(ef.hkd_amount),0) as totalExpectedAmount,
ifnull(sum(ef.paid_amount),0) as totalPaidAmount, ifnull(sum(ef.paid_amount),0) as totalPaidAmount,
ifnull(sum(ef.unpaid_amount),0) as totalUnpaidAmount, ifnull(sum(ef.unpaid_amount),0) as totalUnpaidAmount,
ifnull(sum(e.totalPremiumAmount),0) as totalPremiumAmount, MAX(e.total_payment_premium) * MAX(ef.default_exchange_rate) as totalPremiumAmount,
count(distinct ef.policy_no) as totalPolicyCount count(distinct ef.policy_no) as totalPolicyCount
from expected_fortune ef from expected_fortune ef
LEFT JOIN ( LEFT JOIN (
SELECT p.policy_no, SUM(p.payment_premium*p.payment_term) as totalPremiumAmount SELECT p.policy_no, p.total_payment_premium
FROM policy p FROM policy p
GROUP BY policy_no GROUP BY policy_no
) e ON ef.policy_no = e.policy_no ) e ON ef.policy_no = e.policy_no
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
<result property="paymentTerm" column="payment_term" /> <result property="paymentTerm" column="payment_term" />
<result property="paymentFrequency" column="payment_frequency" /> <result property="paymentFrequency" column="payment_frequency" />
<result property="paymentPremium" column="payment_premium" /> <result property="paymentPremium" column="payment_premium" />
<result property="totalPaymentPremium" column="total_payment_premium" />
<result property="status" column="status" /> <result property="status" column="status" />
<result property="currency" column="currency" /> <result property="currency" column="currency" />
<result property="initialPremium" column="initial_premium" /> <result property="initialPremium" column="initial_premium" />
...@@ -57,7 +58,7 @@ ...@@ -57,7 +58,7 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id,policy_biz_id,policy_no,user_biz_id,product_launch_biz_id,product_code, id,policy_biz_id,policy_no,user_biz_id,product_launch_biz_id,product_code,
product_name,product_cate,insurance_company,insurance_company_biz_id,region, product_name,product_cate,insurance_company,insurance_company_biz_id,region,
policy_holder,policy_holder_age,insured,guarantee_period,sum_insured,payment_term,payment_frequency,payment_premium, policy_holder,policy_holder_age,insured,guarantee_period,sum_insured,payment_term,payment_frequency,payment_premium,total_payment_premium,
status,currency,initial_premium,sign_date,issue_date, status,currency,initial_premium,sign_date,issue_date,
effective_date,cooling_off_end_date,cooling_off_days,renewal_date,is_prepaid,deductibles,prepaid_term, effective_date,cooling_off_end_date,cooling_off_days,renewal_date,is_prepaid,deductibles,prepaid_term,
initial_payment_method,renewal_payment_method,dividend_distribution_method,is_backtrack,is_join, initial_payment_method,renewal_payment_method,dividend_distribution_method,is_backtrack,is_join,
......
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