Commit b8053594 by zhangxingmin

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

parents bee5253a e0b2fb70
...@@ -6,6 +6,7 @@ import com.yd.common.utils.RandomStringGenerator; ...@@ -6,6 +6,7 @@ import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.model.Commission; import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.CommissionExpected; import com.yd.csf.service.model.CommissionExpected;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
...@@ -79,6 +80,10 @@ public class CommissionExcelDTO { ...@@ -79,6 +80,10 @@ public class CommissionExcelDTO {
public static Commission convertToEntityNew(CommissionExcelDTO data, String loginUserId) { public static Commission convertToEntityNew(CommissionExcelDTO data, String loginUserId) {
Commission entity = new Commission(); Commission entity = new Commission();
// 字段映射 // 字段映射
String commissionBizType = data.getCommissionBizType();
if (StringUtils.isNotBlank(commissionBizType)) {
entity.setCommissionBizType("R".equals(commissionBizType) || "关联保单应收单".equalsIgnoreCase(commissionBizType) ? "R" : "U");
}
entity.setPolicyNo(data.getPolicyNo2()); entity.setPolicyNo(data.getPolicyNo2());
entity.setCommissionPeriod(data.getCommissionPeriod2()); entity.setCommissionPeriod(data.getCommissionPeriod2());
entity.setCommissionName(data.getCommissionName2()); entity.setCommissionName(data.getCommissionName2());
......
...@@ -96,29 +96,32 @@ public class CommissionAsyncService { ...@@ -96,29 +96,32 @@ public class CommissionAsyncService {
BigDecimal expectedAmount = commissionExpected.getAmount(); BigDecimal expectedAmount = commissionExpected.getAmount();
BigDecimal actualAmount = commission.getAmount(); BigDecimal actualAmount = commission.getAmount();
if (expectedAmount.equals(actualAmount) && commissionExpected.getCurrency().equals(commission.getCurrency())) { if (expectedAmount.equals(actualAmount) && commissionExpected.getCurrency().equals(commission.getCurrency())) {
// 等于预计比例时,所有来佣设置为比对成功
commission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue());
// 创建比对记录 // 创建比对记录
compareRecords.add(commissionService.getNewCompareRecord(commission, commissionExpected, currentLoginUser)); compareRecords.add(commissionService.getNewCompareRecord(commission, commissionExpected, currentLoginUser));
// 对应预计来佣设置为已来佣 // 对应预计来佣设置为已来佣、待入账金额设置为 0
commissionExpected.setStatus(CommissionExpectedStatusEnum.COMPARED.getItemValue()); commissionExpectedService.lambdaUpdate()
// 待入账金额设置为 0 .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.COMPARED.getItemValue())
commissionExpected.setPaidAmount(BigDecimal.ZERO); .set(CommissionExpected::getPaidAmount, BigDecimal.ZERO)
// 更新预计来佣 .eq(CommissionExpected::getId, commissionExpected.getId())
commissionExpectedService.updateById(commissionExpected); .update();
// 更新已比对来佣记录 // 来佣设置为比对成功
commissionService.updateById(commission); commissionService.lambdaUpdate()
.set(Commission::getStatus, CommissionStatusEnum.COMPARE_SUCCESS.getItemValue())
.eq(Commission::getId, commission.getId())
.update();
} else { } else {
// 对应预计来佣设置为部分来佣 // 预计来佣设置为部分来佣
commissionExpected.setStatus(CommissionExpectedStatusEnum.PARTIAL.getItemValue()); commissionExpectedService.lambdaUpdate()
// 更新预计来佣 .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue())
commissionExpectedService.updateById(commissionExpected); .eq(CommissionExpected::getId, commissionExpected.getId())
.update();
// 来佣比对失败 // 来佣比对失败
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue()); commissionService.lambdaUpdate()
.set(Commission::getStatus, CommissionStatusEnum.COMPARE_FAIL.getItemValue())
.eq(Commission::getId, commission.getId())
.update();
// 创建比对记录 // 创建比对记录
compareRecords.add(commissionService.getNewCompareRecord(commission, commissionExpected, currentLoginUser)); compareRecords.add(commissionService.getNewCompareRecord(commission, commissionExpected, currentLoginUser));
// 更新已比对来佣记录
commissionService.updateById(commission);
} }
} }
// 保存比对记录 // 保存比对记录
...@@ -170,14 +173,16 @@ public class CommissionAsyncService { ...@@ -170,14 +173,16 @@ public class CommissionAsyncService {
// 校验参数 // 校验参数
boolean validFlag = false; boolean validFlag = false;
for (Commission existingCommission : existingCommissions) { for (Commission existingCommission : existingCommissions) {
if (existingCommission.getTotalPeriod().compareTo(commissionExpected.getTotalPeriod()) != 0) { Integer commissionTotalPeriod = existingCommission.getTotalPeriod();
Integer expectedTotalPeriod = commissionExpected.getTotalPeriod();
if (commissionTotalPeriod.compareTo(expectedTotalPeriod) != 0) {
existingCommission.setRemark("来佣总期数与预计来佣总期数不一致"); existingCommission.setRemark("来佣总期数与预计来佣总期数不一致");
existingCommission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue()); existingCommission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue());
validFlag = true; validFlag = true;
} }
} }
// 参数校验未通过,更新后,不执行后续计算 // 参数校验未通过,更新后,不执行后续计算
if (!validFlag) { if (validFlag) {
commissionService.updateBatchById(existingCommissions); commissionService.updateBatchById(existingCommissions);
return; return;
} }
...@@ -188,7 +193,12 @@ public class CommissionAsyncService { ...@@ -188,7 +193,12 @@ public class CommissionAsyncService {
BigDecimal paidRatio = BigDecimal.ZERO; BigDecimal paidRatio = BigDecimal.ZERO;
BigDecimal paidAmount = BigDecimal.ZERO; BigDecimal paidAmount = BigDecimal.ZERO;
for (Commission item : existingCommissions) { for (Commission item : existingCommissions) {
if (item.getCurrentCommissionRatio() == null) {
log.warn("当前来佣比例为空,临时计算当前来佣比例: {}", item);
paidRatio = paidRatio.add(item.calculateCurrentPaidRatio());
} else {
paidRatio = paidRatio.add(item.getCurrentCommissionRatio()); paidRatio = paidRatio.add(item.getCurrentCommissionRatio());
}
paidAmount = paidAmount.add(item.getAmount()); paidAmount = paidAmount.add(item.getAmount());
} }
...@@ -214,16 +224,16 @@ public class CommissionAsyncService { ...@@ -214,16 +224,16 @@ public class CommissionAsyncService {
// 创建比对记录 // 创建比对记录
compareRecords.add(commissionService.getNewCompareRecord(existingCommission, commissionExpected, currentLoginUser)); compareRecords.add(commissionService.getNewCompareRecord(existingCommission, commissionExpected, currentLoginUser));
} }
// 对应预计来佣设置为已来佣 // 更新预计来佣状态为已来佣、已入账金额、已入账比例
commissionExpected.setStatus(CommissionExpectedStatusEnum.COMPARED.getItemValue()); commissionExpectedService.lambdaUpdate()
// 待入账金额设置为 0 .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.COMPARED.getItemValue())
commissionExpected.setPaidAmount(paidAmount.setScale(2, RoundingMode.HALF_UP)); .set(CommissionExpected::getPaidAmount, paidAmount.setScale(2, RoundingMode.HALF_UP))
commissionExpected.setPaidRatio(paidRatio); .set(CommissionExpected::getPaidRatio, paidRatio)
// 更新预计来佣 .eq(CommissionExpected::getId, commissionExpected.getId())
commissionExpectedService.updateById(commissionExpected); .update();
// 更新已比对来佣记录 // 更新已比对来佣记录
if (CollectionUtils.isNotEmpty(existingCommissions)) { if (CollectionUtils.isNotEmpty(existingCommissions)) {
commissionService.updateBatchById(existingCommissions); commissionService.updateStatusBatchById(existingCommissions);
} }
// 保存比对记录 // 保存比对记录
commissionCompareRecordService.saveBatch(compareRecords); commissionCompareRecordService.saveBatch(compareRecords);
...@@ -235,12 +245,13 @@ public class CommissionAsyncService { ...@@ -235,12 +245,13 @@ public class CommissionAsyncService {
compareRecords.add(commissionService.getNewCompareRecord(existingCommission, commissionExpected, currentLoginUser)); compareRecords.add(commissionService.getNewCompareRecord(existingCommission, commissionExpected, currentLoginUser));
} }
// 对应预计来佣设置为部分来佣 // 对应预计来佣设置为部分来佣
commissionExpected.setStatus(CommissionExpectedStatusEnum.PARTIAL.getItemValue()); commissionExpectedService.lambdaUpdate()
// 更新预计来佣 .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue())
commissionExpectedService.updateById(commissionExpected); .eq(CommissionExpected::getId, commissionExpected.getId())
.update();
// 更新已比对来佣记录 // 更新已比对来佣记录
if (CollectionUtils.isNotEmpty(existingCommissions)) { if (CollectionUtils.isNotEmpty(existingCommissions)) {
commissionService.updateBatchById(existingCommissions); commissionService.updateStatusBatchById(existingCommissions);
} }
// 保存比对记录 // 保存比对记录
commissionCompareRecordService.saveBatch(compareRecords); commissionCompareRecordService.saveBatch(compareRecords);
...@@ -285,27 +296,30 @@ public class CommissionAsyncService { ...@@ -285,27 +296,30 @@ public class CommissionAsyncService {
// 计算比对状态 // 计算比对状态
if (commission.getAmount().compareTo(commissionExpected.getAmount()) == 0) { if (commission.getAmount().compareTo(commissionExpected.getAmount()) == 0) {
// 等于预计金额时,所有来佣设置为比对成功 // 等于预计金额时,来佣设置为比对成功
commission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue()); commissionService.lambdaUpdate()
// 更新来佣 .set(Commission::getStatus, CommissionStatusEnum.COMPARE_SUCCESS.getItemValue())
commissionService.updateById(commission); .eq(Commission::getId, commission.getId())
// 对应预计来佣设置为已来佣 .update();
commissionExpected.setStatus(CommissionExpectedStatusEnum.COMPARED.getItemValue()); // 预计来佣设置为已来佣、待入账金额设置为 0
// 待入账金额设置为 0 commissionExpectedService.lambdaUpdate()
commissionExpected.setPaidAmount(BigDecimal.ZERO); .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.COMPARED.getItemValue())
// 更新预计来佣 .set(CommissionExpected::getPaidAmount, BigDecimal.ZERO)
commissionExpectedService.updateById(commissionExpected); .eq(CommissionExpected::getId, commissionExpected.getId())
.update();
// 保存比对记录 // 保存比对记录
commissionService.saveCompareRecord(commission, commissionExpected, currentLoginUser); commissionService.saveCompareRecord(commission, commissionExpected, currentLoginUser);
} else { } else {
// 不等于预计比例时,设置为比对失败 // 不等于预计比例时,设置为比对失败
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue()); commissionService.lambdaUpdate()
// 更新来佣 .set(Commission::getStatus, CommissionStatusEnum.COMPARE_FAIL.getItemValue())
commissionService.updateById(commission); .eq(Commission::getId, commission.getId())
// 对应预计来佣设置为部分来佣 .update();
commissionExpected.setStatus(CommissionExpectedStatusEnum.PARTIAL.getItemValue()); // 预计来佣设置为部分来佣
// 更新预计来佣 commissionExpectedService.lambdaUpdate()
commissionExpectedService.updateById(commissionExpected); .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue())
.eq(CommissionExpected::getId, commissionExpected.getId())
.update();
// 保存比对记录 // 保存比对记录
commissionService.saveCompareRecord(commission, commissionExpected, currentLoginUser); commissionService.saveCompareRecord(commission, commissionExpected, currentLoginUser);
} }
...@@ -375,28 +389,30 @@ public class CommissionAsyncService { ...@@ -375,28 +389,30 @@ public class CommissionAsyncService {
existingCommission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue()); existingCommission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue());
existingCommission.setTotalPeriod(commissionExpected.getTotalPeriod()); existingCommission.setTotalPeriod(commissionExpected.getTotalPeriod());
} }
// 对应预计来佣设置为已来佣 // 对应预计来佣设置为已来佣、待入账金额设置为 0
commissionExpected.setStatus(CommissionExpectedStatusEnum.COMPARED.getItemValue()); commissionExpectedService.lambdaUpdate()
// 待入账金额设置为 0 .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.COMPARED.getItemValue())
commissionExpected.setPaidAmount(paidAmount.setScale(4, RoundingMode.HALF_UP)); .set(CommissionExpected::getPaidAmount, paidAmount.setScale(4, RoundingMode.HALF_UP))
commissionExpected.setPaidRatio(paidRatio); .set(CommissionExpected::getPaidRatio, paidRatio)
// 更新预计来佣 .eq(CommissionExpected::getId, commissionExpected.getId())
commissionExpectedService.updateById(commissionExpected); .update();
// 更新已比对来佣记录 // 更新已比对来佣记录
if (CollectionUtils.isNotEmpty(existingCommissions)) { if (CollectionUtils.isNotEmpty(existingCommissions)) {
commissionService.updateBatchById(existingCommissions); commissionService.updateStatusBatchById(existingCommissions);
} }
// 保存比对记录 // 保存比对记录
commissionService.saveCompareRecord(commission, commissionExpected, currentLoginUser); commissionService.saveCompareRecord(commission, commissionExpected, currentLoginUser);
} else { } else {
// 不等于预计比例时,设置为比对失败 // 不等于预计比例时,设置为比对失败
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue()); commissionService.lambdaUpdate()
// 更新来佣 .set(Commission::getStatus, CommissionStatusEnum.COMPARE_FAIL.getItemValue())
commissionService.updateById(commission); .eq(Commission::getId, commission.getId())
// 对应预计来佣设置为部分来佣 .update();
commissionExpected.setStatus(CommissionExpectedStatusEnum.PARTIAL.getItemValue()); // 预计来佣设置为部分来佣
// 更新预计来佣 commissionExpectedService.lambdaUpdate()
commissionExpectedService.updateById(commissionExpected); .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue())
.eq(CommissionExpected::getId, commissionExpected.getId())
.update();
// 保存比对记录 // 保存比对记录
commissionService.saveCompareRecord(commission, commissionExpected, currentLoginUser); commissionService.saveCompareRecord(commission, commissionExpected, currentLoginUser);
} }
......
package com.yd.csf.service.dao; package com.yd.csf.service.dao;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yd.csf.service.dto.CommissionBindPolicyBrokerDto; import com.yd.csf.service.dto.CommissionBindPolicyBrokerDto;
import com.yd.csf.service.dto.CommissionDto; import com.yd.csf.service.dto.CommissionDto;
import com.yd.csf.service.model.Commission; import com.yd.csf.service.model.Commission;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.csf.service.vo.CommissionStatisticsVO; import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -22,6 +20,8 @@ public interface CommissionMapper extends BaseMapper<Commission> { ...@@ -22,6 +20,8 @@ public interface CommissionMapper extends BaseMapper<Commission> {
List<CommissionBindPolicyBrokerDto> queryCommissionBindPolicyBrokerList(@Param("dto") CommissionDto dto); List<CommissionBindPolicyBrokerDto> queryCommissionBindPolicyBrokerList(@Param("dto") CommissionDto dto);
CommissionStatisticsVO getCommissionStatistics(@Param("commissionIdList") List<Long> commissionIdList); CommissionStatisticsVO getCommissionStatistics(@Param("commissionIdList") List<Long> commissionIdList);
int updateStatusBatchById(@Param("list") List<Commission> list);
} }
......
...@@ -11,9 +11,9 @@ import java.util.Date; ...@@ -11,9 +11,9 @@ import java.util.Date;
@Data @Data
public class CommissionUpdateRequest implements Serializable { public class CommissionUpdateRequest implements Serializable {
/** /**
* 保单来佣业务id * 保单入账业务id
*/ */
@Schema(description = "保单来佣业务id", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "保单入账业务id", requiredMode = Schema.RequiredMode.REQUIRED)
private String commissionBizId; private String commissionBizId;
/** /**
...@@ -29,12 +29,6 @@ public class CommissionUpdateRequest implements Serializable { ...@@ -29,12 +29,6 @@ public class CommissionUpdateRequest implements Serializable {
private String policyNo; private String policyNo;
/** /**
* 保费
*/
@Schema(description = "保费")
private String premium;
/**
* 对账公司 * 对账公司
*/ */
@Schema(description = "对账公司") @Schema(description = "对账公司")
...@@ -47,9 +41,9 @@ public class CommissionUpdateRequest implements Serializable { ...@@ -47,9 +41,9 @@ public class CommissionUpdateRequest implements Serializable {
private String reconciliationCompanyBizId; private String reconciliationCompanyBizId;
/** /**
* 来佣比对状态 * 入账比对状态
*/ */
// @Schema(description = "来佣比对状态 1=比对成功 2=比对失败") // @Schema(description = "入账比对状态 1=比对成功 2=比对失败")
// private String status; // private String status;
/** /**
...@@ -59,33 +53,33 @@ public class CommissionUpdateRequest implements Serializable { ...@@ -59,33 +53,33 @@ public class CommissionUpdateRequest implements Serializable {
private Integer commissionPeriod; private Integer commissionPeriod;
/** /**
* 总来佣期数 * 总入账期数
*/ */
@Schema(description = "总来佣期数") @Schema(description = "总入账期数")
private Integer totalPeriod; private Integer totalPeriod;
/** /**
* 来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等) * 入账项目名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/ */
@Schema(description = "来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)") @Schema(description = "入账项目名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionName; private String commissionName;
/** /**
* 来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等) * 入账项目类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/ */
@Schema(description = "来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)") @Schema(description = "入账项目类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionType; private String commissionType;
/** /**
* 来佣金额 * 入账金额
*/ */
@Schema(description = "来佣金额") @Schema(description = "入账金额")
private BigDecimal amount; private BigDecimal amount;
/** /**
* 来佣币种 * 入账币种
*/ */
@Schema(description = "来佣币种") @Schema(description = "入账币种")
private String currency; private String currency;
/** /**
...@@ -95,9 +89,9 @@ public class CommissionUpdateRequest implements Serializable { ...@@ -95,9 +89,9 @@ public class CommissionUpdateRequest implements Serializable {
private String exchangeRate; private String exchangeRate;
/** /**
* 来佣日期 * 入账日期
*/ */
@Schema(description = "来佣日期") @Schema(description = "入账日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date commissionDate; private Date commissionDate;
......
...@@ -9,6 +9,7 @@ public enum CommissionStatusEnum { ...@@ -9,6 +9,7 @@ public enum CommissionStatusEnum {
WAIT("未比对","0"), WAIT("未比对","0"),
COMPARE_SUCCESS("比对成功","1"), COMPARE_SUCCESS("比对成功","1"),
COMPARE_FAIL("比对失败","2"), COMPARE_FAIL("比对失败","2"),
MATCH_FAILED("未查询到预计来佣记录","3");
; ;
//字典项标签(名称) //字典项标签(名称)
......
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date; import java.util.Date;
import lombok.Data; import lombok.Data;
...@@ -195,4 +196,11 @@ public class Commission implements Serializable { ...@@ -195,4 +196,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() {
// 当前来佣比例=当前入账金额/结算汇率/保费 * 100
return amount.divide(new BigDecimal(premium), 4, RoundingMode.HALF_UP)
.divide(new BigDecimal(exchangeRate), 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100));
}
} }
\ No newline at end of file
...@@ -51,4 +51,6 @@ public interface CommissionService extends IService<Commission> { ...@@ -51,4 +51,6 @@ public interface CommissionService extends IService<Commission> {
List<Commission> addCommissionBatch(List<CommissionAddRequest> customerAddRequestList); List<Commission> addCommissionBatch(List<CommissionAddRequest> customerAddRequestList);
Boolean addToExpected(AddToExpectedCommissionRequest addToExpectedCommissionRequest); Boolean addToExpected(AddToExpectedCommissionRequest addToExpectedCommissionRequest);
int updateStatusBatchById(List<Commission> existingCommissions);
} }
...@@ -15,6 +15,7 @@ import com.yd.common.exception.BusinessException; ...@@ -15,6 +15,7 @@ import com.yd.common.exception.BusinessException;
import com.yd.common.utils.RandomStringGenerator; import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.component.CommissionAsyncService; import com.yd.csf.service.component.CommissionAsyncService;
import com.yd.csf.service.dto.*; import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.CommissionStatusEnum;
import com.yd.csf.service.enums.FortuneStatusEnum; import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.model.*; import com.yd.csf.service.model.*;
import com.yd.csf.service.service.*; import com.yd.csf.service.service.*;
...@@ -210,11 +211,11 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -210,11 +211,11 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
BigDecimal amount = commission.getAmount(); BigDecimal amount = commission.getAmount();
BigDecimal requestAmount = commissionUpdateRequest.getAmount(); BigDecimal requestAmount = commissionUpdateRequest.getAmount();
// 1. 执行主更新事务(这个方法将在当前事务中执行)
// 计算当前来佣比例 // 计算当前来佣比例
BigDecimal currentCommissionRatio = this.calculateCurrentCommissionRatio( BigDecimal currentCommissionRatio = this.calculateCurrentCommissionRatio(
commissionUpdateRequest.getAmount(), commission.getPremium(),
commissionUpdateRequest.getPremium(), requestAmount,
commissionUpdateRequest.getCurrency(),
commissionUpdateRequest.getExchangeRate()); commissionUpdateRequest.getExchangeRate());
// 获取当前登录用户 // 获取当前登录用户
...@@ -261,18 +262,14 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -261,18 +262,14 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
log.error("来佣业务id不能为空:{}", commissionUpdateRequest.getCommissionBizId()); log.error("来佣业务id不能为空:{}", commissionUpdateRequest.getCommissionBizId());
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "来佣业务id不能为空"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "来佣业务id不能为空");
} }
if (ObjectUtils.isEmpty(commissionUpdateRequest.getPremium())) { // if (ObjectUtils.isEmpty(commissionUpdateRequest.getAmount())) {
log.error("保费不能为空:{}", commissionUpdateRequest.getPremium()); // log.error("当前入账金额不能为空,来佣业务id:{}", commissionUpdateRequest.getCommissionBizId());
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保费不能为空"); // throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "当前入账金额不能为空");
} // }
if (ObjectUtils.isEmpty(commissionUpdateRequest.getAmount())) { // if (ObjectUtils.isEmpty(commissionUpdateRequest.getExchangeRate())) {
log.error("当前入账金额不能为空,来佣业务id:{}", commissionUpdateRequest.getCommissionBizId()); // log.error("当前结算汇率不能为空,来佣业务id:{}", commissionUpdateRequest.getCommissionBizId());
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "当前入账金额不能为空"); // throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "当前结算汇率不能为空");
} // }
if (ObjectUtils.isEmpty(commissionUpdateRequest.getExchangeRate())) {
log.error("当前结算汇率不能为空,来佣业务id:{}", commissionUpdateRequest.getCommissionBizId());
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "当前结算汇率不能为空");
}
} }
...@@ -570,9 +567,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -570,9 +567,9 @@ 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));
} }
public BigDecimal calculateCurrentCommissionRatio(BigDecimal amount, String premium, String exchangeRate) { public BigDecimal calculateCurrentCommissionRatio(String premium, BigDecimal amount, String exchangeRate, String currency) {
if (ObjectUtils.isEmpty(premium)) { if (ObjectUtils.isEmpty(premium)) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保费不能为空"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保单保费不能为空");
} }
if (ObjectUtils.isEmpty(amount)) { if (ObjectUtils.isEmpty(amount)) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "当前入账金额不能为空"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "当前入账金额不能为空");
...@@ -677,6 +674,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -677,6 +674,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
log.warn("新增入账:未查询到预计来佣记录, policyNo: {}, commissionPeriod: {}, commissionName: {}, currency: {}", log.warn("新增入账:未查询到预计来佣记录, policyNo: {}, commissionPeriod: {}, commissionName: {}, currency: {}",
request.getPolicyNo(), request.getCommissionPeriod(), request.getCommissionName(), request.getCurrency()); request.getPolicyNo(), request.getCommissionPeriod(), request.getCommissionName(), request.getCurrency());
commission.setRemark("未查询到预计来佣记录"); commission.setRemark("未查询到预计来佣记录");
commission.setStatus(CommissionStatusEnum.MATCH_FAILED.getItemValue());
} }
} }
commissionList.add(commission); commissionList.add(commission);
...@@ -750,6 +748,11 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -750,6 +748,11 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return commissionExpectedService.save(expected); return commissionExpectedService.save(expected);
} }
@Override
public int updateStatusBatchById(List<Commission> existingCommissions) {
return this.baseMapper.updateStatusBatchById(existingCommissions);
}
/** /**
* 查询列表 * 查询列表
* *
......
...@@ -167,7 +167,7 @@ public class CommissionVO implements Serializable { ...@@ -167,7 +167,7 @@ public class CommissionVO implements Serializable {
/** /**
* 比对状态 * 比对状态
*/ */
@Schema(description = "比对状态 0=未比对 1=比对成功 2=比对失败 字典值: csf_commission_status") @Schema(description = "比对状态 0=未比对 1=比对成功 2=比对失败 3=未匹配到预计入账记录 字典值: csf_commission_status")
private String commissionStatus; private String commissionStatus;
/** /**
......
...@@ -48,6 +48,22 @@ ...@@ -48,6 +48,22 @@
updater_id,create_time,update_time updater_id,create_time,update_time
</sql> </sql>
<update id="updateStatusBatchById">
UPDATE commission
<set>
status = CASE id
<foreach collection="list" item="item">
WHEN #{item.id} THEN #{item.status}
</foreach>
END,
update_time = NOW()
</set>
WHERE id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item.id}
</foreach>
</update>
<select id="queryCommissionBindPolicyBrokerList" <select id="queryCommissionBindPolicyBrokerList"
resultType="com.yd.csf.service.dto.CommissionBindPolicyBrokerDto"> resultType="com.yd.csf.service.dto.CommissionBindPolicyBrokerDto">
select c.*,p.*,pb.* select c.*,p.*,pb.*
......
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