Commit f33301bd by jianan

新单跟进91

parent 59620efe
......@@ -66,7 +66,7 @@ public class CommissionExpected implements Serializable {
private String commissionType;
/**
* 来佣比例
* 来佣比例 (%)
*/
private BigDecimal commissionRatio;
......@@ -86,6 +86,16 @@ public class CommissionExpected implements Serializable {
private String status;
/**
* 默认结算汇率
*/
private BigDecimal defaultExchangeRate;
/**
* 预计来佣金额
*/
private BigDecimal expectedAmount;
/**
* 已入账金额
*/
private BigDecimal paidAmount;
......
......@@ -23,6 +23,7 @@ import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
......@@ -123,19 +124,6 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 更新属性
BeanUtils.copyProperties(commissionUpdateRequest, commission, "id", "commissionBizId");
// 查询预计来佣
CommissionExpected commissionExpected = queryByCommission(commission);
if (commissionExpected != null) {
// 对比预计来佣
compareWithExpected(commission.getPremium(), commission, commissionExpected);
commissionExpectedService.updateById(commissionExpected);
} else {
// 预计来佣不存在,来佣状态设置为 比对失败
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue());
commission.setRemark("未找到当前来佣对应的预计来佣,比对失败");
}
commission.setUpdaterId(loginUserId);
commission.setUpdateTime(new Date());
......@@ -381,7 +369,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
/**
* 比对时, 保费*预计来佣比例*结算汇率,和实际入账金额对比
* 比对时,当前来佣比例=当前入账金额/结算汇率/保费 和预计来佣的来佣比例对比
*
* @param commission
* @param expected
......@@ -389,14 +377,20 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@Override
public void compareWithExpected(String premium, Commission commission, CommissionExpected expected) {
if (expected != null) {
// 当前来佣比例=当前入账金额/结算汇率/保费
BigDecimal currentCommissionRatio = commission.getAmount()
.divide(new BigDecimal(premium), 2, RoundingMode.HALF_UP)
.divide(new BigDecimal(commission.getExchangeRate()), 2, RoundingMode.HALF_UP);
// 预计来佣比例
BigDecimal expectedCommissionRatio = expected.getCommissionRatio();
// 预计总金额
BigDecimal expectedAmount = new BigDecimal(premium)
.multiply(expected.getCommissionRatio())
.multiply(new BigDecimal(commission.getExchangeRate()));
.multiply(expected.getDefaultExchangeRate());
// 已入账金额
BigDecimal paidAmount = commission.getAmount().add(expected.getPaidAmount());
BigDecimal paidAmount = commission.getAmount().add(ObjectUtils.defaultIfNull(expected.getPaidAmount(), BigDecimal.ZERO));
if (paidAmount.compareTo(expectedAmount) == 0) {
if (currentCommissionRatio.compareTo(expectedCommissionRatio) == 0) {
// 一致,来佣状态设置为 比对成功
commission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue());
// 预计来佣的状态设置为 已来佣
......@@ -413,6 +407,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 待入账金额 = 预计来佣总金额 - 已入账金额
commission.setPendingAmount(expectedAmount.subtract(paidAmount).setScale(2, RoundingMode.HALF_UP));
// 预计来佣的已入账金额更新为 已入账金额
expected.setExpectedAmount(expectedAmount.setScale(2, RoundingMode.HALF_UP));
expected.setPaidAmount(paidAmount.setScale(2, RoundingMode.HALF_UP));
// 保存比对记录
......
......@@ -18,6 +18,8 @@
<result property="currency" column="currency" />
<result property="commissionDate" column="commission_date" />
<result property="status" column="status" />
<result property="defaultExchangeRate" column="default_exchange_rate" />
<result property="expectedAmount" column="expected_amount" />
<result property="paidAmount" column="paid_amount" />
<result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" />
......@@ -29,7 +31,7 @@
<sql id="Base_Column_List">
id,commission_expected_biz_id,policy_no,reconciliation_company,reconciliation_company_biz_id,commission_period,
total_period,commission_name,commission_type,commission_ratio,currency,
total_period,commission_name,commission_type,commission_ratio,currency,default_exchange_rate,expected_amount,
commission_date,status,paid_amount,remark,is_deleted,creator_id,
updater_id,create_time,update_time
</sql>
......
......@@ -62,8 +62,8 @@
COUNT(DISTINCT c.policy_no) as totalPolicyCount
FROM commission c
LEFT JOIN (
SELECT policy_no, SUM(expected_amount) as amount
FROM commission
SELECT policy_no, SUM(amount) as amount
FROM commission_expected
GROUP BY policy_no
) e ON c.policy_no = e.policy_no
<where>
......
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