Commit 94b4b63b by jianan

前端对接问题修复91

parent 0702f6a1
......@@ -19,6 +19,12 @@ public class CommissionExpectedUpdateRequest implements Serializable {
private String commissionExpectedBizId;
/**
* 佣金业务类型
*/
@Schema(description = "佣金业务类型")
private String commissionBizType;
/**
* 入账状态
*/
@Schema(description = "入账状态 字典值: csf_expected_commission_status")
......
......@@ -115,6 +115,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (ObjectUtils.isEmpty(commissionBizType)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "应收款类型不能为空");
}
if (ObjectUtils.isEmpty(commissionExpected.getCommissionName())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "应收款名称不能为空");
}
if ("R".equals(commissionBizType)) {
// 关联保单应收单,保单号不能为空
String policyNo = commissionExpected.getPolicyNo();
......@@ -129,6 +132,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (ObjectUtils.isEmpty(commissionRatio)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账比例不能为空");
}
if (StringUtils.isBlank(commissionExpected.getCurrency())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账币种不能为空");
}
Integer commissionPeriod = commissionExpected.getCommissionPeriod();
if (ObjectUtils.isEmpty(commissionPeriod)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "佣金期数不能为空");
......@@ -268,10 +274,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
validCommissionExpected(commissionExpected, true);
// 结算汇率初始值为 1
commissionExpected.setDefaultExchangeRate(BigDecimal.valueOf(1));
// 如果币种不是港币,查询默认结算汇率
if (!StringUtils.equalsIgnoreCase(addDto.getCurrency(), "HKD")) {
// 查询默认结算汇率
commissionExpected.setDefaultExchangeRate(queryDefaultExchangeRate(addDto.getCurrency()));
}
// 预计总金额
if ("R".equals(addDto.getCommissionBizType())) {
Policy policy = policyMap.get(addDto.getPolicyNo());
......@@ -289,8 +294,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
commissionExpected.setProductLaunchBizId(policy.getProductLaunchBizId());
} else {
BigDecimal expectedAmount = addDto.getAmount()
.multiply(commissionExpected.getDefaultExchangeRate())
.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP);
.multiply(commissionExpected.getDefaultExchangeRate());
commissionExpected.setExpectedAmount(expectedAmount);
}
......@@ -383,26 +387,39 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (commissionExpected == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "预计入账不存在");
}
if (commissionExpected.getCommissionRatio() == null) {
commissionExpected.setCommissionRatio(commissionExpectedUpdateRequest.getCommissionRatio());
}
// 校验数据
validCommissionExpected(commissionExpected, false);
// 转换为实体类
BeanUtils.copyProperties(commissionExpectedUpdateRequest, commissionExpected);
// 如果修改了币种,需要更新默认结算汇率、预计入账金额
if (StringUtils.isNotBlank(commissionExpectedUpdateRequest.getCurrency()) && !StringUtils.equalsIgnoreCase(commissionExpectedUpdateRequest.getCurrency(), commissionExpected.getCurrency())) {
BeanUtils.copyProperties(commissionExpectedUpdateRequest, commissionExpected, "id", "commissionBizId");
// 更新默认结算汇率
commissionExpected.setDefaultExchangeRate(queryDefaultExchangeRate(commissionExpectedUpdateRequest.getCurrency()));
commissionExpected.setExpectedAmount(commissionExpectedUpdateRequest.getAmount().multiply(commissionExpected.getDefaultExchangeRate()));
}
// 如果修改了金额,需要更新预计入账金额
if (ObjectUtils.isNotEmpty(commissionExpectedUpdateRequest.getAmount()) && ObjectUtils.notEqual(commissionExpectedUpdateRequest.getAmount(), commissionExpected.getAmount())) {
commissionExpected.setExpectedAmount(commissionExpectedUpdateRequest.getAmount().multiply(commissionExpected.getDefaultExchangeRate()));
// 更新预计入账金额
if ("R".equals(commissionExpectedUpdateRequest.getCommissionBizType())) {
// 查询保单
Policy policy = policyService.queryOne(commissionExpected.getPolicyNo());
if (policy == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保单不存在");
}
commissionExpected.setExpectedAmount(
policy.getPaymentPremium()
.multiply(commissionExpectedUpdateRequest.getCommissionRatio())
.multiply(commissionExpected.getDefaultExchangeRate())
.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP)
);
} else {
commissionExpected.setExpectedAmount(
commissionExpectedUpdateRequest.getAmount()
.multiply(commissionExpected.getDefaultExchangeRate())
);
}
// 如果修改了默认结算汇率,需要更新预计入账金额
if (ObjectUtils.isNotEmpty(commissionExpectedUpdateRequest.getDefaultExchangeRate()) && ObjectUtils.notEqual(commissionExpectedUpdateRequest.getDefaultExchangeRate(), commissionExpected.getDefaultExchangeRate())) {
commissionExpected.setExpectedAmount(commissionExpectedUpdateRequest.getAmount().multiply(commissionExpected.getDefaultExchangeRate()));
if (StringUtils.isBlank(commissionExpected.getReceivableNo())) {
commissionExpected.setReceivableNo(receivableService.generateReceivableNo(
commissionExpected.getCommissionBizType(),
commissionExpected.getReconciliationCompanyCode(),
commissionExpected.getReconciliationCompany()));
}
commissionExpected.setUpdateTime(new Date());
// 更新预计入账
return this.updateById(commissionExpected);
......
......@@ -403,15 +403,18 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
public void validateCommissionUpdateRequest(CommissionUpdateRequest commissionUpdateRequest) {
// 校验入参
if (ObjectUtils.isEmpty(commissionUpdateRequest.getCommissionBizId())) {
log.error("来佣业务id不能为空:{}", commissionUpdateRequest.getCommissionBizId());
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "来佣业务id不能为空");
}
if (ObjectUtils.isEmpty(commissionUpdateRequest.getCommissionName())) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "来佣名称不能为空");
}
if (ObjectUtils.isEmpty(commissionUpdateRequest.getCommissionType())) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "来佣类型不能为空");
}
if (ObjectUtils.isEmpty(commissionUpdateRequest.getAmount())) {
log.error("当前入账金额不能为空,来佣业务id:{}", commissionUpdateRequest.getCommissionBizId());
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "入账金额不能为空");
}
if (ObjectUtils.isEmpty(commissionUpdateRequest.getExchangeRate())) {
log.error("当前结算汇率不能为空,来佣业务id:{}", commissionUpdateRequest.getCommissionBizId());
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "结算汇率不能为空");
}
}
......
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