|
@@ -0,0 +1,137 @@
|
|
|
|
+package com.winhc.bigdata.udf.justice;
|
|
|
|
+
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.aliyun.odps.udf.ExecutionContext;
|
|
|
|
+import com.aliyun.odps.udf.UDF;
|
|
|
|
+import com.aliyun.odps.udf.UDFException;
|
|
|
|
+import com.winhc.bigdata.bean.Entity;
|
|
|
|
+import com.winhc.bigdata.bean.case_no.CaseNoTitleEntity;
|
|
|
|
+import com.winhc.bigdata.bean.case_no.LitigantInfo;
|
|
|
|
+import com.winhc.bigdata.bean.case_no.PartyInfo;
|
|
|
|
+import com.winhc.bigdata.utils.BaseUtils;
|
|
|
|
+import com.winhc.bigdata.utils.CaseNoPropertiesUtils;
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
+
|
|
|
|
+import java.io.IOException;
|
|
|
|
+import java.util.*;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @Author: XuJiakai
|
|
|
|
+ * 2023/10/25 9:49
|
|
|
|
+ *
|
|
|
|
+ * 依据案号生成展示当事人字段
|
|
|
|
+ *
|
|
|
|
+ * case_no_party_title_parse
|
|
|
|
+ */
|
|
|
|
+public class CaseNoPartyTitleParseUtil extends UDF {
|
|
|
|
+ private Map<String, Set<CaseNoTitleEntity>> caseNoMap = null;
|
|
|
|
+ private List<String> caseNoSet = null;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void setup(ExecutionContext ctx) throws UDFException, IOException {
|
|
|
|
+ Entity<List<String>, Map<String, Set<CaseNoTitleEntity>>> caseNoKeyword = CaseNoPropertiesUtils.getCaseNoKeyword();
|
|
|
|
+ caseNoMap = caseNoKeyword._2;
|
|
|
|
+ caseNoSet = caseNoKeyword._1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ public String evaluate(String case_no, String plaintiff_info,
|
|
|
|
+ String defendant_info) {
|
|
|
|
+
|
|
|
|
+ if (StringUtils.isEmpty(case_no)) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ String caseNoKeyword = getCaseNoKeyword(case_no);
|
|
|
|
+ if (caseNoKeyword == null) {
|
|
|
|
+ return getPartyTitleDefault(plaintiff_info, defendant_info);
|
|
|
|
+ }
|
|
|
|
+ Set<CaseNoTitleEntity> caseNoTitleEntities = caseNoMap.get(caseNoKeyword);
|
|
|
|
+
|
|
|
|
+ Iterator<CaseNoTitleEntity> it = caseNoTitleEntities.iterator();
|
|
|
|
+ CaseNoTitleEntity caseNoTitleEntity = it.hasNext() ? it.next() : null;
|
|
|
|
+
|
|
|
|
+ assert caseNoTitleEntity != null;
|
|
|
|
+
|
|
|
|
+ ArrayList<PartyInfo> result = new ArrayList<>();
|
|
|
|
+ List<String> core = caseNoTitleEntity.getCore();
|
|
|
|
+ if (core.get(0) != null) {
|
|
|
|
+ PartyInfo partyInfo = new PartyInfo();
|
|
|
|
+ partyInfo.setTitle_std(core.get(0));
|
|
|
|
+ partyInfo.setTitle_original(core.get(0));
|
|
|
|
+ partyInfo.setShow_level(0);
|
|
|
|
+ partyInfo.setParty_info(parseLitigant(plaintiff_info));
|
|
|
|
+
|
|
|
|
+ result.add(partyInfo);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (core.get(1) != null) {
|
|
|
|
+ PartyInfo partyInfo = new PartyInfo();
|
|
|
|
+ partyInfo.setTitle_std(core.get(1));
|
|
|
|
+ partyInfo.setTitle_original(core.get(1));
|
|
|
|
+ partyInfo.setShow_level(1);
|
|
|
|
+ partyInfo.setParty_info(parseLitigant(defendant_info));
|
|
|
|
+
|
|
|
|
+ result.add(partyInfo);
|
|
|
|
+ }
|
|
|
|
+ return BaseUtils.toString(result);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static String getPartyTitleDefault(String plaintiff_info,
|
|
|
|
+ String defendant_info) {
|
|
|
|
+ ArrayList<LitigantInfo> list = new ArrayList<>();
|
|
|
|
+ List<LitigantInfo> litigantInfos = parseLitigant(plaintiff_info);
|
|
|
|
+ if (litigantInfos != null) {
|
|
|
|
+ list.addAll(litigantInfos);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<LitigantInfo> litigantInfos2 = parseLitigant(defendant_info);
|
|
|
|
+ if (litigantInfos2 != null) {
|
|
|
|
+ list.addAll(litigantInfos2);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ PartyInfo partyInfo = new PartyInfo();
|
|
|
|
+ partyInfo.setShow_level(0);
|
|
|
|
+ partyInfo.setTitle_std("当事人");
|
|
|
|
+ partyInfo.setTitle_original("当事人");
|
|
|
|
+ partyInfo.setParty_info(list);
|
|
|
|
+ return BaseUtils.toString(partyInfo);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private static List<LitigantInfo> parseLitigant(String litigant_info) {
|
|
|
|
+ if (StringUtils.isEmpty(litigant_info)) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ JSONArray objects = JSON.parseArray(litigant_info);
|
|
|
|
+ ArrayList<LitigantInfo> list = new ArrayList<>();
|
|
|
|
+ for (Object object : objects) {
|
|
|
|
+ JSONObject j = ((JSONObject) object);
|
|
|
|
+ LitigantInfo litigantInfo = j.toJavaObject(LitigantInfo.class);
|
|
|
|
+ list.add(litigantInfo);
|
|
|
|
+ }
|
|
|
|
+ return list;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private String getCaseNoKeyword(String caseNo) {
|
|
|
|
+ for (String s : caseNoSet) {
|
|
|
|
+ if (caseNo.contains(s)) {
|
|
|
|
+ return s;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ public static void main(String[] args) throws UDFException, IOException {
|
|
|
|
+ CaseNoPartyTitleParseUtil caseNoPartyTitleParseUtil = new CaseNoPartyTitleParseUtil();
|
|
|
|
+ caseNoPartyTitleParseUtil.setup(null);
|
|
|
|
+ String evaluate = caseNoPartyTitleParseUtil.evaluate("(2022)鲁0214执保303号", "[{\"name\":\"杨云\",\"litigant_id\":\"\"}]", "[{\"name\":\"李久倩\",\"litigant_id\":\"pb95466c950ea6164f3ce90c234d365a5\"},{\"name\":\"陈全英\",\"litigant_id\":\"p05b849d9da746669f0414d1dd07ad9c4\"},{\"name\":\"江秀波\",\"litigant_id\":\"\"},{\"name\":\"青岛智力高通信息科技有限公司\",\"litigant_id\":\"66b0b993e2ce10f35b63b44c7d3f70f7\"}]");
|
|
|
|
+ System.out.println(evaluate);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|