Browse Source

3/1 修改查询pdf文档

lwhhszx 1 year ago
parent
commit
0a0f63a896

+ 9 - 3
src/main/java/cn/cslg/pas/common/utils/GenerateObjectUtil.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
 import org.springframework.cglib.beans.BeanGenerator;
 import org.springframework.stereotype.Component;
 
+import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.List;
@@ -16,9 +17,14 @@ public class GenerateObjectUtil {
 
 
     public static void setObjectProperty(Object obj, String propertyName, Object value) throws Exception {
-        String setMethodName = "set" + propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1);
-        Method method = obj.getClass().getMethod(setMethodName, value.getClass());
-        method.invoke(obj, value);
+//        String setMethodName = "set" + propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1);
+        Field field = obj.getClass().getDeclaredField(propertyName);
+       field.setAccessible(true);
+       if(value!=null&&field.getType()!=value.getClass()){
+           value=null;
+       }
+       field.set(obj,value);
+
     }
 
     /**

+ 2 - 2
src/main/java/cn/cslg/pas/common/utils/PatentRightUtils.java

@@ -83,8 +83,8 @@ public class PatentRightUtils {
                 if (regex.equals("")) {
                     content = content.replaceAll("@", "");
                     contentOut = contentOut.replaceAll("@", "");
-                    strs = content.split("。");
-                    strsOut = contentOut.split("。");
+                    strs = content.split("(?<=)");
+                    strsOut = contentOut.split("(?<=)");
                     //若匹配到,则根据不同情形拆分
                 } else {
                     Matcher matcher = Pattern.compile(regex).matcher(content);

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

@@ -129,8 +129,8 @@ public class PatentStarController {
 
     @GetMapping("/getExternalTextPdf")
     @Operation(summary = "获得中国专利pdf全文")
-    public Response getExternalTextPdf(String appNo,String rowApplicationNo) throws IOException {
-        List<InnerPatentPdfDTO> pdfDTOS = patentStarApiService.getExternalTextPdf(appNo,rowApplicationNo);
+    public Response getExternalTextPdf(String appNo,String rowApplicationNo,String publicNo,String grantNo ) throws IOException {
+        List<InnerPatentPdfDTO> pdfDTOS = patentStarApiService.getExternalTextPdf(appNo,rowApplicationNo,publicNo,grantNo);
         return Response.success(pdfDTOS);
     }
 

+ 4 - 1
src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java

@@ -334,6 +334,7 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Object updateMessage(Object object) {
         //获取登陆人信息 用于设置创建人
         PersonnelVO personnelVO = new PersonnelVO();
@@ -345,7 +346,6 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
         String userId = personnelVO.getId();
         PatentDigProjectUpdateDTO projectUpdateDTO = (PatentDigProjectUpdateDTO) object;
         PatentDigProject patentDigProject = new PatentDigProject();
-        BeanUtils.copyProperties(projectUpdateDTO, patentDigProject);
         Project project = projectService.getById(projectUpdateDTO.getId());
         project.setHeadId(projectUpdateDTO.getHeadId());
         project.setDescription(projectUpdateDTO.getDescription());
@@ -428,6 +428,9 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
                 patentDigProject.setRdProjectId(rdProject.getId());
             }
 
+
+            //更新专利挖掘项目
+        patentDigProject.updateById();
             //移除和附件关联
             LambdaQueryWrapper<AssoProjectFile> assoQueryWrapper = new LambdaQueryWrapper<>();
             assoQueryWrapper.eq(AssoProjectFile::getProjectId, projectUpdateDTO.getId());

+ 48 - 43
src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java

@@ -105,8 +105,7 @@ public class PatentStarApiService {
             retrieveRecord.setCreateId(personnelVO.getId());
             retrieveRecord.setTenantId(personnelVO.getTenantId());
             retrieveRecord.insert();
-        }
-        else {
+        } else {
             retrieveRecord.updateById();
         }
         List<StarPatentVO> starPatentVOS = (List<StarPatentVO>) map.get("records");
@@ -240,7 +239,7 @@ public class PatentStarApiService {
         DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");
         String startStr = formatter.print(PatentStarListDTO.getStartTime());
         String endStr = formatter.print(PatentStarListDTO.getEndTime());
-        String cond = " AND AD="+startStr + "~" + endStr;
+        String cond = " AND AD=" + startStr + "~" + endStr;
         Integer len = PatentStarListDTO.getOrginCondition().length();
         StringBuilder stringBuilder = new StringBuilder(PatentStarListDTO.getOrginCondition());
         stringBuilder.insert(len - 1, cond);
@@ -806,7 +805,7 @@ public class PatentStarApiService {
 
     public StarPatentVO getPatentByNo(String patentNo) {
         StarPatentVO starPatentVO = null;
-        String condition = "AN=(" + patentNo + ") OR PN=(" + patentNo + ") OR GN=(" + patentNo + ") OR ANO=("+patentNo+")";
+        String condition = "AN=(" + patentNo + ") OR PN=(" + patentNo + ") OR GN=(" + patentNo + ") OR ANO=(" + patentNo + ")";
         String dbType = "CN";
         if (!patentNo.startsWith("CN")) {
             dbType = "WD";
@@ -1102,7 +1101,7 @@ public class PatentStarApiService {
      * @return
      * @throws IOException
      */
-    public List<InnerPatentPdfDTO> getExternalTextPdf(String appNo, String rowApplicationNo) throws IOException {
+    public List<InnerPatentPdfDTO> getExternalTextPdf(String appNo, String rowApplicationNo, String publicNo, String grantNo) throws IOException {
         List<InnerPatentPdfDTO> list = new ArrayList<>();
         String pdfUrl = "", pdfUrl1 = "", pdfUrl2 = "";
         if (StringUtils.isNotEmpty(appNo) && appNo.contains("CN")) {
@@ -1116,60 +1115,66 @@ public class PatentStarApiService {
                     pdfUrl2 = pdfUrlArr[1].substring(pdfUrlArr[1].indexOf("http"), pdfUrlArr[1].indexOf("|"));
 
                     if (pdfUrl1.contains("0A_CN_0.pdf")) {
-                        String guid1 = FormatUtil.getPDFFormat(appNo, 0);
-                        if (StringUtils.isNotEmpty(guid1)) {
-                            InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
-                            dto.setPdfGuid(guid1);
-                            dto.setType(0);
-                            list.add(dto);
-                        }
+
+                        InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
+                        dto.setPdfGuid(pdfUrl1);
+                        dto.setType(0);
+                        list.add(dto);
+
                         //授权说明书pdf
-                        String guid2 = FormatUtil.getPDFFormat(appNo, 1);
-                        if (StringUtils.isNotEmpty(guid2)) {
-                            InnerPatentPdfDTO dto1 = new InnerPatentPdfDTO();
-                            dto1.setPdfGuid(guid2);
-                            dto1.setType(1);
-                            list.add(dto1);
-                        }
+                        InnerPatentPdfDTO dto1 = new InnerPatentPdfDTO();
+                        dto1.setPdfGuid(pdfUrl2);
+                        dto1.setType(1);
+                        list.add(dto1);
                     } else {
-                        String guid1 = FormatUtil.getPDFFormat(appNo, 1);
-                        if (StringUtils.isNotEmpty(guid1)) {
-                            InnerPatentPdfDTO dto1 = new InnerPatentPdfDTO();
-                            dto1.setPdfGuid(guid1);
-                            dto1.setType(1);
-                            list.add(dto1);
-                        }
-                        String guid2 = FormatUtil.getPDFFormat(appNo, 0);
-                        if (StringUtils.isNotEmpty(guid2)) {
-                            InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
-                            dto.setPdfGuid(guid2);
-                            dto.setType(0);
-                            list.add(dto);
-                        }
+                        InnerPatentPdfDTO dto1 = new InnerPatentPdfDTO();
+                        dto1.setPdfGuid(pdfUrl1);
+                        dto1.setType(1);
+                        list.add(dto1);
+
+                        InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
+                        dto.setPdfGuid(pdfUrl2);
+                        dto.setType(0);
+                        list.add(dto);
                     }
-                } else {  //若只有一个
+                }
+                else {  //若只有一个
                     pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"));
-//                    pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("?"));
                     if (pdfUrl1.contains("0A_CN_0.pdf")) {
-                        String guid1 = FormatUtil.getPDFFormat(appNo, 0);
-                        if (StringUtils.isNotEmpty(guid1)) {
+
                             InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
-                            dto.setPdfGuid(guid1);
+                            dto.setPdfGuid(pdfUrl1);
                             dto.setType(0);
                             list.add(dto);
-                        }
+
                     } else {
-                        String guid1 = FormatUtil.getPDFFormat(appNo, 1);
-                        if (StringUtils.isNotEmpty(guid1)) {
                             InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
-                            dto.setPdfGuid(guid1);
+                            dto.setPdfGuid(pdfUrl1);
                             dto.setType(1);
                             list.add(dto);
-                        }
+
                     }
                 }
             }
+        } else {
+            String usedPatentNo;
+            if (publicNo != null && !publicNo.equals("")) {
+                usedPatentNo =publicNo;
+            } else {
+                usedPatentNo = grantNo;
+            }
+            if(usedPatentNo!=null){
+                pdfUrl = this.getEnPdfApi(usedPatentNo);
+                if (!pdfUrl.equals("")) {
+                    InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
+                    dto.setPdfGuid(pdfUrl);
+                    dto.setType(0);
+                    list.add(dto);
+                }
+            }
+
         }
+
         return list;
     }
 

+ 2 - 1
src/main/java/cn/cslg/pas/service/importPatent/GetRightAndFullTextFromWebThread.java

@@ -65,7 +65,8 @@ public class GetRightAndFullTextFromWebThread extends Thread {
                     patentStarApiService = applicationContext.getBean(PatentStarApiService.class);
                     String cnFullXmlStr = patentStarApiService.getCnFullXmlApi(starPatentVO.getRowApplicationNo());
                     this.loadClaim(uploadPatentWebDTO, cnFullXmlStr);
-                    this.loadFullText(uploadPatentWebDTO, cnFullXmlStr);
+                    ImportSinglePatentService importSinglePatentService =applicationContext.getBean(ImportSinglePatentService.class);
+                    importSinglePatentService.loadFullText(uploadPatentWebDTO, cnFullXmlStr);
                 }
                 //加入es保存队列
                 importFromWebToEsService.loadPatentMessageDone(uploadPatentWebDTO);

+ 40 - 23
src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java

@@ -58,6 +58,7 @@ public class ImportSinglePatentService {
     private CacheUtils cacheUtils;
     @Autowired
     private LoginUtils loginUtils;
+
     public StarPatentVO getPatentFromWeb(String patentNo) {
         StarPatentVO starPatentVO = null;
         String dbType = "";
@@ -576,6 +577,11 @@ public class ImportSinglePatentService {
 
     }
 
+    public void loadFullText(UploadPatentWebDTO uploadPatentWebDTO, String cnFullXmlStr) {
+        Patent patent = uploadPatentWebDTO.getPatent();
+        this.loadFullText(patent, cnFullXmlStr);
+    }
+
     //装载说明书文档
     private void loadFullText(Patent patent, String cnFullXmlStr) {
         try {
@@ -598,18 +604,16 @@ public class ImportSinglePatentService {
             Integer count = 1;
             for (Element item : elements) {
                 String fullText = item.getText().replaceAll("<br/>", "");
-                if (!fullText.trim().equals("技术领域")
-                        && !fullText.trim().equals("发明内容")
-                        && !fullText.trim().equals("附图说明")
-                        && !fullText.trim().equals("具体实施方式")
-                        && !fullText.trim().equals("背景技术")
-                        && !fullText.trim().equals("实用新型内容")) {
+                List<String> ts = this.getTitleStrs();
+                if (!ts.contains(fullText.trim())) {
                     String formattedNum = String.format("%04d", count);
                     fullText = "[" + formattedNum + "]" + fullText;
                     count++;
                 }
                 fullText = fullText.replaceAll("\r\n|\r|\n| ", "");
-                fullTexts.add(fullText);
+                if (!fullText.trim().equals("")) {
+                    fullTexts.add(fullText);
+                }
             }
             String fullText = "";
             if (fullTexts.size() != 0) {
@@ -688,8 +692,7 @@ public class ImportSinglePatentService {
                 }
                 //根据专利号调用"获得世界专利pdf"接口,获得pdf的url地址
             }
-        }
-        else {
+        } else {
             pdfUrl = patentStarApiService.getEnPdfApi(usedPatentNo);
             //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
 //                    if (pdfUrl.equals("") || pdfUrl.equals("{}")) {
@@ -744,8 +747,7 @@ public class ImportSinglePatentService {
         Patent patent = new Patent();
         //装载基本信息
 
-            patent = this.getPatentCataloguingFromWeb(starPatentVO);
-
+        patent = this.getPatentCataloguingFromWeb(starPatentVO);
 
 
         //装载图片
@@ -765,7 +767,7 @@ public class ImportSinglePatentService {
         if (contents.contains(2) || contents.contains(3)) {
             this.getFullXmlStr(patent, starPatentVO, contents);
             if (contents.contains(3) && projectId != null) {
-                this.updateReportRight(patent,projectId,patentNo);
+                this.updateReportRight(patent, projectId, patentNo);
 
             }
         }
@@ -777,8 +779,8 @@ public class ImportSinglePatentService {
         return true;
     }
 
-    private void updateReportRight(Patent patent, Integer projectId,String patentNo) {
-        PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
+    private void updateReportRight(Patent patent, Integer projectId, String patentNo) {
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         //根据projectId 查询报告
         LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ReportProject::getProjectId, projectId);
@@ -795,7 +797,7 @@ public class ImportSinglePatentService {
         queryWrapper1.eq(PatentClaim::getProjectId, projectId);
         queryWrapper1.isNotNull(PatentClaim::getSysOrder);
         List<PatentClaim> patentClaims = patentClaimService.list(queryWrapper1);
-        List<Integer> ids =patentClaims.stream().map(PatentClaim::getId).collect(Collectors.toList());
+        List<Integer> ids = patentClaims.stream().map(PatentClaim::getId).collect(Collectors.toList());
 
         List<Text> claims = patent.getClaim();
         if (claims == null || claims.size() == 0) {
@@ -814,11 +816,11 @@ public class ImportSinglePatentService {
         if (rePatentClaims == null || rePatentClaims.size() == 0) {
             return;
         }
-          List<PatentClaim> patentClaims1 = new ArrayList<>();
-        rePatentClaims.forEach(item->{
-            PatentClaim patentClaim =patentClaims.stream().filter(i->i.getSysOrder().equals(item.getSort())).findFirst().orElse(null);
-            if(patentClaim==null){
-                PatentClaim patentClaim1 =new PatentClaim();
+        List<PatentClaim> patentClaims1 = new ArrayList<>();
+        rePatentClaims.forEach(item -> {
+            PatentClaim patentClaim = patentClaims.stream().filter(i -> i.getSysOrder().equals(item.getSort())).findFirst().orElse(null);
+            if (patentClaim == null) {
+                PatentClaim patentClaim1 = new PatentClaim();
                 patentClaim1.setProjectId(projectId);
                 patentClaim1.setContentType(0);
                 patentClaim1.setClaimType(item.getType());
@@ -827,8 +829,7 @@ public class ImportSinglePatentService {
                 patentClaim1.setSysOrder(item.getSort());
                 patentClaim1.setCreateId(personnelVO.getId());
                 patentClaims1.add(patentClaim1);
-            }
-            else {
+            } else {
                 patentClaim.setClaimType(item.getType());
                 patentClaim.setContent(item.getContent());
                 patentClaim.setParentOrder(item.getParentSort());
@@ -837,10 +838,26 @@ public class ImportSinglePatentService {
             }
         });
         patentClaimService.saveOrUpdateBatch(patentClaims1);
-        if(ids!=null&&ids.size()>0){
+        if (ids != null && ids.size() > 0) {
             patentClaimService.removeBatchByIds(ids);
         }
 
     }
 
+    private List<String> getTitleStrs() {
+        String t1 = "技术领域";
+        String t2 = "发明内容";
+        String t3 = "附图说明";
+        String t4 = "具体实施方式";
+        String t5 = "背景技术";
+        String t6 = "实用新型内容";
+        String t7 = "【技术领域】";
+        String t8 = "【背景技术】";
+        String t9 = "【发明内容】";
+        String t10 = "【附图说明】";
+        String t11 = "【具体实施方式】";
+        List<String> ts = Arrays.asList(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11);
+        return ts;
+
+    }
 }