Commit 1a0fff19 by jianan

前端对接问题修复9

parent 42a22807
......@@ -98,11 +98,13 @@ public class ApiCommissionController {
// 根据来佣检核年月查询是否已存在来佣记录
List<Commission> existingCommissions = commissionService.list(new QueryWrapper<Commission>()
.eq("reconciliation_year_month", reconciliationYearMonth));
boolean isAllCompareSuccess = existingCommissions.stream()
.allMatch(commission -> commission.getStatus().equals(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue()));
if (isAllCompareSuccess) {
// 所有来佣记录都已检核成功,不允许上传新记录
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "当前来佣检核年月所有记录都已检核成功,不允许上传新记录,若需更新请手动操作");
if (CollectionUtils.isNotEmpty(existingCommissions)) {
boolean isAllCompareSuccess = existingCommissions.stream()
.allMatch(commission -> commission.getStatus().equals(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue()));
if (isAllCompareSuccess) {
// 所有来佣记录都已检核成功,不允许上传新记录
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "当前来佣检核年月所有记录都已检核成功,不允许上传新记录,若需更新请手动操作");
}
}
// 数据完整性校验
......@@ -113,14 +115,15 @@ public class ApiCommissionController {
.map(CommissionExcelDTO::getPolicyNo)
.filter(StringUtils::isNotBlank)
.collect(Collectors.toSet());
Map<String, PolicyFollow> policyFollowMap = policyFollowService.list(new LambdaQueryWrapper<PolicyFollow>().in(PolicyFollow::getPolicyNo, policyNos))
.stream().collect(Collectors.toMap(PolicyFollow::getPolicyNo, policyFollow -> policyFollow));
List<PolicyFollow> policyFollows = policyFollowService.list(new LambdaQueryWrapper<PolicyFollow>()
.in(PolicyFollow::getPolicyNo, policyNos)
.select(PolicyFollow::getPolicyNo));
Set<String> existingPolicyNos = policyFollows.stream().map(PolicyFollow::getPolicyNo).collect(Collectors.toSet());
StringBuilder errorMsg = new StringBuilder();
for (CommissionExcelDTO excelDTO : dataList) {
if (StringUtils.isNotBlank(excelDTO.getPolicyNo())) {
PolicyFollow policyFollow = policyFollowMap.get(excelDTO.getPolicyNo());
if (ObjectUtils.isEmpty(policyFollow)) {
if (!existingPolicyNos.contains(excelDTO.getPolicyNo())) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行保单不存在");
}
}
......@@ -228,13 +231,13 @@ public class ApiCommissionController {
}
/**
* 创建保单来佣
* 新增入账
*
* @param customerAddRequest
* @param request
* @return
*/
@Operation(summary = "创建保单来佣")
@Operation(summary = "新增入账")
@PostMapping("/add")
public Result<Boolean> addCommission(@RequestBody CommissionAddRequest customerAddRequest, HttpServletRequest request) {
if (customerAddRequest == null || StringUtils.isBlank(customerAddRequest.getPolicyNo())) {
......@@ -244,17 +247,17 @@ public class ApiCommissionController {
}
/**
* 批量新增保单来佣
* 批量新增入账
*
* @param customerAddRequestList
* @param request
* @return
*/
@Operation(summary = "批量新增保单来佣")
@Operation(summary = "批量新增入账")
@PostMapping("/addBatch")
public Result<Boolean> addCommissionBatch(@RequestBody List<CommissionAddRequest> customerAddRequestList, HttpServletRequest request) {
public Result<List<Commission>> addCommissionBatch(@RequestBody List<CommissionAddRequest> customerAddRequestList, HttpServletRequest request) {
if (CollectionUtils.isEmpty(customerAddRequestList)) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "来佣数据不能为空");
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "入账数据不能为空");
}
return Result.success(commissionService.addCommissionBatch(customerAddRequestList));
}
......
......@@ -15,15 +15,19 @@ import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.dto.FortuneImportDTO;
import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.Fortune;
import com.yd.csf.service.model.FortuneAccount;
import com.yd.csf.service.model.FortuneAccountEditRecord;
import com.yd.csf.service.service.FortuneAccountEditRecordService;
import com.yd.csf.service.service.FortuneAccountService;
import com.yd.csf.service.service.FortuneService;
import com.yd.csf.service.vo.CommissionVO;
import com.yd.csf.service.vo.FortuneVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -506,4 +510,29 @@ public class ApiFortuneController {
}
return Result.success(fortuneService.getFortuneStatistics(statisticsRequest.getFortuneIdList()));
}
/**
* 出账记录
*
* @param fortuneQueryRequest
* @param request
* @return
*/
@PostMapping("/pageByExpectedFortuneBizId")
@Operation(summary = "出账记录")
public Result<Page<FortuneVO>> pageByExpectedFortuneBizId(@RequestBody FortuneQueryRequest fortuneQueryRequest,
HttpServletRequest request) {
if (ObjectUtils.isEmpty(fortuneQueryRequest.getExpectedFortuneBizId())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "expectedFortuneBizId 不能为空");
}
long current = fortuneQueryRequest.getPageNo();
long size = fortuneQueryRequest.getPageSize();
// 查询列表数据
QueryWrapper<Fortune> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("expected_fortune_biz_id", fortuneQueryRequest.getExpectedFortuneBizId());
Page<Fortune> fortunePage = fortuneService.page(new Page<>(current, size),
queryWrapper);
// 组装返回值
return Result.success(fortuneService.getFortuneVOPage(fortunePage));
}
}
......@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
......@@ -44,6 +45,7 @@ import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.util.*;
......@@ -128,7 +130,11 @@ public class ApiPolicyFollowController {
List<PolicyExcelDTO> dtoList = policyDataListener.getList();
// 校验保单号是否存在
String validateMsg = validate(dtoList);
String validateMsg = validatePolicyNo(dtoList);
if (StringUtils.isNotBlank(validateMsg)) return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), validateMsg);
// 校验必填字段是否为空
validateMsg = validateField(dtoList);
if (StringUtils.isNotBlank(validateMsg)) return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), validateMsg);
// 保存对账公司
......@@ -206,7 +212,7 @@ public class ApiPolicyFollowController {
return allCompanies;
}
private String validate(List<PolicyExcelDTO> dtoList) {
private String validatePolicyNo(List<PolicyExcelDTO> dtoList) {
String validateMsg = "";
// 校验保单号是否为空
if (dtoList.isEmpty()) {
......@@ -229,6 +235,35 @@ public class ApiPolicyFollowController {
return validateMsg;
}
private String validateField(List<PolicyExcelDTO> dataList) {
String validateMsg = "";
// 校验必填字段是否为空
for (PolicyExcelDTO excelDTO : dataList) {
if (StringUtils.isBlank(excelDTO.getPolicyNo())) {
validateMsg = "第" + (dataList.indexOf(excelDTO) + 1) + "行保单号为空\n";
}
if (StringUtils.isBlank(excelDTO.getReconciliationCompany())) {
validateMsg = "第" + (dataList.indexOf(excelDTO) + 1) + "行对账公司为空\n";
}
if (StringUtils.isBlank(excelDTO.getProductName())) {
validateMsg = "第" + (dataList.indexOf(excelDTO) + 1) + "行产品名称为空\n";
}
if (StringUtils.isBlank(excelDTO.getInsuranceCompany())) {
validateMsg = "第" + (dataList.indexOf(excelDTO) + 1) + "行保险公司为空\n";
}
if (StringUtils.isBlank(excelDTO.getPolicyHolder())) {
validateMsg = "第" + (dataList.indexOf(excelDTO) + 1) + "行保单持有人为空\n";
}
if (StringUtils.isBlank(excelDTO.getInsured())) {
validateMsg = "第" + (dataList.indexOf(excelDTO) + 1) + "行受保人为空\n";
}
if (StringUtils.isBlank(excelDTO.getInitialPremium())) {
validateMsg = "第" + (dataList.indexOf(excelDTO) + 1) + "行首期保费为空\n";
}
}
return validateMsg;
}
private List<PolicyFollowDTO> convertToObj(List<PolicyExcelDTO> list, Map<String, String> reconciliationCompanyMap) throws ParseException {
List<PolicyFollowDTO> policyFollowDTOList = new ArrayList<>();
......@@ -262,7 +297,7 @@ public class ApiPolicyFollowController {
policyFollow.setStatus(policyFollowStatusEnum.getItemValue());
}
policyFollow.setReconciliationCompanyBizId(reconciliationCompanyMap.get(policyExcelDTO.getReconciliationCompany()));
if (policyFollow.getEffectiveDate()!= null && policyFollow.getCoolingOffDays() != null) {
if (policyFollow.getEffectiveDate() != null && policyFollow.getCoolingOffDays() != null) {
policyFollow.setCoolingOffEndDate(DateUtil.offset(policyFollow.getEffectiveDate(), DateField.DAY_OF_MONTH, policyFollow.getCoolingOffDays()));
}
// 获取币种字典值
......@@ -486,7 +521,6 @@ public class ApiPolicyFollowController {
}
// 获取封装类
return Result.success(policyFollowService.getPolicyFollowVO(policyFollow));
}
......
......@@ -44,7 +44,7 @@ spring:
# 配置中心
config:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: b3b01715-eb85-4242-992a-5aff03d864d4
namespace: d12af3c4-9058-4a28-b997-256561b86f75
# nacos的ip地址和端口
server-addr: 139.224.145.34:8848
# 这个就表示 在我们nacos命名空间id为 dev中 有一个data-id 为 demo-service.yml 的配置文件 读取这个里面的配置
......
......@@ -50,10 +50,10 @@ public class CommissionAsyncService {
hasPolicyNoList.add(entity);
}
}
if (CollectionUtils.isEmpty(hasPolicyNoList)) {
if (CollectionUtils.isNotEmpty(hasPolicyNoList)) {
normalBatch(hasPolicyNoList);
}
if (CollectionUtils.isEmpty(noPolicyNoList)) {
if (CollectionUtils.isNotEmpty(noPolicyNoList)) {
noPolicyNoBatch(noPolicyNoList);
}
}
......
......@@ -11,34 +11,23 @@ import java.util.Date;
@Data
public class CommissionAddRequest implements Serializable {
/**
* 入账检核年月 yyyy-MM
* 检核年月
*/
@Schema(description = "入账检核年月 yyyy-MM", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "检核年月")
@JsonFormat(pattern = "yyyy-MM")
private String reconciliationYearMonth;
/**
* 保单号
*/
@Schema(description = "保单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyNo;
/**
* 保费
* 应收款类型 R=关联保单应收单 U=非关联保单应收单
*/
@Schema(description = "保费", requiredMode = Schema.RequiredMode.REQUIRED)
private String premium;
@Schema(description = "应收款类型 R=关联保单应收单 U=非关联保单应收单", requiredMode = Schema.RequiredMode.REQUIRED)
private String commissionBizType;
/**
* 对账公司
*/
@Schema(description = "对账公司", requiredMode = Schema.RequiredMode.REQUIRED)
private String reconciliationCompany;
/**
* 对账公司业务id
* 保单号
*/
@Schema(description = "对账公司业务id")
private String reconciliationCompanyBizId;
@Schema(description = "保单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyNo;
/**
* 佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
......@@ -47,44 +36,44 @@ public class CommissionAddRequest implements Serializable {
private Integer commissionPeriod;
/**
* 总来佣期数
* 总期数
*/
@Schema(description = "总来佣期数")
@Schema(description = "总期数")
private Integer totalPeriod;
/**
* 来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
* 入账项目名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
@Schema(description = "来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "入账项目名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)", requiredMode = Schema.RequiredMode.REQUIRED)
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:服务津贴;等等)", requiredMode = Schema.RequiredMode.REQUIRED)
private String commissionType;
/**
* 来佣金额
* 入账金额
*/
@Schema(description = "来佣金额", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "入账金额", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal amount;
/**
* 来佣币种
* 入账币种
*/
@Schema(description = "来佣币种", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "入账币种", requiredMode = Schema.RequiredMode.REQUIRED)
private String currency;
/**
* 结算汇率
*/
@Schema(description = "结算汇率")
@Schema(description = "结算汇率", requiredMode = Schema.RequiredMode.REQUIRED)
private String exchangeRate;
/**
* 来佣日期
* 入账日(实)
*/
@Schema(description = "来佣日期", requiredMode = Schema.RequiredMode.REQUIRED, format = "yyyy-MM-dd")
@Schema(description = "入账日(实)", requiredMode = Schema.RequiredMode.REQUIRED, format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date commissionDate;
......
......@@ -16,21 +16,33 @@ public class FortuneAddRequest implements Serializable {
private String reconciliationYearMonth;
/**
* 应付款类型 R-关联保单应付款 U-非关联保单应付款
*/
@Schema(description = "应付款类型 R-关联保单应付款 U-非关联保单应付款", requiredMode = Schema.RequiredMode.REQUIRED)
private String fortuneBizType;
/**
* 保单号
*/
@Schema(description = "保单号", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "保单号")
private String policyNo;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
* 出账状态 0=待出账 1=可出账 2=已出账
*/
@Schema(description = "出账状态 0=待出账 1=可出帐,待检核 2=完成出账 3=部分出账 4=保留 5=已失效 6=可出帐,检核完成 7=未找到当前预计发佣对应的来佣, 字典值: csf_expected_fortune_status", requiredMode = Schema.RequiredMode.REQUIRED)
private String status;
/**
* 出账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@Schema(description = "发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "出账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer fortunePeriod;
/**
* 发佣总期数
* 出账总期数
*/
@Schema(description = "发佣总期数", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "出账总期数")
private Integer fortuneTotalPeriod;
/**
......@@ -58,39 +70,39 @@ public class FortuneAddRequest implements Serializable {
private String teamBizId;
/**
* 发佣名称
* 出账项目名称
*/
@Schema(description = "发佣名称", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "出账项目名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String fortuneName;
/**
* 发佣类型
* 出账项目类型
*/
@Schema(description = "发佣类型")
@Schema(description = "出账项目类型", requiredMode = Schema.RequiredMode.REQUIRED)
private String fortuneType;
/**
* 发佣金额
* 出账金额
*/
@Schema(description = "发佣金额", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "出账金额", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal amount;
/**
* 发佣币种
* 出账币种
*/
@Schema(description = "发佣币种", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "出账币种", requiredMode = Schema.RequiredMode.REQUIRED)
private String currency;
/**
* 发佣日期
* 出账日期
*/
@Schema(description = "发佣日期", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "出账日期", requiredMode = Schema.RequiredMode.REQUIRED)
private Date payoutDate;
/**
* 发佣备注
* 出账备注
*/
@Schema(description = "发佣备注")
@Schema(description = "出账备注")
private String remark;
private static final long serialVersionUID = 1L;
......
......@@ -16,6 +16,13 @@ import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
public class FortuneQueryRequest extends PageDto implements Serializable {
/**
* 应付记录业务 id
*/
@Schema(description = "应付记录业务 id")
private String expectedFortuneBizId;
/**
* 出账状态
*/
......
......@@ -10,9 +10,10 @@ import lombok.Data;
/**
* 保单来佣表
*
* @TableName commission
*/
@TableName(value ="commission")
@TableName(value = "commission")
@Data
public class Commission implements Serializable {
/**
......@@ -21,7 +22,7 @@ public class Commission implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
/**
/**
* 应收账款编号 (非关联保单号,用应收账款编号比对)
*/
private String receivableNo;
......@@ -37,11 +38,16 @@ public class Commission implements Serializable {
private String reconciliationYearMonth;
/**
* 应收款类型 R=关联保单应收单 U=非关联保单应收单
*/
private String commissionBizType;
/**
* 保单号
*/
private String policyNo;
/**
/**
* 期交保费
*/
private String premium;
......@@ -56,7 +62,7 @@ public class Commission implements Serializable {
*/
private String reconciliationCompany;
/**
/**
* 对账公司编码
*/
private String reconciliationCompanyCode;
......@@ -106,7 +112,7 @@ public class Commission implements Serializable {
*/
private String exchangeRate;
/**
/**
* 当前来佣比例
*/
private BigDecimal currentCommissionRatio;
......@@ -116,7 +122,7 @@ public class Commission implements Serializable {
*/
private BigDecimal periodPaidRatio;
/**
/**
* 当期剩余来佣比例
*/
private BigDecimal periodPendingRatio;
......@@ -141,14 +147,14 @@ public class Commission implements Serializable {
*/
private BigDecimal expectedAmount;
/**
* 已入账金额
*/
/**
* 已入账金额
*/
private BigDecimal paidAmount;
/**
* 待入账金额
*/
/**
* 待入账金额
*/
private BigDecimal pendingAmount;
/**
......
......@@ -34,6 +34,11 @@ public class Fortune implements Serializable {
private String reconciliationYearMonth;
/**
* 应付款类型 R-关联保单应付款 U-非关联保单应付款
*/
private String fortuneBizType;
/**
* 是否部分出账拆分出来的出账记录 0=No, 1=Yes
*/
private Integer isPart;
......
......@@ -52,7 +52,7 @@ public interface CommissionService extends IService<Commission> {
CommissionCompareRecord getNewCompareRecord(Commission existingCommission, CommissionExpected commissionExpected, AuthUserDto currentLoginUser);
Boolean addCommissionBatch(List<CommissionAddRequest> customerAddRequestList);
List<Commission> addCommissionBatch(List<CommissionAddRequest> customerAddRequestList);
Boolean addToExpected(AddToExpectedCommissionRequest addToExpectedCommissionRequest);
}
package com.yd.csf.service.service.impl;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yd.auth.core.dto.AuthUserDto;
......@@ -520,14 +521,10 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
public Boolean addCommission(CommissionAddRequest commissionAddRequest) {
// 校验来佣所属保单是否存在
String policyNo = commissionAddRequest.getPolicyNo();
Policy policy = policyService.getOne(new QueryWrapper<Policy>().eq("policy_no", policyNo));
// 校验来佣所属保单跟进是否存在
boolean policyFollowExists = policyFollowService.exists(new QueryWrapper<PolicyFollow>().eq("policy_no", policyNo));
if (policy == null && !policyFollowExists) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "该保单号不存在,不能添加来佣");
}
if (ObjectUtils.isEmpty(commissionAddRequest.getPremium())) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保费不能为空");
PolicyFollow policyFollow = policyFollowService.getOne(new QueryWrapper<PolicyFollow>().eq("policy_no", policyNo));
if (policyFollow == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "新单跟进中不存在该保单号,请先创建新单跟进");
}
// 获取当前登录用户
......@@ -541,11 +538,18 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.setCommissionBizId(commissionBizId);
// 计算当前来佣比例=当前入账金额/结算汇率/保费
BigDecimal currentCommissionRatio = commissionAddRequest.getAmount()
.divide(new BigDecimal(commissionAddRequest.getPremium()), 4, RoundingMode.HALF_UP)
.divide(policyFollow.getPaymentPremium(), 4, RoundingMode.HALF_UP)
.divide(new BigDecimal(commissionAddRequest.getExchangeRate()), 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100));
commission.setCurrentCommissionRatio(currentCommissionRatio);
// 关联业务id
commission.setReconciliationCompany(policyFollow.getReconciliationCompany());
commission.setReconciliationCompanyBizId(policyFollow.getReconciliationCompanyBizId());
commission.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
commission.setInsuranceCompanyBizId(policyFollow.getInsuranceCompanyBizId());
commission.setPremium(Convert.toStr(policyFollow.getPaymentPremium()));
commission.setCreatorId(loginUserId);
commission.setCreateTime(new Date());
commission.setUpdaterId(loginUserId);
......@@ -681,34 +685,41 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean addCommissionBatch(List<CommissionAddRequest> customerAddRequestList) {
public List<Commission> addCommissionBatch(List<CommissionAddRequest> customerAddRequestList) {
if (CollectionUtils.isEmpty(customerAddRequestList)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "来佣数据不能为空");
}
Set<String> policyNoSet = customerAddRequestList.stream().map(CommissionAddRequest::getPolicyNo).collect(Collectors.toSet());
// 校验来佣所属保单是否存在
List<Policy> policyList = policyService.list(new QueryWrapper<Policy>().in("policy_no", policyNoSet));
List<PolicyFollow> policyFollowList = policyFollowService.list(new QueryWrapper<PolicyFollow>().in("policy_no", policyNoSet));
// 校验来佣所属保单跟进是否存在
if (!CollectionUtils.isEmpty(policyList)) {
if (!CollectionUtils.isEmpty(policyFollowList)) {
// 保单号映射
Map<String, Policy> policyMap = policyList.stream().collect(Collectors.toMap(Policy::getPolicyNo, Function.identity()));
Map<String, PolicyFollow> policyFollowMap = policyFollowList.stream().collect(Collectors.toMap(PolicyFollow::getPolicyNo, Function.identity()));
for (CommissionAddRequest commissionAddRequest : customerAddRequestList) {
Policy policy = policyMap.get(commissionAddRequest.getPolicyNo());
if (policy == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), String.format("保单号:%s不存在,不能添加来佣", commissionAddRequest.getPolicyNo()));
}
if (ObjectUtils.isEmpty(commissionAddRequest.getPremium())) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), String.format("保单号:%s保费不能为空", commissionAddRequest.getPolicyNo()));
PolicyFollow policyFollow = policyFollowMap.get(commissionAddRequest.getPolicyNo());
if (policyFollow == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), String.format("新单跟进:保单号:%s不存在,不能添加来佣", commissionAddRequest.getPolicyNo()));
}
}
}
// policyFollowList 映射
Map<String, PolicyFollow> policyFollowMap = policyFollowList.stream().collect(Collectors.toMap(PolicyFollow::getPolicyNo, Function.identity()));
List<Commission> commissionList = new ArrayList<>();
for (CommissionAddRequest request : customerAddRequestList) {
Commission commission = new Commission();
BeanUtils.copyProperties(request, commission);
// 入账业务id
commission.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode()));
PolicyFollow policyFollow = policyFollowMap.get(request.getPolicyNo());
// 关联业务id
commission.setReconciliationCompany(policyFollow.getReconciliationCompany());
commission.setReconciliationCompanyBizId(policyFollow.getReconciliationCompanyBizId());
commission.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
commission.setInsuranceCompanyBizId(policyFollow.getInsuranceCompanyBizId());
commission.setPremium(Convert.toStr(policyFollow.getPaymentPremium()));
commissionList.add(commission);
}
boolean b = this.saveOrUpdateBatch(commissionList);
......@@ -724,7 +735,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return null;
});
return b;
return commissionList;
}
@Override
......
......@@ -26,6 +26,18 @@ public class CommissionVO implements Serializable {
private String commissionBizId;
/**
* 应收款编号
*/
@Schema(description = "应收款编号")
private String receivableNo;
/**
* 应收款类型 R=关联保单应收单 U=非关联保单应收单
*/
@Schema(description = "应收款类型 R=关联保单应收单 U=非关联保单应收单")
private String commissionBizType;
/**
* 入账检核年月 yyyy-MM
*/
@Schema(description = "入账检核年月 yyyy-MM")
......
......@@ -9,6 +9,7 @@
<result property="receivableNo" column="receivable_no" />
<result property="commissionBizId" column="commission_biz_id" />
<result property="reconciliationYearMonth" column="reconciliation_year_month" />
<result property="commissionBizType" column="commission_biz_type" />
<result property="policyNo" column="policy_no" />
<result property="premium" column="premium" />
<result property="insuranceCompanyBizId" column="insurance_company_biz_id" />
......@@ -37,7 +38,7 @@
</resultMap>
<sql id="Base_Column_List">
id,receivable_no,commission_biz_id,reconciliation_year_month,policy_no,premium,
id,receivable_no,commission_biz_id,reconciliation_year_month,commission_biz_type,policy_no,premium,
insurance_company_biz_id,product_launch_biz_id,
reconciliation_company,reconciliation_company_code,reconciliation_company_biz_id,commission_period,
total_period,commission_name,commission_type,exchange_rate,amount,currency,
......
......@@ -9,6 +9,7 @@
<result property="fortuneBizId" column="fortune_biz_id" />
<result property="expectedFortuneBizId" column="expected_fortune_biz_id" />
<result property="reconciliationYearMonth" column="reconciliation_year_month" />
<result property="fortuneBizType" column="fortune_biz_type" />
<result property="isPart" column="is_part" />
<result property="batchBizId" column="batch_biz_id" />
<result property="commissionBizId" column="commission_biz_id" />
......@@ -41,7 +42,8 @@
</resultMap>
<sql id="Base_Column_List">
id,fortune_biz_id,expected_fortune_biz_id,reconciliation_year_month,batch_biz_id,commission_biz_id,policy_no,fortune_period,fortune_total_period,broker_biz_id,
id,fortune_biz_id,expected_fortune_biz_id,reconciliation_year_month,fortune_biz_type,batch_biz_id,
commission_biz_id,policy_no,fortune_period,fortune_total_period,broker_biz_id,
team_biz_id,grade_commission_rate,share_rate,fortune_name,fortune_type,is_part,
amount,currency,status,payout_date,is_tax,
tax_amount,net_amount,salary_biz_id,base_rule_biz_id,settlement_biz_id,
......
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