|
@@ -399,25 +399,43 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
|
|
|
if(CollUtil.isEmpty(costIds)){
|
|
if(CollUtil.isEmpty(costIds)){
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- List<PtlAgreementCost> costList = agreementCostService.listByIds(costIds);
|
|
|
|
|
|
|
+ List<PtlAgreementCost> selectedCostList = agreementCostService.listByIds(costIds);
|
|
|
|
|
+ if (CollUtil.isEmpty(selectedCostList)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 根据被勾选费用关联的承保规则,查询其 parent_id 相同的所有承保规则(整组复制)
|
|
|
|
|
+ Set<String> coverRuleIds = selectedCostList.stream()
|
|
|
|
|
+ .map(PtlAgreementCost::getCoverRuleId)
|
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ List<PtlAgreementUndwrtRules> selectedRules = agreementRulesService.listByIds(coverRuleIds);
|
|
|
|
|
+ Set<String> parentIds = selectedRules.stream()
|
|
|
|
|
+ .map(PtlAgreementUndwrtRules::getParentId)
|
|
|
|
|
+ .filter(parentId -> parentId != null && !parentId.isEmpty())
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ List<PtlAgreementUndwrtRules> rulesList;
|
|
|
|
|
+ if (CollUtil.isNotEmpty(parentIds)) {
|
|
|
|
|
+ // 查询 parent_id 相同的所有承保规则
|
|
|
|
|
+ LambdaQueryWrapper<PtlAgreementUndwrtRules> rulesWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ rulesWrapper.in(PtlAgreementUndwrtRules::getParentId, parentIds);
|
|
|
|
|
+ rulesList = agreementRulesService.list(rulesWrapper);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ rulesList = selectedRules;
|
|
|
|
|
+ }
|
|
|
|
|
+ Set<String> allRuleIds = rulesList.stream().map(PtlAgreementUndwrtRules::getId).collect(Collectors.toSet());
|
|
|
|
|
+ // 查询整组承保规则关联的所有费用
|
|
|
|
|
+ LambdaQueryWrapper<PtlAgreementCost> costWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ costWrapper.in(PtlAgreementCost::getCoverRuleId, allRuleIds);
|
|
|
|
|
+ List<PtlAgreementCost> costList = agreementCostService.list(costWrapper);
|
|
|
if(CollUtil.isEmpty(costList)){
|
|
if(CollUtil.isEmpty(costList)){
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
+ List<String> allCostIds = costList.stream().map(PtlAgreementCost::getId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
- Map<String,List<PtlAgreementCost>> costGroup = new HashMap<>();
|
|
|
|
|
- for (PtlAgreementCost ptlAgreementCost : costList) {
|
|
|
|
|
- List<PtlAgreementCost> costGroupList = new ArrayList<>();
|
|
|
|
|
- if(costGroup.containsKey(ptlAgreementCost.getCoverRuleId())){
|
|
|
|
|
- costGroupList = costGroup.get(ptlAgreementCost.getCoverRuleId());
|
|
|
|
|
- costGroupList.add(ptlAgreementCost);
|
|
|
|
|
- costGroup.put(ptlAgreementCost.getCoverRuleId(), costGroupList);
|
|
|
|
|
- }else{
|
|
|
|
|
- costGroupList.add(ptlAgreementCost);
|
|
|
|
|
- costGroup.put(ptlAgreementCost.getCoverRuleId(), costGroupList);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ Map<String, List<PtlAgreementCost>> costGroup = costList.stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(PtlAgreementCost::getCoverRuleId));
|
|
|
// 复制承保规则和费用
|
|
// 复制承保规则和费用
|
|
|
- this.copyRuleAndCost(costGroup,costIds,costList,newAgreement);
|
|
|
|
|
|
|
+ this.copyRuleAndCost(costGroup, allCostIds, costList, newAgreement);
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -428,35 +446,53 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
|
|
|
List<PtlAgreementCost> costList,
|
|
List<PtlAgreementCost> costList,
|
|
|
PtlAgreement newAgreement) {
|
|
PtlAgreement newAgreement) {
|
|
|
|
|
|
|
|
- // 获取查询所有的旧承保规则
|
|
|
|
|
|
|
+ // 获取所有的旧承保规则,并按 parent_id 扩展为整组(含无费用关联的规则)
|
|
|
Set<String> rulesIds = costList.stream().map(PtlAgreementCost :: getCoverRuleId).collect(Collectors.toSet());
|
|
Set<String> rulesIds = costList.stream().map(PtlAgreementCost :: getCoverRuleId).collect(Collectors.toSet());
|
|
|
List<PtlAgreementUndwrtRules> rulesList = agreementRulesService.listByIds(rulesIds);
|
|
List<PtlAgreementUndwrtRules> rulesList = agreementRulesService.listByIds(rulesIds);
|
|
|
- Map<String, PtlAgreementUndwrtRules> rulesMap = rulesList.stream().collect(
|
|
|
|
|
- Collectors.toMap(PtlAgreementUndwrtRules::getId,rules -> rules));
|
|
|
|
|
|
|
+ Set<String> parentIds = rulesList.stream()
|
|
|
|
|
+ .map(PtlAgreementUndwrtRules::getParentId)
|
|
|
|
|
+ .filter(parentId -> parentId != null && !parentId.isEmpty())
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ if (CollUtil.isNotEmpty(parentIds)) {
|
|
|
|
|
+ // 查询 parent_id 相同的所有承保规则(整组复制)
|
|
|
|
|
+ LambdaQueryWrapper<PtlAgreementUndwrtRules> rulesWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ rulesWrapper.in(PtlAgreementUndwrtRules::getParentId, parentIds);
|
|
|
|
|
+ rulesList = agreementRulesService.list(rulesWrapper);
|
|
|
|
|
+ }
|
|
|
|
|
+ Set<String> allRuleIds = rulesList.stream().map(PtlAgreementUndwrtRules::getId).collect(Collectors.toSet());
|
|
|
|
|
|
|
|
// 查询所有承保规则明细
|
|
// 查询所有承保规则明细
|
|
|
LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.in(PtlAgreementUndwrtRulesAttrLink::getRulesId, rulesIds);
|
|
|
|
|
|
|
+ queryWrapper.in(PtlAgreementUndwrtRulesAttrLink::getRulesId, allRuleIds);
|
|
|
List<PtlAgreementUndwrtRulesAttrLink> linkList = agreementUndwrtRulesAttrLinkService.list(queryWrapper);
|
|
List<PtlAgreementUndwrtRulesAttrLink> linkList = agreementUndwrtRulesAttrLinkService.list(queryWrapper);
|
|
|
Map<String, List<PtlAgreementUndwrtRulesAttrLink>> linkMap = linkList.stream().collect(
|
|
Map<String, List<PtlAgreementUndwrtRulesAttrLink>> linkMap = linkList.stream().collect(
|
|
|
Collectors.groupingBy(PtlAgreementUndwrtRulesAttrLink::getRulesId));
|
|
Collectors.groupingBy(PtlAgreementUndwrtRulesAttrLink::getRulesId));
|
|
|
|
|
|
|
|
|
|
+ // 整组承保规则关联的所有费用
|
|
|
|
|
+ LambdaQueryWrapper<PtlAgreementCost> costWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ costWrapper.in(PtlAgreementCost::getCoverRuleId, allRuleIds);
|
|
|
|
|
+ List<PtlAgreementCost> allCostList = agreementCostService.list(costWrapper);
|
|
|
|
|
+ Set<String> allCostIds = allCostList.stream().map(PtlAgreementCost::getId).collect(Collectors.toSet());
|
|
|
|
|
+ Map<String, List<PtlAgreementCost>> allCostGroup = allCostList.stream().collect(
|
|
|
|
|
+ Collectors.groupingBy(PtlAgreementCost::getCoverRuleId));
|
|
|
|
|
+
|
|
|
// 查询所有旧的费用规则
|
|
// 查询所有旧的费用规则
|
|
|
LambdaQueryWrapper<PtlAgreementCostRule> costRuleLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<PtlAgreementCostRule> costRuleLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- costRuleLambdaQueryWrapper.in(PtlAgreementCostRule::getPtlAgreementCostId, costIds);
|
|
|
|
|
|
|
+ costRuleLambdaQueryWrapper.in(PtlAgreementCostRule::getPtlAgreementCostId, allCostIds);
|
|
|
List<PtlAgreementCostRule> costRuleList = agreementCostRuleService.list(costRuleLambdaQueryWrapper);
|
|
List<PtlAgreementCostRule> costRuleList = agreementCostRuleService.list(costRuleLambdaQueryWrapper);
|
|
|
Map<String, List<PtlAgreementCostRule>> costRulesMap = costRuleList.stream().collect(
|
|
Map<String, List<PtlAgreementCostRule>> costRulesMap = costRuleList.stream().collect(
|
|
|
Collectors.groupingBy(PtlAgreementCostRule::getPtlAgreementCostId));
|
|
Collectors.groupingBy(PtlAgreementCostRule::getPtlAgreementCostId));
|
|
|
// 查询所有旧的费用明细
|
|
// 查询所有旧的费用明细
|
|
|
LambdaQueryWrapper<PtlAgreementCostType> costTypeLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<PtlAgreementCostType> costTypeLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- costTypeLambdaQueryWrapper.in(PtlAgreementCostType::getPtlAgreementCostId, costIds);
|
|
|
|
|
|
|
+ costTypeLambdaQueryWrapper.in(PtlAgreementCostType::getPtlAgreementCostId, allCostIds);
|
|
|
List<PtlAgreementCostType> costTypeList = agreementCostTypeService.list(costTypeLambdaQueryWrapper);
|
|
List<PtlAgreementCostType> costTypeList = agreementCostTypeService.list(costTypeLambdaQueryWrapper);
|
|
|
Map<String, List<PtlAgreementCostType>> costTypeMap = costTypeList.stream().collect(
|
|
Map<String, List<PtlAgreementCostType>> costTypeMap = costTypeList.stream().collect(
|
|
|
Collectors.groupingBy(PtlAgreementCostType::getPtlAgreementCostId));
|
|
Collectors.groupingBy(PtlAgreementCostType::getPtlAgreementCostId));
|
|
|
|
|
|
|
|
- costGroup.forEach((key, value) -> {
|
|
|
|
|
|
|
+ // 源 parentId -> 新 parentId,同组规则复制后共享同一个新 parentId,保持分组结构
|
|
|
|
|
+ Map<String, String> newParentIdMap = new HashMap<>();
|
|
|
|
|
+ for (PtlAgreementUndwrtRules agreementUndwrtRules : rulesList) {
|
|
|
//1-承保规则复制
|
|
//1-承保规则复制
|
|
|
- PtlAgreementUndwrtRules agreementUndwrtRules = rulesMap.get(key);
|
|
|
|
|
PtlAgreementUndwrtRules newAgreementUndwrtRules = new PtlAgreementUndwrtRules();
|
|
PtlAgreementUndwrtRules newAgreementUndwrtRules = new PtlAgreementUndwrtRules();
|
|
|
BeanUtils.copyProperties(agreementUndwrtRules,newAgreementUndwrtRules);
|
|
BeanUtils.copyProperties(agreementUndwrtRules,newAgreementUndwrtRules);
|
|
|
newAgreementUndwrtRules.setId(null);
|
|
newAgreementUndwrtRules.setId(null);
|
|
@@ -469,7 +505,10 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
|
|
|
PtlAgreementUndwrtRules maxRules = agreementRulesService.getOne(undwrtRulesLambdaQueryWrapper);
|
|
PtlAgreementUndwrtRules maxRules = agreementRulesService.getOne(undwrtRulesLambdaQueryWrapper);
|
|
|
newAgreementUndwrtRules.setOrderNum(Objects.nonNull(maxRules) ? maxRules.getOrderNum() + 1 : 1);
|
|
newAgreementUndwrtRules.setOrderNum(Objects.nonNull(maxRules) ? maxRules.getOrderNum() + 1 : 1);
|
|
|
newAgreementUndwrtRules.setAgreementId(newAgreement.getId());
|
|
newAgreementUndwrtRules.setAgreementId(newAgreement.getId());
|
|
|
- newAgreementUndwrtRules.setParentId(IdGenerate.nextId());
|
|
|
|
|
|
|
+ String sourceParentId = agreementUndwrtRules.getParentId();
|
|
|
|
|
+ newAgreementUndwrtRules.setParentId(sourceParentId != null && !sourceParentId.isEmpty()
|
|
|
|
|
+ ? newParentIdMap.computeIfAbsent(sourceParentId, k -> IdGenerate.nextId())
|
|
|
|
|
+ : IdGenerate.nextId());
|
|
|
agreementRulesService.save(newAgreementUndwrtRules);
|
|
agreementRulesService.save(newAgreementUndwrtRules);
|
|
|
|
|
|
|
|
// 复制承保规则因子
|
|
// 复制承保规则因子
|
|
@@ -482,8 +521,8 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
|
|
|
agreementUndwrtRulesAttrLinkService.saveBatch(links);
|
|
agreementUndwrtRulesAttrLinkService.saveBatch(links);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 2-费用复制
|
|
|
|
|
- List<PtlAgreementCost> agreementCostList = costGroup.get(key);
|
|
|
|
|
|
|
+ // 2-费用复制(该规则关联的所有费用,无费用关联的规则仅复制规则本身)
|
|
|
|
|
+ List<PtlAgreementCost> agreementCostList = allCostGroup.get(agreementUndwrtRules.getId());
|
|
|
if(CollUtil.isNotEmpty(agreementCostList)) {
|
|
if(CollUtil.isNotEmpty(agreementCostList)) {
|
|
|
agreementCostList.forEach(agreementCost -> {
|
|
agreementCostList.forEach(agreementCost -> {
|
|
|
PtlAgreementCost newAgreementCost = new PtlAgreementCost();
|
|
PtlAgreementCost newAgreementCost = new PtlAgreementCost();
|
|
@@ -495,21 +534,24 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
|
|
|
newAgreementCost.setPtlAgreementId(newAgreement.getId());
|
|
newAgreementCost.setPtlAgreementId(newAgreement.getId());
|
|
|
agreementCostService.save(newAgreementCost);
|
|
agreementCostService.save(newAgreementCost);
|
|
|
List<PtlAgreementCostRule> costRules = costRulesMap.get(agreementCost.getId());
|
|
List<PtlAgreementCostRule> costRules = costRulesMap.get(agreementCost.getId());
|
|
|
- costRules.forEach(costRule -> {
|
|
|
|
|
- costRule.setId(null);
|
|
|
|
|
- costRule.setPtlAgreementCostId(newAgreementCost.getId());
|
|
|
|
|
- });
|
|
|
|
|
- agreementCostRuleService.saveBatch(costRules);
|
|
|
|
|
|
|
+ if (CollUtil.isNotEmpty(costRules)) {
|
|
|
|
|
+ costRules.forEach(costRule -> {
|
|
|
|
|
+ costRule.setId(null);
|
|
|
|
|
+ costRule.setPtlAgreementCostId(newAgreementCost.getId());
|
|
|
|
|
+ });
|
|
|
|
|
+ agreementCostRuleService.saveBatch(costRules);
|
|
|
|
|
+ }
|
|
|
List<PtlAgreementCostType> costTypes = costTypeMap.get(agreementCost.getId());
|
|
List<PtlAgreementCostType> costTypes = costTypeMap.get(agreementCost.getId());
|
|
|
- costTypes.forEach(costType -> {
|
|
|
|
|
- costType.setId(null);
|
|
|
|
|
- costType.setPtlAgreementCostId(newAgreementCost.getId());
|
|
|
|
|
- });
|
|
|
|
|
- agreementCostTypeService.saveBatch(costTypes);
|
|
|
|
|
-
|
|
|
|
|
|
|
+ if (CollUtil.isNotEmpty(costTypes)) {
|
|
|
|
|
+ costTypes.forEach(costType -> {
|
|
|
|
|
+ costType.setId(null);
|
|
|
|
|
+ costType.setPtlAgreementCostId(newAgreementCost.getId());
|
|
|
|
|
+ });
|
|
|
|
|
+ agreementCostTypeService.saveBatch(costTypes);
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
- });
|
|
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|