Bladeren bron

2022-7-29 Handler工具类 结构调整

沈永艺 3 jaren geleden
bovenliggende
commit
2b81e33931
18 gewijzigde bestanden met toevoegingen van 434 en 325 verwijderingen
  1. 0 321
      PAS/src/main/java/cn/cslg/pas/common/utils/DataProcessHandler.java
  2. 8 4
      PAS/src/main/java/cn/cslg/pas/common/utils/UploadPatentBatchUtil.java
  3. 46 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/DataProcessHandler.java
  4. 5 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/IProcessData.java
  5. 21 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/IncoPatInventorAddressHandler.java
  6. 58 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/IncoPatPatentAffairHandler.java
  7. 16 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/IncoPatUCMainHandler.java
  8. 15 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/IntegerHandler.java
  9. 39 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/PatSnapPatentAffairHandler.java
  10. 24 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/PatentTypeHandler.java
  11. 22 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/PatenticsAgencyAndAgentHandler.java
  12. 59 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/PatenticsPatentAffairHandler.java
  13. 17 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/PatenticsStringHandler.java
  14. 18 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/SplitBySerialNumberAndRemoveLineFeedHandler.java
  15. 27 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/SplitOriginalAndTranslationHandler.java
  16. 21 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/StringHandler.java
  17. 21 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/StringSpecialHandler.java
  18. 17 0
      PAS/src/main/java/cn/cslg/pas/common/utils/handler/TimeHandler.java

+ 0 - 321
PAS/src/main/java/cn/cslg/pas/common/utils/DataProcessHandler.java

@@ -1,321 +0,0 @@
-package cn.cslg.pas.common.utils;
-
-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.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-interface IProcessData {
-    Object processData(Object data, Object code);
-}
-
-/**
- * @name 一般字符串处理类
- * @description 1.带有分隔符按照分隔符拆分(去除所有空格) 2.不带分隔符直接返回原数据
- */
-class StringHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object splitSymbol) {
-        if (!"".equals(splitSymbol)) {
-            return StringUtils.changeStringToString(data.toString().trim(), splitSymbol.toString());
-        } else {
-            return data.toString();
-        }
-    }
-}
-
-/**
- * @name 时间处理类
- * @description 1.将时间类型数据转换为int型 2.现支持格式为 yyyy-MM-dd yyyy/MM/dd 可后需添加
- */
-class TimeHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object splitSymbol) {
-        return DateUtils.getDateTime(data.toString());
-    }
-}
-
-/**
- * @name 数字处理类
- * @description 1.传入的字符型数字数据转换为int型
- */
-class IntegerHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object splitSymbol) {
-        return Integer.parseInt(data.toString());
-    }
-}
-
-/**
- * @name 特殊字符串处理类
- * @description 1.带有分隔符按照分隔符拆分(去除 '>' 符号) 2.不带分隔符直接返回原数据 3.目前只有两个字段会使用 (1)标签(2)自定义字段
- */
-class StringSpecialHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object splitSymbol) {
-        if (!"".equals(splitSymbol)) {
-            return StringUtils.changeStringToString(data.toString().replaceAll(">", ""), splitSymbol.toString());
-        } else {
-            return data.toString();
-        }
-    }
-}
-
-/**
- * @name
- * @description
- */
-class SplitOriginalAndTranslationHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object splitSymbol) {
-        List<String> splitList = StringUtils.changeStringToString(splitSymbol.toString(), ",");
-        if (splitList.get(0).equals("1")) {
-            return StringUtils.changeStringToString(data.toString(), splitList.get(1)).get(0);
-        } else if (splitList.get(0).equals("2")) {
-            if (StringUtils.changeStringToString(data.toString(), splitList.get(1)).size() == 2) {
-                return StringUtils.changeStringToString(data.toString(), splitList.get(1)).get(1);
-            }
-        }
-        return null;
-    }
-}
-
-/**
- * @name 专利类型处理类
- * @description 1.将传入的专利类型转换成不同的ID 2.目前这个没有用字典项的原因是因为不同数据源的叫法不一致 无法统一进行分类
- */
-class PatentTypeHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object ob) {
-        if (data.toString().contains("实用新型")) {
-            return 1;
-        } else if (data.toString().contains("发明申请") || data.toString().contains("发明公布")) {
-            return 2;
-        } else if (data.toString().contains("外观设计")) {
-            return 3;
-        } else if (data.toString().contains("授权")) {
-            return 4;
-        }
-        return null;
-    }
-}
-
-class SplitBySerialNumberAndRemoveLineFeedHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object splitSymbol) {
-        return Arrays.stream(data.toString().replaceAll("\n", "").split(splitSymbol.toString()))
-                .filter(StringUtils::isNotEmpty)
-                .collect(Collectors.toList());
-    }
-}
-
-class PatSnapPatentAffairHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object code) {
-        List<String> splitStr = StringUtils.changeStringToString(data.toString(), "\\|");
-
-        StringBuilder all = new StringBuilder();
-        StringBuilder one = new StringBuilder();
-        for (int i = 0; i < splitStr.size(); i += 3) {
-            if (one.toString().equals("")) {
-                one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"" + splitStr.get(i).trim() + "\"" + "}");
-            } else {
-                one.append("," + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"").append(splitStr.get(i).trim()).append("\"").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("")) {
-                    all.append(",{").append(one).append("}");
-                } else {
-                    all = new StringBuilder("{" + one + "}");
-                }
-            }
-            one = new StringBuilder();
-        }
-
-        all = new StringBuilder("[" + all + "]");
-        return all.toString();
-    }
-}
-
-class IncoPatPatentAffairHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object code) {
-        String processedData = data.toString().replaceAll("\r\n", "");
-        List<String> contentList = StringUtils.changeStringToString(processedData, "([\\u4e00-\\u9fa5]+):");
-        contentList.remove(0);
-
-        List<String> tableList = new ArrayList<>();
-        Pattern p = Pattern.compile("([\\u4e00-\\u9fa5]+):");
-        Matcher m = p.matcher(data.toString());
-        while (m.find()) {
-            tableList.add(m.group(1));
-        }
-
-        StringBuilder all = new StringBuilder();
-        StringBuilder one = new StringBuilder();
-        for (int i = 0; i < tableList.size(); i++) {
-            if (tableList.get(i).contains("法律状态公告日")) {
-                if (!one.toString().equals("")) {
-                    if (!all.toString().equals("")) {
-                        all.append(",{").append(one).append("]").append("}");
-                    } else {
-                        all = new StringBuilder("{" + one + "]}");
-                    }
-                }
-                one = new StringBuilder();
-            }
-
-            if (one.toString().equals("")) {
-                one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"" + tableList.get(i) + "\"" + ",\"" + "content\"" + ":" + "\"" + contentList.get(i).replaceAll(";", "") + "\"" + "}");
-            } else {
-                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("]").append("}");
-            } else {
-                all = new StringBuilder("{" + one + "]}");
-            }
-        }
-        all = new StringBuilder("[" + all + "]");
-        return all.toString();
-    }
-}
-
-class IncoPatUCMainHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object splitSymbol) {
-        List<String> splitList = StringUtils.changeStringToString(data.toString(), splitSymbol.toString());
-        return splitList.get(0);
-    }
-}
-
-class IncoPatInventorAddressHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object code) {
-        List<String> splitStr = StringUtils.changeStringToString(data.toString().replaceAll(" ", ""), ";");
-        if (code.toString().equals("1")) {
-            return splitStr;
-        } else if (code.toString().equals("2")) {
-            return splitStr.get(0);
-        }
-        return null;
-    }
-}
-
-class PatenticsPatentAffairHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object code) {
-        List<String> splitStr = StringUtils.changeStringToString(data.toString(), "\n");
-        splitStr.removeIf(item -> item.equals(""));
-
-        List<String> processList = splitStr.stream().map(item -> item.replaceAll(" ", "\\|")).collect(Collectors.toList());
-
-        StringBuilder all = new StringBuilder();
-        StringBuilder one = new StringBuilder();
-        List<String> messageList;
-        Pattern p = Pattern.compile("[0-9]*");
-
-        for (int j = 0; j < processList.size(); j++) {
-            if (j < processList.size() - 1) {
-                Matcher m = p.matcher(processList.get(j + 1).substring(0, 2));
-                if (!m.matches()) {
-                    processList.set(j, processList.get(j) + " " + processList.get(j + 1));
-                    processList.remove(j + 1);
-                }
-            }
-            messageList = StringUtils.changeStringToString(processList.get(j), "\\|");
-
-            for (int i = 0; i < messageList.size(); i += 3) {
-                if (one.toString().equals("")) {
-                    one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"" + messageList.get(i).trim() + "\"" + "}");
-                } else {
-                    one.append("," + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"").append(messageList.get(i).trim()).append("\"").append("}");
-                }
-                one.append(",{").append("\"name\":\"法律状态\"").append(",").append("\"content\":").append("\"").append(messageList.get(i + 1).trim()).append("\"").append("}");
-                one.append("," + "{" + "\"name\"" + ":" + "\"描述信息\"" + "," + "\"content\"" + ":" + "\"").append(messageList.get(i + 2).trim()).append("\"").append("}]");
-
-                if (!one.toString().equals("")) {
-                    if (!all.toString().equals("")) {
-                        all.append(",{").append(one).append("}");
-                    } else {
-                        all = new StringBuilder("{" + one + "}");
-                    }
-                }
-                one = new StringBuilder();
-            }
-
-        }
-        all = new StringBuilder("[" + all + "]");
-        return all.toString();
-    }
-}
-
-class PatenticsAgencyAndAgentHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object code) {
-        List<String> splitStr = StringUtils.changeStringToString(data.toString().replaceAll(" ", ""), ";");
-        if (code.toString().equals("1")) {
-            return splitStr.get(0);
-        } else if (code.toString().equals("2")) {
-            splitStr.remove(0);
-            return splitStr;
-        }
-        return null;
-    }
-}
-
-class PatenticsStringHandler implements IProcessData {
-    @Override
-    public Object processData(Object data, Object splitSymbol) {
-        if (!"".equals(splitSymbol)) {
-            return StringUtils.changeStringToString(data.toString().replaceAll(" ", "").replaceAll("\n", ""), splitSymbol.toString());
-        } else {
-            return data.toString().replaceAll(" ", "");
-        }
-    }
-}
-
-public class DataProcessHandler {
-    public static IProcessData getData(String typeName, String jarOrClassPath) {
-
-        if (jarOrClassPath != null) {
-            try {
-                //用路径创建Url
-                URL url = new URL("file:" + jarOrClassPath);
-                //通过Url加载外部的jar包
-                URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{url});
-                Class<?> clazz = urlClassLoader.loadClass(typeName);
-                return (IProcessData) clazz.newInstance();
-            } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | MalformedURLException e) {
-                e.printStackTrace();
-            }
-        } else {
-            try {
-                return (IProcessData) Class.forName(typeName).newInstance();
-            } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
-                e.printStackTrace();
-            }
-        }
-        return null;
-    }
-
-    public static void main(String[] args) {
-        System.out.println("启动成功");
-    }
-
-}
-
-
-
-

+ 8 - 4
PAS/src/main/java/cn/cslg/pas/common/utils/UploadPatentBatchUtil.java

@@ -3,9 +3,12 @@ package cn.cslg.pas.common.utils;
 import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
 import cn.cslg.pas.common.model.vo.UploadParamsVO;
 import cn.cslg.pas.common.model.vo.UploadSettingVO;
+import cn.cslg.pas.common.utils.handler.DataProcessHandler;
+import cn.cslg.pas.common.utils.handler.IProcessData;
 import org.springframework.stereotype.Component;
 
 import java.lang.reflect.Field;
+import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.*;
@@ -66,15 +69,16 @@ public class UploadPatentBatchUtil {
                     List<UploadSettingVO.Column> temVOColumn = getColumn(jsonData, key);
                     for (UploadSettingVO.Column column : temVOColumn) {
                         //创建处理对象
-                        IProcessData processData = ProcessDataFactory.getData(column.getHandler(), column.getJarOrClassPath());
+                        Object processData = DataProcessHandler.getData(column.getHandler(), column.getJarOrClassPath());
                         //调用处理对象中的对应处理方法对Excel中的数据进行处理
                         Object getProcessData = null;
                         if (processData != null) {
-                            getProcessData = processData.processData(value.toString(), column.getSplitSymbol());
+                            Method method = processData.getClass().getMethod("processData", Object.class, Object.class);
+                            getProcessData = method.invoke(processData, value.toString(), column.getSplitSymbol());
                         }
                         //将格式化后的数据装配到VO类
                         assemblyObject(uploadParamsVO, column.getColumn(), getProcessData);
-                        if(key.contains(":")){
+                        if (key.contains(":")) {
                             uploadParamsVO.setKey(key);
                         }
                     }
@@ -99,7 +103,7 @@ public class UploadPatentBatchUtil {
             UploadSettingVO.Column field = new UploadSettingVO.Column();
             field.setColumn("fieldList");
             field.setSplitSymbol("\\\n");
-            field.setHandler("cn.cslg.pas.common.utils.StringSpecialHandler");
+            field.setHandler("cn.cslg.pas.common.utils.handler.StringSpecialHandler");
             columnList.add(field);
         }
         return columnList;

+ 46 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/DataProcessHandler.java

@@ -0,0 +1,46 @@
+package cn.cslg.pas.common.utils.handler;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+public class DataProcessHandler {
+    public interface IProcessData {
+        Object processData(Object data, Object code);
+    }
+
+    public DataProcessHandler() {
+    }
+
+    public static Object getData(String typeName, String jarOrClassPath) {
+
+        if (jarOrClassPath != null) {
+            try {
+                //用路径创建Url
+                URL url = new URL("file:" + jarOrClassPath);
+                //通过Url加载外部的jar包
+                URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{url});
+                Class<?> clazz = urlClassLoader.loadClass(typeName);
+                return clazz.newInstance();
+            } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | MalformedURLException e) {
+                e.printStackTrace();
+            }
+        } else {
+            try {
+                return Class.forName(typeName).newInstance();
+            } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+
+    public static void main(String[] args) {
+        System.out.println("启动成功");
+    }
+
+}
+
+
+
+

+ 5 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/IProcessData.java

@@ -0,0 +1,5 @@
+package cn.cslg.pas.common.utils.handler;
+
+public interface IProcessData {
+    Object processData(Object data, Object code);
+}

+ 21 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/IncoPatInventorAddressHandler.java

@@ -0,0 +1,21 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+import java.util.List;
+
+public class IncoPatInventorAddressHandler implements IProcessData {
+    public IncoPatInventorAddressHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object code) {
+        List<String> splitStr = StringUtils.changeStringToString(data.toString().replaceAll(" ", ""), ";");
+        if (code.toString().equals("1")) {
+            return splitStr;
+        } else if (code.toString().equals("2")) {
+            return splitStr.get(0);
+        }
+        return null;
+    }
+}

+ 58 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/IncoPatPatentAffairHandler.java

@@ -0,0 +1,58 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class IncoPatPatentAffairHandler implements IProcessData {
+    public IncoPatPatentAffairHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object code) {
+        String processedData = data.toString().replaceAll("\r\n", "");
+        List<String> contentList = StringUtils.changeStringToString(processedData, "([\\u4e00-\\u9fa5]+):");
+        contentList.remove(0);
+
+        List<String> tableList = new ArrayList<>();
+        Pattern p = Pattern.compile("([\\u4e00-\\u9fa5]+):");
+        Matcher m = p.matcher(data.toString());
+        while (m.find()) {
+            tableList.add(m.group(1));
+        }
+
+        StringBuilder all = new StringBuilder();
+        StringBuilder one = new StringBuilder();
+        for (int i = 0; i < tableList.size(); i++) {
+            if (tableList.get(i).contains("法律状态公告日")) {
+                if (!one.toString().equals("")) {
+                    if (!all.toString().equals("")) {
+                        all.append(",{").append(one).append("]").append("}");
+                    } else {
+                        all = new StringBuilder("{" + one + "]}");
+                    }
+                }
+                one = new StringBuilder();
+            }
+
+            if (one.toString().equals("")) {
+                one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"" + tableList.get(i) + "\"" + ",\"" + "content\"" + ":" + "\"" + contentList.get(i).replaceAll(";", "") + "\"" + "}");
+            } else {
+                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("]").append("}");
+            } else {
+                all = new StringBuilder("{" + one + "]}");
+            }
+        }
+        all = new StringBuilder("[" + all + "]");
+        return all.toString();
+    }
+}

+ 16 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/IncoPatUCMainHandler.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+import java.util.List;
+
+public class IncoPatUCMainHandler implements IProcessData {
+    public IncoPatUCMainHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object splitSymbol) {
+        List<String> splitList = StringUtils.changeStringToString(data.toString(), splitSymbol.toString());
+        return splitList.get(0);
+    }
+}

+ 15 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/IntegerHandler.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.common.utils.handler;
+
+/**
+ * @name 数字处理类
+ * @description 1.传入的字符型数字数据转换为int型
+ */
+public class IntegerHandler implements IProcessData {
+    public IntegerHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object splitSymbol) {
+        return Integer.parseInt(data.toString());
+    }
+}

+ 39 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/PatSnapPatentAffairHandler.java

@@ -0,0 +1,39 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+import java.util.List;
+
+public class PatSnapPatentAffairHandler implements IProcessData {
+    public PatSnapPatentAffairHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object code) {
+        List<String> splitStr = StringUtils.changeStringToString(data.toString(), "\\|");
+
+        StringBuilder all = new StringBuilder();
+        StringBuilder one = new StringBuilder();
+        for (int i = 0; i < splitStr.size(); i += 3) {
+            if (one.toString().equals("")) {
+                one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"" + splitStr.get(i).trim() + "\"" + "}");
+            } else {
+                one.append("," + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"").append(splitStr.get(i).trim()).append("\"").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("")) {
+                    all.append(",{").append(one).append("}");
+                } else {
+                    all = new StringBuilder("{" + one + "}");
+                }
+            }
+            one = new StringBuilder();
+        }
+
+        all = new StringBuilder("[" + all + "]");
+        return all.toString();
+    }
+}

+ 24 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/PatentTypeHandler.java

@@ -0,0 +1,24 @@
+package cn.cslg.pas.common.utils.handler;
+
+/**
+ * @name 专利类型处理类
+ * @description 1.将传入的专利类型转换成不同的ID 2.目前这个没有用字典项的原因是因为不同数据源的叫法不一致 无法统一进行分类
+ */
+public class PatentTypeHandler implements IProcessData {
+    public PatentTypeHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object ob) {
+        if (data.toString().contains("实用新型")) {
+            return 1;
+        } else if (data.toString().contains("发明申请") || data.toString().contains("发明公布")) {
+            return 2;
+        } else if (data.toString().contains("外观设计")) {
+            return 3;
+        } else if (data.toString().contains("授权")) {
+            return 4;
+        }
+        return null;
+    }
+}

+ 22 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/PatenticsAgencyAndAgentHandler.java

@@ -0,0 +1,22 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+import java.util.List;
+
+public class PatenticsAgencyAndAgentHandler implements IProcessData {
+    public PatenticsAgencyAndAgentHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object code) {
+        List<String> splitStr = StringUtils.changeStringToString(data.toString().replaceAll(" ", ""), ";");
+        if (code.toString().equals("1")) {
+            return splitStr.get(0);
+        } else if (code.toString().equals("2")) {
+            splitStr.remove(0);
+            return splitStr;
+        }
+        return null;
+    }
+}

+ 59 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/PatenticsPatentAffairHandler.java

@@ -0,0 +1,59 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+public class PatenticsPatentAffairHandler implements IProcessData {
+    public PatenticsPatentAffairHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object code) {
+        List<String> splitStr = StringUtils.changeStringToString(data.toString(), "\n");
+        splitStr.removeIf(item -> item.equals(""));
+
+        List<String> processList = splitStr.stream().map(item -> item.replaceAll(" ", "\\|")).collect(Collectors.toList());
+
+        StringBuilder all = new StringBuilder();
+        StringBuilder one = new StringBuilder();
+        List<String> messageList;
+        Pattern p = Pattern.compile("[0-9]*");
+
+        for (int j = 0; j < processList.size(); j++) {
+            if (j < processList.size() - 1) {
+                Matcher m = p.matcher(processList.get(j + 1).substring(0, 2));
+                if (!m.matches()) {
+                    processList.set(j, processList.get(j) + " " + processList.get(j + 1));
+                    processList.remove(j + 1);
+                }
+            }
+            messageList = StringUtils.changeStringToString(processList.get(j), "\\|");
+
+            for (int i = 0; i < messageList.size(); i += 3) {
+                if (one.toString().equals("")) {
+                    one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"" + messageList.get(i).trim() + "\"" + "}");
+                } else {
+                    one.append("," + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"").append(messageList.get(i).trim()).append("\"").append("}");
+                }
+                one.append(",{").append("\"name\":\"法律状态\"").append(",").append("\"content\":").append("\"").append(messageList.get(i + 1).trim()).append("\"").append("}");
+                one.append("," + "{" + "\"name\"" + ":" + "\"描述信息\"" + "," + "\"content\"" + ":" + "\"").append(messageList.get(i + 2).trim()).append("\"").append("}]");
+
+                if (!one.toString().equals("")) {
+                    if (!all.toString().equals("")) {
+                        all.append(",{").append(one).append("}");
+                    } else {
+                        all = new StringBuilder("{" + one + "}");
+                    }
+                }
+                one = new StringBuilder();
+            }
+
+        }
+        all = new StringBuilder("[" + all + "]");
+        return all.toString();
+    }
+}

+ 17 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/PatenticsStringHandler.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+public class PatenticsStringHandler implements IProcessData {
+    public PatenticsStringHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object splitSymbol) {
+        if (!"".equals(splitSymbol)) {
+            return StringUtils.changeStringToString(data.toString().replaceAll(" ", "").replaceAll("\n", ""), splitSymbol.toString());
+        } else {
+            return data.toString().replaceAll(" ", "");
+        }
+    }
+}

+ 18 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/SplitBySerialNumberAndRemoveLineFeedHandler.java

@@ -0,0 +1,18 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
+public class SplitBySerialNumberAndRemoveLineFeedHandler implements IProcessData {
+    public SplitBySerialNumberAndRemoveLineFeedHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object splitSymbol) {
+        return Arrays.stream(data.toString().replaceAll("\n", "").split(splitSymbol.toString()))
+                .filter(StringUtils::isNotEmpty)
+                .collect(Collectors.toList());
+    }
+}

+ 27 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/SplitOriginalAndTranslationHandler.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+import java.util.List;
+
+/**
+ * @name
+ * @description
+ */
+public class SplitOriginalAndTranslationHandler implements IProcessData {
+    public SplitOriginalAndTranslationHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object splitSymbol) {
+        List<String> splitList = StringUtils.changeStringToString(splitSymbol.toString(), ",");
+        if (splitList.get(0).equals("1")) {
+            return StringUtils.changeStringToString(data.toString(), splitList.get(1)).get(0);
+        } else if (splitList.get(0).equals("2")) {
+            if (StringUtils.changeStringToString(data.toString(), splitList.get(1)).size() == 2) {
+                return StringUtils.changeStringToString(data.toString(), splitList.get(1)).get(1);
+            }
+        }
+        return null;
+    }
+}

+ 21 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/StringHandler.java

@@ -0,0 +1,21 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+/**
+ * @name 一般字符串处理类
+ * @description 1.带有分隔符按照分隔符拆分(去除所有空格) 2.不带分隔符直接返回原数据
+ */
+public class StringHandler implements IProcessData {
+    public StringHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object splitSymbol) {
+        if (!"".equals(splitSymbol)) {
+            return StringUtils.changeStringToString(data.toString().trim(), splitSymbol.toString());
+        } else {
+            return data.toString();
+        }
+    }
+}

+ 21 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/StringSpecialHandler.java

@@ -0,0 +1,21 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+/**
+ * @name 特殊字符串处理类
+ * @description 1.带有分隔符按照分隔符拆分(去除 '>' 符号) 2.不带分隔符直接返回原数据 3.目前只有两个字段会使用 (1)标签(2)自定义字段
+ */
+public class StringSpecialHandler implements IProcessData {
+    public StringSpecialHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object splitSymbol) {
+        if (!"".equals(splitSymbol)) {
+            return StringUtils.changeStringToString(data.toString().replaceAll(">", ""), splitSymbol.toString());
+        } else {
+            return data.toString();
+        }
+    }
+}

+ 17 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/handler/TimeHandler.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.utils.handler;
+
+import cn.cslg.pas.common.utils.DateUtils;
+
+/**
+ * @name 时间处理类
+ * @description 1.将时间类型数据转换为int型 2.现支持格式为 yyyy-MM-dd yyyy/MM/dd 可后需添加
+ */
+public class TimeHandler implements IProcessData {
+    public TimeHandler() {
+    }
+
+    @Override
+    public Object processData(Object data, Object splitSymbol) {
+        return DateUtils.getDateTime(data.toString());
+    }
+}