chenyi 2 роки тому
батько
коміт
f2b075d8f2

+ 56 - 0
PAS/src/main/java/cn/cslg/pas/domain/Authority.java

@@ -0,0 +1,56 @@
+package cn.cslg.pas.domain;
+
+import cn.cslg.pas.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+
+import java.util.List;
+
+@Data
+@TableName("Authority")
+public class Authority extends BaseEntity<AdminUser> {
+
+    /**
+     * 内容
+     */
+    @TableField("content")
+    private String content;
+    /**
+     * 翻译
+     */
+    @TableField("contentOut")
+    private String contentOut;
+    /**
+     * 0代表主权要1代表次权要
+     */
+    @TableField("contentOut")
+    private Integer type;
+    /**
+     * 专利号
+     */
+    @TableField("PatentID")
+    private Integer PatentID;
+    /**
+     * 父id拼接的字符串
+     */
+    @TableField("FID")
+    private String FID;
+    /**
+     * 子id拼接的字符串
+     */
+    @TableField("SID")
+    private String SID;
+    /**
+     *父id
+     */
+    private List<Integer> fatherID;
+    /**
+     *子id
+     */
+    private List<Integer> sonID;
+
+
+
+}

+ 7 - 0
PAS/src/main/java/cn/cslg/pas/mapper/AuthorityMapper.java

@@ -0,0 +1,7 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.Authority;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface AuthorityMapper extends BaseMapper<Authority> {
+}

+ 299 - 21
PAS/src/main/java/cn/cslg/pas/service/PatentRightService.java

@@ -4,6 +4,7 @@ import cn.cslg.pas.common.model.params.PatentRightParams;
 import cn.cslg.pas.common.utils.PatentUtils;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.domain.Authority;
 import cn.cslg.pas.domain.Patent;
 import cn.cslg.pas.domain.PatentRight;
 import cn.cslg.pas.mapper.PatentRightMapper;
@@ -71,15 +72,67 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
         }
         this.saveOrUpdateBatch(patentRightList);
     }
-    public void splits(PatentRight patentRight,String selfContent){
-        List<PatentRight> patentRightList = new ArrayList<>();
+    public void importAuthority(PatentRightParams params){
+            List<Authority> splits = splits(params);
+            List<Authority> authorities = relationshipAuthority(splits);
+            List<Authority> authorities1 = relationshipAuthority3(authorities);
+            List<Authority> authorities2 = relationshipAuthority2(authorities1);
+            List<Authority> authorities3 = relationshipAuthority4(authorities2);
+            for(Authority a:authorities3){
+                Authority authority = new Authority();
+                authority.setContent(a.getContent());
+                String join = StringUtils.join(a.getFatherID(), ",");
+                authority.setFID(join);
+                String join1 = StringUtils.join(a.getSonID(), ",");
+                authority.setSID(join1);
+                authority.setPatentID(params.getPatentId());
+                authority.setType(a.getType());
+                authority.insert();
+
+            }
+    }
+
+    public  List<Authority> splits(PatentRightParams params){
+        //去掉全要开头的""
+       String selfContent= params.getContent();
+        selfContent.replaceAll("''","");
+        selfContent.replaceAll("\n"," ");
+//        selfContent.replaceAll(" ","");
+        List<Authority> list = new ArrayList<>();
         //找到1. 2. ...这种格式的正则表达式
-        String str1="^[1-9]/d*$+\\.";
-        //找到【001】或者【002】这种格式的
-        String str2="\\[+^[1-9]/d*$+\\]";
+        String str1="(^\\d*$+)(\\.)";
+        //找到[001]或者[002]这种格式的
+        String str2="(\\[)(^[1-9]/d*$+)(\\])";
+        //【請求項 1】
+        String str3="(\\【請求項)(^[1-9]/d*$+)(\\】)";
+        //청구항 1()
+        String str4="청구항(^[1-9]/d*$+)";
+        Pattern p4 = Pattern.compile(str4);
+        Matcher m4 = p4.matcher(selfContent);
+        if(m4.find()) {
+            String str5=".";
+            Pattern p5 = Pattern.compile(str4);
+            Matcher m5 = p5.matcher(selfContent);
+            List<Integer> integers1=new ArrayList<>();
+            while (m5.find()){
+                integers1.add(m5.start());
+            }
+            for(int i=integers1.size()-1;i>=0;i--){
+                String str=selfContent.substring(integers1.get(i));
+                Authority authority=new Authority();
+                authority.setContent(str);
+                list.add(authority);
+
+            }
+            Authority authority=new Authority();
+            authority.setContent(selfContent);
+            list.add(authority);
+            return list;
+
+        }
+
         Pattern p = Pattern.compile(str1);
         Matcher m = p.matcher(selfContent);
-
         //判断找到的数量
         List<Integer> integers=new ArrayList<>();
         while (m.find()){
@@ -88,13 +141,12 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
         if(integers.size()!=0){
             for(int i=integers.size()-1;i>=0;i--){
                 String str=selfContent.substring(integers.get(i));
-                PatentRight patentRight1 =new PatentRight();
-                patentRight1.setContent(str);
-                patentRight1.setType(patentRight.getType());
-                patentRight1.setPatentId(patentRight.getPatentId());
+                Authority authority=new Authority();
+                authority.setContent(str);
+                list.add(authority);
 
             }
-            return;
+            return list;
         }
 
         Pattern compile = Pattern.compile(str2);
@@ -102,8 +154,8 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
         List<Integer> start=new ArrayList<>();
         List<Integer> end=new ArrayList<>();
         while (matcher.find()){
-            matcher.start();
-            matcher.end();
+            start.add( matcher.start());
+            end.add(matcher.end());
         }
         if(start.size()!=0){
             for(int i=start.size()-1;i>=0;i--) {
@@ -111,28 +163,254 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
                     String substring = selfContent.substring(end.get(i));
                     String string=new String(String.valueOf(i));
                     string=string+"."+substring;
-                    PatentRight patentRight1 =new PatentRight();
-                    patentRight1.setContent(string);
-                    patentRight1.setType(patentRight.getType());
-                    patentRight1.setPatentId(patentRight.getPatentId());
+                    Authority authority=new Authority();
+                   list.add(authority);
+
+                }
+                String substring = selfContent.substring(end.get(i),start.get(i+1));
+                String string=new String(String.valueOf(i));
+                string=string+"."+substring;
+                Authority authority=new Authority();
+               list.add(authority);
+            }
+           return list;
+        }
+        Pattern compile1 = Pattern.compile(str3);
+        Matcher matcher1 = compile1.matcher(selfContent);
+        List<Integer> start1=new ArrayList<>();
+        List<Integer> end1=new ArrayList<>();
+        while (matcher1.find()){
+            start1.add( matcher1.start());
+            end1.add(matcher1.end());
+        }
+        if(start1.size()!=0){
+            for(int i=start1.size()-1;i>=0;i--) {
+                if(i==start1.size()-1){
+                    String substring = selfContent.substring(end.get(i));
+                    String string=new String(String.valueOf(i));
+                    string=string+"."+substring;
+                    Authority authority=new Authority();
+                    list.add(authority);
 
                 }
                 String substring = selfContent.substring(end.get(i),start.get(i+1));
                 String string=new String(String.valueOf(i));
                 string=string+"."+substring;
-                PatentRight patentRight1 =new PatentRight();
-                patentRight1.setContent(string);
-                patentRight1.setType(patentRight.getType());
-                patentRight1.setPatentId(patentRight.getPatentId());
+                Authority authority=new Authority();
+                list.add(authority);
+            }
+            return list;
+        }
+        return list;
+    }
+
+    /**
+     * 英文下的处理方式(草稿)
+     */
+    private List<Authority> relationshipAuthority(List<Authority> list){
+
+        List<Authority> authorities=list;
+        //英文下的claim 1,claim2 的正则表达式
+        String str1="(claim)(\\s)(^\\d*$+)";
+        Pattern p = Pattern.compile(str1);
+        for(int i=0;i<list.size();i++){
+            //去掉空格
+            authorities.get(i).getContent().replaceAll(" ","");
+            Matcher m = p.matcher(authorities.get(i).getContent());
+            if(!m.find()){
+                list.get(i).setFID(null);
+                list.get(i).setType(0);
+                return list;
+            }
+            else {
+                //找到了
+                String group = m.group(0);
+                //把claim去掉只剩下面的数字
+                String substring = group.substring(5);
+                int j = Integer.parseInt(substring);
+                List<Integer> sonID = list.get(j - 1).getSonID();
+                sonID.add(authorities.get(i).getId());
+                list.get(j - 1).setSonID(sonID);
+                List<Integer> fatherID = list.get(i).getFatherID();
+                fatherID.add( list.get(j - 1).getId());
+                list.get(i).setFatherID(fatherID);
+                //设置为
+                list.get(i).setType(1);
             }
         }
+          return list;
+    }
+
+    /**
+     * 小日子的语言下的处理模式
+     */
+    private List<Authority>  relationshipAuthority3( List<Authority> list){
+        List<Authority> authorities=list;
+        //英文下的claim 1,claim2 的正则表达式
+        String str1="(前記第)(^\\d*$+)";
+        Pattern p = Pattern.compile(str1);
+        for(int i=0;i<list.size();i++){
+
+            Matcher m = p.matcher(authorities.get(i).getContent());
+            if(!m.find()){
+                list.get(i).setFID(null);
+                list.get(i).setType(0);
+                return list;
+            }
+            else {
+                //找到了
+                String group = m.group(0);
+                //把claim去掉只剩下面的数字
+                String substring = group.substring(3);
+                int j = Integer.parseInt(substring);
+                List<Integer> sonID = list.get(j - 1).getSonID();
+                sonID.add(authorities.get(i).getId());
+                list.get(j - 1).setSonID(sonID);
+                List<Integer> fatherID = list.get(i).getFatherID();
+                fatherID.add( list.get(j - 1).getId());
+                list.get(i).setFatherID(fatherID);
+                //设置为
+                list.get(i).setType(1);
+            }
+        }
+       return list;
+    }
+
+    /**
+     * 中文下的处理方式
+     */
+    public List<Authority> relationshipAuthority2(  List<Authority> list){
+        //中文下权利要求1,权利要求2,权利要求3
+        String str1="(权利要求)(^\\d*$+)";
+        //中文下权利要求1至
+        String str2="(权利要求)(^\\d*$+)(至)(^\\d*$+)";
+        //中文下权利要求 或
+        String str3="(权利要求)(^\\d*$+)(或)(^\\d*$+)";
 
+        Pattern p = Pattern.compile(str1);
+        Pattern p1 = Pattern.compile(str2);
+        Pattern p2 = Pattern.compile(str3);
+        for(int i=0;i<list.size();i++){
+            Matcher matcher = p.matcher(list.get(i).getContent());
+            if(matcher.find()){
+                list.get(i).setType(1);
+                //找到满足第一情况
+                Matcher matcher1 = p1.matcher(list.get(i).getContent());
+                if(matcher1.find()){
+                    //找到满足第一和第二种情况按第二种情况处理
+                    String group = matcher1.group(0);
+                    String str5="^\\d*$+";
+                    Pattern p3 = Pattern.compile(str5);
+                    Matcher matcher2 = p3.matcher(group);
+                    if(matcher2.find()){
+                        String group1 = matcher2.group(0);
+                        String group2 = matcher2.group(1);
+                        Integer j=Integer.parseInt(group1);
+                        Integer k=Integer.parseInt(group2);
+                        for(int l=j-1;l<k;l++){
+                            List<Integer> sonID = list.get(l).getSonID();
+                            sonID.add(list.get(i).getId());
+                            list.get(l).setSonID(sonID);
+                            List<Integer> fatherID = list.get(i).getFatherID();
+                            fatherID.add(list.get(l).getId());
+                            list.get(i).setFatherID(fatherID);
+                        }
+                    }
+                }else {
+                    Matcher matcher2 = p2.matcher(list.get(i).getContent());
+                    if(matcher2.find()){
+                        //找到满足第三和第一情况按第三中情况处理
+                        String group = matcher1.group(0);
+                        String str6="^\\d*$+";
+                        Pattern p3 = Pattern.compile(str6);
+                        Matcher matcher3 = p3.matcher(group);
+                        if(matcher3.find()) {
+                            String group1 = matcher2.group(0);
+                            String group2 = matcher2.group(1);
+                            Integer j = Integer.parseInt(group1);
+                            Integer k = Integer.parseInt(group2);
+                            List<Integer> sonID = list.get(j).getSonID();
+                            sonID.add(list.get(i).getId());
+                            list.get(j).setSonID(sonID);
+                            List<Integer> fatherID = list.get(i).getFatherID();
+                            fatherID.add(list.get(j).getId());
+                            list.get(i).setFatherID(fatherID);
+                            List<Integer> sonID1 = list.get(k).getSonID();
+                            sonID1.add(list.get(i).getId());
+                            list.get(k).setSonID(sonID1);
+                            List<Integer> fatherID1 = list.get(i).getFatherID();
+                            fatherID1.add(list.get(k).getId());
+                            list.get(i).setFatherID(fatherID1);
+                        }
+                    }else {
+                        //只满足第一中情况
+                        String group = matcher.group(0);
+                        String str7="^\\d*$+";
+                        Pattern p3 = Pattern.compile(str7);
+                        Matcher matcher3 = p3.matcher(group);
+                        if(matcher3.find()){
+                            String group1 = matcher2.group(0);
+                            Integer j = Integer.parseInt(group1);
+                            List<Integer> sonID = list.get(j).getSonID();
+                            sonID.add(list.get(i).getId());
+                            list.get(j).setSonID(sonID);
+                            List<Integer> fatherID = list.get(i).getFatherID();
+                            fatherID.add(list.get(j).getId());
+                            list.get(i).setFatherID(fatherID);
+                        }
+                    }
 
+                }
+            }else {
+                list.get(i).setType(0);
+                list.get(i).setFID(null);
+            }
+        }
+        return list;
+    }
 
+    /**
+     *
+     * 韩文下的处理
+     */
+    public List<Authority> relationshipAuthority4(List<Authority> list){
+        //韩文情况下的正则表达式
+        String str1="항(^\\d*$+)(\\s)에있어서";
 
+        Pattern p = Pattern.compile(str1);
+        for(int i=0;i<list.size();i++){
+            //去掉空格
+            list.get(i).getContent().replaceAll(" ","");
+            Matcher m = p.matcher(list.get(i).getContent());
+            if(!m.find()){
+                list.get(i).setFID(null);
+                list.get(i).setType(0);
+                return list;
+            }
+            else {
+                //找到了
+                String group = m.group(0);
+                String str2="(^\\d*$+)";
+                Pattern p1 = Pattern.compile(str1);
+                Matcher matcher = p1.matcher(group);
+                String substring= matcher.group(0);
+                int j = Integer.parseInt(substring);
+                List<Integer> sonID = list.get(j - 1).getSonID();
+                sonID.add(list.get(i).getId());
+                list.get(j - 1).setSonID(sonID);
+                List<Integer> fatherID = list.get(i).getFatherID();
+                fatherID.add( list.get(j - 1).getId());
+                list.get(i).setFatherID(fatherID);
+                //设置为
+                list.get(i).setType(1);
+            }
+        }
+        return list;
 
     }
 
+
+
     public void updatePatentRight(PatentRightParams params) {
         List<PatentRight> patentRightList = new ArrayList<>();
         //获取国家 公开号前两位

+ 2 - 6
PAS/src/main/java/cn/cslg/pas/service/UploadPatentBatchService.java

@@ -86,10 +86,7 @@ public class UploadPatentBatchService {
                     }
 
                 }
-                if(uploadParamsVO.getPatentRight()!=null){
 
-
-                }
                 //将装配对象中的数据保存到数据库
                 dataToDB(params, uploadParamsVO, projectImportPatentVO);
                 //通过WebSocket 在每一次循环结束后 向前端发送完成进度
@@ -215,6 +212,7 @@ public class UploadPatentBatchService {
             }
             //权利要求 OS_PATENT_RIGHT
             patentRightBusiness(uploadParamsVO);
+
             //说明书(文本) OS_PATENT_INSTRUCTION_TEXT
             if (uploadParamsVO.getPatentInstructionText() != null) {
                 patentInstructionTextBusiness(uploadParamsVO);
@@ -383,6 +381,7 @@ public class UploadPatentBatchService {
             patentRightParams.setSelfContent(uploadParamsVO.getSelfContent());
         }
         patentRightService.updatePatentRight(patentRightParams);
+        patentRightService.importAuthority(patentRightParams);
     }
 
     private void patentInstructionTextBusiness(UploadParamsVO uploadParamsVO) {
@@ -398,11 +397,8 @@ public class UploadPatentBatchService {
     private void patentAgentBusiness(UploadParamsVO uploadParamsVO) {
         PatentAgentParams patentAgentParams = new PatentAgentParams();
         patentAgentParams.setPatentId(uploadParamsVO.getPatent().getId());
-
         List<String> agentList = uploadParamsVO.getPatentAgentList().stream().map(PatentAgent::getName).collect(Collectors.toList());
         patentAgentParams.setAgent(agentList);
-
-
         patentAgentService.updatePatentAgent(patentAgentParams);
     }