Commit 42a22807 by jianan

前端对接问题修复8

parent e67b5c06
...@@ -17,8 +17,10 @@ import com.yd.csf.service.enums.CommissionStatusEnum; ...@@ -17,8 +17,10 @@ import com.yd.csf.service.enums.CommissionStatusEnum;
import com.yd.csf.service.model.Commission; import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.CommissionCompareRecord; import com.yd.csf.service.model.CommissionCompareRecord;
import com.yd.csf.service.model.CommissionEditRecord; import com.yd.csf.service.model.CommissionEditRecord;
import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.service.*; import com.yd.csf.service.service.*;
import com.yd.csf.service.vo.CommissionStatisticsVO; import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO;
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;
...@@ -68,6 +70,8 @@ public class ApiCommissionController { ...@@ -68,6 +70,8 @@ public class ApiCommissionController {
private RedissonClient redissonClient; private RedissonClient redissonClient;
@Resource @Resource
private CommissionAsyncService commissionAsyncService; private CommissionAsyncService commissionAsyncService;
@Resource
private PolicyFollowService policyFollowService;
@PostMapping("/upload/excel") @PostMapping("/upload/excel")
...@@ -101,9 +105,31 @@ public class ApiCommissionController { ...@@ -101,9 +105,31 @@ public class ApiCommissionController {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "当前来佣检核年月所有记录都已检核成功,不允许上传新记录,若需更新请手动操作"); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "当前来佣检核年月所有记录都已检核成功,不允许上传新记录,若需更新请手动操作");
} }
// 数据校验 // 数据完整性校验
validateCommissionUpload(dataList); validateCommissionUpload(dataList);
// 校验保单是否存在
Set<String> policyNos = dataList.stream()
.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));
StringBuilder errorMsg = new StringBuilder();
for (CommissionExcelDTO excelDTO : dataList) {
if (StringUtils.isNotBlank(excelDTO.getPolicyNo())) {
PolicyFollow policyFollow = policyFollowMap.get(excelDTO.getPolicyNo());
if (ObjectUtils.isEmpty(policyFollow)) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行保单不存在");
}
}
}
if (StringUtils.isNotBlank(errorMsg)) {
errorMsg.append("\n请确认新单跟进中保单是否存在,若不存在请先添加保单");
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), errorMsg.toString());
}
// 获取当前登录用户的ID // 获取当前登录用户的ID
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser(); AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString(); String loginUserId = currentLoginUser.getId().toString();
...@@ -125,7 +151,7 @@ public class ApiCommissionController { ...@@ -125,7 +151,7 @@ public class ApiCommissionController {
commissionAsyncService.commissionCompareBatch(entities); commissionAsyncService.commissionCompareBatch(entities);
} catch (Exception e) { } catch (Exception e) {
// 比对失败不影响主事务,记录日志即可 // 比对失败不影响主事务,记录日志即可
log.error("批量导入, 比对操作执行失败, error: {}", e.getMessage()); log.error("批量导入, 比对操作执行失败, error: {}", e.getMessage());
} }
} }
} }
...@@ -194,10 +220,9 @@ public class ApiCommissionController { ...@@ -194,10 +220,9 @@ public class ApiCommissionController {
@PostMapping("/generate/fortune") @PostMapping("/generate/fortune")
@Operation(summary = "生成实际出账(发佣)记录") @Operation(summary = "生成实际出账(发佣)记录")
public Result<Boolean> generateFortune(@RequestBody GenerateFortuneRequest generateFortuneRequest, public Result<Boolean> generateFortune(@RequestBody GenerateFortuneRequest generateFortuneRequest,
HttpServletRequest request) { HttpServletRequest request) {
LocalDate payoutYearMonth = generateFortuneRequest.getPayoutYearMonth(); if (CollectionUtils.isEmpty(generateFortuneRequest.getPolicyNoList())) {
if (payoutYearMonth == null) { return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "保单号列表不能为空");
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "预计出账年月不能为空");
} }
return Result.success(commissionService.generateFortune(generateFortuneRequest)); return Result.success(commissionService.generateFortune(generateFortuneRequest));
} }
...@@ -365,14 +390,14 @@ public class ApiCommissionController { ...@@ -365,14 +390,14 @@ public class ApiCommissionController {
/** /**
* 来佣检核页面-计算统计数据 总金额、总入账金额、待入账金额、已入账比例(已入账金额/总金额)、总保单数 * 来佣检核页面-计算统计数据 总金额、总入账金额、待入账金额、已入账比例(已入账金额/总金额)、总保单数
*/ */
@PostMapping("/statistics") @PostMapping("/statistics")
@Operation(summary = "来佣检核页面-计算统计数据 总金额、总入账金额、待入账金额、已入账比例(已入账金额/总金额)、总保单数") @Operation(summary = "来佣检核页面-计算统计数据 总金额、总入账金额、待入账金额、已入账比例(已入账金额/总金额)、总保单数")
public Result<CommissionStatisticsVO> getCommissionStatistics(@RequestBody CommissionStatisticsRequest commissionStatisticsRequest) { public Result<CommissionStatisticsVO> getCommissionStatistics(@RequestBody CommissionStatisticsRequest commissionStatisticsRequest) {
if (commissionStatisticsRequest == null) { if (commissionStatisticsRequest == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage()); return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
} }
return Result.success(commissionService.getCommissionStatistics(commissionStatisticsRequest.getCommissionIds())); return Result.success(commissionService.getCommissionStatistics(commissionStatisticsRequest.getCommissionIds()));
} }
/** /**
...@@ -422,8 +447,8 @@ public class ApiCommissionController { ...@@ -422,8 +447,8 @@ public class ApiCommissionController {
*/ */
@PostMapping("/list/page/vo") @PostMapping("/list/page/vo")
@Operation(summary = "来佣检核页面-分页获取保单来佣列表") @Operation(summary = "来佣检核页面-分页获取保单来佣列表")
public Result<Map<String, Object>> listPolicyFollowByPage(@RequestBody CommissionQueryRequest commissionQueryRequest, public Result<CommissionPageResponse> listCommissionByPage(@RequestBody CommissionQueryRequest commissionQueryRequest,
HttpServletRequest request) { HttpServletRequest request) {
long current = commissionQueryRequest.getPageNo(); long current = commissionQueryRequest.getPageNo();
long size = commissionQueryRequest.getPageSize(); long size = commissionQueryRequest.getPageSize();
...@@ -438,10 +463,36 @@ public class ApiCommissionController { ...@@ -438,10 +463,36 @@ public class ApiCommissionController {
List<Long> commissionIds = commissionList.stream().map(Commission::getId).collect(Collectors.toList()); List<Long> commissionIds = commissionList.stream().map(Commission::getId).collect(Collectors.toList());
CommissionStatisticsVO commissionStatisticsVO = commissionService.getCommissionStatistics(commissionIds); CommissionStatisticsVO commissionStatisticsVO = commissionService.getCommissionStatistics(commissionIds);
// 组装返回值 // 组装返回值
Map<String, Object> map = new HashMap<>(); CommissionPageResponse commissionPageResponse = new CommissionPageResponse();
map.put("commissionStatisticsVO", commissionStatisticsVO); commissionPageResponse.setCommissionStatisticsVO(commissionStatisticsVO);
map.put("page", commissionService.getCommissionVOPage(commissionPage)); commissionPageResponse.setPage(commissionService.getCommissionVOPage(commissionPage));
return Result.success(map); return Result.success(commissionPageResponse);
}
/**
* 入账记录
*
* @param commissionQueryRequest
* @param request
* @return
*/
@PostMapping("/pageByCommissionexpectedBizId")
@Operation(summary = "入账记录")
public Result<Page<CommissionVO>> pageByCommissionexpectedBizId(@RequestBody CommissionQueryRequest commissionQueryRequest,
HttpServletRequest request) {
if (ObjectUtils.isEmpty(commissionQueryRequest.getCommissionExpectedBizId())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "commissionExpectedBizId 不能为空");
}
long current = commissionQueryRequest.getPageNo();
long size = commissionQueryRequest.getPageSize();
// 查询列表数据
QueryWrapper<Commission> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("commission_expected_biz_id", commissionQueryRequest.getCommissionExpectedBizId());
Page<Commission> commissionPage = commissionService.page(new Page<>(current, size),
queryWrapper);
// 组装返回值
return Result.success(commissionService.getCommissionVOPage(commissionPage));
} }
} }
...@@ -474,7 +474,7 @@ public class ApiFortuneController { ...@@ -474,7 +474,7 @@ public class ApiFortuneController {
*/ */
@PostMapping("/list/page/vo") @PostMapping("/list/page/vo")
@Operation(summary = "出账检核页面-分页获取保单发佣列表(VO)") @Operation(summary = "出账检核页面-分页获取保单发佣列表(VO)")
public Result<Map<String, Object>> listFortuneByPage(@RequestBody FortuneQueryRequest fortuneQueryRequest, public Result<FortunePageResponse> listFortuneByPage(@RequestBody FortuneQueryRequest fortuneQueryRequest,
HttpServletRequest request) { HttpServletRequest request) {
long current = fortuneQueryRequest.getPageNo(); long current = fortuneQueryRequest.getPageNo();
long size = fortuneQueryRequest.getPageSize(); long size = fortuneQueryRequest.getPageSize();
...@@ -489,10 +489,10 @@ public class ApiFortuneController { ...@@ -489,10 +489,10 @@ public class ApiFortuneController {
FortuneStatisticsVO statisticsVO = fortuneService.getFortuneStatistics(fortuneList.stream().map(Fortune::getId).collect(Collectors.toList())); FortuneStatisticsVO statisticsVO = fortuneService.getFortuneStatistics(fortuneList.stream().map(Fortune::getId).collect(Collectors.toList()));
// 组装返回结果 // 组装返回结果
Map<String, Object> result = new HashMap<>(); FortunePageResponse response = new FortunePageResponse();
result.put("statisticsVO", statisticsVO); response.setStatisticsVO(statisticsVO);
result.put("page", fortuneService.getFortuneVOPage(fortunePage)); response.setPage(fortuneService.getFortuneVOPage(fortunePage));
return Result.success(result); return Result.success(response);
} }
/** /**
......
...@@ -216,11 +216,12 @@ public class ApiPolicyFollowController { ...@@ -216,11 +216,12 @@ public class ApiPolicyFollowController {
Set<String> policyNos = dtoList.stream() Set<String> policyNos = dtoList.stream()
.map(PolicyExcelDTO::getPolicyNo) .map(PolicyExcelDTO::getPolicyNo)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
List<Policy> existingPolicies = policyService.lambdaQuery() List<PolicyFollow> existingPolicies = policyFollowService.lambdaQuery()
.in(Policy::getPolicyNo, policyNos) .select(PolicyFollow::getPolicyNo)
.in(PolicyFollow::getPolicyNo, policyNos)
.list(); .list();
Set<String> existingPolicyNos = existingPolicies.stream() Set<String> existingPolicyNos = existingPolicies.stream()
.map(Policy::getPolicyNo) .map(PolicyFollow::getPolicyNo)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
if (CollectionUtils.isNotEmpty(existingPolicyNos)) { if (CollectionUtils.isNotEmpty(existingPolicyNos)) {
validateMsg = "保单号 " + String.join(", ", existingPolicyNos) + " 已存在,请检查后重新上传!"; validateMsg = "保单号 " + String.join(", ", existingPolicyNos) + " 已存在,请检查后重新上传!";
......
...@@ -825,7 +825,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService { ...@@ -825,7 +825,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
policy.setId(null); policy.setId(null);
policy.setPolicyBizId(policyBizId); policy.setPolicyBizId(policyBizId);
policy.setPlanBizId(planBizId); policy.setProductLaunchBizId(planBizId);
policy.setStatus(PolicyStatusEnum.INFORCE.getItemValue()); policy.setStatus(PolicyStatusEnum.INFORCE.getItemValue());
// 投保人姓名 // 投保人姓名
if (Objects.nonNull(apiPolicyholderInfoDto)) { if (Objects.nonNull(apiPolicyholderInfoDto)) {
...@@ -846,12 +846,11 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService { ...@@ -846,12 +846,11 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
// 首期保费(不含徽费,预缴保费)每期保费 // 首期保费(不含徽费,预缴保费)每期保费
policy.setInitialPremium(productPlan.getEachIssuePremium()); policy.setInitialPremium(productPlan.getEachIssuePremium());
// 保险公司 // 保险公司
policy.setInsurer(productPlan.getCompanyName()); policy.setInsuranceCompany(productPlan.getCompanyName());
// 是否预缴 // 是否预缴
policy.setIsPrepaid(Integer.parseInt(productPlan.getIsPrepay())); policy.setIsPrepaid(Integer.parseInt(productPlan.getIsPrepay()));
// 转保声明选项(字典) // 转保声明选项(字典)
policy.setPolicyTransfer(policyTransfer); policy.setPolicyTransfer(policyTransfer);
policy.setInsurer(productPlan.getCompanyName());
policy.setCreateTime(new Date()); policy.setCreateTime(new Date());
policy.setUpdateTime(new Date()); policy.setUpdateTime(new Date());
......
package com.yd.csf.service.dto;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO;
import lombok.Data;
/**
* 来佣检核页面-分页获取保单来佣列表
*/
@Data
public class CommissionPageResponse {
/**
* 来佣统计信息
*/
private CommissionStatisticsVO commissionStatisticsVO;
/**
* 来佣列表
*/
private Page<CommissionVO> page;
}
...@@ -17,6 +17,12 @@ import java.util.List; ...@@ -17,6 +17,12 @@ import java.util.List;
@Data @Data
public class CommissionQueryRequest extends PageDto implements Serializable { public class CommissionQueryRequest extends PageDto implements Serializable {
/** /**
* 预计入账 id
*/
@Schema(description = "预计入账 id")
private String commissionExpectedBizId;
/**
* 检核年月 * 检核年月
*/ */
@Schema(description = "检核年月 格式: yyyy-MM") @Schema(description = "检核年月 格式: yyyy-MM")
......
package com.yd.csf.service.dto;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.vo.FortuneVO;
import lombok.Data;
/**
* 出账检核页面-分页获取保单发佣列表(VO)
*/
@Data
public class FortunePageResponse {
private FortuneStatisticsVO statisticsVO;
private Page<FortuneVO> page;
}
package com.yd.csf.service.dto; package com.yd.csf.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.common.dto.PageDto; import com.yd.common.dto.PageDto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate;
import java.util.List; import java.util.List;
/** /**
...@@ -17,8 +19,8 @@ public class FortuneQueryRequest extends PageDto implements Serializable { ...@@ -17,8 +19,8 @@ public class FortuneQueryRequest extends PageDto implements Serializable {
/** /**
* 出账状态 * 出账状态
*/ */
@Schema(description = "出账状态 0=待出账 1=可出账,待检核 2=完成出账 3=部分出账 4=保留 5=已失效 6=可出账,检核完成, 字典值: csf_fortune_status") @Schema(description = "出账状态,可多选 0=待出账 1=可出账,待检核 2=完成出账 3=部分出账 4=保留 5=已失效 6=可出账,检核完成, 字典值: csf_fortune_status")
private String status; private List<String> statusList;
/** /**
* 保单号 * 保单号
...@@ -27,9 +29,35 @@ public class FortuneQueryRequest extends PageDto implements Serializable { ...@@ -27,9 +29,35 @@ public class FortuneQueryRequest extends PageDto implements Serializable {
private String policyNo; private String policyNo;
/** /**
* 检核日期 * 保险公司业务 id 列表
*/ */
@Schema(description = "检核日期") @Schema(description = "保险公司业务 id 列表")
private List<String> insuranceCompanyBizIdList;
/**
* 产品计划业务 id 列表
*/
@Schema(description = "产品计划业务 id 列表")
private List<String> productLaunchBizIdList;
/**
* 出账日(估)开始
*/
@Schema(description = "出账日(估)开始 格式:yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDate payoutDateStart;
/**
* 出账日(估)结束
*/
@Schema(description = "出账日(估)结束 格式:yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDate payoutDateEnd;
/**
* 检核年月
*/
@Schema(description = "检核年月,格式:yyyy-MM")
private String reconciliationYearMonth; private String reconciliationYearMonth;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -10,13 +10,16 @@ import java.util.List; ...@@ -10,13 +10,16 @@ import java.util.List;
@Data @Data
public class GenerateFortuneRequest { public class GenerateFortuneRequest {
// @Schema(description = "佣金业务id列表") @Schema(description = "保单号列表")
private List<String> policyNoList;
// @Schema(description = "入账业务id列表")
// private List<String> commissionBizIdList; // private List<String> commissionBizIdList;
// //
// @Schema(description = "expected fortune id 列表") // @Schema(description = "expected fortune id 列表")
// private List<Long> expectedFortuneIdList; // private List<Long> expectedFortuneIdList;
@Schema(description = "预计出账年月") // @Schema(description = "检核年月,格式:yyyy-MM")
@JsonFormat(pattern = "yyyy-MM") // @JsonFormat(pattern = "yyyy-MM")
private LocalDate payoutYearMonth; // private LocalDate payoutYearMonth;
} }
...@@ -23,20 +23,20 @@ public class PolicyFollowAddRequest implements Serializable { ...@@ -23,20 +23,20 @@ public class PolicyFollowAddRequest implements Serializable {
@Schema(description = "冷静期天数") @Schema(description = "冷静期天数")
private Integer coolingOffDays; private Integer coolingOffDays;
/** /**
* 保单生效日期 * 保单生效日期
*/ */
@Schema(description = "保单生效日期 格式:yyyy-MM-dd") @Schema(description = "保单生效日期 格式:yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date effectiveDate; private Date effectiveDate;
/** /**
* 签单日期 * 签单日期
*/ */
@Schema(description = "签单日期 格式:yyyy-MM-dd") @Schema(description = "签单日期 格式:yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date signDate; private Date signDate;
/** /**
* 预约业务id * 预约业务id
*/ */
@Schema(description = "预约业务id") @Schema(description = "预约业务id")
...@@ -78,7 +78,13 @@ public class PolicyFollowAddRequest implements Serializable { ...@@ -78,7 +78,13 @@ public class PolicyFollowAddRequest implements Serializable {
@Schema(description = "产品名称") @Schema(description = "产品名称")
private String productName; private String productName;
/** /**
* 产品计划业务id
*/
@Schema(description = "产品计划业务id")
private String productLaunchBizId;
/**
* 产品类别 * 产品类别
*/ */
@Schema(description = "产品类别") @Schema(description = "产品类别")
...@@ -88,13 +94,13 @@ public class PolicyFollowAddRequest implements Serializable { ...@@ -88,13 +94,13 @@ public class PolicyFollowAddRequest implements Serializable {
* 保险公司 * 保险公司
*/ */
@Schema(description = "保险公司") @Schema(description = "保险公司")
private String insurer; private String insuranceCompany;
/** /**
* 保险公司业务id * 保险公司业务id
*/ */
@Schema(description = "保险公司业务id") @Schema(description = "保险公司业务id")
private String insurerBizId; private String insuranceCompanyBizId;
/** /**
* 对账公司 * 对账公司
...@@ -144,5 +150,5 @@ public class PolicyFollowAddRequest implements Serializable { ...@@ -144,5 +150,5 @@ public class PolicyFollowAddRequest implements Serializable {
@Schema(description = "转介人") @Schema(description = "转介人")
private List<PolicyBroker> brokerList; private List<PolicyBroker> brokerList;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }
...@@ -67,14 +67,14 @@ public class PolicyFollowUpdateDto implements Serializable { ...@@ -67,14 +67,14 @@ public class PolicyFollowUpdateDto implements Serializable {
* 生效日期 * 生效日期
*/ */
@Schema(description = "生效日期", format = "yyyy-MM-dd") @Schema(description = "生效日期", format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date effectiveDate; private Date effectiveDate;
/** /**
* 续保日期 * 续保日期
*/ */
@Schema(description = "续保日期", format = "yyyy-MM-dd") @Schema(description = "续保日期", format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date renewalDate; private Date renewalDate;
/** /**
...@@ -102,10 +102,10 @@ public class PolicyFollowUpdateDto implements Serializable { ...@@ -102,10 +102,10 @@ public class PolicyFollowUpdateDto implements Serializable {
private Integer prepaidTerm; private Integer prepaidTerm;
/** /**
* 产品业务id * 产品计划业务id
*/ */
@Schema(description = "产品业务id") @Schema(description = "产品计划业务id")
private String productBizId; private String productLaunchBizId;
/** /**
* 产品名称 * 产品名称
...@@ -123,13 +123,13 @@ public class PolicyFollowUpdateDto implements Serializable { ...@@ -123,13 +123,13 @@ public class PolicyFollowUpdateDto implements Serializable {
* 保险公司 * 保险公司
*/ */
@Schema(description = "保险公司") @Schema(description = "保险公司")
private String insurer; private String insuranceCompany;
/** /**
* 保险公司业务id * 保险公司业务id
*/ */
@Schema(description = "保险公司业务id") @Schema(description = "保险公司业务id")
private String insurerBizId; private String insuranceCompanyBizId;
/** /**
* 对账公司 * 对账公司
...@@ -189,7 +189,7 @@ public class PolicyFollowUpdateDto implements Serializable { ...@@ -189,7 +189,7 @@ public class PolicyFollowUpdateDto implements Serializable {
* 最晚缴费日期 * 最晚缴费日期
*/ */
@Schema(description = "最晚缴费日期 格式: yyyy-MM-dd") @Schema(description = "最晚缴费日期 格式: yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date latestPaymentDate; private Date latestPaymentDate;
/** /**
......
...@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName; ...@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
/** /**
...@@ -38,9 +40,9 @@ public class Policy implements Serializable { ...@@ -38,9 +40,9 @@ public class Policy implements Serializable {
private String userBizId; private String userBizId;
/** /**
* 产品业务id * 产品计划业务id
*/ */
private String planBizId; private String productLaunchBizId;
/** /**
* 产品代码 * 产品代码
...@@ -60,12 +62,12 @@ public class Policy implements Serializable { ...@@ -60,12 +62,12 @@ public class Policy implements Serializable {
/** /**
* 保险公司 * 保险公司
*/ */
private String insurer; private String insuranceCompany;
/** /**
* 保险公司业务id * 保险公司业务id
*/ */
private String insurerBizId; private String insuranceCompanyBizId;
/** /**
* 地区 * 地区
......
...@@ -334,7 +334,25 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -334,7 +334,25 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest) { public Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest) {
LocalDate payoutYearMonth = generateFortuneRequest.getPayoutYearMonth(); // 查询所有保单号对应的入账记录
List<String> policyNoList = generateFortuneRequest.getPolicyNoList();
QueryWrapper<Commission> queryWrapperCommission = new QueryWrapper<>();
queryWrapperCommission.in("policy_no", policyNoList);
queryWrapperCommission.orderByAsc("reconciliation_year_month");
List<Commission> commissionList0 = this.list(queryWrapperCommission);
if (CollectionUtils.isEmpty(commissionList0)) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "根据保单号查询对应的入账记录失败");
}
// 获取最新的检核年月
String currentYearMonth = null;
for (Commission commission : commissionList0) {
if (StringUtils.isNotBlank(commission.getReconciliationYearMonth())) {
currentYearMonth = commission.getReconciliationYearMonth();
break;
}
}
LocalDate payoutYearMonth = LocalDate.parse(currentYearMonth + "-01", DateTimeFormatter.ofPattern("yyyy-MM"));
if (ObjectUtils.isEmpty(payoutYearMonth)) { if (ObjectUtils.isEmpty(payoutYearMonth)) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "请选择预计出账年月"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "请选择预计出账年月");
} }
...@@ -772,20 +790,34 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -772,20 +790,34 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@Override @Override
public CommissionStatisticsVO getCommissionStatistics(List<Long> commissionIds) { public CommissionStatisticsVO getCommissionStatistics(List<Long> commissionIds) {
if (CollectionUtils.isEmpty(commissionIds)) {
CommissionStatisticsVO commissionStatisticsVO = new CommissionStatisticsVO();
commissionStatisticsVO.setTotalPaidAmount(BigDecimal.ZERO);
commissionStatisticsVO.setExpectePaidAmount(BigDecimal.ZERO);
commissionStatisticsVO.setPendingPaidAmount(BigDecimal.ZERO);
commissionStatisticsVO.setDifferenceAmount(BigDecimal.ZERO);
commissionStatisticsVO.setTotalPolicyCount(0);
commissionStatisticsVO.setTotalPremium(BigDecimal.ZERO);
commissionStatisticsVO.setReconciliationCompanyCount(0);
commissionStatisticsVO.setTotalCompareCommissionCount(0);
commissionStatisticsVO.setSuccessCompareCommissionCount(0);
commissionStatisticsVO.setFailedCompareCommissionCount(0);
return commissionStatisticsVO;
}
// 自定义统计数据 // 自定义统计数据
CommissionStatisticsVO commissionStatistics = baseMapper.getCommissionStatistics(commissionIds); CommissionStatisticsVO commissionStatistics = baseMapper.getCommissionStatistics(commissionIds);
BigDecimal totalAmount = commissionStatistics.getTotalAmount(); // BigDecimal totalAmount = commissionStatistics.getTotalAmount();
BigDecimal totalPaidAmount = commissionStatistics.getTotalPaidAmount(); // BigDecimal totalPaidAmount = commissionStatistics.getTotalPaidAmount();
// 计算待入账金额 // // 计算待入账金额
commissionStatistics.setPendingPaidAmount(totalAmount.subtract(totalPaidAmount)); // commissionStatistics.setPendingPaidAmount(totalAmount.subtract(totalPaidAmount));
// 计算已入账比例 // // 计算已入账比例
BigDecimal divided = BigDecimal.ZERO; // BigDecimal divided = BigDecimal.ZERO;
if (totalAmount.compareTo(BigDecimal.ZERO) > 0) { // if (totalAmount.compareTo(BigDecimal.ZERO) > 0) {
divided = totalPaidAmount.divide(totalAmount, 4, RoundingMode.HALF_UP); // divided = totalPaidAmount.divide(totalAmount, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
} // }
// 格式化 % // // 格式化 %
commissionStatistics.setPaidAmountRatio(String.format("%.2f%%", divided.doubleValue() * 100)); // commissionStatistics.setPaidAmountRatio(divided);
return commissionStatistics; return commissionStatistics;
} }
......
...@@ -27,6 +27,7 @@ import com.yd.csf.service.service.IExpectedFortuneService; ...@@ -27,6 +27,7 @@ import com.yd.csf.service.service.IExpectedFortuneService;
import com.yd.csf.service.vo.CommissionVO; import com.yd.csf.service.vo.CommissionVO;
import com.yd.csf.service.vo.FortuneVO; import com.yd.csf.service.vo.FortuneVO;
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.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -68,10 +69,22 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -68,10 +69,22 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
if (fortuneQueryRequest == null) { if (fortuneQueryRequest == null) {
return queryWrapper; return queryWrapper;
} }
String status = fortuneQueryRequest.getStatus(); String reconciliationYearMonth = fortuneQueryRequest.getReconciliationYearMonth();
List<String> statusList = fortuneQueryRequest.getStatusList();
String policyNo = fortuneQueryRequest.getPolicyNo(); String policyNo = fortuneQueryRequest.getPolicyNo();
queryWrapper.eq(StringUtils.isNotBlank(status), "status", status); List<String> insuranceCompanyBizIdList = fortuneQueryRequest.getInsuranceCompanyBizIdList();
List<String> productLaunchBizIdList = fortuneQueryRequest.getProductLaunchBizIdList();
LocalDate payoutDateStart = fortuneQueryRequest.getPayoutDateStart();
LocalDate payoutDateEnd = fortuneQueryRequest.getPayoutDateEnd();
queryWrapper.eq(StringUtils.isNotBlank(reconciliationYearMonth), "reconciliation_year_month", reconciliationYearMonth);
queryWrapper.in(CollUtil.isNotEmpty(statusList), "status", statusList);
queryWrapper.eq(StringUtils.isNotBlank(policyNo), "policy_no", policyNo); queryWrapper.eq(StringUtils.isNotBlank(policyNo), "policy_no", policyNo);
queryWrapper.in(CollUtil.isNotEmpty(insuranceCompanyBizIdList), "insurance_company_biz_id", insuranceCompanyBizIdList);
queryWrapper.in(CollUtil.isNotEmpty(productLaunchBizIdList), "product_launch_biz_id", productLaunchBizIdList);
queryWrapper.gt(ObjectUtils.isNotEmpty(payoutDateStart), "payout_date", payoutDateStart);
queryWrapper.lt(ObjectUtils.isNotEmpty(payoutDateEnd), "payout_date", payoutDateEnd);
queryWrapper.orderByAsc("id"); queryWrapper.orderByAsc("id");
return queryWrapper; return queryWrapper;
......
...@@ -12,16 +12,16 @@ import java.math.BigDecimal; ...@@ -12,16 +12,16 @@ import java.math.BigDecimal;
public class CommissionStatisticsVO { public class CommissionStatisticsVO {
/** /**
* 总金额 * 入账金额(实)
*/ */
@Schema(description = "总金额") @Schema(description = "入账金额(实)")
private BigDecimal totalAmount; private BigDecimal totalPaidAmount;
/** /**
* 总入账金额 * 入账金额(估)
*/ */
@Schema(description = "总入账金额") @Schema(description = "入账金额(估)")
private BigDecimal totalPaidAmount; private BigDecimal expectePaidAmount;
/** /**
* 待入账金额 * 待入账金额
...@@ -30,10 +30,10 @@ public class CommissionStatisticsVO { ...@@ -30,10 +30,10 @@ public class CommissionStatisticsVO {
private BigDecimal pendingPaidAmount; private BigDecimal pendingPaidAmount;
/** /**
* 已入账比例(已入账金额/总金额 * 差额(估-实
*/ */
@Schema(description = "已入账比例(已入账金额/总金额)") @Schema(description = "差额(估-实)")
private String paidAmountRatio; private BigDecimal differenceAmount;
/** /**
* 总保单数 * 总保单数
...@@ -41,4 +41,34 @@ public class CommissionStatisticsVO { ...@@ -41,4 +41,34 @@ public class CommissionStatisticsVO {
@Schema(description = "总保单数") @Schema(description = "总保单数")
private Integer totalPolicyCount; private Integer totalPolicyCount;
/**
* 总保费
*/
@Schema(description = "总保费(HKD)")
private BigDecimal totalPremium;
/**
* 对账公司数
*/
@Schema(description = "对账公司数")
private Integer reconciliationCompanyCount;
/**
* 总比对记录数
*/
@Schema(description = "总比对记录数")
private Integer totalCompareCommissionCount;
/**
* 比对成功记录数
*/
@Schema(description = "比对成功记录数")
private Integer successCompareCommissionCount;
/**
* 比对失败记录数
*/
@Schema(description = "比对失败记录数")
private Integer failedCompareCommissionCount;
} }
...@@ -145,12 +145,12 @@ public class PolicyFollowDetailVO implements Serializable { ...@@ -145,12 +145,12 @@ public class PolicyFollowDetailVO implements Serializable {
/** /**
* 保险公司 * 保险公司
*/ */
private String insurer; private String insuranceCompany;
/** /**
* 保险公司业务id * 保险公司业务id
*/ */
private String insurerBizId; private String insuranceCompanyBizId;
/** /**
* 对账公司 * 对账公司
......
...@@ -42,6 +42,12 @@ public class PolicyVO { ...@@ -42,6 +42,12 @@ public class PolicyVO {
private String productName; private String productName;
/** /**
* 产品计划业务id
*/
@Schema(description = "产品计划业务id")
private String productLaunchBizId;
/**
* 产品类别 * 产品类别
*/ */
@Schema(description = "产品类别") @Schema(description = "产品类别")
...@@ -51,13 +57,13 @@ public class PolicyVO { ...@@ -51,13 +57,13 @@ public class PolicyVO {
* 保险公司 * 保险公司
*/ */
@Schema(description = "保险公司") @Schema(description = "保险公司")
private String insurer; private String insuranceCompany;
/** /**
* 保险公司业务id * 保险公司业务id
*/ */
@Schema(description = "保险公司业务id") @Schema(description = "保险公司业务id")
private String insurerBizId; private String insuranceCompanyBizId;
/** /**
* 保單持有人 * 保單持有人
...@@ -83,7 +89,7 @@ public class PolicyVO { ...@@ -83,7 +89,7 @@ public class PolicyVO {
@Schema(description = "期交保费") @Schema(description = "期交保费")
private BigDecimal paymentPremium; private BigDecimal paymentPremium;
/** /**
* 每期保费 * 每期保费
*/ */
@Schema(description = "每期保费") @Schema(description = "每期保费")
......
...@@ -9,12 +9,12 @@ ...@@ -9,12 +9,12 @@
<result property="policyBizId" column="policy_biz_id" /> <result property="policyBizId" column="policy_biz_id" />
<result property="policyNo" column="policy_no" /> <result property="policyNo" column="policy_no" />
<result property="userBizId" column="user_biz_id" /> <result property="userBizId" column="user_biz_id" />
<result property="planBizId" column="plan_biz_id" /> <result property="productLaunchBizId" column="product_launch_biz_id" />
<result property="productCode" column="product_code" /> <result property="productCode" column="product_code" />
<result property="productName" column="product_name" /> <result property="productName" column="product_name" />
<result property="productCate" column="product_cate" /> <result property="productCate" column="product_cate" />
<result property="insurer" column="insurer" /> <result property="insuranceCompany" column="insurance_company" />
<result property="insurerBizId" column="insurer_biz_id" /> <result property="insuranceCompanyBizId" column="insurance_company_biz_id" />
<result property="region" column="region" /> <result property="region" column="region" />
<result property="policyHolder" column="policy_holder" /> <result property="policyHolder" column="policy_holder" />
<result property="insured" column="insured" /> <result property="insured" column="insured" />
...@@ -52,8 +52,8 @@ ...@@ -52,8 +52,8 @@
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id,policy_biz_id,policy_no,user_biz_id,plan_biz_id,product_code, id,policy_biz_id,policy_no,user_biz_id,product_launch_biz_id,product_code,
product_name,product_cate,insurer,insurer_biz_id,region, product_name,product_cate,insurance_company,insurance_company_biz_id,region,
policy_holder,insured,sum_insured,payment_term,payment_frequency,payment_premium, policy_holder,insured,sum_insured,payment_term,payment_frequency,payment_premium,
status,currency,initial_premium,sign_date,issue_date, status,currency,initial_premium,sign_date,issue_date,
effective_date,cooling_off_end_date,cooling_off_days,renewal_date,is_prepaid,deductibles,prepaid_term, effective_date,cooling_off_end_date,cooling_off_days,renewal_date,is_prepaid,deductibles,prepaid_term,
......
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