浏览代码

事务信息调整存储方式 并就时间进行排序

沈永艺 3 年之前
父节点
当前提交
644b55049c

+ 48 - 14
PAS/src/main/java/cn/cslg/pas/common/utils/DataProcessHandler.java

@@ -1,11 +1,13 @@
 package cn.cslg.pas.common.utils;
 
+import cn.cslg.pas.common.model.vo.KeyValueVO;
+import com.alibaba.druid.support.json.JSONUtils;
+import com.alibaba.fastjson.JSONObject;
+
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -99,12 +101,12 @@ class PatSnapPatentAffairHandler implements IProcessData {
         StringBuilder one = new StringBuilder();
         for (int i = 0; i < splitStr.size(); i += 3) {
             if (one.toString().equals("")) {
-                one = new StringBuilder("\"" + "发生日期" + "\":\"" + splitStr.get(i).trim() + "\"");
+                one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"" + splitStr.get(i).trim() + "\"" + "}");
             } else {
-                one.append("," + "\"" + "发生日期" + "\":\"").append(splitStr.get(i).trim()).append("\"");
+                one.append("," + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"").append(splitStr.get(i).trim()).append("\"").append("}");
             }
-            one.append("," + "\"" + "国家" + "\":\"").append(splitStr.get(i + 2).trim()).append("\"");
-            one.append("," + "\"" + "内容" + "\":\"").append(splitStr.get(i + 1).trim()).append("\"");
+            one.append(",{").append("\"name\":\"国家\"").append(",").append("\"content\":").append("\"").append(splitStr.get(i + 2).trim()).append("\"").append("}");
+            one.append("," + "{" + "\"name\"" + ":" + "\"内容\"" + "," + "\"content\"" + ":" + "\"").append(splitStr.get(i + 1).trim()).append("\"").append("}]");
 
             if (!one.toString().equals("")) {
                 if (!all.toString().equals("")) {
@@ -124,7 +126,7 @@ class PatSnapPatentAffairHandler implements IProcessData {
 class IncoPatPatentAffairHandler implements IProcessData {
     @Override
     public Object processData(Object data, Object code) {
-        String processedData = data.toString().replaceAll("\r\n", "");
+        String processedData = data.toString().replaceAll("\n", "");
         List<String> contentList = StringUtils.changeStringToString(processedData, "([\\u4e00-\\u9fa5]+):");
         contentList.remove(0);
 
@@ -141,26 +143,26 @@ class IncoPatPatentAffairHandler implements IProcessData {
             if (tableList.get(i).contains("法律状态公告日")) {
                 if (!one.toString().equals("")) {
                     if (!all.toString().equals("")) {
-                        all.append(",{").append(one).append("}");
+                        all.append(",{").append(one).append("]").append("}");
                     } else {
-                        all = new StringBuilder("{" + one + "}");
+                        all = new StringBuilder("{" + one + "]}");
                     }
                 }
                 one = new StringBuilder();
             }
 
             if (one.toString().equals("")) {
-                one = new StringBuilder("\"" + tableList.get(i) + "\":\"" + contentList.get(i).replaceAll(";", "") + "\"");
+                one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"" + tableList.get(i) + "\"" + ",\"" + "content\"" + ":" + "\"" + contentList.get(i).replaceAll(";", "") + "\"" + "}");
             } else {
-                one.append(",").append("\"").append(tableList.get(i)).append("\":\"").append(contentList.get(i).replaceAll(";", "")).append("\"");
+                one.append(",").append("{" + "\"name\"" + ":").append("\"").append(tableList.get(i)).append("\"" + "," + "\"" + "content\"" + ":" + "\"").append(contentList.get(i).replaceAll(";", "")).append("\"" + "}");
             }
 
         }
         if (!one.toString().equals("")) {
             if (!all.toString().equals("")) {
-                all.append(",{").append(one).append("}");
+                all.append(",{").append(one).append("]").append("}");
             } else {
-                all = new StringBuilder("{" + one + "}");
+                all = new StringBuilder("{" + one + "]}");
             }
         }
         all = new StringBuilder("[" + all + "]");
@@ -192,6 +194,38 @@ class ProcessDataFactory {
         return null;
     }
 
+    public static void main(String[] args) {
+        IProcessData iProcessData = new PatSnapPatentAffairHandler();
+        String a = "2021-10-15 | CHANGE IN THE NAME OR TITLE OF A PATENT HOLDER | CN | 2020-07-21 | +PATENT GRANT | CN";
+        String b = (String) iProcessData.processData(a, null);
+
+        IProcessData incoPatPatentAffairHandler = new IncoPatPatentAffairHandler();
+        String c = "法律状态公告日:20191015;\n" +
+                "法律状态:公开;\n" +
+                "描述信息:公开;\n" +
+                "法律状态公告日:20191108;\n" +
+                "法律状态:实质审查的生效;\n" +
+                "描述信息:实质审查的生效IPC(主分类):A61B   1/045;\n" +
+                "法律状态公告日:20220325;\n" +
+                "法律状态:授权;\n" +
+                "描述信息:授权;\n";
+        String d = (String) incoPatPatentAffairHandler.processData(c, null);
+
+        List<KeyValueVO> lst = JsonUtils.jsonToList(b, KeyValueVO.class);
+        KeyValueVO flag;
+        for (int i = 0; i < Objects.requireNonNull(lst).size() - 1; i++) {
+            for (int j = 0; j < lst.size() - i - 1; j++) {
+                if (DateUtils.strToDate(lst.get(j).getInpadocData().get(0).getContent()).compareTo(DateUtils.strToDate(lst.get(j + 1).getInpadocData().get(0).getContent())) < 0) {
+                    flag = lst.get(j);
+                    lst.set(j, lst.get(j + 1));
+                    lst.set(j + 1, flag);
+                }
+            }
+        }
+        System.out.println(lst);
+
+    }
+
 }
 
 

+ 20 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/DateUtils.java

@@ -141,6 +141,26 @@ public class DateUtils {
         }
     }
 
+    public static Date strToDate(String dateString) {
+        try {
+            SimpleDateFormat sf1;
+            if (dateString.contains("-")) {
+                sf1 = new SimpleDateFormat("yyyy-MM-dd");
+            } else if (dateString.contains("//")) {
+                sf1 = new SimpleDateFormat("yyyy/MM/dd");
+            } else if (dateString.contains(":")) {
+                sf1 = new SimpleDateFormat("yyyy:MM:dd");
+            } else {
+                sf1 = new SimpleDateFormat("yyyyMMdd");
+            }
+
+            Date date = sf1.parse(dateString);
+            return date;
+        } catch (Exception e) {
+            throw new RuntimeException("时间转化格式错误" + "[dateString=" + dateString + "]" + "[FORMAT_STRING=" + FORMAT_STRING + "]");
+        }
+    }
+
     /**
      * 获取今天开始的时间
      *

+ 2 - 1
PAS/src/main/java/cn/cslg/pas/domain/PatentAffair.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.domain;
 
 import cn.cslg.pas.common.model.BaseEntity;
+import cn.cslg.pas.common.model.vo.KeyValueVO;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -64,7 +65,7 @@ public class PatentAffair extends BaseEntity<PatentAffair> {
     private String createSimpleStatus;
 
     @TableField(exist = false)
-    private List<Map<String, Object>> inpadoc;
+    private List<KeyValueVO> inpadoc;
 
     @Data
     public static class INPADOC {

+ 14 - 1
PAS/src/main/java/cn/cslg/pas/service/PatentAffairService.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.vo.KeyValueVO;
 import cn.cslg.pas.common.utils.JsonUtils;
 import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.domain.Patent;
@@ -47,7 +48,18 @@ public class PatentAffairService extends ServiceImpl<PatentAffairMapper, PatentA
         List<PatentAffair> dataList = this.list(queryWrapper);
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList(Constants.PATENT_STATUS, Constants.PATENT_SIMPLE_STATUS));
         dataList.forEach(item -> {
-            item.setInpadoc((List<Map<String, Object>>) JSON.parse(item.getContent()));
+            List<KeyValueVO> lst = JsonUtils.jsonToList(item.getContent(), KeyValueVO.class);
+            KeyValueVO flag;
+            for (int i = 0; i < Objects.requireNonNull(lst).size() - 1; i++) {
+                for (int j = 0; j < lst.size() - i - 1; j++) {
+                    if (DateUtils.strToDate(lst.get(j).getInpadocData().get(0).getContent()).compareTo(DateUtils.strToDate(lst.get(j + 1).getInpadocData().get(0).getContent())) < 0) {
+                        flag = lst.get(j);
+                        lst.set(j, lst.get(j + 1));
+                        lst.set(j + 1, flag);
+                    }
+                }
+            }
+            item.setInpadoc(lst);
             item.setCreateTime(DateUtils.formatDate(item.getDateTime(), DateUtils.YYYY_MM_DD));
             item.setCreateSimpleStatus(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_SIMPLE_STATUS) && systemDict.getValue().equals(String.valueOf(item.getSimpleStatus()))).findFirst().orElse(new SystemDict()).getLabel());
             item.setCreateStatus(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_STATUS) && systemDict.getValue().equals(String.valueOf(item.getStatus()))).findFirst().orElse(new SystemDict()).getLabel());
@@ -92,4 +104,5 @@ public class PatentAffairService extends ServiceImpl<PatentAffairMapper, PatentA
     public void deleteByPatentId(Integer patentId) {
         this.remove(Wrappers.<PatentAffair>lambdaQuery().eq(PatentAffair::getPatentId, patentId));
     }
+
 }