Commit a85ad6ee by jianan

前端对接问题修复82

parent 4471bf94
...@@ -192,14 +192,15 @@ public class ApiCommissionController { ...@@ -192,14 +192,15 @@ public class ApiCommissionController {
// errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行存在空字段"); // errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行存在空字段");
// } // }
if (excelDTO.getAmount2() == null) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行, 来佣金额不能为空");
}
if ("关联保单应收单".equals(excelDTO.getCommissionBizType())) { if ("关联保单应收单".equals(excelDTO.getCommissionBizType())) {
if (StringUtils.isBlank(excelDTO.getPolicyNo())) { if (StringUtils.isBlank(excelDTO.getPolicyNo())) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行关联保单应收单, 保单号不能为空"); errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行关联保单应收单, 保单号不能为空");
} }
if (excelDTO.getAmount2() == null) { if (ObjectUtils.isEmpty(excelDTO.getExchangeRate2())) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行关联保单应收单, 来佣金额不能为空");
}
if (StringUtils.isBlank(excelDTO.getExchangeRate2())) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行关联保单应收单, 结算汇率不能为空"); errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行关联保单应收单, 结算汇率不能为空");
} }
} }
......
package com.yd.csf.api.dto; package com.yd.csf.api.dto;
import cn.hutool.core.convert.Convert;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.yd.common.enums.CommonEnum; import com.yd.common.enums.CommonEnum;
import com.yd.common.utils.RandomStringGenerator; import com.yd.common.utils.RandomStringGenerator;
...@@ -10,6 +11,7 @@ import lombok.Data; ...@@ -10,6 +11,7 @@ import lombok.Data;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date; import java.util.Date;
@Data @Data
...@@ -72,7 +74,7 @@ public class CommissionExcelDTO { ...@@ -72,7 +74,7 @@ public class CommissionExcelDTO {
private String commissionName2; private String commissionName2;
@ExcelProperty("结算汇率(实)") @ExcelProperty("结算汇率(实)")
private String exchangeRate2; private BigDecimal exchangeRate2;
/** /**
...@@ -85,13 +87,14 @@ public class CommissionExcelDTO { ...@@ -85,13 +87,14 @@ public class CommissionExcelDTO {
if (StringUtils.isNotBlank(commissionBizType)) { if (StringUtils.isNotBlank(commissionBizType)) {
entity.setCommissionBizType("R".equals(commissionBizType) || "关联保单应收单".equalsIgnoreCase(commissionBizType) ? "R" : "U"); entity.setCommissionBizType("R".equals(commissionBizType) || "关联保单应收单".equalsIgnoreCase(commissionBizType) ? "R" : "U");
} }
entity.setPolicyNo(data.getPolicyNo2()); entity.setPolicyNo("U".equals(entity.getCommissionBizType()) ? null : data.getPolicyNo2());
entity.setCommissionPeriod(data.getCommissionPeriod2()); entity.setCommissionPeriod(data.getCommissionPeriod2());
entity.setCommissionName(data.getCommissionName2()); entity.setCommissionName(data.getCommissionName2());
entity.setAmount(data.getAmount2()); entity.setAmount(data.getAmount2());
entity.setCurrency(CurrencyEnum.getEnumByItemLabel(data.getCurrency2())); entity.setCurrency(CurrencyEnum.getEnumByItemLabel(data.getCurrency2()));
entity.setExchangeRate(data.getExchangeRate2()); entity.setExchangeRate(data.getExchangeRate2());
entity.setCommissionDate(data.getCommissionDate2()); entity.setCommissionDate(data.getCommissionDate2());
entity.setHkdAmount(data.getAmount2().multiply(data.getExchangeRate2()));
entity.setRemark(data.getRemark()); entity.setRemark(data.getRemark());
entity.setStatus(null); entity.setStatus(null);
entity.setCreatorId(loginUserId); entity.setCreatorId(loginUserId);
...@@ -117,7 +120,7 @@ public class CommissionExcelDTO { ...@@ -117,7 +120,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.setExchangeRate(Convert.toBigDecimal(data.getExchangeRate()));
entity.setCommissionDate(data.getCommissionDate()); entity.setCommissionDate(data.getCommissionDate());
entity.setRemark(data.getRemark()); entity.setRemark(data.getRemark());
entity.setStatus(null); entity.setStatus(null);
......
...@@ -26,6 +26,7 @@ import java.math.RoundingMode; ...@@ -26,6 +26,7 @@ import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
...@@ -41,11 +42,11 @@ public class CommissionAsyncService { ...@@ -41,11 +42,11 @@ public class CommissionAsyncService {
// @Async("commonAsyncExecutor") // @Async("commonAsyncExecutor")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void commissionCompareBatch(List<Commission> entities) { public void commissionCompareBatch(List<Commission> entities) {
// 根据是否保单号,来区分比对方式 // 根据是否关联保单号,来区分比对方式
List<Commission> hasPolicyNoList = new ArrayList<>(); List<Commission> hasPolicyNoList = new ArrayList<>();
List<Commission> noPolicyNoList = new ArrayList<>(); List<Commission> noPolicyNoList = new ArrayList<>();
for (Commission entity : entities) { for (Commission entity : entities) {
if (StringUtils.isBlank(entity.getPolicyNo())) { if ("U".equals(entity.getCommissionBizType())) {
noPolicyNoList.add(entity); noPolicyNoList.add(entity);
} else { } else {
hasPolicyNoList.add(entity); hasPolicyNoList.add(entity);
...@@ -132,35 +133,29 @@ public class CommissionAsyncService { ...@@ -132,35 +133,29 @@ public class CommissionAsyncService {
} }
private void normalBatch(List<Commission> entities) { private void normalBatch(List<Commission> entities) {
// 1.根据导入的来佣获取保单号集合 // 1.需要比对的预计来佣业务id集合
List<String> policyNoList = entities.stream() List<String> commissionExpectedBizIdList = entities.stream()
.map(Commission::getPolicyNo) .map(Commission::getCommissionExpectedBizId)
.collect(Collectors.toList()); .collect(Collectors.toList());
// 2.根据预计来佣业务id查询已存在的来佣记录
// 2.根据保单号查询已存在的来佣记录
List<Commission> existingCommissions = commissionService.lambdaQuery() List<Commission> existingCommissions = commissionService.lambdaQuery()
.in(Commission::getPolicyNo, policyNoList) .in(Commission::getCommissionExpectedBizId, commissionExpectedBizIdList)
.list(); .list();
// 来佣根据 保单号、来佣名称、来佣周期、货币 进行分组 // commission 根据关联的 commission_expected_biz_id 进行分组
Map<String, List<Commission>> commissionMap = existingCommissions.stream() Map<String, List<Commission>> commissionMap = existingCommissions.stream()
.collect(Collectors.groupingBy( .filter(commission -> commission.getCommissionExpectedBizId() != null)
c -> c.getPolicyNo() + c.getCommissionName() + c.getCommissionPeriod() + c.getCurrency() .collect(Collectors.groupingBy(Commission::getCommissionExpectedBizId));
));
// 3.根据保单号查询预计来佣 // 3.根据保单号查询预计来佣
List<CommissionExpected> expectedList = commissionExpectedService.lambdaQuery() List<CommissionExpected> expectedList = commissionExpectedService.lambdaQuery()
.in(CommissionExpected::getPolicyNo, policyNoList) .in(CommissionExpected::getCommissionExpectedBizId, commissionExpectedBizIdList)
.list(); .list();
// 预计来佣根据 保单号、来佣名称、来佣周期、货币 进行映射 // 预计来佣映射
Map<String, CommissionExpected> expectedMap = expectedList.stream() Map<String, CommissionExpected> expectedMap = expectedList.stream()
.collect(Collectors.toMap( .collect(Collectors.toMap(CommissionExpected::getCommissionExpectedBizId, Function.identity()));
commissionExpected -> commissionExpected.getPolicyNo() + commissionExpected.getCommissionName() + commissionExpected.getCommissionPeriod() + commissionExpected.getCurrency(),
commissionExpected -> commissionExpected
));
// 4.遍历预计来佣,进行比对 // 4.遍历预计来佣,进行比对
for (Map.Entry<String, CommissionExpected> entry : expectedMap.entrySet()) { for (Map.Entry<String, CommissionExpected> entry : expectedMap.entrySet()) {
// 根据 保单号、来佣名称、来佣周期、货币 分组
String key = entry.getKey(); String key = entry.getKey();
CommissionExpected commissionExpected = entry.getValue(); CommissionExpected commissionExpected = entry.getValue();
// 从已存在的来佣记录中获取当前来佣记录 // 从已存在的来佣记录中获取当前来佣记录
...@@ -194,12 +189,7 @@ public class CommissionAsyncService { ...@@ -194,12 +189,7 @@ 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) { paidRatio = paidRatio.add(item.getCurrentCommissionRatio());
log.warn("当前来佣比例为空,临时计算当前来佣比例: commission_id={}", item.getId());
paidRatio = paidRatio.add(item.calculateCurrentPaidRatio());
} else {
paidRatio = paidRatio.add(item.getCurrentCommissionRatio());
}
paidAmount = paidAmount.add(item.getHkdAmount()); paidAmount = paidAmount.add(item.getHkdAmount());
} }
...@@ -217,6 +207,8 @@ public class CommissionAsyncService { ...@@ -217,6 +207,8 @@ public class CommissionAsyncService {
List<CommissionCompareRecord> compareRecords = new ArrayList<>(); List<CommissionCompareRecord> compareRecords = new ArrayList<>();
// 计算比对状态 // 计算比对状态
log.info("paidRatio: {}, commissionExpected.getCommissionRatio(): {}", paidRatio, commissionExpected.getCommissionRatio());
log.info("commissionExpected_id: {}", commissionExpected.getId());
if (paidRatio.compareTo(commissionExpected.getCommissionRatio()) == 0) { if (paidRatio.compareTo(commissionExpected.getCommissionRatio()) == 0) {
// 等于预计比例时,所有来佣设置为比对成功 // 等于预计比例时,所有来佣设置为比对成功
for (Commission existingCommission : existingCommissions) { for (Commission existingCommission : existingCommissions) {
...@@ -263,10 +255,10 @@ public class CommissionAsyncService { ...@@ -263,10 +255,10 @@ public class CommissionAsyncService {
public void commissionCompare(Commission commission) { public void commissionCompare(Commission commission) {
log.info("开始执行比对事务,来佣ID: {}", commission.getCommissionBizId()); log.info("开始执行比对事务,来佣ID: {}", commission.getCommissionBizId());
if (StringUtils.isNotBlank(commission.getPolicyNo())) { if ("R".equals(commission.getCommissionBizType())) {
normalCommission(commission.getCommissionBizId(), commission.getPolicyNo(), commission.getCommissionName(), commission.getCommissionPeriod(), commission.getCurrency(), commission.getPremium()); normalCommission(commission.getCommissionBizId(), commission.getPolicyNo(), commission.getCommissionName(), commission.getCommissionPeriod(), commission.getCurrency(), commission.getPremium());
} else { } else {
// 无保单号,根据来佣名称、对账公司查询来佣记录 // 非关联保单号应收单,根据来佣名称、对账公司查询来佣记录
noPolicyNoCommission(commission); noPolicyNoCommission(commission);
} }
} }
...@@ -281,6 +273,7 @@ public class CommissionAsyncService { ...@@ -281,6 +273,7 @@ public class CommissionAsyncService {
// 1.根据来佣名称、对账公司查询预计来佣 // 1.根据来佣名称、对账公司查询预计来佣
QueryWrapper<CommissionExpected> queryWrapper = new QueryWrapper<>(); QueryWrapper<CommissionExpected> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("reconciliation_company", commission.getReconciliationCompany()); queryWrapper.eq("reconciliation_company", commission.getReconciliationCompany());
queryWrapper.eq("commission_period", commission.getCommissionPeriod());
queryWrapper.eq("commission_name", commission.getCommissionName()); queryWrapper.eq("commission_name", commission.getCommissionName());
List<CommissionExpected> expectedList = commissionExpectedService.list(queryWrapper); List<CommissionExpected> expectedList = commissionExpectedService.list(queryWrapper);
if (expectedList.size() != 1) { if (expectedList.size() != 1) {
...@@ -332,8 +325,7 @@ public class CommissionAsyncService { ...@@ -332,8 +325,7 @@ public class CommissionAsyncService {
List<Commission> existingCommissions = commissionService.list(new QueryWrapper<Commission>() List<Commission> existingCommissions = commissionService.list(new QueryWrapper<Commission>()
.eq("policy_no", policyNo) .eq("policy_no", policyNo)
.eq("commission_name", commissionName) .eq("commission_name", commissionName)
.eq("commission_period", commissionPeriod) .eq("commission_period", commissionPeriod));
.eq("currency", currency));
// 当前 commission 记录 // 当前 commission 记录
Commission commission = existingCommissions.stream() Commission commission = existingCommissions.stream()
...@@ -345,12 +337,7 @@ public class CommissionAsyncService { ...@@ -345,12 +337,7 @@ public class CommissionAsyncService {
} }
// 查询对应预计来佣 // 查询对应预计来佣
CommissionExpected commissionExpected = commissionService.queryByCommission( CommissionExpected commissionExpected = commissionExpectedService.getByBizId(commission.getCommissionExpectedBizId());
commission.getPolicyNo(),
commission.getCommissionName(),
commission.getCommissionPeriod(),
commission.getCurrency(),
premium);
doCompare(existingCommissions, commissionExpected, commission); doCompare(existingCommissions, commissionExpected, commission);
} }
...@@ -359,6 +346,7 @@ public class CommissionAsyncService { ...@@ -359,6 +346,7 @@ public class CommissionAsyncService {
// 校验参数 // 校验参数
if (commission.getTotalPeriod().compareTo(commissionExpected.getTotalPeriod()) != 0) { if (commission.getTotalPeriod().compareTo(commissionExpected.getTotalPeriod()) != 0) {
commission.setRemark("来佣总期数与预计来佣总期数不一致"); commission.setRemark("来佣总期数与预计来佣总期数不一致");
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue());
commissionService.updateById(commission); commissionService.updateById(commission);
return; return;
} }
......
...@@ -78,7 +78,7 @@ public class CommissionAddRequest implements Serializable { ...@@ -78,7 +78,7 @@ public class CommissionAddRequest implements Serializable {
* 结算汇率 * 结算汇率
*/ */
@Schema(description = "结算汇率", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "结算汇率", requiredMode = Schema.RequiredMode.REQUIRED)
private String exchangeRate; private BigDecimal exchangeRate;
/** /**
* 入账日(实) * 入账日(实)
......
...@@ -111,7 +111,7 @@ public class Commission implements Serializable { ...@@ -111,7 +111,7 @@ public class Commission implements Serializable {
/** /**
* 结算汇率 * 结算汇率
*/ */
private String exchangeRate; private BigDecimal exchangeRate;
/** /**
* 来佣金额(港币) * 来佣金额(港币)
...@@ -180,7 +180,7 @@ public class Commission implements Serializable { ...@@ -180,7 +180,7 @@ public class Commission implements Serializable {
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(new BigDecimal(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
...@@ -40,8 +40,6 @@ public interface CommissionService extends IService<Commission> { ...@@ -40,8 +40,6 @@ public interface CommissionService extends IService<Commission> {
CommissionStatisticsVO getCommissionStatistics(List<Long> commissionIds); CommissionStatisticsVO getCommissionStatistics(List<Long> commissionIds);
CommissionExpected queryByCommission(String policyNo, String commissionName, Integer commissionPeriod, String currency, String premium);
void validateCommissionUpdateRequest(CommissionUpdateRequest commissionUpdateRequest); void validateCommissionUpdateRequest(CommissionUpdateRequest commissionUpdateRequest);
void saveUpdateCommissionRecord(Commission commission, CommissionUpdateRequest commissionUpdateRequest, AuthUserDto currentLoginUser); void saveUpdateCommissionRecord(Commission commission, CommissionUpdateRequest commissionUpdateRequest, AuthUserDto currentLoginUser);
......
...@@ -307,21 +307,20 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -307,21 +307,20 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commissionUpdateRequest.getExchangeRate()); commissionUpdateRequest.getExchangeRate());
commission.setCurrentCommissionRatio(currentCommissionRatio); commission.setCurrentCommissionRatio(currentCommissionRatio);
} else { } else {
// 非关联应收单,查询预计来佣记录,获取标准发佣金额 commission.setPolicyNo(null);
CommissionExpected commissionExpected = commissionExpectedService.lambdaQuery() }
.eq(CommissionExpected::getPolicyNo, commission.getPolicyNo()) // 重新关联预计来佣记录
.eq(CommissionExpected::getCommissionPeriod, commission.getCommissionPeriod()) CommissionExpected commissionExpected = commissionExpectedService.lambdaQuery()
.eq(CommissionExpected::getCommissionName, commission.getCommissionName()) .eq(CommissionExpected::getPolicyNo, commission.getPolicyNo())
// .eq(CommissionExpected::getCurrency, commission.getCurrency()) .eq(CommissionExpected::getCommissionPeriod, commission.getCommissionPeriod())
.one(); .eq(CommissionExpected::getCommissionName, commission.getCommissionName())
if (commissionExpected == null) { .one();
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "未找到预计来佣记录"); if (commissionExpected != null) {
} commission.setCommissionExpectedBizId(commissionExpected.getCommissionExpectedBizId());
} }
// 计算来佣金额(港币) // 计算来佣金额(港币)
BigDecimal hkdAmount = requestAmount BigDecimal hkdAmount = requestAmount
.multiply(commissionUpdateRequest.getExchangeRate()) .multiply(commissionUpdateRequest.getExchangeRate());
.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP);
commission.setHkdAmount(hkdAmount); commission.setHkdAmount(hkdAmount);
// 获取当前登录用户 // 获取当前登录用户
...@@ -445,31 +444,6 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -445,31 +444,6 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
} }
@Override @Override
public CommissionExpected queryByCommission(String policyNo, String commissionName, Integer commissionPeriod, String currency, String premium) {
QueryWrapper<CommissionExpected> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("policy_no", policyNo);
queryWrapper.eq("commission_name", commissionName);
queryWrapper.eq("commission_period", commissionPeriod);
queryWrapper.eq("currency", currency);
CommissionExpected one = commissionExpectedService.getOne(queryWrapper);
if (ObjectUtils.isEmpty(one)) {
String errorMsg = String.format("未找到当前来佣对应的预计来佣,保单号:%s, 来佣名称:%s, 来佣期数:%s, 币种:%s",
policyNo, commissionName, commissionPeriod, currency);
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), errorMsg);
}
// 计算预计来佣金额 (统一试算币种:HKD)
if (one.getExpectedAmount() == null) {
BigDecimal expectedAmount = new BigDecimal(premium)
.multiply(one.getCommissionRatio());
if ("USD".equals(one.getCurrency())) {
expectedAmount = expectedAmount.multiply(one.getDefaultExchangeRate());
}
one.setExpectedAmount(expectedAmount.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP));
}
return one;
}
@Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest) { public Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest) {
List<String> commissionBizIdList = generateFortuneRequest.getCommissionBizIdList(); List<String> commissionBizIdList = generateFortuneRequest.getCommissionBizIdList();
...@@ -695,7 +669,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -695,7 +669,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commissionCompareRecord.setAmount(commission.getAmount()); commissionCompareRecord.setAmount(commission.getAmount());
commissionCompareRecord.setCurrentCommissionRatio(commission.getCurrentCommissionRatio()); commissionCompareRecord.setCurrentCommissionRatio(commission.getCurrentCommissionRatio());
commissionCompareRecord.setCurrency(commission.getCurrency()); commissionCompareRecord.setCurrency(commission.getCurrency());
commissionCompareRecord.setExchangeRate(commission.getExchangeRate()); commissionCompareRecord.setExchangeRate(Convert.toStr(commission.getExchangeRate()));
commissionCompareRecord.setStatus(commission.getStatus()); commissionCompareRecord.setStatus(commission.getStatus());
commissionCompareRecord.setRemark(commission.getRemark()); commissionCompareRecord.setRemark(commission.getRemark());
commissionCompareRecord.setCreateTime(commission.getCreateTime()); commissionCompareRecord.setCreateTime(commission.getCreateTime());
...@@ -711,7 +685,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -711,7 +685,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commissionCompareRecord.setTotalPeriod(commission.getTotalPeriod()); commissionCompareRecord.setTotalPeriod(commission.getTotalPeriod());
commissionCompareRecord.setAmount(commission.getAmount()); commissionCompareRecord.setAmount(commission.getAmount());
commissionCompareRecord.setCurrency(commission.getCurrency()); commissionCompareRecord.setCurrency(commission.getCurrency());
commissionCompareRecord.setExchangeRate(commission.getExchangeRate()); commissionCompareRecord.setExchangeRate(Convert.toStr(commission.getExchangeRate()));
commissionCompareRecord.setStatus(commission.getStatus()); commissionCompareRecord.setStatus(commission.getStatus());
commissionCompareRecord.setRemark(commission.getRemark()); commissionCompareRecord.setRemark(commission.getRemark());
commissionCompareRecord.setOperatorName(currentLoginUser.getUsername()); commissionCompareRecord.setOperatorName(currentLoginUser.getUsername());
...@@ -747,6 +721,10 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -747,6 +721,10 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
for (CommissionAddRequest request : customerAddRequestList) { for (CommissionAddRequest request : customerAddRequestList) {
Commission commission = new Commission(); Commission commission = new Commission();
BeanUtils.copyProperties(request, commission); BeanUtils.copyProperties(request, commission);
// 计算来佣金额(港币)
BigDecimal hkdAmount = request.getAmount()
.multiply(request.getExchangeRate());
commission.setHkdAmount(hkdAmount);
// 入账业务id // 入账业务id
commission.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode())); commission.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode()));
// 关联业务id // 关联业务id
...@@ -765,6 +743,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -765,6 +743,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "保单不存在, policyNo: " + request.getPolicyNo()); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "保单不存在, policyNo: " + request.getPolicyNo());
} }
} }
} else {
commission.setPolicyNo(null);
} }
// 关联预计来佣信息 // 关联预计来佣信息
if (CollectionUtils.isNotEmpty(commissionExpectedList)) { if (CollectionUtils.isNotEmpty(commissionExpectedList)) {
...@@ -772,8 +752,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -772,8 +752,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
CommissionExpected expected = commissionExpectedList.stream() CommissionExpected expected = commissionExpectedList.stream()
.filter(item -> item.getPolicyNo().equals(request.getPolicyNo()) .filter(item -> item.getPolicyNo().equals(request.getPolicyNo())
&& item.getCommissionPeriod().equals(request.getCommissionPeriod()) && item.getCommissionPeriod().equals(request.getCommissionPeriod())
&& item.getCommissionName().equals(request.getCommissionName()) && item.getCommissionName().equals(request.getCommissionName()))
&& item.getCurrency().equals(request.getCurrency()))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
if (expected != null) { if (expected != null) {
...@@ -823,9 +802,12 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -823,9 +802,12 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
if (StringUtils.isBlank(request.getCommissionName())) { if (StringUtils.isBlank(request.getCommissionName())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账项目名称不能为空"); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账项目名称不能为空");
} }
if (ObjectUtils.isEmpty(request.getAmount())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账金额不能为空");
}
if ("R".equals(request.getCommissionBizType())) { if ("R".equals(request.getCommissionBizType())) {
// 校验保单号是否存在 // 校验保单号是否存在
if (StringUtils.isBlank(request.getExchangeRate())) { if (ObjectUtils.isEmpty(request.getExchangeRate())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "关联保单号记录,结算汇率不能为空"); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "关联保单号记录,结算汇率不能为空");
} }
} }
...@@ -857,7 +839,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -857,7 +839,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
expected.setExpectedAmount(commission.getAmount()); expected.setExpectedAmount(commission.getAmount());
expected.setPaidAmount(BigDecimal.ZERO); expected.setPaidAmount(BigDecimal.ZERO);
expected.setPaidRatio(BigDecimal.valueOf(100)); expected.setPaidRatio(BigDecimal.valueOf(100));
expected.setDefaultExchangeRate(new BigDecimal(commission.getExchangeRate())); expected.setDefaultExchangeRate(commission.getExchangeRate());
expected.setCommissionDate(new Date()); expected.setCommissionDate(new Date());
expected.setCreatorId(loginUserId); expected.setCreatorId(loginUserId);
......
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