瀏覽代碼

Merge remote-tracking branch 'origin/master'

lwhhszx 1 年之前
父節點
當前提交
165877408f

+ 5 - 3
src/main/java/cn/cslg/pas/controller/FeatureController.java

@@ -7,6 +7,7 @@ import cn.cslg.pas.common.dto.invalidDTO.QueryClaimSplitHistoryDTO;
 import cn.cslg.pas.common.dto.invalidDTO.UpdateFeatureDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.PatentRightTree;
 import cn.cslg.pas.common.vo.business.SplitVO;
 import cn.cslg.pas.domain.business.ReportProject;
 import cn.cslg.pas.exception.XiaoShiException;
@@ -94,13 +95,14 @@ public class FeatureController {
     @Operation(summary = "查询权要树")
     @GetMapping("/getPatentRightTree")
     public Response getPatentRightTree(String patentNo,String appNo) throws Exception {
+        Records records = new Records();
         try {
-            Records records = new Records();
-            records.setData(featureService.getPatentRightTree(patentNo,appNo));
-            return Response.success(records);
+            List<PatentRightTree> list = featureService.getPatentRightTree(patentNo, appNo);
+            records.setData(list);
         } catch (Exception e) {
             return Response.error(e.getMessage());
         }
+        return Response.success(records);
 
     }
 

+ 65 - 45
src/main/java/cn/cslg/pas/service/business/FeatureService.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.TreeBuild;
+import cn.cslg.pas.common.dto.PatentColumnDTO;
 import cn.cslg.pas.common.dto.QueryPatentClaimDTO;
 import cn.cslg.pas.common.dto.QuerySplitDTO;
 import cn.cslg.pas.common.dto.business.SelectClaimDTO;
@@ -16,6 +17,7 @@ import cn.cslg.pas.common.vo.business.SplitVO;
 import cn.cslg.pas.common.vo.invalidVO.QueryClaimSplitHistoryVO;
 import cn.cslg.pas.domain.business.*;
 import cn.cslg.pas.domain.es.PatentTranslate;
+import cn.cslg.pas.domain.es.Text;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.FeatureMapper;
 import cn.cslg.pas.service.ClaimMessageService;
@@ -30,6 +32,7 @@ import co.elastic.clients.elasticsearch.core.SearchRequest;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -285,22 +288,39 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
     public List<PatentRightTree> getPatentRightTree(String patentNo, String appNo) {
         try {
             List<RePatentClaim> patentRights = this.getRightListByNo(patentNo, appNo);
+            Long total = translateService.getTranslateByPatentNo(patentNo);
+            if (total < 1) {
+                PatentColumnDTO columnDTO = translateService.getPatentByPatentNo(patentNo);
+                List<Text> claim = columnDTO.getClaim();
+                if (!CollectionUtils.isEmpty(claim)) {
+                    Text text = claim.get(0);
+                    for (RePatentClaim rePatentClaim : patentRights) {
+                        if (rePatentClaim.getContent().contains("&nbsp;")) {
+                            String replace = rePatentClaim.getContent().replace("&nbsp;", " ");
+                            rePatentClaim.setContent(replace);
+                        }
+                        //原文
+                        translateService.loadingTranslate(patentNo, "3", text.getLanguage(), true,
+                                rePatentClaim.getSort(), rePatentClaim.getParentSort(), rePatentClaim.getContent());
+                    }
+                }
+            }
 
             List<PatentRightTree> treeNodeList = new ArrayList<>();
             //装载权要原文
-            PatentRightParams params = new PatentRightParams();
-            params.setPatentNo(patentNo);
-            params.setContent("");
+//            PatentRightParams params = new PatentRightParams();
+//            params.setPatentNo(patentNo);
+//            params.setContent("");
 
 
             //判断若处理后的权要集合只有1个元素并且类型type=-1、排序号sort=-1,则表示本次拆分失败,则直接返回整个权要
-            if (patentRights.size() == 1 && patentRights.get(0).getType() == -1 && patentRights.get(0).getSort() == -1) {
+            if (patentRights.size() == 1 && (patentRights.get(0).getType() == null || patentRights.get(0).getType() == -1) && patentRights.get(0).getSort() == -1) {
                 List<String> list = translateService.getTranslateOrder(patentNo, patentRights.get(0).getSort());
                 String translateContent = "";
                 if (!CollectionUtils.isEmpty(list)) {
                     translateContent = list.get(0);
                 }
-                treeNodeList.add(new PatentRightTree(patentRights.get(0).getSort(), null, patentRights.get(0).getContent(),translateContent));
+                treeNodeList.add(new PatentRightTree(patentRights.get(0).getSort(), null, patentRights.get(0).getContent(), translateContent));
                 return treeNodeList;
             }
             List<PatentRightContent> patentRightContents = this.loadPatentRightContent(patentRights);
@@ -323,7 +343,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
             return treeNodeList;
 
         } catch (Exception e) {
-            throw new XiaoShiException("系统错误");
+            throw new XiaoShiException(e.getMessage());
         }
     }
 
@@ -566,7 +586,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
         if (patentSplitMessage == null) {
             throw new XiaoShiException("未进行拆分过");
         }
-        List<Integer> ids = this.saveFeatures(features, patentSplitMessage.getId(), projectId,signPatentNo);
+        List<Integer> ids = this.saveFeatures(features, patentSplitMessage.getId(), projectId, signPatentNo);
         return ids;
     }
 
@@ -579,7 +599,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
      * @param projectId
      * @return
      */
-    public List<Integer> saveFeatures(List<UpdateFeatureDTO.ChangedFeatures> features, Integer splitMessageId, Integer projectId,String patentNo) {
+    public List<Integer> saveFeatures(List<UpdateFeatureDTO.ChangedFeatures> features, Integer splitMessageId, Integer projectId, String patentNo) {
         List<Integer> addIds = new ArrayList<>();
         LambdaQueryWrapper<Feature> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.select(Feature::getId);
@@ -592,32 +612,32 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
         personnelVO.setTenantId(1);
 
         List<Feature> addFeatures = new ArrayList<>();
-        Integer order=1;
-        for(UpdateFeatureDTO.ChangedFeatures item:features) {
-                Integer id = item.getId();
-                if (id == null || !ids.contains(id)) {
-                    Feature feature = new Feature();
-                    feature.setCreateId(personnelVO.getId());
-                    feature.setSplitMessageId(splitMessageId);
-                    feature.setContent(item.getContent());
-                    feature.setExplainText(item.getExplainText());
-                    feature.setRightSort(item.getRightSort());
-                    feature.setProjectId(projectId);
-                    feature.setSysOrder(order);
-                    feature.setPatentNo(patentNo);
-                    feature.setRightType(item.getRightType());
-                    feature.setTenantId(personnelVO.getTenantId());
-                   feature.insert();
-                } else {
-                    ids.remove(id);
-                        Feature feature = this.getById(id);
-                        feature.setSysOrder(order);
-                        feature.setContent(item.getContent());
-                        feature.setExplainText(item.getExplainText());
-                        feature.updateById();
+        Integer order = 1;
+        for (UpdateFeatureDTO.ChangedFeatures item : features) {
+            Integer id = item.getId();
+            if (id == null || !ids.contains(id)) {
+                Feature feature = new Feature();
+                feature.setCreateId(personnelVO.getId());
+                feature.setSplitMessageId(splitMessageId);
+                feature.setContent(item.getContent());
+                feature.setExplainText(item.getExplainText());
+                feature.setRightSort(item.getRightSort());
+                feature.setProjectId(projectId);
+                feature.setSysOrder(order);
+                feature.setPatentNo(patentNo);
+                feature.setRightType(item.getRightType());
+                feature.setTenantId(personnelVO.getTenantId());
+                feature.insert();
+            } else {
+                ids.remove(id);
+                Feature feature = this.getById(id);
+                feature.setSysOrder(order);
+                feature.setContent(item.getContent());
+                feature.setExplainText(item.getExplainText());
+                feature.updateById();
 
-                }
-                order++;
+            }
+            order++;
         }
 
         //添加特征
@@ -645,9 +665,9 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
                 Integer claimMessageId = claimMessage.getId();
                 LambdaQueryWrapper<PatentClaim> queryWrapper = new LambdaQueryWrapper<>();
                 queryWrapper.eq(PatentClaim::getClaimMessageId, claimMessageId);
-                List<PatentClaim> patentClaimList =patentClaimService.list(queryWrapper);
-                for (PatentClaim item: patentClaimList){
-                    RePatentClaim rePatentClaim =this.domainToRe(item);
+                List<PatentClaim> patentClaimList = patentClaimService.list(queryWrapper);
+                for (PatentClaim item : patentClaimList) {
+                    RePatentClaim rePatentClaim = this.domainToRe(item);
                     patentRights.add(rePatentClaim);
                 }
             }
@@ -657,13 +677,13 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
         }
     }
 
-     private  RePatentClaim  domainToRe(PatentClaim patentClaim){
-         RePatentClaim rePatentClaim =new RePatentClaim();
-         rePatentClaim.setContent(patentClaim.getContent());
-         rePatentClaim.setId(patentClaim.getId());
-         rePatentClaim.setSort(patentClaim.getSysOrder());
-         rePatentClaim.setParentSort(patentClaim.getParentOrder());
-         rePatentClaim.setType(patentClaim.getClaimType());
-         return  rePatentClaim;
-     }
+    private RePatentClaim domainToRe(PatentClaim patentClaim) {
+        RePatentClaim rePatentClaim = new RePatentClaim();
+        rePatentClaim.setContent(patentClaim.getContent());
+        rePatentClaim.setId(patentClaim.getId());
+        rePatentClaim.setSort(patentClaim.getSysOrder());
+        rePatentClaim.setParentSort(patentClaim.getParentOrder());
+        rePatentClaim.setType(patentClaim.getClaimType());
+        return rePatentClaim;
+    }
 }

+ 8 - 0
src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java

@@ -895,11 +895,19 @@ public class PatentStarApiService {
             if (item.getApplicationDate() != null && !item.getApplicationDate().trim().equals("")) {
                 patentColumnDTO.setAppDate(DateUtils.strToDate(item.getApplicationDate()));
             }
+//            patentColumnDTO.setAppCountry(item.getBureau());
             //装载申请人地址
             PersonAddress appAddress = new PersonAddress();
             appAddress.setAddress(item.getApplicationAddress());
             appAddress.setProvince(item.getProvinceStr());
             patentColumnDTO.setApplicantAddr(appAddress);
+            patentColumnDTO.setAppAddress(item.getApplicationAddress());
+//            patentColumnDTO.setApplicantCountry(item.getProvinceStr());
+            String provinceStr = item.getProvinceStr();
+            if (provinceStr.contains("(") && provinceStr.contains(")")) {
+                String substring = provinceStr.substring(provinceStr.indexOf("(") + 1, provinceStr.indexOf(")"));
+                patentColumnDTO.setAppProvince(substring);
+            }
             //装载ipc(主)分类号
             PatentClassify mipcClassify = new PatentClassify();
             mipcClassify.setLevel5(item.getMainIpc());

+ 91 - 19
src/main/java/cn/cslg/pas/service/common/TranslateService.java

@@ -16,6 +16,7 @@ import cn.cslg.pas.domain.es.Text;
 import cn.cslg.pas.exception.XiaoShiException;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.InlineScript;
+import co.elastic.clients.elasticsearch._types.Refresh;
 import co.elastic.clients.elasticsearch._types.Script;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
@@ -25,6 +26,7 @@ import co.elastic.clients.elasticsearch.core.SearchResponse;
 import co.elastic.clients.elasticsearch.core.UpdateByQueryRequest;
 import co.elastic.clients.elasticsearch.core.search.Hit;
 import com.aliyun.alimt20181012.models.TranslateGeneralResponse;
+import com.aliyun.alimt20181012.models.TranslateGeneralResponseBody;
 import com.aliyun.tea.TeaException;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
@@ -36,6 +38,8 @@ import org.springframework.util.CollectionUtils;
 
 import java.io.IOException;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 @Service
@@ -146,7 +150,7 @@ public class TranslateService {
         IndexResponse indexResponse = client.index(i -> i
                 .index("translate")
                 //传入user对象
-                .document(translate)
+                .document(translate).refresh(Refresh.True)
         );
         return indexResponse.id();
     }
@@ -176,7 +180,7 @@ public class TranslateService {
             i += 1;
         }
         //译文
-        String translateContent = this.getTranslateContent(textContent);
+        String translateContent = this.getLimitTranslateContent(textContent);
         String s1 = this.loadingTranslate(patentNo, patentField, "CN", false, 0, "-1", translateContent);
         if (StringUtils.isNotEmpty(s1)) {
             i += 1;
@@ -218,11 +222,11 @@ public class TranslateService {
                     }
                 }
             }
-            try {
-                Thread.sleep(800);
-            } catch (InterruptedException e) {
-                Thread.currentThread().interrupt();
-            }
+//            try {
+//                Thread.sleep(800);
+//            } catch (InterruptedException e) {
+//                Thread.currentThread().interrupt();
+//            }
             translateDTOS = this.getPatentTranslateByPatentNo(vo);
             translateVO = this.loadTIAndAbTranslate(translateDTOS);
         } else {
@@ -270,11 +274,11 @@ public class TranslateService {
                 List<Text> explainText = columnDTO.getPublicFullText();
                 this.addOldPFTTranslate(explainText, patentNo, patentField);
             }
-            try {
-                Thread.sleep(800);
-            } catch (InterruptedException e) {
-                Thread.currentThread().interrupt();
-            }
+//            try {
+//                Thread.sleep(800);
+//            } catch (InterruptedException e) {
+//                Thread.currentThread().interrupt();
+//            }
             translateDTOS = this.getPatentTranslateByPatentNo(vo);
             translateVOS = this.loadTranslate(translateDTOS);
         } else {
@@ -415,7 +419,8 @@ public class TranslateService {
             int i = 0;
             for (EsTranslateDTO translateDTO : translateDTOS) {
                 Content content = translateDTO.getContent();
-                String translateContent = this.getTranslateContent(content.getTextContent());
+                String textContent = content.getTextContent();
+                String translateContent = this.getLimitTranslateContent(textContent);
                 String s = this.loadingTranslate(translateDTO.getPatentNo(), translateDTO.getPatentField(), "CN", false,
                         content.getOrder(), content.getParentSort(), translateContent);
                 if (StringUtils.isNotEmpty(s)) {
@@ -425,11 +430,11 @@ public class TranslateService {
             if (i < 1) {
                 throw new XiaoShiException("添加译文失败");
             }
-            try {
-                Thread.sleep(1000);
-            } catch (InterruptedException e) {
-                Thread.currentThread().interrupt();
-            }
+//            try {
+//                Thread.sleep(1000);
+//            } catch (InterruptedException e) {
+//                Thread.currentThread().interrupt();
+//            }
             translateDTOS = this.getPatentTranslateByPatentNo(vo);
             translateVOS = this.loadTranslate(translateDTOS);
         } else {
@@ -438,6 +443,47 @@ public class TranslateService {
         return translateVOS;
     }
 
+    //判断文本翻译是否超出限制5000
+    public String getLimitTranslateContent(String content) throws Exception {
+        /*if (content.length() > 5000) {
+            String s = content.substring(0, 5000);
+            int i = s.lastIndexOf(",") + 1;
+            String s1 = s.substring(0, i);
+            str = str + this.getTranslateContent(s1);
+            String s2 = s.substring(i);
+            String s3 = this.getLimitTranslateContent(s2);
+            str = str + s3;
+        } else {
+            str = this.getTranslateContent(content);
+        }*/
+        String str = "";
+        String regex = "(?<!\\d)\\.(?!\\d)|[;。;]";
+        String regex1 = "(?<!\\d)\\.(?!\\d)";
+        Pattern pattern = Pattern.compile(regex);
+        Pattern pattern1 = Pattern.compile(regex1);
+        while (content.length() > 5000) {
+            String s2 = content.substring(0, 5000);
+            Matcher matcher = pattern.matcher(s2);
+            Matcher matcher1 = pattern1.matcher(s2);
+            int lastIndex = -1;
+            while (matcher.find()) {
+                lastIndex = matcher.end() - 1; // matcher.end() 返回的是匹配项之后的索引,所以减1得到最后一个字符的索引
+            }
+            if (lastIndex == -1) {
+                while (matcher1.find()) {
+                    lastIndex = matcher1.end() - 1; // matcher.end() 返回的是匹配项之后的索引,所以减1得到最后一个字符的索引
+                }
+            }
+            String s = content.substring(0, lastIndex + 1);
+            String translateContent = this.getTranslateContent(s);
+            str = str + translateContent;
+            content = content.substring(lastIndex + 1);
+        }
+        String translateContent = this.getTranslateContent(content);
+        str = str + translateContent;
+        return str;
+    }
+
     /**
      * 根据文本获取翻译内容
      *
@@ -445,7 +491,7 @@ public class TranslateService {
      * @return
      */
     public TranslateVO getTranslateByText(TranslateDTO vo) throws Exception {
-        String translateContent = this.getTranslateContent(vo.getContent());
+        String translateContent = this.getLimitTranslateContent(vo.getContent());
         TranslateVO translateVO = new TranslateVO();
         translateVO.setOriginalContent(vo.getContent());
         translateVO.setTranslationContent(translateContent);
@@ -476,6 +522,7 @@ public class TranslateService {
         return explainTextVOS;
     }
 
+    //根据专利号和序号查询是否已有翻译
     public List<String> getTranslateOrder(String patentNo, Integer sort) throws IOException {
         List<String> list = new ArrayList<>();
         SearchRequest.Builder builder = new SearchRequest.Builder();
@@ -500,4 +547,29 @@ public class TranslateService {
         }
         return list;
     }
+
+    //根据专利号和序号查询是否已有翻译
+    public Long getTranslateByPatentNo(String patentNo) throws IOException {
+        List<String> list = new ArrayList<>();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("translate");
+        Query q1 = QueryBuilders.term(t -> t.field("patent_no").value(patentNo));
+        Query q2 = QueryBuilders.term(t -> t.field("patent_field").value("3"));
+        Query q3 = QueryBuilders.term(t -> t.field("if_origin").value(true));
+        Query bool = QueryBuilders.bool(i -> i.must(q1, q2, q3));
+        builder.query(bool);
+        builder.size(1000);
+        builder.trackTotalHits(i -> i.enabled(true));
+        SearchResponse<PatentTranslate> response = client.search(builder.build(), PatentTranslate.class);
+//        List<Hit<PatentTranslate>> hits = response.hits().hits();
+//        for (Hit<PatentTranslate> hit : hits) {
+//            PatentTranslate source = hit.source();
+//            String content = source.getContent().getTextContent();
+//            if (StringUtils.isNotEmpty(content)) {
+//                list.add(content);
+//            }
+//        }
+        return response.hits().total().value();
+    }
 }

File diff suppressed because it is too large
+ 32 - 5
src/test/java/cn/cslg/pas/service/EventServiceTests.java