Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

lixiaolong 2 hete
szülő
commit
a66ff8744b

+ 17 - 0
tenant/organization/src/main/java/com/jzg/organization/service/PtlAreaLicenseService.java

@@ -71,4 +71,21 @@ public interface PtlAreaLicenseService extends IService<PtlAreaLicense> {
      */
      */
     String convertLicense2AreaNumber(String licenses);
     String convertLicense2AreaNumber(String licenses);
 
 
+    /**
+     * 将地区名称转换为对应的地区编码
+     *
+     * @param areaNameMap 地区名称和地区编码的对应集
+     * @param areaNames   地区名称,支持多个拼接,例如太原市,大同市
+     * @return String 地区编码,例如1401,1402
+     */
+    String convertAreaName2AreaNumber(Map<String, PtlAreaLicense> areaNameMap, String areaNames);
+
+    /**
+     * 将地区名称转换为对应的地区编码
+     *
+     * @param areaNames 地区名称,支持多个拼接,例如太原市,大同市
+     * @return String 地区编码,例如1401,1402
+     */
+    String convertAreaName2AreaNumber(String areaNames);
+
 }
 }

+ 36 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementUndwrtRulesServiceImpl.java

@@ -521,11 +521,46 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
         if (ruleIds.size() == 1) {
         if (ruleIds.size() == 1) {
             rulesVo.setCostsAttrLinks(groups.get(0).getCostsAttrLinks());
             rulesVo.setCostsAttrLinks(groups.get(0).getCostsAttrLinks());
         }
         }
-        // 返回前:LicenseNo/LicenseArea 属性中的车牌号转换为地区编码
+        // 返回前:LicenseNo/LicenseArea 属性中的车牌号、地区名称统一转换为地区编码
         convertLicense2AreaNumber(groups);
         convertLicense2AreaNumber(groups);
+        convertAreaName2AreaNumber(groups);
         return rulesVo;
         return rulesVo;
     }
     }
 
 
+    /**
+     * 将规则属性中 LicenseNo/LicenseArea 的地区名称(如太原市,大同市)转换为地区编码(如1401,1402)
+     * 匹配不到的地区名称原样保留
+     *
+     * @param groups 规则属性分组
+     */
+    private void convertAreaName2AreaNumber(List<RulesGroupParam> groups) {
+        if (CollUtil.isEmpty(groups)) {
+            return;
+        }
+        groups.forEach(group -> {
+            if (CollUtil.isNotEmpty(group.getRulesAttrList())) {
+                group.getRulesAttrList().forEach(link -> {
+                    if (("LicenseNo".equals(link.getAttrCode()) || "LicenseArea".equals(link.getAttrCode()))
+                            && StrUtil.isNotEmpty(link.getMin())) {
+                        String areaNumbers = ptlAreaLicenseService.convertAreaName2AreaNumber(link.getMin());
+                        link.setMin(areaNumbers);
+                        link.setMinArray(areaNumbers.split(","));
+                    }
+                });
+            }
+            if (CollUtil.isNotEmpty(group.getCostsAttrLinks())) {
+                group.getCostsAttrLinks().forEach(attr -> {
+                    if (("LicenseNo".equals(attr.getAttrCode()) || "LicenseArea".equals(attr.getAttrCode()))
+                            && StrUtil.isNotEmpty(attr.getMin())) {
+                        String areaNumbers = ptlAreaLicenseService.convertAreaName2AreaNumber(attr.getMin());
+                        attr.setMin(areaNumbers);
+                        attr.setMinArray(areaNumbers.split(","));
+                    }
+                });
+            }
+        });
+    }
+
     /**
     /**
      * 将规则属性中 LicenseNo/LicenseArea 的车牌号(如晋A,晋B)转换为地区编码(如1401,1402)
      * 将规则属性中 LicenseNo/LicenseArea 的车牌号(如晋A,晋B)转换为地区编码(如1401,1402)
      * 匹配不到的车牌前缀原样保留
      * 匹配不到的车牌前缀原样保留

+ 46 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAreaLicenseServiceImpl.java

@@ -157,4 +157,50 @@ public class PtlAreaLicenseServiceImpl extends ServiceImpl<PtlAreaLicenseMapper,
                         (oldItem, newItem) -> newItem));
                         (oldItem, newItem) -> newItem));
         return this.convertLicense2AreaNumber(licenseMap, licenses);
         return this.convertLicense2AreaNumber(licenseMap, licenses);
     }
     }
+
+    /**
+     * 将地区名称转换为对应的地区编码
+     *
+     * @param areaNameMap 地区名称和地区编码的对应集
+     * @param areaNames   地区名称,支持多个拼接,例如太原市,大同市
+     * @return String 地区编码,例如1401,1402
+     */
+    @Override
+    public String convertAreaName2AreaNumber(Map<String, PtlAreaLicense> areaNameMap, String areaNames) {
+        if (StrUtil.isEmpty(areaNames)) {
+            return StrUtil.EMPTY;
+        }
+        if (CollUtil.isEmpty(areaNameMap)) {
+            return areaNames;
+        }
+        String[] split = areaNames.split(",");
+        List<String> areaNumbers = new ArrayList<>();
+        for (String s : split) {
+            PtlAreaLicense ptlAreaLicense = areaNameMap.getOrDefault(s, null);
+            if (ptlAreaLicense != null) {
+                areaNumbers.add(ptlAreaLicense.getAreaNumber());
+            } else {
+                areaNumbers.add(s);
+            }
+        }
+        String collect = String.join(",", areaNumbers);
+        log.info("地区名称[{}]转换后的地区编码是[{}]", areaNames, collect);
+        return collect;
+    }
+
+    /**
+     * 将地区名称转换为对应的地区编码
+     *
+     * @param areaNames 地区名称,支持多个拼接,例如太原市,大同市
+     * @return String 地区编码,例如1401,1402
+     */
+    @Override
+    public String convertAreaName2AreaNumber(String areaNames) {
+        Map<String, PtlAreaLicense> areaNameMap = this.queryAllAreaLicense().stream()
+                .filter(action -> StrUtil.isNotEmpty(action.getAreaName()))
+                .collect(Collectors.toMap(PtlAreaLicense::getAreaName,
+                        action -> action,
+                        (oldItem, newItem) -> newItem));
+        return this.convertAreaName2AreaNumber(areaNameMap, areaNames);
+    }
 }
 }