瀏覽代碼

发布本地

chendayu 2 年之前
父節點
當前提交
cf3539e71a

+ 45 - 0
PAS/src/main/java/cn/cslg/pas/common/config/XDns.java

@@ -0,0 +1,45 @@
+package cn.cslg.pas.common.config;
+
+import okhttp3.Dns;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.*;
+
+public class XDns implements Dns {
+    private long timeout;
+
+    public XDns(long timeout) {
+        this.timeout = timeout;
+    }
+
+    @Override
+    public List<InetAddress> lookup(final String hostname) throws UnknownHostException {
+        if (hostname == null) {
+            throw new UnknownHostException("hostname == null");
+        } else {
+            List<InetAddress> inetAddresses =new ArrayList<>();
+            Boolean falg =true;
+            while (falg){
+                try {
+                    FutureTask<List<InetAddress>>  task = new FutureTask<>(
+                            new Callable<List<InetAddress>>() {
+                                @Override
+                                public List<InetAddress> call() throws Exception {
+                                    return Arrays.asList(InetAddress.getAllByName(hostname));
+                                }
+                            });
+                    new Thread(task).start();
+                    inetAddresses=task.get(timeout, TimeUnit.MILLISECONDS);
+                    falg =false;
+                } catch (Exception var4) {
+                  continue;
+                }
+            }
+                return inetAddresses;
+        }
+    }
+}

+ 5 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadParamsVO.java

@@ -130,5 +130,10 @@ public class UploadParamsVO {
      */
     private UploadFileDTO fileDTO;
 
+    /**
+     * 若是专利之星下载中国专利pdf,若有公开(1)和授权(2)两个pdf,则此存放授权pdf的文件信息
+     */
+    private UploadFileDTO fileDTO2;
+
 
 }

+ 35 - 23
PAS/src/main/java/cn/cslg/pas/common/model/vo/outApi/StarPatentVO.java

@@ -59,9 +59,6 @@ public class StarPatentVO implements Serializable {
      */
     @JSONField(name = "IN")
     private String inventorStr;
-
-
-
     /**
      * 专利号
      */
@@ -70,54 +67,69 @@ public class StarPatentVO implements Serializable {
      * 公告号
      */
     @JSONField(name = "GN")
-    private String announceNo;
+    private String publicAccreditNo;
+    /**
+     * 代理机构
+     */
+    @JSONField(name = "AGN")
+    private String agencyStr;
     /**
      * 申请号
      */
     @JSONField(name = "AN")
     private String applicationNo;
     /**
-     * 标题
-     */
-    @JSONField(name = "TI")
-    private String name;
-    /**
      * 申请人
      */
     @JSONField(name = "PA")
     private String applicantStr;
     /**
+     * 代理人
+     */
+    @JSONField(name = "AT")
+    private String agentStr;
+    /**
      * 公开日
      */
     @JSONField(name = "PD")
     private String publicDate;
     /**
-     * 公开号
+     * 标题
      */
-    @JSONField(name = "PN")
-    private String publicNo;
-
-    private List<PatentInventor> inventor;
+    @JSONField(name = "TI")
+    private String name;
     /**
      * 权利人
      */
     @JSONField(name = "PE")
     private String currentApplicantStr;
     /**
-     * 代理机构
+     * 法律状态
      */
-    @JSONField(name = "AGN")
-    private String agencyStr;
+    @JSONField(name = "LG")
+    private Integer LG;
     /**
-     * 代理人
+     * 公开号
      */
-    @JSONField(name = "AT")
-    private String agentStr;
+    @JSONField(name = "PN")
+    private String publicNo;
     /**
-     * 法律状态
+     * 受理局
      */
-    @JSONField(name = "LG")
-    private Integer LG;
+    @JSONField(name = "GJ")
+    private String bureau;
+    /**
+     * 优先权
+     */
+    @JSONField(name = "PR")
+    private String priorityNo;
+    /**
+     * 优先权日
+     */
+    @JSONField(name = "PRD")
+    private String priorityDate;
+
+    private List<PatentInventor> inventor;
     private List<String> ipcList;
     private List<PatentApplicant> applicant;
     private PatentAgency agency;

+ 4 - 2
PAS/src/main/java/cn/cslg/pas/controller/outApi/PatentStarController.java

@@ -61,7 +61,8 @@ public class PatentStarController {
     @GetMapping("/getCnPdf")
     @Operation(summary = "获得中国专利pdf全文")
     public String getCnPdf(String appNo) throws IOException {
-        return patentStarApiService.getCnPdfApi(appNo);
+        String picUrl = patentStarApiService.getCnPdfApi(appNo);
+        return picUrl;
     }
 
     @GetMapping("/getCnFullXml")
@@ -79,7 +80,8 @@ public class PatentStarController {
     @GetMapping("/getENBib")
     @Operation(summary = "获得世界专利著录信息")
     public String getENBib(String patentNo) throws IOException {
-        return Response.success(patentStarApiService.getENBibApi(patentNo));
+        String result = patentStarApiService.getENBibApi(patentNo);
+        return result;
     }
 
     @GetMapping("/getFamilyByPubNo")

+ 0 - 1
PAS/src/main/java/cn/cslg/pas/domain/Patent.java

@@ -16,7 +16,6 @@ import lombok.Data;
 @Data
 @TableName("os_patent")
 public class Patent extends BaseEntity<Patent> {
-
     /**
      * 专利名称(标题)
      */

+ 99 - 0
PAS/src/main/java/cn/cslg/pas/domain/WorldPatentZhuLu.java

@@ -0,0 +1,99 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 专利之星世界专利著录实体类
+ *
+ * @Author chenyu
+ * @Date 2023/7/19
+ */
+@Accessors(chain = true)
+@Data
+public class WorldPatentZhuLu implements Serializable {
+    /**
+     * 公开号(DocDB)
+     */
+    private String DocdbPubNo;
+    /**
+     * 申请号(Epo)
+     */
+    private String EpoAppNo;
+    /**
+     * 申请日
+     */
+    private String AppDate;
+    /**
+     * 公开日
+     */
+    private String PubDate;
+    /**
+     * IPC分类号
+     */
+    private String Ipc;
+    /**
+     * CPC分类号
+     */
+    private String cpc;
+    /**
+     * ECLA分类号
+     */
+    private String Ecla;
+    /**
+     * 申请人
+     */
+    private String Pa;
+    /**
+     * 申请人国别
+     */
+    private String PaAllCountry;
+    /**
+     * 发明人
+     */
+    private String Iv;
+    /**
+     * 发明人国别
+     */
+    private String IvAllCountry;
+    /**
+     * 引用文献号
+     */
+    private String Patcit;
+    /**
+     * 公开号(Original)
+     */
+    private String OriPubNo;
+    /**
+     * 申请号(Original)
+     */
+    private String OriAppNo;
+    /**
+     * 申请号(DocDB)
+     */
+    private String DocdbAppNo;
+    /**
+     * 公开号(EPO)
+     */
+    private String EpoPubNo;
+    /**
+     * 优先权
+     */
+    private String Pr;
+    /**
+     * 简单同族docdb
+     */
+    private String DocdbFamily;
+    /**
+     * 标题
+     */
+    private String Title;
+    /**
+     * 摘要
+     */
+    private String Abstract;
+
+
+}

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

@@ -170,13 +170,85 @@ public class PatentInstructionService extends ServiceImpl<PatentInstructionMappe
      */
     @Transactional
     public String edit(String patentNo, UploadFileDTO pdf) {
+        //先把实体类对象赋好值
         PatentInstruction patentInstruction = new PatentInstruction();
         patentInstruction.setUrl(pdf.getPath());
         patentInstruction.setFileName(pdf.getFileName());
         patentInstruction.setSize(pdf.getFileSize());
         patentInstruction.setPatentNo(patentNo);
         patentInstruction.setType(1);
-        patentInstruction.insert();
+
+        //根据专利号和pdf类型(1公开 2授权)查询该专利号是否已有公开的pdf
+        List<PatentInstruction> patentInstructions = this.list(new LambdaQueryWrapper<PatentInstruction>().eq(PatentInstruction::getPatentNo, patentNo).eq(PatentInstruction::getType, 1));
+        if (patentInstructions != null && patentInstructions.size() > 0) {  //若有则更新
+            patentInstruction = patentInstructions.get(0);
+            this.updateById(patentInstruction);
+        } else {  //若没有则新增
+            this.save(patentInstruction);
+        }
+
+        return Response.success(true);
+    }
+
+    @Transactional
+    public String edit2(String patentNo, UploadFileDTO pdf2) {
+        //先把实体类对象赋好值
+        PatentInstruction patentInstruction = new PatentInstruction();
+        patentInstruction.setUrl(pdf2.getPath());
+        patentInstruction.setFileName(pdf2.getFileName());
+        patentInstruction.setSize(pdf2.getFileSize());
+        patentInstruction.setPatentNo(patentNo);
+        patentInstruction.setType(2);
+
+        //根据专利号和pdf类型(1公开 2授权)查询该专利号是否已有公开的pdf
+        List<PatentInstruction> patentInstructions = this.list(new LambdaQueryWrapper<PatentInstruction>().eq(PatentInstruction::getPatentNo, patentNo).eq(PatentInstruction::getType, 2));
+        //若有则更新
+        if (patentInstructions != null && patentInstructions.size() > 0) {
+            patentInstruction = patentInstructions.get(0);
+            this.updateById(patentInstruction);
+        } else {  //若没有则新增
+            this.save(patentInstruction);
+        }
+
+        return Response.success(true);
+    }
+
+    @Transactional
+    public String edit12(String patentNo, UploadFileDTO pdf1, UploadFileDTO pdf2) {
+        //处理公开pdf文档(更新或新增)
+        PatentInstruction patentInstruction1 = new PatentInstruction();
+        patentInstruction1.setUrl(pdf1.getPath());
+        patentInstruction1.setFileName(pdf1.getFileName());
+        patentInstruction1.setSize(pdf1.getFileSize());
+        patentInstruction1.setPatentNo(patentNo);
+        patentInstruction1.setType(1);
+        //先查询库中是否已有该专利号的公开pdf文档
+        List<PatentInstruction> patentInstructions1 = this.list(new LambdaQueryWrapper<PatentInstruction>().eq(PatentInstruction::getPatentNo, patentNo).eq(PatentInstruction::getType, 1));
+        //若有则更新
+        if (patentInstructions1 != null && patentInstructions1.size() > 0) {
+            patentInstruction1.setId(patentInstructions1.get(0).getId());
+            this.updateById(patentInstruction1);
+        } else {  //若没有则新增
+            this.save(patentInstruction1);
+        }
+
+        //处理授权pdf文档(更新或新增)
+        PatentInstruction patentInstruction2 = new PatentInstruction();
+        patentInstruction2.setUrl(pdf2.getPath());
+        patentInstruction2.setFileName(pdf2.getFileName());
+        patentInstruction2.setSize(pdf2.getFileSize());
+        patentInstruction2.setPatentNo(patentNo);
+        patentInstruction2.setType(2);
+        //再查询库中是否已有该专利号的授权pdf文档
+        List<PatentInstruction> patentInstructions2 = this.list(new LambdaQueryWrapper<PatentInstruction>().eq(PatentInstruction::getPatentNo, patentNo).eq(PatentInstruction::getType, 2));
+        //若有则更新
+        if (patentInstructions2 != null && patentInstructions2.size() > 0) {
+            patentInstruction2.setId(patentInstructions2.get(0).getId());
+            this.updateById(patentInstruction2);
+        } else {  //若没有则新增
+            this.save(patentInstruction2);
+        }
+
         return Response.success(true);
     }
 

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

@@ -408,6 +408,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
         Task updateTask = new Task();
         updateTask.setId(task.getId());
         updateTask.setStatus(5);
+        updateTask.setEndTime(DateUtils.getDateTime());
         log.info("os_task表修改任务状态为取消");
         this.updateById(updateTask);
 

+ 131 - 62
PAS/src/main/java/cn/cslg/pas/service/getPatentStarPart/GetPatentStarPartService.java

@@ -51,7 +51,7 @@ public class GetPatentStarPartService {
         } else if (patentCell == 2) {
             patentDTO = getInstructionText(appNo);  //拿说明书文本
         } else if (patentCell == 3) {
-            patentDTO = getInstructionPDF(patentNo);  //拿说明书pdf
+            patentDTO = getInstructionPDF(appNo, patentNo);  //拿说明书pdf
         } else if (patentCell == 4) {
             patentDTO = getPatentImage(appNo);  //拿摘要附图
         } else if (patentCell == 5) {
@@ -111,18 +111,62 @@ public class GetPatentStarPartService {
      * @param patentNo 专利号(公开号)
      * @return 返回装载着说明书pdf的对象
      */
-    public PatentDTO getInstructionPDF(String patentNo) {
-        //调用"获得世界专利pdf"接口,获得pdf的url地址
-        String pdfUrl = patentStarApiService.getEnPdfApi(patentNo);
+    public PatentDTO getInstructionPDF(String appNo, String patentNo) throws IOException {
+        if (appNo.contains(".")) {
+            appNo = appNo.substring(0, appNo.lastIndexOf("."));
+        }
 
-        PatentDTO patentDTO = new PatentDTO();
         ArrayList<PatentInstruction> patentInstructions = new ArrayList<>();
-        PatentInstruction patentInstruction = new PatentInstruction();
-        patentInstruction.setUrl(pdfUrl);
-        patentInstructions.add(patentInstruction);
-        patentDTO.setPdf(patentInstructions);
+        PatentDTO patentDTO = new PatentDTO();
+
+        String pdfUrl = "", pdfUrlOA = "", pdfUrlOC = "";
+        if (patentNo.contains("CN")) {
+            //根据申请号调用"获得中国专利pdf"接口,获得1个或2个pdf的url地址
+            String pdfUrlStr = patentStarApiService.getCnPdfApi(appNo);
+            if (pdfUrlStr.equals("")) {
+                return new PatentDTO();
+            }
+            if (pdfUrlStr.contains("|http")) {  //若包含公开和授权两个pdf
+                String[] pdfUrlArr = pdfUrlStr.split("\\|http");
+                pdfUrlOA = pdfUrlArr[0].substring(pdfUrlArr[0].indexOf("http"), pdfUrlArr[0].indexOf("0A_CN_0.pdf") + 11);
+                pdfUrlArr[1] = "|http" + pdfUrlArr[1];
+                pdfUrlOC = pdfUrlArr[1].substring(pdfUrlArr[1].indexOf("http"), pdfUrlArr[1].indexOf("0C_CN_0.pdf") + 11);
+            } else if (pdfUrlStr.contains("0A_CN_0.pdf")) {  //若只有一个且是OA
+                pdfUrlOA = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("0A_CN_0.pdf") + 11);
+            } else if (pdfUrlStr.contains("0C_CN_0.pdf")) {  //若只有一个且是OC
+                pdfUrlOC = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("0C_CN_0.pdf") + 11);
+            }
+
+            //公开pdf文档
+            if (!pdfUrlOA.equals("")) {
+                PatentInstruction patentInstruction = new PatentInstruction();
+                patentInstruction.setUrl(pdfUrlOA);
+                patentInstruction.setType(1);
+                patentInstructions.add(patentInstruction);
+            }
+            //授权pdf文档
+            if (!pdfUrlOC.equals("")) {
+                PatentInstruction patentInstruction = new PatentInstruction();
+                patentInstruction.setUrl(pdfUrlOC);
+                patentInstruction.setType(2);
+                patentInstructions.add(patentInstruction);
+            }
+            patentDTO.setPdf(patentInstructions);
+            return patentDTO;
+        } else {
+            //根据专利号调用"获得世界专利pdf"接口,获得pdf的url地址
+            pdfUrl = patentStarApiService.getEnPdfApi(patentNo);
+            if (pdfUrl.equals("")) {
+                return new PatentDTO();
+            }
+            PatentInstruction patentInstruction = new PatentInstruction();
+            patentInstruction.setUrl(pdfUrl);
+            patentInstruction.setType(1);
+            patentInstructions.add(patentInstruction);
+            patentDTO.setPdf(patentInstructions);
+            return patentDTO;
+        }
 
-        return patentDTO;
     }
 
     /**
@@ -180,18 +224,8 @@ public class GetPatentStarPartService {
         String familyPNStr = familyPatentNo.getFamilyinfo();
         List<String> familyPatentNos = Arrays.asList(familyPNStr.split(";"));
 
-        //防止下标越界的判断(即判断所需当前页是否有数据)
-        if ((current - 1) * size >= familyPatentNos.size()) {
-            pageVO.setRecords(new ArrayList<>())
-                    .setTotal(familyPatentNos.size());
-            patentDTO.setFamilyPatentResult(pageVO);
-            return patentDTO;
-        }
-
-        //根据分页信息,取分页区间内的同族号
-        familyPatentNos = pageBySubList(familyPatentNos, current, size);
         //集合转成字符串
-        String conditions = "(PN=(" + StringUtils.join(familyPatentNos, " OR ") + "))";
+        String conditions = "PN=(" + StringUtils.join(familyPatentNos, " OR ") + ")";
 
         //调用一般接口返回这些同族号专利的著录相关数据(标题、申请人、权利人、摘要附图)
         PatentStarListDto patentStarListDto = new PatentStarListDto()
@@ -200,13 +234,30 @@ public class GetPatentStarPartService {
                 .setOrderByType("DESC")
                 .setPageNum(current)
                 .setRowCount(size)
-                .setDBType("WD");
+                .setDBType("CN");
         Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
         if (resultMap == null || (Integer) resultMap.get("total") == 0) {
-            ThrowException.throwXiaoShiException("发生未知错误,一般接口未检索出专利");
+            patentStarListDto.setDBType("WD");
+            resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
+            if (resultMap == null || (Integer) resultMap.get("total") == 0) {
+                ThrowException.throwXiaoShiException("发生未知错误,一般接口未检索出专利");
+            }
         }
 
         List<StarPatentVO> patents = (List<StarPatentVO>) resultMap.get("records");
+        int total = patents.size();
+
+        //防止下标越界的判断(即判断所需当前页是否有数据)
+        if ((current - 1) * size >= total) {
+            pageVO.setRecords(new ArrayList<>())
+                    .setTotal(familyPatentNos.size());
+            patentDTO.setFamilyPatentResult(pageVO);
+            return patentDTO;
+        }
+
+        //根据分页信息,取分页区间内的同族号
+        //familyPatentNos = pageBySubList(familyPatentNos, current, size);
+
         List<PatentSimpleFamilyLink> records = new ArrayList<>();
         for (StarPatentVO starPatent : patents) {
             PatentSimpleFamilyLink patentSimpleFamilyLink = new PatentSimpleFamilyLink();
@@ -215,21 +266,34 @@ public class GetPatentStarPartService {
             patentSimpleFamilyLink.setName(starPatent.getName());  //装载标题
             //装载申请人和权利人
             ArrayList<PatentApplicant> patentApplicants = new ArrayList<>();
-            List<String> applicantNames = Arrays.asList(starPatent.getApplicantStr().split(";"));
-            for (String applicantName : applicantNames) {
-                PatentApplicant patentApplicant = new PatentApplicant();
-                patentApplicant.setName(applicantName);
-                patentApplicant.setDataType(1);
-                patentApplicants.add(patentApplicant);  //装载申请人
-                patentApplicant.setDataType(2);
-                patentApplicants.add(patentApplicant);  //装载权利人
+            //装载申请人
+            if (starPatent.getApplicantStr() != null && !starPatent.getApplicantStr().equals("")) {
+                List<String> patentApplicantOriginalNames = Arrays.asList(starPatent.getApplicantStr().split(";"));
+                for (String patentApplicantOriginalName : patentApplicantOriginalNames) {
+                    PatentApplicant patentApplicant = new PatentApplicant();
+                    patentApplicant.setName(patentApplicantOriginalName);
+                    patentApplicant.setDataType(1);
+                    patentApplicants.add(patentApplicant);  //装载申请人
+                }
+            }
+            //装载权利人
+            if (starPatent.getCurrentApplicantStr() != null && !starPatent.getCurrentApplicantStr().equals("")) {
+                List<String> patentApplicantCurrentNames = (Arrays.asList(starPatent.getCurrentApplicantStr().split(";")));
+                for (String patentApplicantCurrentName : patentApplicantCurrentNames) {
+                    PatentApplicant patentApplicant = new PatentApplicant();
+                    patentApplicant.setName(patentApplicantCurrentName);
+                    patentApplicant.setDataType(2);
+                    patentApplicants.add(patentApplicant);  //装载权利人
+                }
             }
             patentSimpleFamilyLink.setApplicant(patentApplicants);
             records.add(patentSimpleFamilyLink);
         }
+
         pageVO.setRecords(records)
-                .setTotal(familyPatentNos.size());
+                .setTotal(total);
         patentDTO.setFamilyPatentResult(pageVO);
+
         return patentDTO;
     }
 
@@ -240,40 +304,45 @@ public class GetPatentStarPartService {
             appNo = appNo.substring(0, appNo.lastIndexOf("."));
         }
         //以下 ↓装载的是调用"获得中国专利法律状态"接口返回的专利相关数据
-        String cnLegalApiStr = patentStarApiService.getCnLegalApi(appNo);
-        if (!cnLegalApiStr.equals("")) {
-            List<ChinaLeagalStatus> chinaLeagalStatuses = JSON.parseArray(cnLegalApiStr, ChinaLeagalStatus.class);
-            if (chinaLeagalStatuses != null && chinaLeagalStatuses.size() > 0) {
-                ArrayList<KeyValueVO> lst = new ArrayList<>();
-                HashMap<Integer, String> nameMap = new HashMap<>();
-                HashMap<Integer, String> contentMap = new HashMap<>();
-                nameMap.put(0, "发生日期");
-                nameMap.put(1, "法律状态");
-                nameMap.put(2, "详细法律状态");
-                nameMap.put(3, "详细信息");
-                for (ChinaLeagalStatus chinaLeagalStatus : chinaLeagalStatuses) {
-                    contentMap.put(0, chinaLeagalStatus.getLegalDate());
-                    contentMap.put(1, chinaLeagalStatus.getLegalStatus());
-                    contentMap.put(2, chinaLeagalStatus.getLegalStatusInfo());
-                    contentMap.put(3, chinaLeagalStatus.getDETAIL());
-                    ArrayList<KeyValueVO.InpadocData> inpadocDatas = new ArrayList<>();
-                    for (int i = 0; i < 4; i++) {
-                        KeyValueVO.InpadocData inpadocData = new KeyValueVO.InpadocData();
-                        inpadocData.setName(nameMap.get(i));
-                        inpadocData.setContent(contentMap.get(i));
-                        inpadocDatas.add(inpadocData);
+        try {
+            String cnLegalApiStr = patentStarApiService.getCnLegalApi(appNo);
+            if (!cnLegalApiStr.equals("")) {
+                List<ChinaLeagalStatus> chinaLeagalStatuses = JSON.parseArray(cnLegalApiStr, ChinaLeagalStatus.class);
+                if (chinaLeagalStatuses != null && chinaLeagalStatuses.size() > 0) {
+                    ArrayList<KeyValueVO> lst = new ArrayList<>();
+                    HashMap<Integer, String> nameMap = new HashMap<>();
+                    HashMap<Integer, String> contentMap = new HashMap<>();
+                    nameMap.put(0, "发生日期");
+                    nameMap.put(1, "法律状态");
+                    nameMap.put(2, "详细法律状态");
+                    nameMap.put(3, "详细信息");
+                    for (ChinaLeagalStatus chinaLeagalStatus : chinaLeagalStatuses) {
+                        contentMap.put(0, chinaLeagalStatus.getLegalDate());
+                        contentMap.put(1, chinaLeagalStatus.getLegalStatus());
+                        contentMap.put(2, chinaLeagalStatus.getLegalStatusInfo());
+                        contentMap.put(3, chinaLeagalStatus.getDETAIL());
+                        ArrayList<KeyValueVO.InpadocData> inpadocDatas = new ArrayList<>();
+                        for (int i = 0; i < 4; i++) {
+                            KeyValueVO.InpadocData inpadocData = new KeyValueVO.InpadocData();
+                            inpadocData.setName(nameMap.get(i));
+                            inpadocData.setContent(contentMap.get(i));
+                            inpadocDatas.add(inpadocData);
+                        }
+                        KeyValueVO keyValueVO = new KeyValueVO();
+                        keyValueVO.setInpadocData(inpadocDatas);
+                        lst.add(keyValueVO);
                     }
-                    KeyValueVO keyValueVO = new KeyValueVO();
-                    keyValueVO.setInpadocData(inpadocDatas);
-                    lst.add(keyValueVO);
+                    ArrayList<PatentAffair> patentAffairs = new ArrayList<>();
+                    PatentAffair patentAffair = new PatentAffair();
+                    patentAffair.setInpadoc(lst);
+                    patentAffairs.add(patentAffair);
+                    patentDTO.setAffair(patentAffairs);
                 }
-                ArrayList<PatentAffair> patentAffairs = new ArrayList<>();
-                PatentAffair patentAffair = new PatentAffair();
-                patentAffair.setInpadoc(lst);
-                patentAffairs.add(patentAffair);
-                patentDTO.setAffair(patentAffairs);
             }
+        } catch (Exception e) {
+            return patentDTO;
         }
+
         return patentDTO;
     }
 

+ 88 - 62
PAS/src/main/java/cn/cslg/pas/service/outApi/PatentStarApiService.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.service.outApi;
 
+import cn.cslg.pas.common.config.XDns;
 import cn.cslg.pas.common.model.PersonnelVO;
 import cn.cslg.pas.common.model.outApi.PatentStarDto;
 import cn.cslg.pas.common.model.outApi.PatentStarListDto;
@@ -48,6 +49,7 @@ public class PatentStarApiService {
     private final CacheUtils cacheUtils;
     private final LoginUtils loginUtils;
     private final WebLoginConfigService webLoginConfigService;
+
     public static String formatValue(String value) {
         return value.replace("~", ">");
     }
@@ -162,33 +164,40 @@ public class PatentStarApiService {
                 item.setPatentNo(item.getPublicNo());
 
                 //如果没有公开号,但是有公告号,则将公告号作为公开号和专利号
-            } else if (item.getAnnounceNo() != null && !item.getAnnounceNo().equals("")) {
-                item.setPublicNo(item.getAnnounceNo());
-                item.setPatentNo(item.getAnnounceNo());
+            } else if (item.getPublicAccreditNo() != null && !item.getPublicAccreditNo().equals("")) {
+                item.setPublicNo(item.getPublicAccreditNo());
+                item.setPatentNo(item.getPublicAccreditNo());
             } else {
                 System.out.println("");
 
             }
 
-            //陈宇 ↓ 如果没有公开日就将公告日作为公开日
+            //如果没有公开日就将公告日作为公开日
             if (item.getPublicDate() == null || item.getPublicDate().equals("")) {
                 item.setPublicDate(item.getPublicAccreditDate());
             }
             item.setApplicant(new ArrayList<>());
             item.setAgent(new ArrayList<>());
             item.setIpcList(Arrays.asList(item.getIpcListStr().split(";")));
+            if (item.getApplicationAddress() == null) {
+                item.setApplicationAddress("");
+            }
+
+            List<String> applicationAddress = Arrays.asList(item.getApplicationAddress().split(";"));
             List<String> applicants = Arrays.asList(item.getApplicantStr().split(";"));
             //装载申请人
-            applicants.forEach(
-                    tem -> {
-                        PatentApplicant patentApplicant = new PatentApplicant();
-                        patentApplicant.setType(2);
-                        patentApplicant.setDataType(2);
-                        patentApplicant.setName(tem);
-                        item.getApplicant().add(patentApplicant);
-                    }
-            );
+            for (int i = 0; i < applicants.size(); i++) {
+                PatentApplicant patentApplicant = new PatentApplicant();
+                patentApplicant.setType(2);
+                patentApplicant.setDataType(2);
+                patentApplicant.setName(applicants.get(i));
+                if (applicationAddress.size() > i) {
+                    patentApplicant.setAddressStr(applicationAddress.get(i));
+                }
+                item.getApplicant().add(patentApplicant);
+            }
 
+            //装载权利人
             if (item.getCurrentApplicantStr() != null && !item.getCurrentApplicantStr().equals("")) {
                 List<String> cApplicants = Arrays.asList(item.getCurrentApplicantStr().split(";"));
                 cApplicants.forEach(
@@ -202,6 +211,11 @@ public class PatentStarApiService {
                 );
             }
 
+            //优先权
+            if (item.getPriorityNo() != null && !item.getPriorityNo().equals("")) {
+
+            }
+
             //代理机构
             if (item.getAgencyStr() != null && !item.getAgencyStr().equals("")) {
                 PatentAgency patentAgency = new PatentAgency();
@@ -235,7 +249,7 @@ public class PatentStarApiService {
                 );
             }
             //附图
-            if(item.getApplicationNo()!=null&&item.getApplicationNo()!="") {
+            if (item.getApplicationNo() != null && item.getApplicationNo() != "") {
                 String apN = item.getApplicationNo().replace(".", "");
                 String path = this.getPictureApi(apN.substring(2));
                 item.setAbstractPath(path);
@@ -288,14 +302,15 @@ public class PatentStarApiService {
         return map;
 
     }
+
     public Map<String, Object> patentStarSearchApi(PatentStarListDto patentStarListDto) throws IOException {
         try {
             if (patentStarListDto.getFormed() == null || patentStarListDto.getFormed() == false) {
                 String formQuery = patentStarListDto.getCurrentQuery();
                 patentStarListDto.setCurrentQuery(PatentStarApiService.formatQuery(formQuery));
-                if(patentStarListDto.getDBType().equals("WD")){
-               StringBuilder stringBuilder =new StringBuilder(patentStarListDto.getCurrentQuery());
-               stringBuilder.insert(patentStarListDto.getCurrentQuery().length()-1,"-CN/GJ");
+                if (patentStarListDto.getDBType().equals("WD")) {
+                    StringBuilder stringBuilder = new StringBuilder(patentStarListDto.getCurrentQuery());
+                    stringBuilder.insert(patentStarListDto.getCurrentQuery().length() - 1, "-CN/GJ");
                     patentStarListDto.setCurrentQuery(stringBuilder.toString());
 
                 }
@@ -303,9 +318,9 @@ public class PatentStarApiService {
         } catch (Exception e) {
             return null;
         }
-        JSONObject configObject =this.getConfigObject(4,1);
-        String appId =configObject.getString("appId");
-        String appKey =configObject.getString("appKey");
+        JSONObject configObject = this.getConfigObject(4, 1);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         PatentStarDto patentStarDto = new PatentStarDto();
         BeanUtils.copyProperties(patentStarListDto, patentStarDto);
         String json = JSONObject.toJSONString(patentStarDto);
@@ -318,6 +333,7 @@ public class PatentStarApiService {
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
         // 创建一个RequestBody(参数1:数据类型 参数2传递的json串)
         FormBody.Builder builder = new FormBody.Builder();
@@ -345,7 +361,7 @@ public class PatentStarApiService {
                 Map<String, Object> reMap = new HashMap<>();
                 reMap.put("size", patentStarListDto.getRowCount());
                 reMap.put("current", patentStarListDto.getPageNum());
-                reMap.put("records",starPatentVOS);
+                reMap.put("records", starPatentVOS);
                 reMap.put("total", Data.get("HitCount"));
                 return reMap;
             }
@@ -420,9 +436,9 @@ public class PatentStarApiService {
      */
     public String getCnBibApi(String appNo) {
         String url = "https://api.patentstar.com.cn/api/Patent/CnBibo/" + appNo;
-        JSONObject configObject =this.getConfigObject(4,2);
-        String appId =configObject.getString("appId");
-        String appKey =configObject.getString("appKey");
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
@@ -431,6 +447,7 @@ public class PatentStarApiService {
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
@@ -463,9 +480,9 @@ public class PatentStarApiService {
      */
     public String getPictureApi(String appNo) {
         String url = "https://api.patentstar.com.cn/api/Patent/CnMainImage/" + appNo;
-        JSONObject configObject =this.getConfigObject(4,2);
-        String appId =configObject.getString("appId");
-        String appKey =configObject.getString("appKey");
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
@@ -474,6 +491,7 @@ public class PatentStarApiService {
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
@@ -492,7 +510,7 @@ public class PatentStarApiService {
             }
         } catch (IOException e) {
             e.printStackTrace();
-            return  null;
+            return null;
         }
         return "{}";
     }
@@ -507,9 +525,9 @@ public class PatentStarApiService {
     public String getWGPictureApi(String appNo) throws IOException {
 
         String url = "https://api.patentstar.com.cn/api/Patent/CnWGImage/" + appNo;
-        JSONObject configObject =this.getConfigObject(4,2);
-        String appId =configObject.getString("appId");
-        String appKey =configObject.getString("appKey");
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
@@ -518,6 +536,7 @@ public class PatentStarApiService {
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
@@ -549,9 +568,9 @@ public class PatentStarApiService {
      */
     public String getCnLegalApi(String appNo) {
         String url = "https://api.patentstar.com.cn/api/Patent/CnLegal/" + appNo;
-        JSONObject configObject =this.getConfigObject(4,2);
-        String appId =configObject.getString("appId");
-        String appKey =configObject.getString("appKey");
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
@@ -560,6 +579,7 @@ public class PatentStarApiService {
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
@@ -591,9 +611,9 @@ public class PatentStarApiService {
      */
     public String getCnPdfApi(String appNo) throws IOException {
         String url = "https://api.patentstar.com.cn/api/Patent/CnPdf/" + appNo;
-        JSONObject configObject =this.getConfigObject(4,2);
-        String appId =configObject.getString("appId");
-        String appKey =configObject.getString("appKey");
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
@@ -602,6 +622,7 @@ public class PatentStarApiService {
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
@@ -634,9 +655,9 @@ public class PatentStarApiService {
 
     public String getCnFullXmlApi(String appNo) throws IOException {
         String url = "https://api.patentstar.com.cn/api/Patent/CnFullXml/" + appNo;
-        JSONObject configObject =this.getConfigObject(4,2);
-        String appId =configObject.getString("appId");
-        String appKey =configObject.getString("appKey");
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
@@ -645,6 +666,7 @@ public class PatentStarApiService {
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
@@ -676,9 +698,9 @@ public class PatentStarApiService {
      */
     public String getEnPdfApi(String patentNo) {
         String url = "  https://api.patentstar.com.cn/api/Patent/EnPdf/" + patentNo;
-        JSONObject configObject =this.getConfigObject(4,2);
-        String appId =configObject.getString("appId");
-        String appKey =configObject.getString("appKey");
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
 //        String appId = "1000046";
 //        String appkey = "6AE6D4DC6AF94F26862501EDEE9E27A2";
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
@@ -689,6 +711,7 @@ public class PatentStarApiService {
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
@@ -719,10 +742,10 @@ public class PatentStarApiService {
      * 从专利之星获取世界专利著录信息
      */
     public String getENBibApi(String patentNo) {
-        String url = "https://api.patentstar.com.cn/api/Patent/ENBib/" + patentNo;
-        JSONObject configObject =this.getConfigObject(4,2);
-        String appId =configObject.getString("appId");
-        String appKey =configObject.getString("appKey");
+        String url = "https://api.patentstar.com.cn/api/Patent/EnBib/" + patentNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
@@ -731,10 +754,11 @@ public class PatentStarApiService {
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
-                .addHeader("_appid", appKey)
+                .addHeader("_appid", appId)
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_sign", signMd5)
                 .get().build();
@@ -762,9 +786,9 @@ public class PatentStarApiService {
      */
     public String getFamilyByPubNoApi(String patentNo) {
         String url = "https://api.patentstar.com.cn/api/Patent/FamilyByPubNo/" + patentNo;
-        JSONObject configObject =this.getConfigObject(4,2);
-        String appId =configObject.getString("appId");
-        String appKey =configObject.getString("appKey");
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
@@ -773,6 +797,7 @@ public class PatentStarApiService {
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
@@ -804,9 +829,9 @@ public class PatentStarApiService {
      */
     public String getCitedNumByPubNoApi(String patentNo) throws IOException {
         String url = "https://api.patentstar.com.cn/api/Patent/CitedNumByPubNo/" + patentNo;
-        JSONObject configObject =this.getConfigObject(4,2);
-        String appId =configObject.getString("appId");
-        String appKey =configObject.getString("appKey");
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
@@ -815,6 +840,7 @@ public class PatentStarApiService {
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
@@ -838,15 +864,15 @@ public class PatentStarApiService {
     }
 
 
-    public JSONObject getConfigObject(Integer webId,Integer webGroup){
+    public JSONObject getConfigObject(Integer webId, Integer webGroup) {
 
-       WebLoginConfig webLoginConfig = webLoginConfigService.getConfig(webId,webGroup);
-       if(webLoginConfig==null){
-           return  null;
-       }
-       String config =webLoginConfig.getWebConfig();
-       JSONObject jsonObject =JSONObject.parseObject(config);
-       return jsonObject;
+        WebLoginConfig webLoginConfig = webLoginConfigService.getConfig(webId, webGroup);
+        if (webLoginConfig == null) {
+            return null;
+        }
+        String config = webLoginConfig.getWebConfig();
+        JSONObject jsonObject = JSONObject.parseObject(config);
+        return jsonObject;
     }
 
 }

+ 401 - 163
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcutePatentDataStar.java

@@ -33,6 +33,7 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * 专利之星类型任务解析获取专利类
@@ -80,7 +81,12 @@ public class ExcutePatentDataStar implements IExcutePatentData {
                 }
 
                 //获得返回的的多个检索式 patentStarListDtos
-                List<PatentStarListDto> patentStarListDtos = patentStarApiService.getSplitedConditions(new PatentStarListDto().setCurrentQuery(task.getConditions()), patentNum);
+
+                List<PatentStarListDto> patentStarListDtos = patentStarApiService.getSplitedConditions(new PatentStarListDto()
+                        .setCurrentQuery(task.getConditions())
+                        .setOrderBy(orderBy)
+                        .setOrderByType(orderByType)
+                        .setDBType(dbType), patentNum);
 
                 int produceSuccessNum = 0;
                 int countForStart = 0;  //定义变量countForStart,记录检索式的专利总数量(目的是找出下载开始位置专利所属的那个检索式)
@@ -108,14 +114,11 @@ public class ExcutePatentDataStar implements IExcutePatentData {
                     //第2层:遍历检索页数
                     for (Integer i = startPage; i <= endPage; i++) {
                         //调用一般检索接口,返回一批专利著录相关数据
-                        Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(new PatentStarListDto()
-                                .setCurrentQuery(patentStarListDto.getCurrentQuery())
-                                .setOrderBy(orderBy)
-                                .setOrderByType(orderByType)
+                        patentStarListDto
                                 .setPageNum(i)
                                 .setRowCount(50)
-                                .setDBType(dbType)
-                                .setFormed(true));
+                                .setFormed(true);
+                        Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
                         if (resultMap == null || (Integer) resultMap.get("total") == 0) {
                             ThrowException.throwXiaoShiException("未检索到相关专利");
                         }
@@ -343,45 +346,108 @@ public class ExcutePatentDataStar implements IExcutePatentData {
      * @param starPatent     专利之星著录对象
      * @param uploadParamsVO 专利实体类对象
      */
-    public void setPatentZhuLu(StarPatentVO starPatent, UploadParamsVO uploadParamsVO) {
+    public void setPatentZhuLu(StarPatentVO starPatent, UploadParamsVO uploadParamsVO) throws IOException {
         //以下 ↓装载的是调用"一般检索"接口返回的专利相关数据
-        //Patent patent = new Patent();
-        //装载专利号
-        uploadParamsVO.getPatent().setPatentNo(starPatent.getPatentNo());
+        //装载专利类型
+        Integer patentType = starPatent.getPatentType();
+        if (patentType != null) {
+            if (patentType.equals(2) || patentType.equals(9)) {
+                uploadParamsVO.getPatent().setType(1);  //实用新型
+            } else if (patentType.equals(1) || patentType.equals(8)) {
+                uploadParamsVO.getPatent().setType(2);  //发明
+            } else if (patentType.equals(3)) {
+                uploadParamsVO.getPatent().setType(3);  //外观设计
+            }
+        }
+        //装载申请人地址
+        if (starPatent.getApplicationAddress() != null && !starPatent.getApplicationAddress().equals("")) {
+            ArrayList<String> patentApplicantOriginalAddresss = new ArrayList<>();
+            patentApplicantOriginalAddresss.add(starPatent.getApplicationAddress());
+            uploadParamsVO.setPatentApplicantOriginalAddress(patentApplicantOriginalAddresss);
+        }
+        //装载IPC分类号
+        if (starPatent.getIpcListStr() != null && !starPatent.getIpcListStr().equals("")) {
+            String[] ipcArr = starPatent.getIpcListStr().split(";");
+            //装载主分类号
+            //uploadParamsVO.setMainIpc(ipcArr[0]);
+            uploadParamsVO.setMainIpc(starPatent.getMainIpc());
+            uploadParamsVO.setIpcList(Arrays.asList(ipcArr));
+        }
+        //装载公告日(公开授权日)
+        if (starPatent.getPublicAccreditDate() != null && !starPatent.getPublicAccreditDate().equals("")) {
+            int timeStamp = stringDateToTimeStamp(starPatent.getPublicAccreditDate());
+            uploadParamsVO.getPatent().setPublicAccreditDate(timeStamp);
+        }
         //装载摘要
-        uploadParamsVO.getPatent().setAbstractStr(starPatent.getAbstractStr());
-        //装载标题
-        uploadParamsVO.getPatent().setName(starPatent.getName());
-        //装载申请号
-        uploadParamsVO.getPatent().setApplicationNo(starPatent.getApplicationNo());
+        if (starPatent.getAbstractStr() != null && !starPatent.getAbstractStr().equals("")) {
+            uploadParamsVO.getPatent().setAbstractStr(starPatent.getAbstractStr());
+        }
         //装载申请日
         if (starPatent.getApplicationDate() != null && !starPatent.getApplicationDate().equals("")) {
             int timeStamp = stringDateToTimeStamp(starPatent.getApplicationDate());
             uploadParamsVO.getPatent().setApplicationDate(timeStamp);
         }
-        //装载公开号
-        uploadParamsVO.getPatent().setPublicNo(starPatent.getPublicNo());
+        //装载发明人
+        if (starPatent.getInventorStr() != null && !starPatent.getInventorStr().equals("")) {
+            List<String> patentInventorNames = Arrays.asList(starPatent.getInventorStr().split(";"));
+            ArrayList<PatentInventor> patentInventors = new ArrayList<>();
+            for (String patentInventorName : patentInventorNames) {
+                PatentInventor patentInventor = new PatentInventor();
+                patentInventor.setName(patentInventorName);
+                patentInventors.add(patentInventor);
+            }
+            uploadParamsVO.setPatentInventorList(patentInventors);
+        }
+        //装载专利号
+        if (starPatent.getPatentNo() != null && !starPatent.getPatentNo().equals("")) {
+            uploadParamsVO.getPatent().setPatentNo(starPatent.getPatentNo());
+        }
+        //装载授权号(公开授权日)
+        if (starPatent.getPublicAccreditNo() != null && !starPatent.getPublicAccreditNo().equals("")) {
+            uploadParamsVO.getPatent().setPublicAccreditNo(starPatent.getPublicAccreditNo());
+        }
+        //装载代理机构地址
+        if (starPatent.getAgencyStr() != null && !starPatent.getAgencyStr().equals("")) {
+            String agencyAddress;
+            if (starPatent.getAgencyStr().contains(" ")) {
+                agencyAddress = starPatent.getAgencyStr().substring(0, starPatent.getAgencyStr().lastIndexOf(" "));
+            } else {
+                agencyAddress = starPatent.getAgencyStr();
+            }
+            uploadParamsVO.getPatent().setAgencyId(agencyAddress);
+        }
+        //装载申请号
+        if (starPatent.getApplicationNo() != null && !starPatent.getApplicationNo().equals("")) {
+            uploadParamsVO.getPatent().setApplicationNo(starPatent.getApplicationNo());
+        }
+        //装载申请人
+        if (starPatent.getApplicantStr() != null && !starPatent.getApplicantStr().equals("")) {
+            uploadParamsVO.setPatentApplicantOriginalName(Arrays.asList(starPatent.getApplicantStr().split(";")));
+        }
+        //装载代理人
+        if (starPatent.getAgentStr() != null && !starPatent.getAgentStr().equals("")) {
+            List<String> patentAgents = Arrays.asList(starPatent.getAgentStr().split(";"));
+            ArrayList<PatentAgent> patentAgentList = new ArrayList<>();
+            for (String n : patentAgents) {
+                PatentAgent patentAgent = new PatentAgent();
+                patentAgent.setName(n);
+                patentAgentList.add(patentAgent);
+            }
+            uploadParamsVO.setPatentAgentList(patentAgentList);
+        }
         //装载公开日
         if (starPatent.getPublicDate() != null && !starPatent.getPublicDate().equals("")) {
             int timeStamp = stringDateToTimeStamp(starPatent.getPublicDate());
             uploadParamsVO.getPatent().setPublicDate(timeStamp);
         }
-        //装载申请人
-        if (starPatent.getApplicantStr() != null && !starPatent.getApplicantStr().equals("")) {
-            uploadParamsVO.setPatentApplicantOriginalName(Arrays.asList(starPatent.getApplicantStr().split(";")));
+        //装载标题
+        if (starPatent.getName() != null && !starPatent.getName().equals("")) {
+            uploadParamsVO.getPatent().setName(starPatent.getName());
         }
         //装载权利人
         if (starPatent.getCurrentApplicantStr() != null && !starPatent.getCurrentApplicantStr().equals("")) {
             uploadParamsVO.setPatentApplicantCurrentName(Arrays.asList(starPatent.getCurrentApplicantStr().split(";")));
         }
-        //装载IPC分类号
-        if (starPatent.getIpcListStr() != null && !starPatent.getIpcListStr().equals("")) {
-            String[] ipcArr = starPatent.getIpcListStr().split(";");
-            //装载主分类号
-            //uploadParamsVO.setMainIpc(ipcArr[0]);
-            uploadParamsVO.setMainIpc(starPatent.getMainIpc());
-            uploadParamsVO.setIpcList(Arrays.asList(ipcArr));
-        }
         //装载法律状态(os_patent表status字段值)
         Integer status = starPatent.getLG();
         if (status != null) {
@@ -396,130 +462,254 @@ public class ExcutePatentDataStar implements IExcutePatentData {
                 uploadParamsVO.getPatent().setSimpleStatus(1);
             }
         }
-        uploadParamsVO.setPatentSimpleStatus(starPatent.getSimpleStatus());
-        uploadParamsVO.setSimpleStatus(starPatent.getSimpleStatus());
-        //装载专利类型
-        Integer patentType = starPatent.getPatentType();
-        if (patentType != null) {
-            if (patentType.equals(2) || patentType.equals(9)) {
-                uploadParamsVO.getPatent().setType(1);  //实用新型
-            } else if (patentType.equals(1) || patentType.equals(8)) {
-                uploadParamsVO.getPatent().setType(2);  //发明
-            } else if (patentType.equals(3)) {
-                uploadParamsVO.getPatent().setType(3);  //外观设计
-            }
+        //装载公开号
+        if (starPatent.getPublicNo() != null && !starPatent.getPublicNo().equals("")) {
+            uploadParamsVO.getPatent().setPublicNo(starPatent.getPublicNo());
+        }
+        if (starPatent.getSimpleStatus() != null && !starPatent.getSimpleStatus().equals("")) {
+            uploadParamsVO.setPatentSimpleStatus(starPatent.getSimpleStatus());
+            uploadParamsVO.setSimpleStatus(starPatent.getSimpleStatus());
+        }
+        //装载受理局
+        if (starPatent.getBureau() != null && !starPatent.getBureau().equals("")) {
+            uploadParamsVO.getPatent().setBureau(starPatent.getBureau());
+        }
+        //装载优先权
+        if (starPatent.getPriorityNo() != null && !starPatent.getPriorityNo().equals("")) {
+            uploadParamsVO.getPatent().setPriorityNo(starPatent.getPriorityNo());
+        }
+        //装载优先权日
+        if (starPatent.getPriorityDate() != null && !starPatent.getPriorityDate().equals("")) {
+            int timeStamp = stringDateToTimeStamp(starPatent.getPriorityDate());
+            uploadParamsVO.getPatent().setPriorityDate(timeStamp);
         }
 
 
-        //以下 ↓装载的是调用"获得中国专利著录"接口返回的专利相关数据
         String appNo;
         if (starPatent.getApplicationNo().contains(".")) {
             appNo = starPatent.getApplicationNo().substring(0, starPatent.getApplicationNo().lastIndexOf("."));
         } else {
             appNo = starPatent.getApplicationNo();
         }
-        //调用中国专利著录接口返回的专利相关数据最外层是一个集合"[]",但是集合中只有一个对象"{}",以下方式处理
-        String chinaPatentZhuLuStr = patentStarApiService.getCnBibApi(appNo);
-        if (chinaPatentZhuLuStr != null && !chinaPatentZhuLuStr.trim().equals("") && !chinaPatentZhuLuStr.equals("{}")) {
-            List<ChinaPatentZhuLu> chinaPatentZhuLus = JSON.parseArray(chinaPatentZhuLuStr, ChinaPatentZhuLu.class);
-            ChinaPatentZhuLu chinaPatentZhuLu = chinaPatentZhuLus.get(0);
-
-            //装载申请人地址
-            if (chinaPatentZhuLu.getDZ() != null && !chinaPatentZhuLu.getDZ().equals("")) {
-                ArrayList<String> patentApplicantOriginalAddresss = new ArrayList<>();
-                if (chinaPatentZhuLu.getDZ().contains(" ")) {
-                    patentApplicantOriginalAddresss.add(chinaPatentZhuLu.getDZ().substring(chinaPatentZhuLu.getDZ().indexOf(" ") + 1));
-                } else {
-                    patentApplicantOriginalAddresss.add(chinaPatentZhuLu.getDZ());
+
+        try {
+            //以下 ↓装载的是调用"获得中国专利著录"接口返回的专利相关数据
+            if (starPatent.getPatentNo().contains("CN")) {
+                String chinaPatentZhuLuStr = patentStarApiService.getCnBibApi(appNo);
+                if (chinaPatentZhuLuStr != null && !chinaPatentZhuLuStr.trim().equals("") && !chinaPatentZhuLuStr.equals("{}")) {
+                    List<ChinaPatentZhuLu> chinaPatentZhuLus = JSON.parseArray(chinaPatentZhuLuStr, ChinaPatentZhuLu.class);
+                    ChinaPatentZhuLu chinaPatentZhuLu = chinaPatentZhuLus.get(0);
+                    //装载申请人地址
+                    if (uploadParamsVO.getPatentApplicantOriginalAddress() == null || uploadParamsVO.getPatentApplicantOriginalAddress().size() == 0) {
+                        if (chinaPatentZhuLu.getDZ() != null && !chinaPatentZhuLu.getDZ().equals("")) {
+                            List<String> patentApplicantOriginalAddresss = new ArrayList<>();
+                            if (chinaPatentZhuLu.getDZ().contains(" ")) {
+                                patentApplicantOriginalAddresss.add(chinaPatentZhuLu.getDZ().substring(chinaPatentZhuLu.getDZ().indexOf(" ") + 1));
+                            } else {
+                                patentApplicantOriginalAddresss.add(chinaPatentZhuLu.getDZ());
+                            }
+                            uploadParamsVO.setPatentApplicantOriginalAddress(patentApplicantOriginalAddresss);
+                        }
+                    }
+                    //装载代理人
+                    if (uploadParamsVO.getPatentAgentList() == null || uploadParamsVO.getPatentAgentList().size() == 0) {
+                        if (chinaPatentZhuLu.getAT() != null && !chinaPatentZhuLu.getAT().equals("")) {
+                            List<String> patentAgents = Arrays.asList(chinaPatentZhuLu.getAT().split(";"));
+                            ArrayList<PatentAgent> patentAgentList = new ArrayList<>();
+                            for (String n : patentAgents) {
+                                PatentAgent patentAgent = new PatentAgent();
+                                patentAgent.setName(n);
+                                patentAgentList.add(patentAgent);
+                            }
+                            uploadParamsVO.setPatentAgentList(patentAgentList);
+                        }
+                    }
+                    //装载代理机构地址
+                    if (uploadParamsVO.getPatent().getAgencyId() == null || uploadParamsVO.getPatent().getAgencyId().equals("")) {
+                        if (chinaPatentZhuLu.getAGN() != null && !chinaPatentZhuLu.getAGN().equals("")) {
+                            String agencyAddress;
+                            if (chinaPatentZhuLu.getAGN().contains(" ")) {
+                                agencyAddress = chinaPatentZhuLu.getAGN().substring(0, chinaPatentZhuLu.getAGN().lastIndexOf(" "));
+                            } else {
+                                agencyAddress = chinaPatentZhuLu.getAGN();
+                            }
+                            uploadParamsVO.getPatent().setAgencyId(agencyAddress);
+                        }
+                    }
+                    //装载发明人
+                    if (uploadParamsVO.getPatentInventorList() == null || uploadParamsVO.getPatentInventorList().size() == 0) {
+                        if (chinaPatentZhuLu.getIV() != null && !chinaPatentZhuLu.getIV().equals("")) {
+                            List<String> patentInventorNames = Arrays.asList(chinaPatentZhuLu.getIV().split(";"));
+                            ArrayList<PatentInventor> patentInventors = new ArrayList<>();
+                            for (String patentInventorName : patentInventorNames) {
+                                PatentInventor patentInventor = new PatentInventor();
+                                patentInventor.setName(patentInventorName);
+                                patentInventors.add(patentInventor);
+                            }
+                            uploadParamsVO.setPatentInventorList(patentInventors);
+                        }
+                    }
+                    //装载优先权号、优先权国家、优先权日
+                    if (uploadParamsVO.getPatent().getPriorityNo() == null || uploadParamsVO.getPatent().getPriorityNo().equals("")) {
+                        uploadParamsVO.getPatent().setPriorityNo(chinaPatentZhuLu.getPR());
+                    }
                 }
-                uploadParamsVO.setPatentApplicantOriginalAddress(patentApplicantOriginalAddresss);
-            }
-            //装载代理人
-            if (chinaPatentZhuLu.getAT() != null && !chinaPatentZhuLu.getAT().equals("")) {
-                List<String> patentAgents = Arrays.asList(chinaPatentZhuLu.getAT().split(";"));
-                ArrayList<PatentAgent> patentAgentList = new ArrayList<>();
-                for (String n : patentAgents) {
-                    PatentAgent patentAgent = new PatentAgent();
-                    patentAgent.setName(n);
-                    patentAgentList.add(patentAgent);
+            } else {  //以下 ↓装载的是调用"获得世界专利著录"接口返回的专利相关数据
+                String worldPatentZhuLuStr = patentStarApiService.getENBibApi(starPatent.getPatentNo());
+                List<WorldPatentZhuLu> worldPatentZhuLus = JSON.parseArray(worldPatentZhuLuStr, WorldPatentZhuLu.class);
+                WorldPatentZhuLu worldPatentZhuLu = worldPatentZhuLus.get(0);
+
+                //装载公开号
+                if (uploadParamsVO.getPatent().getPublicNo() == null || uploadParamsVO.getPatent().getPublicNo().equals("")) {
+                    uploadParamsVO.getPatent().setPatentNo(worldPatentZhuLu.getDocdbPubNo());
                 }
-                uploadParamsVO.setPatentAgentList(patentAgentList);
-            }
-            //装载代理机构地址
-            if (chinaPatentZhuLu.getAGN() != null && !chinaPatentZhuLu.getAGN().equals("")) {
-                String agencyAddress;
-                if (chinaPatentZhuLu.getAGN().contains(" ")) {
-                    agencyAddress = chinaPatentZhuLu.getAGN().substring(0, chinaPatentZhuLu.getAGN().lastIndexOf(" "));
-                } else {
-                    agencyAddress = chinaPatentZhuLu.getAGN();
+                //装载申请号
+                if (uploadParamsVO.getPatent().getApplicationNo() == null || uploadParamsVO.getPatent().getApplicationNo().equals("")) {
+                    uploadParamsVO.getPatent().setApplicationNo(worldPatentZhuLu.getEpoAppNo());
                 }
-                uploadParamsVO.getPatent().setAgencyId(agencyAddress);
-            }
-            //装载发明人
-            if (chinaPatentZhuLu.getIV() != null && !chinaPatentZhuLu.getIV().equals("")) {
-                List<String> patentInventorNames = Arrays.asList(chinaPatentZhuLu.getIV().split(";"));
-                ArrayList<PatentInventor> patentInventors = new ArrayList<>();
-                for (String patentInventorName : patentInventorNames) {
-                    PatentInventor patentInventor = new PatentInventor();
-                    patentInventor.setName(patentInventorName);
-                    patentInventors.add(patentInventor);
+                //装载申请日
+                if (uploadParamsVO.getPatent().getApplicationDate() == null) {
+                    int timeStamp = stringDateToTimeStamp(worldPatentZhuLu.getAppDate());
+                    uploadParamsVO.getPatent().setApplicationDate(timeStamp);
+                }
+                //装载公开日
+                if (uploadParamsVO.getPatent().getPublicDate() == null) {
+                    int timeStamp = stringDateToTimeStamp(worldPatentZhuLu.getPubDate());
+                    uploadParamsVO.getPatent().setPublicDate(timeStamp);
+                }
+                //装载IPC分类号
+                if (uploadParamsVO.getIpcList() == null || uploadParamsVO.getIpcList().size() == 0) {
+                    String[] ipcArr = worldPatentZhuLu.getIpc().split(";");
+                    //装载主分类号
+                    if (uploadParamsVO.getMainIpc() == null || uploadParamsVO.getMainIpc().equals("")) {
+                        uploadParamsVO.setMainIpc(ipcArr[0]);
+                    }
+                    //装载IPC分类号
+                    uploadParamsVO.setIpcList(Arrays.asList(ipcArr));
+                }
+                //装载CPC分类号
+                String[] cpcArr = worldPatentZhuLu.getCpc().split(";");
+                uploadParamsVO.setCpcList(Arrays.asList(cpcArr));
+                //装载申请人
+                if (uploadParamsVO.getPatentApplicantOriginalName() == null || uploadParamsVO.getPatentApplicantOriginalName().size() == 0) {
+                    uploadParamsVO.setPatentApplicantOriginalName(Arrays.asList(worldPatentZhuLu.getPa().split(";")));
+                }
+                //装载发明人
+                if (uploadParamsVO.getPatentInventorList() == null || uploadParamsVO.getPatentInventorList().size() == 0) {
+                    if (worldPatentZhuLu.getIv() != null && !worldPatentZhuLu.getIv().equals("")) {
+                        List<String> patentInventorNames = Arrays.asList(worldPatentZhuLu.getIv().split(";"));
+                        ArrayList<PatentInventor> patentInventors = new ArrayList<>();
+                        for (String patentInventorName : patentInventorNames) {
+                            PatentInventor patentInventor = new PatentInventor();
+                            patentInventor.setName(patentInventorName);
+                            patentInventors.add(patentInventor);
+                        }
+                        uploadParamsVO.setPatentInventorList(patentInventors);
+                    }
+                }
+                //装载优先权
+                if (uploadParamsVO.getPatent().getPriorityNo() == null || uploadParamsVO.getPatent().getPriorityNo().equals("")) {
+                    uploadParamsVO.getPatent().setPriorityNo(worldPatentZhuLu.getPr());
                 }
-                uploadParamsVO.setPatentInventorList(patentInventors);
+                //装载标题
+                if (uploadParamsVO.getPatent().getName() == null && uploadParamsVO.getPatent().getName().equals("")) {
+                    uploadParamsVO.getPatent().setName(worldPatentZhuLu.getTitle());
+                }
+                //装载摘要
+                if (uploadParamsVO.getPatent().getAbstractStr() == null && uploadParamsVO.getPatent().getAbstractStr().equals("")) {
+                    uploadParamsVO.getPatent().setAbstractStr(worldPatentZhuLu.getAbstract());
+                }
+
+
             }
-            //装载优先权号、优先权国家、优先权日
-            uploadParamsVO.getPatent().setPriorityNo(chinaPatentZhuLu.getPR());
+
+        } catch (Exception e) {
+            //e.printStackTrace();
         }
 
         //以下 ↓装载的是调用"获得同族专利"接口返回的专利相关数据
-        if (starPatent.getPatentNo() != null && !starPatent.getPatentNo().equals("")) {
-            String familyPatentNoStr = patentStarApiService.getFamilyByPubNoApi(starPatent.getPatentNo());
-            if (!familyPatentNoStr.equals("no data")) {
-                FamilyPatentNo familyPatentNo = JSON.parseObject(familyPatentNoStr, FamilyPatentNo.class);
-                //装载同族号
-                if (familyPatentNo.getFamilyinfo() != null && !familyPatentNo.getFamilyinfo().equals("")) {
-                    List<String> simpleFamily = Arrays.asList(familyPatentNo.getFamilyinfo().split(";"));
-                    uploadParamsVO.setSimpleFamily(simpleFamily);
+        try {
+            if (starPatent.getPatentNo() != null && !starPatent.getPatentNo().equals("")) {
+                String familyPatentNoStr = patentStarApiService.getFamilyByPubNoApi(starPatent.getPatentNo());
+                if (!familyPatentNoStr.equals("no data")) {
+                    FamilyPatentNo familyPatentNo = JSON.parseObject(familyPatentNoStr, FamilyPatentNo.class);
+                    //装载同族号
+                    if (familyPatentNo.getFamilyinfo() != null && !familyPatentNo.getFamilyinfo().equals("")) {
+                        List<String> familyPatentNos = Arrays.asList(familyPatentNo.getFamilyinfo().split(";"));
+                        //集合转成字符串
+                        String conditions = "PN=(" + StringUtils.join(familyPatentNos, " OR ") + ")";
+
+                        //调用一般接口返回这些同族号专利的著录相关数据(标题、申请人、权利人、摘要附图)
+                        PatentStarListDto patentStarListDto = new PatentStarListDto()
+                                .setCurrentQuery(conditions)
+                                .setOrderBy("ID")
+                                .setOrderByType("DESC")
+                                .setPageNum(1)
+                                .setRowCount(50)
+                                .setDBType("CN");
+                        Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
+                        List<StarPatentVO> patents = new ArrayList<>();
+                        if (resultMap == null || (Integer) resultMap.get("total") == 0) {
+                            patentStarListDto.setDBType("WD");
+                            resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
+                            if (resultMap != null && (Integer) resultMap.get("total") != 0) {
+                                patents = (List<StarPatentVO>) resultMap.get("records");
+                            }
+                        } else {
+                            patents = (List<StarPatentVO>) resultMap.get("records");
+                        }
+                        if (patents != null && patents.size() > 0) {
+                            List<String> simpleFamilys = patents.stream().map(StarPatentVO::getPatentNo).collect(Collectors.toList());
+                            uploadParamsVO.setSimpleFamily(simpleFamilys);
+                        }
+                    }
                 }
             }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
 
         //以下 ↓装载的是调用"获得中国专利法律状态"接口返回的专利相关数据
-        PatentAffair patentAffair = new PatentAffair();
-        String cnLegalApiStr = patentStarApiService.getCnLegalApi(appNo);
-        if (!cnLegalApiStr.equals("")) {
-            List<ChinaLeagalStatus> chinaLeagalStatuses = JSON.parseArray(cnLegalApiStr, ChinaLeagalStatus.class);
-            if (chinaLeagalStatuses != null && chinaLeagalStatuses.size() > 0) {
-                ArrayList<KeyValueVO> lst = new ArrayList<>();
-                HashMap<Integer, String> nameMap = new HashMap<>();
-                HashMap<Integer, String> contentMap = new HashMap<>();
-                nameMap.put(0, "发生日期");
-                nameMap.put(1, "法律状态");
-                nameMap.put(2, "详细法律状态");
-                nameMap.put(3, "详细信息");
-                for (int i = 0; i < chinaLeagalStatuses.size(); i++) {
-                    if (i == 0) {
-                        patentAffair.setStatus(chinaLeagalStatuses.get(i).getLegalStatus());
-                    }
-                    contentMap.put(0, chinaLeagalStatuses.get(i).getLegalDate());
-                    contentMap.put(1, chinaLeagalStatuses.get(i).getLegalStatus());
-                    contentMap.put(2, chinaLeagalStatuses.get(i).getLegalStatusInfo());
-                    contentMap.put(3, chinaLeagalStatuses.get(i).getDETAIL());
-                    ArrayList<KeyValueVO.InpadocData> inpadocDatas = new ArrayList<>();
-                    for (int j = 0; j < 4; j++) {
-                        KeyValueVO.InpadocData inpadocData = new KeyValueVO.InpadocData();
-                        inpadocData.setName(nameMap.get(j));
-                        inpadocData.setContent(contentMap.get(j));
-                        inpadocDatas.add(inpadocData);
+        try {
+            PatentAffair patentAffair = new PatentAffair();
+            String cnLegalApiStr = patentStarApiService.getCnLegalApi(appNo);
+            if (!cnLegalApiStr.equals("")) {
+                List<ChinaLeagalStatus> chinaLeagalStatuses = JSON.parseArray(cnLegalApiStr, ChinaLeagalStatus.class);
+                if (chinaLeagalStatuses != null && chinaLeagalStatuses.size() > 0) {
+                    ArrayList<KeyValueVO> lst = new ArrayList<>();
+                    HashMap<Integer, String> nameMap = new HashMap<>();
+                    HashMap<Integer, String> contentMap = new HashMap<>();
+                    nameMap.put(0, "发生日期");
+                    nameMap.put(1, "法律状态");
+                    nameMap.put(2, "详细法律状态");
+                    nameMap.put(3, "详细信息");
+                    for (int i = 0; i < chinaLeagalStatuses.size(); i++) {
+                        if (i == 0) {
+                            patentAffair.setStatus(chinaLeagalStatuses.get(i).getLegalStatus());
+                        }
+                        contentMap.put(0, chinaLeagalStatuses.get(i).getLegalDate());
+                        contentMap.put(1, chinaLeagalStatuses.get(i).getLegalStatus());
+                        contentMap.put(2, chinaLeagalStatuses.get(i).getLegalStatusInfo());
+                        contentMap.put(3, chinaLeagalStatuses.get(i).getDETAIL());
+                        ArrayList<KeyValueVO.InpadocData> inpadocDatas = new ArrayList<>();
+                        for (int j = 0; j < 4; j++) {
+                            KeyValueVO.InpadocData inpadocData = new KeyValueVO.InpadocData();
+                            inpadocData.setName(nameMap.get(j));
+                            inpadocData.setContent(contentMap.get(j));
+                            inpadocDatas.add(inpadocData);
+                        }
+                        KeyValueVO keyValueVO = new KeyValueVO();
+                        keyValueVO.setInpadocData(inpadocDatas);
+                        lst.add(keyValueVO);
                     }
-                    KeyValueVO keyValueVO = new KeyValueVO();
-                    keyValueVO.setInpadocData(inpadocDatas);
-                    lst.add(keyValueVO);
+                    //装载事务表的status(公开|授权|驳回|权力转移。。。)
+                    String content = JSONObject.toJSONString(lst);
+                    patentAffair.setContent(content);
+                    uploadParamsVO.setPatentAffair(patentAffair);
                 }
-                //装载事务表的status(公开|授权|驳回|权力转移。。。)
-                String content = JSONObject.toJSONString(lst);
-                patentAffair.setContent(content);
-                uploadParamsVO.setPatentAffair(patentAffair);
             }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
 
     }
@@ -547,10 +737,13 @@ public class ExcutePatentDataStar implements IExcutePatentData {
         StringBuilder builder = new StringBuilder();
         while (matcher.find()) {
             String macherGroup = matcher.group();
-            String right = macherGroup.replaceAll("<.*?>", "").trim();
+            String right = macherGroup.replaceAll("<!--.*?-->", "").trim();
+            right = right.replaceAll("<.*?>", "").trim();
             builder.append(right).append("\r\n");
         }
 
+//        <!-- SIPO <DP n="1"> -->
+
         String patentRightText = builder + "";
 
         //使用工具类去除字符串文本中的所有HTML格式标签
@@ -590,7 +783,7 @@ public class ExcutePatentDataStar implements IExcutePatentData {
         String text = "";
         while (matcher.find()) {
             text = matcher.group();
-            text = text.replaceAll("<invention-title(.*?)</invention-title>", "");
+            text = text.replaceAll("<invention-title[^>]*>.*?(\\n{0,}|\\s{0,}?)</invention-title>", "");
             text = text.replaceAll("<br/>", "");
             text = text.replaceAll("\\s", "");
         }
@@ -643,42 +836,54 @@ public class ExcutePatentDataStar implements IExcutePatentData {
      * @param uploadParamsVO 专利实体类对象
      */
     public void setPatentInstructionPDF(StarPatentVO starPatent, UploadParamsVO uploadParamsVO) throws IOException {
-        //根据专利号调用"获得世界专利pdf"接口,获得pdf的url地址
-        if (starPatent.getPatentNo() != null && !starPatent.getPatentNo().equals("")) {
-            String pdfUrl = patentStarApiService.getEnPdfApi(starPatent.getPatentNo());
-            URL url = new URL(pdfUrl);  //想要读取的url地址
-            InputStream in = url.openStream();
-
-            File file = File.createTempFile("new_url", ".pdf");  //创建文件
-            OutputStream os = new FileOutputStream(file);  //创建文件输出流
-            int bytesRead;
-            byte[] buffer = new byte[8192];
-            int len = 8192;
-            while ((bytesRead = in.read(buffer, 0, len)) != -1) {
-                os.write(buffer, 0, bytesRead);
+        String pdfUrl = "", pdfUrlOA = "", pdfUrlOC = "";
+        if ((starPatent.getPatentNo() != null && !starPatent.getPatentNo().equals("")) || (starPatent.getApplicationNo() != null && !starPatent.getApplicationNo().equals(""))) {
+            //根据申请号调用"获得中国专利pdf"接口,获得1个或2个pdf的url地址
+            if (starPatent.getPatentNo().contains("CN")) {
+                String appNo = starPatent.getApplicationNo();
+                if (appNo.contains(".")) {
+                    appNo = appNo.substring(0, appNo.lastIndexOf("."));
+                }
+                String pdfUrlStr = patentStarApiService.getCnPdfApi(appNo);
+                if (pdfUrlStr.equals("")) {
+                    return;
+                }
+                if (pdfUrlStr.contains("|http")) {  //若包含公开和授权两个pdf
+                    String[] pdfUrlArr = pdfUrlStr.split("\\|http");
+                    pdfUrlOA = pdfUrlArr[0].substring(pdfUrlArr[0].indexOf("http"), pdfUrlArr[0].indexOf("0A_CN_0.pdf") + 11);
+                    pdfUrlArr[1] = "|http" + pdfUrlArr[1];
+                    pdfUrlOC = pdfUrlArr[1].substring(pdfUrlArr[1].indexOf("http"), pdfUrlArr[1].indexOf("0C_CN_0.pdf") + 11);
+                } else if (pdfUrlStr.contains("0A_CN_0.pdf")) {  //若只有一个且是OA
+                    pdfUrlOA = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("0A_CN_0.pdf") + 11);
+                } else if (pdfUrlStr.contains("0C_CN_0.pdf")) {  //若只有一个且是OC
+                    pdfUrlOC = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("0C_CN_0.pdf") + 11);
+                    //外国专利检索世界pdf接口
+                }
+                //根据专利号调用"获得世界专利pdf"接口,获得pdf的url地址
+            } else {
+                pdfUrl = patentStarApiService.getEnPdfApi(starPatent.getPatentNo());
+                if (pdfUrl.equals("")) {
+                    return;
+                }
             }
-            //关闭释放流
-            os.close();
-            in.close();
-
-            DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
-            FileItem item = diskFileItemFactory.createItem(file.getName(), "text/plain", true, file.getName());
-            buffer = new byte[8192];
-            FileInputStream fis = new FileInputStream(file);
-            OutputStream fos = item.getOutputStream();
-            len = 8192;
-            while ((bytesRead = fis.read(buffer, 0, len)) != -1) {
-                fos.write(buffer, 0, bytesRead);
+
+            if (!pdfUrl.equals("")) {
+                UploadFileDTO fileDTO = downLoadPdf(pdfUrl);
+                uploadParamsVO.setFileDTO(fileDTO);
+            } else if (!pdfUrlOA.equals("") && !pdfUrlOC.equals("")) {
+                UploadFileDTO fileDTO = downLoadPdf(pdfUrlOA);
+                uploadParamsVO.setFileDTO(fileDTO);
+                UploadFileDTO fileDTO2 = downLoadPdf(pdfUrlOC);
+                uploadParamsVO.setFileDTO2(fileDTO2);
+            } else if (!pdfUrlOA.equals("")) {
+                UploadFileDTO fileDTO = downLoadPdf(pdfUrlOA);
+                uploadParamsVO.setFileDTO(fileDTO);
+            } else if (!pdfUrlOC.equals("")) {
+                UploadFileDTO fileDTO2 = downLoadPdf(pdfUrlOC);
+                uploadParamsVO.setFileDTO2(fileDTO2);
             }
-            //关闭释放流
-            fos.close();
-            fis.close();
-            MultipartFile multipartFile = new CommonsMultipartFile(item);
-            UploadFileDTO fileDTO = fileUtils.uploadFile(multipartFile);
-            uploadParamsVO.setFileDTO(fileDTO);
 
         }
-
     }
 
     /**
@@ -729,7 +934,7 @@ public class ExcutePatentDataStar implements IExcutePatentData {
      */
     public void downLoadIsAddPatentNos(List<String> isAddPatentNos, Task task, String orderBy, String orderByType, String dbType, List<String> cells, String conditions) throws IOException {
         if (conditions == null) {
-            conditions = "(AN=(" + StringUtils.join(isAddPatentNos, " OR ") + "))";
+            conditions = "AN=(" + StringUtils.join(isAddPatentNos, " OR ") + ")";
         }
 
         int pageNum = 1;
@@ -794,6 +999,39 @@ public class ExcutePatentDataStar implements IExcutePatentData {
 
     }
 
+    public UploadFileDTO downLoadPdf(String pdfUrl) throws IOException {
+        URL url = new URL(pdfUrl);  //想要读取的url地址
+        InputStream in = url.openStream();
+
+        File file = File.createTempFile("new_url", ".pdf");  //创建文件
+        OutputStream os = new FileOutputStream(file);  //创建文件输出流
+        int bytesRead;
+        byte[] buffer = new byte[8192];
+        int len = 8192;
+        while ((bytesRead = in.read(buffer, 0, len)) != -1) {
+            os.write(buffer, 0, bytesRead);
+        }
+        //关闭释放流
+        os.close();
+        in.close();
+
+        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
+        FileItem item = diskFileItemFactory.createItem(file.getName(), "text/plain", true, file.getName());
+        buffer = new byte[8192];
+        FileInputStream fis = new FileInputStream(file);
+        OutputStream fos = item.getOutputStream();
+        len = 8192;
+        while ((bytesRead = fis.read(buffer, 0, len)) != -1) {
+            fos.write(buffer, 0, bytesRead);
+        }
+        //关闭释放流
+        fos.close();
+        fis.close();
+        MultipartFile multipartFile = new CommonsMultipartFile(item);
+        UploadFileDTO fileDTO = fileUtils.uploadFile(multipartFile);
+        return fileDTO;
+    }
+
     /**
      * 专利之星返回日期格式为字符串 yyyyMMdd,如 "20230713",本方法将其转成10位数字时间戳
      *

+ 5 - 2
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/PantentQueueService.java

@@ -481,9 +481,12 @@ public class PantentQueueService {
             try {
                 if (patentInstructionPDFQueueList.size() > 0) {
                     queueData = patentInstructionPDFQueueList.remove(0);
-                    //说明书pdf入库
-                    if (queueData.getUploadParamsVO().getFileDTO() != null) {
+                    if (queueData.getUploadParamsVO().getFileDTO() != null && queueData.getUploadParamsVO().getFileDTO2() == null) {  //若只有公开文档pdf
                         patentInstructionService.edit(queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getFileDTO());
+                    } else if (queueData.getUploadParamsVO().getFileDTO() == null && queueData.getUploadParamsVO().getFileDTO2() != null) {  //若只有授权文档pdf
+                        patentInstructionService.edit2(queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getFileDTO2());
+                    } else if (queueData.getUploadParamsVO().getFileDTO() != null && queueData.getUploadParamsVO().getFileDTO2() != null) {  //若同时有公开和授权两个文档pdf
+                        patentInstructionService.edit12(queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getFileDTO(), queueData.getUploadParamsVO().getFileDTO2());
                     }
 
                     sendMessage(queueData);