Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

lwhhszx 1 anno fa
parent
commit
92c9ae39ba
25 ha cambiato i file con 974 aggiunte e 349 eliminazioni
  1. 14 0
      src/main/java/cn/cslg/pas/common/dto/business/CCPerson.java
  2. 2 2
      src/main/java/cn/cslg/pas/common/dto/business/GetAvoidDesignDTO.java
  3. 0 1
      src/main/java/cn/cslg/pas/common/dto/business/TortDTO.java
  4. 62 0
      src/main/java/cn/cslg/pas/common/dto/business/TortTaskDTO.java
  5. 16 0
      src/main/java/cn/cslg/pas/common/dto/business/TortTaskResultDTO.java
  6. 1 0
      src/main/java/cn/cslg/pas/common/dto/es/EsCustomFieldDTO.java
  7. 32 0
      src/main/java/cn/cslg/pas/common/vo/business/FTOCompareRecordVO.java
  8. 2 0
      src/main/java/cn/cslg/pas/common/vo/business/ProjectTaskVO.java
  9. 2 19
      src/main/java/cn/cslg/pas/common/vo/business/TortVO.java
  10. 2 2
      src/main/java/cn/cslg/pas/controller/AvoidDesignController.java
  11. 2 4
      src/main/java/cn/cslg/pas/controller/PatentController.java
  12. 7 0
      src/main/java/cn/cslg/pas/controller/ProjectTaskController.java
  13. 46 13
      src/main/java/cn/cslg/pas/controller/FTOReportController.java
  14. 48 0
      src/main/java/cn/cslg/pas/domain/business/AssoTaskPerson.java
  15. 13 1
      src/main/java/cn/cslg/pas/domain/business/FTOCompareRecord.java
  16. 14 0
      src/main/java/cn/cslg/pas/mapper/AssoTaskPersonMapper.java
  17. 18 0
      src/main/java/cn/cslg/pas/service/business/AssoTaskPersonService.java
  18. 9 12
      src/main/java/cn/cslg/pas/service/business/AvoidDesignWholeService.java
  19. 0 236
      src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java
  20. 0 2
      src/main/java/cn/cslg/pas/service/business/ProductMessageService.java
  21. 110 9
      src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java
  22. 493 0
      src/main/java/cn/cslg/pas/service/business/TortCompareRecordService.java
  23. 1 1
      src/main/java/cn/cslg/pas/service/business/es/PatentService.java
  24. 62 38
      src/main/resources/jsons/patent.json
  25. 18 9
      src/test/java/cn/cslg/pas/service/EventServiceTests.java

+ 14 - 0
src/main/java/cn/cslg/pas/common/dto/business/CCPerson.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+/**
+ * 抄送人
+ * @Author xiexiang
+ * @Date 2023/12/9
+ */
+@Data
+public class CCPerson {
+    private Boolean ifInner;
+    private String personId;
+}

+ 2 - 2
src/main/java/cn/cslg/pas/common/dto/business/GetAvoidDesignDTO.java

@@ -4,12 +4,12 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 /**
- * 查询回避设计方案DTO
+ * 查询特征拆分DTO
  * @Author xiexiang
  * @Date 2023/12/7
  */
 @Data
-public class GetAvoidDesignDTO {
+public class GetFeatureSplitDTO {
     /**
      * 报告id
      */

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

@@ -38,5 +38,4 @@ public class TortDTO {
      */
     private Integer compareResult;
 
-
 }

+ 62 - 0
src/main/java/cn/cslg/pas/common/dto/business/TortTaskDTO.java

@@ -0,0 +1,62 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 侵权分析协同任务
+ * @Author xiexiang
+ * @Date 2023/12/9
+ */
+@Data
+public class TortTaskDTO {
+    /**
+     * 主题
+     */
+    private String name;
+
+    /**
+     * 报告id
+     */
+    private Integer projectId;
+
+    /**
+     * 0标引任务
+     * 1项目开卷审核任务
+     * 2检索条件任务
+     * 3对比任务
+     * 4协同任务
+     * 5审核任务
+     * 6分配任务
+     * 7专利挖掘一批文件的审核任务
+     */
+    private Integer type;
+
+    /**
+     * 协同人
+     * 内部人员:人员id
+     * 外部人员:人员的邮箱
+     */
+    private String handler;
+
+    /**
+     * 0内部人员1外部人员
+     */
+    private Integer handlerType;
+
+    /**
+     * 截止时间
+     */
+    private Date deadLineTime;
+
+    /**
+     * 抄送人
+     */
+    public List<CCPerson> ccPeople;
+    /**
+     * 备注
+     */
+    private String description;
+}

+ 16 - 0
src/main/java/cn/cslg/pas/common/dto/business/TortTaskResultDTO.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 侵权分析协同任务对比结果DTO
+ * @Author xiexiang
+ * @Date 2023/12/11
+ */
+@Data
+public class TortTaskResultDTO {
+    private Integer taskId;
+    private List<TortDTO> tortDTOS;
+}

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

@@ -22,6 +22,7 @@ public class EsCustomFieldDTO {
 
     /**
      * 栏位类型
+     * 自定义栏位类型(0数字,1日期,2文本,4单选,5多选,6树,7产品8产品类别9技术分类)
      */
     Integer fieldType;
 

+ 32 - 0
src/main/java/cn/cslg/pas/common/vo/business/FTOCompareRecordVO.java

@@ -0,0 +1,32 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+/**
+ * fto对比记录VO
+ * @Author xiexiang
+ * @Date 2023/12/11
+ */
+@Data
+public class FTOCompareRecordVO {
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 标的说明
+     */
+    private String targetDescription;
+
+    /**
+     * 对比说明
+     */
+    private String compareDescription;
+
+    /**
+     * 对比结果
+     * 0字面相同 1等同 2不等同 3待确定
+     */
+    private Integer compareResult;
+}

+ 2 - 0
src/main/java/cn/cslg/pas/common/vo/business/ProjectTaskVO.java

@@ -33,6 +33,8 @@ public class ProjectTaskVO {
 
     private Integer projectType;
 
+    private String patentNo;
+
     /**
      * 0标引任务
      * 1项目开卷审核任务

+ 2 - 19
src/main/java/cn/cslg/pas/common/vo/business/TortVO.java

@@ -39,26 +39,9 @@ public class TortVO {
 
     private Integer sysOrder;
 
-    /**
-     * id
-     */
-    private Integer id;
-
-    /**
-     * 标的说明
-     */
-    private String targetDescription;
+    private FTOCompareRecordVO originalRecordVO;
 
-    /**
-     * 对比说明
-     */
-    private String compareDescription;
-
-    /**
-     * 对比结果
-     * 0字面相同 1等同 2不等同 3待确定
-     */
-    private Integer compareResult;
+    private FTOCompareRecordVO currentRecordVO;
 
     /**
      * 创建人id

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

@@ -56,8 +56,8 @@ public class AvoidDesignController {
 
     @Operation(summary = "查询回避设计方案")
     @PostMapping("/getAvoidDesign")
-    public Response getAvoidDesign(@RequestBody GetAvoidDesignDTO getAvoidDesignDTO) throws Exception {
-        AvoidDesignWholeVO avoidDesignWholeVO = avoidDesignWholeService.getAvoidDesignWhole(getAvoidDesignDTO);
+    public Response getAvoidDesign(@RequestBody GetFeatureSplitDTO getFeatureSplitDTO) throws Exception {
+        AvoidDesignWholeVO avoidDesignWholeVO = avoidDesignWholeService.getAvoidDesignWhole(getFeatureSplitDTO);
         return Response.success(avoidDesignWholeVO);
     }
 

+ 2 - 4
src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -1,12 +1,10 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
-import cn.cslg.pas.common.dto.PatentColumnDTO;
 import cn.cslg.pas.common.dto.PatentDetailDTO;
 import cn.cslg.pas.common.dto.PatentKinDTO;
 import cn.cslg.pas.common.dto.business.EsCountDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
-import cn.cslg.pas.common.model.request.MapRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.business.EsCountVO;
@@ -15,7 +13,7 @@ import cn.cslg.pas.common.vo.business.PatentNoVO;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.factorys.businessFactory.BusinessFactory;
 import cn.cslg.pas.service.business.es.EsCountService;
-import cn.cslg.pas.service.business.es.PatentService;
+import cn.cslg.pas.service.business.es.EsPatentService;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -36,7 +34,7 @@ public class PatentController {
     private EsCountService esCountService;
 
     @Autowired
-    private PatentService patentService;
+    private EsPatentService patentService;
 
     @Operation(summary = "查询专利")
     @PostMapping("/queryPatent")

+ 7 - 0
src/main/java/cn/cslg/pas/controller/ProjectTaskController.java

@@ -101,4 +101,11 @@ public class ProjectTaskController {
             return Response.error("失败");
         }
     }
+
+    @Operation(summary = "根据taskId查询专利号")
+    @GetMapping("/getPatentNoByTaskId")
+    public Response getPatentNoByTaskId(Integer taskId) throws IOException {
+        String patentNo = projectTaskService.getPatentNoByTaskId(taskId);
+        return Response.success(patentNo);
+    }
 }

+ 46 - 13
src/main/java/cn/cslg/pas/controller/FTOReportController.java

@@ -1,19 +1,17 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
-import cn.cslg.pas.common.dto.business.GetAvoidDesignDTO;
-import cn.cslg.pas.common.dto.business.ProductMessageDTO;
-import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
+import cn.cslg.pas.common.dto.business.*;
 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.business.ProductMessageVO;
 import cn.cslg.pas.common.vo.business.TortCompareRecordVO;
 import cn.cslg.pas.exception.ConditionException;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
-import cn.cslg.pas.service.business.FTOCompareRecordService;
+import cn.cslg.pas.service.business.TortCompareRecordService;
 import cn.cslg.pas.service.business.ProductMessageService;
+import cn.cslg.pas.service.business.ProjectTaskService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,18 +21,20 @@ import java.util.ArrayList;
 import java.util.List;
 
 /**
- * FTO
+ * FTOTort
  * @Author xiexiang
  * @Date 2023/12/8
  */
 @Slf4j
-@RequestMapping(Constants.API_XiaoSHI + "/fto")
+@RequestMapping(Constants.API_XiaoSHI + "/tort")
 @RestController
-public class FTOReportController {
+public class TortController {
     @Autowired
     private ProductMessageService productMessageService;
     @Autowired
-    private FTOCompareRecordService ftoCompareRecordService;
+    private TortCompareRecordService tortCompareRecordService;
+    @Autowired
+    private ProjectTaskService projectTaskService;
 
     @Operation(summary = "编辑/保存标的产品信息")
     @PostMapping("/addProductMessage")
@@ -60,7 +60,7 @@ public class FTOReportController {
         if (tortCompareRecordDTO != null) {
             List<Integer> ids = new ArrayList<>();
             try {
-                ids = ftoCompareRecordService.addTortCompareRecord(tortCompareRecordDTO);
+                ids = tortCompareRecordService.addTortCompareRecord(tortCompareRecordDTO);
             } catch (Exception e) {
                 if (e instanceof XiaoShiException) {
                     return Response.error(e.getMessage());
@@ -78,11 +78,44 @@ public class FTOReportController {
         }
     }
 
-    @Operation(summary = "查询侵权分析对比结果")
+    @Operation(summary = "发起人查询侵权分析对比结果(包含拆分特征)")
     @PostMapping("/getTortCompareRecord")
-    public Response getTortCompareRecord(@RequestBody GetAvoidDesignDTO getAvoidDesignDTO) throws Exception {
-        TortCompareRecordVO tortCompareRecordVO = ftoCompareRecordService.getTortCompareRecord(getAvoidDesignDTO);
+    public Response getTortCompareRecord(@RequestBody GetFeatureSplitDTO getFeatureSplitDTO) throws Exception {
+        TortCompareRecordVO tortCompareRecordVO = tortCompareRecordService.getTortCompareRecord(getFeatureSplitDTO);
+        return Response.success(tortCompareRecordVO);
+    }
+
+    @Operation(summary = "添加侵权分析协同任务")
+    @PostMapping("/addTortTask")
+    public Response addTortTask(@RequestBody TortTaskDTO tortTaskDTO){
+        Integer id = projectTaskService.addTortTask(tortTaskDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "保存侵权分析协同任务对比结果")
+    @PostMapping("/addTortTaskResult")
+    public Response addTortTaskResult(@RequestBody TortTaskResultDTO tortTaskResultDTO){
+        List<Integer> ids = tortCompareRecordService.addTortTaskResult(tortTaskResultDTO);
+        Records records = new Records();
+        records.setData(ids);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询侵权分析协同前后对比结果")
+    @GetMapping("/getAllTortTaskResult")
+    public Response getAllTortTaskResult(Integer taskId){
+        TortCompareRecordVO tortCompareRecordVO = tortCompareRecordService.getAllTortTaskResult(taskId);
         return Response.success(tortCompareRecordVO);
     }
 
+    @Operation(summary = "发起人保存侵权分析协同后最终的对比结果")
+    @PostMapping("/addFinalTortResult")
+    public Response addFinalTortResult(@RequestBody TortCompareRecordDTO tortCompareRecordDTO){
+        List<Integer> ids = tortCompareRecordService.addFinalTortResult(tortCompareRecordDTO);
+        Records records = new Records();
+        records.setData(ids);
+        return Response.success(records);
+    }
 }

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

@@ -0,0 +1,48 @@
+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 java.util.Date;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/9
+ */
+@Data
+@TableName("asso_task_person")
+public class AssoTaskPerson extends BaseEntity<AssoTaskPerson> {
+    /**
+     * 任务id
+     */
+    @TableField(value = "task_id")
+    private Integer taskId;
+
+    /**
+     * 人员id
+     */
+    @TableField(value = "person_id")
+    private String personId;
+
+    /**
+     * 人员id
+     * 是否是内部人员,true则为人员id,false则为邮箱
+     */
+    @TableField(value = "if_inner")
+    private Boolean ifInner;
+
+    /**
+     * 创建人id
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+}

+ 13 - 1
src/main/java/cn/cslg/pas/domain/business/FTOCompareRecord.java

@@ -46,7 +46,7 @@ public class FTOCompareRecord extends BaseEntity<FTOCompareRecord> {
     /**
      * 特征id
      */
-    @TableField(value = "featureId")
+    @TableField(value = "feature_id")
     private Integer featureId;
 
     /**
@@ -56,6 +56,18 @@ public class FTOCompareRecord extends BaseEntity<FTOCompareRecord> {
     private Integer projectTaskId;
 
     /**
+     * 是否原始
+     */
+    @TableField(value = "if_original")
+    private Boolean ifOriginal;
+
+    /**
+     * 是否最终
+     */
+    @TableField(value = "if_final")
+    private Boolean ifFinal;
+
+    /**
      * 创建人id
      */
     @TableField(value = "create_id")

+ 14 - 0
src/main/java/cn/cslg/pas/mapper/AssoTaskPersonMapper.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.AssoTaskPerson;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 任务与抄送人关联表
+ * @Author xiexiang
+ * @Date 2023/12/9
+ */
+@Repository
+public interface AssoTaskPersonMapper extends BaseMapper<AssoTaskPerson> {
+}

+ 18 - 0
src/main/java/cn/cslg/pas/service/business/AssoTaskPersonService.java

@@ -0,0 +1,18 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.domain.business.AssoTaskPerson;
+import cn.cslg.pas.mapper.AssoTaskPersonMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 任务与抄送人关联Service
+ * @Author xiexiang
+ * @Date 2023/12/9
+ */
+@Service
+@Slf4j
+public class AssoTaskPersonService extends ServiceImpl<AssoTaskPersonMapper, AssoTaskPerson> {
+}

+ 9 - 12
src/main/java/cn/cslg/pas/service/business/AvoidDesignWholeService.java

@@ -1,8 +1,7 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.AvoidDesignWholeDTO;
-import cn.cslg.pas.common.dto.business.GetAvoidDesignDTO;
-import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.dto.business.GetFeatureSplitDTO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
@@ -16,12 +15,10 @@ import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AvoidDesignWholeMapper;
 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.context.annotation.Bean;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
@@ -80,22 +77,22 @@ public class AvoidDesignWholeService extends ServiceImpl<AvoidDesignWholeMapper,
 
     /**
      * 查询回避设计方案
-     * @param getAvoidDesignDTO
+     * @param getFeatureSplitDTO
      * @return
      */
-    public AvoidDesignWholeVO getAvoidDesignWhole(GetAvoidDesignDTO getAvoidDesignDTO) throws IOException {
+    public AvoidDesignWholeVO getAvoidDesignWhole(GetFeatureSplitDTO getFeatureSplitDTO) throws IOException {
         //判断参数不能为空
-        Integer projectId = getAvoidDesignDTO.getProjectId();
+        Integer projectId = getFeatureSplitDTO.getProjectId();
         if (projectId == null) {
             throw new XiaoShiException("projectId为空");
         }
-        if (getAvoidDesignDTO.getIfReSplit() == null) {
+        if (getFeatureSplitDTO.getIfReSplit() == null) {
             throw new XiaoShiException("ifReSplit不能为空");
         }
-        if (getAvoidDesignDTO.getSplitBy() == null) {
+        if (getFeatureSplitDTO.getSplitBy() == null) {
             throw new XiaoShiException("splitBy不能为空");
         }
-        if (getAvoidDesignDTO.getSplitType() == null) {
+        if (getFeatureSplitDTO.getSplitType() == null) {
             throw new XiaoShiException("splitType不能为空");
         }
         //返回的VO类
@@ -108,11 +105,11 @@ public class AvoidDesignWholeService extends ServiceImpl<AvoidDesignWholeMapper,
         String patentNo = reportProject.getSignPatentNo();
         //新建查询拆分特征DTO
         SplitVO splitVO = new SplitVO();
-        BeanUtils.copyProperties(getAvoidDesignDTO, splitVO);
+        BeanUtils.copyProperties(getFeatureSplitDTO, splitVO);
         splitVO.setPatentNo(patentNo);
         List<PatentRightVo> patentRightVos = new ArrayList<>();
         //判断是否重拆
-        if (getAvoidDesignDTO.getIfReSplit() == true) {//重拆
+        if (getFeatureSplitDTO.getIfReSplit() == true) {//重拆
             //重拆需要清空原有特征表、回避设计方向表、回避设计总体方向表
             //清空回避设计方向表
             LambdaQueryWrapper<AvoidDesign> deleteWrapper = new LambdaQueryWrapper<>();

+ 0 - 236
src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java

@@ -1,236 +0,0 @@
-package cn.cslg.pas.service.business;
-
-import cn.cslg.pas.common.dto.business.GetAvoidDesignDTO;
-import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
-import cn.cslg.pas.common.dto.business.TortDTO;
-import cn.cslg.pas.common.model.cronModel.PersonnelVO;
-import cn.cslg.pas.common.utils.CacheUtils;
-import cn.cslg.pas.common.utils.LoginUtils;
-import cn.cslg.pas.common.vo.PatentRightVo;
-import cn.cslg.pas.common.vo.business.SplitVO;
-import cn.cslg.pas.common.vo.business.TortCompareRecordVO;
-import cn.cslg.pas.common.vo.business.TortRightVO;
-import cn.cslg.pas.common.vo.business.TortVO;
-import cn.cslg.pas.domain.business.AvoidDesign;
-import cn.cslg.pas.domain.business.FTOCompareRecord;
-import cn.cslg.pas.domain.business.Feature;
-import cn.cslg.pas.domain.business.ReportProject;
-import cn.cslg.pas.exception.UnLoginException;
-import cn.cslg.pas.exception.XiaoShiException;
-import cn.cslg.pas.mapper.FTOCompareRecordMapper;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.extern.slf4j.Slf4j;
-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;
-
-/**
- * FTO对比记录的Service层
- * @Author xiexiang
- * @Date 2023/12/8
- */
-@Service
-@Slf4j
-public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper, FTOCompareRecord> {
-    @Autowired
-    private CacheUtils cacheUtils;
-
-    @Autowired
-    private LoginUtils loginUtils;
-
-    @Autowired
-    private FeatureService featureService;
-
-    @Autowired
-    private ReportProjectService reportProjectService;
-
-    /**
-     * 新增侵权对比结果
-     *
-     * @param tortCompareRecordDTO
-     * @return
-     */
-    public List<Integer> addTortCompareRecord(TortCompareRecordDTO tortCompareRecordDTO) {
-        //获取登录人信息
-        PersonnelVO personnelVO = new PersonnelVO();
-        try {
-            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-        } catch (Exception e) {
-            throw new UnLoginException("未登录");
-        }
-        Integer projectId = tortCompareRecordDTO.getProjectId();
-        if (projectId == null) {
-            throw new XiaoShiException("projectId不能为空");
-        }
-        //根据projctId查询出专利号
-        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ReportProject::getProjectId, projectId);
-        List<ReportProject> reportProjects = reportProjectService.list(queryWrapper);
-        String patentNo = "";
-        if (!reportProjects.isEmpty()) {
-            ReportProject reportProject = reportProjects.get(0);
-            patentNo = reportProject.getSignPatentNo();
-        } else {
-            throw new XiaoShiException("未查询到报告专利号");
-        }
-        List<TortDTO> tortDTOS = tortCompareRecordDTO.getTortDTOS();
-        //根据专利号和projectId,删除特征
-        LambdaQueryWrapper<Feature> deleteWrapper = new LambdaQueryWrapper<>();
-        deleteWrapper.eq(Feature::getPatentNo, patentNo)
-                .eq(Feature::getProjectId, projectId);
-        featureService.remove(deleteWrapper);
-        //根据报告id删除侵权对比结果数据
-        LambdaQueryWrapper<FTOCompareRecord> deleteWrapper2 = new LambdaQueryWrapper<>();
-        deleteWrapper2.eq(FTOCompareRecord::getProjectId, projectId);
-        this.remove(deleteWrapper2);
-        //新增侵权对比结果集合
-        List<FTOCompareRecord> ftoCompareRecords = new ArrayList<>();
-        //遍历传入集合
-        if (!tortDTOS.isEmpty()) {
-            for (TortDTO tortDTO : tortDTOS) {
-                Feature feature = new Feature();
-                feature.setRightSort(tortDTO.getRightSort());
-                feature.setPatentNo(patentNo);
-                feature.setProjectId(projectId);
-                feature.setContent(tortDTO.getContent());
-                feature.setExplainText(tortDTO.getExplainText());
-                feature.setCreateId(personnelVO.getId());
-                feature.setRightType(tortDTO.getRightType());
-                feature.insert();
-                //获取特征id
-                Integer featureId = feature.getId();
-                if (tortDTO.getCompareResult() != null || tortDTO.getCompareDescription() != null || tortDTO.getTargetDescription() != null) {
-                    //插入侵权分析对比结果
-                    FTOCompareRecord ftoCompareRecord = new FTOCompareRecord();
-                    ftoCompareRecord.setProjectId(projectId);
-                    ftoCompareRecord.setFeatureId(featureId);
-                    ftoCompareRecord.setCompareResult(tortDTO.getCompareResult());
-                    ftoCompareRecord.setCompareDescription(tortDTO.getCompareDescription());
-                    ftoCompareRecord.setTargetDescription(tortDTO.getTargetDescription());
-                    ftoCompareRecord.setCreateId(personnelVO.getId());
-                    ftoCompareRecords.add(ftoCompareRecord);
-                }
-            }
-            List<Integer> ids = new ArrayList<>();
-            if (!ftoCompareRecords.isEmpty()) {
-                this.saveBatch(ftoCompareRecords);
-                ids = ftoCompareRecords.stream().map(FTOCompareRecord::getId).collect(Collectors.toList());
-            }
-            return ids;
-        } else {
-            throw new XiaoShiException("未传入特征集合");
-        }
-    }
-
-    public TortCompareRecordVO getTortCompareRecord(GetAvoidDesignDTO getAvoidDesignDTO){
-        //判断参数不能为空
-        Integer projectId = getAvoidDesignDTO.getProjectId();
-        if (projectId == null) {
-            throw new XiaoShiException("projectId为空");
-        }
-        if (getAvoidDesignDTO.getIfReSplit() == null) {
-            throw new XiaoShiException("ifReSplit不能为空");
-        }
-        if (getAvoidDesignDTO.getSplitBy() == null) {
-            throw new XiaoShiException("splitBy不能为空");
-        }
-        if (getAvoidDesignDTO.getSplitType() == null) {
-            throw new XiaoShiException("splitType不能为空");
-        }
-        //返回的VO类
-        TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
-        tortCompareRecordVO.setProjectId(projectId);
-        //根据projectId查询专利号
-        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ReportProject::getProjectId, projectId);
-        ReportProject reportProject = reportProjectService.getOne(queryWrapper, false);
-        String patentNo = reportProject.getSignPatentNo();
-        //新建查询拆分特征DTO
-        SplitVO splitVO = new SplitVO();
-        BeanUtils.copyProperties(getAvoidDesignDTO, splitVO);
-        splitVO.setPatentNo(patentNo);
-        List<PatentRightVo> patentRightVos = new ArrayList<>();
-        //判断是否重拆
-        if (getAvoidDesignDTO.getIfReSplit() == true) {//重拆
-            //重拆需要清空原有特征表、对比结果表
-            LambdaQueryWrapper<FTOCompareRecord> deleteWrapper = new LambdaQueryWrapper<>();
-            deleteWrapper.eq(FTOCompareRecord::getProjectId, projectId);
-            this.remove(deleteWrapper);
-            //清空特征表
-            //根据重拆条件拆分权要保存到特征表
-            try {
-                patentRightVos = featureService.splitPatentFeature(splitVO);
-            } catch (Exception e) {
-                throw new XiaoShiException("查询特征出错");
-            }
-        } else {
-            //不重拆
-            try {
-                patentRightVos = featureService.splitPatentFeature(splitVO);
-            } catch (Exception e) {
-                throw new XiaoShiException("查询特征出错");
-            }
-        }
-        if (!patentRightVos.isEmpty()) {
-            //根据projectId查询
-            //新建权要层信息
-            List<TortRightVO> tortRightVOS = new ArrayList<>();
-            //遍历装载权要层信息
-            patentRightVos.forEach(item -> {
-                TortRightVO tortRightVO = new TortRightVO();
-                BeanUtils.copyProperties(item, tortRightVO);
-                //新建特征与侵权分析对比结果VOS
-                List<TortVO> tortVOS = new ArrayList<>();
-                //特征信息
-                List<Feature> features = item.getFeatures();
-                tortVOS = this.loadTortVO(projectId, features);
-                tortRightVO.setTortVOS(tortVOS);
-                tortRightVOS.add(tortRightVO);
-            });
-            tortCompareRecordVO.setTortRightVOS(tortRightVOS);
-        } else {
-            throw new XiaoShiException("特征查询错误");
-        }
-        return tortCompareRecordVO;
-    }
-
-
-
-
-    public List<TortVO> loadTortVO(Integer projectId, List<Feature> features){
-        List<TortVO> tortVOS = new ArrayList<>();
-        LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(FTOCompareRecord::getProjectId, projectId);
-        List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
-        for (Feature feature : features) {
-            //新建特征与侵权分析对比结果VO
-            TortVO tortVO = new TortVO();
-            //装载特征部分的信息
-            tortVO.setFeatureId(feature.getId());
-            tortVO.setContent(feature.getContent());
-            tortVO.setPatentNo(feature.getPatentNo());
-            tortVO.setRightSort(feature.getRightSort());
-            tortVO.setRightType(feature.getRightType());
-            tortVO.setExplainText(feature.getExplainText());
-            tortVO.setFormId(feature.getFromId());
-            tortVO.setSysOrder(feature.getSysOrder());
-            //装载侵权分析对比结果的部分(可能为空)
-            if (!ftoCompareRecords.isEmpty()) {
-                FTOCompareRecord ftoCompareRecord = ftoCompareRecords.stream().filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId())).findFirst().orElse(null);
-                if (ftoCompareRecord != null) {
-                    tortVO.setId(ftoCompareRecord.getId());
-                    tortVO.setCompareResult(ftoCompareRecord.getCompareResult());
-                    tortVO.setCompareDescription(ftoCompareRecord.getCompareDescription());
-                    tortVO.setTargetDescription(ftoCompareRecord.getTargetDescription());
-                }
-            }
-            tortVOS.add(tortVO);
-        }
-        return tortVOS;
-    }
-}

+ 0 - 2
src/main/java/cn/cslg/pas/service/business/ProductMessageService.java

@@ -190,8 +190,6 @@ public class ProductMessageService extends ServiceImpl<ProductMessageMapper, Pro
                 productMessageVO.setSystemFileList(systemFiles);
             }
             this.loadProductMessageVO(productMessageVO);
-        } else {
-            throw new XiaoShiException("未查询到产品");
         }
         return productMessageVO;
     }

+ 110 - 9
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -74,13 +74,23 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     @Autowired
     private ProjectService projectService;
 
+    @Autowired
+    private AssoTaskPersonService assoTaskPersonService;
+
+    @Autowired
+    private TortCompareRecordService tortCompareRecordService;
+
+    @Autowired
+    private ReportProjectService reportProjectService;
+
 
     /**
      * 项目开卷审核任务
+     *
      * @param patentDigProjectTaskDTO
      * @return
      */
-    public Object  addProjectOpenAuditTask(PatentDigProjectTaskDTO patentDigProjectTaskDTO){
+    public Object addProjectOpenAuditTask(PatentDigProjectTaskDTO patentDigProjectTaskDTO) {
         PatentDigProjectDTO patentDigProjectDTO = patentDigProjectTaskDTO.getPatentDigProjectDTO();
         ProjectTaskDTO projectTaskDTO = patentDigProjectTaskDTO.getProjectTaskDTO();
         //如果专利挖掘项目DTO不为空,则需要先建立专利挖掘项目
@@ -111,10 +121,11 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
     /**
      * 新建任务
+     *
      * @param projectTaskDTO
      * @return
      */
-    public Integer addTask(ProjectTaskDTO projectTaskDTO){
+    public Integer addTask(ProjectTaskDTO projectTaskDTO) {
         //判断专题库id不为空
         if (projectTaskDTO.getProjectId() == null) {
             throw new XiaoShiException("专题库id不能为空!");
@@ -183,15 +194,16 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
     /**
      * 查询任务
+     *
      * @param queryRequest
      * @return
      * @throws Exception
      */
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
-        List<String> sqls = formatQueryService.reSqls(queryRequest,"projectTask");
+        List<String> sqls = formatQueryService.reSqls(queryRequest, "projectTask");
         //根据sql查询任务信息
-        List<ProjectTaskVO> projectTaskVOS = projectTaskMapper.getProjectTask(sqls.get(0),sqls.get(1),sqls.get(2));
+        List<ProjectTaskVO> projectTaskVOS = projectTaskMapper.getProjectTask(sqls.get(0), sqls.get(1), sqls.get(2));
         //查询总数
         Long total = projectTaskMapper.getProjectTaskCount(sqls.get(0));
         //装载事件信息
@@ -206,6 +218,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
     /**
      * 装载任务
+     *
      * @param projectTaskVOS
      * @throws IOException
      */
@@ -267,6 +280,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
     /**
      * 根据任务id查询任务详情以及处理结果以及审核历史
+     *
      * @param taskId
      * @return
      */
@@ -413,6 +427,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
     /**
      * 装载任务详情的集合
+     *
      * @param taskDetailsVO
      * @throws IOException
      */
@@ -534,10 +549,11 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
     /**
      * 取消/完成任务
+     *
      * @param taskId
      * @param type
      */
-    public void finishTask(Integer taskId, Integer type){
+    public void finishTask(Integer taskId, Integer type) {
         //处理人直接完成任务
         LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ProjectTask::getId, taskId);
@@ -640,7 +656,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         return null;
     }
 
-    public List<Project> getProjectInfo(List<Integer> projectIds){
+    public List<Project> getProjectInfo(List<Integer> projectIds) {
         LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.in(Project::getId, projectIds);
         List<Project> projects = projectService.list(queryWrapper);
@@ -660,15 +676,100 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     }
 
     /**
-     * TODO 添加侵权分析审核任务
+     * 添加侵权分析协同任务
      */
-
-    public void addTortTask(){
+    public Integer addTortTask(TortTaskDTO tortTaskDTO) {
         //1.保存任务信息 project_task表
+        if (tortTaskDTO == null) {
+            throw new XiaoShiException("入参不能为空!");
+        }
+        //判断报告id不为空
+        if (tortTaskDTO.getProjectId() == null) {
+            throw new XiaoShiException("报告id不能为空!");
+        }
+        //判断协同人员类型不为空
+        if (tortTaskDTO.getHandlerType() == null) {
+            throw new XiaoShiException("协同人员类型不能为空!");
+        }
+        //判断任务名称不为空
+        tortTaskDTO.setName(tortTaskDTO.getName().trim());
+        String name = tortTaskDTO.getName();
+        if (name == null || name.equals("")) {
+            throw new XiaoShiException("任务名称不能为空!");
+        }
+        tortTaskDTO.setType(4);
+        //获取登录人信息
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        ProjectTask projectTask = new ProjectTask();
+        BeanUtils.copyProperties(tortTaskDTO, projectTask);
+        projectTask.setCreateId(personnelVO.getId());
+        projectTask.setStatus(2);
+        projectTask.insert();
+        Integer taskId = projectTask.getId();
         //2.保存任务和人员关联表信息
+        if (taskId != null) {
+            List<CCPerson> ccPeople = tortTaskDTO.getCcPeople();
+            this.addTaskAndCCPeople(personnelVO.getId(), taskId, ccPeople);
+        } else {
+            throw new XiaoShiException("创建任务失败,未读取到任务id");
+        }
         //3.从侵权分析中获得对比结果,并复制保存
+        tortCompareRecordService.copyTortCompareRecords(tortTaskDTO.getProjectId(), taskId, personnelVO.getId());
         //4.发送邮件通知协同人和抄送人
+        return projectTask.getId();
+    }
 
+    /**
+     * 保存任务和人员关联表信息
+     *
+     * @param taskId
+     * @param ccPeople
+     */
+    public void addTaskAndCCPeople(String createId, Integer taskId, List<CCPerson> ccPeople) {
+        if (createId == null && createId.equals("")) {
+            throw new XiaoShiException("createId不能为空");
+        }
+        if (taskId == null) {
+            throw new XiaoShiException("taskId不能为空");
+        }
+        if (ccPeople != null && !ccPeople.isEmpty()) {
+            List<AssoTaskPerson> assoTaskPeople = new ArrayList<>();
+            ccPeople.forEach(item -> {
+                AssoTaskPerson assoTaskPerson = new AssoTaskPerson();
+                assoTaskPerson.setPersonId(item.getPersonId());
+                assoTaskPerson.setIfInner(item.getIfInner());
+                assoTaskPerson.setTaskId(taskId);
+                assoTaskPerson.setCreateId(createId);
+                assoTaskPeople.add(assoTaskPerson);
+            });
+            assoTaskPersonService.saveBatch(assoTaskPeople);
+        }
     }
 
+    public String getPatentNoByTaskId(Integer taskId) {
+        //根据任务id查询报告id
+        LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ProjectTask::getId, taskId);
+        ProjectTask projectTask = this.getOne(queryWrapper, false);
+        if (projectTask != null) {
+            Integer projectId = projectTask.getProjectId();
+            //根据报告id查询专利号
+            LambdaQueryWrapper<ReportProject> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.eq(ReportProject::getProjectId, projectId);
+            ReportProject reportProject = reportProjectService.getOne(queryWrapper1, false);
+            if (reportProject != null) {
+                String patentNo = reportProject.getSignPatentNo();
+                return patentNo;
+            } else {
+                throw new XiaoShiException("报告为空");
+            }
+        } else {
+            throw new XiaoShiException("projectTask为空");
+        }
+    }
 }

+ 493 - 0
src/main/java/cn/cslg/pas/service/business/TortCompareRecordService.java

@@ -0,0 +1,493 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.GetFeatureSplitDTO;
+import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
+import cn.cslg.pas.common.dto.business.TortDTO;
+import cn.cslg.pas.common.dto.business.TortTaskResultDTO;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.PatentRightVo;
+import cn.cslg.pas.common.vo.RePatentClaim;
+import cn.cslg.pas.common.vo.business.*;
+import cn.cslg.pas.domain.business.FTOCompareRecord;
+import cn.cslg.pas.domain.business.Feature;
+import cn.cslg.pas.domain.business.ProjectTask;
+import cn.cslg.pas.domain.business.ReportProject;
+import cn.cslg.pas.exception.UnLoginException;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.FTOCompareRecordMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * FTO对比记录的Service层
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Service
+@Slf4j
+public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper, FTOCompareRecord> {
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private FeatureService featureService;
+
+    @Autowired
+    private ReportProjectService reportProjectService;
+
+    @Autowired
+    @Lazy
+    private ProjectTaskService projectTaskService;
+
+    /**
+     * 新增侵权对比结果
+     *
+     * @param tortCompareRecordDTO
+     * @return
+     */
+    public List<Integer> addTortCompareRecord(TortCompareRecordDTO tortCompareRecordDTO) {
+        //获取登录人信息
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        Integer projectId = tortCompareRecordDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("projectId不能为空");
+        }
+        //根据projctId查询出专利号
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId, projectId);
+        List<ReportProject> reportProjects = reportProjectService.list(queryWrapper);
+        String patentNo = "";
+        if (!reportProjects.isEmpty()) {
+            ReportProject reportProject = reportProjects.get(0);
+            patentNo = reportProject.getSignPatentNo();
+        } else {
+            throw new XiaoShiException("未查询到报告专利号");
+        }
+        List<TortDTO> tortDTOS = tortCompareRecordDTO.getTortDTOS();
+        //根据专利号和projectId,删除特征
+        LambdaQueryWrapper<Feature> deleteWrapper = new LambdaQueryWrapper<>();
+        deleteWrapper.eq(Feature::getPatentNo, patentNo)
+                .eq(Feature::getProjectId, projectId);
+        featureService.remove(deleteWrapper);
+        //根据报告id删除侵权对比结果数据
+        LambdaQueryWrapper<FTOCompareRecord> deleteWrapper2 = new LambdaQueryWrapper<>();
+        deleteWrapper2.eq(FTOCompareRecord::getProjectId, projectId);
+        this.remove(deleteWrapper2);
+        //新增侵权对比结果集合
+        List<FTOCompareRecord> ftoCompareRecords = new ArrayList<>();
+        //遍历传入集合
+        if (!tortDTOS.isEmpty()) {
+            for (TortDTO tortDTO : tortDTOS) {
+                Feature feature = new Feature();
+                feature.setRightSort(tortDTO.getRightSort());
+                feature.setPatentNo(patentNo);
+                feature.setProjectId(projectId);
+                feature.setContent(tortDTO.getContent());
+                feature.setExplainText(tortDTO.getExplainText());
+                feature.setCreateId(personnelVO.getId());
+                feature.setRightType(tortDTO.getRightType());
+                feature.insert();
+                //获取特征id
+                Integer featureId = feature.getId();
+                if (tortDTO.getCompareResult() != null || tortDTO.getCompareDescription() != null || tortDTO.getTargetDescription() != null) {
+                    //插入侵权分析对比结果
+                    FTOCompareRecord ftoCompareRecord = new FTOCompareRecord();
+                    ftoCompareRecord.setProjectId(projectId);
+                    ftoCompareRecord.setFeatureId(featureId);
+                    ftoCompareRecord.setCompareResult(tortDTO.getCompareResult());
+                    ftoCompareRecord.setCompareDescription(tortDTO.getCompareDescription());
+                    ftoCompareRecord.setTargetDescription(tortDTO.getTargetDescription());
+                    ftoCompareRecord.setCreateId(personnelVO.getId());
+                    ftoCompareRecords.add(ftoCompareRecord);
+                }
+            }
+            List<Integer> ids = new ArrayList<>();
+            if (!ftoCompareRecords.isEmpty()) {
+                this.saveBatch(ftoCompareRecords);
+                ids = ftoCompareRecords.stream().map(FTOCompareRecord::getId).collect(Collectors.toList());
+            }
+            return ids;
+        } else {
+            throw new XiaoShiException("未传入特征集合");
+        }
+    }
+
+    /**
+     * 查询侵权分析对比结果VO
+     * @param getFeatureSplitDTO
+     * @return
+     */
+    public TortCompareRecordVO getTortCompareRecord(GetFeatureSplitDTO getFeatureSplitDTO){
+        //判断参数不能为空
+        Integer projectId = getFeatureSplitDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("projectId为空");
+        }
+        if (getFeatureSplitDTO.getIfReSplit() == null) {
+            throw new XiaoShiException("ifReSplit不能为空");
+        }
+        if (getFeatureSplitDTO.getSplitBy() == null) {
+            throw new XiaoShiException("splitBy不能为空");
+        }
+        if (getFeatureSplitDTO.getSplitType() == null) {
+            throw new XiaoShiException("splitType不能为空");
+        }
+        //返回的VO类
+        TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
+        tortCompareRecordVO.setProjectId(projectId);
+        //根据projectId查询专利号
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId, projectId);
+        ReportProject reportProject = reportProjectService.getOne(queryWrapper, false);
+        String patentNo = reportProject.getSignPatentNo();
+        //新建查询拆分特征DTO
+        SplitVO splitVO = new SplitVO();
+        BeanUtils.copyProperties(getFeatureSplitDTO, splitVO);
+        splitVO.setPatentNo(patentNo);
+        List<PatentRightVo> patentRightVos = new ArrayList<>();
+        //判断是否重拆
+        if (getFeatureSplitDTO.getIfReSplit() == true) {//重拆
+            //重拆需要清空原有特征表、对比结果表
+            LambdaQueryWrapper<FTOCompareRecord> deleteWrapper = new LambdaQueryWrapper<>();
+            deleteWrapper.eq(FTOCompareRecord::getProjectId, projectId);
+            this.remove(deleteWrapper);
+            //清空特征表
+            //根据重拆条件拆分权要保存到特征表
+            try {
+                patentRightVos = featureService.splitPatentFeature(splitVO);
+            } catch (Exception e) {
+                throw new XiaoShiException("查询特征出错");
+            }
+        } else {
+            //不重拆
+            try {
+                patentRightVos = featureService.splitPatentFeature(splitVO);
+            } catch (Exception e) {
+                throw new XiaoShiException("查询特征出错");
+            }
+        }
+        if (!patentRightVos.isEmpty()) {
+            //根据projectId查询
+            //新建权要层信息
+            List<TortRightVO> tortRightVOS = new ArrayList<>();
+            //遍历装载权要层信息
+            patentRightVos.forEach(item -> {
+                TortRightVO tortRightVO = new TortRightVO();
+                BeanUtils.copyProperties(item, tortRightVO);
+                //新建特征与侵权分析对比结果VOS
+                List<TortVO> tortVOS = new ArrayList<>();
+                //特征信息
+                List<Feature> features = item.getFeatures();
+                LambdaQueryWrapper<FTOCompareRecord> queryWrapper2 = new LambdaQueryWrapper<>();
+                queryWrapper2.eq(FTOCompareRecord::getProjectId, projectId);
+                List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper2);
+                tortVOS = this.loadTortVO(features, ftoCompareRecords);
+                tortRightVO.setTortVOS(tortVOS);
+                tortRightVOS.add(tortRightVO);
+            });
+            tortCompareRecordVO.setTortRightVOS(tortRightVOS);
+        } else {
+            throw new XiaoShiException("特征查询错误");
+        }
+        return tortCompareRecordVO;
+    }
+
+    /**
+     * 从侵权分析中获得对比结果,并复制保存
+     * @param projectId
+     * @param taskId
+     * @param createId
+     */
+    public void copyTortCompareRecords(Integer projectId, Integer taskId, String createId){
+        if (projectId != null && taskId != null) {
+            LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(FTOCompareRecord::getProjectId, projectId);
+            List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
+            if (!ftoCompareRecords.isEmpty()) {
+                List<FTOCompareRecord> newTorts = new ArrayList<>();
+                ftoCompareRecords.forEach(item -> {
+                    FTOCompareRecord newTort = new FTOCompareRecord();
+                    newTort.setCompareResult(item.getCompareResult());
+                    newTort.setCompareDescription(item.getCompareDescription());
+                    newTort.setProjectId(projectId);
+                    newTort.setProjectTaskId(taskId);
+                    newTort.setFeatureId(item.getFeatureId());
+                    newTort.setTargetDescription(item.getTargetDescription());
+                    newTort.setIfOriginal(true);
+                    newTort.setIfFinal(false);
+                    newTort.setCreateId(createId);
+                    newTorts.add(newTort);
+                });
+                this.saveBatch(newTorts);
+            }
+        } else {
+            throw new XiaoShiException("projectId不能为空");
+        }
+    }
+
+    /**
+     * 保存侵权分析协同任务结果
+     * @param tortTaskResultDTO
+     */
+    public List<Integer> addTortTaskResult(TortTaskResultDTO tortTaskResultDTO){
+        if (tortTaskResultDTO == null) {
+            throw new XiaoShiException("入参不能为空");
+        }
+        Integer projectId = null;
+        if (tortTaskResultDTO.getTaskId() != null) {
+            LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(ProjectTask::getId, tortTaskResultDTO.getTaskId());
+            ProjectTask projectTask = projectTaskService.getOne(queryWrapper, false);
+            projectId = projectTask.getProjectId();
+        } else {
+            throw new XiaoShiException("任务id不能为空");
+        }
+        //获取登录人信息
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        List<TortDTO> tortDTOS = tortTaskResultDTO.getTortDTOS();
+        List<Integer> ids = new ArrayList<>();
+        if (tortDTOS != null && !tortDTOS.isEmpty()) {
+            List<FTOCompareRecord> ftoCompareRecords = new ArrayList<>();
+            for (TortDTO item : tortDTOS) {
+                if (item.getCompareResult() != null || StringUtils.isNotBlank(item.getCompareDescription()) || StringUtils.isNotBlank(item.getTargetDescription())) {
+                    FTOCompareRecord ftoCompareRecord = new FTOCompareRecord();
+                    ftoCompareRecord.setCompareResult(item.getCompareResult());
+                    ftoCompareRecord.setCompareDescription(item.getCompareDescription());
+                    ftoCompareRecord.setTargetDescription(item.getTargetDescription());
+                    ftoCompareRecord.setFeatureId(item.getFeatureId());
+                    ftoCompareRecord.setProjectId(projectId);
+                    ftoCompareRecord.setProjectTaskId(tortTaskResultDTO.getTaskId());
+                    ftoCompareRecord.setCreateId(personnelVO.getId());
+                    ftoCompareRecord.setIfOriginal(false);
+                    ftoCompareRecord.setIfFinal(false);
+                    ftoCompareRecords.add(ftoCompareRecord);
+                }
+            }
+            if (!ftoCompareRecords.isEmpty()) {
+                //先删除表中原来的
+                LambdaQueryWrapper<FTOCompareRecord> deleteWrapper = new LambdaQueryWrapper<>();
+                deleteWrapper.eq(FTOCompareRecord::getIfOriginal, false)
+                        .eq(FTOCompareRecord::getCreateId, personnelVO.getId())
+                        .eq(FTOCompareRecord::getProjectTaskId, tortTaskResultDTO.getTaskId());
+                this.remove(deleteWrapper);
+                //再更新
+                this.saveBatch(ftoCompareRecords);
+                ids = ftoCompareRecords.stream().map(FTOCompareRecord::getId).collect(Collectors.toList());
+            }
+        }
+        return ids;
+    }
+
+    /**
+     * 查询侵权分析协同前后对比结果
+     * @param taskId
+     * @return
+     */
+    public TortCompareRecordVO getAllTortTaskResult(Integer taskId) {
+        //新建返回VO
+        TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
+        //根据任务id查询报告id
+        LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ProjectTask::getId, taskId);
+        ProjectTask projectTask = projectTaskService.getOne(queryWrapper, false);
+        if (projectTask != null) {
+            Integer projectId = projectTask.getProjectId();
+            tortCompareRecordVO.setProjectId(projectId);
+            //根据报告id查询专利号
+            LambdaQueryWrapper<ReportProject> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.eq(ReportProject::getProjectId, projectId);
+            ReportProject reportProject = reportProjectService.getOne(queryWrapper1, false);
+            if (reportProject != null) {
+                String patentNo = reportProject.getSignPatentNo();
+                //根据专利号查询权要
+                try {
+                    List<PatentRightVo> patentRightVos = new ArrayList<>();
+                    List<RePatentClaim> patentRights = featureService.getRightListByNo(patentNo);
+                    LambdaQueryWrapper<Feature> wrapper = new LambdaQueryWrapper<>();
+                    wrapper.eq(Feature::getProjectId, projectId)
+                            .eq(Feature::getPatentNo, patentNo);
+                    List<Feature> allFeatures = featureService.list(wrapper);
+                    patentRightVos = featureService.loadPatentRightVO(patentRights, allFeatures, projectId, patentNo);
+                    List<TortRightVO> tortRightVOS = this.loadTortRightVOS(taskId, projectId, patentRightVos);
+                    tortCompareRecordVO.setTortRightVOS(tortRightVOS);
+                } catch (Exception e) {
+                    throw new XiaoShiException("未查询到拆分下的权要");
+                }
+            } else {
+                throw new XiaoShiException("未查询到报告");
+            }
+        } else {
+            throw new XiaoShiException("未查询到协同任务");
+        }
+        return tortCompareRecordVO;
+    }
+
+    /**
+     * 根据projectId和权要集合装载返回侵权分析对比结果页面VO
+     * @param projectId
+     * @param taskId
+     * @param patentRightVos
+     * @return
+     */
+    public List<TortRightVO> loadTortRightVOS(Integer taskId, Integer projectId, List<PatentRightVo> patentRightVos){
+        if (patentRightVos != null && !patentRightVos.isEmpty()) {
+            //新建权要层信息
+            List<TortRightVO> tortRightVOS = new ArrayList<>();
+            //遍历装载权要层信息
+            patentRightVos.forEach(item -> {
+                TortRightVO tortRightVO = new TortRightVO();
+                BeanUtils.copyProperties(item, tortRightVO);
+                //新建特征与侵权分析对比结果VOS
+                List<Feature> features = item.getFeatures();
+                LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(FTOCompareRecord::getProjectId, projectId)
+                        .eq(FTOCompareRecord::getProjectTaskId, taskId)
+                        .eq(FTOCompareRecord::getIfFinal, false);
+                List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
+                List<TortVO> tortVOS = this.loadTortVO(features, ftoCompareRecords);
+                tortRightVO.setTortVOS(tortVOS);
+                tortRightVOS.add(tortRightVO);
+            });
+            return tortRightVOS;
+        } else {
+            throw new XiaoShiException("传入权要为空");
+        }
+    }
+
+    /**
+     * 装载特征与对比结果
+     * @param features
+     * @param ftoCompareRecords
+     * @return
+     */
+    public List<TortVO> loadTortVO(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
+        List<TortVO> tortVOS = new ArrayList<>();
+        for (Feature feature : features) {
+            //新建特征与侵权分析对比结果VO
+            TortVO tortVO = new TortVO();
+            //装载特征部分的信息
+            tortVO.setFeatureId(feature.getId());
+            tortVO.setContent(feature.getContent());
+            tortVO.setPatentNo(feature.getPatentNo());
+            tortVO.setRightSort(feature.getRightSort());
+            tortVO.setRightType(feature.getRightType());
+            tortVO.setExplainText(feature.getExplainText());
+            tortVO.setFormId(feature.getFromId());
+            tortVO.setSysOrder(feature.getSysOrder());
+            //装载侵权分析对比结果的部分(可能为空)
+            if (!ftoCompareRecords.isEmpty()) {
+                FTOCompareRecord originalRecord = ftoCompareRecords.stream().filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId()) && item.getIfOriginal() == true).findFirst().orElse(null);
+                if (originalRecord != null) {
+                    FTOCompareRecordVO originalRecordVO = new FTOCompareRecordVO();
+                    originalRecordVO.setId(originalRecord.getId());
+                    originalRecordVO.setCompareResult(originalRecord.getCompareResult());
+                    originalRecordVO.setCompareDescription(originalRecord.getCompareDescription());
+                    originalRecordVO.setTargetDescription(originalRecord.getTargetDescription());
+                    tortVO.setOriginalRecordVO(originalRecordVO);
+                    //过滤
+                    FTOCompareRecord currentRecord = ftoCompareRecords.stream().filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId()) && item.getIfOriginal() == false).findFirst().orElse(null);
+                    if (currentRecord != null) {
+                        FTOCompareRecordVO currentRecordVO = new FTOCompareRecordVO();
+                        currentRecordVO.setId(currentRecord.getId());
+                        currentRecordVO.setCompareResult(currentRecord.getCompareResult());
+                        currentRecordVO.setCompareDescription(currentRecord.getCompareDescription());
+                        currentRecordVO.setTargetDescription(currentRecord.getTargetDescription());
+                        tortVO.setCurrentRecordVO(currentRecordVO);
+                    } else {
+                        tortVO.setCurrentRecordVO(originalRecordVO);
+                    }
+                } else {//没有查出来ifOriginal为true的就说明没有新建协同任务,则查询原来的数据
+                    FTOCompareRecord finalRecord = ftoCompareRecords.stream().filter(item -> item.getFeatureId().equals(feature.getId()) && item.getProjectTaskId() == null && item.getIfOriginal() == false && item.getIfFinal() == true).findFirst().orElse(null);
+                    if (finalRecord != null) {
+                        FTOCompareRecordVO originalRecordVO = new FTOCompareRecordVO();
+                        originalRecordVO.setId(finalRecord.getId());
+                        originalRecordVO.setCompareResult(finalRecord.getCompareResult());
+                        originalRecordVO.setCompareDescription(finalRecord.getCompareDescription());
+                        originalRecordVO.setTargetDescription(finalRecord.getTargetDescription());
+                        tortVO.setOriginalRecordVO(originalRecordVO);
+                        tortVO.setCurrentRecordVO(originalRecordVO);
+                    }
+                }
+            }
+            tortVOS.add(tortVO);
+        }
+        return tortVOS;
+    }
+
+    /**
+     * 保存最终对比结果接口
+     * @param tortCompareRecordDTO
+     * @return
+     */
+    public List<Integer> addFinalTortResult(TortCompareRecordDTO tortCompareRecordDTO){
+        List<Integer> ids = new ArrayList<>();
+        //判空
+        Integer projectId = tortCompareRecordDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("projectId不能为空");
+        }
+        //首先是根据projectId,以及任务id为空,以及ifOriginal为false,ifFinal为true这几个条件删除表中的数据
+        LambdaQueryWrapper<FTOCompareRecord> removeWrapper = new LambdaQueryWrapper<>();
+        removeWrapper.eq(FTOCompareRecord::getProjectId, projectId)
+                .eq(FTOCompareRecord::getProjectTaskId, null)
+                .eq(FTOCompareRecord::getIfOriginal, false)
+                .eq(FTOCompareRecord::getIfFinal, true);
+        this.remove(removeWrapper);
+        //其次是添加一批新的数据
+        List<FTOCompareRecord> ftoCompareRecords = new ArrayList<>();
+        List<TortDTO> tortDTOS = tortCompareRecordDTO.getTortDTOS();
+        //获取登录人信息
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        if (tortDTOS != null && !tortDTOS.isEmpty()) {
+            for (TortDTO item : tortDTOS) {
+                FTOCompareRecord tortFinal = new FTOCompareRecord();
+                tortFinal.setFeatureId(item.getFeatureId());
+                tortFinal.setProjectId(projectId);
+                tortFinal.setCompareResult(item.getCompareResult());
+                tortFinal.setCompareDescription(item.getCompareDescription());
+                tortFinal.setTargetDescription(item.getTargetDescription());
+                tortFinal.setCreateId(personnelVO.getId());
+                ftoCompareRecords.add(tortFinal);
+            }
+        }
+        if (!ftoCompareRecords.isEmpty()) {
+            this.saveBatch(ftoCompareRecords);
+            ids = ftoCompareRecords.stream().map(FTOCompareRecord::getId).collect(Collectors.toList());
+        }
+        return ids;
+    }
+
+}

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

@@ -27,7 +27,7 @@ import java.util.List;
 
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
-public class PatentService {
+public class EsPatentService {
 
     private final ElasticsearchClient client;
     /**

+ 62 - 38
src/main/resources/jsons/patent.json

@@ -38,7 +38,7 @@
   {
     "name": "授权号",
     "type": "String",
-    "value": "grantNo",
+    "value": "GN",
     "field": "GN",
     "esField": "grant_no.keyword",
     "esClass": "wildcardQueryBuilder",
@@ -49,8 +49,8 @@
   },
   {
     "name": "公开日",
-    "type": "Date",
-    "value": "publicDate",
+    "type": "String",
+    "value": "PD",
     "field": "PD",
     "esField": "public_date",
     "esClass": "dateQueryBuilder",
@@ -62,7 +62,7 @@
   {
     "name": "申请日",
     "type": "String",
-    "value": "appDate",
+    "value": "AD",
     "field": "AD",
     "esField": "app_date",
     "esClass": "dateQueryBuilder",
@@ -74,7 +74,7 @@
   {
     "name": "授权日",
     "type": "String",
-    "value": "grantDate",
+    "value": "GD",
     "field": "GD",
     "esField": "grant_date",
     "esClass": "dateQueryBuilder",
@@ -109,20 +109,44 @@
   },
   {
     "name": "摘要",
-    "type": "Object",
-    "value": "abstractStr",
+    "type": "String",
+    "value": "TX",
+    "field": "abstractStr",
+    "esField": "abstract_str",
+    "esClass": "matchQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "摘要内容",
+    "type": "String",
+    "value": "AB",
     "field": "AB",
     "esField": "abstract_str.text_content",
     "esClass": "matchQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "true",
+    "ifShow": "false",
     "ifAsCondition": "true"
   },
   {
     "name": "标题",
-    "type": "Object",
-    "value": "title",
+    "type": "String",
+    "value": "TX",
+    "field": "TX",
+    "esField": "title",
+    "esClass": "matchQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "标题内容",
+    "type": "String",
+    "value": "TI",
     "field": "TI",
     "esField": "title.text_content",
     "esClass": "matchQueryBuilder",
@@ -145,8 +169,8 @@
   },
   {
     "name": "申请人",
-    "type": "Array",
-    "value": "applicant",
+    "type": "String",
+    "value": "PA",
     "field": "PA",
     "esField": "applicant.name",
     "esClass": "nestedQueryBuilder",
@@ -157,8 +181,8 @@
   },
   {
     "name": "发明人",
-    "type": "Array",
-    "value": "inventor",
+    "type": "String",
+    "value": "IN",
     "field": "IN",
     "esField": "inventor.name",
     "esClass": "nestedQueryBuilder",
@@ -169,8 +193,8 @@
   },
   {
     "name": "权利人",
-    "type": "Array",
-    "value": "rightHolder",
+    "type": "String",
+    "value": "PE",
     "field": "PE",
     "esField": "right_holder.name",
     "esClass": "nestedQueryBuilder",
@@ -188,7 +212,7 @@
     "esClass": "matchQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -200,13 +224,13 @@
     "esClass": "matchQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
     "name": "代理机构",
     "type": "String",
-    "value": "agency",
+    "value": "AGN",
     "field": "AGN",
     "esField": "agency",
     "esClass": "matchQueryBuilder",
@@ -217,7 +241,7 @@
   },
   {
     "name": "代理人名称",
-    "type": "Array",
+    "type": "String",
     "value": "agent",
     "field": "agent",
     "esField": "agent",
@@ -260,7 +284,7 @@
     "esClass": "matchQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -272,7 +296,7 @@
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -284,7 +308,7 @@
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -296,7 +320,7 @@
     "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -308,7 +332,7 @@
     "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -320,7 +344,7 @@
     "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -332,7 +356,7 @@
     "esClass": "matchQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -344,7 +368,7 @@
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -356,7 +380,7 @@
     "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -368,7 +392,7 @@
     "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -380,7 +404,7 @@
     "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -404,7 +428,7 @@
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -416,7 +440,7 @@
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -428,7 +452,7 @@
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -440,7 +464,7 @@
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -452,7 +476,7 @@
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -464,7 +488,7 @@
     "esClass": "matchQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {
@@ -476,7 +500,7 @@
     "esClass": "matchQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "false",
+    "ifShow": "true",
     "ifAsCondition": "true"
   },
   {

+ 18 - 9
src/test/java/cn/cslg/pas/service/EventServiceTests.java

@@ -1,6 +1,5 @@
 package cn.cslg.pas.service;
 
-import cn.cslg.pas.common.dto.PatentColumnDTO;
 import cn.cslg.pas.common.dto.PatentDTO;
 import cn.cslg.pas.common.dto.PatentDetailDTO;
 import cn.cslg.pas.common.dto.PatentKinDTO;
@@ -8,6 +7,7 @@ import cn.cslg.pas.common.dto.business.EsCountDTO;
 import cn.cslg.pas.common.dto.business.EsPatentFamilyDTO;
 import cn.cslg.pas.common.dto.business.ReportTempleDTO;
 import cn.cslg.pas.common.dto.business.SelectClaimDTO;
+import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.*;
 import cn.cslg.pas.common.utils.Response;
@@ -22,15 +22,10 @@ import cn.cslg.pas.domain.es.PatentFamilyMessage;
 import cn.cslg.pas.service.business.ProductMarketDataService;
 import cn.cslg.pas.service.business.TempleService;
 import cn.cslg.pas.service.business.es.EsCountService;
+import cn.cslg.pas.service.business.es.EsCustomFieldService;
 import cn.cslg.pas.service.business.es.EsService;
-import cn.cslg.pas.service.business.es.PatentService;
-import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
-import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
-import co.elastic.clients.elasticsearch._types.aggregations.CalendarInterval;
-import co.elastic.clients.elasticsearch._types.query_dsl.Query;
-import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import cn.cslg.pas.service.business.es.EsPatentService;
 import com.alibaba.fastjson.JSONObject;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.http.entity.ContentType;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -61,7 +56,9 @@ public class EventServiceTests {
     @Autowired
     private TempleService templeService;
     @Autowired
-    private PatentService patentService;
+    private EsPatentService patentService;
+    @Autowired
+    private EsCustomFieldService esCustomFieldService;
 
 
     @Autowired
@@ -275,4 +272,16 @@ public class EventServiceTests {
         List<ReportTempleDTO> reportTempleDTOS = templeService.queryTempleByType(vo);
         System.out.println(reportTempleDTOS);
     }
+
+    @Test
+    void test15() throws Exception {
+        EsCustomFieldDTO dto = new EsCustomFieldDTO();
+        dto.setProjectId(77);
+        dto.setFieldType(6);
+        dto.setFieldId("z147258369");
+        dto.setFieldValue(Arrays.asList("77"));
+        dto.setOptionType(1);
+        dto.setPatentNo("CN201910069334.7");
+        esCustomFieldService.addCustomField(dto);
+    }
 }