Просмотр исходного кода

fix 承保规则新增跳位问题

liub 2 месяцев назад
Родитель
Сommit
fc47d53f22

+ 8 - 5
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementUndwrtRulesServiceImpl.java

@@ -311,12 +311,11 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
                 throw new SystemException("批量模式下父规则ID不能为空");
             }
 
-            // 查询协议下所有规则,计算最大orderNum(排除当前parentId下的旧规则)
+            // 查询协议下所有规则,计算全局最大orderNum
             List<AgreementRulesVo> allRules = baseMapper.queryList(param.getAgreementId());
             int maxOrderNum = 0;
             if (CollUtil.isNotEmpty(allRules)) {
                 maxOrderNum = allRules.stream()
-                        .filter(r -> !parentId.equals(r.getParentId()))
                         .mapToInt(r -> r.getOrderNum() != null ? r.getOrderNum() : 0)
                         .max().orElse(0);
             }
@@ -341,14 +340,17 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
                 String ruleId;
                 boolean isExisting;
                 String oldRuleDescription = null;
+                Integer oldOrderNum = null;
 
                 if (hasRuleIds) {
                     // ID模式:精确匹配
                     ruleId = group.getId();
                     isExisting = ruleId != null && !ruleId.isEmpty() && oldRuleMap.containsKey(ruleId);
                     if (isExisting) {
+                        AgreementRulesVo oldVo = oldRuleMap.get(ruleId);
                         matchedOldIds.add(ruleId);
-                        oldRuleDescription = oldRuleMap.get(ruleId).getRuleDescription();
+                        oldRuleDescription = oldVo.getRuleDescription();
+                        oldOrderNum = oldVo.getOrderNum();
                     } else {
                         ruleId = IdGenerate.nextId();
                     }
@@ -360,6 +362,7 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
                         ruleId = oldVo.getId();
                         matchedOldIds.add(ruleId);
                         oldRuleDescription = oldVo.getRuleDescription();
+                        oldOrderNum = oldVo.getOrderNum();
                     } else {
                         ruleId = IdGenerate.nextId();
                     }
@@ -378,7 +381,8 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
                 }
 
                 String inputDesc = group.getInputDescription() != null ? group.getInputDescription() : param.getInputDescription();
-                int currentOrderNum = maxOrderNum + i + 1;
+                // 已有规则保留原排序,新增排序从全局最大值递增
+                int currentOrderNum = isExisting ? oldOrderNum : ++maxOrderNum;
                 // ruleDescription:有新的属性链接则重新生成,否则保留旧值
                 String ruleDescription = CollUtil.isNotEmpty(andAttrLinks)
                         ? buildDesc(andAttrLinks, undwrtRulesAttrList)
@@ -388,7 +392,6 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
                     // 使用 LambdaUpdateWrapper 显式指定更新字段,避免 updateById 将 null 字段写入 SQL
                     LambdaUpdateWrapper<PtlAgreementUndwrtRules> updateWrapper = new LambdaUpdateWrapper<>();
                     updateWrapper.eq(PtlAgreementUndwrtRules::getId, ruleId)
-                            .set(PtlAgreementUndwrtRules::getOrderNum, currentOrderNum)
                             .set(PtlAgreementUndwrtRules::getStartTime, param.getStartTime())
                             .set(PtlAgreementUndwrtRules::getEndTime, param.getEndTime())
                             .set(PtlAgreementUndwrtRules::getAgreementId, param.getAgreementId())