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;
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.CommissionRuleBinding;
import com.yd.csf.service.model.Policy;
......@@ -32,6 +33,16 @@ public class ExecuteBillingDto {
private String batchBizId;
/**
* 期数(数字代表第几年)
*/
private Integer issueNumber;
/**
* 保单和转介人信息
*/
private QueryPolicyAndBrokerDto policyAndBrokerDto;
/**
* 来佣绑定的保单和转介人(销售)信息封装
*/
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;
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.response.basiclawcalculate.ApiGenerateBillingResponse;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
public interface ApiBasicLawCalculateService {
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
* @param algorithmDto
* @return
*/
@Override
public Result<List<AlgorithmResDto>> policyBrokerAlgorithm(AlgorithmDto algorithmDto) {
List<AlgorithmResDto> algorithmResDtoList = new ArrayList<>();
//校验 - 转介人业务ID(客户端用户表唯一业务ID)不能为空
......
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;
import com.yd.csf.service.dto.QueryPolicyAndBrokerDto;
import com.yd.csf.service.model.Policy;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author Zhang Jianan
......@@ -11,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
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;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.dto.PolicyDto;
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.dto.*;
import com.yd.csf.service.model.Policy;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.PolicyVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -27,4 +25,6 @@ public interface PolicyService extends IService<Policy> {
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;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto;
import com.yd.csf.service.dto.PolicyDto;
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.dto.*;
import com.yd.csf.service.model.AppointmentFile;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyAdditional;
......@@ -148,6 +145,11 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
);
return list;
}
@Override
public List<QueryPolicyAndBrokerDto> queryPolicyBrokerList(String policyNo) {
return baseMapper.queryPolicyBrokerList(policyNo);
}
}
......
......@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator {
})
.strategyConfig(builder -> {
builder.addInclude(
"agent_manage_relation"
"expected_fortune"
)
.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 @@
reconciliation_company,reconciliation_company_biz_id,policy_transfer,remark,is_deleted,creator_id,
updater_id,create_time,update_time
</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>
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