lwhhszx пре 1 година
родитељ
комит
be31d286d4

+ 1 - 0
src/main/java/cn/cslg/pas/common/dto/business/UpdateScratchWordsDTO.java

@@ -67,4 +67,5 @@ public class UpdateScratchWordsDTO {
      * 标注租户id
      */
     private Integer publicTenantId;
+    private Integer  createFrom;
 }

+ 19 - 0
src/main/java/cn/cslg/pas/common/dto/es/EsQueryPatentFieldsDTO.java

@@ -0,0 +1,19 @@
+package cn.cslg.pas.common.dto.es;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EsQueryPatentFieldsDTO {
+
+    /**
+     * 专题库或报告id
+     */
+    Integer projectId;
+
+    List<String> patentNos;
+    List<InnerFields> innerFields;
+
+
+}

+ 17 - 0
src/main/java/cn/cslg/pas/common/dto/es/InnerFields.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.dto.es;
+
+import lombok.Data;
+
+@Data
+public class InnerFields {
+    /**
+     * 栏位类型
+     * 自定义栏位类型(0数字,1日期,2文本,4单选,5多选,6树,7产品8产品类别9技术分类)
+     */
+    private Integer fieldType;
+
+    /**
+     * 栏位
+     */
+    private String fieldId;
+}

+ 1 - 0
src/main/java/cn/cslg/pas/common/vo/ScratchWordsVO.java

@@ -48,4 +48,5 @@ public class ScratchWordsVO {
     private String patentId;
     private String patentNo;
     private String patentTitle;
+    private Integer createFrom;
 }

+ 9 - 0
src/main/java/cn/cslg/pas/common/vo/es/EsPatentFieldVO.java

@@ -0,0 +1,9 @@
+package cn.cslg.pas.common.vo.es;
+
+import lombok.Data;
+
+@Data
+public class EsPatentFieldVO {
+    String patentNo;
+
+}

+ 1 - 0
src/main/java/cn/cslg/pas/domain/business/ScratchWords.java

@@ -81,6 +81,7 @@ public class ScratchWords {
     private Integer publicTenantId;
 
     private String patentTitle;
+    private Integer createFrom;
 
 
 }

+ 2 - 0
src/main/java/cn/cslg/pas/domain/es/Marking.java

@@ -89,4 +89,6 @@ public class Marking {
   private String patentNo;
   @JsonProperty("patent_title")
   private String patentTitle;
+  @JsonProperty("create_from")
+  private Integer createFrom;
 }

+ 43 - 20
src/main/java/cn/cslg/pas/service/business/InvalidStatutesService.java

@@ -3,7 +3,10 @@ package cn.cslg.pas.service.business;
 import cn.cslg.pas.common.dto.DomainFieldDTO;
 import cn.cslg.pas.common.dto.business.InvalidStatutesDTO;
 import cn.cslg.pas.common.dto.invalidDTO.UpdateMessageDTO;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.GenerateObjectUtil;
+import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.invalidVO.InvalidStatutesVO;
 import cn.cslg.pas.domain.business.*;
 import cn.cslg.pas.exception.XiaoShiException;
@@ -25,6 +28,7 @@ import java.util.stream.Collectors;
 
 /**
  * 无效发条Service
+ *
  * @Author xiexiang
  * @Date 2023/12/22
  */
@@ -41,12 +45,19 @@ public class InvalidStatutesService extends ServiceImpl<InvalidStatutesMapper, I
     @Lazy
     private ProofGroupService proofGroupService;
 
+    @Autowired
+    private CacheUtils cacheUtils;
+    @Autowired
+    private LoginUtils loginUtils;
+
     /**
      * 添加无效法条
+     *
      * @param invalidStatutesDTO
      * @return
      */
     public List<Integer> addInvalidStatutes(InvalidStatutesDTO invalidStatutesDTO) {
+        Integer projectId =invalidStatutesDTO.getProjectId();
         List<Integer> ids = new ArrayList<>();
         if (invalidStatutesDTO != null) {
             if (invalidStatutesDTO.getProjectId() != null) {
@@ -71,11 +82,21 @@ public class InvalidStatutesService extends ServiceImpl<InvalidStatutesMapper, I
                     //涉及内容为说明书或者附图
                     InvalidStatutes invalidStatutes = new InvalidStatutes();
                     BeanUtils.copyProperties(invalidStatutesDTO, invalidStatutes);
+                    if (invalidStatutesDTO.getRelatedContent().equals(2)) {
+                        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+                        PatentClaim patentClaim = new PatentClaim();
+                        patentClaim.setCreateId(personnelVO.getId());
+                        patentClaim.setContentType(1);
+                        patentClaim.setProjectId(projectId);
+                        patentClaim.insert();
+                        invalidStatutes.setClaimId(patentClaim.getId());
+                    }
+
                     invalidStatutes.insert();
                     Integer id = invalidStatutes.getId();
                     ids.add(id);
-                }
-                else {
+
+                } else {
                     throw new XiaoShiException("涉及内容不能为空");
                 }
                 return ids;
@@ -88,10 +109,11 @@ public class InvalidStatutesService extends ServiceImpl<InvalidStatutesMapper, I
 
     /**
      * 查询无效法条
+     *
      * @param projectId
      * @return
      */
-    public List<InvalidStatutesVO> queryInvalidStatutes(Integer projectId){
+    public List<InvalidStatutesVO> queryInvalidStatutes(Integer projectId) {
         List<InvalidStatutesVO> invalidStatutesVOS = new ArrayList<>();
         if (projectId != null) {
             //根据报告id查询所有无效法条
@@ -116,9 +138,10 @@ public class InvalidStatutesService extends ServiceImpl<InvalidStatutesMapper, I
 
     /**
      * 装载法条
+     *
      * @param invalidStatutesVOS
      */
-    public void loadStatutes(List<InvalidStatutesVO> invalidStatutesVOS){
+    public void loadStatutes(List<InvalidStatutesVO> invalidStatutesVOS) {
         List<Integer> invalidStatutesIds = invalidStatutesVOS.stream().map(InvalidStatutesVO::getStatutesId).collect(Collectors.toList());
         if (!invalidStatutesIds.isEmpty()) {
             LambdaQueryWrapper<SystemDict> queryWrapper = new LambdaQueryWrapper<>();
@@ -147,9 +170,10 @@ public class InvalidStatutesService extends ServiceImpl<InvalidStatutesMapper, I
 
     /**
      * 装载权要
+     *
      * @param invalidStatutesVOS
      */
-    public void loadClaims(Integer projectId, List<InvalidStatutesVO> invalidStatutesVOS){
+    public void loadClaims(Integer projectId, List<InvalidStatutesVO> invalidStatutesVOS) {
         List<Integer> claimIds = invalidStatutesVOS.stream().filter(item -> item.getClaimId() != null).map(InvalidStatutesVO::getClaimId).collect(Collectors.toList());
         if (!claimIds.isEmpty()) {
             LambdaQueryWrapper<PatentClaim> queryWrapper = new LambdaQueryWrapper<>();
@@ -164,6 +188,7 @@ public class InvalidStatutesService extends ServiceImpl<InvalidStatutesMapper, I
                             .findFirst()
                             .orElse(null);
                     if (patentClaim != null) {
+                        invalidStatutesVO.setClaimId(patentClaim.getId());
                         invalidStatutesVO.setClaimSort(patentClaim.getSysOrder());
                         invalidStatutesVO.setClaimText(patentClaim.getContent());
                         invalidStatutesVO.setRbDecision(patentClaim.getRbDecision());
@@ -180,7 +205,6 @@ public class InvalidStatutesService extends ServiceImpl<InvalidStatutesMapper, I
     }
 
 
-
     /**
      * 更新信息
      *
@@ -214,27 +238,26 @@ public class InvalidStatutesService extends ServiceImpl<InvalidStatutesMapper, I
     }
 
     /**
-     *
      * @param id
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public Integer removeInvalidStatutes(Integer id){
-        if(id==null){
+    public Integer removeInvalidStatutes(Integer id) {
+        if (id == null) {
             throw new XiaoShiException("请输入无效法条");
         }
-        InvalidStatutes invalidStatutes =this.getById(id);
-        if(invalidStatutes==null){
+        InvalidStatutes invalidStatutes = this.getById(id);
+        if (invalidStatutes == null) {
             throw new XiaoShiException("无效法条不存在");
         }
-    //根据无效法条id 查询是否有证据组合
-        LambdaQueryWrapper<ProofGroup> queryWrapper =new LambdaQueryWrapper<>();
-        queryWrapper.eq(ProofGroup::getInvalidStatutesId,id);
-        List<ProofGroup> proofGroups =proofGroupService.list(queryWrapper);
-          if(proofGroups.size()>0){
-              throw new XiaoShiException("请先删除该法条的证据组合");
-          }
-          this.removeById(id);
-          return id;
+        //根据无效法条id 查询是否有证据组合
+        LambdaQueryWrapper<ProofGroup> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ProofGroup::getInvalidStatutesId, id);
+        List<ProofGroup> proofGroups = proofGroupService.list(queryWrapper);
+        if (proofGroups.size() > 0) {
+            throw new XiaoShiException("请先删除该法条的证据组合");
+        }
+        this.removeById(id);
+        return id;
     }
 }

+ 87 - 3
src/main/java/cn/cslg/pas/service/business/es/EsCustomFieldService.java

@@ -271,6 +271,7 @@ public class EsCustomFieldService {
 
     /**
      * 批量添加自定义栏位值
+     *
      * @param vo
      * @return
      * @throws Exception
@@ -292,7 +293,7 @@ public class EsCustomFieldService {
                 }
 
             }
-        } else if (startNum >= 1 && endNum > 0){
+        } else if (startNum >= 1 && endNum > 0) {
             List<String> patentNos = this.getPatentNos(vo);
             for (String patentNo : patentNos) {
                 for (EsCustomFieldDTO fieldDTO : fieldDTOS) {
@@ -307,6 +308,7 @@ public class EsCustomFieldService {
 
     /**
      * 获取专利号列表
+     *
      * @param vo
      * @return
      * @throws Exception
@@ -383,7 +385,7 @@ public class EsCustomFieldService {
 
         int number = endNum - startNum;
         if (startNum > 0 && endNum > startNum) {
-            builder.from(startNum-1).size(number);
+            builder.from(startNum - 1).size(number);
         }
 
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
@@ -617,6 +619,7 @@ public class EsCustomFieldService {
         return esCustomFieldHistoryHit;
 
     }
+
     public PatentWithIdVO getPatentLabel(AddPatentLabelDTO addPatentLabelDTO) throws Exception {
         PatentWithIdVO patentWithIdVO = new PatentWithIdVO();
         Integer projectId = addPatentLabelDTO.getProjectId();
@@ -644,7 +647,7 @@ public class EsCustomFieldService {
         Query q3 = QueryBuilders.hasParent(t -> t.parentType("patent").query(parentQ));
 
         Query bool = null;
-            bool = QueryBuilders.bool(i -> i.must(q1, q3, q4));
+        bool = QueryBuilders.bool(i -> i.must(q1, q3, q4));
 
 
         builder.query(bool);
@@ -662,4 +665,85 @@ public class EsCustomFieldService {
         return patentWithIdVO;
     }
 
+
+    public List<ESCustomField> getPatentCustomFields(String projectId, String patentId) {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query q1 = QueryBuilders.term(t -> t.field("project_id").value(projectId));
+        Query q2 = QueryBuilders.parentId(parent -> parent.type("patent").id(patentId));
+        Query bool = QueryBuilders.bool(i -> i.must(q1, q2));
+        try {
+            SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+            List<Hit<Patent>> hits = response.hits().hits();
+            hits.forEach(item -> {
+            });
+        } catch (Exception e) {
+
+        }
+        return null;
+    }
+
+
+    //查询自定义字段
+    public PatentWithIdVO getPatentFields(EsQueryPatentFieldsDTO esQueryPatentFieldsDTO) throws Exception {
+        PatentWithIdVO patentWithIdVO = new PatentWithIdVO();
+        Integer projectId = esQueryPatentFieldsDTO.getProjectId();
+        List<String> patentNos = esQueryPatentFieldsDTO.getPatentNos();
+        List<InnerFields> innerFields = esQueryPatentFieldsDTO.getInnerFields();
+
+        for (String patentNo:patentNos) {
+            SearchRequest.Builder builder = new SearchRequest.Builder();
+
+            //设置查询索引
+            builder.index("patent");
+            builder.sort(sortOptionsBuilder -> sortOptionsBuilder
+                    .field(fieldSortBuilder -> fieldSortBuilder
+                            .field("create_time").order(SortOrder.Desc)));
+           Query queries = this.getQueries(patentNo,innerFields,projectId);
+           builder.size(999);
+            builder.query(queries);
+            SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+            long total = response.hits().total().value();
+            List<ESCustomField> esCustomFields =new ArrayList<>();
+            if (total > 0) {
+                List<Hit<Patent>> hits = response.hits().hits();
+                Hit<Patent> hit = hits.get(0);
+                Patent patent = hit.source();
+                patentWithIdVO.setPatent(patent);
+                patentWithIdVO.setId(hit.id());
+            } else {
+
+            }
+        }
+
+        return patentWithIdVO;
+    }
+
+    private Query getQueries(String patentNo, List<InnerFields> innerFields, Integer projectId) {
+
+        Query parentQ1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(patentNo));
+
+        //公开号
+        Query parentQ2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(patentNo));
+
+        //授权号
+        Query parentQ3 = QueryBuilders.term(t -> t.field("grant_no.keyword").value(patentNo));
+
+        Query parentQ = QueryBuilders.bool(i -> i.should(parentQ1, parentQ2, parentQ3));
+
+        List<Query> queries = new ArrayList<>();
+        for (InnerFields innerField : innerFields) {
+            String filedId = innerField.getFieldId();
+            Integer fieldType = innerField.getFieldType();
+            Query q1 = QueryBuilders.term(t -> t.field("custom_field.project_id").value(projectId));
+            Query q2 = QueryBuilders.term((t -> t.field("custom_field.field").value(filedId)));
+            Query q3 = QueryBuilders.term(t -> t.field("custom_field.field_type").value(fieldType));
+            Query fQ = QueryBuilders.bool(i -> i.must(q1, q2, q3));
+            queries.add(fQ);
+        }
+        Query query = QueryBuilders.bool(i -> i.should(queries));
+        Query query1 = QueryBuilders.bool(i -> i.must(query, parentQ));
+        return query1;
+    }
 }

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

@@ -257,7 +257,7 @@ public class EsScratchWordsService {
         Aggregation aggregation = null;
         if (esGroupFiled.equals("mark_time")) {
             aggregation =
-                    new Aggregation.Builder().dateHistogram(new DateHistogramAggregation.Builder().field(esGroupFiled).calendarInterval(CalendarInterval.Day).format("yyyy_MM_dd").build()).aggregations(new HashMap() {{
+                    new Aggregation.Builder().dateHistogram(new DateHistogramAggregation.Builder().field(esGroupFiled).calendarInterval(CalendarInterval.Day).format("yyyy-MM-dd").build()).aggregations(new HashMap() {{
                         put("pageAgg", hits);
                     }}).build();
         }