Преглед изворни кода

Merge remote-tracking branch 'origin/dev' into dev

xiexiang пре 2 година
родитељ
комит
2aa0d78f74

+ 1 - 1
PAS/pom.xml

@@ -25,7 +25,7 @@
         <okhttps.version>3.1.1</okhttps.version>
         <poi.version>4.1.2</poi.version>
         <poi-tl.version>1.10.3</poi-tl.version>
-        <druid.version>1.1.10</druid.version>
+        <druid.version>1.1.20</druid.version>
         <fastjson.version>2.0.12</fastjson.version>
         <sa-token.version>1.29.0</sa-token.version>
         <springdoc.version>1.6.6</springdoc.version>

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/common/config/WebSocketConfig.java

@@ -6,7 +6,7 @@ import org.springframework.web.socket.server.standard.ServerEndpointExporter;
 
 @Configuration
 public class WebSocketConfig {
-    @Bean
+    //@Bean
     public ServerEndpointExporter serverEndpointExporter() {
         return new ServerEndpointExporter();
     }

+ 45 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/EventAddNewDTO.java

@@ -0,0 +1,45 @@
+package cn.cslg.pas.common.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 新增事件的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Accessors(chain = true)
+@Data
+public class EventAddNewDTO implements Serializable {
+    /**
+     * 事件名称
+     */
+    private String questionName;
+    /**
+     * 描述
+     */
+    private String description;
+    /**
+     * 应用场景
+     */
+    private List<Integer> applicationScenarios;
+    /**
+     * 时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date eventDate;
+    /**
+     * 专题库id
+     */
+    private Integer projectId;
+
+}

+ 17 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/EventQueryPageDTO.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+/**
+ * 事件的分页查询DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Data
+public class EventQueryPageDTO extends PageDTO2 {
+    /**
+     * 专题库id
+     */
+    private Integer projectId;
+}

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

@@ -0,0 +1,18 @@
+package cn.cslg.pas.common.utils;
+
+import cn.cslg.pas.exception.XiaoShiException;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Slf4j
+public class ThrowException {
+
+    public static void throwXiaoShiException(String message) {
+        log.info("{}", message);
+        throw new XiaoShiException(message);
+    }
+
+}

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

@@ -47,7 +47,6 @@ import java.util.stream.Collectors;
 @RequestMapping(Constants.API_VERSION_V2 + "/common")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class CommonController {
-
     private final AreaService areaService;
     private final SystemDictService systemDictService;
     private final SystemDictAssociateService systemDictAssociateService;

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

@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.*;
 
 /**
  * <p>
- *  自定义分析 前端控制器
+ * 自定义分析 前端控制器
  * </p>
  *
  * @author 王岩
@@ -30,7 +30,6 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping(Constants.API_VERSION_V2 + "/custom/analysis/item")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class CustomAnalysisItemController {
-
     private final CustomAnalysisItemService customAnalysisItemService;
     private final CustomAnalysisItemSourceService customAnalysisItemSourceService;
 

+ 52 - 0
PAS/src/main/java/cn/cslg/pas/controller/EventController.java

@@ -0,0 +1,52 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.dto.EventAddNewDTO;
+import cn.cslg.pas.common.model.dto.EventQueryPageDTO;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.service.IEventService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 事件的Controller层
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Tag(name = "事件的管理模块")
+@RequiredArgsConstructor
+@Slf4j
+@RequestMapping(Constants.API_VERSION_V2 + "/event")
+@RestController
+public class EventController {
+    private final IEventService eventService;
+
+    @Operation(summary = "新增事件")
+    @PostMapping("/addNew")
+    public String addNew(@RequestBody EventAddNewDTO eventAddNewDTO) {
+        log.info("开始处理【新增事件】的请求,请求参数为:{}", eventAddNewDTO);
+        try {
+            eventService.addNew(eventAddNewDTO);
+        } catch (XiaoShiException e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success("新增事件完成");
+    }
+
+    @Operation(summary = "查询事件")
+    @PostMapping("/query")
+    public String query(@RequestBody EventQueryPageDTO eventQueryPageDTO) {
+        log.info("开始处理【分页查询事件】的业务,参数为:{}", eventQueryPageDTO);
+        return eventService.query(eventQueryPageDTO);
+
+    }
+
+}

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

@@ -34,7 +34,6 @@ import org.springframework.web.multipart.MultipartFile;
 @RequestMapping(Constants.API_VERSION_V2 + "/project/import")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ProjectImportController {
-
     private final ProjectService projectService;
     private final CacheUtils cacheUtils;
     private final ProjectImportService projectImportService;

+ 90 - 0
PAS/src/main/java/cn/cslg/pas/domain/Event.java

@@ -0,0 +1,90 @@
+package cn.cslg.pas.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 事件表的实体类
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@TableName(value = "event")
+@Accessors(chain = true)
+@Data
+public class Event implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 事件名称
+     */
+    @TableField(value = "question_name")
+    private String questionName;
+    /**
+     * 描述
+     */
+    @TableField(value = "description")
+    private String description;
+    /**
+     * 应用场景
+     */
+    @TableField(value = "application_scenario")
+    private String applicationScenario;
+    /**
+     * 应用场景(Integer集合形式)
+     */
+    @TableField(exist = false)
+    private List<Integer> applicationScenarios;
+    /**
+     * 时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "event_date")
+    private Date eventDate;
+    /**
+     * 专题库id
+     */
+    @TableField(value = "project_id")
+    private Integer projectId;
+    /**
+     * 创建人id
+     */
+    @TableField(value = "create_person_id")
+    private Integer createPersonId;
+    /**
+     * 创建人名称
+     */
+    @TableField(value = "create_person_name")
+    private String createPersonName;
+    /**
+     * 创建时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time")
+    private Date createTime;
+    /**
+     * 最后修改时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "modified_time")
+    private Date modifiedTime;
+
+}

+ 27 - 0
PAS/src/main/java/cn/cslg/pas/mapper/EventMapper.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.Event;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 事件表的Mapper层接口
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Repository
+public interface EventMapper extends BaseMapper<Event> {
+    /**
+     * 根据名称和专题库ids统计数量
+     *
+     * @param questionName 事件名称
+     * @param projectIds   专题库ids
+     * @return 返回统计到的数量
+     */
+    int countByNameAndProjectIds(String questionName, List<Integer> projectIds);
+
+
+}

+ 31 - 0
PAS/src/main/java/cn/cslg/pas/service/IEventService.java

@@ -0,0 +1,31 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.model.dto.EventAddNewDTO;
+import cn.cslg.pas.common.model.dto.EventQueryPageDTO;
+import cn.cslg.pas.domain.Event;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 事件的Service层接口
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+public interface IEventService extends IService<Event> {
+    /**
+     * 新增事件
+     *
+     * @param eventAddNewDTO 新增事件的DTO类对象
+     */
+    @Transactional
+    void addNew(EventAddNewDTO eventAddNewDTO);
+
+    /**
+     * 分页查询事件
+     *
+     * @param eventQueryPageDTO 事件的分页查询DTO类对象
+     */
+    String query(EventQueryPageDTO eventQueryPageDTO);
+
+}

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

@@ -7,7 +7,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.List;
 
 /**
- * 专利价值曲线的Service层
+ * 专利价值曲线的Service层接口
  *
  * @Author xiexiang
  * @Date 2023/3/15

+ 165 - 135
PAS/src/main/java/cn/cslg/pas/service/PatentRightService.java

@@ -432,164 +432,194 @@ 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;
+        ArrayList<PatentRight> patentRights = new ArrayList<>();
+        //获取国家(公开号的前两位)
+        String country = PatentUtils.getPatentCountry(params.getPatentNo());
 
         //权利要求原文
         String content = params.getContent();
         //权利要求译文
         String contentOut = params.getContentOut();
-        //独立权利要求
-        String selfContent = params.getSelfContent();
+        //先去掉所有换行符,使原文和原文译文都连起来
+        content = content.replaceAll("\n", "");
+        contentOut = contentOut.replaceAll("\n", "").replaceAll(" +", "");
         if (StringUtils.isNotEmpty(content)) {
-//            this.deleteByPatentId(params.getPatentId());
-//            String[] contentArray = null;
-//            String[] contentOutArray = null;
-//            String[] selfContentArray = null;
-//            switch (country) {
-//                case "JP":
-//                case "CN":
-//                    code = "。";
-//                    if (StringUtils.isNotEmpty(contentOut)) {
-//                        contentOut = contentOut.replaceAll("\n", "");
-//                        contentOutArray = StringUtils.split(contentOut, code);
-//                    }
-//                    if (StringUtils.isNotEmpty(selfContent)) {
-//                        selfContent = selfContent.replaceAll("\n", "");
-//                        selfContentArray = StringUtils.split(selfContent, code);
-//                    }
-//                    content = content.replaceAll("\n", "");
-//                    contentArray = StringUtils.split(content, code);
-//                    break;
-//                default:
-//                    code = "\n";
-//                    if (StringUtils.isNotEmpty(contentOut)) {
-//                        contentOutArray = StringUtils.split(contentOut, code);
-//                    }
-//                    if (StringUtils.isNotEmpty(selfContent)) {
-//                        selfContentArray = StringUtils.split(selfContent, code);
-//                    }
-//                    contentArray = StringUtils.split(content, code);
-//            }
-//            for (int i = 0; i < contentArray.length; i++) {
-//                if (StringUtils.isEmpty(contentArray[i])) {
-//                    continue;
-//                }
-//                PatentRight patentRight = new PatentRight();
-//                patentRight.setPatentId(params.getPatentId());
-//                patentRight.setContent(contentArray[i]);
-//                patentRight.setType(0);
-//                patentRight.setSort(i);
-//                if (contentOutArray != null && i < contentOutArray.length) {
-//                    patentRight.setContentOut(contentOutArray[i]);
-//                }
-//                if (selfContentArray != null) {
-//                    String temp = Arrays.stream(selfContentArray).filter(item -> item.equals(patentRight.getContent())).findFirst().orElse(null);
-//                    if (temp != null) {
-//                        patentRight.setType(1);
-//                    }
-//                }
-//                patentRightList.add(patentRight);
-            ArrayList<PatentRight> patentRights = new ArrayList<>();
-            //先去掉所有换行符,使原文连起来
-            content = content.replaceAll("\n", "");
-            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 = "";
-            }
+            //先删除原来的专利权要
+            this.deleteByPatentId(params.getPatentId());
+            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 = "";
+                }
 
-            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());
+                Pattern compile = Pattern.compile(regex);
+                Matcher matcher = compile.matcher(content);
+                Matcher matcherOut = compile.matcher(contentOut);
+                while (matcher.find()) {
+                    String matcherGroup = matcher.group();
+                    matcherGroup = matcherGroup.substring(1).replace(".", "\\.");
+                    content = content.replaceFirst(matcherGroup, "\n" + matcherGroup);
                 }
-            }
-            String[] strs = content.split("\n");
-            while (matcherOut.find()) {
-                if (!matcherOut.group().equals("1.") && !matcherOut.group().equals("1、") && !matcherOut.group().equals("[001]")) {
-                    contentOut = contentOut.replaceFirst(matcher.group(), "\n" + matcher.group());
+                while (matcherOut.find()) {
+                    String matcherGroup = matcherOut.group();
+                    matcherGroup = matcherGroup.substring(1).replace(".", "\\.");
+                    contentOut = contentOut.replaceFirst(matcherGroup, "\n" + matcherGroup);
                 }
-            }
-            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");
+                String[] strsOut = contentOut.split("\n");
+
+                //定义父权要排序号
+                String regex1 = "权利要求[0-9]+";
+                String regex2 = "权利要求[0-9]+[至或~-]+[0-9]+";
+                for (int i = 0; i < strs.length; i++) {
+                    PatentRight patentRight = new PatentRight()
+                            .setPatentId(params.getPatentId())
+                            .setContent(strs[i])
+                            .setContentOut(strsOut[i])
+                            .setSort(i);
+                    if (strs[i].contains("权利要求")) {
+                        patentRight.setType(1);
+                        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;
+                            String chr;
+                            if (parentNum.contains("~")) {
+                                chr = "~";
+                            } else if (parentNum.contains("-")) {
+                                chr = "-";
+                            } else if (parentNum.contains("至")) {
+                                chr = "至";
+                            } else if (parentNum.contains("或")) {
+                                chr = "或";
                             } else {
-                                builder.append(",").append(j);
+                                chr = "";
                             }
+                            parentNums = parentNum.split(chr);
+                            StringBuilder builder = new StringBuilder();
+                            if (!chr.equals("或")) {
+                                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);
+                                    }
+                                }
+                            } else {
+                                for (String num : parentNums) {
+                                    if ((builder + "").equals("")) {
+                                        builder.append(Integer.parseInt(num) - 1);
+                                    } else {
+                                        builder.append(",").append(Integer.parseInt(num) - 1);
+                                    }
+                                }
+                            }
+                            patentRight.setParentSort(builder + "");
+                            patentRights.add(patentRight);
+                        } else if (matcher1.find()) {
+                            String parentNum = matcher1.group().substring(matcher1.group().indexOf("求") + 1);
+                            patentRight.setParentSort((Integer.parseInt(parentNum) - 1) + "");
+                            patentRights.add(patentRight);
                         }
-                        PatentRight patentRight = new PatentRight()
-                                .setPatentId(params.getPatentId())
-                                .setType(1)
-                                .setContent(strs[i])
-                                .setContentOut(strsOut[i])
-                                .setSort(i)
-                                .setParentSort(builder + "");
-                        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])
-                                .setContentOut(strsOut[i])
-                                .setSort(i)
-                                .setParentSort((Integer.parseInt(parentNum) - 1) + "");
+
+                    } else {
+                        patentRight.setType(0);
+                        patentRight.setParentSort("-1");
                         patentRights.add(patentRight);
                     }
-
+                }
+            } else {
+                String regex = "[0-9]+\\. ";
+                String regexOut;
+                if (contentOut.contains("1.")) {
+                    regexOut = "。[0-9]+[.]";
+                } else if (contentOut.contains("1、")) {
+                    regexOut = "。[0-9]+[、]";
+                } else if (contentOut.contains("[001]")) {
+                    regexOut = "\\[[0-9]+]";
                 } else {
+                    regexOut = "";
+                }
+                Pattern compile = Pattern.compile(regex);
+                Matcher matcher = compile.matcher(content);
+                Pattern compileOut = Pattern.compile(regexOut);
+                Matcher matcherOut = compileOut.matcher(contentOut);
+                while (matcher.find()) {
+                    String matcherGroup = matcher.group();
+                    matcherGroup = matcherGroup.replace(".", "\\.");
+                    content = content.replaceFirst(matcherGroup, "\n" + matcherGroup);
+                }
+                while (matcherOut.find()) {
+                    String matcherOutGroup = matcherOut.group();
+                    matcherOutGroup = matcherOutGroup.substring(1).replace(".", "\\.");
+                    contentOut = contentOut.replaceFirst(matcherOutGroup, "\n" + matcherOutGroup);
+                }
+                content = content.substring(content.indexOf("1. "));
+                contentOut = contentOut.substring(contentOut.indexOf("1."));
+                String[] strs = content.split("\n");
+                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++) {
                     PatentRight patentRight = new PatentRight()
                             .setPatentId(params.getPatentId())
-                            .setType(0)
                             .setContent(strs[i])
                             .setContentOut(strsOut[i])
-                            .setSort(i)
-                            .setParentSort("-1");
-                    patentRights.add(patentRight);
+                            .setSort(i);
+                    if (strs[i].contains("claim")) {
+                        patentRight.setType(1);
+                        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("s") + 2);
+                            String[] parentNums;
+                            if (parentNum.contains(" or ")) {
+                                parentNums = parentNum.split(" or ");
+                            } else {
+                                parentNums = new String[0];
+                            }
+                            StringBuilder builder = new StringBuilder();
+                            for (String num : parentNums) {
+                                if ((builder + "").equals("")) {
+                                    builder.append(Integer.parseInt(num) - 1);
+                                } else {
+                                    builder.append(",").append(Integer.parseInt(num) - 1);
+                                }
+                            }
+                            patentRight.setParentSort(builder + "");
+                            patentRights.add(patentRight);
+                        } else if (matcher1.find()) {
+                            String parentNum = matcher1.group().substring(matcher1.group().indexOf("m") + 2);
+                            patentRight.setParentSort((Integer.parseInt(parentNum) - 1) + "");
+                            patentRights.add(patentRight);
+                        }
+
+                    } else {
+                        patentRight.setType(0);
+                        patentRight.setParentSort("-1");
+                        patentRights.add(patentRight);
+                    }
                 }
             }
-            this.saveOrUpdateBatch(patentRights);
+
         }
+        this.saveOrUpdateBatch(patentRights);
+
     }
+
+
 }
 
 

+ 127 - 0
PAS/src/main/java/cn/cslg/pas/service/impl/EventServiceImpl.java

@@ -0,0 +1,127 @@
+package cn.cslg.pas.service.impl;
+
+import cn.cslg.pas.common.JsonPage;
+import cn.cslg.pas.common.model.PersonnelVO;
+import cn.cslg.pas.common.model.dto.EventAddNewDTO;
+import cn.cslg.pas.common.model.dto.EventQueryPageDTO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.pas.common.utils.ThrowException;
+import cn.cslg.pas.domain.Event;
+import cn.cslg.pas.domain.Project;
+import cn.cslg.pas.mapper.EventMapper;
+import cn.cslg.pas.service.IEventService;
+import cn.cslg.pas.service.ProjectService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.StringJoiner;
+import java.util.stream.Collectors;
+
+/**
+ * 事件的Service层接口实现类
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@RequiredArgsConstructor
+@Slf4j
+@Service
+public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements IEventService {
+    private final ProjectService projectService;
+    private final EventMapper eventMapper;
+    private final CacheUtils cacheUtils;
+    private final LoginUtils loginUtils;
+
+    /**
+     * 新增事件
+     *
+     * @param eventAddNewDTO 新增事件的DTO类对象
+     */
+    @Override
+    public void addNew(EventAddNewDTO eventAddNewDTO) {
+        log.info("开始处理【新增事件】的业务,参数为:{}", eventAddNewDTO);
+
+        //检查名称是否被占用(同一租户下专题库不能有同名事件名称)
+        String questionName = eventAddNewDTO.getQuestionName();
+        Project project = projectService.getById(eventAddNewDTO.getProjectId());
+        Integer tenantId = project.getTenantId();
+        LambdaQueryWrapper<Project> projectQueryWrapper = new LambdaQueryWrapper<>();
+        projectQueryWrapper.eq(Project::getTenantId, tenantId);
+        List<Project> projectList = projectService.list(projectQueryWrapper);
+        ArrayList<Integer> projectIds = new ArrayList<>();
+        for (Project n : projectList) {
+            projectIds.add(n.getId());
+        }
+        log.info("检查事件名称是否被占用(同一租户下专题库不能有同名事件)");
+        int count = eventMapper.countByNameAndProjectIds(questionName, projectIds);
+        if (count > 0) {
+            ThrowException.throwXiaoShiException("新增事件失败,当前租户下事件名称【" + questionName + "】已存在,请尝试更换名称");
+        }
+
+        //新增事件DTO数据赋值给事件表实体类
+        Event event = new Event();
+        BeanUtils.copyProperties(eventAddNewDTO, event);
+        List<Integer> applicationScenarios = eventAddNewDTO.getApplicationScenarios();
+        //若有应用场景,则将应用场景集合转换成以逗号拼接的字符串,并赋值给实体类对应参数
+        if (applicationScenarios != null && applicationScenarios.size() != 0) {
+            String applicationScenario = applicationScenarios.stream().map(String::valueOf).collect(Collectors.joining(","));
+            event.setApplicationScenario(applicationScenario);
+        }
+
+        //获取当前登陆人id及姓名
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        event
+                .setCreatePersonId(personnelVO.getId())
+                .setCreatePersonName(personnelVO.getName());
+
+        log.info("数据入事件表");
+        //this.save(event);
+        int rows = eventMapper.insert(event);
+        if (rows != 1) {
+            ThrowException.throwXiaoShiException("新增事件失败,服务器忙请稍后再次尝试");
+        }
+
+        log.info("新增事件完成");
+
+    }
+
+    @Override
+    public String query(EventQueryPageDTO eventQueryPageDTO) {
+        log.info("开始处理【分页查询事件】的业务,参数为:{}", eventQueryPageDTO);
+
+        Integer projectId = eventQueryPageDTO.getProjectId();
+        Integer current = eventQueryPageDTO.getCurrent();
+        Integer size = eventQueryPageDTO.getSize();
+        LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
+        if (projectId != null) {
+            queryWrapper.eq(Event::getProjectId, projectId);
+        }
+
+        if (current != null && size != null) {
+            PageHelper.startPage(current, size);
+        }
+        List<Event> events = eventMapper.selectList(queryWrapper.orderByDesc(Event::getCreateTime));
+        for (Event event : events) {
+            String applicationScenario = event.getApplicationScenario();
+            if (applicationScenario != null && !applicationScenario.equals("")) {
+                List<Integer> applicationScenarios = Arrays.stream(applicationScenario.split(",")).map(Integer::parseInt).collect(Collectors.toList());
+                event.setApplicationScenarios(applicationScenarios);
+            }
+        }
+        return Response.success(JsonPage.restPage(new PageInfo(events)));
+    }
+
+
+}

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

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="cn.cslg.pas.mapper.EventMapper">
+    <!--根据名称和专题库ids统计数量-->
+    <!--int countByNameAndProjectIds(String questionName, List<Integer> projectIds);-->
+    <select id="countByNameAndProjectIds" resultType="int">
+        select count(*)
+        from pas.event
+        where question_name = #{questionName}
+        and project_id in (
+        <foreach collection="projectIds" item="n" separator=",">
+            #{n}
+        </foreach>
+        )
+    </select>
+
+</mapper>