|
@@ -0,0 +1,71 @@
|
|
|
+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));
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|