zero 11 місяців тому
батько
коміт
3076f8a497

+ 8 - 19
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/MatchPhaseBoolQueryBuilder.java

@@ -19,25 +19,14 @@ public class MatchPhaseBoolQueryBuilder implements IQueryBuilder{
     @Override
     public Query creteQuery() throws ParseException {
         List<Query> querys = new ArrayList<>();
-        if (value.contains(" ")) {
-            Query q1 = QueryBuilders.matchPhrase(i -> i.field("title.text_content").query(value));
-            Query q2 = QueryBuilders.matchPhrase(i -> i.field("abstract_str.text_content").query(value));
-            Query q3 = QueryBuilders.matchPhrase(i -> i.field("claim.text_content").query(value));
-            Query q4 = QueryBuilders.match(i -> i.field("public_full_text.text_content").query(value));
-            querys.add(q1);
-            querys.add(q2);
-            querys.add(q3);
-            querys.add(q4);
-        } else {
-            Query q1 = QueryBuilders.matchPhrase(i -> i.field("title.text_content").query(value).slop(2));
-            Query q2 = QueryBuilders.matchPhrase(i -> i.field("abstract_str.text_content").query(value).slop(2));
-            Query q3 = QueryBuilders.matchPhrase(i -> i.field("claim.text_content").query(value).slop(2));
-            Query q4 = QueryBuilders.match(i -> i.field("public_full_text.text_content").query(value));
-            querys.add(q1);
-            querys.add(q2);
-            querys.add(q3);
-            querys.add(q4);
-        }
+        Query q1 = QueryBuilders.matchPhrase(i -> i.field("title.text_content").query(value).slop(2));
+        Query q2 = QueryBuilders.matchPhrase(i -> i.field("abstract_str.text_content").query(value).slop(2));
+        Query q3 = QueryBuilders.matchPhrase(i -> i.field("claim.text_content").query(value).slop(2));
+        Query q4 = QueryBuilders.matchPhrase(i -> i.field("public_full_text.text_content").query(value).slop(2));
+        querys.add(q1);
+        querys.add(q2);
+        querys.add(q3);
+        querys.add(q4);
         return QueryBuilders.bool(i ->i.should(querys));
     }
 

+ 22 - 1
src/main/java/cn/cslg/pas/service/business/NoveltyProjectService.java

@@ -12,6 +12,7 @@ import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.DepartmentVO;
 import cn.cslg.pas.common.vo.EntrustVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
 import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
 import cn.cslg.pas.common.vo.business.PatentProjectVO;
 import cn.cslg.pas.domain.BaseEntity;
@@ -22,6 +23,7 @@ import cn.cslg.pas.mapper.AssoTechnicalCaseFileMapper;
 import cn.cslg.pas.mapper.NoveltyProjectMapper;
 import cn.cslg.pas.mapper.ProjectMapper;
 import cn.cslg.pas.mapper.TechnicalCaseMapper;
+import cn.cslg.pas.service.business.es.EsScratchWordsService;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.common.RetrieveRecordService;
 import cn.cslg.pas.service.novelty.NoveltyCompareLiteratureService;
@@ -82,6 +84,12 @@ public class NoveltyProjectService extends ServiceImpl<NoveltyProjectMapper, Nov
     private TechnicalCaseMapper technicalCaseMapper;
 
     @Autowired
+    private TechnicalCaseService technicalCaseService;
+
+    @Autowired
+    private EsScratchWordsService esScratchWordsService;
+
+    @Autowired
     private NoveltySearchRecordService noveltySearchRecordService;
     @Autowired
     private NoveltyCompareRecordService noveltyCompareRecordService;
@@ -369,7 +377,7 @@ public class NoveltyProjectService extends ServiceImpl<NoveltyProjectMapper, Nov
         return project.getId();
     }
 
-    public void deleteNoveltyProject(NoveltyProjectIdDTO vo) {
+    public void deleteNoveltyProject(NoveltyProjectIdDTO vo) throws Exception {
         if (vo.getProjectId() == null) {
             throw new XiaoShiException("参数不得为空");
         }
@@ -388,9 +396,22 @@ public class NoveltyProjectService extends ServiceImpl<NoveltyProjectMapper, Nov
             }
             //删除关联的技术方案
             technicalCaseMapper.deleteById(technicalCase.getId());
+            //删除发明点
+            technicalCaseService.deleteInventPoint(vo.getProjectId());
+
         }
         //删除本身报告
         projectMapper.deleteById(vo.getProjectId());
+
+        //删除该报告的标注
+//        List<NoveltyCompareRecordVO> recordVOS = esScratchWordsService.queryNoveltyRecord(vo.getProjectId(), 1);
+//        if (!CollectionUtils.isEmpty(recordVOS)) {
+//            List<String> list = recordVOS.stream().map(NoveltyCompareRecordVO::getId).collect(Collectors.toList());
+//            Integer count = esScratchWordsService.delete(list);
+//            if (count < 1) {
+//                throw new XiaoShiException("删除该报告中标注失败");
+//            }
+//        }
     }
 
     public Integer copyNoveltyProject(NoveltyProjectCopyDTO noveltyProjectCopyDTO) throws Exception {

+ 13 - 2
src/main/java/cn/cslg/pas/service/business/TechnicalCaseService.java

@@ -45,6 +45,7 @@ import org.springframework.util.CollectionUtils;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -174,6 +175,16 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
         return technicalCaseVO;
     }
 
+    public void deleteInventPoint(Integer projectId) throws Exception {
+        EditInventionPointVO pointVO = this.selectTechnicalCasePatent(projectId);
+        if (ObjectUtils.isNotEmpty(pointVO) && pointVO.getPatentId() != null) {
+            Integer count = delete(Arrays.asList(pointVO.getPatentId()));
+            if (count < 1) {
+                throw new XiaoShiException("删除发明点失败");
+            }
+        }
+    }
+
     public List<QueryInventionPointVO> querySimilarInventionPoint(QuerySimilarInventionPointDTO vo) throws IOException {
         String content = vo.getContent();
         Integer projectId = vo.getProjectId();
@@ -182,7 +193,7 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
         builder.index("technicalPatent");
         Like likeContent = Like.of(i -> i.text(content));
         Query query = QueryBuilders.moreLikeThis(i -> i.fields("invention_point").like(likeContent)
-                .minTermFreq(1).maxQueryTerms(12).minDocFreq(1));
+                .minTermFreq(1).maxQueryTerms(12).minDocFreq(1).minWordLength(2));
         Query bool = null;
         if (projectId != null) {
             Query query1 = QueryBuilders.term(i -> i.field("project_id").value(projectId));
@@ -283,7 +294,7 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
             client.deleteByQuery(request);
             return 1;
         } catch (IOException e) {
-            throw new XiaoShiException("删除失败");
+            throw new XiaoShiException("删除发明点失败");
         }
     }
 }

+ 38 - 0
src/main/java/cn/cslg/pas/service/business/es/EsScratchWordsService.java

@@ -515,6 +515,44 @@ public class EsScratchWordsService {
         return vos;
     }
 
+    public List<NoveltyCompareRecordVO> queryMarkingByNo(Integer projectId, List<String> patentNos, Integer type) throws Exception {
+
+        List<NoveltyCompareRecordVO> vos = new ArrayList<>();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        builder.index("patent_marking");
+        Query q1 = QueryBuilders.term(t -> t.field("public_project_id").value(projectId));
+
+        //不公开
+
+        List<FieldValue> fieldValues = new ArrayList<>();
+        patentNos.forEach(item -> {
+            fieldValues.add(FieldValue.of(item));
+        });
+
+
+        Query q2 = QueryBuilders.terms(t -> t.field("patent_no").terms(new TermsQueryField.Builder().value(fieldValues).build()));
+        Query q3 = QueryBuilders.term(t -> t.field("use_type").value(type));
+
+        Query q4 = QueryBuilders.bool(i -> i.must(q1, q2, q3));
+        builder.query(q4);
+
+        try {
+            SearchResponse<Marking> response = client.search(builder.build(), Marking.class);
+            List<Hit<Marking>> hits = response.hits().hits();
+            for (Hit<Marking> hit : hits) {
+                Marking marking = hit.source();
+                NoveltyCompareRecordVO noveltyCompareRecordVO = new NoveltyCompareRecordVO();
+                BeanUtils.copyProperties(marking, noveltyCompareRecordVO);
+                noveltyCompareRecordVO.setId(hit.id());
+                vos.add(noveltyCompareRecordVO);
+            }
+        } catch (Exception e) {
+
+        }
+
+        return vos;
+    }
+
     public Integer delete(List<String> ids) {
         Query query = QueryBuilders.ids(n -> n.values(ids));
         DeleteByQueryRequest request = DeleteByQueryRequest.of(i -> i.index("patent_marking").refresh(true).query(query));

+ 11 - 1
src/main/java/cn/cslg/pas/service/novelty/NoveltyCompareLiteratureService.java

@@ -236,10 +236,20 @@ public class NoveltyCompareLiteratureService extends ServiceImpl<NoveltyCompareL
             noveltyCompareLiteratureMapper.deleteById(noveltyCompareLiterature.getId());
         }
         //删除该对比文件的标注
+//        CompareLiterature compareLiterature = compareLiteratureMapper.selectById(vo.getCompareLitertureId());
+//        String literatureNo = compareLiterature.getLiteratureNo();
+//        if (StringUtils.isNotEmpty(literatureNo)) {
+//            List<NoveltyCompareRecordVO> markingList = esScratchWordsService.queryMarkingByNo(compareLiterature.getProjectId(), Arrays.asList(literatureNo));
+//            if (!CollectionUtils.isEmpty(markingList)) {
+//                List<String> list = markingList.stream().map(NoveltyCompareRecordVO::getId).collect(Collectors.toList());
+//                esScratchWordsService.delete(list);
+//            }
+//        }
+        //删除该专利的对比记录
         CompareLiterature compareLiterature = compareLiteratureMapper.selectById(vo.getCompareLitertureId());
         String literatureNo = compareLiterature.getLiteratureNo();
         if (StringUtils.isNotEmpty(literatureNo)) {
-            List<NoveltyCompareRecordVO> markingList = esScratchWordsService.queryMarkingByNo(compareLiterature.getProjectId(), Arrays.asList(literatureNo));
+            List<NoveltyCompareRecordVO> markingList = esScratchWordsService.queryMarkingByNo(compareLiterature.getProjectId(), Arrays.asList(literatureNo),2);
             if (!CollectionUtils.isEmpty(markingList)) {
                 List<String> list = markingList.stream().map(NoveltyCompareRecordVO::getId).collect(Collectors.toList());
                 esScratchWordsService.delete(list);

+ 1 - 1
src/test/java/cn/cslg/pas/service/NoveltyProjectTest.java

@@ -73,7 +73,7 @@ public class NoveltyProjectTest {
     }
 
     @Test
-    public void deleteNoveltyProject() {
+    public void deleteNoveltyProject() throws Exception {
         NoveltyProjectIdDTO vo = new NoveltyProjectIdDTO();
         vo.setProjectId(484);
         noveltyProjectService.deleteNoveltyProject(vo);