Commit 7cdefb4e by zhangxingmin

Merge remote-tracking branch 'origin/test' into test

parents e298b547 95a072fa
...@@ -298,8 +298,8 @@ public class ApiCommissionController { ...@@ -298,8 +298,8 @@ public class ApiCommissionController {
@PostMapping("/compare/records") @PostMapping("/compare/records")
@Operation(summary = "来佣比对记录列表", description = "可根据实际来佣业务id、预计来佣业务id,查询来佣比对记录") @Operation(summary = "来佣比对记录列表", description = "可根据实际来佣业务id、预计来佣业务id,查询来佣比对记录")
public Result<Page<CommissionCompareRecord>> getCommissionCompareRecords(@RequestBody CommissionCompareRecordQueryRequest queryRequest) { public Result<Page<CommissionCompareRecord>> getCommissionCompareRecords(@RequestBody CommissionCompareRecordQueryRequest queryRequest) {
if (StringUtils.isBlank(queryRequest.getCommissionBizId())) { if (StringUtils.isBlank(queryRequest.getCommissionBizId()) && StringUtils.isBlank(queryRequest.getCommissionExpectedBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "commissionBizId不能为空"); return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "commissionBizId、commissionExpectedBizId不能同时为空");
} }
// 查询来佣比对记录 // 查询来佣比对记录
QueryWrapper<CommissionCompareRecord> queryWrapper = new QueryWrapper<CommissionCompareRecord>(); QueryWrapper<CommissionCompareRecord> queryWrapper = new QueryWrapper<CommissionCompareRecord>();
......
...@@ -119,6 +119,7 @@ public class CommissionAsyncService { ...@@ -119,6 +119,7 @@ public class CommissionAsyncService {
// 预计来佣设置为部分来佣 // 预计来佣设置为部分来佣
commissionExpectedService.lambdaUpdate() commissionExpectedService.lambdaUpdate()
.set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue()) .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue())
.set(CommissionExpected::getPaidAmount, actualAmount)
.eq(CommissionExpected::getId, commissionExpected.getId()) .eq(CommissionExpected::getId, commissionExpected.getId())
.update(); .update();
// 来佣比对失败 // 来佣比对失败
...@@ -244,6 +245,8 @@ public class CommissionAsyncService { ...@@ -244,6 +245,8 @@ public class CommissionAsyncService {
// 对应预计来佣设置为部分来佣 // 对应预计来佣设置为部分来佣
commissionExpectedService.lambdaUpdate() commissionExpectedService.lambdaUpdate()
.set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue()) .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue())
.set(CommissionExpected::getPaidAmount, paidAmount)
.set(CommissionExpected::getPaidRatio, paidRatio)
.eq(CommissionExpected::getId, commissionExpected.getId()) .eq(CommissionExpected::getId, commissionExpected.getId())
.update(); .update();
// 更新已比对来佣记录 // 更新已比对来佣记录
...@@ -321,6 +324,7 @@ public class CommissionAsyncService { ...@@ -321,6 +324,7 @@ public class CommissionAsyncService {
// 预计来佣设置为部分来佣 // 预计来佣设置为部分来佣
commissionExpectedService.lambdaUpdate() commissionExpectedService.lambdaUpdate()
.set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue()) .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue())
.set(CommissionExpected::getPaidAmount, commission.getAmount())
.eq(CommissionExpected::getId, commissionExpected.getId()) .eq(CommissionExpected::getId, commissionExpected.getId())
.update(); .update();
// 保存比对记录 // 保存比对记录
...@@ -409,6 +413,8 @@ public class CommissionAsyncService { ...@@ -409,6 +413,8 @@ public class CommissionAsyncService {
// 预计来佣设置为部分来佣 // 预计来佣设置为部分来佣
commissionExpectedService.lambdaUpdate() commissionExpectedService.lambdaUpdate()
.set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue()) .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue())
.set(CommissionExpected::getPaidAmount, paidAmount)
.set(CommissionExpected::getPaidRatio, paidRatio)
.eq(CommissionExpected::getId, commissionExpected.getId()) .eq(CommissionExpected::getId, commissionExpected.getId())
.update(); .update();
// 保存比对记录 // 保存比对记录
......
...@@ -19,6 +19,12 @@ public class CommissionExpectedUpdateRequest implements Serializable { ...@@ -19,6 +19,12 @@ public class CommissionExpectedUpdateRequest implements Serializable {
private String commissionExpectedBizId; private String commissionExpectedBizId;
/** /**
* 佣金业务类型
*/
@Schema(description = "佣金业务类型")
private String commissionBizType;
/**
* 入账状态 * 入账状态
*/ */
@Schema(description = "入账状态 字典值: csf_expected_commission_status") @Schema(description = "入账状态 字典值: csf_expected_commission_status")
......
...@@ -177,10 +177,11 @@ public class Commission implements Serializable { ...@@ -177,10 +177,11 @@ public class Commission implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public BigDecimal calculateCurrentPaidRatio() { // public BigDecimal calculateCurrentPaidRatio() {
// 当前来佣比例=当前入账金额/结算汇率/保费 * 100 // // 当前来佣比例=当前入账金额/结算汇率/保费 * 100
return amount.divide(new BigDecimal(premium), 4, RoundingMode.HALF_UP) // return amount.divide(new BigDecimal(premium), 4, RoundingMode.HALF_UP)
.divide(exchangeRate, 4, RoundingMode.HALF_UP) // .divide(exchangeRate, 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100)); // .multiply(new BigDecimal(100));
} // }
} }
\ No newline at end of file
...@@ -115,6 +115,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -115,6 +115,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (ObjectUtils.isEmpty(commissionBizType)) { if (ObjectUtils.isEmpty(commissionBizType)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "应收款类型不能为空"); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "应收款类型不能为空");
} }
if (ObjectUtils.isEmpty(commissionExpected.getCommissionName())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "应收款名称不能为空");
}
if ("R".equals(commissionBizType)) { if ("R".equals(commissionBizType)) {
// 关联保单应收单,保单号不能为空 // 关联保单应收单,保单号不能为空
String policyNo = commissionExpected.getPolicyNo(); String policyNo = commissionExpected.getPolicyNo();
...@@ -129,6 +132,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -129,6 +132,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (ObjectUtils.isEmpty(commissionRatio)) { if (ObjectUtils.isEmpty(commissionRatio)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账比例不能为空"); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账比例不能为空");
} }
if (StringUtils.isBlank(commissionExpected.getCurrency())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账币种不能为空");
}
Integer commissionPeriod = commissionExpected.getCommissionPeriod(); Integer commissionPeriod = commissionExpected.getCommissionPeriod();
if (ObjectUtils.isEmpty(commissionPeriod)) { if (ObjectUtils.isEmpty(commissionPeriod)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "佣金期数不能为空"); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "佣金期数不能为空");
...@@ -268,10 +274,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -268,10 +274,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
validCommissionExpected(commissionExpected, true); validCommissionExpected(commissionExpected, true);
// 结算汇率初始值为 1 // 结算汇率初始值为 1
commissionExpected.setDefaultExchangeRate(BigDecimal.valueOf(1)); commissionExpected.setDefaultExchangeRate(BigDecimal.valueOf(1));
// 如果币种不是港币,查询默认结算汇率 // 查询默认结算汇率
if (!StringUtils.equalsIgnoreCase(addDto.getCurrency(), "HKD")) {
commissionExpected.setDefaultExchangeRate(queryDefaultExchangeRate(addDto.getCurrency())); commissionExpected.setDefaultExchangeRate(queryDefaultExchangeRate(addDto.getCurrency()));
}
// 预计总金额 // 预计总金额
if ("R".equals(addDto.getCommissionBizType())) { if ("R".equals(addDto.getCommissionBizType())) {
Policy policy = policyMap.get(addDto.getPolicyNo()); Policy policy = policyMap.get(addDto.getPolicyNo());
...@@ -289,8 +294,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -289,8 +294,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
commissionExpected.setProductLaunchBizId(policy.getProductLaunchBizId()); commissionExpected.setProductLaunchBizId(policy.getProductLaunchBizId());
} else { } else {
BigDecimal expectedAmount = addDto.getAmount() BigDecimal expectedAmount = addDto.getAmount()
.multiply(commissionExpected.getDefaultExchangeRate()) .multiply(commissionExpected.getDefaultExchangeRate());
.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP);
commissionExpected.setExpectedAmount(expectedAmount); commissionExpected.setExpectedAmount(expectedAmount);
} }
...@@ -383,26 +387,39 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -383,26 +387,39 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (commissionExpected == null) { if (commissionExpected == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "预计入账不存在"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "预计入账不存在");
} }
if (commissionExpected.getCommissionRatio() == null) {
commissionExpected.setCommissionRatio(commissionExpectedUpdateRequest.getCommissionRatio());
}
// 校验数据 // 校验数据
validCommissionExpected(commissionExpected, false); validCommissionExpected(commissionExpected, false);
// 转换为实体类 // 转换为实体类
BeanUtils.copyProperties(commissionExpectedUpdateRequest, commissionExpected); BeanUtils.copyProperties(commissionExpectedUpdateRequest, commissionExpected, "id", "commissionBizId");
// 如果修改了币种,需要更新默认结算汇率、预计入账金额 // 更新默认结算汇率
if (StringUtils.isNotBlank(commissionExpectedUpdateRequest.getCurrency()) && !StringUtils.equalsIgnoreCase(commissionExpectedUpdateRequest.getCurrency(), commissionExpected.getCurrency())) {
commissionExpected.setDefaultExchangeRate(queryDefaultExchangeRate(commissionExpectedUpdateRequest.getCurrency())); commissionExpected.setDefaultExchangeRate(queryDefaultExchangeRate(commissionExpectedUpdateRequest.getCurrency()));
commissionExpected.setExpectedAmount(commissionExpectedUpdateRequest.getAmount().multiply(commissionExpected.getDefaultExchangeRate())); // 更新预计入账金额
} if ("R".equals(commissionExpectedUpdateRequest.getCommissionBizType())) {
// 如果修改了金额,需要更新预计入账金额 // 查询保单
if (ObjectUtils.isNotEmpty(commissionExpectedUpdateRequest.getAmount()) && ObjectUtils.notEqual(commissionExpectedUpdateRequest.getAmount(), commissionExpected.getAmount())) { Policy policy = policyService.queryOne(commissionExpected.getPolicyNo());
commissionExpected.setExpectedAmount(commissionExpectedUpdateRequest.getAmount().multiply(commissionExpected.getDefaultExchangeRate())); 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 (StringUtils.isBlank(commissionExpected.getReceivableNo())) {
if (ObjectUtils.isNotEmpty(commissionExpectedUpdateRequest.getDefaultExchangeRate()) && ObjectUtils.notEqual(commissionExpectedUpdateRequest.getDefaultExchangeRate(), commissionExpected.getDefaultExchangeRate())) { commissionExpected.setReceivableNo(receivableService.generateReceivableNo(
commissionExpected.setExpectedAmount(commissionExpectedUpdateRequest.getAmount().multiply(commissionExpected.getDefaultExchangeRate())); commissionExpected.getCommissionBizType(),
commissionExpected.getReconciliationCompanyCode(),
commissionExpected.getReconciliationCompany()));
} }
commissionExpected.setUpdateTime(new Date()); commissionExpected.setUpdateTime(new Date());
// 更新预计入账 // 更新预计入账
return this.updateById(commissionExpected); return this.updateById(commissionExpected);
......
...@@ -251,13 +251,11 @@ public class CommissionExpectedVO implements Serializable { ...@@ -251,13 +251,11 @@ public class CommissionExpectedVO implements Serializable {
commissionVO.setPendingAmount(commissionExpected.getExpectedAmount().subtract(paidAmount1)); commissionVO.setPendingAmount(commissionExpected.getExpectedAmount().subtract(paidAmount1));
} }
return commissionVO; return commissionVO;
} } else {
if (commissionExpected.getAmount() != null) {
commissionVO.setPaidAmount(paidAmount1); commissionVO.setPaidAmount(paidAmount1);
commissionVO.setPendingAmount(commissionExpected.getAmount().subtract(paidAmount1)); commissionVO.setPendingAmount(commissionExpected.getAmount().subtract(paidAmount1));
return commissionVO; return commissionVO;
} }
return commissionVO;
} }
} }
...@@ -87,22 +87,18 @@ ...@@ -87,22 +87,18 @@
<!-- 总金额:统计保单预计来佣表 已入账金额:统计来佣表--> <!-- 总金额:统计保单预计来佣表 已入账金额:统计来佣表-->
<select id="getCommissionStatistics" resultType="com.yd.csf.service.vo.CommissionStatisticsVO"> <select id="getCommissionStatistics" resultType="com.yd.csf.service.vo.CommissionStatisticsVO">
SELECT SELECT
COALESCE(SUM(c.amount), 0) as totalPaidAmount, COALESCE(SUM(c.hkd_amount), 0) as totalPaidAmount,
IFNULL(e.expected_amount, 0) as expectePaidAmount, COALESCE(MAX(e.expected_amount), 0) as expectePaidAmount,
COALESCE(IFNULL(e.expected_amount, 0) - SUM(c.amount), 0) as pendingPaidAmount, COALESCE(IFNULL(e.expected_amount, 0) - SUM(c.amount), 0) as pendingPaidAmount,
COALESCE(IFNULL(e.expected_amount, 0) - SUM(c.amount), 0) as differenceAmount, COALESCE(IFNULL(e.expected_amount, 0) - SUM(c.amount), 0) as differenceAmount,
COUNT(DISTINCT c.policy_no) as totalPolicyCount, COUNT(DISTINCT c.policy_no) as totalPolicyCount,
COALESCE(SUM(CAST(c.premium AS DECIMAL(15,2))*p.payment_term), 0) as totalPremium, COALESCE(CAST(c.premium AS DECIMAL(15,2)) * p.payment_term, 0) AS totalPremium,
COUNT(DISTINCT c.reconciliation_company) as reconciliationCompanyCount, COUNT(DISTINCT c.reconciliation_company) as reconciliationCompanyCount,
COUNT(DISTINCT c.id) as totalCompareCommissionCount, COUNT(DISTINCT c.id) as totalCompareCommissionCount,
SUM(CASE WHEN c.status = '1' THEN 1 ELSE 0 END) as successCompareCommissionCount, SUM(CASE WHEN c.status = '1' THEN 1 ELSE 0 END) as successCompareCommissionCount,
SUM(CASE WHEN c.status = '2' THEN 1 ELSE 0 END) as failedCompareCommissionCount SUM(CASE WHEN c.status = '2' THEN 1 ELSE 0 END) as failedCompareCommissionCount
FROM commission c FROM commission c
LEFT JOIN ( LEFT JOIN commission_expected e ON c.commission_expected_biz_id = e.commission_expected_biz_id
SELECT policy_no, SUM(expected_amount) as expected_amount
FROM commission_expected
GROUP BY policy_no
) e ON c.policy_no = e.policy_no
LEFT JOIN policy p ON c.policy_no = p.policy_no LEFT JOIN policy p ON c.policy_no = p.policy_no
<where> <where>
<if test="commissionIdList != null and commissionIdList.size > 0"> <if test="commissionIdList != null and commissionIdList.size > 0">
......
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