dick пре 1 година
родитељ
комит
d987a860e9

+ 26 - 20
src/main/java/cn/cslg/pas/common/utils/ClaimUtils/ClaimSplitUtils.java

@@ -23,7 +23,7 @@ import java.util.stream.Collectors;
 public class ClaimSplitUtils {
     private static final List<String> CNRegix = Arrays.asList("[0-9]+\\.[^0-9]+?", "\\[[0-9]+]");
     private static final List<String> JPRegix = Arrays.asList("【請求項[0-9]+】");
-    private static final List<String> KORRegix = Arrays.asList("청구항 [0-9]+");
+    private static final List<String> KORRegix = Arrays.asList("청구항 [0-9]+","\\[[0-9]+]");
     private static final List<String> ENReginx = Arrays.asList("[0-9]+\\.[^0-9]+?", "\\[[0-9]+]");
 
 
@@ -31,9 +31,9 @@ public class ClaimSplitUtils {
         try {
             //国家
             String country = params.getCountry();
-            String  patentNo =params.getPatentNo();
+            String patentNo = params.getPatentNo();
             if (country == null) {
-                country = params.getPatentNo().substring(0, 2);
+                country = params.getPatentNo().substring(0,2);
             }
             //原文
             String content = params.getContent();
@@ -47,22 +47,23 @@ public class ClaimSplitUtils {
             }
             String regex = ClaimSplitUtils.getRegex(country, content);
             if (regex == null) {
-                reDefaultPatentClaim(patentRights, content);
+               reDefaultPatentClaim(patentRights,content);
                 return patentRights;
             }
             patentRights = splitPatentRight(regex, content);
 
-   switch (country) {
-       case "CN":
-           loadCNPatentClaim(patentNo,patentRights);
-           break;
-       case "FR":
-           loadFRPatentClaim(patentNo,patentRights);
-           break;
-       default:
-           loadENPatentClaim(patentNo,patentRights);
-   }
-            return patentRights;
+            switch (country) {
+                case "CN":
+                    loadCNPatentClaim(patentNo, patentRights);
+                    break;
+                case "FR":
+                    loadFRPatentClaim(patentNo, patentRights);
+                    break;
+                default:
+                    loadENPatentClaim(patentNo, patentRights);
+                    break;
+            }
+             return patentRights;
         } catch (Exception e) {
             e.printStackTrace();
             ArrayList<RePatentClaim> patentRights = new ArrayList<>();
@@ -81,11 +82,13 @@ public class ClaimSplitUtils {
         Integer num = 1;
         ArrayList<RePatentClaim> patentRights = new ArrayList<>();
         Boolean flag = true;
+
         for (int i = 0; i < claimSplitVOS.size(); i++) {
             Integer start = claimSplitVOS.get(i).getPosition();
             Integer end = content.length();
             String cont = claimSplitVOS.get(i).getContent();
             Matcher matcherNum = Pattern.compile(regexNum).matcher(cont);
+
             //查询当前序号
             if (matcherNum.find()) {
                 String a = matcherNum.group();
@@ -117,7 +120,7 @@ public class ClaimSplitUtils {
                 break;
             }
         }
-        if (flag.equals(false)) {
+        if (flag.equals(false) || patentRights.size() == 1) {
             reDefaultPatentClaim(patentRights, content);
         }
         return patentRights;
@@ -148,12 +151,16 @@ public class ClaimSplitUtils {
         switch (country) {
             case "CN":
                 regixs = ClaimSplitUtils.CNRegix;
+                break;
             case "JP":
                 regixs = ClaimSplitUtils.JPRegix;
-            case "KOR":
+                break;
+            case "KR":
                 regixs = ClaimSplitUtils.KORRegix;
+                break;
             default:
                 regixs = ClaimSplitUtils.ENReginx;
+                break;
         }
         for (String re : regixs) {
             Matcher matcher = Pattern.compile(re).matcher(content);
@@ -166,8 +173,7 @@ public class ClaimSplitUtils {
     }
 
     private static void reDefaultPatentClaim(ArrayList<RePatentClaim> patentRights, String content) {
-        patentRights = new ArrayList<>();
-
+        patentRights.clear();
         RePatentClaim rePatentClaim = new RePatentClaim();
         rePatentClaim.setSort(1);
         rePatentClaim.setContent(content);
@@ -176,7 +182,7 @@ public class ClaimSplitUtils {
     }
 
 
-    private static void loadCNPatentClaim(String patentNo,ArrayList<RePatentClaim> rePatentClaims) {
+    private static void loadCNPatentClaim(String patentNo, ArrayList<RePatentClaim> rePatentClaims) {
         String regex1 = "权利要求[0-9]+";
         String regex2 = "权利要求[0-9]+[至或~-]+[0-9]+";
 

+ 21 - 1
src/main/java/cn/cslg/pas/service/business/CommonService.java

@@ -109,5 +109,25 @@ public class CommonService {
         return maps;
 }
 
-
+    public static String readFile(String fileName) {
+        String json = "";
+        try {
+            //获取 applicationHome 内的路径 ...\target\classes 到这一层级下
+            //获取 file的parentFile 即最后一级之前的所有层级路径(包括盘符) 这里能获得到的最终层级为  ...\target 后续用FILE_SEPARATOR(系统路径分割通配符 即 "\") 以及fileName拼接生成存放文件的目录层级 即为根目录 root
+//            String filePath = fileUtils.getPath("/11.docx");
+            File file = new File(fileName);
+            Reader reader = new InputStreamReader(new FileInputStream(file), "utf-8");
+            int ch = 0;
+            StringBuffer buffer = new StringBuffer();
+            while ((ch = reader.read()) != -1) {
+                buffer.append((char) ch);
+            }
+            reader.close();
+            json = buffer.toString();
+            return json;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
 }

+ 40 - 0
src/test/java/cn/cslg/pas/service/ClaimTextTests.java

@@ -0,0 +1,40 @@
+package cn.cslg.pas.service;
+
+
+import cn.cslg.pas.common.utils.ClaimUtils.ClaimSplitUtils;
+import cn.cslg.pas.common.vo.PatentRightParams;
+import cn.cslg.pas.common.vo.RePatentClaim;
+import cn.cslg.pas.service.business.CommonService;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.List;
+
+@SpringBootTest
+public class ClaimTextTests {
+
+    @Test
+    public void test() throws Exception {
+        String json = CommonService.readFile("C:\\Users\\dick\\Desktop\\claim\\KR200488684Y1.json");
+        JSONObject sqlObjects = JSON.parseObject(json, JSONObject.class);
+
+        String pn = sqlObjects.get("PN").toString();
+        String content = sqlObjects.get("content").toString();
+
+        PatentRightParams rightParams = new PatentRightParams();
+        rightParams.setPatentNo(pn);
+        rightParams.setContent(content);
+        List<RePatentClaim> rePatentClaims = ClaimSplitUtils.formatPatentRight(rightParams);
+        StringBuilder stringBuilder = new StringBuilder();
+        rePatentClaims.forEach(item -> stringBuilder.append(item.getContent()));
+
+        if (stringBuilder.toString().equals(content)) {
+            System.out.println(true);
+        }
+
+        System.out.println(pn);
+    }
+
+}