|
|
@@ -35,6 +35,7 @@ import com.jzg.organization.client.OrgClient;
|
|
|
import com.jzg.organization.mapper.*;
|
|
|
import com.jzg.organization.service.*;
|
|
|
import io.seata.spring.annotation.GlobalTransactional;
|
|
|
+import org.apache.http.util.TextUtils;
|
|
|
import org.redisson.api.RedissonClient;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
@@ -98,6 +99,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
|
|
|
/**
|
|
|
* 添加方案
|
|
|
+ *
|
|
|
* @param ptlSchemeSaveVo 车险报价的方案
|
|
|
* @return HttpResult<Boolean>
|
|
|
*/
|
|
|
@@ -124,8 +126,8 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
List<PtlSchemeInfo> ptlSchemeInfoList = ptlSchemeSaveVo.getPtlSchemeInfoList();
|
|
|
// modify by lipf, 解决描述为空时,修改失效的bug 2026年4月21日17:04:15
|
|
|
for (PtlSchemeInfo ptlSchemeInfo : ptlSchemeInfoList) {
|
|
|
- var desc = ptlSchemeInfo.getDescription();
|
|
|
- if(desc == null){
|
|
|
+ var desc = ptlSchemeInfo.getDescription();
|
|
|
+ if (desc == null) {
|
|
|
ptlSchemeInfo.setDescription("");
|
|
|
}
|
|
|
}
|
|
|
@@ -162,8 +164,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
*/
|
|
|
private void cleanDrivingIntention(List<PtlSchemeInfo> ptlSchemeInfoList) {
|
|
|
List<String> ids = ptlSchemeInfoList.stream().map(info -> info.getId()).collect(Collectors.toList());
|
|
|
- ptlSchemeInsuranceDrivingIntentionMapper.delete(new LambdaQueryWrapper<PtlSchemeInsuranceDrivingIntention>()
|
|
|
- .in(PtlSchemeInsuranceDrivingIntention::getSchemeInfoId, ids));
|
|
|
+ ptlSchemeInsuranceDrivingIntentionMapper.delete(new LambdaQueryWrapper<PtlSchemeInsuranceDrivingIntention>().in(PtlSchemeInsuranceDrivingIntention::getSchemeInfoId, ids));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -173,8 +174,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
*/
|
|
|
private void cleanInsurance(List<PtlSchemeInfo> ptlSchemeInfoList) {
|
|
|
List<String> ids = ptlSchemeInfoList.stream().map(PtlSchemeInfo::getId).collect(Collectors.toList());
|
|
|
- ptlSchemeInsuranceMapper.delete(new LambdaQueryWrapper<PtlSchemeInsurance>()
|
|
|
- .in(PtlSchemeInsurance::getSchemeInfoId, ids));
|
|
|
+ ptlSchemeInsuranceMapper.delete(new LambdaQueryWrapper<PtlSchemeInsurance>().in(PtlSchemeInsurance::getSchemeInfoId, ids));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -183,20 +183,17 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
* @return
|
|
|
*/
|
|
|
private void cleanRules(PtlScheme ptlScheme) {
|
|
|
- ptlSchemeRulesAttrLinkMapper.delete(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>()
|
|
|
- .eq(PtlSchemeRulesAttrLink::getSchemeId, ptlScheme.getId()));
|
|
|
+ ptlSchemeRulesAttrLinkMapper.delete(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>().eq(PtlSchemeRulesAttrLink::getSchemeId, ptlScheme.getId()));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public PtlSchemeQueryVo getScheme(String id) {
|
|
|
- log.info("根据方案id=[{}]获取方案信息(ptl_scheme_info)",id);
|
|
|
+ log.info("根据方案id=[{}]获取方案信息(ptl_scheme_info)", id);
|
|
|
//获取方案信息
|
|
|
- PtlSchemeInfo ptlSchemeInfo = ptlSchemeInfoMapper.selectOne(new LambdaQueryWrapper<PtlSchemeInfo>()
|
|
|
- .eq(PtlSchemeInfo::getId, id));
|
|
|
+ PtlSchemeInfo ptlSchemeInfo = ptlSchemeInfoMapper.selectOne(new LambdaQueryWrapper<PtlSchemeInfo>().eq(PtlSchemeInfo::getId, id));
|
|
|
AssertionUtils.isFail(Objects.isNull(ptlSchemeInfo), "方案不存在");
|
|
|
//获取方案信息
|
|
|
- PtlScheme ptlScheme = ptlSchemeMapper.selectOne(new LambdaQueryWrapper<PtlScheme>()
|
|
|
- .eq(PtlScheme::getId, ptlSchemeInfo.getSchemeId()));
|
|
|
+ PtlScheme ptlScheme = ptlSchemeMapper.selectOne(new LambdaQueryWrapper<PtlScheme>().eq(PtlScheme::getId, ptlSchemeInfo.getSchemeId()));
|
|
|
|
|
|
AssertionUtils.isFail(Objects.isNull(ptlScheme), "方案不存在");
|
|
|
|
|
|
@@ -234,8 +231,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
List<PtlSchemeInsuranceDrivingIntention> ptlSchemeInsuranceDrivingIntentions = ptlSchemeInsuranceDrivingIntentionMapper.getSchemeDrivingIntention(ptlSchemeInfo.getId());
|
|
|
|
|
|
//获取规则
|
|
|
- List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>()
|
|
|
- .eq(PtlSchemeRulesAttrLink::getSchemeId, ptlScheme.getId()));
|
|
|
+ List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>().eq(PtlSchemeRulesAttrLink::getSchemeId, ptlScheme.getId()));
|
|
|
|
|
|
List<PtlAgreementUndwrtRulesAttr> agreementRulesVo = rulesGet(ptlScheme.getCompanyId(), ptlScheme.getId());
|
|
|
|
|
|
@@ -246,21 +242,14 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
@Override
|
|
|
public PtlSchemeQueryVo getSchemeAll(String companyId, String productId, String schemeType, String energyType, String vehicleType, String carnature) {
|
|
|
//获取方案信息
|
|
|
- PtlScheme ptlScheme = ptlSchemeMapper.selectOne(new LambdaQueryWrapper<PtlScheme>()
|
|
|
- .eq(PtlScheme::getCompanyId, companyId)
|
|
|
- .eq(PtlScheme::getVehicleType, vehicleType)
|
|
|
- .eq(PtlScheme::getCarnature, carnature)
|
|
|
- .eq(PtlScheme::getEnergyType, energyType)
|
|
|
- .eq(PtlScheme::getProductId, productId));
|
|
|
+ PtlScheme ptlScheme = ptlSchemeMapper.selectOne(new LambdaQueryWrapper<PtlScheme>().eq(PtlScheme::getCompanyId, companyId).eq(PtlScheme::getVehicleType, vehicleType).eq(PtlScheme::getCarnature, carnature).eq(PtlScheme::getEnergyType, energyType).eq(PtlScheme::getProductId, productId));
|
|
|
|
|
|
if (Objects.isNull(ptlScheme)) {
|
|
|
throw new NoneException("方案不存在");
|
|
|
}
|
|
|
|
|
|
//获取方案信息
|
|
|
- List<PtlSchemeInfo> ptlSchemeInfos = ptlSchemeInfoMapper.selectList(new LambdaQueryWrapper<PtlSchemeInfo>()
|
|
|
- .eq(PtlSchemeInfo::getSchemeId, ptlScheme.getId())
|
|
|
- .eq(PtlSchemeInfo::getSchemeType, schemeType));
|
|
|
+ List<PtlSchemeInfo> ptlSchemeInfos = ptlSchemeInfoMapper.selectList(new LambdaQueryWrapper<PtlSchemeInfo>().eq(PtlSchemeInfo::getSchemeId, ptlScheme.getId()).eq(PtlSchemeInfo::getSchemeType, schemeType));
|
|
|
|
|
|
List<PtlSchemeQueryVo.Scheme> schemes = new ArrayList<>();
|
|
|
ptlSchemeInfos.forEach(ptlSchemeInfo -> {
|
|
|
@@ -284,8 +273,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
});
|
|
|
|
|
|
//获取规则
|
|
|
- List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>()
|
|
|
- .eq(PtlSchemeRulesAttrLink::getSchemeId, ptlScheme.getId()));
|
|
|
+ List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>().eq(PtlSchemeRulesAttrLink::getSchemeId, ptlScheme.getId()));
|
|
|
|
|
|
List<PtlAgreementUndwrtRulesAttr> agreementRulesVo = rulesGet(ptlScheme.getCompanyId(), ptlScheme.getId());
|
|
|
|
|
|
@@ -310,12 +298,10 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
|
|
|
@Override
|
|
|
public List<PtlAgreementUndwrtRulesAttr> rulesGet(String companyId, String schemeId) {
|
|
|
- List<PtlSchemeRulesAttrLink> linkList = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>()
|
|
|
- .eq(PtlSchemeRulesAttrLink::getSchemeId, schemeId));
|
|
|
+ List<PtlSchemeRulesAttrLink> linkList = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>().eq(PtlSchemeRulesAttrLink::getSchemeId, schemeId));
|
|
|
// 获取费用因子属性
|
|
|
List<PtlAgreementUndwrtRulesAttr> attrList = agreementUndwrtRulesAttrService.getUndwrtRulesAttrList(companyId);
|
|
|
- Map<String, PtlAgreementUndwrtRulesAttr> attrMap = attrList.stream()
|
|
|
- .collect(Collectors.toMap(PtlAgreementUndwrtRulesAttr::getAttrCode, attr -> attr));
|
|
|
+ Map<String, PtlAgreementUndwrtRulesAttr> attrMap = attrList.stream().collect(Collectors.toMap(PtlAgreementUndwrtRulesAttr::getAttrCode, attr -> attr));
|
|
|
List<PtlAgreementUndwrtRulesAttr> newAttrList = new ArrayList<>();
|
|
|
linkList.forEach(link -> {
|
|
|
if (attrMap.containsKey(link.getAttrCode())) {
|
|
|
@@ -364,8 +350,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
public List<PtlAgreementInsCompanyVo> ruleFilterCompany(SchemeRuleFilterVo schemeRuleFilterVo) {
|
|
|
String userSystemCode = baseController.getUserSystemCode();
|
|
|
String systemCode = baseController.getSystemCode();
|
|
|
- log.info("租户匹配保司以及保司下的协议等信息。 schemeRuleFilterVo=[{}],userSystemCode=[{}],systemCode=[{}]",
|
|
|
- JSONUtil.toJsonStr(schemeRuleFilterVo),userSystemCode,systemCode);
|
|
|
+ log.info("租户匹配保司以及保司下的协议等信息。 schemeRuleFilterVo=[{}],userSystemCode=[{}],systemCode=[{}]", JSONUtil.toJsonStr(schemeRuleFilterVo), userSystemCode, systemCode);
|
|
|
//根据权限获取所有保司
|
|
|
HttpResult<List<EsmInsCompany>> companyListResult = esmInsCompanyClient.getUserCompany(systemCode);
|
|
|
log.info("租户[{}]有权限的保司有[{}]个", systemCode, CollUtil.size(companyListResult.getData()));
|
|
|
@@ -374,30 +359,22 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
// 业务员的归属权限是可选参数,不选的话不进行过滤
|
|
|
companyList = salespersonFilterCompanyList(schemeRuleFilterVo, companyList);
|
|
|
|
|
|
- log.info("根据权限获取到的保司个数是[{}].systemCode=[{}]", CollUtil.size(companyList),systemCode);
|
|
|
- if(CollUtil.isEmpty(companyList)){
|
|
|
- log.info("租户[{}]没有可报价的保险公司,请到平台系统的【租户管理】-【功能配置】页面进行配置并且查看对应公司的协议,费用是否维护好",systemCode);
|
|
|
+ log.info("根据权限获取到的保司个数是[{}].systemCode=[{}]", CollUtil.size(companyList), systemCode);
|
|
|
+ if (CollUtil.isEmpty(companyList)) {
|
|
|
+ log.info("租户[{}]没有可报价的保险公司,请到平台系统的【租户管理】-【功能配置】页面进行配置并且查看对应公司的协议,费用是否维护好", systemCode);
|
|
|
AssertionUtils.isFail(companyList.isEmpty(), "没有可报价的保险公司");
|
|
|
}
|
|
|
|
|
|
//根据基本规则 能源、车辆类型、使用性质获取方案
|
|
|
- List<PtlScheme> ptlSchemes = ptlSchemeMapper.selectList(new LambdaQueryWrapper<PtlScheme>()
|
|
|
- .eq(PtlScheme::getEnergyType, schemeRuleFilterVo.getCarInfo().getEnergyTypeCode().equals("0") ? "0" : "1")
|
|
|
- .like(PtlScheme::getCarnature, schemeRuleFilterVo.getCarInfo().getCarNatureCode())
|
|
|
- .like(PtlScheme::getVehicleType, schemeRuleFilterVo.getCarInfo().getCarKindCode())
|
|
|
- .eq(PtlScheme::getProductId, schemeRuleFilterVo.getProductId())
|
|
|
- .eq(PtlScheme::getIsDelete, 0));
|
|
|
- log.info("根据车辆信息匹配保险方案:匹配到[{}]个方案。 energyType(能源类型)=[{}],carNatureCode(使用性质)=[{}],carKindCode(车辆性质)=[{}], productId(产品id)=[{}]",
|
|
|
- CollUtil.size(ptlSchemes), schemeRuleFilterVo.getCarInfo().getEnergyTypeCode(), schemeRuleFilterVo.getCarInfo().getCarNatureCode(),schemeRuleFilterVo.getCarInfo().getCarKindCode(),
|
|
|
- schemeRuleFilterVo.getProductId());
|
|
|
+ List<PtlScheme> ptlSchemes = ptlSchemeMapper.selectList(new LambdaQueryWrapper<PtlScheme>().eq(PtlScheme::getEnergyType, schemeRuleFilterVo.getCarInfo().getEnergyTypeCode().equals("0") ? "0" : "1").like(PtlScheme::getCarnature, schemeRuleFilterVo.getCarInfo().getCarNatureCode()).like(PtlScheme::getVehicleType, schemeRuleFilterVo.getCarInfo().getCarKindCode()).eq(PtlScheme::getProductId, schemeRuleFilterVo.getProductId()).eq(PtlScheme::getIsDelete, 0));
|
|
|
+ log.info("根据车辆信息匹配保险方案:匹配到[{}]个方案。 energyType(能源类型)=[{}],carNatureCode(使用性质)=[{}],carKindCode(车辆性质)=[{}], productId(产品id)=[{}]", CollUtil.size(ptlSchemes), schemeRuleFilterVo.getCarInfo().getEnergyTypeCode(), schemeRuleFilterVo.getCarInfo().getCarNatureCode(), schemeRuleFilterVo.getCarInfo().getCarKindCode(), schemeRuleFilterVo.getProductId());
|
|
|
|
|
|
// 查找规则
|
|
|
List<String> ptlSchemeIds = ptlSchemes.stream().map(PtlScheme::getId).collect(Collectors.toList());
|
|
|
|
|
|
AssertionUtils.isFail(ptlSchemeIds.isEmpty(), "没有可报价的保险公司");
|
|
|
|
|
|
- List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>()
|
|
|
- .in(PtlSchemeRulesAttrLink::getSchemeId, ptlSchemeIds));
|
|
|
+ List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>().in(PtlSchemeRulesAttrLink::getSchemeId, ptlSchemeIds));
|
|
|
|
|
|
// 将规则根据schemeId聚合转换成Map
|
|
|
// Map<String, List<PtlSchemeRulesAttrLink>> ptlSchemeRulesAttrLinkMap = ptlSchemeRulesAttrLinks.stream()
|
|
|
@@ -447,13 +424,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
// 根据section 分组 进行拆分 规则
|
|
|
for (PtlAgreementDispatchVo.DispatchVo vo : vos) {
|
|
|
List<PtlAgreementDispatchRulesAttrLink> attrLinks = vo.getAttrLinks();
|
|
|
- Map<String, List<PtlAgreementDispatchRulesAttrLink>> grouped =
|
|
|
- attrLinks.stream()
|
|
|
- .collect(Collectors.groupingBy(
|
|
|
- link -> Optional.ofNullable(link.getSection()).orElse("0"),
|
|
|
- LinkedHashMap::new,
|
|
|
- Collectors.toList()
|
|
|
- ));
|
|
|
+ Map<String, List<PtlAgreementDispatchRulesAttrLink>> grouped = attrLinks.stream().collect(Collectors.groupingBy(link -> Optional.ofNullable(link.getSection()).orElse("0"), LinkedHashMap::new, Collectors.toList()));
|
|
|
ValidateDispatchRuleVo.DispatchAttrVo dispatchAttrVo = new ValidateDispatchRuleVo.DispatchAttrVo();
|
|
|
dispatchAttrVo.setDispatchId(vo.getDispatchId());
|
|
|
dispatchAttrVo.setDispatchName(vo.getDispatchName());
|
|
|
@@ -491,14 +462,12 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public SchemeResultVo getSchemeResult(String companyId, String productId,String seatCount) {
|
|
|
+ public SchemeResultVo getSchemeResult(String companyId, String productId, String seatCount) {
|
|
|
log.info("根据保司Id和产品id查询协议信息。 companyId=[{}],productId=[{}]", companyId, productId);
|
|
|
List<SchemeResultVo.SchemeVo> schemeInsuranceInfo = ptlSchemeMapper.getSchemeInsuranceInfo(companyId, productId);
|
|
|
List<SchemeResultVo.SchemeVo> schemeDrivingInfo = ptlSchemeMapper.getSchemeDrivingInfo(companyId, productId);
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
// 创建一个 Map,Key: info.id, Value: List<Driving>
|
|
|
Map<String, List<SchemeResultVo.Driving>> drivingMap = new HashMap<>();
|
|
|
|
|
|
@@ -513,11 +482,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
int seats = Integer.parseInt(seatCount);
|
|
|
drivingMap.forEach((infoId, drivings) -> {
|
|
|
drivings.forEach(driving -> {
|
|
|
- jyxSetting setting = jyxSettingMapper.selectOne(
|
|
|
- new LambdaQueryWrapper<jyxSetting>()
|
|
|
- .eq(jyxSetting::getJyxConfigId, driving.getId())
|
|
|
- .eq(jyxSetting::getSeats, seats)
|
|
|
- .last("limit 1"));
|
|
|
+ jyxSetting setting = jyxSettingMapper.selectOne(new LambdaQueryWrapper<jyxSetting>().eq(jyxSetting::getJyxConfigId, driving.getId()).eq(jyxSetting::getSeats, seats).last("limit 1"));
|
|
|
if (setting != null) {
|
|
|
driving.setProductCode(setting.getProductCode());
|
|
|
driving.setPremium(setting.getPremium() != null ? setting.getPremium().toString() : null);
|
|
|
@@ -528,7 +493,6 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
// 遍历 schemeInsuranceInfo,把 drivings 合并
|
|
|
for (SchemeResultVo.SchemeVo insuranceScheme : schemeInsuranceInfo) {
|
|
|
for (SchemeResultVo.SchemeInfoVo info : insuranceScheme.getInfos()) {
|
|
|
@@ -554,7 +518,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
|
|
|
SchemeResultVo schemeResultVo = new SchemeResultVo();
|
|
|
//基础方案
|
|
|
- List<SchemeResultVo.SchemeVo> schemeVo = schemeInsuranceInfo.stream().filter(x -> x.getSchemeType().equals("1")).toList();
|
|
|
+ List<SchemeResultVo.SchemeVo> schemeVo = schemeInsuranceInfo.stream().filter(x -> !TextUtils.isEmpty(x.getSchemeType()) && x.getSchemeType().equals("1")).toList();
|
|
|
|
|
|
List<SchemeResultVo.SchemeInfoVo> allInfo = new ArrayList<>();
|
|
|
|
|
|
@@ -574,7 +538,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
});
|
|
|
|
|
|
//自选方案
|
|
|
- SchemeResultVo.SchemeVo opSchemeVo = schemeInsuranceInfo.stream().filter(x -> x.getSchemeType().equals("2")).findFirst().orElse(null);
|
|
|
+ SchemeResultVo.SchemeVo opSchemeVo = schemeInsuranceInfo.stream().filter(x -> !TextUtils.isEmpty(x.getSchemeType()) && x.getSchemeType().equals("2")).findFirst().orElse(null);
|
|
|
if (Objects.nonNull(opSchemeVo)) {
|
|
|
schemeResultVo.setOptionalScheme(opSchemeVo.getInfos().get(0));
|
|
|
}
|
|
|
@@ -605,16 +569,11 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
public Boolean copyScheme(String schemeInfoId, String productCode) {
|
|
|
|
|
|
|
|
|
- PtlSchemeInfo ptlSchemeInfo = ptlSchemeInfoMapper.selectOne(new LambdaQueryWrapper<PtlSchemeInfo>()
|
|
|
- .eq(PtlSchemeInfo::getId, schemeInfoId));
|
|
|
- PtlScheme ptlScheme = ptlSchemeMapper.selectOne(new LambdaQueryWrapper<PtlScheme>()
|
|
|
- .eq(PtlScheme::getId, ptlSchemeInfo.getSchemeId()));
|
|
|
- List<PtlSchemeInsurance> ptlSchemeInsurances = ptlSchemeInsuranceMapper.selectList(new LambdaQueryWrapper<PtlSchemeInsurance>()
|
|
|
- .eq(PtlSchemeInsurance::getSchemeInfoId, ptlSchemeInfo.getId()));
|
|
|
- List<PtlSchemeInsuranceDrivingIntention> ptlSchemeInsuranceDrivingIntentions = ptlSchemeInsuranceDrivingIntentionMapper.selectList(new LambdaQueryWrapper<PtlSchemeInsuranceDrivingIntention>()
|
|
|
- .eq(PtlSchemeInsuranceDrivingIntention::getSchemeInfoId, ptlSchemeInfo.getId()));
|
|
|
- List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>()
|
|
|
- .eq(PtlSchemeRulesAttrLink::getSchemeId, ptlScheme.getId()));
|
|
|
+ PtlSchemeInfo ptlSchemeInfo = ptlSchemeInfoMapper.selectOne(new LambdaQueryWrapper<PtlSchemeInfo>().eq(PtlSchemeInfo::getId, schemeInfoId));
|
|
|
+ PtlScheme ptlScheme = ptlSchemeMapper.selectOne(new LambdaQueryWrapper<PtlScheme>().eq(PtlScheme::getId, ptlSchemeInfo.getSchemeId()));
|
|
|
+ List<PtlSchemeInsurance> ptlSchemeInsurances = ptlSchemeInsuranceMapper.selectList(new LambdaQueryWrapper<PtlSchemeInsurance>().eq(PtlSchemeInsurance::getSchemeInfoId, ptlSchemeInfo.getId()));
|
|
|
+ List<PtlSchemeInsuranceDrivingIntention> ptlSchemeInsuranceDrivingIntentions = ptlSchemeInsuranceDrivingIntentionMapper.selectList(new LambdaQueryWrapper<PtlSchemeInsuranceDrivingIntention>().eq(PtlSchemeInsuranceDrivingIntention::getSchemeInfoId, ptlSchemeInfo.getId()));
|
|
|
+ List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>().eq(PtlSchemeRulesAttrLink::getSchemeId, ptlScheme.getId()));
|
|
|
|
|
|
String newSchemeId = IdGenerate.nextId();
|
|
|
String newSchemeInfoId = IdGenerate.nextId();
|
|
|
@@ -652,24 +611,21 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
|
|
|
/**
|
|
|
* 根据业务员的deptId过滤保险公司列表
|
|
|
+ *
|
|
|
* @param schemeRuleFilterVo
|
|
|
* @param companyList
|
|
|
* @return
|
|
|
*/
|
|
|
private List<EsmInsCompany> salespersonFilterCompanyList(SchemeRuleFilterVo schemeRuleFilterVo, List<EsmInsCompany> companyList) {
|
|
|
SalespersonInfoVo salespersonInfo = schemeRuleFilterVo.getSalespersonInfo();
|
|
|
- if (CollUtil.isNotEmpty(companyList) &&
|
|
|
- ObjectUtil.isNotEmpty(salespersonInfo) && StrUtil.isNotBlank(salespersonInfo.getId())){
|
|
|
+ if (CollUtil.isNotEmpty(companyList) && ObjectUtil.isNotEmpty(salespersonInfo) && StrUtil.isNotBlank(salespersonInfo.getId())) {
|
|
|
// 根据业务员ID获取业务员信息(含部门ID)
|
|
|
SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfoService.getUserById(salespersonInfo.getId());
|
|
|
String userDeptId = sysUserJzgInfo.getDeptId(); // 业务员所属部门ID
|
|
|
|
|
|
// ========== 核心逻辑开始 ==========
|
|
|
// 1. 拿到所有协议ID(来自有权限的保司)
|
|
|
- List<String> allAgreementIds = companyList.stream()
|
|
|
- .flatMap(company -> Optional.ofNullable(company.getAgreements()).orElse(Collections.emptyList()).stream())
|
|
|
- .map(PtlAgreement::getId)
|
|
|
- .collect(Collectors.toList());
|
|
|
+ List<String> allAgreementIds = companyList.stream().flatMap(company -> Optional.ofNullable(company.getAgreements()).orElse(Collections.emptyList()).stream()).map(PtlAgreement::getId).collect(Collectors.toList());
|
|
|
|
|
|
if (CollUtil.isNotEmpty(allAgreementIds)) {
|
|
|
// 2. 查询【协议-部门】关联表中,协议在 allAgreementIds 范围内的记录
|
|
|
@@ -678,33 +634,24 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
List<PtlAgreementDept> agreementDepts = ptlAgreementDeptService.list(wrapper);
|
|
|
|
|
|
// 3. 筛选:只保留部门ID = 业务员部门ID 的关联记录
|
|
|
- List<PtlAgreementDept> userValidAgreementDepts = agreementDepts.stream()
|
|
|
- .filter(ad -> StrUtil.equals(ad.getDeptId(), userDeptId))
|
|
|
- .collect(Collectors.toList());
|
|
|
+ List<PtlAgreementDept> userValidAgreementDepts = agreementDepts.stream().filter(ad -> StrUtil.equals(ad.getDeptId(), userDeptId)).collect(Collectors.toList());
|
|
|
|
|
|
// 4. 提取出:当前业务员【有权限的协议ID】
|
|
|
- Set<String> validAgreementIds = userValidAgreementDepts.stream()
|
|
|
- .map(PtlAgreementDept::getAgreementId)
|
|
|
- .collect(Collectors.toSet());
|
|
|
+ Set<String> validAgreementIds = userValidAgreementDepts.stream().map(PtlAgreementDept::getAgreementId).collect(Collectors.toSet());
|
|
|
|
|
|
// 5. 过滤保司列表:只保留【包含有效协议】的保司
|
|
|
- companyList = companyList.stream()
|
|
|
- .filter(company -> {
|
|
|
- List<PtlAgreement> agreements = company.getAgreements();
|
|
|
- if (CollUtil.isEmpty(agreements)) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- // 只要保司下有一个协议在 validAgreementIds 里,就保留
|
|
|
- return agreements.stream()
|
|
|
- .anyMatch(agreement -> validAgreementIds.contains(agreement.getId()));
|
|
|
- })
|
|
|
- .collect(Collectors.toList());
|
|
|
+ companyList = companyList.stream().filter(company -> {
|
|
|
+ List<PtlAgreement> agreements = company.getAgreements();
|
|
|
+ if (CollUtil.isEmpty(agreements)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // 只要保司下有一个协议在 validAgreementIds 里,就保留
|
|
|
+ return agreements.stream().anyMatch(agreement -> validAgreementIds.contains(agreement.getId()));
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
|
|
// 6. 每个保司只保留【业务员有权限的协议】
|
|
|
companyList.forEach(company -> {
|
|
|
- List<PtlAgreement> filteredAgreements = company.getAgreements().stream()
|
|
|
- .filter(agreement -> validAgreementIds.contains(agreement.getId()))
|
|
|
- .collect(Collectors.toList());
|
|
|
+ List<PtlAgreement> filteredAgreements = company.getAgreements().stream().filter(agreement -> validAgreementIds.contains(agreement.getId())).collect(Collectors.toList());
|
|
|
company.setAgreements(filteredAgreements);
|
|
|
});
|
|
|
}
|