|
|
@@ -6,27 +6,26 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ydtech.constants.enums.dict.insurance.EnergyType;
|
|
|
import com.ydtech.exception.SystemException;
|
|
|
import com.ydtech.modules.admin.service.SysUserService;
|
|
|
-import com.ydtech.modules.fee.dto.vo.RuleAttrMappingVo;
|
|
|
-import com.ydtech.modules.order.entity.InsAreaCompany;
|
|
|
-import com.ydtech.modules.order.entity.InsOrders;
|
|
|
import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
|
|
|
-import com.ydtech.modules.protocol.entity.po.PtlNewCarJudgeRules;
|
|
|
+import com.ydtech.modules.protocol.entity.dto.TaxSourceExcludeDto;
|
|
|
+import com.ydtech.modules.protocol.service.ITaxSourceExcludeService;
|
|
|
import com.ydtech.modules.protocol.service.ITaxSourceService;
|
|
|
-import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
|
|
|
-import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
|
|
|
-import com.ydtech.modules.scheme.dao.PtlSchemeRulesAttrLinkMapper;
|
|
|
import com.ydtech.modules.scheme.dao.PtlSchemeRulesMapper;
|
|
|
-import com.ydtech.modules.scheme.entity.po.*;
|
|
|
+import com.ydtech.modules.scheme.entity.po.PtlSchemeRules;
|
|
|
+import com.ydtech.modules.scheme.entity.po.PtlSchemeRulesAttr;
|
|
|
+import com.ydtech.modules.scheme.entity.po.PtlSchemeRulesAttrLink;
|
|
|
import com.ydtech.modules.scheme.entity.vo.*;
|
|
|
import com.ydtech.modules.scheme.service.*;
|
|
|
-import com.ydtech.utils.ObjectUtil;
|
|
|
-import com.ydtech.utils.idgen.IdGenerate;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
|
|
|
-import java.util.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -59,20 +58,24 @@ public class PtlSchemeRulesServiceImpl extends ServiceImpl<PtlSchemeRulesMapper,
|
|
|
@Autowired
|
|
|
PtlOptionalSchemeService ptlOptionalSchemeService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ ITaxSourceExcludeService iTaxSourceExcludeService;
|
|
|
+
|
|
|
/**
|
|
|
* 保存规则
|
|
|
+ *
|
|
|
* @param ruleSaveVo
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public int addRules(RuleSaveVo ruleSaveVo){
|
|
|
+ public int addRules(RuleSaveVo ruleSaveVo) {
|
|
|
//保存 方案
|
|
|
PtlSchemeRules rule = ruleSaveVo.getRule();
|
|
|
this.baseMapper.insert(rule);
|
|
|
//保存 方案规则
|
|
|
List<PtlSchemeRulesAttrLink> attrs = ruleSaveVo.getAttrs();
|
|
|
- attrs.forEach(attr->{
|
|
|
+ attrs.forEach(attr -> {
|
|
|
attr.setRulesId(String.valueOf(rule.getId()));
|
|
|
});
|
|
|
ptlSchemeRulesAttrLinkService.saveBatch(attrs);
|
|
|
@@ -82,18 +85,19 @@ public class PtlSchemeRulesServiceImpl extends ServiceImpl<PtlSchemeRulesMapper,
|
|
|
|
|
|
/**
|
|
|
* 修改规则
|
|
|
+ *
|
|
|
* @param ruleSaveVo
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public boolean updateRules(RuleSaveVo ruleSaveVo){
|
|
|
+ public boolean updateRules(RuleSaveVo ruleSaveVo) {
|
|
|
this.updateById(ruleSaveVo.getRule());
|
|
|
//删除之后再新增
|
|
|
- LambdaQueryWrapper<PtlSchemeRulesAttrLink> queryWrapper= new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(PtlSchemeRulesAttrLink::getRulesId,ruleSaveVo.getRule().getId());
|
|
|
+ LambdaQueryWrapper<PtlSchemeRulesAttrLink> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(PtlSchemeRulesAttrLink::getRulesId, ruleSaveVo.getRule().getId());
|
|
|
ptlSchemeRulesAttrLinkService.remove(queryWrapper);
|
|
|
- ruleSaveVo.getAttrs().forEach(attr->{
|
|
|
+ ruleSaveVo.getAttrs().forEach(attr -> {
|
|
|
attr.setRulesId(ruleSaveVo.getRule().getId());
|
|
|
});
|
|
|
ptlSchemeRulesAttrLinkService.saveBatch(ruleSaveVo.getAttrs());
|
|
|
@@ -102,6 +106,7 @@ public class PtlSchemeRulesServiceImpl extends ServiceImpl<PtlSchemeRulesMapper,
|
|
|
|
|
|
/**
|
|
|
* 删除规则
|
|
|
+ *
|
|
|
* @param ruleId
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -109,13 +114,13 @@ public class PtlSchemeRulesServiceImpl extends ServiceImpl<PtlSchemeRulesMapper,
|
|
|
@Transactional
|
|
|
public boolean deleteRules(String ruleId) {
|
|
|
PtlSchemeRules ptlSchemeRules = this.getById(ruleId);
|
|
|
- if(Objects.isNull(ptlSchemeRules)){
|
|
|
+ if (Objects.isNull(ptlSchemeRules)) {
|
|
|
throw new SystemException("规则不存在");
|
|
|
}
|
|
|
this.removeById(ruleId);
|
|
|
|
|
|
LambdaQueryWrapper<PtlSchemeRulesAttrLink> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(PtlSchemeRulesAttrLink::getRulesId,ruleId);
|
|
|
+ queryWrapper.eq(PtlSchemeRulesAttrLink::getRulesId, ruleId);
|
|
|
ptlSchemeRulesAttrLinkService.remove(queryWrapper);
|
|
|
|
|
|
return true;
|
|
|
@@ -123,6 +128,7 @@ public class PtlSchemeRulesServiceImpl extends ServiceImpl<PtlSchemeRulesMapper,
|
|
|
|
|
|
/**
|
|
|
* 查询规则分页信息
|
|
|
+ *
|
|
|
* @param page
|
|
|
* @param ruleQueryVo
|
|
|
* @return
|
|
|
@@ -135,18 +141,21 @@ public class PtlSchemeRulesServiceImpl extends ServiceImpl<PtlSchemeRulesMapper,
|
|
|
|
|
|
/**
|
|
|
* 根据规则过滤保险公司
|
|
|
+ *
|
|
|
* @param ruleFilterVo
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<PtlAgreementInsCompanyDto> ruleFilterCompany(String userId,RuleFilterVo ruleFilterVo) {
|
|
|
+ public List<PtlAgreementInsCompanyDto> ruleFilterCompany(String userId, RuleFilterVo ruleFilterVo) {
|
|
|
String deptId = sysUserService.getById(userId).getDeptId();
|
|
|
//首先获取有权限的保险公司
|
|
|
List<PtlAgreementInsCompanyDto> agreementInsCompany = taxSourceService.getAllAgreement(deptId, userId);
|
|
|
//用户可读取的所有保险公司id
|
|
|
- List<String> companyIds = agreementInsCompany.stream().map(PtlAgreementInsCompanyDto::getId).collect(Collectors.toList());
|
|
|
+ List<String> companyIds = agreementInsCompany.stream()
|
|
|
+ .map(PtlAgreementInsCompanyDto::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
- if(companyIds.isEmpty()){
|
|
|
+ if (companyIds.isEmpty()) {
|
|
|
throw new SystemException("暂无可报价公司");
|
|
|
}
|
|
|
|
|
|
@@ -154,7 +163,8 @@ public class PtlSchemeRulesServiceImpl extends ServiceImpl<PtlSchemeRulesMapper,
|
|
|
List<PtlAgreementInsCompanyDto> ptlAgreementInsCompanyDtos = new ArrayList<>();
|
|
|
|
|
|
List<PtlSchemeRules> userAllSchemeByCompanyIds = ptlSchemeService.getUserAllSchemeByCompanyIds(ruleFilterVo.getProductId(), companyIds,
|
|
|
- ruleFilterVo.getCarInfo().getCimodelclass(), EnergyType.isNewEnergy(ruleFilterVo.getCarInfo().getEnergyType()));
|
|
|
+ ruleFilterVo.getCarInfo().getCimodelclass(), EnergyType.isNewEnergy(ruleFilterVo.getCarInfo()
|
|
|
+ .getEnergyType()));
|
|
|
|
|
|
//获取所有规则属性
|
|
|
List<PtlSchemeRulesAttr> rulesAttrList = ptlSchemeRulesAttrService.getAllRulesAttrList();
|
|
|
@@ -166,23 +176,25 @@ public class PtlSchemeRulesServiceImpl extends ServiceImpl<PtlSchemeRulesMapper,
|
|
|
ruleFilterVo.getInsureInfo(),
|
|
|
null);
|
|
|
//赛选规则
|
|
|
- userAllSchemeByCompanyIds.forEach(scheme->{
|
|
|
+ userAllSchemeByCompanyIds.forEach(scheme -> {
|
|
|
List<SchemeRuleResultVo> rulesVo = ptlSchemeRulesAttrLinkService.getSchemeRulesAttrLinks(scheme.getCompanyId(), ruleFilterVo.getProductId());
|
|
|
|
|
|
- for(SchemeRuleResultVo rule:rulesVo)
|
|
|
- {
|
|
|
+ for (SchemeRuleResultVo rule : rulesVo) {
|
|
|
List<SchemeRuleResultVo> vo = new ArrayList<>();
|
|
|
vo.add(rule);
|
|
|
boolean allRulesPassed = vo.stream().allMatch(r ->
|
|
|
ruleFilteringService.judgements(r.getAttrLinks(), rulesAttrList, ruleAttrMappingVoList)
|
|
|
);
|
|
|
- if(allRulesPassed) {
|
|
|
+ if (allRulesPassed) {
|
|
|
agreementInsCompany.stream()
|
|
|
.filter(x -> x.getId().equals(scheme.getCompanyId()))
|
|
|
.forEach(item -> {
|
|
|
- if (ptlAgreementInsCompanyDtos.stream().noneMatch(existing -> existing.getId().equals(scheme.getCompanyId()))) {
|
|
|
- item.setInsGuide(ptlOptionalSchemeService.getCompanyInsGuide( scheme.getCompanyId(), ruleFilterVo.getProductId(),
|
|
|
- ruleFilterVo.getCarInfo().getCarnature(), ruleFilterVo.getCarInfo().getCimodelclass(), EnergyType.isNewEnergy(ruleFilterVo.getCarInfo().getEnergyType())? "1" : "0"));
|
|
|
+ if (ptlAgreementInsCompanyDtos.stream()
|
|
|
+ .noneMatch(existing -> existing.getId().equals(scheme.getCompanyId()))) {
|
|
|
+ item.setInsGuide(ptlOptionalSchemeService.getCompanyInsGuide(scheme.getCompanyId(), ruleFilterVo.getProductId(),
|
|
|
+ ruleFilterVo.getCarInfo().getCarnature(), ruleFilterVo.getCarInfo()
|
|
|
+ .getCimodelclass(), EnergyType.isNewEnergy(ruleFilterVo.getCarInfo()
|
|
|
+ .getEnergyType()) ? "1" : "0"));
|
|
|
ptlAgreementInsCompanyDtos.add(item);
|
|
|
}
|
|
|
});
|
|
|
@@ -190,13 +202,31 @@ public class PtlSchemeRulesServiceImpl extends ServiceImpl<PtlSchemeRulesMapper,
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
- Map<String, PtlAgreementInsCompanyDto> collect = ptlAgreementInsCompanyDtos.stream().collect(Collectors.toMap(PtlAgreementInsCompanyDto::getId, x -> x));
|
|
|
- List<PtlAgreementInsCompanyDto> collect1 = companyIds.stream().map(collect::get).filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
|
|
|
+ Map<String, PtlAgreementInsCompanyDto> collect = ptlAgreementInsCompanyDtos.stream()
|
|
|
+ .collect(Collectors.toMap(PtlAgreementInsCompanyDto::getId, x -> x));
|
|
|
+
|
|
|
+ List<String> list = iTaxSourceExcludeService.lambdaQuery()
|
|
|
+ .eq(TaxSourceExcludeDto::getExcludeInfo, deptId)
|
|
|
+ .list()
|
|
|
+ .stream()
|
|
|
+ .map(TaxSourceExcludeDto::getInsCompanyId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<PtlAgreementInsCompanyDto> collect1 = companyIds.stream()
|
|
|
+ .map(collect::get)
|
|
|
+ .peek(x->{
|
|
|
+ if (!ObjectUtils.isEmpty(x) && !list.isEmpty() && list.contains(x.getId())) {
|
|
|
+ x.setIsTaxSource("0");
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .filter(ObjectUtils::isNotEmpty)
|
|
|
+ .collect(Collectors.toList());
|
|
|
return collect1;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据产品id 和保险公司获取规则
|
|
|
+ *
|
|
|
* @param companyId
|
|
|
* @param productId
|
|
|
* @return
|
|
|
@@ -204,13 +234,12 @@ public class PtlSchemeRulesServiceImpl extends ServiceImpl<PtlSchemeRulesMapper,
|
|
|
@Override
|
|
|
public PtlSchemeRules getRuleByProductId(String companyId, String productId) {
|
|
|
LambdaQueryWrapper<PtlSchemeRules> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(PtlSchemeRules::getCompanyId,companyId);
|
|
|
- queryWrapper.eq(PtlSchemeRules::getProductId,productId);
|
|
|
+ queryWrapper.eq(PtlSchemeRules::getCompanyId, companyId);
|
|
|
+ queryWrapper.eq(PtlSchemeRules::getProductId, productId);
|
|
|
return baseMapper.selectOne(queryWrapper);
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
// private String verificationRule(List<PtlAgreementInsCompanyDto> agreementInsCompany, InsAreaCompany insAreaCompany,
|
|
|
// InsOrders insOrders, StringBuilder logs) {
|
|
|
// //匹配费用因子
|