3
0

2 Commits 964632cbd7 ... baafecdbf4

Autor SHA1 Mensagem Data
  许家凯 baafecdbf4 fix: 添加case_no_area_code函数 há 1 ano atrás
  许家凯 e343d49414 fix: 添加case_no_area_code函数 há 1 ano atrás

+ 185 - 0
src/main/java/com/winhc/bigdata/bean/case_no/CaseNoRegionInfoEntity.java

@@ -0,0 +1,185 @@
+package com.winhc.bigdata.bean.case_no;
+
+import java.util.Objects;
+
+/**
+ * @Author: XuJiakai
+ * 2023/10/31 9:12
+ */
+public class CaseNoRegionInfoEntity {
+
+    /**
+     * 法院代码,主键
+     */
+    private String court_code;
+
+    private String court_name;
+
+    private String province_code;
+    private String city_code;
+    private String district_code;
+
+    private String province;
+    private String city;
+    private String district;
+
+    /**
+     * 0,1,2,3 分别为:最高院,高院,中院,基院
+     */
+    private Integer court_level;
+    private String superior_court_code;
+
+    /**
+     * 变更或调整说明
+     */
+    private String description_info;
+    /**
+     * 0 现有;1 因法院代字变更而调整;9 脏数据逻辑删除
+     */
+    private Integer deleted;
+
+    public CaseNoRegionInfoEntity() {
+    }
+
+    public CaseNoRegionInfoEntity(String court_code, String court_name, String province_code, String city_code, String district_code, String province, String city, String district, Integer court_level, String superior_court_code, String description_info, Integer deleted) {
+        this.court_code = court_code;
+        this.court_name = court_name;
+        this.province_code = province_code;
+        this.city_code = city_code;
+        this.district_code = district_code;
+        this.province = province;
+        this.city = city;
+        this.district = district;
+        this.court_level = court_level;
+        this.superior_court_code = superior_court_code;
+        this.description_info = description_info;
+        this.deleted = deleted;
+    }
+
+    public String getCourt_code() {
+        return court_code;
+    }
+
+    public void setCourt_code(String court_code) {
+        this.court_code = court_code;
+    }
+
+    public String getCourt_name() {
+        return court_name;
+    }
+
+    public void setCourt_name(String court_name) {
+        this.court_name = court_name;
+    }
+
+    public String getProvince_code() {
+        return province_code;
+    }
+
+    public void setProvince_code(String province_code) {
+        this.province_code = province_code;
+    }
+
+    public String getCity_code() {
+        return city_code;
+    }
+
+    public void setCity_code(String city_code) {
+        this.city_code = city_code;
+    }
+
+    public String getDistrict_code() {
+        return district_code;
+    }
+
+    public void setDistrict_code(String district_code) {
+        this.district_code = district_code;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(String district) {
+        this.district = district;
+    }
+
+    public Integer getCourt_level() {
+        return court_level;
+    }
+
+    public void setCourt_level(Integer court_level) {
+        this.court_level = court_level;
+    }
+
+    public String getSuperior_court_code() {
+        return superior_court_code;
+    }
+
+    public void setSuperior_court_code(String superior_court_code) {
+        this.superior_court_code = superior_court_code;
+    }
+
+    public String getDescription_info() {
+        return description_info;
+    }
+
+    public void setDescription_info(String description_info) {
+        this.description_info = description_info;
+    }
+
+    public Integer getDeleted() {
+        return deleted;
+    }
+
+    public void setDeleted(Integer deleted) {
+        this.deleted = deleted;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        CaseNoRegionInfoEntity that = (CaseNoRegionInfoEntity) o;
+        return court_code.equals(that.court_code);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(court_code);
+    }
+
+    @Override
+    public String toString() {
+        return "CaseNoRegionInfoEntity{" +
+                "court_code='" + court_code + '\'' +
+                ", court_name='" + court_name + '\'' +
+                ", province_code='" + province_code + '\'' +
+                ", city_code='" + city_code + '\'' +
+                ", district_code='" + district_code + '\'' +
+                ", province='" + province + '\'' +
+                ", city='" + city + '\'' +
+                ", district='" + district + '\'' +
+                ", court_level=" + court_level +
+                ", superior_court_code='" + superior_court_code + '\'' +
+                ", description_info='" + description_info + '\'' +
+                ", deleted=" + deleted +
+                '}';
+    }
+}

+ 79 - 0
src/main/java/com/winhc/bigdata/udf/justice/CaseNoRegionInfoUDF.java

@@ -0,0 +1,79 @@
+package com.winhc.bigdata.udf.justice;
+
+import com.aliyun.odps.udf.ExecutionContext;
+import com.aliyun.odps.udf.UDF;
+import com.aliyun.odps.udf.UDFException;
+import com.winhc.bigdata.bean.case_no.CaseNoRegionInfoEntity;
+import com.winhc.bigdata.utils.CaseNoRegionUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author: XuJiakai
+ * 2023/11/6 9:54
+ *
+ * function name: case_no_area_code
+ */
+public class CaseNoRegionInfoUDF extends UDF {
+
+    private List<String> caseNoKeyword = null;
+    Map<String, CaseNoRegionInfoEntity> case_no_keyword_map = null;
+    Map<String, CaseNoRegionInfoEntity> court_name_map = null;
+
+
+    @Override
+    public void setup(ExecutionContext ctx) throws UDFException, IOException {
+        Map<String, CaseNoRegionInfoEntity> caseNoRegionInfo = CaseNoRegionUtils.getCaseNoRegionInfo();
+        caseNoKeyword = caseNoRegionInfo.keySet().stream().filter(Objects::nonNull).sorted(Comparator.comparingInt(String::length).reversed()).collect(Collectors.toList());
+        case_no_keyword_map = caseNoRegionInfo;
+
+
+        Map<String, CaseNoRegionInfoEntity> collect = caseNoRegionInfo.values().stream().collect(Collectors.toMap(CaseNoRegionInfoEntity::getCourt_name, e -> e,(e1,e2)->{
+            return e1;
+        }));
+        court_name_map = collect;
+    }
+
+    public List<String> evaluate(String case_no, String court_name) {
+        List<String> list = new ArrayList<String>(3);
+        String caseNoKeyword = getCaseNoKeyword(case_no);
+        if (caseNoKeyword != null && case_no_keyword_map.containsKey(caseNoKeyword)) {
+            CaseNoRegionInfoEntity caseNoRegionInfoEntity = case_no_keyword_map.get(caseNoKeyword);
+            list.set(0, caseNoRegionInfoEntity.getProvince_code());
+            list.set(1, caseNoRegionInfoEntity.getCity_code());
+            list.set(2, caseNoRegionInfoEntity.getDistrict_code());
+            return list;
+        }
+
+        if (StringUtils.isNotEmpty(court_name) && court_name_map.containsKey(court_name)) {
+            CaseNoRegionInfoEntity caseNoRegionInfoEntity = court_name_map.get(court_name);
+            list.set(0, caseNoRegionInfoEntity.getProvince_code());
+            list.set(1, caseNoRegionInfoEntity.getCity_code());
+            list.set(2, caseNoRegionInfoEntity.getDistrict_code());
+            return list;
+        }
+        return list;
+    }
+
+    private String getCaseNoKeyword(String case_no) {
+        if (StringUtils.isEmpty(case_no)) {
+            return null;
+        }
+        for (String s : caseNoKeyword) {
+            if (case_no.contains(s)) {
+                return s;
+            }
+        }
+        return null;
+    }
+
+    public static void main(String[] args) throws UDFException, IOException {
+        CaseNoRegionInfoUDF caseNoRegionInfoUDF = new CaseNoRegionInfoUDF();
+        caseNoRegionInfoUDF.setup(null);
+
+    }
+
+}

+ 26 - 0
src/main/java/com/winhc/bigdata/utils/CaseNoRegionUtils.java

@@ -0,0 +1,26 @@
+package com.winhc.bigdata.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.winhc.bigdata.bean.case_no.CaseNoRegionInfoEntity;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Author: XuJiakai
+ * 2023/11/6 9:57
+ */
+public class CaseNoRegionUtils {
+
+    public static Map<String, CaseNoRegionInfoEntity> getCaseNoRegionInfo() {
+        Map<String, CaseNoRegionInfoEntity> map = new HashMap<>();
+        String s = BaseUtils.readeResourceFile("court_keyword_region.json");
+        JSONObject jsonObject = JSON.parseObject(s);
+        for (String key : jsonObject.keySet()) {
+            CaseNoRegionInfoEntity caseNoRegionInfoEntity = jsonObject.getObject(key, CaseNoRegionInfoEntity.class);
+            map.put(key, caseNoRegionInfoEntity);
+        }
+        return map;
+    }
+}

Diff do ficheiro suprimidas por serem muito extensas
+ 49324 - 0
src/main/resources/court_keyword_region.json