Explorar el Código

Merge remote-tracking branch 'origin/master'

xiexiang hace 1 año
padre
commit
204a4df48b
Se han modificado 39 ficheros con 1066 adiciones y 229 borrados
  1. 2 1
      src/main/java/cn/cslg/pas/common/dto/ImportTaskDTO.java
  2. 1 0
      src/main/java/cn/cslg/pas/common/dto/es/EsCustomFieldDTO.java
  3. 5 0
      src/main/java/cn/cslg/pas/common/dto/es/EsCustomFieldValueDTO.java
  4. 31 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/ProjectFigureDTO.java
  5. 29 0
      src/main/java/cn/cslg/pas/common/vo/invalidVO/ProjectFigureVO.java
  6. 24 0
      src/main/java/cn/cslg/pas/common/vo/invalidVO/ProofGroupVO.java
  7. 107 14
      src/main/java/cn/cslg/pas/common/vo/invalidVO/QueryEvidenceReasonVO.java
  8. 13 0
      src/main/java/cn/cslg/pas/controller/InvalidStatutesController.java
  9. 80 0
      src/main/java/cn/cslg/pas/controller/ProjectFigureController.java
  10. 11 1
      src/main/java/cn/cslg/pas/controller/ProofGroupController.java
  11. 52 0
      src/main/java/cn/cslg/pas/domain/business/AssoGroupFeature.java
  12. 53 0
      src/main/java/cn/cslg/pas/domain/business/EvidenceReason.java
  13. 2 0
      src/main/java/cn/cslg/pas/domain/business/ImportTaskCondition.java
  14. 34 0
      src/main/java/cn/cslg/pas/domain/business/ProjectFigure.java
  15. 48 0
      src/main/java/cn/cslg/pas/domain/business/ProofGroup.java
  16. 54 2
      src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/CustomChildQueryBuilder.java
  17. 0 1
      src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/IQueryBuilder.java
  18. 6 2
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildCountAnalysisBuilder.java
  19. 15 0
      src/main/java/cn/cslg/pas/mapper/InvalidReport/ProjectFigureMapper.java
  20. 5 0
      src/main/java/cn/cslg/pas/service/business/ImportTaskService.java
  21. 39 0
      src/main/java/cn/cslg/pas/service/business/InvalidStatutesService.java
  22. 17 0
      src/main/java/cn/cslg/pas/service/business/ProofGroupService.java
  23. 22 7
      src/main/java/cn/cslg/pas/service/business/es/EsCountService.java
  24. 9 8
      src/main/java/cn/cslg/pas/service/business/es/EsCustomFieldService.java
  25. 24 17
      src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java
  26. 12 60
      src/main/java/cn/cslg/pas/service/business/es/EsService.java
  27. 30 1
      src/main/java/cn/cslg/pas/service/business/invalidReport/AssoGroupFeatureService.java
  28. 46 25
      src/main/java/cn/cslg/pas/service/business/invalidReport/EvidenceReasonService.java
  29. 23 31
      src/main/java/cn/cslg/pas/service/business/invalidReport/PatentClaimHistoryService.java
  30. 134 0
      src/main/java/cn/cslg/pas/service/business/invalidReport/ProjectFigureService.java
  31. 5 6
      src/main/java/cn/cslg/pas/service/query/FormatQueryService.java
  32. 45 45
      src/main/resources/jsons/esCountAnalysis.json
  33. 13 1
      src/main/resources/jsons/patent.json
  34. 1 1
      src/main/resources/mapper/ReportProjectMapper.xml
  35. 1 3
      src/test/java/cn/cslg/pas/service/AvoidDesignServiceTests.java
  36. 1 1
      src/test/java/cn/cslg/pas/service/EsCustomFiedTests.java
  37. 0 1
      src/test/java/cn/cslg/pas/service/EventServiceTests.java
  38. 17 1
      src/test/java/cn/cslg/pas/service/PatentClaimServiceTest.java
  39. 55 0
      src/test/java/cn/cslg/pas/service/ProjectFigureTest.java

+ 2 - 1
src/main/java/cn/cslg/pas/common/dto/ImportTaskDTO.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.common.dto;
 
 import cn.cslg.pas.common.dto.business.AssoImportTaskFieldVO;
+import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
 import cn.cslg.pas.domain.business.AssoImportTaskField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonProperty;
@@ -82,6 +83,6 @@ public class ImportTaskDTO {
     private String orderBy;
     private String orderByType;
 
-    private List<AssoImportTaskFieldVO> assoImportTaskFieldVOS;
+    private List<EsCustomFieldDTO> fieldDTOS;
 
 }

+ 1 - 0
src/main/java/cn/cslg/pas/common/dto/es/EsCustomFieldDTO.java

@@ -43,4 +43,5 @@ public class EsCustomFieldDTO {
     Integer optionType;
 
     String patentNo;
+    private String patentId;
 }

+ 5 - 0
src/main/java/cn/cslg/pas/common/dto/es/EsCustomFieldValueDTO.java

@@ -28,4 +28,9 @@ public class EsCustomFieldValueDTO {
      */
     Boolean ifHaveChild = false;
 
+    /**
+     * 栏位类型
+     */
+    private String fieldType;
+
 }

+ 31 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/ProjectFigureDTO.java

@@ -0,0 +1,31 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import org.joda.time.DateTime;
+
+/**
+ * <p>
+ * 报告附图表
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2022-10-20
+ */
+@Data
+/*数据库中的表对应的类
+ */
+public class ProjectFigureDTO  {
+    private Integer id;
+
+    private Integer projectId;
+
+    private String fileGuid;
+
+    private String description;
+
+    private String figureTitle;
+
+
+}

+ 29 - 0
src/main/java/cn/cslg/pas/common/vo/invalidVO/ProjectFigureVO.java

@@ -0,0 +1,29 @@
+package cn.cslg.pas.common.vo.invalidVO;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.joda.time.DateTime;
+
+import java.util.Date;
+
+@Data
+public class ProjectFigureVO {
+
+    private Integer projectId;
+
+    private String fileGuid;
+
+    private String description;
+
+    private String figureTitle;
+
+    private String createName;
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date createTime;
+    private SystemFile systemFile;
+}

+ 24 - 0
src/main/java/cn/cslg/pas/common/vo/invalidVO/ProofGroupVO.java

@@ -89,4 +89,28 @@ public class ProofGroupVO {
     private String rbDecisionKey;
 
 
+    private String prosecutorOpinions1;
+
+
+    private String respondentOpinions1;
+
+
+    private String thirdOpinions1;
+
+
+    private String courtOpinions1;
+
+
+    private String prosecutorOpinions2;
+
+
+    private String respondentOpinions2;
+
+
+    private String thirdOpinions2;
+
+
+    private String courtOpinions2;
+
+
 }

+ 107 - 14
src/main/java/cn/cslg/pas/common/vo/invalidVO/QueryEvidenceReasonVO.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.common.vo.invalidVO;
 
+import cn.cslg.pas.domain.business.AssoGroupFeature;
 import cn.cslg.pas.domain.business.CompareLiterature;
 import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
@@ -18,68 +19,160 @@ public class QueryEvidenceReasonVO {
     private Integer evidenceReasonId;
 
     private List<CompareLiterature> literatures;
-    private List<GroupFeatureHistoryVO> featureHistories;
+    private List<AssoGroupFeature> featureHistories;
     /**
      * 无效理由详情1
      */
-    private String fInvalidReasonDetail1;
+    private String feInvalidReasonDetail1;
 
     /**
      * 无效理由详情2
      */
-    private String fInvalidReasonDetail2;
+    private String feInvalidReasonDetail2;
 
     /**
      * 陈述意见
      */
-    private String fPresentOpinions1;
+    private String fePresentOpinions1;
 
 
     /**
      * 第二次陈述意见
      */
-    private String fPresentOpinions2;
+    private String fePresentOpinions2;
     /**
      * 是否有第一次陈述意见
      */
-    private Boolean fIfPresentOpinions1;
+    private Boolean feIfPresentOpinions1;
     /**
      * 是否有第二次陈述意见
      */
-    private Boolean fIfPresentOpinions2;
+    private Boolean feIfPresentOpinions2;
     /**
      * 复审委意见
      */
-    private String fRbOpinions;
+    private String feRbOpinions;
+    private String feRbSummary;
 
     /**
      * 复审委意见要点提炼
      */
-    private String fRbDecisionKey;
+    private String feRbDecisionKey;
     //特征修改说明
-    private String fCommon;
+    private String feCommon;
 
     /**
      * 陈述意见
      */
-    private String rPresentOpinions1;
+    private String erPresentOpinions1;
 
 
     /**
      * 是否有陈述意见
      */
-    private Boolean rIfPresentOpinions1;
+    private Boolean erIfPresentOpinions1;
 
 
     /**
      * 复审委意见
      */
-    private String rRbOpinions;
+    private String erRbOpinions;
 
     /**
      * 复审委意见要点提炼
      */
-    private String rRbDecisionKey;
+    private String erRbDecisionKey;
+    private String erRbSummary;
 
+    /**
+     * 一审起诉人意见
+     */
+    private String feProsecutorOpinions1;
+
+    /**
+     * 一审被诉人意见
+     */
+    private String feRespondentOpinions1;
+
+    /**
+     * 一审第三方意见
+     */
+    private String feThirdOpinions1;
+
+    /**
+     * 一审法院意见
+     */
+    private String feCourtOpinions1;
+
+    /**
+     * 二审起诉人意见
+     */
+    private String feProsecutorOpinions2;
+
+    /**
+     * 二审被诉人意见
+     */
+    private String feRespondentOpinions2;
+
+    /**
+     * 二审第三方意见
+     */
+    private String feThirdOpinions2;
+
+    /**
+     * 二审法院意见
+     */
+    private String feCourtOpinions2;
+
+
+
+
+    /**
+     * 一审起诉人意见
+     */
+    @TableField(value = "prosecutor_opinions1")
+    private String erProsecutorOpinions1;
+
+    /**
+     * 一审被诉人意见
+     */
+    @TableField(value = "respondent_opinions1")
+    private String erRespondentOpinions1;
+
+    /**
+     * 一审第三方意见
+     */
+    @TableField(value = "third_opinions1")
+    private String erThirdOpinions1;
+
+    /**
+     * 一审法院意见
+     */
+    @TableField(value = "court_opinions1")
+    private String erCourtOpinions1;
+
+    /**
+     * 二审起诉人意见
+     */
+    @TableField(value = "prosecutor_opinions2")
+    private String erProsecutorOpinions2;
+
+    /**
+     * 二审被诉人意见
+     */
+    @TableField(value = "respondent_opinions2")
+    private String erRespondentOpinions2;
+
+    /**
+     * 二审第三方意见
+     */
+    @TableField(value = "third_opinions2")
+    private String erThirdOpinions2;
+
+    /**
+     * 二审法院意见
+     */
+    @TableField(value = "court_opinions2")
+    private String erCourtOpinions2;
 
 }

+ 13 - 0
src/main/java/cn/cslg/pas/controller/InvalidStatutesController.java

@@ -3,6 +3,7 @@ package cn.cslg.pas.controller;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.business.InvalidStatutesDTO;
 import cn.cslg.pas.common.dto.invalidDTO.GetInvalidStatutesDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateMessageDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.invalidVO.InvalidStatutesVO;
@@ -48,4 +49,16 @@ public class InvalidStatutesController {
         return Response.success(records);
     }
 
+
+    @Operation(summary = "更新信息")
+    @PostMapping("/updateMessage")
+    public Response updateMessage(@RequestBody UpdateMessageDTO updateMessageDTO) {
+        try {
+            invalidStatutesService.updateMessage(updateMessageDTO);
+        }
+        catch (Exception e){
+            return  Response.error(e.getMessage());
+        }
+        return Response.success("更新成功");
+    }
 }

+ 80 - 0
src/main/java/cn/cslg/pas/controller/ProjectFigureController.java

@@ -0,0 +1,80 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.AvoidDesignInsertDTO;
+import cn.cslg.pas.common.dto.business.GetFeatureSplitDTO;
+import cn.cslg.pas.common.dto.invalidDTO.ProjectFigureDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.business.AvoidDesignWholeVO;
+import cn.cslg.pas.common.vo.invalidVO.ProjectFigureVO;
+import cn.cslg.pas.domain.business.ProjectFigure;
+import cn.cslg.pas.exception.ConditionException;
+import cn.cslg.pas.exception.UnLoginException;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.service.business.AvoidDesignService;
+import cn.cslg.pas.service.business.AvoidDesignWholeService;
+import cn.cslg.pas.service.business.invalidReport.ProjectFigureService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 报告附图
+ *
+ * @Author lrj
+ * @Date 2023/12/29
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/projectFigure")
+@RestController
+public class ProjectFigureController {
+    @Autowired
+    private ProjectFigureService projectFigureService;
+
+
+    @Operation(summary = "保存或修改报告附图")
+    @PostMapping("/updateProjectFigure")
+    public Response updateProjectFigure(@RequestBody ProjectFigureDTO projectFigureDTO) throws Exception {
+
+        try {
+            projectFigureService.updateProjectFigure(projectFigureDTO);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success("保存成功");
+    }
+
+    @Operation(summary = "查询附图")
+    @PostMapping("/queryProjectFigures")
+    public Response queryProjectFigures(@RequestBody ProjectFigureDTO projectFigureDTO) throws Exception {
+        Records records = new Records();
+        try {
+            List<ProjectFigureVO> projectFigureVOS = projectFigureService.queryProjectFigureVOs(projectFigureDTO);
+            records.setData(projectFigureVOS);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success(records);
+    }
+
+
+    @Operation(summary = "删除附图")
+    @PostMapping("/removeProjectFigures")
+    public Response removeProjectFigures(@RequestBody List<Integer> ids) throws Exception {
+        try {
+            projectFigureService.removeProjectFigure(ids);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success("删除成功");
+    }
+
+}

+ 11 - 1
src/main/java/cn/cslg/pas/controller/ProofGroupController.java

@@ -80,6 +80,16 @@ public class ProofGroupController {
         }
         return Response.success("更新成功");
     }
-
+    @Operation(summary = "删除证据组合")
+    @PostMapping("/removeProofGroup")
+    public Response removeProofGroup(@RequestBody List<Integer> ids) {
+        try {
+            proofGroupService.removeProofGroup(ids);
+        }
+        catch (Exception e){
+            return  Response.error(e.getMessage());
+        }
+        return Response.success("删除成功");
+    }
 
 }

+ 52 - 0
src/main/java/cn/cslg/pas/domain/business/AssoGroupFeature.java

@@ -73,6 +73,58 @@ public class AssoGroupFeature  extends BaseEntity<AssoGroupFeature> {
     //特征修改说明
     @TableField(value = "common")
     private String common;
+    /**
+     *复审委概括
+     */
+    @TableField(value = "rb_summary")
+    private String rbSummary;
 
 
+    /**
+     * 一审起诉人意见
+     */
+    @TableField(value = "prosecutor_opinions1")
+    private String prosecutorOpinions1;
+
+    /**
+     * 一审被诉人意见
+     */
+    @TableField(value = "respondent_opinions1")
+    private String respondentOpinions1;
+
+    /**
+     * 一审第三方意见
+     */
+    @TableField(value = "third_opinions1")
+    private String thirdOpinions1;
+
+    /**
+     * 一审法院意见
+     */
+    @TableField(value = "court_opinions1")
+    private String courtOpinions1;
+
+    /**
+     * 二审起诉人意见
+     */
+    @TableField(value = "prosecutor_opinions2")
+    private String prosecutorOpinions2;
+
+    /**
+     * 二审被诉人意见
+     */
+    @TableField(value = "respondent_opinions2")
+    private String respondentOpinions2;
+
+    /**
+     * 二审第三方意见
+     */
+    @TableField(value = "third_opinions2")
+    private String thirdOpinions2;
+
+    /**
+     * 二审法院意见
+     */
+    @TableField(value = "court_opinions2")
+    private String courtOpinions2;
 }

+ 53 - 0
src/main/java/cn/cslg/pas/domain/business/EvidenceReason.java

@@ -53,4 +53,57 @@ public class EvidenceReason extends BaseEntity<EvidenceReason> {
     @TableField(value = "rb_decision_key")
     private String rbDecisionKey;
 
+    /**
+     *复审委概括
+     */
+    @TableField(value = "rb_summary")
+    private String rbSummary;
+
+    /**
+     * 一审起诉人意见
+     */
+    @TableField(value = "prosecutor_opinions1")
+    private String prosecutorOpinions1;
+
+    /**
+     * 一审被诉人意见
+     */
+    @TableField(value = "respondent_opinions1")
+    private String respondentOpinions1;
+
+    /**
+     * 一审第三方意见
+     */
+    @TableField(value = "third_opinions1")
+    private String thirdOpinions1;
+
+    /**
+     * 一审法院意见
+     */
+    @TableField(value = "court_opinions1")
+    private String courtOpinions1;
+
+    /**
+     * 二审起诉人意见
+     */
+    @TableField(value = "prosecutor_opinions2")
+    private String prosecutorOpinions2;
+
+    /**
+     * 二审被诉人意见
+     */
+    @TableField(value = "respondent_opinions2")
+    private String respondentOpinions2;
+
+    /**
+     * 二审第三方意见
+     */
+    @TableField(value = "third_opinions2")
+    private String thirdOpinions2;
+
+    /**
+     * 二审法院意见
+     */
+    @TableField(value = "court_opinions2")
+    private String courtOpinions2;
 }

+ 2 - 0
src/main/java/cn/cslg/pas/domain/business/ImportTaskCondition.java

@@ -99,6 +99,8 @@ public class ImportTaskCondition extends BaseEntity<ImportTaskCondition> {
      */
     @TableField(value = "create_time")
     private Date createTime;
+    @TableField(value = "custom_fields")
+    private String customFields;
 
 
 }

+ 34 - 0
src/main/java/cn/cslg/pas/domain/business/ProjectFigure.java

@@ -0,0 +1,34 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import org.joda.time.DateTime;
+
+/**
+ * <p>
+ * 报告附图表
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2022-10-20
+ */
+@Data
+@TableName("project_figure")
+/*数据库中的表对应的类
+ */
+public class ProjectFigure extends BaseEntity<ProjectFigure> {
+    @TableField(value = "project_id")
+    private Integer projectId;
+    @TableField(value = "file_guid")
+    private String fileGuid;
+    @TableField(value = "description")
+    private String description;
+    @TableField(value = "figure_title")
+    private String figureTitle;
+    @TableField(value = "create_id")
+    private String createId;
+    @TableField(value = "create_time")
+    private DateTime createTime;
+}

+ 48 - 0
src/main/java/cn/cslg/pas/domain/business/ProofGroup.java

@@ -82,4 +82,52 @@ public class ProofGroup extends BaseEntity<ProofGroup> {
     private String rbDecisionKey;
 
 
+    /**
+     * 一审起诉人意见
+     */
+    @TableField(value = "prosecutor_opinions1")
+    private String prosecutorOpinions1;
+
+    /**
+     * 一审被诉人意见
+     */
+    @TableField(value = "respondent_opinions1")
+    private String respondentOpinions1;
+
+    /**
+     * 一审第三方意见
+     */
+    @TableField(value = "third_opinions1")
+    private String thirdOpinions1;
+
+    /**
+     * 一审法院意见
+     */
+    @TableField(value = "court_opinions1")
+    private String courtOpinions1;
+
+    /**
+     * 二审起诉人意见
+     */
+    @TableField(value = "prosecutor_opinions2")
+    private String prosecutorOpinions2;
+
+    /**
+     * 二审被诉人意见
+     */
+    @TableField(value = "respondent_opinions2")
+    private String respondentOpinions2;
+
+    /**
+     * 二审第三方意见
+     */
+    @TableField(value = "third_opinions2")
+    private String thirdOpinions2;
+
+    /**
+     * 二审法院意见
+     */
+    @TableField(value = "court_opinions2")
+    private String courtOpinions2;
+
 }

+ 54 - 2
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/CustomChildQueryBuilder.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.factorys.EsBuilderFactory;
 
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.json.JsonData;
 import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
@@ -12,11 +13,54 @@ public class CustomChildQueryBuilder implements IQueryBuilder {
     private String value = "";
     private String operator = "";
     public String path = "";
+    public String fieldType = "";
 
     @Override
     public Query creteQuery() throws ParseException {
-        return QueryBuilders.hasChild(i -> i.type("project_customfield")
-                .query(j -> j.term(n -> n.field(field).value(value))));
+        Query q = null;
+        //自定义栏位日期和数字类型
+        if (field.equals("custom_field.field_type")) {
+            fieldType = value;
+        }
+        if ((fieldType.equals("0") || fieldType.equals("1")) && field.equals("custom_field.field_value.raw")) {
+            if (fieldType.equals("0")) {
+                if (value.contains("-")) {
+                    String frontPart = value.substring(0, value.indexOf("-"));
+                    String afterPart = value.substring(value.indexOf("-") + 1);
+                    q = QueryBuilders.range(n -> n.field(field).gte(JsonData.of(frontPart)).lte(JsonData.of(afterPart)));
+                } else {
+                    q = QueryBuilders.term(n -> n.field(field).value(value));
+                }
+            } else {
+                if (value.contains("-")) {
+
+                } else {
+
+                }
+            }
+        } else if ((fieldType.equals("0") || fieldType.equals("1")) && field.equals("custom_field.stats_value.raw")) {
+            if (fieldType.equals("0")) {
+                if (value.contains("-")) {
+                    String frontPart = value.substring(0, value.indexOf("-"));
+                    String afterPart = value.substring(value.indexOf("-") + 1);
+                    q = QueryBuilders.range(n -> n.field(field).gte(JsonData.of(frontPart)).lte(JsonData.of(afterPart)));
+                } else {
+                    q = QueryBuilders.term(n -> n.field(field).value(value));
+                }
+            } else {
+                if (value.contains("-")) {
+
+                } else {
+
+                }
+            }
+        } else {
+            q = QueryBuilders.term(n -> n.field(field).value(value));
+        }
+        Query finalQ = q;
+        Query query = QueryBuilders.hasChild(i -> i.type("project_customfield")
+                .query(finalQ));
+        return query;
     }
 
     @Override
@@ -58,4 +102,12 @@ public class CustomChildQueryBuilder implements IQueryBuilder {
     public void setPath(String path) {
         this.path = path;
     }
+
+    public String getFieldType() {
+        return fieldType;
+    }
+
+    public void setFieldType(String fieldType) {
+        this.fieldType = fieldType;
+    }
 }

+ 0 - 1
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/IQueryBuilder.java

@@ -1,6 +1,5 @@
 package cn.cslg.pas.factorys.EsBuilderFactory;
 
-import cn.cslg.pas.common.model.cronModel.SqlObject;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 
 import java.text.ParseException;

+ 6 - 2
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildCountAnalysisBuilder.java

@@ -20,6 +20,7 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public Integer topN = 10;
     public String path = "";
     public Boolean ifHaveChild = false;
+    //0数字,1日期,2文本,4单选,5多选,6树,7产品8产品类别9技术分类
     public String fieldType = null;
     public String fieldId = null;
     private String format;
@@ -30,9 +31,7 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
         Aggregation aggregation = null;
         List<Query> queryList = new ArrayList<>();
         Query q1 = QueryBuilders.term(i -> i.field("custom_field.field").value(fieldId));
-//        Query q2 = QueryBuilders.term(i -> i.field("custom_field.field_type").value(fieldType));
         queryList.add(q1);
-//        queryList.add(q2);
         Aggregation termAgg = null;
         if (ifHaveChild) {
 
@@ -70,6 +69,11 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
                     queryList.add(query);
                 } else if (StringUtils.isNotEmpty(valueOne) && StringUtils.isNotEmpty(valueTwo)) {
                     //日期/数字
+                    if (fieldType.equals(0)) {
+
+                    } else if (fieldType.equals(1)) {
+
+                    }
                     String start = valueOne.substring(0, valueOne.indexOf("-"));
                     String end = valueOne.substring(valueOne.indexOf("-") + 1);
                     Query query = QueryBuilders.range(range -> range.field("custom_field.field_value.raw")

+ 15 - 0
src/main/java/cn/cslg/pas/mapper/InvalidReport/ProjectFigureMapper.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.mapper.InvalidReport;
+
+import cn.cslg.pas.domain.business.EvidenceReason;
+import cn.cslg.pas.domain.business.ProjectFigure;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ *
+ * @author lrj
+ * @date 2023/12/25
+ */
+@Repository
+public interface ProjectFigureMapper extends BaseMapper<ProjectFigure> {
+}

+ 5 - 0
src/main/java/cn/cslg/pas/service/business/ImportTaskService.java

@@ -130,9 +130,11 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         } catch (Exception e) {
             throw new UnLoginException("未登录");
         }
+
         if(importTaskDTO.getType()==null){
             importTaskDTO.setType(4);
         }
+
         ImportTaskCondition importTaskCondition = new ImportTaskCondition();
         if (importTaskDTO.getImportToType().equals(0)) {
             importTaskCondition.setProjectType(0);
@@ -157,6 +159,9 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         importTaskCondition.setOrderBy(importTaskDTO.getOrderBy());
         importTaskCondition.setOrderByType(importTaskDTO.getOrderByType());
         importTaskCondition.setCreateId(personnelVO.getId());
+
+       String fieldJson= JsonUtils.objectToJson(importTaskCondition);
+        importTaskCondition.setCustomFields(fieldJson);
         importTaskCondition.insert();
 
         //装载任务

+ 39 - 0
src/main/java/cn/cslg/pas/service/business/InvalidStatutesService.java

@@ -1,7 +1,11 @@
 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.utils.GenerateObjectUtil;
 import cn.cslg.pas.common.vo.invalidVO.InvalidStatutesVO;
+import cn.cslg.pas.domain.business.AssoGroupFeature;
 import cn.cslg.pas.domain.business.InvalidStatutes;
 import cn.cslg.pas.domain.business.PatentClaim;
 import cn.cslg.pas.domain.business.SystemDict;
@@ -14,6 +18,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -164,4 +169,38 @@ public class InvalidStatutesService extends ServiceImpl<InvalidStatutesMapper, I
             return;
         }
     }
+
+
+
+    /**
+     * 更新信息
+     *
+     * @param updateMessageDTO
+     * @return
+     */
+    public Boolean updateMessage(@RequestBody UpdateMessageDTO updateMessageDTO) {
+        List<Integer> ids = updateMessageDTO.getIds();
+        List<DomainFieldDTO> domainFieldDTOS = updateMessageDTO.getFieldList();
+        for (Integer id : ids) {
+            InvalidStatutes invalidStatutes = this.getById(id);
+            if (invalidStatutes == null) {
+                throw new XiaoShiException("法条不存在");
+
+            }
+            if (domainFieldDTOS == null || domainFieldDTOS.size() == 0) {
+                throw new XiaoShiException("请输入值");
+            }
+            domainFieldDTOS.forEach(item -> {
+                try {
+                    if (item.getValue() != null) {
+                        GenerateObjectUtil.setObjectProperty(invalidStatutes, item.getField(), item.getValue());
+                    }
+                } catch (Exception e) {
+                    throw new XiaoShiException("装载失败");
+                }
+            });
+            invalidStatutes.updateById();
+        }
+        return true;
+    }
 }

+ 17 - 0
src/main/java/cn/cslg/pas/service/business/ProofGroupService.java

@@ -192,4 +192,21 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper, ProofGroup>
         return proofGroupVO;
 
     }
+
+
+    /**
+     * 查询详情
+     *
+     * @param ids
+     * @return
+     */
+    public Boolean removeProofGroup(List<Integer> ids) {
+        if(ids==null||ids.size()==0){
+            throw new XiaoShiException("请至少选择一个组合");
+        }
+        this.removeBatchByIds(ids);
+        return true;
+
+
+    }
 }

+ 22 - 7
src/main/java/cn/cslg/pas/service/business/es/EsCountService.java

@@ -36,11 +36,9 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class EsCountService {
     private final List<String> childList = Arrays.asList("field");
-    private final List<String> nestedList = Arrays.asList("applicant", "inventor", "rightHolder", "standerApplicant",
-            "mergeApplicant", "standerRightHolder", "mergeRightHolder");
-    private final List<String> dateList = Arrays.asList("publicDate", "appDate", "grantDate");
-    private final List<String> numberList = Arrays.asList("quotePatentNoNum", "quotedPatentNoNum", "simpleFamilyNum",
-            "inpadocFamilyNum", "patsnapFamilyNum");
+    private final List<String> nestedList = Arrays.asList("PA", "IN", "PE", "SAT", "MAT", "SRH", "MRH");
+    private final List<String> dateList = Arrays.asList("PD", "AD", "GD");
+    private final List<String> numberList = Arrays.asList("QPN", "QDPN", "SFN", "IFN", "PFN");
 
 
     private final ElasticsearchClient client;
@@ -513,6 +511,18 @@ public class EsCountService {
                     .sorted(Comparator.comparing(EsCountDetailDTO::getName).reversed()).limit(topN).collect(Collectors.toList());
             detailDTOS.addAll(collect);
         }
+
+        EsCountDetailDTO countDTO = new EsCountDetailDTO();
+        countDTO.setField(field);
+        countDTO.setName("其他");
+        if (list.size() > topN) {
+            countDTO.setNumber((long)(list.size() - topN));
+
+        } else {
+            countDTO.setNumber((long)0);
+        }
+        countDTO.setTopN(topN);
+        detailDTOS.add(countDTO);
     }
 
     /**
@@ -525,7 +535,6 @@ public class EsCountService {
      */
     public void getDateAnalysisDTOS(Aggregate agg, String field, Integer topN, List<EsCountDetailDTO> detailDTOS,EsCountDTO esCountDTO) {
         List<RangeBucket> list1 = agg.dateRange().buckets().array();
-//        esCountDTO.setAllNumber(Long.valueOf(String.valueOf(list1.size())));
         List<EsCountDetailDTO> esCountDetailDTOS = new ArrayList<>();
         for (RangeBucket bucket : list1) {
             EsCountDetailDTO dto = new EsCountDetailDTO();
@@ -551,8 +560,14 @@ public class EsCountService {
      * @param field
      * @param detailDTOS
      */
-    public void getNestedCountDTOS(Aggregate agg, String field,Integer topN, List<EsCountDetailDTO> detailDTOS) {
+    public void getNestedCountDTOS(Aggregate agg, String field, Integer topN, List<EsCountDetailDTO> detailDTOS) {
         Aggregate termsAgg = agg.nested().aggregations().get("terms_agg");
+        EsCountDetailDTO countDTO = new EsCountDetailDTO();
+        countDTO.setField(field);
+        countDTO.setName("其他");
+        countDTO.setNumber(termsAgg.sterms().sumOtherDocCount());
+        countDTO.setTopN(topN);
+        detailDTOS.add(countDTO);
         List<StringTermsBucket> list = termsAgg.sterms().buckets().array();
         list.forEach(bucket -> {
             EsCountDetailDTO dto = new EsCountDetailDTO();

+ 9 - 8
src/main/java/cn/cslg/pas/service/business/es/EsCustomFieldService.java

@@ -52,6 +52,7 @@ public class EsCustomFieldService {
         Integer optionType = esCustomFieldDTO.getOptionType();
         String patentNo = esCustomFieldDTO.getPatentNo();
         String fieldId = esCustomFieldDTO.getFieldId();
+        String patentId = esCustomFieldDTO.getPatentId();
         List<String> addValues = esCustomFieldDTO.getFieldValue();
         Integer projectId = esCustomFieldDTO.getProjectId();
         Date createDate = new Date();
@@ -134,8 +135,7 @@ public class EsCustomFieldService {
                         esCustomField.setFieldValue(new ArrayList<>());
                         esCustomField.setStatsValue(new ArrayList<>());
                     }
-                }
-                else if(optionType.equals(0)){
+                } else if (optionType.equals(0)) {
                     List<String> orgValue = esCustomField.getFieldValue();
 
                     if (orgValue == null) {
@@ -248,7 +248,7 @@ public class EsCustomFieldService {
             esCustomFieldHistory.setCustomFieldId(id);
             this.addCustomFieldHistory(esCustomFieldHistory);
         } else {
-          this.addEsCustomFieldToEs(esCustomField,patentNo);
+            this.addEsCustomFieldToEs(esCustomField, patentNo, patentId);
         }
         return id;
     }
@@ -298,8 +298,7 @@ public class EsCustomFieldService {
         if (taskId == null) {
             Query q5 = QueryBuilders.exists((t -> t.field("custom_field.task_id")));
             bool = QueryBuilders.bool(i -> i.must(q1, q2, q3, q4).mustNot(q5));
-        }
-        else {
+        } else {
             Query q5 = QueryBuilders.term((t -> t.field("custom_field.task_id").value(taskId)));
             bool = QueryBuilders.bool(i -> i.must(q1, q2, q3, q4, q5));
         }
@@ -320,10 +319,12 @@ public class EsCustomFieldService {
     }
 
     //将自定义字段添加到专利
-    public String addEsCustomFieldToEs(ESCustomField esCustomField, String patentNo) throws Exception {
+    public String addEsCustomFieldToEs(ESCustomField esCustomField, String patentNo, String patentId) throws Exception {
         //根据专利号查询专利
-        PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(patentNo);
-        String patentId = patentWithIdVO.getId();
+        if (patentId == null) {
+            PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(patentNo);
+            patentId = patentWithIdVO.getId();
+        }
         Patent patentChild = new Patent();
         PatentJoin patentJoin = new PatentJoin();
         patentJoin.setParent(patentId);

+ 24 - 17
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -15,12 +15,14 @@ import cn.cslg.pas.common.utils.parseQueryToTree.expressManager;
 import cn.cslg.pas.common.utils.parseQueryToTree.operateNode;
 import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
 import cn.cslg.pas.common.vo.ContentVO;
+import cn.cslg.pas.common.vo.EsConfigVO;
 import cn.cslg.pas.common.vo.PatentPageMessageVO;
 import cn.cslg.pas.common.vo.PatentWithIdVO;
 import cn.cslg.pas.common.vo.business.PatentKinDetailVO;
 import cn.cslg.pas.common.vo.business.PatentKinVO;
 import cn.cslg.pas.common.vo.business.PatentNoVO;
 import cn.cslg.pas.domain.es.*;
+import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.query.FormatQueryService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.SortOrder;
@@ -281,23 +283,28 @@ public class EsPatentService {
         builder.query(q);
         //排序
         List<OrderDTO> dtoList = queryRequest.getOrderDTOList();
-//        if (!CollectionUtils.isEmpty(dtoList)) {
-//            for (OrderDTO orderDTO : dtoList) {
-//                if (orderDTO.getOrderType().equals(IfConstant.NO)) {
-//                    builder.sort(sortOptionsBuilder -> sortOptionsBuilder
-//                            .field(fieldSortBuilder -> fieldSortBuilder
-//                                    .field(orderDTO.getOrderBy()).order(SortOrder.Asc)));
-//                } else {
-//                    builder.sort(sortOptionsBuilder -> sortOptionsBuilder
-//                            .field(fieldSortBuilder -> fieldSortBuilder
-//                                    .field(orderDTO.getOrderBy()).order(SortOrder.Desc)));
-//                }
-//            }
-//        } else {
-//            builder.sort(sortOptionsBuilder -> sortOptionsBuilder
-//                    .field(fieldSortBuilder -> fieldSortBuilder
-//                            .field("patent_no.keyword").order(SortOrder.Desc)));
-//        }
+        if (!CollectionUtils.isEmpty(dtoList)) {
+            String json = CommonService.readJsonFile("patent.json");
+            List<EsConfigVO> esConfigVOS = JSON.parseArray(json, EsConfigVO.class);
+            for (OrderDTO orderDTO : dtoList) {
+                EsConfigVO configVO = esConfigVOS.stream().filter(item -> item.getField().equals(orderDTO.getOrderBy())).findFirst().orElse(null);
+                if (configVO != null) {
+                    if (orderDTO.getOrderType().equals(IfConstant.NO)) {
+                        builder.sort(sortOptionsBuilder -> sortOptionsBuilder
+                                .field(fieldSortBuilder -> fieldSortBuilder
+                                        .field(configVO.getEsField()).order(SortOrder.Asc)));
+                    } else {
+                        builder.sort(sortOptionsBuilder -> sortOptionsBuilder
+                                .field(fieldSortBuilder -> fieldSortBuilder
+                                        .field(configVO.getEsField()).order(SortOrder.Desc)));
+                    }
+                }
+            }
+        } else {
+            builder.sort(sortOptionsBuilder -> sortOptionsBuilder
+                    .field(fieldSortBuilder -> fieldSortBuilder
+                            .field("patent_no.keyword").order(SortOrder.Desc)));
+        }
         //分页
         if (current > 0 && size > 0) {
             builder.from(current.intValue()).size(size.intValue());

+ 12 - 60
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -131,9 +131,6 @@ public class EsService {
         //判断表达式
         if (queryRequest instanceof StringRequest) {
             searchCondition = ((StringRequest) queryRequest).getSearchQuery();
-//            if (searchCondition.contains("~")) {
-//                searchCondition = this.getDateRangeStr(searchCondition);
-//            }
         } else if (queryRequest instanceof MapRequest) {
             Map<String, Object> map = ((MapRequest) queryRequest).getSearchQuery();
             StringBuilder stringBuilder = new StringBuilder();
@@ -227,63 +224,6 @@ public class EsService {
         return dto;
     }
 
-    public String getDateRangeStr(String str) {
-        String condition = "";
-        if (str.contains("AD")) {
-            String s = str.substring(str.indexOf("AD")).toUpperCase(Locale.ROOT);
-            String key = s.substring(0, s.indexOf("="));
-            String s1 = s.substring(s.indexOf("=") + 1, s.indexOf("~"));
-            String s2 = "";
-            if (s.contains("AND")) {
-                s2 = s.substring(s.indexOf("~") + 1, s.indexOf("AND"));
-            } else {
-                s2 = s.substring(s.indexOf("~") + 1).trim();
-            }
-            int index = str.indexOf(key);
-            int index1 = str.indexOf(s2) + s2.length();
-            String substring = str.substring(index, index1);
-            String concat = key.concat(">=").concat(s1).concat(" and ").concat(key).concat("<=").concat(s2);
-            String replace = str.replace(substring, concat);
-            str = replace;
-        }
-        if (str.contains("PD")) {
-            String s = str.substring(str.indexOf("PD")).toUpperCase(Locale.ROOT);
-            String key = s.substring(0, s.indexOf("="));
-            String s1 = s.substring(s.indexOf("=") + 1, s.indexOf("~"));
-            String s2 = "";
-            if (s.contains("AND")) {
-                s2 = s.substring(s.indexOf("~") + 1, s.indexOf("AND"));
-            } else {
-                s2 = s.substring(s.indexOf("~") + 1).trim();
-            }
-            int index = str.indexOf(key);
-            int index1 = str.indexOf(s2) + s2.length();
-            String substring = str.substring(index, index1);
-            String concat = key.concat(">=").concat(s1).concat(" and ").concat(key).concat("<=").concat(s2);
-            String replace = str.replace(substring, concat);
-            str = replace;
-        }
-        if (str.contains("GD")) {
-            String s = str.substring(str.indexOf("GD")).toUpperCase(Locale.ROOT);
-            String key = s.substring(0, s.indexOf("="));
-            String s1 = s.substring(s.indexOf("=") + 1, s.indexOf("~"));
-            String s2 = "";
-            if (s.contains("AND")) {
-                s2 = s.substring(s.indexOf("~") + 1, s.indexOf("AND"));
-            } else {
-                s2 = s.substring(s.indexOf("~") + 1).trim();
-            }
-            int index = str.indexOf(key);
-            int index1 = index + key.length() + s1.length() + 2 + s2.length();
-            String substring = str.substring(index, index1);
-            String concat = key.concat(">=").concat(s1).concat(" and ").concat(key).concat("<=").concat(s2);
-            String replace = str.replace(substring, concat);
-            str = replace;
-        }
-        condition = str;
-        return condition;
-    }
-
     /**
      * 解析自定义栏位和值
      *
@@ -326,6 +266,18 @@ public class EsService {
 
     public void appendStr(EsCustomFieldValueDTO customField, StringBuilder builder, int m, boolean ifHaveChild) {
         builder.append("field").append("=").append(customField.getFieldId());
+        String fieldType = customField.getFieldType();
+        if (StringUtils.isNotEmpty(fieldType)) {
+            if (fieldType.equals("Integer")) {
+                fieldType = "0";
+                builder.append(" ").append("and").append(" ")
+                        .append("fieldType").append("=").append(fieldType);
+            } else if (fieldType.equals("DateTime")) {
+                fieldType = "1";
+                builder.append(" ").append("and").append(" ")
+                        .append("fieldType").append("=").append(fieldType);
+            }
+        }
         List<String> values = customField.getFieldValue();
         if (!CollectionUtils.isEmpty(values)) {
             builder.append(" ").append("and").append(" ");

+ 30 - 1
src/main/java/cn/cslg/pas/service/business/invalidReport/AssoGroupFeatureService.java

@@ -179,7 +179,7 @@ public class AssoGroupFeatureService extends ServiceImpl<AssoGroupFeatureMapper,
         return true;
     }
 
-    public List<GroupFeatureHistoryVO> queryFeatureHistory(QueryFeatureHistoryDTO queryFeatureHistoryDTO) {
+    public List<AssoGroupFeature> getHistory(QueryFeatureHistoryDTO queryFeatureHistoryDTO) {
         List<AssoGroupFeature> assoGroupFeatures = new ArrayList<>();
         Integer featureGroupId = queryFeatureHistoryDTO.getFeatureGroupId();
         //根据特征id查询证据组合和特征关联
@@ -211,6 +211,12 @@ public class AssoGroupFeatureService extends ServiceImpl<AssoGroupFeatureMapper,
         if (assoGroupFeature2 != null) {
             assoGroupFeatures.add(assoGroupFeature2);
         }
+        return assoGroupFeatures;
+
+    }
+
+    public List<GroupFeatureHistoryVO> queryFeatureHistory(QueryFeatureHistoryDTO queryFeatureHistoryDTO) {
+        List<AssoGroupFeature> assoGroupFeatures = this.getHistory(queryFeatureHistoryDTO);
         //装载历史
         List<GroupFeatureHistoryVO> groupFeatureHistoryVOS = this.loadFeatureHistory(assoGroupFeatures);
         return groupFeatureHistoryVOS;
@@ -368,4 +374,27 @@ public class AssoGroupFeatureService extends ServiceImpl<AssoGroupFeatureMapper,
         }
         return true;
     }
+
+
+    public Boolean removeAssoWithHistory(List<Integer> assoIds) {
+        List<Integer> ids = new ArrayList<>();
+        //查询
+        if (assoIds == null || assoIds.size() == 0) {
+            return false;
+        }
+        assoIds.forEach(item -> {
+            QueryFeatureHistoryDTO queryFeatureHistoryDTO = new QueryFeatureHistoryDTO();
+            queryFeatureHistoryDTO.setFeatureGroupId(item);
+            List<AssoGroupFeature> assoGroupFeatures = this.getHistory(queryFeatureHistoryDTO);
+            if (assoGroupFeatures.size() > 0) {
+                List<Integer> temIds = assoGroupFeatures.stream().map(AssoGroupFeature::getId).collect(Collectors.toList());
+                ids.addAll(temIds);
+            }
+        });
+        if(ids.size()>0){
+            this.removeByIds(ids);
+        }
+        return true;
+
+    }
 }

+ 46 - 25
src/main/java/cn/cslg/pas/service/business/invalidReport/EvidenceReasonService.java

@@ -55,8 +55,8 @@ public class EvidenceReasonService extends ServiceImpl<EvidenceReasonMapper, Evi
     @Transactional(rollbackFor = Exception.class)
     public Boolean addEvidenceReason(AddEvidenceReasonDTO addEvidenceReasonDTO) {
 
-        PersonnelVO personnelVO = new PersonnelVO();
-        personnelVO.setId("1");
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+
         Integer groupId = addEvidenceReasonDTO.getGroupId();
         Integer gen = addEvidenceReasonDTO.getGen();
         List<AddEvidenceReasonsDTO> addEvidenceReasonsDTOs = addEvidenceReasonDTO.getEvidenceReasonList();
@@ -85,11 +85,11 @@ public class EvidenceReasonService extends ServiceImpl<EvidenceReasonMapper, Evi
 
         }
 
-
         List<Integer> assoIds = new ArrayList<>();
         if (gen.equals(0)) {
             LambdaQueryWrapper<AssoGroupFeature> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(AssoGroupFeature::getGroupId, groupId);
+            queryWrapper.eq(AssoGroupFeature::getGroupId, groupId)
+                    .eq(AssoGroupFeature::getGroupId, gen);
             List<AssoGroupFeature> assoGroupFeatures = assoGroupFeatureService.list(queryWrapper);
             assoIds = assoGroupFeatures.stream().map(AssoGroupFeature::getId).collect(Collectors.toList());
         }
@@ -118,12 +118,14 @@ public class EvidenceReasonService extends ServiceImpl<EvidenceReasonMapper, Evi
                     assoGroupFeature.insert();
                     featureGroupId = assoGroupFeature.getId();
                 } else {
-                    assoIds.remove(featureId);
+                    assoIds.remove(featureGroupId);
+                }
+                if (assoIds.size() != 0) {
+                    //删除关联以及历史
+                    assoGroupFeatureService.removeAssoWithHistory(assoIds);
                 }
             }
-            if (assoIds.size() != 0) {
-                assoGroupFeatureService.removeByIds(assoIds);
-            }
+
             //添加无效理由
             Integer reasonId = this.addEvidenceReason(addEvidenceReasonsDTO, personnelVO.getId());
             //根据特征证据组合关联id 删除和无效理由关联
@@ -205,11 +207,11 @@ public class EvidenceReasonService extends ServiceImpl<EvidenceReasonMapper, Evi
                 //查询特征历史
                 QueryFeatureHistoryDTO queryFeatureHistoryDTO = new QueryFeatureHistoryDTO();
                 queryFeatureHistoryDTO.setFeatureGroupId(featureGroupId);
-                List<GroupFeatureHistoryVO> queryFeatureHistories = assoGroupFeatureService.queryFeatureHistory(queryFeatureHistoryDTO);
+                List<AssoGroupFeature> queryFeatureHistories = assoGroupFeatureService.getHistory(queryFeatureHistoryDTO);
 
                 Integer n = gen >= queryFeatureHistories.size() - 1 ? queryFeatureHistories.size() - 1 : gen;
-                GroupFeatureHistoryVO item = queryFeatureHistories.get(n);
-                Integer newFeatureGroupId = item.getFeatureGroupId();
+                AssoGroupFeature item = queryFeatureHistories.get(n);
+                Integer newFeatureGroupId = item.getId();
 
                 //根据特征id 查询无效理由
                 LambdaQueryWrapper<AssoFeatureReason> queryWrapper1 = new LambdaQueryWrapper<>();
@@ -227,26 +229,44 @@ public class EvidenceReasonService extends ServiceImpl<EvidenceReasonMapper, Evi
                         queryEvidenceReasonVO.setGroupId(groupId);
                         queryEvidenceReasonVO.setFeatureGroupId(featureGroupId);
                         queryEvidenceReasonVO.setFeatureHistories(queryFeatureHistories);
-                        //装载特征陈述信息
-                        queryEvidenceReasonVO.setFCommon(item.getCommon());
-                        queryEvidenceReasonVO.setFIfPresentOpinions1(item.getIfPresentOpinions1());
-                        queryEvidenceReasonVO.setFIfPresentOpinions2(item.getIfPresentOpinions2());
-                        queryEvidenceReasonVO.setFPresentOpinions1(item.getPresentOpinions1());
-                        queryEvidenceReasonVO.setFIfPresentOpinions2(item.getIfPresentOpinions2());
-                        queryEvidenceReasonVO.setFInvalidReasonDetail1(item.getInvalidReasonDetail1());
-                        queryEvidenceReasonVO.setFInvalidReasonDetail2(item.getInvalidReasonDetail2());
-                        queryEvidenceReasonVO.setFRbDecisionKey(item.getRbDecisionKey());
-                        queryEvidenceReasonVO.setFRbOpinions(item.getRbOpinions());
 
+                        //装载特征陈述信息
+                        queryEvidenceReasonVO.setFeCommon(item.getCommon());
+                        queryEvidenceReasonVO.setFeIfPresentOpinions1(item.getIfPresentOpinions1());
+                        queryEvidenceReasonVO.setFeIfPresentOpinions2(item.getIfPresentOpinions2());
+                        queryEvidenceReasonVO.setFePresentOpinions1(item.getPresentOpinions1());
+                        queryEvidenceReasonVO.setFeIfPresentOpinions2(item.getIfPresentOpinions2());
+                        queryEvidenceReasonVO.setFeInvalidReasonDetail1(item.getInvalidReasonDetail1());
+                        queryEvidenceReasonVO.setFeInvalidReasonDetail2(item.getInvalidReasonDetail2());
+                        queryEvidenceReasonVO.setFeRbDecisionKey(item.getRbDecisionKey());
+                        queryEvidenceReasonVO.setFeRbOpinions(item.getRbOpinions());
+
+                        queryEvidenceReasonVO.setFeCourtOpinions1(item.getCourtOpinions1());
+                        queryEvidenceReasonVO.setFeCourtOpinions2(item.getCourtOpinions2());
+                        queryEvidenceReasonVO.setFeProsecutorOpinions1(item.getProsecutorOpinions1());
+                        queryEvidenceReasonVO.setFeProsecutorOpinions2(item.getProsecutorOpinions2());
+                        queryEvidenceReasonVO.setFeThirdOpinions1((item.getThirdOpinions1()));
+                        queryEvidenceReasonVO.setFeThirdOpinions2(item.getThirdOpinions2());
+                        queryEvidenceReasonVO.setFeRespondentOpinions1(item.getRespondentOpinions1());
+                        queryEvidenceReasonVO.setFeRespondentOpinions2(item.getRespondentOpinions2());
                         //根据无效理由id 查询无效理由
                         EvidenceReason evidenceReason = this.getById(assoFeatureReason.getReasonId());
                         if (evidenceReason != null) {
                             queryEvidenceReasonVO.setEvidenceText(evidenceReason.getEvidenceText());
                             queryEvidenceReasonVO.setEvidenceDescription(evidenceReason.getDescription());
-                            queryEvidenceReasonVO.setRPresentOpinions1(evidenceReason.getPresentOpinions1());
-                            queryEvidenceReasonVO.setRRbDecisionKey(evidenceReason.getRbDecisionKey());
-                            queryEvidenceReasonVO.setRIfPresentOpinions1(evidenceReason.getIfPresentOpinions1());
-                            queryEvidenceReasonVO.setRRbOpinions(evidenceReason.getRbOpinions());
+                            queryEvidenceReasonVO.setErPresentOpinions1(evidenceReason.getPresentOpinions1());
+                            queryEvidenceReasonVO.setErRbDecisionKey(evidenceReason.getRbDecisionKey());
+                            queryEvidenceReasonVO.setErIfPresentOpinions1(evidenceReason.getIfPresentOpinions1());
+                            queryEvidenceReasonVO.setErRbOpinions(evidenceReason.getRbOpinions());
+
+                            queryEvidenceReasonVO.setErCourtOpinions1(evidenceReason.getCourtOpinions1());
+                            queryEvidenceReasonVO.setErCourtOpinions2(evidenceReason.getCourtOpinions2());
+                            queryEvidenceReasonVO.setErProsecutorOpinions1(evidenceReason.getProsecutorOpinions1());
+                            queryEvidenceReasonVO.setErProsecutorOpinions2(evidenceReason.getProsecutorOpinions2());
+                            queryEvidenceReasonVO.setErThirdOpinions1((evidenceReason.getThirdOpinions1()));
+                            queryEvidenceReasonVO.setErThirdOpinions2(evidenceReason.getThirdOpinions2());
+                            queryEvidenceReasonVO.setErRespondentOpinions1(evidenceReason.getRespondentOpinions1());
+                            queryEvidenceReasonVO.setErRespondentOpinions2(evidenceReason.getRespondentOpinions2());
                             queryEvidenceReasonVO.setEvidenceReasonId(evidenceReason.getId());
                         }
                         //根据无效理由id查询对比文献
@@ -374,4 +394,5 @@ public class EvidenceReasonService extends ServiceImpl<EvidenceReasonMapper, Evi
         return true;
 
     }
+
 }

+ 23 - 31
src/main/java/cn/cslg/pas/service/business/invalidReport/PatentClaimHistoryService.java

@@ -33,9 +33,10 @@ public class PatentClaimHistoryService extends ServiceImpl<PatentClaimHistoryMap
 
     /**
      * 修改权利要求
+     *
      * @param alterPatentClaimDTO
      */
-    public Integer alterPatentClaim(AlterPatentClaimDTO alterPatentClaimDTO){
+    public Integer alterPatentClaim(AlterPatentClaimDTO alterPatentClaimDTO) {
         if (alterPatentClaimDTO == null) {
             throw new XiaoShiException("入参为空");
         }
@@ -53,10 +54,11 @@ public class PatentClaimHistoryService extends ServiceImpl<PatentClaimHistoryMap
 
     /**
      * 编辑权利要求历史
+     *
      * @param editPatentClaimHistoryDTO
      * @return
      */
-    public Integer editPatentClaimHistory(EditPatentClaimHistoryDTO editPatentClaimHistoryDTO){
+    public Integer editPatentClaimHistory(EditPatentClaimHistoryDTO editPatentClaimHistoryDTO) {
         if (editPatentClaimHistoryDTO == null) {
             throw new XiaoShiException("入参为空");
         }
@@ -72,10 +74,11 @@ public class PatentClaimHistoryService extends ServiceImpl<PatentClaimHistoryMap
 
     /**
      * 查询权利要求修改历史
+     *
      * @param patentClaimDTO
      * @return
      */
-    public PatentClaimHistoryVO queryPatentClaimHistory(PatentClaimDTO patentClaimDTO){
+    public PatentClaimHistoryVO queryPatentClaimHistory(PatentClaimDTO patentClaimDTO) {
         PatentClaimHistoryVO patentClaimHistoryVO = new PatentClaimHistoryVO();
 
         if (patentClaimDTO == null) {
@@ -99,10 +102,11 @@ public class PatentClaimHistoryService extends ServiceImpl<PatentClaimHistoryMap
 
     /**
      * 装载原始权要
+     *
      * @param claimId
      * @return
      */
-    public QueryPatentClaimHistoryVO loadOriginalVO(Integer claimId){
+    public QueryPatentClaimHistoryVO loadOriginalVO(Integer claimId) {
         QueryPatentClaimHistoryVO originalClaimVO = new QueryPatentClaimHistoryVO();
         LambdaQueryWrapper<PatentClaim> getOriginalWrapper = new LambdaQueryWrapper<>();
         getOriginalWrapper.eq(PatentClaim::getId, claimId);
@@ -114,45 +118,33 @@ public class PatentClaimHistoryService extends ServiceImpl<PatentClaimHistoryMap
         return originalClaimVO;
     }
 
-    public Map<Integer, QueryPatentClaimHistoryVO> loadHistoryVO(Integer claimId){
+    public Map<Integer, QueryPatentClaimHistoryVO> loadHistoryVO(Integer claimId) {
         Map<Integer, QueryPatentClaimHistoryVO> historyVOMap = new HashMap<>();
 
         LambdaQueryWrapper<PatentClaimHistory> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(PatentClaimHistory::getClaimId, claimId);
         List<PatentClaimHistory> patentClaimHistoryList = this.list(queryWrapper);
         if (!patentClaimHistoryList.isEmpty()) {
-            if (patentClaimHistoryList.size() == 1 || patentClaimHistoryList.size() == 2) {
-                //只有一次修改
+            PatentClaimHistory patentClaimHistory1 = patentClaimHistoryList.stream().filter(item -> item.getIfFirst().equals(true)).findFirst().orElse(null);
+            PatentClaimHistory patentClaimHistory2 = patentClaimHistoryList.stream().filter(item -> item.getIfFirst().equals(false)).findFirst().orElse(null);
+            if (patentClaimHistory1 != null) {
                 QueryPatentClaimHistoryVO firstClaimVO = new QueryPatentClaimHistoryVO();
-                PatentClaimHistory patentClaimHistory = patentClaimHistoryList.get(0);
-                if (patentClaimHistory.getIfFirst() == false) {
-                    throw new XiaoShiException("历史错误");
-                }
-                //历史id
-                firstClaimVO.setClaimHistoryId(patentClaimHistory.getId());
-                BeanUtils.copyProperties(patentClaimHistory, firstClaimVO);
+                firstClaimVO.setClaimHistoryId(patentClaimHistory1.getId());
+                BeanUtils.copyProperties(patentClaimHistory1, firstClaimVO);
                 historyVOMap.put(1, firstClaimVO);
             }
-            if (patentClaimHistoryList.size() == 2) {
-                //修改了两次
+            if (patentClaimHistory2 != null) {
                 QueryPatentClaimHistoryVO secondClaimVO = new QueryPatentClaimHistoryVO();
-                PatentClaimHistory patentClaimHistory = patentClaimHistoryList.get(1);
-                if (patentClaimHistory.getIfFirst() == true) {
-                    throw new XiaoShiException("历史错误");
-                }
-                //历史id
-                secondClaimVO.setClaimHistoryId(patentClaimHistory.getId());
-                BeanUtils.copyProperties(patentClaimHistory, secondClaimVO);
+                secondClaimVO.setClaimHistoryId(patentClaimHistory2.getId());
+                BeanUtils.copyProperties(patentClaimHistory2, secondClaimVO);
                 historyVOMap.put(2, secondClaimVO);
-            } else {
-                throw new XiaoShiException("查询错误");
             }
         }
         return historyVOMap;
     }
 
 
-    public void deletePatentClaim(PatentClaimDTO patentClaimDTO){
+    public void deletePatentClaim(PatentClaimDTO patentClaimDTO) {
         Integer claimId = patentClaimDTO.getClaimId();
         //判空
         Boolean ifFirst = patentClaimDTO.getIfFirst();
@@ -303,7 +295,7 @@ public class PatentClaimHistoryService extends ServiceImpl<PatentClaimHistoryMap
                     List<PatentClaimHistory> ifExist = this.list(queryWrapper1);
                     if (!ifExist.isEmpty()) {
                         List<PatentClaimHistory> secondHistories = new ArrayList<>();
-                         sortLaterIds.forEach(item -> {
+                        sortLaterIds.forEach(item -> {
                             LambdaQueryWrapper<PatentClaimHistory> queryWrapper2 = new LambdaQueryWrapper<>();
                             queryWrapper2.eq(PatentClaimHistory::getIfFirst, ifFirst)
                                     .eq(PatentClaimHistory::getClaimId, item)
@@ -337,9 +329,9 @@ public class PatentClaimHistoryService extends ServiceImpl<PatentClaimHistoryMap
                                     patentClaimHistories.add(patentClaimHistory1);
                                 }
                             }
-                         });
-                         this.saveBatch(patentClaimHistories);
-                         this.updateBatchById(secondHistories);
+                        });
+                        this.saveBatch(patentClaimHistories);
+                        this.updateBatchById(secondHistories);
                     } else {
                         // 待新增的权利要求
                         secondFilter.forEach(item -> {
@@ -359,7 +351,7 @@ public class PatentClaimHistoryService extends ServiceImpl<PatentClaimHistoryMap
     }
 
 
-    public List<PatentClaim> getAllPatentClaims(Integer claimId){
+    public List<PatentClaim> getAllPatentClaims(Integer claimId) {
         LambdaQueryWrapper<PatentClaim> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(PatentClaim::getId, claimId);
         PatentClaim patentClaim = patentClaimService.getOne(queryWrapper, false);

+ 134 - 0
src/main/java/cn/cslg/pas/service/business/invalidReport/ProjectFigureService.java

@@ -0,0 +1,134 @@
+package cn.cslg.pas.service.business.invalidReport;
+
+import cn.cslg.pas.common.dto.invalidDTO.ProjectFigureDTO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.vo.invalidVO.ProjectFigureVO;
+import cn.cslg.pas.domain.business.PatentClaim;
+import cn.cslg.pas.domain.business.ProjectFigure;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.InvalidReport.PatentClaimMapper;
+import cn.cslg.pas.mapper.InvalidReport.ProjectFigureMapper;
+import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class ProjectFigureService extends ServiceImpl<ProjectFigureMapper, ProjectFigure> {
+    @Autowired
+    private PermissionService permissionService;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+    public Boolean updateProjectFigure(ProjectFigureDTO projectFigureDTO) {
+
+        Integer id = projectFigureDTO.getId();
+
+        ProjectFigure projectFigure = new ProjectFigure();
+        BeanUtils.copyProperties(projectFigureDTO, projectFigure);
+
+        //编辑
+        if (id != null) {
+            ProjectFigure projectFigure1 = this.getById(id);
+            if (projectFigure1 == null) {
+                throw new XiaoShiException("更新失败");
+            }
+            projectFigure.setProjectId(projectFigure1.getProjectId());
+            projectFigure.setCreateId(projectFigure1.getCreateId());
+            projectFigure.setId(id);
+            projectFigure.setCreateTime(projectFigure1.getCreateTime());
+            projectFigure.updateById();
+        }
+        //新增
+        else {
+            PersonnelVO personnelVO = new PersonnelVO();
+            personnelVO.setId("1");
+            projectFigure.setCreateId(personnelVO.getId());
+            projectFigure.insert();
+
+        }
+        return true;
+    }
+
+    public List<ProjectFigureVO> queryProjectFigureVOs(ProjectFigureDTO projectFigureDTO) {
+        Integer projectId = projectFigureDTO.getProjectId();
+        //根据报告id 查询
+        LambdaQueryWrapper<ProjectFigure> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ProjectFigure::getProjectId, projectId);
+        List<ProjectFigure> projectFigures = this.list(queryWrapper);
+        List<ProjectFigureVO> projectFigureVOS = this.loadVos(projectFigures);
+        return projectFigureVOS;
+    }
+
+
+    private List<ProjectFigureVO> loadVos(List<ProjectFigure> projectFigures) {
+        List<ProjectFigureVO> projectFigureVOS = new ArrayList<>();
+        if (projectFigures == null || projectFigures.size() == 0) {
+            return projectFigureVOS;
+        }
+        List<String> createIds = projectFigures.stream().map(ProjectFigure::getCreateId).collect(Collectors.toList());
+        List<String> guids =projectFigures.stream().map(ProjectFigure::getFileGuid).collect(Collectors.toList());
+         List<SystemFile> systemFiles =new ArrayList<>();
+        //查询创建人名称
+        List<Personnel> personnels = new ArrayList<>();
+        if (createIds.size() != 0) {
+            try {
+                String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+                JSONObject jsonObject = JSONObject.parseObject(res);
+                personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+            } catch (Exception e) {
+
+                throw new XiaoShiException("获取人员信息错误");
+            }
+        }
+
+        //查询文件
+        if (guids.size() != 0) {
+            try {
+                String res = fileManagerService.getSystemFileFromFMS(guids);
+                if (res != null && !res.trim().equals("")) {
+                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                }
+            } catch (Exception e) {
+                throw new XiaoShiException("装载错误");
+            }
+        }
+
+        for (ProjectFigure projectFigure : projectFigures) {
+            ProjectFigureVO projectFigureVO = new ProjectFigureVO();
+            BeanUtils.copyProperties(projectFigure, projectFigureVO);
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(projectFigure.getCreateId())).findFirst().orElse(null);
+            SystemFile systemFile =systemFiles.stream().filter(item->item.getGuid().equals(projectFigure.getFileGuid())).findFirst().orElse(null);
+
+            if (personnel != null) {
+                projectFigureVO.setCreateName(personnel.getPersonnelName());
+            }
+
+            if(systemFile!=null){
+              projectFigureVO.setSystemFile(systemFile);
+            }
+            projectFigureVOS.add(projectFigureVO);
+        }
+
+        return projectFigureVOS;
+
+    }
+
+    public Boolean removeProjectFigure(List<Integer> ids) {
+        if(ids==null||ids.size()==0){
+            throw new XiaoShiException("请至少选择一个附图");
+        }
+        this.removeBatchByIds(ids);
+        return true;
+    }
+}

+ 5 - 6
src/main/java/cn/cslg/pas/service/query/FormatQueryService.java

@@ -244,12 +244,11 @@ public class FormatQueryService {
                 condition = queryRequest.getGroupField() + "=" + queryRequest.getGroupFieldValue();
             }
         }
-        if(queryRequest.getProjectId()!=null){
+        if (queryRequest.getProjectId() != null) {
             if (condition != null && condition != "") {
-                condition += " AND " + "project_id"+ "=" +queryRequest.getProjectId();
-            }
-            else {
-                condition = "project_id"+ "=" +queryRequest.getProjectId();
+                condition += " AND " + "project_id" + "=" + queryRequest.getProjectId();
+            } else {
+                condition = "project_id" + "=" + queryRequest.getProjectId();
             }
         }
 
@@ -453,7 +452,7 @@ public class FormatQueryService {
                     Query q2 = this.HandleValueNode(field, operate, (treeNode) valeNode.getRight(), configName,"",dp);
                     switch (operate1.getShowName()) {
                         case "AND":
-                            return  QueryBuilders.bool(i -> i.must(q1, q2));
+                            return QueryBuilders.bool(i -> i.must(q1, q2));
                         case "OR":
                             return QueryBuilders.bool(i -> i.should(q1, q2));
                         case "NOT":

+ 45 - 45
src/main/resources/jsons/esCountAnalysis.json

@@ -3,7 +3,7 @@
     "name": "IPC分类号一级",
     "type": "String",
     "value": "ipcLevel1",
-    "field": "ipcLevel1",
+    "field": "IC",
     "esField": "mipc.level1",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -15,7 +15,7 @@
     "name": "IPC分类号二级",
     "type": "String",
     "value": "ipcLevel2",
-    "field": "ipcLevel2",
+    "field": "IC2",
     "esField": "mipc.level2",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -27,7 +27,7 @@
     "name": "IPC分类号三级",
     "type": "String",
     "value": "ipcLevel3",
-    "field": "ipcLevel3",
+    "field": "IC3",
     "esField": "mipc.level3",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -39,7 +39,7 @@
     "name": "IPC分类号四级",
     "type": "String",
     "value": "ipcLevel4",
-    "field": "ipcLevel4",
+    "field": "IC4",
     "esField": "mipc.level4",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -51,7 +51,7 @@
     "name": "IPC分类号五级",
     "type": "String",
     "value": "ipcLevel5",
-    "field": "ipcLevel5",
+    "field": "IC5",
     "esField": "mipc.level5",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -63,7 +63,7 @@
     "name": "CPC分类号一级",
     "type": "String",
     "value": "cpcLevel1",
-    "field": "cpcLevel1",
+    "field": "CPC",
     "esField": "mcpc.level1",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -75,7 +75,7 @@
     "name": "CPC分类号二级",
     "type": "String",
     "value": "cpcLevel2",
-    "field": "cpcLevel2",
+    "field": "CPC2",
     "esField": "mcpc.level2",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -87,7 +87,7 @@
     "name": "CPC分类号三级",
     "type": "String",
     "value": "cpcLevel3",
-    "field": "cpcLevel3",
+    "field": "CPC3",
     "esField": "mcpc.level3",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -99,7 +99,7 @@
     "name": "CPC分类号四级",
     "type": "String",
     "value": "cpcLevel4",
-    "field": "cpcLevel4",
+    "field": "CPC4",
     "esField": "mcpc.level4",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -111,7 +111,7 @@
     "name": "CPC分类号五级",
     "type": "String",
     "value": "cpcLevel5",
-    "field": "cpcLevel5",
+    "field": "CPC5",
     "esField": "mcpc.level5",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -123,7 +123,7 @@
     "name": "UPC分类号一级",
     "type": "String",
     "value": "upcLevel1",
-    "field": "upcLevel1",
+    "field": "UPC",
     "esField": "mupc.level1",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -135,7 +135,7 @@
     "name": "UPC分类号二级",
     "type": "String",
     "value": "upcLevel2",
-    "field": "upcLevel2",
+    "field": "UPC2",
     "esField": "mupc.level2",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -147,7 +147,7 @@
     "name": "UPC分类号三级",
     "type": "String",
     "value": "upcLevel3",
-    "field": "upcLevel3",
+    "field": "UPC3",
     "esField": "mupc.level3",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -159,7 +159,7 @@
     "name": "LOC分类号一级",
     "type": "String",
     "value": "locLevel1",
-    "field": "locLevel1",
+    "field": "LOC",
     "esField": "mloc.level1",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -171,7 +171,7 @@
     "name": "LOC分类号二级",
     "type": "String",
     "value": "locLevel2",
-    "field": "locLevel2",
+    "field": "LOC2",
     "esField": "mloc.level2",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -183,7 +183,7 @@
     "name": "LOC分类号三级",
     "type": "String",
     "value": "locLevel3",
-    "field": "locLevel3",
+    "field": "LOC3",
     "esField": "mloc.level3",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -195,7 +195,7 @@
     "name": "申请人",
     "type": "String",
     "value": "applicant",
-    "field": "applicant",
+    "field": "PA",
     "esField": "applicant.name.key",
     "esClass": "nestedCountAnalysisBuilder",
     "ifSearch": "false",
@@ -207,7 +207,7 @@
     "name": "标准申请人",
     "type": "String",
     "value": "standerApplicant",
-    "field": "standerApplicant",
+    "field": "SAT",
     "esField": "stander_applicant.name.key",
     "esClass": "nestedCountAnalysisBuilder",
     "ifSearch": "false",
@@ -219,7 +219,7 @@
     "name": "合并申请人",
     "type": "String",
     "value": "mergeApplicant",
-    "field": "mergeApplicant",
+    "field": "MAT",
     "esField": "merge_applicant.name.key",
     "esClass": "nestedCountAnalysisBuilder",
     "ifSearch": "false",
@@ -231,7 +231,7 @@
     "name": "权利人",
     "type": "String",
     "value": "rightHolder",
-    "field": "rightHolder",
+    "field": "PE",
     "esField": "right_holder.name.key",
     "esClass": "nestedCountAnalysisBuilder",
     "ifSearch": "false",
@@ -243,7 +243,7 @@
     "name": "标准权利人",
     "type": "String",
     "value": "standerRightHolder",
-    "field": "standerRightHolder",
+    "field": "SRH",
     "esField": "stander_right_holder.name.key",
     "esClass": "nestedCountAnalysisBuilder",
     "ifSearch": "false",
@@ -255,7 +255,7 @@
     "name": "合并权利人",
     "type": "String",
     "value": "mergeRightHolder",
-    "field": "mergeRightHolder",
+    "field": "MRH",
     "esField": "merge_right_holder.name.key",
     "esClass": "nestedCountAnalysisBuilder",
     "ifSearch": "false",
@@ -267,7 +267,7 @@
     "name": "发明人",
     "type": "String",
     "value": "inventor",
-    "field": "inventor",
+    "field": "IN",
     "esField": "inventor.name.key",
     "esClass": "nestedCountAnalysisBuilder",
     "ifSearch": "false",
@@ -279,8 +279,8 @@
     "name": "代理机构",
     "type": "String",
     "value": "agency",
-    "field": "agency",
-    "esField": "agency",
+    "field": "AGN",
+    "esField": "agency.key",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -291,7 +291,7 @@
     "name": "代理人名称",
     "type": "String",
     "value": "agent",
-    "field": "agent",
+    "field": "AG",
     "esField": "agent.key",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -303,7 +303,7 @@
     "name": "公开日",
     "type": "DateTime",
     "value": "publicDate",
-    "field": "publicDate",
+    "field": "PD",
     "esField": "public_date",
     "esClass": "dateCountAnalyssBuilder",
     "ifSearch": "false",
@@ -315,7 +315,7 @@
     "name": "申请日",
     "type": "DateTime",
     "value": "appDate",
-    "field": "appDate",
+    "field": "AD",
     "esField": "app_date",
     "esClass": "dateCountAnalyssBuilder",
     "ifSearch": "false",
@@ -327,7 +327,7 @@
     "name": "授权日",
     "type": "DateTime",
     "value": "grantDate",
-    "field": "grantDate",
+    "field": "GD",
     "esField": "grant_date",
     "esClass": "dateCountAnalyssBuilder",
     "ifSearch": "false",
@@ -339,7 +339,7 @@
     "name": "申请国家(受理局)",
     "type": "String",
     "value": "appCountry",
-    "field": "appCountry",
+    "field": "CO",
     "esField": "app_country",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -351,7 +351,7 @@
     "name": "申请人国家",
     "type": "String",
     "value": "applicantCountry",
-    "field": "applicantCountry",
+    "field": "AAC",
     "esField": "applicant_addr.country",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -363,7 +363,7 @@
     "name": "申请人省份",
     "type": "String",
     "value": "appProvince",
-    "field": "appProvince",
+    "field": "ADP",
     "esField": "applicant_addr.province",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -375,7 +375,7 @@
     "name": "申请人市区",
     "type": "String",
     "value": "appCity",
-    "field": "appCity",
+    "field": "ADC",
     "esField": "applicant_addr.city",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -387,7 +387,7 @@
     "name": "权利人国家",
     "type": "String",
     "value": "rightCountry",
-    "field": "rightCountry",
+    "field": "DZ",
     "esField": "right_holder_addr.country",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -399,7 +399,7 @@
     "name": "权利人省份",
     "type": "String",
     "value": "rightProvince",
-    "field": "rightProvince",
+    "field": "RDP",
     "esField": "right_holder_addr.province",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -411,7 +411,7 @@
     "name": "权利人市区",
     "type": "String",
     "value": "rightCity",
-    "field": "rightCity",
+    "field": "RDC",
     "esField": "right_holder_addr.city",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -435,7 +435,7 @@
     "name": "引用专利数量",
     "type": "Integer",
     "value": "quotePatentNoNum",
-    "field": "quotePatentNoNum",
+    "field": "QPN",
     "esField": "quote_patent_no_num",
     "esClass": "rangeCountAnalysisBuilder",
     "ifSearch": "false",
@@ -447,7 +447,7 @@
     "name": "被引用专利数量",
     "type": "Integer",
     "value": "quotedPatentNoNum",
-    "field": "quotedPatentNoNum",
+    "field": "QDPN",
     "esField": "quoted_patent_no_num",
     "esClass": "rangeCountAnalysisBuilder",
     "ifSearch": "false",
@@ -459,7 +459,7 @@
     "name": "简单同族数量",
     "type": "Integer",
     "value": "simpleFamilyNum",
-    "field": "simpleFamilyNum",
+    "field": "SFN",
     "esField": "simple_family_num",
     "esClass": "rangeCountAnalysisBuilder",
     "ifSearch": "false",
@@ -471,7 +471,7 @@
     "name": "inpadoc同族数量",
     "type": "Integer",
     "value": "inpadocFamilyNum",
-    "field": "inpadocFamilyNum",
+    "field": "IFN",
     "esField": "inpadoc_family_num",
     "esClass": "rangeCountAnalysisBuilder",
     "ifSearch": "false",
@@ -483,7 +483,7 @@
     "name": "扩展同族数量",
     "type": "Integer",
     "value": "patsnapFamilyNum",
-    "field": "patsnapFamilyNum",
+    "field": "PFN",
     "esField": "patsnap_family_num",
     "esClass": "rangeCountAnalysisBuilder",
     "ifSearch": "false",
@@ -495,7 +495,7 @@
     "name": "专利状态",
     "type": "String",
     "value": "simpleStatus",
-    "field": "simpleStatus",
+    "field": "SS",
     "esField": "simple_status",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -507,7 +507,7 @@
     "name": "专利类型",
     "type": "String",
     "value": "patentType",
-    "field": "patentType",
+    "field": "PT",
     "esField": "patent_type",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -519,7 +519,7 @@
     "name": "法律状态",
     "type": "String",
     "value": "legalStatus",
-    "field": "legalStatus",
+    "field": "LG",
     "esField": "legal_status.raw",
     "esClass": "termsCountAnalysisBuilder",
     "ifSearch": "false",
@@ -576,7 +576,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "子文档号",
+    "name": "项目id",
     "type": "String",
     "value": "projectId",
     "field": "projectId",

+ 13 - 1
src/main/resources/jsons/patent.json

@@ -1020,7 +1020,19 @@
     "esClass": "customChildQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "true",
+    "ifShow": "false",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "自定义栏位类型",
+    "type": "String",
+    "value": "fieldType",
+    "field": "fieldType",
+    "esField": "custom_field.field_type",
+    "esClass": "customChildQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
     "ifAsCondition": "true"
   },
   {

+ 1 - 1
src/main/resources/mapper/ReportProjectMapper.xml

@@ -8,7 +8,7 @@
         createId,p.create_time as createTime, rp.report_type as reportType ,p.head_id as headId,p.department_id as
         departmentId,
         p.entrust_type as entrustType,p.entrust_id as entrustId,rp.product_or_tech as productOrTech,rp.cron_description
-        as cronDescription ,rp.status as status from report as rp left join project as p
+        as cronDescription ,rp.status as status,rp.if_second_invalid as ifSecondInvalid from report as rp left join project as p
         on rp.project_id =p.id left join asso_report_cron arc on p.id =arc.project_id
         left join asso_project_event as aspe on p.id =aspe.project_id
         <if test="sql1!=''">

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

@@ -58,8 +58,6 @@ public class AvoidDesignServiceTests {
         Integer size = 1;
         Integer a = gen >= size ? size : gen;
         System.out.println(a);
-//        Integer projectId = 49;
-//        Response response = avoidDesignController.getAvoidDesign(projectId);
-//        System.out.println("-----" + response.getData());
+
     }
 }

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

@@ -44,7 +44,7 @@ String patentNo="CN200920148721.1";
         esCustomField.setStatsValue(Arrays.asList("高相关"));
         esCustomField.setFieldValue(Arrays.asList("高相关"));
         esCustomField.setFieldType(1);
-String a =esCustomFieldService.addEsCustomFieldToEs(esCustomField,patentNo);
+String a =esCustomFieldService.addEsCustomFieldToEs(esCustomField,patentNo,"");
 System.out.println(a);
     }
 

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

@@ -376,7 +376,6 @@ public class EventServiceTests {
 @Test
     public void aaaaa() throws Exception {
         String searchCondition = "AD=[2008~201009]";
-
         treeNode tree = expressManager.getInstance().Parse(searchCondition, false);
 System.out.println(tree);
     }

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

@@ -1,8 +1,10 @@
 package cn.cslg.pas.service;
 
 
+import cn.cslg.pas.common.dto.DomainFieldDTO;
 import cn.cslg.pas.common.dto.invalidDTO.QueryClaimDTO;
 import cn.cslg.pas.common.dto.invalidDTO.SplitClaimDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateClaimMessageDTO;
 import cn.cslg.pas.common.vo.invalidReport.PatentClaimVO;
 import cn.cslg.pas.service.business.invalidReport.PatentClaimService;
 import org.junit.Test;
@@ -11,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @SpringBootTest
@@ -36,5 +39,18 @@ public class PatentClaimServiceTest {
         System.out.println(patentClaimVOS);
     }
 
-
+    @Test
+    public void updateClaimMessage() {
+        List<UpdateClaimMessageDTO> updateClaimMessageDTOs =new ArrayList<>();
+        UpdateClaimMessageDTO updateClaimMessageDTO =new UpdateClaimMessageDTO();
+        updateClaimMessageDTO.setClaimId(56);
+        List<DomainFieldDTO> dtos =new ArrayList<>();
+        DomainFieldDTO dto =new DomainFieldDTO();
+        dto.setField("rbDecision");
+        dto.setValue("复审委决定通过");
+        dtos.add(dto);
+        updateClaimMessageDTO.setDomainFieldDTOs(dtos);
+        updateClaimMessageDTOs.add(updateClaimMessageDTO);
+        patentClaimService.updateClaimMessage(updateClaimMessageDTOs);
+    }
 }

+ 55 - 0
src/test/java/cn/cslg/pas/service/ProjectFigureTest.java

@@ -0,0 +1,55 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.dto.DomainFieldDTO;
+import cn.cslg.pas.common.dto.invalidDTO.ProjectFigureDTO;
+import cn.cslg.pas.common.utils.GenerateObjectUtil;
+import cn.cslg.pas.common.vo.invalidVO.ProjectFigureVO;
+import cn.cslg.pas.controller.AvoidDesignController;
+import cn.cslg.pas.domain.business.FollowUp;
+import cn.cslg.pas.service.business.AvoidDesignService;
+import cn.cslg.pas.service.business.invalidReport.ProjectFigureService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@SpringBootTest
+public class ProjectFigureTest {
+    @Autowired
+    private ProjectFigureService projectFigureService;
+
+
+
+    @Test
+    public void updateProjectFigure() throws Exception {
+        ProjectFigureDTO projectFigureDTO =new ProjectFigureDTO();
+        projectFigureDTO.setProjectId(1);
+        projectFigureDTO.setFigureTitle("附图1");
+        projectFigureDTO.setDescription("描述1");
+        projectFigureDTO.setFileGuid("9174f701fd59459fb155e10d31a3fe60");
+        projectFigureService.updateProjectFigure(projectFigureDTO);
+    }
+
+    @Test
+    public void aa() {
+        ProjectFigureDTO projectFigureDTO =new ProjectFigureDTO();
+        projectFigureDTO.setProjectId(1);
+  List<ProjectFigureVO>   projectFigureVOS=   projectFigureService.queryProjectFigureVOs(projectFigureDTO);
+System.out.println(projectFigureVOS);
+    }
+
+    @Test
+    public void testGet() throws Exception {
+        Integer gen = 2;
+        Integer size = 1;
+        Integer a = gen >= size ? size : gen;
+        System.out.println(a);
+
+    }
+}