Commit a83b541d by zhangxingmin

预计发佣

parent 7eed1e91
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiExpectedFortuneService;
import com.yd.csf.feign.client.expectedfortune.ApiExpectedFortuneFeignClient;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 预计发佣信息
*
* @author zxm
* @since 2025-11-17
*/
@RestController
@RequestMapping("/expectedFortune")
@Validated
public class ApiExpectedFortuneController implements ApiExpectedFortuneFeignClient {
@Autowired
private ApiExpectedFortuneService apiExpectedFortuneService;
/**
* 生成预计发佣
* @param request
* @return
*/
@Override
public Result<ApiGenerateExpectedFortuneResponse> generate(ApiGenerateExpectedFortuneRequest request) {
return apiExpectedFortuneService.generate(request);
}
/**
* 分页查询 - 预计发佣
* @param request
* @return
*/
@Override
public Result<IPage<ApiExpectedFortunePageResponse>> page(ApiExpectedFortunePageRequest request) {
return apiExpectedFortuneService.page(request);
}
}
package com.yd.csf.api.dto; package com.yd.csf.api.dto;
import com.yd.csf.service.dto.CommissionBindPolicyBrokerDto; import com.yd.csf.service.dto.CommissionBindPolicyBrokerDto;
import com.yd.csf.service.dto.QueryPolicyAndBrokerDto;
import com.yd.csf.service.model.Commission; import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.CommissionRuleBinding; import com.yd.csf.service.model.CommissionRuleBinding;
import com.yd.csf.service.model.Policy; import com.yd.csf.service.model.Policy;
...@@ -32,6 +33,16 @@ public class ExecuteBillingDto { ...@@ -32,6 +33,16 @@ public class ExecuteBillingDto {
private String batchBizId; private String batchBizId;
/** /**
* 期数(数字代表第几年)
*/
private Integer issueNumber;
/**
* 保单和转介人信息
*/
private QueryPolicyAndBrokerDto policyAndBrokerDto;
/**
* 来佣绑定的保单和转介人(销售)信息封装 * 来佣绑定的保单和转介人(销售)信息封装
*/ */
private CommissionBindPolicyBrokerDto brokerDto; private CommissionBindPolicyBrokerDto brokerDto;
......
package com.yd.csf.api.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GenerateExpectedFortuneDto {
/**
* 保单发佣批次ID
*/
private String batchBizId;
/**
* 保单发佣业务id
*/
private String fortuneBizId;
/**
* 保单号
*/
private String policyNo;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
private Integer fortunePeriod;
/**
* 发佣总期数
*/
private Integer fortuneTotalPeriod;
/**
* 转介人 (获得积分的业务员)
*/
private String broker;
/**
* 转介人业务ID (获得积分的业务员)
*/
private String brokerBizId;
/**
* 所属团队
*/
private String team;
/**
* 所属团队业务ID
*/
private String teamBizId;
/**
* 来佣名称
*/
private String fortuneName;
/**
* 发佣类型
*/
private String fortuneType;
/**
* 发佣金额
*/
private BigDecimal amount;
/**
* 发佣币种
*/
private String currency;
/**
* 佣金发放状态 0=待出账 1=可出账 2=已出账
*/
private String status;
/**
* 发佣日期
*/
private Date payoutDate;
/**
* 基本法项目配置表唯一业务ID
*/
private String ruleItemBizId;
/**
* 获得积分业务员绑定的基本法列表对应计算值
*/
private List<AlgorithmResDto> algorithmResDtoList;
}
package com.yd.csf.api.service; package com.yd.csf.api.service;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.csf.api.dto.AlgorithmDto;
import com.yd.csf.api.dto.AlgorithmResDto;
import com.yd.csf.api.dto.ExecuteBillingDto;
import com.yd.csf.feign.request.basiclawcalculate.ApiGenerateBillingRequest; import com.yd.csf.feign.request.basiclawcalculate.ApiGenerateBillingRequest;
import com.yd.csf.feign.response.basiclawcalculate.ApiGenerateBillingResponse; import com.yd.csf.feign.response.basiclawcalculate.ApiGenerateBillingResponse;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
public interface ApiBasicLawCalculateService { public interface ApiBasicLawCalculateService {
Result<ApiGenerateBillingResponse> generateBilling(ApiGenerateBillingRequest request); Result<ApiGenerateBillingResponse> generateBilling(ApiGenerateBillingRequest request);
Result<List<AlgorithmResDto>> policyBrokerAlgorithm(AlgorithmDto algorithmDto);
} }
package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse;
public interface ApiExpectedFortuneService {
Result<ApiGenerateExpectedFortuneResponse> generate(ApiGenerateExpectedFortuneRequest request);
Result<IPage<ApiExpectedFortunePageResponse>> page(ApiExpectedFortunePageRequest request);
}
...@@ -366,6 +366,7 @@ public class ApiBasicLawCalculateServiceImpl implements ApiBasicLawCalculateServ ...@@ -366,6 +366,7 @@ public class ApiBasicLawCalculateServiceImpl implements ApiBasicLawCalculateServ
* @param algorithmDto * @param algorithmDto
* @return * @return
*/ */
@Override
public Result<List<AlgorithmResDto>> policyBrokerAlgorithm(AlgorithmDto algorithmDto) { public Result<List<AlgorithmResDto>> policyBrokerAlgorithm(AlgorithmDto algorithmDto) {
List<AlgorithmResDto> algorithmResDtoList = new ArrayList<>(); List<AlgorithmResDto> algorithmResDtoList = new ArrayList<>();
//校验 - 转介人业务ID(客户端用户表唯一业务ID)不能为空 //校验 - 转介人业务ID(客户端用户表唯一业务ID)不能为空
......
package com.yd.csf.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ProjectEnum;
import com.yd.common.enums.TenantEnum;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.dto.*;
import com.yd.csf.api.service.ApiBasicLawCalculateService;
import com.yd.csf.api.service.ApiExpectedFortuneService;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse;
import com.yd.csf.service.dto.CommissionRuleBindingDto;
import com.yd.csf.service.dto.QueryPolicyAndBrokerDto;
import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.model.CommissionRuleBinding;
import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.service.ICommissionRuleBindingService;
import com.yd.csf.service.service.IExpectedFortuneService;
import com.yd.csf.service.service.PolicyService;
import com.yd.user.feign.client.clientuser.ApiClientUserFeignClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Slf4j
@Service
public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService {
@Autowired
private PolicyService policyService;
@Autowired
private ApiClientUserFeignClient apiClientUserFeignClient;
@Autowired
private ICommissionRuleBindingService iCommissionRuleBindingService;
@Autowired
private ApiBasicLawCalculateService apiBasicLawCalculateService;
@Autowired
private IExpectedFortuneService iExpectedFortuneService;
/**
* 生成预计发佣
* @param request
* @return
*/
@Override
public Result<ApiGenerateExpectedFortuneResponse> generate(ApiGenerateExpectedFortuneRequest request) {
//根据保单号查询保单和转介人列表信息
List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList = policyService.queryPolicyBrokerList(request.getPolicyNo());
if (CollectionUtils.isEmpty(queryPolicyAndBrokerDtoList)) {
throw new BusinessException("保单和转介人信息不存在");
}
//查询所有绑定基本法的业务员(客户端用户表用户), 计算业务员绑定的所有基本法对应的计算值, 新增积分明细和发佣记录
List<CommissionRuleBinding> commissionRuleBindingList = new ArrayList<>();
//根据租户ID和项目ID查询客户端用户ID列表
Result<List<String>> result = apiClientUserFeignClient.clientUserBizIdList(TenantEnum.YD.getTenantBizId(), ProjectEnum.CSF_MINI_PROGRAM.getProjectBizId());
if (!CollectionUtils.isEmpty(result.getData())) {
commissionRuleBindingList = iCommissionRuleBindingService.queryList(CommissionRuleBindingDto.builder()
.targetIdList(result.getData())
.build());
}
if (CollectionUtils.isEmpty(commissionRuleBindingList)) {
throw new BusinessException("绑定基本法数据不存在");
}
//遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
for (QueryPolicyAndBrokerDto brokerDto : queryPolicyAndBrokerDtoList) {
Integer paymentTerm = brokerDto.getPaymentTerm();
//获取保单的供款年期,遍历每个年期算出对应每个年期的佣金列表
if (Objects.isNull(paymentTerm)) {
throw new BusinessException("保单的供款年期不存在");
}
//遍历供款年期
for (int i = 1; i <= paymentTerm; i++) {
//执行 - 销售佣金 - 出账 (销售佣金基本法)
executeBilling(ExecuteBillingDto.builder()
.name(brokerDto.getBrokerName())
.policyAndBrokerDto(brokerDto)
.issueNumber(i)
.build());
//非销售佣金积基本法 - 遍历所有绑定基本法的用户(客户端用户表用户), 计算用户绑定的所有基本法对应的计算值, 新增积分明细和发佣记录 (和保单绑定的转介人在执行基本法项目的SQL时候进行关系对比)
for (CommissionRuleBinding binding : commissionRuleBindingList) {
//执行 - 奖励 (非销售佣金积基本法)
executeReward(ExecuteBillingDto.builder()
.clientUserBizId(binding.getTargetId())
.name(binding.getTargetName())
.policyAndBrokerDto(brokerDto)
.issueNumber(i)
.build());
}
}
}
return Result.success();
}
/**
* 执行 - 奖励(非销售佣金基本法)
* @param dto
* @return
*/
@Transactional(rollbackFor = Exception.class)
public Result executeReward(ExecuteBillingDto dto) {
QueryPolicyAndBrokerDto brokerDto = dto.getPolicyAndBrokerDto();
//构造销售佣金基本法项目的顺序下标值执行
List<Integer> executionOrderList = new ArrayList<>();
executionOrderList.add(1);
//执行获得积分用户的非销售佣金基本法项目
Result<List<AlgorithmResDto>> result = apiBasicLawCalculateService.policyBrokerAlgorithm(AlgorithmDto.builder()
.brokerBizId(brokerDto.getBrokerBizId())
.clientUserBizId(dto.getClientUserBizId())
.sqlTemplateParamDto(SqlTemplateParamDto.builder()
.brokerBizId(brokerDto.getBrokerBizId())
.clientUserBizId(dto.getClientUserBizId())
.policyNo(brokerDto.getPolicyNo())
.productBizId(brokerDto.getPlanBizId())
.productCode(brokerDto.getProductCode())
.term(brokerDto.getPaymentTerm())
.issueNumber(dto.getIssueNumber())
.build())
.executionOrderList(executionOrderList)
.isNegateExecutionOrderList(true)
.build());
//生成保单预计发佣表记录 (非销售佣金基本法)
generateExpectedFortune(GenerateExpectedFortuneDto.builder()
//获得积分的用户绑定的基本法列表对应计算值
.algorithmResDtoList(result.getData())
//保单发佣批次ID
//获得积分的用户姓名
.broker(dto.getName())
//获得积分的用户业务ID
.brokerBizId(dto.getClientUserBizId())
//发佣币种
.currency(brokerDto.getCurrency())
//发佣期数
.fortunePeriod(dto.getIssueNumber())
//发佣总期数
.fortuneTotalPeriod(brokerDto.getPaymentTerm())
//发佣类型 TODO
// .fortuneType()
//发佣日期
.payoutDate(new Date())
//保单号
.policyNo(brokerDto.getPolicyNo())
//佣金发放状态 0=待出账 1=可出账 2=已出账
.status(FortuneStatusEnum.WAIT.getItemValue())
//所属团队 TODO
// .team()
//所属团队业务ID TODO
// .teamBizId()
.build());
return Result.success();
}
/**
* 执行 - 销售佣金(销售佣金基本法)
* @param dto
* @return
*/
@Transactional(rollbackFor = Exception.class)
public Result executeBilling(ExecuteBillingDto dto) {
QueryPolicyAndBrokerDto brokerDto = dto.getPolicyAndBrokerDto();
//构造销售佣金基本法项目的顺序下标值执行
List<Integer> executionOrderList = new ArrayList<>();
executionOrderList.add(1);
//保单出账先执行销售佣金基本法项目,入完到积分明细表里后,再执行保单绑定人的其他基本法项目
Result<List<AlgorithmResDto>> result = apiBasicLawCalculateService.policyBrokerAlgorithm(AlgorithmDto.builder()
.brokerBizId(brokerDto.getBrokerBizId())
.clientUserBizId(brokerDto.getBrokerBizId())
.sqlTemplateParamDto(SqlTemplateParamDto.builder()
.brokerBizId(brokerDto.getBrokerBizId())
.policyNo(brokerDto.getPolicyNo())
.productBizId(brokerDto.getPlanBizId())
.productCode(brokerDto.getProductCode())
.term(brokerDto.getPaymentTerm())
.issueNumber(dto.getIssueNumber())
.build())
.executionOrderList(executionOrderList)
.isNegateExecutionOrderList(false)
.build());
//生成保单预计发佣表记录 (销售佣金基本法)
generateExpectedFortune(GenerateExpectedFortuneDto.builder()
//转介人绑定的基本法列表对应计算值
.algorithmResDtoList(result.getData())
//保单发佣批次ID
//获得积分的转介人(业务员)姓名
.broker(dto.getName())
//获得积分的转介人(业务员)业务ID
.brokerBizId(brokerDto.getBrokerBizId())
//发佣币种
.currency(brokerDto.getCurrency())
//发佣期数
.fortunePeriod(dto.getIssueNumber())
//发佣总期数
.fortuneTotalPeriod(brokerDto.getPaymentTerm())
//发佣类型 TODO
// .fortuneType()
//发佣日期
.payoutDate(new Date())
//保单号
.policyNo(brokerDto.getPolicyNo())
//佣金发放状态 0=待出账 1=可出账 2=已出账
.status(FortuneStatusEnum.WAIT.getItemValue())
//所属团队 TODO
// .team()
//所属团队业务ID TODO
// .teamBizId()
.build());
return Result.success();
}
/**
* 生成保单预计发佣表记录
* @return
*/
@Transactional(rollbackFor = Exception.class)
public Result generateExpectedFortune(GenerateExpectedFortuneDto fortuneDto) {
List<ExpectedFortune> fortuneList = new ArrayList<>();
if (!CollectionUtils.isEmpty(fortuneDto.getAlgorithmResDtoList())) {
//获得积分业务员绑定的基本法列表对应计算值结果集合
for (AlgorithmResDto algorithmResDto : fortuneDto.getAlgorithmResDtoList()) {
if (Objects.isNull(algorithmResDto.getCalculatedValue())
|| algorithmResDto.getCalculatedValue().compareTo(BigDecimal.ZERO) == 0){
//判空判0
continue;
}
ExpectedFortune fortune = new ExpectedFortune();
//发佣金额 -> 计算值 - sqlAlgorithmResultDtoList集合里面的计算值和值
fortune.setAmount(algorithmResDto.getCalculatedValue());
//保单发佣批次ID
// fortune.setBatchBizId(fortuneDto.getBatchBizId());
//转介人姓名 (获得积分的业务员)
fortune.setBroker(fortuneDto.getBroker());
//转介人业务ID (获得积分的业务员)
fortune.setBrokerBizId(fortuneDto.getBrokerBizId());
//出账项目名称 -> 基本法项目名称
fortune.setFortuneName(algorithmResDto.getItemName());
//保单预计发佣业务id
fortune.setExpectedFortuneBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_EXPECTED_FORTUNE.getCode()));
//基本法项目配置表唯一业务ID
fortune.setRuleItemBizId(algorithmResDto.getRuleItemBizId());
//发佣币种
fortune.setCurrency(fortuneDto.getCurrency());
//发佣期数
fortune.setFortunePeriod(fortuneDto.getFortunePeriod());
//发佣总期数
fortune.setFortuneTotalPeriod(fortuneDto.getFortuneTotalPeriod());
//保单号
fortune.setPolicyNo(fortuneDto.getPolicyNo());
fortuneList.add(fortune);
}
}
if (!CollectionUtils.isEmpty(fortuneList)) {
iExpectedFortuneService.saveOrUpdateBatch(fortuneList);
}
return Result.success();
}
/**
* 分页查询 - 预计发佣
* @param request
* @return
*/
@Override
public Result<IPage<ApiExpectedFortunePageResponse>> page(ApiExpectedFortunePageRequest request) {
Page<ApiExpectedFortunePageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiExpectedFortunePageResponse> iPage = iExpectedFortuneService.page(page, request);
return Result.success(iPage);
}
}
package com.yd.csf.feign.client.expectedfortune;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.expectedfortune.ApiExpectedFortuneFeignFallbackFactory;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 香港保险服务-预计发佣信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiExpectedFortuneFeignFallbackFactory.class)
public interface ApiExpectedFortuneFeignClient {
/**
* 生成预计发佣
* @param request
* @return
*/
@PostMapping("/generate")
Result<ApiGenerateExpectedFortuneResponse> generate(@Validated @RequestBody ApiGenerateExpectedFortuneRequest request);
/**
* 分页查询 - 预计发佣
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiExpectedFortunePageRequest request);
}
package com.yd.csf.feign.fallback.expectedfortune;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.expectedfortune.ApiExpectedFortuneFeignClient;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 香港保险服务-预计发佣信息Feign降级处理
*/
@Slf4j
@Component
public class ApiExpectedFortuneFeignFallbackFactory implements FallbackFactory<ApiExpectedFortuneFeignClient> {
@Override
public ApiExpectedFortuneFeignClient create(Throwable cause) {
return new ApiExpectedFortuneFeignClient() {
@Override
public Result<ApiGenerateExpectedFortuneResponse> generate(ApiGenerateExpectedFortuneRequest request) {
return null;
}
@Override
public Result page(ApiExpectedFortunePageRequest request) {
return null;
}
};
}
}
package com.yd.csf.feign.request.expectedfortune;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiExpectedFortunePageRequest extends PageDto {
/**
* 保单号
*/
private String policyNo;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
private Integer fortunePeriod;
/**
* 转介人名称
*/
private String broker;
}
package com.yd.csf.feign.request.expectedfortune;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiGenerateExpectedFortuneRequest {
/**
* 保单号
*/
@NotBlank(message = "保单号不能为空")
private String policyNo;
}
package com.yd.csf.feign.response.expectedfortune;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class ApiExpectedFortunePageResponse {
/**
* 主键ID
*/
private Long id;
/**
* 预计发佣表唯一业务id
*/
private String expectedFortuneBizId;
/**
* 保单号
*/
private String policyNo;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
private Integer fortunePeriod;
/**
* 发佣总期数
*/
private Integer fortuneTotalPeriod;
/**
* 转介人名称
*/
private String broker;
/**
* 转介人业务ID
*/
private String brokerBizId;
/**
* 团队名称
*/
private String team;
/**
* 所属团队业务ID
*/
private String teamBizId;
/**
* 发佣名称
*/
private String fortuneName;
/**
* 发佣类型
*/
private String fortuneType;
/**
* 发佣金额
*/
private BigDecimal amount;
/**
* 发佣币种
*/
private String currency;
/**
* 基本法项目配置表唯一业务ID
*/
private String ruleItemBizId;
/**
* 创建时间
*/
private LocalDateTime createTime;
}
package com.yd.csf.feign.response.expectedfortune;
import lombok.Data;
@Data
public class ApiGenerateExpectedFortuneResponse {
}
package com.yd.csf.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.service.model.ExpectedFortune;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 预计发佣表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-11-17
*/
public interface ExpectedFortuneMapper extends BaseMapper<ExpectedFortune> {
IPage<ApiExpectedFortunePageResponse> page(@Param("page") Page<ApiExpectedFortunePageResponse> page,
@Param("request") ApiExpectedFortunePageRequest request);
}
package com.yd.csf.service.dao; package com.yd.csf.service.dao;
import com.yd.csf.service.dto.QueryPolicyAndBrokerDto;
import com.yd.csf.service.model.Policy; import com.yd.csf.service.model.Policy;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @author Zhang Jianan * @author Zhang Jianan
...@@ -11,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -11,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface PolicyMapper extends BaseMapper<Policy> { public interface PolicyMapper extends BaseMapper<Policy> {
List<QueryPolicyAndBrokerDto> queryPolicyBrokerList(@Param("policyNo") String policyNo);
} }
......
package com.yd.csf.service.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 保单和转介人信息
*/
@Data
public class QueryPolicyAndBrokerDto {
//======保单信息start=======
/**
* 保单号
*/
private String policyNo;
/**
* 用户业务id
*/
private String userBizId;
/**
* 产品业务id
*/
private String planBizId;
/**
* 产品代码
*/
private String productCode;
/**
* 供款年期(字典)
*/
private Integer paymentTerm;
/**
* 币种
*/
private String currency;
//======保单信息end=======
//======保单转介人信息start=======
/**
* 转介人名称
*/
private String brokerName;
/**
* 转介人业务ID(客户端用户表唯一业务ID)
*/
private String brokerBizId;
/**
* 所属团队
*/
private String team;
/**
* 所属团队业务id
*/
private String teamBizId;
//======保单转介人信息end=======
}
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 预计发佣表
* </p>
*
* @author zxm
* @since 2025-11-17
*/
@Getter
@Setter
@TableName("expected_fortune")
public class ExpectedFortune implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 预计发佣表唯一业务id
*/
@TableField("expected_fortune_biz_id")
private String expectedFortuneBizId;
/**
* 保单号
*/
@TableField("policy_no")
private String policyNo;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@TableField("fortune_period")
private Integer fortunePeriod;
/**
* 发佣总期数
*/
@TableField("fortune_total_period")
private Integer fortuneTotalPeriod;
/**
* 转介人名称
*/
@TableField("broker")
private String broker;
/**
* 转介人业务ID
*/
@TableField("broker_biz_id")
private String brokerBizId;
/**
* 团队名称
*/
@TableField("team")
private String team;
/**
* 所属团队业务ID
*/
@TableField("team_biz_id")
private String teamBizId;
/**
* 发佣名称
*/
@TableField("fortune_name")
private String fortuneName;
/**
* 发佣类型
*/
@TableField("fortune_type")
private String fortuneType;
/**
* 发佣金额
*/
@TableField("amount")
private BigDecimal amount;
/**
* 发佣币种
*/
@TableField("currency")
private String currency;
/**
* 佣金发放状态 0=待出账 1=可出帐 2=已出账
*/
@TableField("status")
private String status;
/**
* 是否含税 0=No, 1=Yes
*/
@TableField("is_tax")
private Integer isTax;
/**
* 应缴税额
*/
@TableField("tax_amount")
private BigDecimal taxAmount;
/**
* 税后发佣
*/
@TableField("net_amount")
private BigDecimal netAmount;
/**
* 基本法项目配置表唯一业务ID
*/
@TableField("rule_item_biz_id")
private String ruleItemBizId;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.service.model.ExpectedFortune;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 预计发佣表 服务类
* </p>
*
* @author zxm
* @since 2025-11-17
*/
public interface IExpectedFortuneService extends IService<ExpectedFortune> {
IPage<ApiExpectedFortunePageResponse> page(Page<ApiExpectedFortunePageResponse> page,
ApiExpectedFortunePageRequest request);
}
...@@ -2,13 +2,11 @@ package com.yd.csf.service.service; ...@@ -2,13 +2,11 @@ package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.dto.PolicyDto; import com.yd.csf.service.dto.*;
import com.yd.csf.service.dto.PolicyQueryRequest;
import com.yd.csf.service.dto.PolicyUpdateRequest;
import com.yd.csf.service.dto.QueryPolicyDto;
import com.yd.csf.service.model.Policy; import com.yd.csf.service.model.Policy;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.PolicyVO; import com.yd.csf.service.vo.PolicyVO;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -27,4 +25,6 @@ public interface PolicyService extends IService<Policy> { ...@@ -27,4 +25,6 @@ public interface PolicyService extends IService<Policy> {
List<Policy> queryList(QueryPolicyDto dto); List<Policy> queryList(QueryPolicyDto dto);
List<QueryPolicyAndBrokerDto> queryPolicyBrokerList(String policyNo);
} }
package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.dao.ExpectedFortuneMapper;
import com.yd.csf.service.service.IExpectedFortuneService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 预计发佣表 服务实现类
* </p>
*
* @author zxm
* @since 2025-11-17
*/
@Service
public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMapper, ExpectedFortune> implements IExpectedFortuneService {
@Override
public IPage<ApiExpectedFortunePageResponse> page(Page<ApiExpectedFortunePageResponse> page,
ApiExpectedFortunePageRequest request) {
return baseMapper.page(page,request);
}
}
...@@ -8,10 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -8,10 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.common.enums.ResultCode; import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException; import com.yd.common.exception.BusinessException;
import com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto; import com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto;
import com.yd.csf.service.dto.PolicyDto; import com.yd.csf.service.dto.*;
import com.yd.csf.service.dto.PolicyQueryRequest;
import com.yd.csf.service.dto.PolicyUpdateRequest;
import com.yd.csf.service.dto.QueryPolicyDto;
import com.yd.csf.service.model.AppointmentFile; import com.yd.csf.service.model.AppointmentFile;
import com.yd.csf.service.model.Policy; import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyAdditional; import com.yd.csf.service.model.PolicyAdditional;
...@@ -148,6 +145,11 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy> ...@@ -148,6 +145,11 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
); );
return list; return list;
} }
@Override
public List<QueryPolicyAndBrokerDto> queryPolicyBrokerList(String policyNo) {
return baseMapper.queryPolicyBrokerList(policyNo);
}
} }
......
...@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator { ...@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator {
}) })
.strategyConfig(builder -> { .strategyConfig(builder -> {
builder.addInclude( builder.addInclude(
"agent_manage_relation" "expected_fortune"
) )
.entityBuilder() .entityBuilder()
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.csf.service.dao.ExpectedFortuneMapper">
<select id="page" resultType="com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse">
select * from expected_fortune ef
<where>
<if test="request.broker != null and request.broker != ''">
and ef.broker like concat('%', #{request.broker}, '%')
</if>
<if test="request.fortunePeriod != null">
and ef.fortune_period = #{request.fortunePeriod}
</if>
</where>
</select>
</mapper>
...@@ -58,4 +58,17 @@ ...@@ -58,4 +58,17 @@
reconciliation_company,reconciliation_company_biz_id,policy_transfer,remark,is_deleted,creator_id, reconciliation_company,reconciliation_company_biz_id,policy_transfer,remark,is_deleted,creator_id,
updater_id,create_time,update_time updater_id,create_time,update_time
</sql> </sql>
<select id="queryPolicyBrokerList"
resultType="com.yd.csf.service.dto.QueryPolicyAndBrokerDto">
select p.*,pb.*
from policy p
left join policy_broker pb on pb.policy_no = p.policy_no and pb.is_deleted = 0
<where>
<if test="policyNo != null and policyNo != ''">
and p.policy_no = #{policyNo}
</if>
and p.is_deleted = 0
</where>
</select>
</mapper> </mapper>
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