chendayu před 2 roky
rodič
revize
b7f6d14c5e

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

@@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
+import java.sql.SQLException;
 
 /**
  * 获取专利之星专利某部分(如权要、说明书等一项)控制层
@@ -30,7 +31,7 @@ public class GetPatentStarPartController {
 
     @Operation(summary = "根据专利号或申请号获取专利指定部分项")
     @PostMapping("/getPatentPart")
-    public String getPatentPart(@RequestBody GetPatentStarPartDTO getPatentStarPartDTO) throws IOException {
+    public String getPatentPart(@RequestBody GetPatentStarPartDTO getPatentStarPartDTO) throws IOException, SQLException {
         log.info("开始处理【根据专利号或申请号获取专利指定部分项】的请求,请求参数为:{}", getPatentStarPartDTO);
 
         PatentDTO patentPart = getPatentStarPartService.getPatentPart(getPatentStarPartDTO);

+ 4 - 0
PAS/src/main/java/cn/cslg/pas/domain/PQueueData.java

@@ -28,5 +28,9 @@ public class PQueueData implements Serializable {
      * 专利之星调用一般接口返回专利数据
      */
     private StarPatentVO starPatent;
+    /**
+     * 该专利检索专利之星接口次数(如权要或说明书第一次调用中国专利全文文本接口返回空,则num++,直到num为3)
+     */
+    private int callNum;
 
 }

+ 11 - 1
PAS/src/main/java/cn/cslg/pas/domain/PatentInstruction.java

@@ -1,9 +1,12 @@
 package cn.cslg.pas.domain;
 
 import cn.cslg.pas.common.model.SuperEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import javax.sql.rowset.serial.SerialBlob;
+
 /**
  * <p>
  * 专利说明书
@@ -25,7 +28,6 @@ public class PatentInstruction extends SuperEntity<PatentInstruction> {
      * 附件上传地址
      */
     private String url;
-
     /**
      * 专利ID
      */
@@ -56,4 +58,12 @@ public class PatentInstruction extends SuperEntity<PatentInstruction> {
      */
     private String fileName;
 
+    /**
+     * 文件流
+     */
+    //private byte[] buffer;
+    //private SerialBlob blob;
+    @TableField(exist = false)
+    private String pictureStringData;
+
 }

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

@@ -84,7 +84,7 @@ public class PatentInstructionService extends ServiceImpl<PatentInstructionMappe
     public PatentInstruction getPatentInstructionByPatentNoAndType(String patentNo, Integer type) {
         LambdaQueryWrapper<PatentInstruction> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(PatentInstruction::getType, type);
-        queryWrapper.eq(PatentInstruction::getPatentNo, patentNo);
+        queryWrapper.eq(PatentInstruction::getPatentNo, patentNo).last("Limit 1");
         return this.getOne(queryWrapper);
     }
 

+ 49 - 8
PAS/src/main/java/cn/cslg/pas/service/getPatentStarPart/GetPatentStarPartService.java

@@ -12,14 +12,23 @@ import cn.cslg.pas.domain.*;
 import cn.cslg.pas.service.outApi.PatentStarApiService;
 import cn.cslg.pas.service.upLoadPatent.ExcutePatentDataStar;
 import cn.cslg.pas.service.upLoadPatent.QuestionRecordService;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.IoUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
-
-import java.io.IOException;
+import sun.misc.BASE64Encoder;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import javax.sql.rowset.serial.SerialBlob;
+import java.io.*;
+import java.net.URL;
+import java.sql.Blob;
+import java.sql.SQLException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -42,7 +51,7 @@ public class GetPatentStarPartService {
      * @param getPatentStarPartDTO 前端传输DTO对象
      * @return 返回装载着指定专利项的对象
      */
-    public PatentDTO getPatentPart(GetPatentStarPartDTO getPatentStarPartDTO) throws IOException {
+    public PatentDTO getPatentPart(GetPatentStarPartDTO getPatentStarPartDTO) throws IOException, SQLException {
         log.info("开始处理【根据专利号或申请号获取专利指定部分项】的业务,参数为:{}", getPatentStarPartDTO);
 
         Integer patentCell = getPatentStarPartDTO.getPatentCell();
@@ -79,7 +88,7 @@ public class GetPatentStarPartService {
                 .setApplicationNo(appNo);
         UploadParamsVO uploadParamsVO = new UploadParamsVO();
         //调用"获得中国专利全文文本"接口,处理xml格式权要
-        excutePatentDataStar.setPatentClaim(starPatentVO, uploadParamsVO);
+        excutePatentDataStar.setPatentClaim(starPatentVO, uploadParamsVO, null);
 
         PatentDTO patentDTO = new PatentDTO();
         ArrayList<PatentRight> patentRights = new ArrayList<>();
@@ -100,7 +109,7 @@ public class GetPatentStarPartService {
                 .setApplicationNo(appNo);
         UploadParamsVO uploadParamsVO = new UploadParamsVO();
         //调用"获得中国专利全文文本"接口,处理xml格式说明书文本
-        excutePatentDataStar.setPatentInstructionText(starPatentVO, uploadParamsVO);
+        excutePatentDataStar.setPatentInstructionText(starPatentVO, uploadParamsVO, null);
 
         PatentDTO patentDTO = new PatentDTO();
         patentDTO.setInstruction(uploadParamsVO.getPatentInstructionText());
@@ -114,7 +123,7 @@ public class GetPatentStarPartService {
      * @param patentNo 专利号(公开号)
      * @return 返回装载着说明书pdf的对象
      */
-    public PatentDTO getInstructionPDF(String appNo, String patentNo) throws IOException {
+    public PatentDTO getInstructionPDF(String appNo, String patentNo) throws IOException, SQLException {
         String applicationNo = appNo + "";
         if (appNo.contains(".")) {
             appNo = appNo.substring(0, appNo.lastIndexOf("."));
@@ -142,8 +151,9 @@ public class GetPatentStarPartService {
 
                 PatentInstruction patentInstruction = new PatentInstruction();
                 PatentInstruction patentInstruction2 = new PatentInstruction();
-                patentInstruction.setUrl(pdfUrl1);
-                patentInstruction2.setUrl(pdfUrl2);
+
+                patentInstruction.setPictureStringData(urlToBytes(pdfUrl1));
+                patentInstruction2.setPictureStringData(urlToBytes(pdfUrl2));
                 if (pdfUrl1.contains("0A_CN_0.pdf")) {
                     patentInstruction.setType(1);
                     patentInstruction2.setType(2);
@@ -153,10 +163,12 @@ public class GetPatentStarPartService {
                 }
                 patentInstructions.add(patentInstruction);
                 patentInstructions.add(patentInstruction2);
+
             } else {  //若只有一个
                 pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("?"));
                 PatentInstruction patentInstruction = new PatentInstruction();
                 patentInstruction.setUrl(pdfUrl1);
+                patentInstruction.setPictureStringData(urlToBytes(pdfUrl1));
                 if (pdfUrl1.contains("0A_CN_0.pdf")) {
                     patentInstruction.setType(1);
                 } else {
@@ -177,6 +189,7 @@ public class GetPatentStarPartService {
 
             PatentInstruction patentInstruction = new PatentInstruction();
             patentInstruction.setUrl(pdfUrl);
+            patentInstruction.setPictureStringData(urlToBytes(pdfUrl));
             patentInstruction.setType(1);
             patentInstructions.add(patentInstruction);
 
@@ -184,6 +197,12 @@ public class GetPatentStarPartService {
 
         patentDTO.setPdf(patentInstructions);
         return patentDTO;
+        //        HttpServletResponse response = new HttpServletResponse();
+//        response.setHeader("Content-Disposition", "attachment;filename=" + patentInstruction.getFileName());
+//        ServletOutputStream out = response.getOutputStream();
+//        String fil = fileUtils.getSystemPath() + patentInstruction.getUrl();
+//        out.write(FileUtil.readBytes(fil));
+//        IoUtil.close(out);
     }
 
     /**
@@ -398,6 +417,28 @@ public class GetPatentStarPartService {
         return patentDTO;
     }
 
+    public String urlToBytes(String pdfUrl) throws IOException {
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        URL url = new URL(pdfUrl);  //想要读取的url地址
+        InputStream in = url.openStream();
+        int bytesRead;
+        byte[] buffer = new byte[8192];
+
+        //读取url地址文件
+        while ((bytesRead = in.read(buffer)) != -1) {
+            outputStream.write(buffer, 0, bytesRead);
+        }
+
+        //关闭释放流
+        in.close();
+
+        byte[] bytes = outputStream.toByteArray();
+        BASE64Encoder encoder = new BASE64Encoder();
+        String data = encoder.encode(bytes);
+
+        return data;
+    }
+
     /**
      * 根据分页信息,取同族号集合中分页区间内的同族号
      *

+ 3 - 2
PAS/src/main/java/cn/cslg/pas/service/outApi/PatentStarApiService.java

@@ -160,9 +160,10 @@ public class PatentStarApiService {
         starPatentVOS.forEach(item -> {
 
             //如果有公开号,则将公开号作为专利号
-            if (item.getPublicNo() != null && !item.getPublicNo().equals("")) {
+            if (item.getApplicationNo() != null && !item.getApplicationNo().equals("") && item.getApplicationNo().contains("CN")) {
+                item.setPatentNo(item.getApplicationNo());
+            } else if (item.getPublicNo() != null && !item.getPublicNo().equals("")) {
                 item.setPatentNo(item.getPublicNo());
-
                 //如果没有公开号,但是有公告号,则将公告号作为公开号和专利号
             } else if (item.getPublicAccreditNo() != null && !item.getPublicAccreditNo().equals("")) {
                 item.setPublicNo(item.getPublicAccreditNo());

+ 126 - 99
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcutePatentDataStar.java

@@ -498,7 +498,7 @@ public class ExcutePatentDataStar implements IExcutePatentData {
 
         try {
             //以下 ↓装载的是调用"获得中国专利著录"接口返回的专利相关数据
-            if (starPatent.getPatentNo().contains("CN")) {
+            if (appNo.contains("CN")) {
                 String chinaPatentZhuLuStr = patentStarApiService.getCnBibApi(appNo);
                 if (chinaPatentZhuLuStr != null && !chinaPatentZhuLuStr.trim().equals("") && !chinaPatentZhuLuStr.equals("{}")) {
                     List<ChinaPatentZhuLu> chinaPatentZhuLus = JSON.parseArray(chinaPatentZhuLuStr, ChinaPatentZhuLu.class);
@@ -620,11 +620,11 @@ public class ExcutePatentDataStar implements IExcutePatentData {
                     uploadParamsVO.getPatent().setPriorityNo(worldPatentZhuLu.getPr());
                 }
                 //装载标题
-                if (uploadParamsVO.getPatent().getName() == null && uploadParamsVO.getPatent().getName().equals("")) {
+                if (uploadParamsVO.getPatent().getName() == null || uploadParamsVO.getPatent().getName().equals("")) {
                     uploadParamsVO.getPatent().setName(worldPatentZhuLu.getTitle());
                 }
                 //装载摘要
-                if (uploadParamsVO.getPatent().getAbstractStr() == null && uploadParamsVO.getPatent().getAbstractStr().equals("")) {
+                if (uploadParamsVO.getPatent().getAbstractStr() == null || uploadParamsVO.getPatent().getAbstractStr().equals("")) {
                     uploadParamsVO.getPatent().setAbstractStr(worldPatentZhuLu.getAbstract());
                 }
 
@@ -651,41 +651,43 @@ public class ExcutePatentDataStar implements IExcutePatentData {
 
         //以下 ↓装载的是调用"获得中国专利法律状态"接口返回的专利相关数据
         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);
+            if (appNo.contains("CN")) {
+                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);
                 }
             }
 
@@ -701,50 +703,62 @@ public class ExcutePatentDataStar implements IExcutePatentData {
      * @param starPatent     专利之星著录对象
      * @param uploadParamsVO 专利实体类对象
      */
-    public void setPatentClaim(StarPatentVO starPatent, UploadParamsVO uploadParamsVO) throws IOException {
+    public Boolean setPatentClaim(StarPatentVO starPatent, UploadParamsVO uploadParamsVO, PQueueData pQueueData) throws IOException {
         try {
-            String applicationNo = starPatent.getApplicationNo() + "";
-            String appNo;
-            if (starPatent.getApplicationNo().contains(".")) {
-                appNo = starPatent.getApplicationNo().substring(0, starPatent.getApplicationNo().lastIndexOf("."));
-            } else {
-                appNo = starPatent.getApplicationNo();
-            }
-            //根据申请号调用"获得中国专利全文文本"接口,获得包含各种xml标签的专利全文内容的长字符串 cnFullXmlStr
-            String cnFullXmlStr = patentStarApiService.getCnFullXmlApi(appNo);
+            if (starPatent.getApplicationNo().contains("CN")) {
+                String applicationNo = starPatent.getApplicationNo() + "";
+                String appNo;
+                if (starPatent.getApplicationNo().contains(".")) {
+                    appNo = starPatent.getApplicationNo().substring(0, starPatent.getApplicationNo().lastIndexOf("."));
+                } else {
+                    appNo = starPatent.getApplicationNo();
+                }
 
-            //若没有取到全文文本,即取不到权要,则将当前申请号或专利号和备注信息记录到问题记录表
-            if (cnFullXmlStr.equals("")) {
-                recordQuestionPatent(applicationNo, 2);
-                return;
-            }
+                //根据申请号调用"获得中国专利全文文本"接口,获得包含各种xml标签的专利全文内容的长字符串 cnFullXmlStr
+                String cnFullXmlStr = patentStarApiService.getCnFullXmlApi(appNo);
 
-            //使用正则表达式拼接出权要原文
-            String regex = "(?<=<claim id=.{1,110}>)[\\w\\W]+?(?=</claim>)";
-            Pattern compile = Pattern.compile(regex);
-            Matcher matcher = compile.matcher(cnFullXmlStr);
-            StringBuilder builder = new StringBuilder();
-            while (matcher.find()) {
-                String macherGroup = matcher.group();
-                String right = macherGroup.replaceAll("<!--.*?-->", "").trim();
-                right = right.replaceAll("<.*?>", "").trim();
-                builder.append(right).append("\r\n");
-            }
+                //若没有取到全文文本即取不到权要,则将该专利检索专利之星接口次数+1,重新丢入权要生产队列,将当前申请号或专利号和备注信息记录到问题记录表,返回false
+                if (cnFullXmlStr.equals("")) {
+                    if (pQueueData != null && pQueueData.getCallNum() < 2) {
+                        pQueueData.setCallNum(pQueueData.getCallNum() + 1);
+                        pantentQueueService.rightToPQueue(pQueueData);
+                        return false;
+                    }
+                    recordQuestionPatent(applicationNo, 2);
+                    return true;
+                }
+
+                //使用正则表达式拼接出权要原文
+                String regex = "(?<=<claim id=.{1,110}>)[\\w\\W]+?(?=</claim>)";
+                Pattern compile = Pattern.compile(regex);
+                Matcher matcher = compile.matcher(cnFullXmlStr);
+                StringBuilder builder = new StringBuilder();
+                while (matcher.find()) {
+                    String macherGroup = matcher.group();
+                    String right = macherGroup.replaceAll("<!--.*?-->", "").trim();
+                    right = right.replaceAll("<.*?>", "").trim();
+                    builder.append(right).append("\r\n");
+                }
 
-            String patentRightText = builder + "";
+                String patentRightText = builder + "";
 
-            //使用工具类去除字符串文本中的所有HTML格式标签
-            patentRightText = RemoveHtmlTagsUtils.removeHtmlTags(patentRightText);
-            patentRightText = patentRightText.trim();
+                //使用工具类去除字符串文本中的所有HTML格式标签
+                patentRightText = RemoveHtmlTagsUtils.removeHtmlTags(patentRightText);
+                patentRightText = patentRightText.trim();
+
+                //装载权利要求原文
+                PatentRight patentRight = new PatentRight();
+                patentRight.setContent(patentRightText);
+                uploadParamsVO.setPatentRight(patentRight);
+            }
 
-            //装载权利要求原文
-            PatentRight patentRight = new PatentRight();
-            patentRight.setContent(patentRightText);
-            uploadParamsVO.setPatentRight(patentRight);
         } catch (Exception e) {
             e.printStackTrace();
+            return true;
         }
 
+        return true;
+
     }
 
     /**
@@ -753,44 +767,55 @@ public class ExcutePatentDataStar implements IExcutePatentData {
      * @param starPatent     专利之星著录对象
      * @param uploadParamsVO 专利实体类对象
      */
-    public void setPatentInstructionText(StarPatentVO starPatent, UploadParamsVO uploadParamsVO) throws IOException {
+    public Boolean setPatentInstructionText(StarPatentVO starPatent, UploadParamsVO uploadParamsVO, PQueueData pQueueData) throws IOException {
         try {
-            String applicationNo = starPatent.getApplicationNo() + "";
-            String appNo;
-            if (starPatent.getApplicationNo().contains(".")) {
-                appNo = starPatent.getApplicationNo().substring(0, starPatent.getApplicationNo().lastIndexOf("."));
-            } else {
-                appNo = starPatent.getApplicationNo();
-            }
-            //根据申请号调用"获得中国专利全文文本"接口,获得包含各种xml标签的专利全文内容的长字符串 cnFullXmlStr
-            String cnFullXmlStr = patentStarApiService.getCnFullXmlApi(appNo);
+            if (starPatent.getApplicationNo().contains("CN")) {
+                String applicationNo = starPatent.getApplicationNo() + "";
+                String appNo;
+                if (starPatent.getApplicationNo().contains(".")) {
+                    appNo = starPatent.getApplicationNo().substring(0, starPatent.getApplicationNo().lastIndexOf("."));
+                } else {
+                    appNo = starPatent.getApplicationNo();
+                }
 
-            //若没有取到全文文本,即取不到说明书文本,则将当前申请号或专利号和备注信息记录到问题记录表
-            if (cnFullXmlStr.equals("")) {
-                recordQuestionPatent(applicationNo, 3);
-                return;
-            }
+                //根据申请号调用"获得中国专利全文文本"接口,获得包含各种xml标签的专利全文内容的长字符串 cnFullXmlStr
+                String cnFullXmlStr = patentStarApiService.getCnFullXmlApi(appNo);
+
+                //若没有取到全文文本,即取不到说明书文本,则将当前申请号或专利号和备注信息记录到问题记录表
+                if (cnFullXmlStr.equals("")) {
+                    if (pQueueData != null && pQueueData.getCallNum() < 2) {
+                        pQueueData.setCallNum(pQueueData.getCallNum() + 1);
+                        pantentQueueService.rightToPQueue(pQueueData);
+                        return false;
+                    }
+                    recordQuestionPatent(applicationNo, 3);
+                    return true;
+                }
+
+                //使用正则表达式拼接出说明书文本全文
+                String regex = "(?<=<description>)[\\w\\W]+?(?=</description>)";
+                Pattern compile = Pattern.compile(regex);
+                Matcher matcher = compile.matcher(cnFullXmlStr);
+                String text = "";
+                while (matcher.find()) {
+                    text = matcher.group();
+                    text = text.replaceAll("<invention-title[^>]*>.*?(\\n{0,}|\\s{0,}?)</invention-title>", "");
+                    text = text.replaceAll("<br/>", "");
+                    text = text.replaceAll("\\s", "");
+                }
 
-            //使用正则表达式拼接出说明书文本全文
-            String regex = "(?<=<description>)[\\w\\W]+?(?=</description>)";
-            Pattern compile = Pattern.compile(regex);
-            Matcher matcher = compile.matcher(cnFullXmlStr);
-            String text = "";
-            while (matcher.find()) {
-                text = matcher.group();
-                text = text.replaceAll("<invention-title[^>]*>.*?(\\n{0,}|\\s{0,}?)</invention-title>", "");
-                text = text.replaceAll("<br/>", "");
-                text = text.replaceAll("\\s", "");
+                //装载说明书文本全文
+                PatentInstructionText patentInstructionText = new PatentInstructionText();
+                patentInstructionText.setManual(text.trim());
+                uploadParamsVO.setPatentInstructionText(patentInstructionText);
             }
 
-            //装载说明书文本全文
-            PatentInstructionText patentInstructionText = new PatentInstructionText();
-            patentInstructionText.setManual(text.trim());
-            uploadParamsVO.setPatentInstructionText(patentInstructionText);
         } catch (Exception e) {
             e.printStackTrace();
         }
 
+        return true;
+
     }
 
     /**
@@ -822,8 +847,10 @@ public class ExcutePatentDataStar implements IExcutePatentData {
                         pdfUrl1 = pdfUrlArr[0].substring(pdfUrlArr[0].indexOf("http"), pdfUrlArr[0].indexOf("?"));
                         pdfUrlArr[1] = "http" + pdfUrlArr[1];
                         pdfUrl2 = pdfUrlArr[1].substring(pdfUrlArr[1].indexOf("http"), pdfUrlArr[1].indexOf("?"));
+
                         UploadFileDTO fileDTO = downLoadPdf(pdfUrl1);
                         UploadFileDTO fileDTO2 = downLoadPdf(pdfUrl2);
+
                         if (pdfUrl1.contains("0A_CN_0.pdf")) {
                             uploadParamsVO.setPdf1FileDTO(fileDTO);
                             uploadParamsVO.setPdf2FileDTO(fileDTO2);

+ 11 - 8
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/PantentQueueService.java

@@ -205,18 +205,21 @@ public class PantentQueueService {
                             .setUploadParamsVO(pQueueData.getUploadParamsVO());
 
                     //专利之星
+                    Boolean canSendMessage = true;
                     if (task.getType() == 4) {
-                        excutePatentDataStar.setPatentClaim(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO());
+                        canSendMessage = excutePatentDataStar.setPatentClaim(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO(), pQueueData);
                     }
 
                     queueData.setUploadParamsVO(pQueueData.getUploadParamsVO());
 
-                    //装载完成,将其丢入权要消费者队列,并唤醒权要消费者线程
-                    patentRightQueueList.add(queueData);
-                    if (patentRightLock.tryLock()) {
-                        //patentRightLock.lock();
-                        patentRightCondition.signalAll();
-                        patentRightLock.unlock();
+                    if (canSendMessage) {
+                        //装载完成,将其丢入权要消费者队列,并唤醒权要消费者线程
+                        patentRightQueueList.add(queueData);
+                        if (patentRightLock.tryLock()) {
+                            //patentRightLock.lock();
+                            patentRightCondition.signalAll();
+                            patentRightLock.unlock();
+                        }
                     }
 
                 } else {
@@ -251,7 +254,7 @@ public class PantentQueueService {
 
                     //专利之星
                     if (task.getType() == 4) {
-                        excutePatentDataStar.setPatentInstructionText(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO());
+                        excutePatentDataStar.setPatentInstructionText(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO(), pQueueData);
                     }
 
                     queueData.setUploadParamsVO(pQueueData.getUploadParamsVO());

+ 15 - 15
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/UploadTaskService.java

@@ -74,7 +74,13 @@ public class UploadTaskService {
     public TaskCondition addPatentStarTask(TaskAddNewDTO taskAddNewDTO) throws IOException {
         log.info("开始处理【新增专利之星下载接口导入专利】的业务,参数为:{}", taskAddNewDTO);
 
-        //检查任务合法性1(检查要导入的专题库或报告是否存在)
+        //检查任务合法性1(检查是否有下载字段)
+        List<String> cells = taskAddNewDTO.getConfigCells();
+        if (cells == null || cells.size() == 0) {
+            ThrowException.throwXiaoShiException("请选择至少一个需要下载的字段");
+        }
+
+        //检查任务合法性2(检查专题库是否存在)
         if (taskAddNewDTO.getProjectId() != null) {
             Project project = projectService.getById(taskAddNewDTO.getProjectId());
             if (project == null) {
@@ -82,7 +88,7 @@ public class UploadTaskService {
             }
         }
 
-        //检查任务合法性2(根据检索式信息调用一般检索接口,看是否能检索出专利)
+        //检查任务合法性3(根据检索式进行一次检索看是否能检索出专利)
         PatentStarListDto patentStarListDto = new PatentStarListDto()
                 .setCurrentQuery(taskAddNewDTO.getConditions())
                 .setOrderBy(taskAddNewDTO.getOrderBy())
@@ -92,11 +98,10 @@ public class UploadTaskService {
                 .setDBType(taskAddNewDTO.getDBType());
         Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
         if (resultMap == null || (Integer) resultMap.get("total") == 0) {
-            ThrowException.throwXiaoShiException("未检索到相关专利");
+            ThrowException.throwXiaoShiException("该检索信息未检索出相关专利");
         }
 
-
-        //获取专利总数量
+        //计算要下载的专利总数量
         Integer total;
         if (taskAddNewDTO.getEndNumber() > 0) {
             total = taskAddNewDTO.getEndNumber() - taskAddNewDTO.getStartNumber() + 1;
@@ -110,7 +115,7 @@ public class UploadTaskService {
             total = taskAddNewDTO.getIsAddPatentNos().size();
         }
 
-        //新增任务与任务条件关联表("asso_osTask_qrtzTask")数据
+        //任务条件表("task_condition")新增数据
         TaskCondition taskCondition = new TaskCondition();
         taskCondition
                 .setTaskType(taskAddNewDTO.getTaskType())
@@ -125,20 +130,15 @@ public class UploadTaskService {
                 .setDBType(taskAddNewDTO.getDBType())
                 .setStartNumber(taskAddNewDTO.getStartNumber())
                 .setEndNumber(taskAddNewDTO.getEndNumber())
-                .setIsAddType(taskAddNewDTO.getIsAddType());
+                .setIsAddType(taskAddNewDTO.getIsAddType())
+                .setConfigCells(String.join(",", cells));
         if (taskAddNewDTO.getIsAddPatentNos() != null && taskAddNewDTO.getIsAddPatentNos().size() > 0) {
             taskCondition.setIsAddPatentNos(StringUtils.join(taskAddNewDTO.getIsAddPatentNos(), ","));
         }
         if (taskAddNewDTO.getIsDeletePatentNos() != null && taskAddNewDTO.getIsDeletePatentNos().size() > 0) {
             taskCondition.setIsDeletePatentNos(StringUtils.join(taskAddNewDTO.getIsDeletePatentNos(), ","));
         }
-        List<String> cells = taskAddNewDTO.getConfigCells();
-        if (cells == null) {
-            taskCondition.setConfigCells("");
-        } else {
-            taskCondition.setConfigCells(String.join(",", cells));
-        }
-        log.info("任务与任务条件关联表(asso_osTask_qrtzTask)新增数据");
+        log.info("任务条件表新增数据");
         taskConditionService.save(taskCondition);
 
         //任务表新增任务
@@ -269,7 +269,7 @@ public class UploadTaskService {
         }
         //将本系统不包含的专利拼接成条件
         String patentNoCondition = StringUtils.join(patentNos, " OR ");
-        String conditions = "PN=(" + patentNoCondition + ") OR GN=(" + patentNoCondition + ")";
+        String conditions = "AN=(" + patentNoCondition + ") OR PN=(" + patentNoCondition + ") OR GN=(" + patentNoCondition + ")";
         return conditions;
     }