Commit 1a0fff19 by jianan

前端对接问题修复9

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