|
@@ -0,0 +1,177 @@
|
|
|
+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
|
|
|
+ * <p>
|
|
|
+ * 依据案号生成展示当事人字段
|
|
|
+ * <p>
|
|
|
+ * case_no_party_title_parse
|
|
|
+ */
|
|
|
+public class CaseNoPartyTitleParseUtilCopy{
|
|
|
+ private static Map<String, Set<CaseNoTitleEntity>> caseNoMap = null;
|
|
|
+ private static List<String> caseNoSet = null;
|
|
|
+
|
|
|
+ private static Set<String> DEFAULT_CASE_NO_KEYWORD = new HashSet<String>() {{
|
|
|
+ add("民再");
|
|
|
+ add("刑再");
|
|
|
+ add("行再");
|
|
|
+ add("行抗");
|
|
|
+ add("行赔抗");
|
|
|
+ add("司惩");
|
|
|
+ add("刑他");
|
|
|
+ }};
|
|
|
+
|
|
|
+ static {
|
|
|
+ setup();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static void setup(){
|
|
|
+ Entity<List<String>, Map<String, Set<CaseNoTitleEntity>>> caseNoKeyword = CaseNoPropertiesUtils.getCaseNoKeyword();
|
|
|
+ caseNoMap = caseNoKeyword._2;
|
|
|
+ caseNoSet = caseNoKeyword._1;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String evaluate(String case_no, String plaintiff_info,
|
|
|
+ String defendant_info) {
|
|
|
+
|
|
|
+ if (StringUtils.isEmpty(case_no)) {
|
|
|
+ return getPartyTitleDefault(plaintiff_info, defendant_info);
|
|
|
+ }
|
|
|
+ String caseNoKeyword = getCaseNoKeyword(case_no);
|
|
|
+ if (caseNoKeyword == null || DEFAULT_CASE_NO_KEYWORD.contains(caseNoKeyword)) {
|
|
|
+ return getPartyTitleDefault(plaintiff_info, defendant_info);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Set<CaseNoTitleEntity> caseNoTitleEntities = caseNoMap.get(caseNoKeyword);
|
|
|
+
|
|
|
+ if (caseNoTitleEntities == null) {
|
|
|
+ return getPartyTitleDefault(plaintiff_info, defendant_info);
|
|
|
+ }
|
|
|
+
|
|
|
+ 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);
|
|
|
+ List<LitigantInfo> litigantInfos = parseLitigant(plaintiff_info);
|
|
|
+ partyInfo.setParty_info(litigantInfos);
|
|
|
+
|
|
|
+ if (litigantInfos != null && !litigantInfos.isEmpty()) {
|
|
|
+ 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);
|
|
|
+ List<LitigantInfo> litigantInfos = parseLitigant(defendant_info);
|
|
|
+ partyInfo.setParty_info(litigantInfos);
|
|
|
+ if (litigantInfos != null && !litigantInfos.isEmpty()) {
|
|
|
+ result.add(partyInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return BaseUtils.toString(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static String getPartyTitleDefault(String plaintiff_info,
|
|
|
+ String defendant_info) {
|
|
|
+ List<PartyInfo> party_info_new = new ArrayList<>();
|
|
|
+ Set<String> tmpSet = new HashSet<>();
|
|
|
+
|
|
|
+ ArrayList<LitigantInfo> list = new ArrayList<>();
|
|
|
+ List<LitigantInfo> litigantInfos = parseLitigant(plaintiff_info);
|
|
|
+ if (litigantInfos != null) {
|
|
|
+ for (LitigantInfo litigantInfo : litigantInfos) {
|
|
|
+ if (!tmpSet.contains(litigantInfo.getName())) {
|
|
|
+ list.add(litigantInfo);
|
|
|
+ tmpSet.add(litigantInfo.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<LitigantInfo> litigantInfos2 = parseLitigant(defendant_info);
|
|
|
+ if (litigantInfos2 != null) {
|
|
|
+ for (LitigantInfo litigantInfo : litigantInfos2) {
|
|
|
+ if (!tmpSet.contains(litigantInfo.getName())) {
|
|
|
+ list.add(litigantInfo);
|
|
|
+ tmpSet.add(litigantInfo.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ PartyInfo partyInfo = new PartyInfo();
|
|
|
+ partyInfo.setShow_level(0);
|
|
|
+ partyInfo.setTitle_std("当事人");
|
|
|
+ partyInfo.setTitle_original("当事人");
|
|
|
+ partyInfo.setParty_info(list);
|
|
|
+
|
|
|
+ party_info_new.add(partyInfo);
|
|
|
+ return BaseUtils.toString(party_info_new);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 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 static 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 {
|
|
|
+ String evaluate = CaseNoPartyTitleParseUtilCopy.evaluate("{2021)渝0103民初16256号","[]", null);
|
|
|
+ System.out.println(evaluate);
|
|
|
+
|
|
|
+ String evaluate1 = CaseNoPartyTitleParseUtilCopy.evaluate("{2021)渝0103民初16256号", "", "[{\"name\": \"冯忠袁\", \"litigant_id\": \"\"},{\"name\": \"冯忠袁22\", \"litigant_id\": \"\"}]");
|
|
|
+ System.out.println(evaluate1);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|