Commit 250ca9c6 by jianan

新单跟进89

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