Commit fbd31c8a by zhangxingmin

push

parent 0225290a
......@@ -229,4 +229,9 @@ public class ApiExpectedFortunePageResponse {
@Schema(description = "更新时间")
private LocalDateTime updateTime;
/**
* 发佣率(对应职级)
*/
@Schema(description = "发佣率(对应职级)")
private String commissionRatio;
}
......@@ -7,6 +7,8 @@ import com.yd.csf.feign.response.conditionconfig.ApiConditionConfigPageResponse;
import com.yd.csf.service.model.ConditionConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -20,4 +22,11 @@ public interface ConditionConfigMapper extends BaseMapper<ConditionConfig> {
IPage<ApiConditionConfigPageResponse> page(@Param("page") Page<ApiConditionConfigPageResponse> page,
@Param("request") ApiConditionConfigPageRequest request);
/**
* 根据业务员ID列表查询每个业务员对应的基础销售积分比例
* @param brokerBizIds 业务员ID列表
* @return 包含 brokerBizId 和 conditional_value 的 Map 列表
*/
List<Map<String, Object>> selectBrokerRatioByBizIds(@Param("list") List<String> brokerBizIds);
}
......@@ -9,6 +9,7 @@ import com.yd.csf.service.model.ConditionConfig;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -23,6 +24,8 @@ public interface IConditionConfigService extends IService<ConditionConfig> {
IPage<ApiConditionConfigPageResponse> page(Page<ApiConditionConfigPageResponse> page,
ApiConditionConfigPageRequest request);
List<Map<String, Object>> selectBrokerRatioByBizIds(List<String> brokerBizIds);
ConditionConfig queryOne(String conditionBizId);
List<ConditionConfig> queryList(ConditionConfigDto dto);
......
......@@ -12,10 +12,12 @@ import com.yd.csf.service.model.FormulaConfig;
import com.yd.csf.service.service.IConditionConfigService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -34,6 +36,11 @@ public class ConditionConfigServiceImpl extends ServiceImpl<ConditionConfigMappe
return baseMapper.page(page,request);
}
@Override
public List<Map<String, Object>> selectBrokerRatioByBizIds(List<String> brokerBizIds){
return baseMapper.selectBrokerRatioByBizIds(brokerBizIds);
}
/**
* 查询单个对象
* @param conditionBizId
......
......@@ -10,6 +10,7 @@ import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.dao.ExpectedFortuneMapper;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.service.IConditionConfigService;
import com.yd.csf.service.service.IExpectedFortuneService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.csf.service.service.PolicyFollowService;
......@@ -20,8 +21,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -42,6 +42,9 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe
@Resource
private PolicyFollowService policyFollowService;
@Resource
private IConditionConfigService iConditionConfigService;
@Override
public IPage<ApiExpectedFortunePageResponse> page(Page<ApiExpectedFortunePageResponse> page,
ApiExpectedFortunePageRequest request) {
......@@ -88,35 +91,65 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe
@Override
public List<ApiExpectedFortunePageResponse> toVOList(List<ExpectedFortune> expectedFortuneList) {
// 关联保单信息
if (CollUtil.isEmpty(expectedFortuneList)) {
return Collections.emptyList();
}
// 收集所有 brokerBizId
List<String> brokerBizIds = expectedFortuneList.stream()
.map(ExpectedFortune::getBrokerBizId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<String, String> brokerRatioMap = new HashMap<>();
if (CollUtil.isNotEmpty(brokerBizIds)) {
List<Map<String, Object>> ratioList = iConditionConfigService.selectBrokerRatioByBizIds(brokerBizIds);
brokerRatioMap = ratioList.stream()
.filter(map -> map.get("conditional_value") != null)
.collect(Collectors.toMap(
map -> (String) map.get("brokerBizId"),
map -> (String) map.get("conditional_value"),
(v1, v2) -> v1
));
}
List<String> policyNos = expectedFortuneList.stream()
.map(ExpectedFortune::getPolicyNo)
.collect(Collectors.toList());
List<Policy> policyList = policyService.lambdaQuery()
.in(Policy::getPolicyNo, expectedFortuneList.stream().map(ExpectedFortune::getPolicyNo).collect(Collectors.toList()))
.list();
.in(Policy::getPolicyNo, policyNos).list();
List<PolicyFollow> policyFollowList = policyFollowService.lambdaQuery()
.in(PolicyFollow::getPolicyNo, expectedFortuneList.stream().map(ExpectedFortune::getPolicyNo).collect(Collectors.toList()))
.list();
.in(PolicyFollow::getPolicyNo, policyNos).list();
Map<String, Policy> policyMap = policyList.stream()
.collect(Collectors.toMap(Policy::getPolicyNo, Function.identity()));
Map<String, PolicyFollow> policyFollowMap = policyFollowList.stream()
.collect(Collectors.toMap(PolicyFollow::getPolicyNo, Function.identity()));
List<ApiExpectedFortunePageResponse> expectedFortuneVOList = expectedFortuneList.stream().map(expectedFortune -> {
ApiExpectedFortunePageResponse expectedFortuneVO = new ApiExpectedFortunePageResponse();
BeanUtils.copyProperties(expectedFortune, expectedFortuneVO);
// 组装 VO
Map<String, String> finalBrokerRatioMap = brokerRatioMap;
List<ApiExpectedFortunePageResponse> voList = expectedFortuneList.stream().map(ef -> {
ApiExpectedFortunePageResponse vo = new ApiExpectedFortunePageResponse();
BeanUtils.copyProperties(ef, vo);
Policy policy = policyMap.get(expectedFortune.getPolicyNo());
PolicyFollow policyFollow= policyFollowMap.get(expectedFortune.getPolicyNo());
String ratio = finalBrokerRatioMap.get(ef.getBrokerBizId());
vo.setCommissionRatio(ratio);
Policy policy = policyMap.get(ef.getPolicyNo());
PolicyFollow follow = policyFollowMap.get(ef.getPolicyNo());
if (policy != null) {
expectedFortuneVO.setInsuranceCompany(policy.getInsuranceCompany());
expectedFortuneVO.setPremium(policy.getPaymentPremium());
vo.setInsuranceCompany(policy.getInsuranceCompany());
vo.setPremium(policy.getPaymentPremium());
}
if (policyFollow != null) {
expectedFortuneVO.setProductName(policyFollow.getProductName());
expectedFortuneVO.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
if (follow != null) {
vo.setProductName(follow.getProductName());
vo.setProductLaunchBizId(follow.getProductLaunchBizId());
}
return expectedFortuneVO;
return vo;
}).collect(Collectors.toList());
return expectedFortuneVOList;
return voList;
}
@Override
......
......@@ -12,4 +12,20 @@
and cc.is_deleted = 0
</where>
</select>
<select id="selectBrokerRatioByBizIds" resultType="java.util.Map">
SELECT
aaf.agent_id AS brokerBizId,
cc.conditional_value
FROM agent_accumulated_fyc aaf
LEFT JOIN condition_config cc
ON aaf.total_fyc >= cc.min_value
AND (cc.max_value IS NULL OR aaf.total_fyc &lt; cc.max_value)
AND cc.condition_type_biz_id = 'condition_type_sk33eRvu75eF8IRL'
WHERE aaf.agent_id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</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