chendayu il y a 2 ans
Parent
commit
cdf54b7a0f

+ 4 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/ProjectVO.java

@@ -33,6 +33,10 @@ public class ProjectVO extends BaseVO {
    登录人租户Id
     */
     private Integer tenantId;
+    /**
+     * 事件id
+     */
+    private Integer eventId;
 
     @Data
     public static class Sort {

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/controller/ProjectController.java

@@ -149,7 +149,7 @@ public class ProjectController {
     @PostMapping("copy")
     @Operation(summary = "复制专题库")
     public String copy(@RequestBody ProjectCopyDTO projectCopyDTO) throws IOException {
-          Integer  projectId = projectService.copy(projectCopyDTO);
+        Integer projectId = projectService.copy(projectCopyDTO);
         return Response.success(projectId);
     }
 }

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/mapper/ProjectMapper.java

@@ -22,7 +22,7 @@ import java.util.List;
 @Repository
 public interface ProjectMapper extends BaseMapper<Project> {
 
-    IPage<Project> getPageList(Page<Project> page, ProjectVO params);
+    IPage<Project>  getPageList(Page<Project> page, ProjectVO params);
 
     List<Project> getListForCount(@Param("params") ProjectVO params);
 

+ 176 - 80
PAS/src/main/java/cn/cslg/pas/service/PatentRightService.java

@@ -431,19 +431,15 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
     }
 
     public void updatePatentRight(PatentRightParams params) {
-//        List<PatentRight> patentRightList = new ArrayList<>();
 //        获取国家 公开号前两位
-//        String country = PatentUtils.getPatentCountry(params.getPatentNo());
-//        String code;
-
+        String country = PatentUtils.getPatentCountry(params.getPatentNo());
         //权利要求原文
         String content = params.getContent();
         //权利要求译文
         String contentOut = params.getContentOut();
-        //独立权利要求
-        String selfContent = params.getSelfContent();
         if (StringUtils.isNotEmpty(content)) {
-             this.deleteByPatentId(params.getPatentId());
+            //先删除库表中原有该权要
+            this.deleteByPatentId(params.getPatentId());
 //            String[] contentArray = null;
 //            String[] contentOutArray = null;
 //            String[] selfContentArray = null;
@@ -490,9 +486,8 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
 //                        patentRight.setType(1);
 //                    }
 //                }
-//                patentRightList.add(patentRight);
             ArrayList<PatentRight> patentRights = new ArrayList<>();
-            //先去掉所有换行符,使原文连起来
+            //先去掉所有换行符,使所有内容连起来
             if (content.contains("\r\n")) {
                 content = content.replaceAll("\r\n", "");
             } else {
@@ -506,101 +501,202 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
             } else {
                 contentOut = contentOut.replaceAll("\n", "");
             }
-
-            //根据专利所属国家,定义序号规则
-            String regex;
-            if (content.contains("1.")) {
-                regex = "[0-9]+[.]";
-            } else if (content.contains("1、")) {
-                regex = "[0-9]+[、]";
-            } else if (content.contains("[001]")) {
-                regex = "\\[[0-9]+]";
-            } else {
-                regex = "";
-            }
-            Pattern compile = Pattern.compile(regex);
-            Matcher matcher = compile.matcher(content);
-            Matcher matcherOut = compile.matcher(contentOut);
-            while (matcher.find()) {
-                if (!matcher.group().equals("1.") && !matcher.group().equals("1、") && !matcher.group().equals("[001]")) {
-                    content = content.replaceFirst(matcher.group(), "\n" + matcher.group());
+            //去掉译文的所有空格
+            contentOut = contentOut.replaceAll(" +", "");
+
+            //中文专利的权要拆分 ↓
+            if (country.equals("CN") || country.equals("JP")) {
+                String regex;
+                if (content.contains("1.")) {
+                    regex = "。[0-9]+\\.";
+                } else if (content.contains("1、")) {
+                    regex = "。[0-9]+[、]";
+                } else if (content.contains("[001]")) {
+                    regex = "\\[[0-9]+]";
+                } else {
+                    regex = "";
                 }
-            }
-            String[] strs = content.split("\n");
-            while (matcherOut.find()) {
-                if (!matcherOut.group().equals("1.") && !matcherOut.group().equals("1、") && !matcherOut.group().equals("[001]")) {
-                    contentOut = contentOut.replaceFirst(matcherOut.group(), "\n" + matcherOut.group());
+                Matcher matcher = Pattern.compile(regex).matcher(content);
+                Matcher matcherOut = Pattern.compile(regex).matcher(contentOut);
+                while (matcher.find()) {
+                    if (matcher.group().contains(".")) {
+                        String matcherGroup = matcher.group().replace(".", "\\.");
+                        content = content.replaceFirst(matcherGroup, "。\n" + matcherGroup.substring(matcherGroup.indexOf("。") + 1, matcherGroup.indexOf("\\")) + ".");
+                    } else if (matcher.group().contains("、")) {
+                        content = content.replaceFirst(matcher.group(), "。\n" + matcher.group().substring(matcher.group().indexOf("。") + 1));
+                    }
                 }
-            }
-            String[] strsOut = contentOut.split("\n");
-            //定义父权要排序号
-            String regex1 = "权利要求[0-9]+";
-            String regex2 = "权利要求[0-9]+[至或~-]+[0-9]+";
-            for (int i = 0; i < strs.length; i++) {
-                if (strs[i].contains("权利要求")) {
-                    Pattern compile1 = Pattern.compile(regex1);
-                    Matcher matcher1 = compile1.matcher(strs[i]);
-                    Pattern compile2 = Pattern.compile(regex2);
-                    Matcher matcher2 = compile2.matcher(strs[i]);
-                    if (matcher2.find()) {
-                        String parentNum = matcher2.group().substring(matcher2.group().indexOf("求") + 1);
-                        String[] parentNums;
-                        if (parentNum.contains("~")) {
-                            parentNums = parentNum.split("~");
-                        } else if (parentNum.contains("-")) {
-                            parentNums = parentNum.split("-");
-                        } else if (parentNum.contains("至")) {
-                            parentNums = parentNum.split("至");
-                        } else if (parentNum.contains("或")) {
-                            parentNums = parentNum.split("或");
-                        } else {
-                            parentNums = new String[0];
-                        }
-                        StringBuilder builder = new StringBuilder();
-                        for (int j = Integer.parseInt(parentNums[0]) - 1; j < Integer.parseInt(parentNums[parentNums.length - 1]); j++) {
-                            if ((builder + "").equals("")) {
-                                builder.append(j);
+                String[] strs = content.split("\n");
+                while (matcherOut.find()) {
+                    if (matcherOut.group().contains(".")) {
+                        String matcherOutGroup = matcherOut.group().replace(".", "\\.");
+                        contentOut = contentOut.replaceFirst(matcherOutGroup, "。\n" + matcherOutGroup.substring(matcherOutGroup.indexOf("。") + 1, matcherOutGroup.indexOf("\\")) + ".");
+                    } else if (matcherOut.group().contains("、")) {
+                        contentOut = contentOut.replaceFirst(matcherOut.group(), "。\n" + matcherOut.group().substring(matcherOut.group().indexOf("。") + 1));
+                    }
+                }
+                String[] strsOut = contentOut.split("\n");
+                //定义父权要排序号
+                String regex1 = "权利要求[0-9]+";
+                String regex2 = "权利要求[0-9]+[至或~-]+[0-9]+";
+                for (int i = 0; i < strs.length; i++) {
+                    if (strs[i].contains("权利要求")) {
+                        Matcher matcher1 = Pattern.compile(regex1).matcher(strs[i]);
+                        Matcher matcher2 = Pattern.compile(regex2).matcher(strs[i]);
+                        if (matcher2.find()) {
+                            String parentNum = matcher2.group().substring(matcher2.group().indexOf("求") + 1);
+                            String[] parentNums;
+                            if (parentNum.contains("~")) {
+                                parentNums = parentNum.split("~");
+                            } else if (parentNum.contains("-")) {
+                                parentNums = parentNum.split("-");
+                            } else if (parentNum.contains("至")) {
+                                parentNums = parentNum.split("至");
+                            } else if (parentNum.contains("或")) {
+                                parentNums = parentNum.split("或");
                             } else {
-                                builder.append(",").append(j);
+                                parentNums = new String[0];
+                            }
+                            StringBuilder builder = new StringBuilder();
+                            for (int j = Integer.parseInt(parentNums[0]) - 1; j < Integer.parseInt(parentNums[parentNums.length - 1]); j++) {
+                                if ((builder + "").equals("")) {
+                                    builder.append(j);
+                                } else {
+                                    builder.append(",").append(j);
+                                }
+                            }
+                            PatentRight patentRight = new PatentRight()
+                                    .setPatentId(params.getPatentId())
+                                    .setType(1)
+                                    .setContent(strs[i])
+                                    .setSort(i)
+                                    .setParentSort(builder + "");
+                            if (strsOut.length - 1 >= i) {
+                                patentRight.setContentOut(strsOut[i]);
+                            }
+                            patentRights.add(patentRight);
+                        } else if (matcher1.find()) {
+                            String parentNum = matcher1.group().substring(matcher1.group().indexOf("求") + 1);
+                            PatentRight patentRight = new PatentRight()
+                                    .setPatentId(params.getPatentId())
+                                    .setType(1)
+                                    .setContent(strs[i])
+                                    .setSort(i)
+                                    .setParentSort((Integer.parseInt(parentNum) - 1) + "");
+                            if (strsOut.length - 1 >= i) {
+                                patentRight.setContentOut(strsOut[i]);
                             }
+                            patentRights.add(patentRight);
                         }
+
+                    } else {
                         PatentRight patentRight = new PatentRight()
                                 .setPatentId(params.getPatentId())
-                                .setType(1)
+                                .setType(0)
                                 .setContent(strs[i])
                                 .setSort(i)
-                                .setParentSort(builder + "");
+                                .setParentSort("-1");
                         if (strsOut.length - 1 >= i) {
                             patentRight.setContentOut(strsOut[i]);
                         }
                         patentRights.add(patentRight);
-                    } else if (matcher1.find()) {
-                        String parentNum = matcher1.group().substring(matcher1.group().indexOf("求") + 1);
+                    }
+                }
+
+                //英文专利的权要拆分 ↓
+            } else {
+                content = content.substring(content.indexOf("1."));
+                contentOut = contentOut.substring(contentOut.indexOf("1."));
+                String regex;
+                if (content.contains("1.")) {
+                    regex = "\\.[0-9]+\\. ";
+                } else if (content.contains("1、")) {
+                    regex = "\\.[0-9]+\\. ";
+                } else if (content.contains("[001]")) {
+                    regex = "\\[[0-9]+]";
+                } else {
+                    regex = "";
+                }
+                Matcher matcher = Pattern.compile(regex).matcher(content);
+                Matcher matcherOut = Pattern.compile("。[0-9]+\\.").matcher(contentOut);
+                while (matcher.find()) {
+                    String matcherGroup = matcher.group().replace(".", "\\.");
+                    content = content.replaceFirst(matcherGroup, ".\n" + matcherGroup.substring(matcherGroup.indexOf(".") + 1, matcherGroup.lastIndexOf("\\")) + ". ");
+                }
+                String[] strs = content.split("\n");
+                while (matcherOut.find()) {
+                    String matcherOutGroup = matcherOut.group().replace(".", "\\.");
+                    contentOut = contentOut.replaceFirst(matcherOutGroup, "。\n" + matcherOutGroup.substring(matcherOutGroup.indexOf("。") + 1, matcherOutGroup.indexOf("\\")) + ".");
+                }
+                String[] strsOut = contentOut.split("\n");
+                //定义父权要排序号
+                String regex1 = "claim [0-9]+";
+                String regex2 = "claims [0-9]+ or [0-9]+";
+                for (int i = 0; i < strs.length; i++) {
+                    if (strs[i].contains("claim")) {
+                        Matcher matcher1 = Pattern.compile(regex1).matcher(strs[i]);
+                        Matcher matcher2 = Pattern.compile(regex2).matcher(strs[i]);
+                        if (matcher2.find()) {
+                            String parentNum = matcher2.group().substring(matcher2.group().indexOf("s") + 2);
+                            String[] parentNums;
+                            if (parentNum.contains(" or ")) {
+                                parentNums = parentNum.split(" or ");
+                            } else if (parentNum.contains(" - ")) {
+                                parentNums = parentNum.split(" - ");
+                            } else if (parentNum.contains(" to ")) {
+                                parentNums = parentNum.split(" to ");
+                            } else if (parentNum.contains("或")) {
+                                parentNums = parentNum.split("或");
+                            } else {
+                                parentNums = new String[0];
+                            }
+                            StringBuilder builder = new StringBuilder();
+                            for (int j = Integer.parseInt(parentNums[0]) - 1; j < Integer.parseInt(parentNums[parentNums.length - 1]); j++) {
+                                if ((builder + "").equals("")) {
+                                    builder.append(j);
+                                } else {
+                                    builder.append(",").append(j);
+                                }
+                            }
+                            PatentRight patentRight = new PatentRight()
+                                    .setPatentId(params.getPatentId())
+                                    .setType(1)
+                                    .setContent(strs[i])
+                                    .setSort(i)
+                                    .setParentSort(builder + "");
+                            if (strsOut.length - 1 >= i) {
+                                patentRight.setContentOut(strsOut[i]);
+                            }
+                            patentRights.add(patentRight);
+                        } else if (matcher1.find()) {
+                            String parentNum = matcher1.group().substring(matcher1.group().indexOf("m") + 2);
+                            PatentRight patentRight = new PatentRight()
+                                    .setPatentId(params.getPatentId())
+                                    .setType(1)
+                                    .setContent(strs[i])
+                                    .setSort(i)
+                                    .setParentSort((Integer.parseInt(parentNum) - 1) + "");
+                            if (strsOut.length - 1 >= i) {
+                                patentRight.setContentOut(strsOut[i]);
+                            }
+                            patentRights.add(patentRight);
+                        }
+
+                    } else {
                         PatentRight patentRight = new PatentRight()
                                 .setPatentId(params.getPatentId())
-                                .setType(1)
+                                .setType(0)
                                 .setContent(strs[i])
                                 .setSort(i)
-                                .setParentSort((Integer.parseInt(parentNum) - 1) + "");
+                                .setParentSort("-1");
                         if (strsOut.length - 1 >= i) {
                             patentRight.setContentOut(strsOut[i]);
                         }
                         patentRights.add(patentRight);
                     }
-
-                } else {
-                    PatentRight patentRight = new PatentRight()
-                            .setPatentId(params.getPatentId())
-                            .setType(0)
-                            .setContent(strs[i])
-                            .setSort(i)
-                            .setParentSort("-1");
-                    if (strsOut.length - 1 >= i) {
-                        patentRight.setContentOut(strsOut[i]);
-                    }
-                    patentRights.add(patentRight);
                 }
             }
+
             this.saveOrUpdateBatch(patentRights);
         }
     }

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

@@ -326,7 +326,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     public Map<String, Object> getProjectTypeTotal(String scenario) throws IOException {
         Map<String, Object> map = new HashMap<>();
         List<Project> projectList = this.getAllProjectByMySelf();
-        projectList = projectList.stream().filter(item -> item.getScenarioName().contains(scenario)).collect(Collectors.toList());
+        projectList = projectList.stream().filter(item -> item.getScenarioName() != null &&item.getScenarioName().contains(scenario)).collect(Collectors.toList());
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Collections.singletonList(Constants.INVESTIGATION_TYPE));
         for (SystemDict systemDict : systemDictList) {
             map.put(systemDict.getLabel(), projectList.stream().filter(item -> item.getTypeList().contains(Integer.parseInt(systemDict.getValue()))).count());

+ 0 - 1
PAS/src/main/resources/mapper/EventMapper.xml

@@ -147,7 +147,6 @@
 
     <resultMap id="queryApplicationScenarioEventNumberMap"
                type="cn.cslg.pas.common.model.vo.ApplicationScenarioEventNumberVO">
-        <id column="id" property="applicationScenarioId"/>
         <result column="label" property="applicationScenarioName"/>
         <result column="value" property="applicationScenarioName"/>
         <collection property="eventNumberFromEvent" ofType="integer"

+ 4 - 1
PAS/src/main/resources/mapper/ProjectMapper.xml

@@ -48,7 +48,10 @@
                 <if test="params.tenantId!=null">
                     or a.tenantId = #{params.tenantId}
                 </if>
-                    )
+                )
+            </if>
+            <if test="params.eventId != null and params.eventId != ''">
+                and a.id in (select project_id from asso_event_project where event_id = #{params.eventId})
             </if>
         </where>
         order by a.`${params.sort.prop}` ${params.sort.order}