Forráskód Böngészése

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

chendayu 2 éve
szülő
commit
261249745e

+ 7 - 2
PAS/pas.iml

@@ -118,9 +118,7 @@
     <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.5.8" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.5.8" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.5.8" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.15" level="project" />
     <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.15" level="project" />
     <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:6.1.6.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.73.Final" level="project" />
     <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.73.Final" level="project" />
@@ -201,5 +199,12 @@
     <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.15" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.3.15" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.8.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-quartz:2.5.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.2" level="project" />
+    <orderEntry type="library" name="Maven: com.mchange:c3p0:0.9.5.2" level="project" />
+    <orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.11" level="project" />
+    <orderEntry type="library" name="Maven: e-iceblue:spire.pdf:8.7.0" level="project" />
   </component>
 </module>

+ 1 - 0
PAS/pom.xml

@@ -188,6 +188,7 @@
         </dependency>
     </dependencies>
 
+
     <build>
         <finalName>PAS_PROD2.0</finalName>
         <plugins>

+ 68 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/ScratchWordsDTO.java

@@ -0,0 +1,68 @@
+package cn.cslg.pas.common.model.dto;
+
+import cn.cslg.pas.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 管理员表
+ * </p>
+ */
+@Data
+@Accessors(chain = true)
+public class ScratchWordsDTO extends BaseEntity<ScratchWordsDTO> {
+
+    /**
+     * 专利号
+     */
+    private Integer patentNo;
+
+    /**
+     *
+     */
+    private String position;
+
+    /**
+     *
+     */
+    private String content;
+
+    /**
+     *
+     */
+    private String scratchType;
+
+    /**
+     *
+     */
+    private String scratchColor;
+
+    /**
+     * 标引备注
+     */
+    private String remark;
+
+    /**
+     * 创建人
+     */
+    private Integer createId;
+
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+
+    /**
+     * 租户id
+     */
+    private Integer tenantId;
+
+    /**
+     * 专题库id
+     */
+    private Integer projectId;
+
+}

+ 67 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/ScratchWordsUpdateDTO.java

@@ -0,0 +1,67 @@
+package cn.cslg.pas.common.model.dto;
+
+import cn.cslg.pas.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 管理员表
+ * </p>
+ */
+@Data
+@Accessors(chain = true)
+public class ScratchWordsUpdateDTO extends BaseEntity<ScratchWordsUpdateDTO> {
+
+    /**
+     * 专利号
+     */
+    private Integer patentNo;
+
+    /**
+     *
+     */
+    private String position;
+
+    /**
+     *
+     */
+    private String content;
+
+    /**
+     *
+     */
+    private String scratchType;
+
+    /**
+     *
+     */
+    private String scratchColor;
+
+    /**
+     * 标引备注
+     */
+    private String remark;
+
+    /**
+     * 创建人
+     */
+    private Integer createId;
+
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+
+    /**
+     * 租户id
+     */
+    private Integer tenantId;
+
+    /**
+     * 专题库id
+     */
+    private Integer projectId;
+
+}

+ 30 - 0
PAS/src/main/java/cn/cslg/pas/common/model/outApi/PatentStarListDto.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.model.outApi;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 专利之星检索dto类
+ *
+ * @author 李仁杰
+ */
+
+@Data
+public class PatentStarListDto {
+    /**
+     * 检索式
+     */
+    @JsonProperty(value = "CurrentQuery")
+   private String CurrentQuery;
+    @JsonProperty(value = "DBType")
+    private String DBType;
+    @JsonProperty(value = "PageNum")
+    private Integer PageNum;
+    @JsonProperty(value = "RowCount")
+    private Integer RowCount;
+    @JsonProperty(value = "OrderBy")
+    private String OrderBy;
+    @JsonProperty(value = "OrderByType")
+    private String OrderByType;
+}

+ 6 - 6
PAS/src/main/java/cn/cslg/pas/common/utils/CacheUtils.java

@@ -123,18 +123,18 @@ public class CacheUtils {
         return uuid;
     }
 
-    public void deleteUserSystemFieldSetting(Integer projectId, String type, String view, Integer userId) {
-        String key = SecureUtil.md5(projectId + RedisConf.SYMBOL_COLON + type + RedisConf.SYMBOL_COLON + view + RedisConf.SYMBOL_COLON + userId);
+    public void deleteUserSystemFieldSetting(Integer projectId, String type, String view, Integer userId,Integer createId) {
+        String key = SecureUtil.md5(projectId + RedisConf.SYMBOL_COLON + type + RedisConf.SYMBOL_COLON + view + RedisConf.SYMBOL_COLON + userId+createId);
         redisUtil.delete(RedisConf.USER_FIELD + RedisConf.SYMBOL_COLON + key);
     }
 
-    public void setUserSystemFieldSetting(Integer projectId, String type, String view, Integer userId, List<PatentField> defaultField) {
-        String key = SecureUtil.md5(projectId + RedisConf.SYMBOL_COLON + type + RedisConf.SYMBOL_COLON + view + RedisConf.SYMBOL_COLON + userId);
+    public void setUserSystemFieldSetting(Integer projectId, String type, String view, Integer userId, List<PatentField> defaultField,Integer createId) {
+        String key = SecureUtil.md5(projectId + RedisConf.SYMBOL_COLON + type + RedisConf.SYMBOL_COLON + view + RedisConf.SYMBOL_COLON + userId+createId);
         redisUtil.set(RedisConf.USER_FIELD + RedisConf.SYMBOL_COLON + key, JsonUtils.objectToJson(defaultField));
     }
 
-    public List<PatentField> getUserSystemFieldSetting(Integer projectId, String type, String view, Integer userId) {
-        String key = SecureUtil.md5(projectId + RedisConf.SYMBOL_COLON + type + RedisConf.SYMBOL_COLON + view + RedisConf.SYMBOL_COLON + userId);
+    public List<PatentField> getUserSystemFieldSetting(Integer projectId, String type, String view, Integer userId,Integer createId) {
+        String key = SecureUtil.md5(projectId + RedisConf.SYMBOL_COLON + type + RedisConf.SYMBOL_COLON + view + RedisConf.SYMBOL_COLON + userId+createId);
         String json = redisUtil.get(RedisConf.USER_FIELD + RedisConf.SYMBOL_COLON + key);
         if (StringUtils.isNotEmpty(json)) {
             return JsonUtils.jsonToList(json, PatentField.class);

+ 28 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/FormatUtil.java

@@ -1,7 +1,35 @@
 package cn.cslg.pas.common.utils;
 
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
 public class FormatUtil {
     public static String toString(Object o) {
         return o == null ? "" : o.toString();
     }
+    public static String MD5(String src){
+        // 需要加密的字符串
+        try {
+// 加密对象,指定加密方式
+            MessageDigest md5 = MessageDigest.getInstance("md5");
+// 准备要加密的数据
+            byte[] b = src.getBytes();
+// 加密
+            byte[] digest = md5.digest(b);
+// 十六进制的字符
+            char[] chars = new char[] { '0', '1', '2', '3', '4', '5',
+                    '6', '7' , '8', '9', 'A', 'B', 'C', 'D', 'E','F' };
+            StringBuffer sb = new StringBuffer();
+// 处理成十六进制的字符串(通常)
+            for (byte bb : digest) {
+                sb.append(chars[(bb >> 4) & 15]);
+                sb.append(chars[bb & 15]);
+            }
+            return sb.toString();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
 }

+ 39 - 11
PAS/src/main/java/cn/cslg/pas/common/utils/PatentRightUtils.java

@@ -5,6 +5,7 @@ import cn.cslg.pas.domain.PatentRight;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -78,7 +79,8 @@ public class PatentRightUtils {
                     strs = content.split("。");
                     strsOut = contentOut.split("。");
                     //若匹配到,则根据不同情形拆分
-                } else {
+                }
+                else {
                     Matcher matcher = Pattern.compile(regex).matcher(content);
                     Matcher matcherOut = Pattern.compile(regex).matcher(contentOut);
                     while (matcher.find()) {
@@ -87,13 +89,11 @@ public class PatentRightUtils {
                     while (matcherOut.find()) {
                         contentOut = contentOut.replaceFirst(matcherOut.group(), "\n" + matcherOut.group().substring(matcherOut.group().indexOf("@") + 1));
                     }
-
                     content = content.replaceAll("@", "");
                     contentOut = contentOut.replaceAll("@", "");
                     strs = content.split("\n");
                     strsOut = contentOut.split("\n");
                 }
-
                 //定义父权要排序号
                 String regex1 = "权利要求[0-9]+";
                 String regex2 = "权利要求[0-9]+[至或~-]+[0-9]+";
@@ -132,7 +132,13 @@ public class PatentRightUtils {
                                     .setSort(i)
                                     .setParentSort(builder + "");
                             if (strsOut.length - 1 >= i) {
-                                patentRight.setContentOut(strsOut[i]);
+                                //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
+                                if(strsOut.length>strs.length&&strs.length==(i+1)){
+                                    patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
+                                }
+                                else {
+                                    patentRight.setContentOut(strsOut[i]);
+                                }
                             }
                             patentRights.add(patentRight);
                         } else if (matcher1.find()) {
@@ -157,12 +163,17 @@ public class PatentRightUtils {
                                 .setSort(i)
                                 .setParentSort("-1");
                         if (strsOut.length - 1 >= i) {
-                            patentRight.setContentOut(strsOut[i]);
+                            //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
+                            if(strsOut.length>strs.length&&strs.length==(i+1)){
+                                patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
+                            }
+                            else {
+                                patentRight.setContentOut(strsOut[i]);
+                            }
                         }
                         patentRights.add(patentRight);
                     }
                 }
-
                 //英文专利的权要拆分 ↓
             } else {
                 if (!content.equals("") && content.contains("1")) {
@@ -189,7 +200,6 @@ public class PatentRightUtils {
                 while (matcherOut.find()) {
                     contentOut = contentOut.replaceFirst(matcherOut.group(), "\n" + matcherOut.group().substring(matcherOut.group().indexOf("@") + 1));
                 }
-
                 content = content.replaceAll("@", "");
                 contentOut = contentOut.replaceAll("@", "");
                 String[] strs = content.split("\n");
@@ -233,7 +243,13 @@ public class PatentRightUtils {
                                     .setSort(i)
                                     .setParentSort(builder + "");
                             if (strsOut.length - 1 >= i) {
-                                patentRight.setContentOut(strsOut[i]);
+                                //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
+                                if(strsOut.length>strs.length&&strs.length==(i+1)){
+                                    patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
+                                }
+                                else {
+                                    patentRight.setContentOut(strsOut[i]);
+                                }
                             }
                             patentRights.add(patentRight);
                         } else if (matcher1.find()) {
@@ -244,7 +260,11 @@ public class PatentRightUtils {
                                     .setContent(strs[i])
                                     .setSort(i)
                                     .setParentSort((Integer.parseInt(parentNum) - 1) + "");
-                            if (strsOut.length - 1 >= i) {
+                            //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
+                            if(strsOut.length>strs.length&&strs.length==(i+1)){
+                                patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
+                            }
+                            else {
                                 patentRight.setContentOut(strsOut[i]);
                             }
                             patentRights.add(patentRight);
@@ -262,7 +282,11 @@ public class PatentRightUtils {
                                     .setContent(strs[i])
                                     .setSort(i)
                                     .setParentSort(builder.substring(0, builder.lastIndexOf(",")));
-                            if (strsOut.length - 1 >= i) {
+                            //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
+                            if(strsOut.length>strs.length&&strs.length==(i+1)){
+                                patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
+                            }
+                            else {
                                 patentRight.setContentOut(strsOut[i]);
                             }
                             patentRights.add(patentRight);
@@ -275,7 +299,11 @@ public class PatentRightUtils {
                                 .setContent(strs[i])
                                 .setSort(i)
                                 .setParentSort("-1");
-                        if (strsOut.length - 1 >= i) {
+                        //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
+                        if(strsOut.length>strs.length&&strs.length==(i+1)){
+                            patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
+                        }
+                        else {
                             patentRight.setContentOut(strsOut[i]);
                         }
                         patentRights.add(patentRight);

+ 6 - 2
PAS/src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -87,17 +87,20 @@ public class PatentController {
         PatentDTO patentDTO =patentService.getPatentDTOById(patentNo,projectId);
         return Response.success(patentDTO);
     }
+
     @GetMapping("id")
     @Operation(summary = "根据专利号获取专利")
     public String getPatentByPatentNo(String patentNo) {
         Patent patent = patentService.getByPatentNo(patentNo);
         return Response.success(patent);
     }
+
     @PostMapping("ids")
     @Operation(summary = "根据范围获取专利ID")
     public String getPatentListIds(@RequestBody PatentVO params) {
         return Response.success(patentService.getPatentListIds(params));
     }
+
     @checkAuth(FunId = "/workspace/folder/exportPatent")
     @PostMapping("export")
     @Operation(summary = "导出专利")
@@ -130,6 +133,7 @@ public class PatentController {
         return Response.success(patentService.getPatentQuerySourcePageList(params));
     }
 
+
     @PostMapping("/save/select")
     @Operation(summary = "保存选择的专利")
     public String saveSelectPatentIds(@RequestBody PatentVO params) {
@@ -138,7 +142,7 @@ public class PatentController {
     }
 
     @checkAuth(FunId = "/workspace/folder/batchOperation/batchIndexing")
-    @Permission(roles = {2})
+    @Permission(roles = {1,2})
     @PostMapping("/batch/index")
     @Operation(summary = "批量批量专利标引")
     public String patentBatchIndex(@RequestBody PatentBatchIndexVO params) {
@@ -159,7 +163,7 @@ public class PatentController {
     }
 
     @checkAuth(FunId = "/workspace/details/indexing")
-    @Permission(roles = {2})
+    @Permission(roles = {1,2})
     @PostMapping("/index/setting")
     @Operation(summary = "修改专利标引")
     public String updatePatentIndexSetting(@RequestBody PatentIndexSettingVO params) {

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

@@ -27,7 +27,6 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 public class ProductMarketDataController {
     private final IProductMarketDataService productMarketDataService;
-
     @Operation(summary = "新增产品营销数据")
     @PostMapping("/addNew")
     public String addNew(@RequestBody ProductMarketDataAddNewDTO productMarketDataAddNewDTO) {
@@ -40,6 +39,7 @@ public class ProductMarketDataController {
         return Response.success("新增产品营销数据完成");
     }
 
+
     @Operation(summary = "修改产品营销数据")
     @PostMapping("/update")
     public String update(@RequestBody ProductMarketDataUpdateDTO productMarketDataUpdateDTO) {
@@ -52,6 +52,7 @@ public class ProductMarketDataController {
         return Response.success("修改产品营销数据完成");
     }
 
+
     @Operation(summary = "分页查询产品营销数据")
     @PostMapping("/query")
     public String update(@RequestBody ProductMarketDataQueryPageDTO productMarketDataQueryPageDTO) {
@@ -60,6 +61,7 @@ public class ProductMarketDataController {
         return Response.success(jsonPage);
     }
 
+
     @Operation(summary = "删除产品营销数据")
     @GetMapping("/delete")
     public String delete(Integer id) {

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

@@ -48,12 +48,14 @@ public class ProjectController {
         return Response.success(projectService.getPageList(params));
     }
 
+
     @GetMapping("getProjectById")
     @Operation(summary = "根据Id获得专题库")
     public String getProject(Integer id) throws IOException {
         return Response.success(projectService.getProjectByIds(Arrays.asList(id)));
     }
 
+
     @checkAuth(FunId = "/workspace/project/add")
     @PostMapping("add")
     @Operation(summary = "新增专题库")
@@ -67,6 +69,7 @@ public class ProjectController {
         return Response.success(projectId);
     }
 
+
     @Permission(roles = {2})
     @checkAuth(FunId = "/workspace/project/modify")
     @PostMapping("edit")
@@ -80,6 +83,7 @@ public class ProjectController {
         return Response.success();
     }
 
+
     @Permission(roles = {2})
     @PostMapping("delete")
     @checkAuth(FunId = "/workspace/project/delete")
@@ -88,6 +92,7 @@ public class ProjectController {
         return projectService.delete(id);
     }
 
+
     @checkAuth(FunId = "/workspace/project/delete")
     @PostMapping("/patent/delete")
     @Operation(summary = "删除专题库专利")

+ 80 - 0
PAS/src/main/java/cn/cslg/pas/controller/outApi/PatentStarController.java

@@ -0,0 +1,80 @@
+package cn.cslg.pas.controller.outApi;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.outApi.PatentStarListDto;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.service.OAuth2Service;
+import cn.cslg.pas.service.outApi.PatentStarApiService;
+import cn.dev33.satoken.stp.StpUtil;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Tag(name = "专利之星接口服务类")
+@RestController
+@RequestMapping(Constants.API_VERSION_V2 + "/patentStar")
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class PatentStarController {
+    private final PatentStarApiService patentStarApiService;
+    @PostMapping("/select")
+    @Operation(summary = "检索接口")
+    public String getAreaList(@RequestBody PatentStarListDto patentStarListDto) throws IOException {
+        return patentStarApiService.patentStarSearchApi(patentStarListDto);
+    }
+    @GetMapping("/getCnBib")
+    @Operation(summary = "获得中国专利著录")
+    public String getCnBib(String appNo) throws IOException {
+        return patentStarApiService.getCnBibApi(appNo);
+    }
+    @GetMapping("/getPicture")
+    @Operation(summary = "获得中国专利摘要附图")
+    public String getPicture(String appNo) throws IOException {
+        return patentStarApiService.getPictureApi(appNo);
+    }
+    @GetMapping("/getWGPicture")
+    @Operation(summary = "获得中国专利外观图")
+    public String getWGPicture(String appNo) throws IOException {
+        return patentStarApiService.getWGPictureApi(appNo);
+    }
+    @GetMapping("/getCnLegal")
+    @Operation(summary = "获得中国专利法律状态")
+    public String getCnLegal(String appNo) throws IOException {
+        return patentStarApiService.getCnLegalApi(appNo);
+    }
+    @GetMapping("/getCnPdf")
+    @Operation(summary = "获得中国专利pdf全文")
+    public String getCnPdf(String appNo) throws IOException {
+        return patentStarApiService.getCnPdfApi(appNo);
+    }
+    @GetMapping("/getCnFullXml")
+    @Operation(summary = "获得中国专利全文文本")
+    public String getCnFullXml(String appNo) throws IOException {
+        return patentStarApiService.getCnFullXmlApi(appNo);
+    }
+    @GetMapping("/getEnPdf")
+    @Operation(summary = "获得世界专利pdf")
+    public String getEnPdf(String patentNo) throws IOException {
+        return patentStarApiService.getEnPdfApi(patentNo);
+    }
+    @GetMapping("/getENBib")
+    @Operation(summary = "获得世界专利著录信息")
+    public String getENBib(String patentNo) throws IOException {
+        return Response.success(patentStarApiService.getENBibApi(patentNo));
+    }
+    @GetMapping("/getFamilyByPubNo")
+    @Operation(summary = "获得同住专利")
+    public String getFamilyByPubNo(String patentNo) throws IOException {
+        return patentStarApiService.getFamilyByPubNoApi(patentNo);
+    }
+    @GetMapping("/getCitedNumByPubNo")
+    @Operation(summary = "获得被引用次数")
+    public String getCitedNumByPubNo(String patentNo) throws IOException {
+        return patentStarApiService.getCitedNumByPubNoApi(patentNo);
+    }
+}

+ 43 - 23
PAS/src/main/java/cn/cslg/pas/domain/ScratchWords.java

@@ -22,59 +22,79 @@ import java.util.Date;
 public class ScratchWords extends BaseEntity<ScratchWords> {
 
     /**
-     * 管理员用户名
+     * 专利号
      */
-    private String username;
+    @TableField("patent_no")
+    private Integer patentNo;
 
     /**
-     * 姓名
+     *
      */
-    private String name;
+    @TableField("position")
+    private String position;
 
     /**
-     * 性别 1 是男 2是女
+     *
      */
-    @TableField("sex")
-    private Integer gender;
+    @TableField("content")
+    private String content;
 
     /**
-     * 电话
+     *
      */
-    private String mobile;
+    @TableField("scratch_type")
+    private String scratchType;
+
+    @TableField("scratch_field")
+    private String scratchField;
+
 
     /**
-     * 邮箱
+     *
      */
-    private String email;
+    @TableField("scratch_color")
+    private String scratchColor;
 
     /**
-     * 管理员密码
+     * 标引备注
      */
-    private String password;
+    @TableField("remark")
+    private String remark;
 
     /**
-     * 状态 1 启用 0 禁用
+     * 创建人
      */
-    private Integer status;
+    @TableField("create_id")
+    private Integer createId;
 
     /**
-     * 备注
+     * 报告id
      */
-    private String remark;
+    @TableField("report_id")
+    private Integer reportId;
+
+    /**
+     * 租户id
+     */
+    @TableField("tenant_id")
+    private Integer tenantId;
 
     /**
-     * 创建时间
+     * 专题库id
      */
-    private Date createTime;
+    @TableField("project_id")
+    private Integer projectId;
 
     /**
-     * 最后登录时间
+     * 公开类型 0私有1公有
      */
-    private Date lastLoginTime;
+    @TableField("permission_type")
+    private Integer permissionType;
 
     /**
-     * 最后登录IP
+     * 公开范围类型(0全部1本专题库2本报告)
      */
-    private String lastLoginIp;
+    @TableField("range_type")
+    private Integer rangeType;
 
 }

+ 8 - 5
PAS/src/main/java/cn/cslg/pas/service/PatentFieldService.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.domain.PatentField;
 import cn.cslg.pas.domain.ProjectField;
 import cn.cslg.pas.common.core.base.Constants;
@@ -36,7 +37,7 @@ public class PatentFieldService {
     private final List<String> finalDefaultList = Arrays.asList("name", "ipcList", "applicationNo", "applicationDate", "applicant2", "applicant4");
     private final List<String> finalDefaultQuery = Arrays.asList("13", "18-6", "19-6", "25-12");
     private final List<String> finalProjectField = Arrays.asList("clientName", "scenarioid", "typeid", "technicalTheme");
-
+    private final LoginUtils loginUtils;
     public List<PatentField> getUserFieldDataList(Integer projectId, String from) {
         List<PatentField> patentFieldList = this.getList(from);
         List<ProjectField> projectField = projectFieldService.getProjectFieldByProjectId(projectId);
@@ -55,11 +56,12 @@ public class PatentFieldService {
 
 
     public List<PatentField> getUserSetting(SystemFieldVO params) {
+        Integer createId =loginUtils.getId();
         if (params.getRefresh() != null && params.getRefresh()) {
-            cacheUtils.deleteUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3);
+            cacheUtils.deleteUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3,createId);
         }
         List<PatentField> dataList = this.getUserFieldDataList(params.getProjectId(), params.getType());
-        List<PatentField> userSetting = cacheUtils.getUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3);
+        List<PatentField> userSetting = cacheUtils.getUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3,createId);
         if (userSetting == null || userSetting.size() == 0) {
             List<PatentField> defaultList = new ArrayList<>();
             List<PatentField> patentFieldList = this.getList(params.getType());
@@ -74,7 +76,7 @@ public class PatentFieldService {
                     defaultList = patentFieldList.stream().filter(item -> finalProjectField.contains(item.getKey())).collect(Collectors.toList());
                     break;
             }
-            cacheUtils.setUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3, defaultList);
+            cacheUtils.setUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3, defaultList,createId);
             userSetting = defaultList;
         }
         List<PatentField> finalUserSetting = userSetting;
@@ -92,7 +94,8 @@ public class PatentFieldService {
             patentFieldList.get(i).setHidden(null);
             patentFieldList.get(i).setOrder(i);
         }
-        cacheUtils.setUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3, patentFieldList);
+        Integer createId =loginUtils.getId();
+        cacheUtils.setUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3, patentFieldList,createId);
         params.setRefresh(false);
         return this.getUserSetting(params);
     }

+ 0 - 3
PAS/src/main/java/cn/cslg/pas/service/PatentRightService.java

@@ -2,8 +2,6 @@ package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.model.params.PatentRightParams;
 import cn.cslg.pas.common.utils.PatentRightUtils;
-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;
@@ -17,7 +15,6 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;

+ 67 - 0
PAS/src/main/java/cn/cslg/pas/service/ScratchWordsService.java

@@ -1,15 +1,24 @@
 package cn.cslg.pas.service;
 
 
+import cn.cslg.pas.common.model.PersonnelVO;
+import cn.cslg.pas.common.model.dto.ScratchWordsDTO;
+import cn.cslg.pas.common.model.dto.ScratchWordsUpdateDTO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.domain.ScratchWords;
 
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.ScratchWordsMapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
 
 
 /**
@@ -23,6 +32,64 @@ import org.springframework.stereotype.Service;
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, ScratchWords> {
+    private final CacheUtils cacheUtils;
+    private final LoginUtils loginUtils;
 
+    /**
+     * 新增划词高亮
+     *
+     * @param scratchWordsDTOS
+     */
+    public void add(List<ScratchWordsDTO> scratchWordsDTOS){
+        ScratchWords scratchWords = new ScratchWords();
+        //判断传入列表不为空
+        if(scratchWordsDTOS != null && scratchWordsDTOS.size() != 0){
+            //遍历传入列表
+            for(int i = 0; i < scratchWordsDTOS.size(); i++){
+                ScratchWordsDTO scratchWordsDTO = scratchWordsDTOS.get(i);
+                BeanUtils.copyProperties(scratchWordsDTO, scratchWords);
+                //获取当前登陆人信息
+                PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+                //设置创建人id
+                scratchWords.setCreateId(personnelVO.getId());
+                //数据入表
+                scratchWords.insert();
+            }
+        } else {
+            throw new XiaoShiException("传入列表不能为空");
+        }
+    }
 
+    /**
+     * 更新划词高亮
+     * @param scratchWordsUpdateDTOS
+     */
+    public void update(List<ScratchWordsUpdateDTO> scratchWordsUpdateDTOS){
+        ScratchWords scratchWords = new ScratchWords();
+        //判断传入列表不为空
+        if(scratchWordsUpdateDTOS != null && scratchWordsUpdateDTOS.size() != 0){
+            //遍历传入列表
+            for(int i = 0; i < scratchWordsUpdateDTOS.size(); i++) {
+                ScratchWordsUpdateDTO scratchWordsUpdateDTO = scratchWordsUpdateDTOS.get(i);
+                BeanUtils.copyProperties(scratchWordsUpdateDTO, scratchWords);
+                scratchWordsUpdateDTO.updateById();
+            }
+        } else {
+            throw new XiaoShiException("传入列表不能为空");
+        }
+    }
+
+    public List<ScratchWords> queryAll(){
+        List<ScratchWords> scratchWords = this.list();
+        return scratchWords;
+    }
+
+    public void delete(List<Integer> ids){
+        for(int i = 0; i < ids.size(); i++){
+            LambdaQueryWrapper<ScratchWords> LW = new LambdaQueryWrapper<>();
+            LW.eq(ScratchWords::getId, ids.get(i));
+            ScratchWords scratchWords = this.getOne(LW);
+            scratchWords.deleteById();
+        }
+    }
 }

+ 452 - 0
PAS/src/main/java/cn/cslg/pas/service/outApi/PatentStarApiService.java

@@ -0,0 +1,452 @@
+package cn.cslg.pas.service.outApi;
+
+import cn.cslg.pas.common.model.PatentCell;
+import cn.cslg.pas.common.model.dto.GetClaimsInfoParamsDTO;
+import cn.cslg.pas.common.model.dto.GetDescriptionInfoParamsDTO;
+import cn.cslg.pas.common.model.dto.GetFuTuParamsDTO;
+import cn.cslg.pas.common.model.dto.GetSearchBiblioParamsDTO;
+import cn.cslg.pas.common.model.outApi.PatentStarListDto;
+import cn.cslg.pas.common.utils.FormatUtil;
+import cn.cslg.pas.common.utils.JsonUtils;
+import cn.cslg.pas.common.utils.SecurityUtils.SecurityUtils;
+import cn.cslg.pas.domain.PubNo;
+import cn.hutool.crypto.SecureUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 调用外部接口的Service类 PCS:权限系统
+ *
+ * @Author chenyu
+ * @Date 2023/4/25
+ */
+@RequiredArgsConstructor
+@Slf4j
+@Service
+
+public class PatentStarApiService {
+    @Value("${authorUrl}")
+    private String PCSUrl;
+    @Value("${OPSUrl}")
+    private String OPSUrl;
+    @Value("${PASUrl}")
+    private String PASUrl;
+
+    public String patentStarSearchApi(PatentStarListDto patentStarListDto) throws IOException {
+        String json = JSONObject.toJSONString(patentStarListDto);
+        String url = "http://s.patentstar.com.cn/SearchAPI/PatentSearch/ResultGet";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = "FNYJD7902206FFB741E163BE6536C3689D55" + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient();
+        // 创建一个RequestBody(参数1:数据类型 参数2传递的json串)
+        FormBody.Builder builder = new FormBody.Builder();
+        builder.add("AppID", "K8FFB741E163BE6536");
+        builder.add("Stamp", currentTimeMillis.toString());
+        builder.add("Sign", signMd5);
+        builder.add("QueryJson", json);
+        FormBody requestBody = builder.build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url).post(requestBody).build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+//                JSONObject jsonObject  =JSONObject.parseObject(Objects.requireNonNull(response.body()).string());
+//                JSONObject jsonObject1= (JSONObject)jsonObject.get("Data");
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+    /**
+     * @param appNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取摘要附图
+     */
+    public String getCnBibApi(String appNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnBibo/" + appNo;
+        String appId = "2000041";
+        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appkey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", "2000041")
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                response.body().toString();
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param patentNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取摘要附图
+     */
+    public String getPictureApi(String patentNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnMainImage/" + patentNo;
+        String appId = "2000041";
+        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appkey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", "2000041")
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                response.body().toString();
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param appNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取中国专利外观图
+     */
+    public String getWGPictureApi(String appNo) throws IOException {
+
+        String url = "https://api.patentstar.com.cn/api/Patent/CnWGImage/" + appNo;
+        String appId = "2000041";
+        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appkey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", "2000041")
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                response.body().toString();
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param appNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取中国专利法律状态
+     */
+    public String getCnLegalApi(String appNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnLegal/"+appNo;
+        String appId = "2000041";
+        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appkey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", "2000041")
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                response.body().toString();
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param appNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取中国专利全文图片
+     */
+
+    public String  getCnPdfApi(String appNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnPdf/"+appNo;
+        String appId = "2000041";
+        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appkey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", "2000041")
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                response.body().toString();
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+    /**
+     * @param appNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取中国专利全文文本
+     */
+
+    public String  getCnFullXmlApi(String appNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnFullXml/"+appNo;
+        String appId = "2000041";
+        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appkey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", "2000041")
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                response.body().toString();
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param patentNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取世界专利pdf
+     */
+    public String  getEnPdfApi(String patentNo) throws IOException {
+        String url = "  https://api.patentstar.com.cn/api/Patent/EnPdf/"+patentNo;
+        String appId = "2000041";
+        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appkey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", "2000041")
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                response.body().toString();
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param patentNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取世界专利著录信息
+     */
+    public String  getENBibApi(String patentNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/ENBib/"+patentNo;
+        String appId = "2000041";
+        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appkey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", "2000041")
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                response.body().toString();
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param patentNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取同族专利
+     */
+    public String  getFamilyByPubNoApi(String patentNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/FamilyByPubNo/"+patentNo;
+        String appId = "2000041";
+        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appkey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", "2000041")
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                response.body().toString();
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param patentNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 获得专利被引用次数api
+     */
+    public String  getCitedNumByPubNoApi(String patentNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CitedNumByPubNo/"+patentNo;
+        String appId = "2000041";
+        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        Long currentTimeMillis = System.currentTimeMillis()/ 1000;
+        String Sign = appId + appkey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", "2000041")
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                response.body().toString();
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+}

+ 0 - 2
PAS/src/main/resources/mapper/PatentMapper.xml

@@ -388,9 +388,7 @@
                     </where>
                     )
                 </foreach>
-
             </if>
-
         </where>
         group by a.id
         order by