Commit 250ca9c6 by jianan

新单跟进89

parent 5a185e4a
......@@ -153,7 +153,7 @@ public class ApiCommissionController {
CommissionExpected expected = getCommissionExpected(expectedList, policyNo, commissionPeriod, commissionName);
if (expected != null) {
commissionService.compareWithExpected(commission, expected);
commissionService.compareWithExpected(commission.getPremium(), commission, expected);
} else {
// 预计来佣不存在,来佣状态设置为 比对失败
commission.setStatus("2");
......
......@@ -159,14 +159,14 @@ public class ApiPolicyFollowController {
// 获取当前登录用户的ID
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString();
// 保存预计来佣
List<CommissionExpected> commissionExpectedList = new ArrayList<>();
for (CommissionExcelDTO commissionExcelDTO : dataList) {
CommissionExpected commissionExpected = CommissionExcelDTO.convertToCommissionExpectedObj(commissionExcelDTO, loginUserId);
commissionExpected.setReconciliationCompanyBizId(reconciliationCompanyMap.get(commissionExcelDTO.getReconciliationCompany()));
commissionExpectedList.add(commissionExpected);
}
commissionExpectedService.saveBatch(commissionExpectedList);
// todo 保存预计来佣, 查询产品获取预计来佣比例
// List<CommissionExpected> commissionExpectedList = new ArrayList<>();
// for (CommissionExcelDTO commissionExcelDTO : dataList) {
// CommissionExpected commissionExpected = CommissionExcelDTO.convertToCommissionExpectedObj(commissionExcelDTO, loginUserId);
// commissionExpected.setReconciliationCompanyBizId(reconciliationCompanyMap.get(commissionExcelDTO.getReconciliationCompany()));
// commissionExpectedList.add(commissionExpected);
// }
// commissionExpectedService.saveBatch(commissionExpectedList);
return Result.success(true);
}
......
......@@ -17,6 +17,9 @@ public class CommissionExcelDTO {
@ExcelProperty("保单号")
private String policyNo;
@ExcelProperty("保费")
private String premium;
@ExcelProperty("对账公司")
private String reconciliationCompany;
......@@ -35,6 +38,9 @@ public class CommissionExcelDTO {
@ExcelProperty("来佣币种")
private String currency;
@ExcelProperty("结算汇率")
private String exchangeRate;
@ExcelProperty("来佣日期")
private Date commissionDate;
......@@ -48,6 +54,7 @@ public class CommissionExcelDTO {
Commission entity = new Commission();
// 字段映射
entity.setPolicyNo(data.getPolicyNo());
entity.setPremium(data.getPremium());
entity.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode()));
entity.setReconciliationCompany(data.getReconciliationCompany());
entity.setCommissionPeriod(data.getCommissionPeriod());
......@@ -55,6 +62,7 @@ public class CommissionExcelDTO {
entity.setCommissionName(data.getCommissionName());
entity.setAmount(data.getAmount());
entity.setCurrency(data.getCurrency());
entity.setExchangeRate(data.getExchangeRate());
entity.setCommissionDate(data.getCommissionDate());
entity.setRemark(data.getRemark());
entity.setStatus(null);
......@@ -81,8 +89,9 @@ public class CommissionExcelDTO {
entity.setCommissionPeriod(data.getCommissionPeriod());
entity.setTotalPeriod(data.getTotalPeriod());
entity.setCommissionName(data.getCommissionName());
entity.setAmount(data.getAmount());
entity.setCommissionRatio(data.getAmount());
entity.setCurrency(data.getCurrency());
entity.setCommissionRatio(null);
entity.setCommissionDate(data.getCommissionDate());
entity.setRemark(data.getRemark());
entity.setStatus("0");
......
......@@ -16,6 +16,12 @@ public class CommissionAddRequest implements Serializable {
@Schema(description = "保单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyNo;
/**
* 保费
*/
@Schema(description = "保费", requiredMode = Schema.RequiredMode.REQUIRED)
private String premium;
/**
* 对账公司
*/
......
......@@ -63,10 +63,10 @@ public class CommissionExpectedAddDto {
private String commissionType;
/**
* 来佣金额
* 来佣比例
*/
@Schema(description = "来佣金额")
private BigDecimal amount;
@Schema(description = "来佣比例")
private BigDecimal commissionRatio;
/**
* 来佣币种
......
......@@ -21,6 +21,12 @@ public class CommissionUpdateRequest implements Serializable {
@Schema(description = "保单号")
private String policyNo;
/**
* 保费
*/
@Schema(description = "保费")
private String premium;
/**
* 对账公司
*/
......
......@@ -31,6 +31,11 @@ public class Commission implements Serializable {
*/
private String policyNo;
/**
* 保费
*/
private String premium;
/**
* 对账公司
*/
......@@ -87,6 +92,26 @@ public class Commission implements Serializable {
private String status;
/**
* 预计来佣业务id
*/
private String commissionExpectedBizId;
/**
* 总金额
*/
private BigDecimal expectedAmount;
/**
* 已入账金额
*/
private BigDecimal paidAmount;
/**
* 待入账金额
*/
private BigDecimal pendingAmount;
/**
* 通用备注
*/
private String remark;
......
......@@ -66,9 +66,9 @@ public class CommissionExpected implements Serializable {
private String commissionType;
/**
* 来佣金额
* 来佣比例
*/
private BigDecimal amount;
private BigDecimal commissionRatio;
/**
* 来佣币种
......@@ -86,6 +86,11 @@ public class CommissionExpected implements Serializable {
private String status;
/**
* 已入账金额
*/
private BigDecimal paidAmount;
/**
* 通用备注
*/
private String remark;
......
......@@ -32,7 +32,7 @@ public interface CommissionService extends IService<Commission> {
Commission getByCommissionBizId(String commissionBizId);
void compareWithExpected(Commission commission, CommissionExpected expected);
void compareWithExpected(String premium, Commission commission, CommissionExpected expected);
List<Commission> queryList(CommissionDto dto);
......
......@@ -70,9 +70,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (StringUtils.isBlank(commissionName)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "来佣名称不能为空");
}
BigDecimal amount = commissionExpected.getAmount();
if (ObjectUtils.isEmpty(amount)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "来佣金额不能为空");
BigDecimal commissionRatio = commissionExpected.getCommissionRatio();
if (ObjectUtils.isEmpty(commissionRatio)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "来佣比例不能为空");
}
Integer commissionPeriod = commissionExpected.getCommissionPeriod();
if (ObjectUtils.isEmpty(commissionPeriod)) {
......
......@@ -58,6 +58,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
private IExpectedFortuneService iExpectedFortuneService;
@Resource
private CommissionEditRecordService commissionEditRecordService;
@Resource
private CommissionCompareRecordService commissionCompareRecordService;
@Override
......@@ -126,7 +128,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
CommissionExpected commissionExpected = queryByCommission(commission);
if (commissionExpected != null) {
// 对比预计来佣
compareWithExpected(commission, commissionExpected);
compareWithExpected(commission.getPremium(), commission, commissionExpected);
commissionExpectedService.updateById(commissionExpected);
} else {
// 预计来佣不存在,来佣状态设置为 比对失败
......@@ -357,7 +359,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
CommissionExpected commissionExpected = queryByCommission(commission);
if (commissionExpected != null) {
// 对比预计来佣
compareWithExpected(commission, commissionExpected);
compareWithExpected(commissionAddRequest.getPremium(), commission, commissionExpected);
commissionExpectedService.updateById(commissionExpected);
} else {
// 预计来佣不存在,来佣状态设置为 比对失败
......@@ -378,10 +380,23 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return this.getOne(new QueryWrapper<Commission>().eq("commission_biz_id", commissionBizId));
}
/**
* 比对时, 保费*预计来佣比例*结算汇率,和实际入账金额对比
*
* @param commission
* @param expected
*/
@Override
public void compareWithExpected(Commission commission, CommissionExpected expected) {
public void compareWithExpected(String premium, Commission commission, CommissionExpected expected) {
if (expected != null) {
if (expected.getAmount().compareTo(commission.getAmount()) == 0) {
// 预计总金额
BigDecimal expectedAmount = new BigDecimal(premium)
.multiply(expected.getCommissionRatio())
.multiply(new BigDecimal(commission.getExchangeRate()));
// 已入账金额
BigDecimal paidAmount = commission.getAmount().add(expected.getPaidAmount());
if (paidAmount.compareTo(expectedAmount) == 0) {
// 一致,来佣状态设置为 比对成功
commission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue());
// 预计来佣的状态设置为 已来佣
......@@ -391,14 +406,33 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue());
expected.setStatus(CommissionExpectedStatusEnum.PARTIAL.getItemValue());
}
} else {
// 设置来佣相关字段
commission.setCommissionExpectedBizId(expected.getCommissionExpectedBizId());
commission.setExpectedAmount(expectedAmount.setScale(2, RoundingMode.HALF_UP));
commission.setPaidAmount(paidAmount.setScale(2, RoundingMode.HALF_UP));
// 待入账金额 = 预计来佣总金额 - 已入账金额
commission.setPendingAmount(expectedAmount.subtract(paidAmount).setScale(2, RoundingMode.HALF_UP));
// 预计来佣的已入账金额更新为 已入账金额
expected.setPaidAmount(paidAmount.setScale(2, RoundingMode.HALF_UP));
// 保存比对记录
saveCompareRecord(commission, expected);
}
}
private void saveCompareRecord(Commission commission, CommissionExpected expected) {
CommissionCompareRecord commissionCompareRecord = new CommissionCompareRecord();
commissionCompareRecord.setCommissionExpectedBizId(expected.getCommissionExpectedBizId());
commissionCompareRecord.setCommissionBizId(commission.getCommissionBizId());
commissionCompareRecord.setCommissionPeriod(commission.getCommissionPeriod());
commissionCompareRecord.setTotalPeriod(commission.getTotalPeriod());
commissionCompareRecord.setAmount(commission.getAmount());
commissionCompareRecord.setCurrency(commission.getCurrency());
commissionCompareRecord.setExchangeRate(commission.getExchangeRate());
commissionCompareRecord.setStatus(commission.getStatus());
commissionCompareRecord.setRemark(commission.getRemark());
commissionCompareRecord.setCreateTime(commission.getCreateTime());
commissionCompareRecordService.save(commissionCompareRecord);
}
/**
......
......@@ -14,10 +14,11 @@
<result property="totalPeriod" column="total_period" />
<result property="commissionName" column="commission_name" />
<result property="commissionType" column="commission_type" />
<result property="amount" column="amount" />
<result property="commissionRatio" column="commission_ratio" />
<result property="currency" column="currency" />
<result property="commissionDate" column="commission_date" />
<result property="status" column="status" />
<result property="paidAmount" column="paid_amount" />
<result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" />
<result property="creatorId" column="creator_id" />
......@@ -28,8 +29,8 @@
<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,amount,currency,
commission_date,status,remark,is_deleted,creator_id,
total_period,commission_name,commission_type,commission_ratio,currency,
commission_date,status,paid_amount,remark,is_deleted,creator_id,
updater_id,create_time,update_time
</sql>
</mapper>
......@@ -8,6 +8,7 @@
<id property="id" column="id" />
<result property="commissionBizId" column="commission_biz_id" />
<result property="policyNo" column="policy_no" />
<result property="premium" column="premium" />
<result property="reconciliationCompany" column="reconciliation_company" />
<result property="reconciliationCompanyBizId" column="reconciliation_company_biz_id" />
<result property="commissionPeriod" column="commission_period" />
......@@ -27,7 +28,7 @@
</resultMap>
<sql id="Base_Column_List">
id,commission_biz_id,policy_no,reconciliation_company,reconciliation_company_biz_id,commission_period,
id,commission_biz_id,policy_no,premium,reconciliation_company,reconciliation_company_biz_id,commission_period,
total_period,commission_name,commission_type,amount,currency,
commission_date,status,remark,is_deleted,creator_id,
updater_id,create_time,update_time
......
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