Commit 8b5993fa by zhangxingmin

push

parent ded1c937
...@@ -85,6 +85,12 @@ ...@@ -85,6 +85,12 @@
<artifactId>yd-question-feign</artifactId> <artifactId>yd-question-feign</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-insurance-base-feign</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.yd.csf.api.controller;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiBasicLawCalculateService;
import com.yd.csf.feign.client.basiclawcalculate.ApiBasicLawCalculateFeignClient;
import com.yd.csf.feign.request.basiclawcalculate.ApiGenerateBillingRequest;
import com.yd.csf.feign.response.basiclawcalculate.ApiGenerateBillingResponse;
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-10-21
*/
@RestController
@RequestMapping("/basicLaw/calculate")
@Validated
public class ApiBasicLawCalculateController implements ApiBasicLawCalculateFeignClient {
@Autowired
private ApiBasicLawCalculateService apiBasicLawCalculateService;
/**
* 生成出账
* @param request
* @return
*/
@Override
public Result<ApiGenerateBillingResponse> generateBilling(ApiGenerateBillingRequest request) {
return apiBasicLawCalculateService.generateBilling(request);
}
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.request.basiclawcalculate.ApiGenerateBillingRequest;
import com.yd.csf.feign.response.basiclawcalculate.ApiGenerateBillingResponse;
public interface ApiBasicLawCalculateService {
Result<ApiGenerateBillingResponse> generateBilling(ApiGenerateBillingRequest request);
}
package com.yd.csf.api.service.impl;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiBasicLawCalculateService;
import com.yd.csf.feign.request.basiclawcalculate.ApiGenerateBillingRequest;
import com.yd.csf.feign.response.basiclawcalculate.ApiGenerateBillingResponse;
import com.yd.csf.service.dto.CommissionDto;
import com.yd.csf.service.dto.PolicyDto;
import com.yd.csf.service.dto.QueryPolicyBrokerDto;
import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyBroker;
import com.yd.csf.service.service.CommissionService;
import com.yd.csf.service.service.PolicyBrokerService;
import com.yd.csf.service.service.PolicyService;
import com.yd.insurance.base.feign.client.ApiRelProductAnnouncementFeignClient;
import com.yd.insurance.base.feign.dto.ApiProductRatioDto;
import com.yd.insurance.base.feign.request.ApiQueryRatioRequest;
import com.yd.insurance.base.feign.response.ApiQueryRatioResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
@Service
public class ApiBasicLawCalculateServiceImpl implements ApiBasicLawCalculateService {
@Autowired
private PolicyService policyService;
@Autowired
private CommissionService commissionService;
@Autowired
private ApiRelProductAnnouncementFeignClient apiRelProductAnnouncementFeignClient;
@Autowired
private PolicyBrokerService policyBrokerService;
/**
* 生成出账
* @param request
* @return
*/
@Override
public Result<ApiGenerateBillingResponse> generateBilling(ApiGenerateBillingRequest request) {
//根据保单来佣业务id列表查询保单业务ID列表
List<Commission> commissionList = commissionService.queryList(CommissionDto.builder().commissionBizIdList(request.getCommissionBizIdList()).build());
if (CollectionUtils.isEmpty(commissionList)) {
throw new BusinessException("来佣数据不存在");
}
// 根据保单号分组,取每组的第一条, 获取最后的去重的来佣列表
List<Commission> distinctCommissionList = commissionList.stream()
.collect(Collectors.collectingAndThen(
Collectors.toMap(
Commission::getPolicyNo, // 保单号作为key
Function.identity(), // Commission对象本身作为value
(existing, replacement) -> existing // 遇到重复key时保留已存在的
),
map -> new ArrayList<>(map.values())));
//获取保单号列表
List<String> policyNoList = distinctCommissionList.stream().map(Commission::getPolicyNo).collect(Collectors.toList());
//查询保单列表信息
List<Policy> policyList = policyService.queryList(PolicyDto.builder().policyNoList(policyNoList).build());
//根据产品代码列表查询公告比例
ApiQueryRatioRequest ratioRequest = new ApiQueryRatioRequest();
List<ApiProductRatioDto> apiProductRatioDtoList = distinctCommissionList.stream().map(dto -> {
ApiProductRatioDto ratioDto = new ApiProductRatioDto();
if (!CollectionUtils.isEmpty(policyList)) {
//保单绑定的产品代码
List<Policy> policies = policyList.stream().filter(d -> d.getPolicyNo().equals(dto.getPolicyNo())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(policies)) {
Policy policy = policies.get(0);
ratioDto.setProductCode(policy.getProductCode());
}
}
//佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年等)
ratioDto.setCommissionPeriod(dto.getCommissionPeriod());
return ratioDto;
}).collect(Collectors.toList());
ratioRequest.setApiProductRatioDtoList(apiProductRatioDtoList);
Result<ApiQueryRatioResponse> result = apiRelProductAnnouncementFeignClient.queryRatio(ratioRequest);
if (!CollectionUtils.isEmpty(policyList)) {
//查询保单转介人(销售人员)关系数据
List<PolicyBroker> policyBrokerList = policyBrokerService.queryList(QueryPolicyBrokerDto.builder().policyNoList(policyNoList).build());
for (Policy policy : policyList) {
List<PolicyBroker> thisPolicyBrokerList = new ArrayList<>();
//当前保单的绑定的转介人(销售人员)列表
if (!CollectionUtils.isEmpty(policyBrokerList)) {
thisPolicyBrokerList = policyBrokerList.stream().filter(d -> d.getPolicyNo().equals(policy.getPolicyNo())).collect(Collectors.toList());
}
if (!CollectionUtils.isEmpty(thisPolicyBrokerList)) {
//遍历当前保单绑定的转介人列表,根据人绑定的基本法项目(计算销售佣金,推荐佣金,辅导员佣金,终身推荐奖等。)绑定什么项目算什么金额,按照佣金项目执行顺序来计算。
for (PolicyBroker policyBroker : thisPolicyBrokerList) {
}
}
}
}
return null;
}
}
package com.yd.csf.feign.client.basiclawcalculate;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.basiclawcalculate.ApiBasicLawCalculateFeignFallbackFactory;
import com.yd.csf.feign.request.basiclawcalculate.ApiGenerateBillingRequest;
import com.yd.csf.feign.response.basiclawcalculate.ApiGenerateBillingResponse;
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 = ApiBasicLawCalculateFeignFallbackFactory.class)
public interface ApiBasicLawCalculateFeignClient {
/**
* 生成出账
* @param request
* @return
*/
@PostMapping("/generate/billing")
Result<ApiGenerateBillingResponse> generateBilling(@Validated @RequestBody ApiGenerateBillingRequest request);
}
package com.yd.csf.feign.fallback.basiclawcalculate;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.basiclawcalculate.ApiBasicLawCalculateFeignClient;
import com.yd.csf.feign.request.basiclawcalculate.ApiGenerateBillingRequest;
import com.yd.csf.feign.response.basiclawcalculate.ApiGenerateBillingResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 香港保险服务-基本法计算接口信息Feign降级处理
*/
@Slf4j
@Component
public class ApiBasicLawCalculateFeignFallbackFactory implements FallbackFactory<ApiBasicLawCalculateFeignClient> {
@Override
public ApiBasicLawCalculateFeignClient create(Throwable cause) {
return new ApiBasicLawCalculateFeignClient() {
@Override
public Result<ApiGenerateBillingResponse> generateBilling(ApiGenerateBillingRequest request) {
return null;
}
};
}
}
package com.yd.csf.feign.request.basiclawcalculate;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 生成出账入参
*/
@Data
public class ApiGenerateBillingRequest {
/**
* 保单来佣业务id列表
*/
@NotEmpty(message = "保单来佣业务id列表不能为空")
private List<String> commissionBizIdList;
}
package com.yd.csf.feign.response.basiclawcalculate;
import lombok.Data;
/**
* 生成出账出参
*/
@Data
public class ApiGenerateBillingResponse {
}
...@@ -30,8 +30,10 @@ public class CsfMybatisPlusConfig { ...@@ -30,8 +30,10 @@ public class CsfMybatisPlusConfig {
@Bean @Bean
public MetaObjectHandler metaObjectHandler() { public MetaObjectHandler metaObjectHandler() {
return new MetaObjectHandler() { return new MetaObjectHandler() {
@Override @Override
public void insertFill(MetaObject metaObject) { public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
} }
......
...@@ -13,6 +13,11 @@ import java.util.List; ...@@ -13,6 +13,11 @@ import java.util.List;
public class AgentReferralRelationDto { public class AgentReferralRelationDto {
/** /**
* 推荐人ID(客户端用户表唯一业务ID,如果是PC,这里就是sys_user的用户ID)
*/
private String referrerId;
/**
* 被推荐人ID(客户端用户表唯一业务ID)列表 * 被推荐人ID(客户端用户表唯一业务ID)列表
*/ */
private List<String> agentIdList; private List<String> agentIdList;
......
package com.yd.csf.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CommissionDto {
/**
* 保单来佣业务id列表
*/
private List<String> commissionBizIdList;
}
package com.yd.csf.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PolicyDto {
/**
* 保单号列表
*/
private List<String> policyNoList;
}
package com.yd.csf.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class QueryPolicyBrokerDto {
/**
* 保单号列表
*/
private List<String> policyNoList;
}
...@@ -37,7 +37,7 @@ public class PolicyBroker implements Serializable { ...@@ -37,7 +37,7 @@ public class PolicyBroker implements Serializable {
private String brokerName; private String brokerName;
/** /**
* 转介人业务ID * 转介人业务ID(客户端用户表唯一业务ID)
*/ */
private String brokerBizId; private String brokerBizId;
......
...@@ -3,14 +3,12 @@ package com.yd.csf.service.service; ...@@ -3,14 +3,12 @@ package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
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.CommissionAddRequest; import com.yd.csf.service.dto.*;
import com.yd.csf.service.dto.CommissionQueryRequest;
import com.yd.csf.service.dto.CommissionUpdateRequest;
import com.yd.csf.service.dto.GenerateFortuneRequest;
import com.yd.csf.service.model.Commission; import com.yd.csf.service.model.Commission;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.CommissionVO; import com.yd.csf.service.vo.CommissionVO;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -31,4 +29,6 @@ public interface CommissionService extends IService<Commission> { ...@@ -31,4 +29,6 @@ public interface CommissionService extends IService<Commission> {
Boolean addCommission(CommissionAddRequest commissionAddRequest); Boolean addCommission(CommissionAddRequest commissionAddRequest);
Commission getByCommissionBizId(String commissionBizId); Commission getByCommissionBizId(String commissionBizId);
List<Commission> queryList(CommissionDto dto);
} }
package com.yd.csf.service.service; package com.yd.csf.service.service;
import com.yd.csf.service.dto.QueryPolicyBrokerDto;
import com.yd.csf.service.model.PolicyBroker; import com.yd.csf.service.model.PolicyBroker;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/** /**
* @author Zhang Jianan * @author Zhang Jianan
* @description 针对表【policy_broker(保单转介人表)】的数据库操作Service * @description 针对表【policy_broker(保单转介人表)】的数据库操作Service
...@@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface PolicyBrokerService extends IService<PolicyBroker> { public interface PolicyBrokerService extends IService<PolicyBroker> {
List<PolicyBroker> queryList(QueryPolicyBrokerDto dto);
} }
...@@ -3,11 +3,14 @@ package com.yd.csf.service.service; ...@@ -3,11 +3,14 @@ package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
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.PolicyQueryRequest; import com.yd.csf.service.dto.PolicyQueryRequest;
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 java.util.List;
/** /**
* @author Zhang Jianan * @author Zhang Jianan
* @description 针对表【policy(保单表)】的数据库操作Service * @description 针对表【policy(保单表)】的数据库操作Service
...@@ -18,4 +21,6 @@ public interface PolicyService extends IService<Policy> { ...@@ -18,4 +21,6 @@ public interface PolicyService extends IService<Policy> {
QueryWrapper<Policy> getQueryWrapper(PolicyQueryRequest policyQueryRequest); QueryWrapper<Policy> getQueryWrapper(PolicyQueryRequest policyQueryRequest);
Page<PolicyVO> getPolicyVOPage(Page<Policy> policyPage); Page<PolicyVO> getPolicyVOPage(Page<Policy> policyPage);
List<Policy> queryList(PolicyDto dto);
} }
...@@ -34,6 +34,7 @@ public class AgentReferralRelationServiceImpl extends ServiceImpl<AgentReferralR ...@@ -34,6 +34,7 @@ public class AgentReferralRelationServiceImpl extends ServiceImpl<AgentReferralR
List<AgentReferralRelation> list = baseMapper.selectList(new LambdaQueryWrapper<AgentReferralRelation>() List<AgentReferralRelation> list = baseMapper.selectList(new LambdaQueryWrapper<AgentReferralRelation>()
.eq(StringUtils.isNotBlank(dto.getTenantBizId()),AgentReferralRelation::getTenantBizId,dto.getTenantBizId()) .eq(StringUtils.isNotBlank(dto.getTenantBizId()),AgentReferralRelation::getTenantBizId,dto.getTenantBizId())
.eq(StringUtils.isNotBlank(dto.getProjectBizId()),AgentReferralRelation::getProjectBizId,dto.getProjectBizId()) .eq(StringUtils.isNotBlank(dto.getProjectBizId()),AgentReferralRelation::getProjectBizId,dto.getProjectBizId())
.eq(StringUtils.isNotBlank(dto.getReferrerId()),AgentReferralRelation::getReferrerId,dto.getReferrerId())
.in(!CollectionUtils.isEmpty(dto.getAgentIdList()),AgentReferralRelation::getAgentId,dto.getAgentIdList()) .in(!CollectionUtils.isEmpty(dto.getAgentIdList()),AgentReferralRelation::getAgentId,dto.getAgentIdList())
); );
return list; return list;
......
package com.yd.csf.service.service.impl; package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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 cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
...@@ -190,6 +191,19 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -190,6 +191,19 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
public Commission getByCommissionBizId(String commissionBizId) { public Commission getByCommissionBizId(String commissionBizId) {
return this.getOne(new QueryWrapper<Commission>().eq("commission_biz_id", commissionBizId)); return this.getOne(new QueryWrapper<Commission>().eq("commission_biz_id", commissionBizId));
} }
/**
* 查询列表
* @param dto
* @return
*/
@Override
public List<Commission> queryList(CommissionDto dto) {
List<Commission> list = baseMapper.selectList(new LambdaQueryWrapper<Commission>()
.in(CollectionUtils.isNotEmpty(dto.getCommissionBizIdList()),Commission::getCommissionBizId,dto.getCommissionBizIdList())
);
return list;
}
} }
......
package com.yd.csf.service.service.impl; package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.csf.service.dto.QueryPolicyBrokerDto;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyBroker; import com.yd.csf.service.model.PolicyBroker;
import com.yd.csf.service.service.PolicyBrokerService; import com.yd.csf.service.service.PolicyBrokerService;
import com.yd.csf.service.dao.PolicyBrokerMapper; import com.yd.csf.service.dao.PolicyBrokerMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/** /**
* @author Zhang Jianan * @author Zhang Jianan
...@@ -15,6 +21,18 @@ import org.springframework.stereotype.Service; ...@@ -15,6 +21,18 @@ import org.springframework.stereotype.Service;
public class PolicyBrokerServiceImpl extends ServiceImpl<PolicyBrokerMapper, PolicyBroker> public class PolicyBrokerServiceImpl extends ServiceImpl<PolicyBrokerMapper, PolicyBroker>
implements PolicyBrokerService{ implements PolicyBrokerService{
/**
* 查询列表
* @param dto
* @return
*/
@Override
public List<PolicyBroker> queryList(QueryPolicyBrokerDto dto) {
List<PolicyBroker> list = baseMapper.selectList(new LambdaQueryWrapper<PolicyBroker>()
.in(!CollectionUtils.isEmpty(dto.getPolicyNoList()),PolicyBroker::getPolicyNo,dto.getPolicyNoList())
);
return list;
}
} }
......
package com.yd.csf.service.service.impl; package com.yd.csf.service.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.csf.service.dto.PolicyDto;
import com.yd.csf.service.dto.PolicyQueryRequest; import com.yd.csf.service.dto.PolicyQueryRequest;
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.service.PolicyService; import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.dao.PolicyMapper; import com.yd.csf.service.dao.PolicyMapper;
import com.yd.csf.service.vo.PolicyVO; import com.yd.csf.service.vo.PolicyVO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -73,6 +77,19 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy> ...@@ -73,6 +77,19 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
policyVOPage.setRecords(policyVOList); policyVOPage.setRecords(policyVOList);
return policyVOPage; return policyVOPage;
} }
/**
* 查询列表
* @param dto
* @return
*/
@Override
public List<Policy> queryList(PolicyDto dto) {
List<Policy> list = baseMapper.selectList(new LambdaQueryWrapper<Policy>()
.in(!CollectionUtils.isEmpty(dto.getPolicyNoList()),Policy::getPolicyNo,dto.getPolicyNoList())
);
return list;
}
} }
......
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