Commit f33301bd by jianan

新单跟进91

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