소스 검색

分配任务

lwhhszx 1 년 전
부모
커밋
340ce4e29b
32개의 변경된 파일812개의 추가작업 그리고 280개의 파일을 삭제
  1. 1 0
      src/main/java/cn/cslg/pas/common/core/base/RedisConf.java
  2. 29 0
      src/main/java/cn/cslg/pas/common/dto/AllFieldOrderDTO.java
  3. 9 1
      src/main/java/cn/cslg/pas/common/dto/business/MarkTaskDTO.java
  4. 1 0
      src/main/java/cn/cslg/pas/common/dto/business/PersonAssignedDTO.java
  5. 5 4
      src/main/java/cn/cslg/pas/common/dto/es/QueryEsCustomFieldDTO.java
  6. 1 0
      src/main/java/cn/cslg/pas/common/model/request/QueryRequest.java
  7. 24 13
      src/main/java/cn/cslg/pas/common/utils/CacheUtils.java
  8. 10 0
      src/main/java/cn/cslg/pas/common/vo/FieldValueVO.java
  9. 1 0
      src/main/java/cn/cslg/pas/common/vo/business/AllCustomFieldVO.java
  10. 0 8
      src/main/java/cn/cslg/pas/controller/CommonController.java
  11. 58 7
      src/main/java/cn/cslg/pas/controller/CustomFieldController.java
  12. 6 6
      src/main/java/cn/cslg/pas/controller/PatentController.java
  13. 1 1
      src/main/java/cn/cslg/pas/domain/business/AssoProjectTreeNode.java
  14. 3 0
      src/main/java/cn/cslg/pas/domain/business/AssoTaskField.java
  15. 29 0
      src/main/java/cn/cslg/pas/domain/business/TaskBatch.java
  16. 0 50
      src/main/java/cn/cslg/pas/entity/AssoTaskField.java
  17. 0 64
      src/main/java/cn/cslg/pas/entity/SystemFile.java
  18. 61 0
      src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/ProjectTaskQueryBuilder.java
  19. 0 1
      src/main/java/cn/cslg/pas/mapper/AssoEventFileMapper.java
  20. 2 1
      src/main/java/cn/cslg/pas/mapper/AssoTaskFieldMapper.java
  21. 15 0
      src/main/java/cn/cslg/pas/mapper/TaskBatchMapper.java
  22. 3 1
      src/main/java/cn/cslg/pas/service/AssoTaskFieldService.java
  23. 258 12
      src/main/java/cn/cslg/pas/service/business/CustomFieldService.java
  24. 129 31
      src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java
  25. 31 0
      src/main/java/cn/cslg/pas/service/business/TaskBatchService.java
  26. 55 57
      src/main/java/cn/cslg/pas/service/business/es/EsCustomFieldService.java
  27. 16 7
      src/main/java/cn/cslg/pas/service/business/es/EsService.java
  28. 28 11
      src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java
  29. 14 1
      src/main/resources/jsons/patent.json
  30. 20 2
      src/test/java/cn/cslg/pas/service/CustomFieldServiceTests.java
  31. 1 1
      src/test/java/cn/cslg/pas/service/EsCustomFiedTests.java
  32. 1 1
      src/test/java/cn/cslg/pas/service/EsServiceTests.java

+ 1 - 0
src/main/java/cn/cslg/pas/common/core/base/RedisConf.java

@@ -18,4 +18,5 @@ public class RedisConf {
     public final static String FIELD_ORDER = "field-order";
     public final static String USER_IMPORT = "user-import";
     public final static String PROJECT_FIELD_ORDER="project_field_order";
+    public final static String TASK_FIELD_ORDER="task_field_order";
 }

+ 29 - 0
src/main/java/cn/cslg/pas/common/dto/AllFieldOrderDTO.java

@@ -0,0 +1,29 @@
+package cn.cslg.pas.common.dto;
+
+
+
+
+import cn.cslg.pas.common.vo.business.AllCustomFieldVO;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 委托方表
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-02-17
+ */
+@Data
+
+public class AllFieldOrderDTO {
+
+    private Integer projectId;
+
+private List<AllCustomFieldVO> allCustomFieldVOs;
+private  Integer taskId;
+
+}

+ 9 - 1
src/main/java/cn/cslg/pas/common/dto/business/MarkTaskDTO.java

@@ -9,9 +9,17 @@ import java.util.List;
 @Data
 public class MarkTaskDTO {
 private String name;
-private Date deadLine;
+private Date deadLineTime;
 private String description;
 private List<PersonAssignedDTO> personAssignedDTOList;
 private StringRequest stringRequest;
 private Integer taskType;
+private List<MarkedField> markedFields;
+private Integer projectId;
+@Data
+public  static class MarkedField{
+    private Integer fieldId;
+    private Integer fieldType;
+    private List<String> values;
+}
 }

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

@@ -8,4 +8,5 @@ public class PersonAssignedDTO {
     private String personId;
     private Integer patentNum;
     private List<String> patentNos;
+
 }

+ 5 - 4
src/main/java/cn/cslg/pas/common/dto/es/QueryEsCustomFieldDTO.java

@@ -10,7 +10,7 @@ public class QueryEsCustomFieldDTO {
     /**
      * 专题库或报告id
      */
-    Integer projectId;
+   private Integer projectId;
 
 
 
@@ -18,15 +18,16 @@ public class QueryEsCustomFieldDTO {
     /**
      * 栏位类型
      */
-    Integer fieldType;
+    private  Integer fieldType;
 
     /**
      * 栏位
      */
-    String fieldId;
+    private String fieldId;
 
 
 
 
-    String patentNo;
+    private String patentNo;
+    private  Integer taskId;
 }

+ 1 - 0
src/main/java/cn/cslg/pas/common/model/request/QueryRequest.java

@@ -19,4 +19,5 @@ public class QueryRequest {
     private Integer projectId;
     private Boolean ifHaveChild = false;
     private List<EsCustomFieldValueDTO> customFields;
+    private Integer taskId;
 }

+ 24 - 13
src/main/java/cn/cslg/pas/common/utils/CacheUtils.java

@@ -9,6 +9,7 @@ import cn.dev33.satoken.exception.NotLoginException;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.crypto.SecureUtil;
+import com.alibaba.fastjson.JSON;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Component;
 
@@ -24,9 +25,6 @@ public class CacheUtils {
     private RedisUtil redisUtil;
 
 
-
-
-
     public PersonnelVO getLoginUser(Object userId) {
         String json = redisUtil.get(RedisConf.LOGIN_USER + RedisConf.SYMBOL_COLON + userId);
         if (StringUtils.isEmpty(json)) {
@@ -36,7 +34,7 @@ public class CacheUtils {
         }
     }
 
-    public  PersonnelVO getLoginUserPersonnel(Object userId) {
+    public PersonnelVO getLoginUserPersonnel(Object userId) {
         String json = redisUtil.get(RedisConf.LOGIN_USER + RedisConf.SYMBOL_COLON + userId);
         if (StringUtils.isEmpty(json)) {
             throw new NotLoginException("无数据", "user", "");
@@ -73,7 +71,6 @@ public class CacheUtils {
     }
 
 
-
     public List<Tree> setAreaTreeList(List<Tree<Integer>> treeList) {
         redisUtil.set(RedisConf.COMMON_DATA + RedisConf.SYMBOL_COLON + RedisConf.AREA_LIST, JsonUtils.objectToJson(treeList));
         return this.getAreaTreeList();
@@ -93,8 +90,8 @@ public class CacheUtils {
         return uuid;
     }
 
-    public void deleteUserSystemFieldSetting(Integer projectId, String type, String view, Integer userId,Integer createId) {
-        String key = SecureUtil.md5(projectId + RedisConf.SYMBOL_COLON + type + RedisConf.SYMBOL_COLON + view + RedisConf.SYMBOL_COLON + userId+createId);
+    public void deleteUserSystemFieldSetting(Integer projectId, String type, String view, Integer userId, Integer createId) {
+        String key = SecureUtil.md5(projectId + RedisConf.SYMBOL_COLON + type + RedisConf.SYMBOL_COLON + view + RedisConf.SYMBOL_COLON + userId + createId);
         redisUtil.delete(RedisConf.USER_FIELD + RedisConf.SYMBOL_COLON + key);
     }
 
@@ -111,16 +108,30 @@ public class CacheUtils {
     }
 
     //添加自定义栏位顺序
-    public void addPatentCustomField(Integer projectId,List<AllCustomFieldVO> allCustomFieldVOS){
-        redisUtil.set(RedisConf.PROJECT_FIELD_ORDER +projectId,JsonUtils.objectToJson(allCustomFieldVOS));
+    public void addPatentCustomField(Integer projectId, List<AllCustomFieldVO> allCustomFieldVOS) {
+        redisUtil.set(RedisConf.PROJECT_FIELD_ORDER + projectId, JsonUtils.objectToJson(allCustomFieldVOS));
     }
 
-    public List<AllCustomFieldVO> getPatentCustomField(Object userId) {
-        String json = redisUtil.get(RedisConf.LOGIN_USER + RedisConf.SYMBOL_COLON + userId);
+    public List<AllCustomFieldVO> getPatentCustomField(Integer projectId) {
+        String json = redisUtil.get(RedisConf.PROJECT_FIELD_ORDER + projectId);
         if (StringUtils.isEmpty(json)) {
-            throw new NotLoginException("无数据", "user", "");
+            return null;
+        } else {
+            return JSON.parseArray(json,AllCustomFieldVO.class);
+        }
+    }
+
+    //添加自定义栏位顺序
+    public void addTaskCustomField(Integer taskId, List<AllCustomFieldVO> allCustomFieldVOS) {
+        redisUtil.set(RedisConf.TASK_FIELD_ORDER + taskId, JsonUtils.objectToJson(allCustomFieldVOS));
+    }
+
+    public List<AllCustomFieldVO> getTaskCustomField(Integer taskId) {
+        String json = redisUtil.get(RedisConf.TASK_FIELD_ORDER + taskId);
+        if (StringUtils.isEmpty(json)) {
+            return null;
         } else {
-            return com.alibaba.fastjson2.JSONObject.parseObject(json, List.class);
+            return JSON.parseArray(json,AllCustomFieldVO.class);
         }
     }
 }

+ 10 - 0
src/main/java/cn/cslg/pas/common/vo/FieldValueVO.java

@@ -0,0 +1,10 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+
+@Data
+public class FieldValueVO {
+    private Integer valueId;
+    private String  value;
+    private String path;
+}

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

@@ -27,5 +27,6 @@ public class AllCustomFieldVO {
      */
     private Integer type;
 
+    private Integer sysOrder;
 
 }

+ 0 - 8
src/main/java/cn/cslg/pas/controller/CommonController.java

@@ -136,12 +136,4 @@ public class CommonController {
         return Response.success(records);
     }
 
-    @PostMapping("/addCustomField")
-    @Operation(summary = "添加自定义栏位")
-    public Response addCustomField(@RequestBody EsCustomFieldDTO vo) throws Exception {
-        String field = esCustomFieldService.addCustomField(vo);
-        Records records = new Records();
-        records.setData(field);
-        return Response.success(records);
-    }
 }

+ 58 - 7
src/main/java/cn/cslg/pas/controller/CustomFieldController.java

@@ -1,28 +1,33 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.AllFieldOrderDTO;
 import cn.cslg.pas.common.dto.business.CustomFieldDTO;
 import cn.cslg.pas.common.dto.business.UpdateCustomFieldDTO;
+import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
+import cn.cslg.pas.common.dto.es.QueryEsCustomFieldDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.business.AllCustomFieldVO;
 import cn.cslg.pas.exception.ConditionException;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.factorys.businessFactory.BusinessFactory;
+import cn.cslg.pas.service.business.CustomFieldService;
+import cn.cslg.pas.service.business.es.EsCustomFieldService;
 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 org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
  * 自定义栏位Controller层
+ *
  * @Author xiexiang
  * @Date 2023/11/13
  */
@@ -33,6 +38,11 @@ public class CustomFieldController {
     @Autowired
     private BusinessFactory businessFactory;
 
+    @Autowired
+    private CustomFieldService customFieldService;
+    @Autowired
+    private EsCustomFieldService esCustomFieldService;
+
     @Operation(summary = "查询自定义栏位")
     @PostMapping("/queryCustomField")
     public Response queryCustomField(@RequestBody StringRequest stringRequest) throws Exception {
@@ -44,13 +54,13 @@ public class CustomFieldController {
     @Operation(summary = "新增自定义栏位")
     @PostMapping("/addCustomField")
     public Response addCustomField(@RequestBody CustomFieldDTO customFieldDTO) throws Exception {
-        if(customFieldDTO != null){
+        if (customFieldDTO != null) {
             Business business = businessFactory.getClass("customFieldService");
             Integer id = null;
             try {
                 id = (Integer) business.addMessage(customFieldDTO);
-            } catch (Exception e){
-                if(e instanceof XiaoShiException) {
+            } catch (Exception e) {
+                if (e instanceof XiaoShiException) {
                     return Response.error(e.getMessage());
                 } else if (e instanceof UnLoginException) {
                     return Response.unLogin(e.getMessage());
@@ -84,4 +94,45 @@ public class CustomFieldController {
         return Response.success("删除成功");
     }
 
+    @Operation(summary = "查询专题库的所有标引栏位")
+    @GetMapping("/getAllPatentCustomField")
+    public Response getAllPatentCustomField(Integer projectId, Integer taskId) throws Exception {
+        Records records = new Records();
+        List<AllCustomFieldVO> customFieldVOS = new ArrayList<>();
+
+        if (taskId != null) {
+            customFieldVOS = customFieldService.getAllTaskCustomField(taskId);
+        }
+        else {
+            customFieldVOS = customFieldService.getAllProjectCustomField(projectId);
+        }
+        records.setData(customFieldVOS);
+
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询栏位值")
+    @PostMapping("/getCustomFieldValues")
+    public Response getCustomFieldValues(@RequestBody QueryEsCustomFieldDTO queryEsCustomFieldDTO) throws Exception {
+        Records records = customFieldService.getCustomFieldValues(queryEsCustomFieldDTO);
+        return Response.success(records);
+    }
+
+
+    @Operation(summary = "保存自定义栏位顺序")
+    @PostMapping("/addAllPatentCustomFieldOrder")
+    public Response addAllPatentCustomFieldOrder(@RequestBody AllFieldOrderDTO allFieldOrderDTO) throws Exception {
+        Records records = customFieldService.addAllPatentCustomFieldOrder(allFieldOrderDTO);
+        return Response.success(records);
+    }
+
+
+    @PostMapping("/addCustomFieldValue")
+    @Operation(summary = "添加标引")
+    public Response addCustomFieldValue(@RequestBody EsCustomFieldDTO vo) throws Exception {
+        String field = esCustomFieldService.addCustomField(vo);
+        Records records = new Records();
+        records.setData(field);
+        return Response.success(records);
+    }
 }

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

@@ -88,11 +88,11 @@ public class PatentController {
 //        return Response.success(patentDTO);
 //    }
 
-    @Operation(summary = "esCount")
-    @PostMapping("/esCount")
-    public Response esCount(@RequestBody EsCountVO countVO) throws Exception {
-        EsCountDTO patentDTO = esCountService.esCount(countVO);
-        return Response.success(patentDTO);
-    }
+//    @Operation(summary = "esCount")
+//    @PostMapping("/esCount")
+//    public Response esCount(@RequestBody EsCountVO countVO) throws Exception {
+//        EsCountDTO patentDTO = esCountService.esCount(countVO);
+//        return Response.success(patentDTO);
+//    }
 
 }

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

@@ -23,7 +23,7 @@ public class AssoProjectTreeNode extends BaseEntity<AssoProjectTreeNode> {
 
     /**
      * 树类型
-     * 1技术分类 2产品 3产品分类
+     * 7技术分类 8产品 9产品分类
      */
     @TableField(value = "tree_type")
     private Integer treeType;

+ 3 - 0
src/main/java/cn/cslg/pas/domain/business/AssoTaskField.java

@@ -42,4 +42,7 @@ public class AssoTaskField extends BaseEntity<AssoTaskField> {
      */
     @TableField(value = "field_value_id")
     private Integer fieldValueId;
+
+    @TableField(value = "task_batch_id")
+    private Integer taskBatchId;
 }

+ 29 - 0
src/main/java/cn/cslg/pas/domain/business/TaskBatch.java

@@ -0,0 +1,29 @@
+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;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 事件表
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2022-10-20
+ */
+@Data
+@TableName("task_batch")
+/*数据库中的表对应的类
+ */
+public class TaskBatch extends BaseEntity<TaskBatch> {
+
+    @TableField(value = "create_id")
+    private String createId;
+    @TableField(value = "create_time")
+    private DateTime createTime;
+}

+ 0 - 50
src/main/java/cn/cslg/pas/entity/AssoTaskField.java

@@ -1,50 +0,0 @@
-package cn.cslg.pas.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-/**
- * @author chenyu
- * @date 2023/10/23
- */
-@Accessors(chain = true)
-@TableName("asso_task_field")
-@Data
-public class AssoTaskField {
-    /**
-     * 主键id
-     */
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-    /**
-     * 任务id
-     */
-    @TableField("import_task_id")
-    private Integer importTaskId;
-    /**
-     * 项目(专题库/报告/产品)id
-     */
-    @TableField("project_id")
-    private Integer project_id;
-    /**
-     * 栏位类型
-     */
-    @TableField("field_type")
-    private Integer fieldType;
-    /**
-     * 栏位
-     */
-    @TableField("field_id")
-    private Integer fieldId;
-    /**
-     * 栏位值id
-     */
-    @TableField("field_value_id")
-    private Integer fieldValueId;
-
-
-}

+ 0 - 64
src/main/java/cn/cslg/pas/entity/SystemFile.java

@@ -1,64 +0,0 @@
-package cn.cslg.pas.entity;
-
-import lombok.Data;
-
-import java.util.Date;
-
-@Data
-public class SystemFile {
-    private Integer id;
-    /**
-     * 唯一标识id
-     */
-    private String GUID;
-
-    /**
-     * 存储位置
-     */
-    private Integer pType;
-
-    /**
-     * 文件路径
-     */
-    private String filePath;
-
-    /**
-     * 文件名称
-     */
-    private String fileName;
-
-    /**
-     * 文件名称
-     */
-    private String suffix;
-    /**
-     * 原始名称
-     */
-    private String originalName;
-
-    /**
-     * 文件大小
-     */
-    private String fileLength;
-
-    /**
-     * 创建人id
-     */
-    private Integer createId;
-
-    /**
-     * 更新时间
-     */
-    private Date updateTime;
-
-    /**
-     * 创建时间
-     */
-    private Date createTime;
-
-    /**
-     * 是否删除
-     */
-    private Integer isDelete;
-
-}

+ 61 - 0
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/ProjectTaskQueryBuilder.java

@@ -0,0 +1,61 @@
+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 org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+
+@Component
+public class ProjectTaskQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        return QueryBuilders.hasChild(child -> child.type("task")
+                .query(org.springframework.data.elasticsearch.client.elc.QueryBuilders.matchQueryAsQuery(field, value, null, null)));
+    }
+
+    @Override
+    public String getField() {
+        return field;
+    }
+
+    @Override
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    @Override
+    public String getValue() {
+        return value;
+    }
+
+    @Override
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Override
+    public String getOperator() {
+        return operator;
+    }
+
+    @Override
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    @Override
+    public String getPath() {
+        return path;
+    }
+
+    @Override
+    public void setPath(String path) {
+        this.path = path;
+    }
+}

+ 0 - 1
src/main/java/cn/cslg/pas/mapper/AssoEventFileMapper.java

@@ -1,7 +1,6 @@
 package cn.cslg.pas.mapper;
 
 import cn.cslg.pas.domain.business.AssoEventFile;
-import cn.cslg.pas.entity.AssoTaskField;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 

+ 2 - 1
src/main/java/cn/cslg/pas/mapper/AssoTaskFieldMapper.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.mapper;
 
-import cn.cslg.pas.entity.AssoTaskField;
+
+import cn.cslg.pas.domain.business.AssoTaskField;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 

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

@@ -0,0 +1,15 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.TaskBatch;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 任务可见栏位表
+ *
+ * @author chenyu
+ * @date 2023/10/20
+ */
+@Repository
+public interface TaskBatchMapper extends BaseMapper<TaskBatch> {
+}

+ 3 - 1
src/main/java/cn/cslg/pas/service/AssoTaskFieldService.java

@@ -1,8 +1,9 @@
 package cn.cslg.pas.service;
 
-import cn.cslg.pas.entity.AssoTaskField;
+import cn.cslg.pas.domain.business.AssoTaskField;
 import cn.cslg.pas.mapper.AssoTaskFieldMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
 
 /**
  * 任务可见栏位表业务层
@@ -10,5 +11,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  * @author chenyu
  * @date 2023/10/23
  */
+@Service
 public class AssoTaskFieldService extends ServiceImpl<AssoTaskFieldMapper, AssoTaskField> {
 }

+ 258 - 12
src/main/java/cn/cslg/pas/service/business/CustomFieldService.java

@@ -1,23 +1,31 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.AllFieldOrderDTO;
 import cn.cslg.pas.common.dto.business.CustomFieldDTO;
 import cn.cslg.pas.common.dto.business.UpdateCustomFieldDTO;
+import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
+import cn.cslg.pas.common.dto.es.QueryEsCustomFieldDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.vo.FieldValueVO;
+import cn.cslg.pas.common.vo.PatentWithIdVO;
 import cn.cslg.pas.common.vo.business.AllCustomFieldVO;
 import cn.cslg.pas.common.vo.business.CustomFieldVO;
 import cn.cslg.pas.common.vo.business.ProductVO;
-import cn.cslg.pas.domain.business.AssoProjectTreeNode;
-import cn.cslg.pas.domain.business.CustomField;
+import cn.cslg.pas.common.vo.es.QueryESCustomFieldVO;
+import cn.cslg.pas.domain.business.*;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.mapper.CustomFieldMapper;
+import cn.cslg.pas.service.AssoTaskFieldService;
+import cn.cslg.pas.service.business.es.EsCustomFieldService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import cn.cslg.pas.service.query.FormatQueryService;
 import com.alibaba.fastjson.JSONObject;
@@ -25,12 +33,15 @@ 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.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 自定义栏位Service层
@@ -57,6 +68,20 @@ public class CustomFieldService extends ServiceImpl<CustomFieldMapper, CustomFie
     private PermissionService permissionService;
     @Autowired
     private AssoProjectTreeNodeService assoProjectTreeNodeService;
+    @Autowired
+    private ProductCategoryService productCategoryService;
+    @Autowired
+    private ProductService productService;
+    @Autowired
+    private EsCustomFieldService esCustomFieldService;
+
+    @Lazy
+    @Autowired
+    private CustomOptionService customOptionService;
+    @Autowired
+    private TreeNodeService treeNodeService;
+    @Autowired
+    private AssoTaskFieldService assoTaskFieldService;
 
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
@@ -217,16 +242,237 @@ public class CustomFieldService extends ServiceImpl<CustomFieldMapper, CustomFie
     }
 
 
-    private void getAllPatentCustomField(Integer projectId) {
-        //根据 project获得栏位值
-        List<CustomField> customFields = new ArrayList<>();
-        LambdaQueryWrapper<CustomField> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(CustomField::getProjectId, projectId);
-        customFields = this.list(queryWrapper);
-        //
-        LambdaQueryWrapper<AssoProjectTreeNode> assoQueryWrapper = new LambdaQueryWrapper<>();
-        assoQueryWrapper.eq(AssoProjectTreeNode::getProjectId, projectId);
-        List<AssoProjectTreeNode> projectTreeNodes = assoProjectTreeNodeService.list(assoQueryWrapper);
+    public List<AllCustomFieldVO> getAllProjectCustomField(Integer projectId) {
+        Integer order = 0;
+        List<AllCustomFieldVO> allCustomFieldVOS = cacheUtils.getPatentCustomField(projectId);
+        if (allCustomFieldVOS == null) {
+            allCustomFieldVOS = new ArrayList<>();
+            //根据 project获得栏位值
+            List<CustomField> customFields = new ArrayList<>();
+            LambdaQueryWrapper<CustomField> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CustomField::getProjectId, projectId);
+            customFields = this.list(queryWrapper);
+            //
+            LambdaQueryWrapper<AssoProjectTreeNode> assoQueryWrapper = new LambdaQueryWrapper<>();
+            assoQueryWrapper.eq(AssoProjectTreeNode::getProjectId, projectId);
+            List<AssoProjectTreeNode> projectTreeNodes = assoProjectTreeNodeService.list(assoQueryWrapper);
+
+            for (CustomField item : customFields) {
+                AllCustomFieldVO allCustomFieldVO = new AllCustomFieldVO();
+                allCustomFieldVO.setId(item.getId());
+                allCustomFieldVO.setName(item.getName());
+                allCustomFieldVO.setType(item.getType());
+                allCustomFieldVO.setSysOrder(order);
+                allCustomFieldVOS.add(allCustomFieldVO);
+                order += 1;
+            }
+
+            for (AssoProjectTreeNode item : projectTreeNodes) {
+                //根据类型和id
+                AllCustomFieldVO allCustomFieldVO = new AllCustomFieldVO();
+                allCustomFieldVO.setId(item.getId());
+                allCustomFieldVO.setType(item.getTreeType());
+                allCustomFieldVO.setSysOrder(order);
+                switch (item.getTreeType()) {
+                    case 7:
+                        Product product = productService.getById(item.getId());
+                        allCustomFieldVO.setName(product.getName());
+                        break;
+                    case 8:
+                        ProductCategory productCategory = productCategoryService.getById(item.getId());
+                        allCustomFieldVO.setName(productCategory.getName());
+                        break;
+                    case 9:
+                        //TODO 技术类别
+                        break;
+                }
+                allCustomFieldVOS.add(allCustomFieldVO);
+                order += 1;
+            }
+
+            cacheUtils.addPatentCustomField(projectId, allCustomFieldVOS);
+        }
+
+        return allCustomFieldVOS;
+    }
+
+    /**
+     *
+     * @param taskId
+     * @return
+     */
+    public List<AllCustomFieldVO> getAllTaskCustomField(Integer taskId) {
+        Integer order = 0;
+        List<AllCustomFieldVO> allCustomFieldVOS = cacheUtils.getTaskCustomField(taskId);
+        if(allCustomFieldVOS==null||allCustomFieldVOS.size()==0) {
+            allCustomFieldVOS = new ArrayList<>();
+
+            //根据任务id查询
+            List<AssoTaskField> assoTaskFields = new ArrayList<>();
+            LambdaQueryWrapper<AssoTaskField> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoTaskField::getTaskId, taskId);
+            assoTaskFields = assoTaskFieldService.list(queryWrapper);
+
+            //
+            if (assoTaskFields != null) {
+
+                //从自定义栏位表中获得自定义栏位id
+                List<Integer> fieldIds = assoTaskFields.stream()
+                        .filter(item -> item.getFieldType().equals(0)
+                                || item.getFieldType().equals(1)
+                                || item.getFieldType().equals(2)
+                                || item.getFieldType().equals(3)
+                                || item.getFieldType().equals(4)
+                                || item.getFieldType().equals(5)
+                                || item.getFieldType().equals(6)).map(AssoTaskField::getFieldId).collect(Collectors.toList());
+
+                if (fieldIds.size() != 0) {
+                    LambdaQueryWrapper<CustomField> queryCWrapper = new LambdaQueryWrapper<>();
+                    queryCWrapper.in(CustomField::getId, fieldIds);
+                    List<CustomField> customFields = this.list(queryCWrapper);
+                    for (CustomField item : customFields) {
+                        AllCustomFieldVO allCustomFieldVO = new AllCustomFieldVO();
+                        allCustomFieldVO.setId(item.getId());
+                        allCustomFieldVO.setName(item.getName());
+                        allCustomFieldVO.setType(item.getType());
+                        allCustomFieldVO.setSysOrder(order);
+                        allCustomFieldVOS.add(allCustomFieldVO);
+                        order += 1;
+                    }
+                }
+
+                //从关联表中获得产品id
+                List<Integer> productIds = assoTaskFields.stream()
+                        .filter(item -> item.getFieldId().equals(7))
+                        .map(AssoTaskField::getFieldId).collect(Collectors.toList());
+                if (productIds != null && productIds.size() != 0) {
+                    LambdaQueryWrapper<Product> productLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                    List<Product> products = productService.list(productLambdaQueryWrapper);
+                    for (Product item : products) {
+                        AllCustomFieldVO allCustomFieldVO = new AllCustomFieldVO();
+                        allCustomFieldVO.setId(item.getId());
+                        allCustomFieldVO.setName(item.getName());
+                        allCustomFieldVO.setType(7);
+                        allCustomFieldVO.setSysOrder(order);
+                        allCustomFieldVOS.add(allCustomFieldVO);
+                        order += 1;
+                    }
+                }
 
+                List<Integer> productCategoryIds = assoTaskFields.stream()
+                        .filter(item -> item.getFieldId().equals(8))
+                        .map(AssoTaskField::getFieldId).collect(Collectors.toList());
+                if (productCategoryIds != null && productCategoryIds.size() != 0) {
+                    LambdaQueryWrapper<ProductCategory> LambdaQueryWrapper = new LambdaQueryWrapper<>();
+                    List<ProductCategory> productCategories = productCategoryService.list(LambdaQueryWrapper);
+                    for (ProductCategory item : productCategories) {
+                        AllCustomFieldVO allCustomFieldVO = new AllCustomFieldVO();
+                        allCustomFieldVO.setId(item.getId());
+                        allCustomFieldVO.setName(item.getName());
+                        allCustomFieldVO.setType(8);
+                        allCustomFieldVO.setSysOrder(order);
+                        allCustomFieldVOS.add(allCustomFieldVO);
+                        order += 1;
+                    }
+                }
+
+                //TODO 技术类别
+//            List<Integer> technicalIds = assoTaskFields.stream()
+//                    .filter(item -> item.getFieldId().equals(9))
+//                    .map(AssoTaskField::getFieldId).collect(Collectors.toList());
+
+            }
+            cacheUtils.addTaskCustomField(taskId, allCustomFieldVOS);
+        }
+    allCustomFieldVOS =    allCustomFieldVOS.stream().sorted(Comparator.comparing(AllCustomFieldVO::getSysOrder)).collect(Collectors.toList());
+        return allCustomFieldVOS;
     }
+
+
+    public Records getCustomFieldValues(QueryEsCustomFieldDTO queryEsCustomFieldDTO) throws Exception {
+        List<FieldValueVO> fieldValueVOS = new ArrayList<>();
+        Integer type = queryEsCustomFieldDTO.getFieldType();
+
+        EsCustomFieldDTO esCustomFieldDTO =new EsCustomFieldDTO();
+        esCustomFieldDTO.setFieldId(queryEsCustomFieldDTO.getFieldId());
+        esCustomFieldDTO.setProjectId((queryEsCustomFieldDTO.getProjectId()));
+        esCustomFieldDTO.setTaskId(queryEsCustomFieldDTO.getTaskId());
+        esCustomFieldDTO.setPatentNo(queryEsCustomFieldDTO.getPatentNo());
+        esCustomFieldDTO.setFieldType(queryEsCustomFieldDTO.getFieldType());
+
+        PatentWithIdVO patentVO = esCustomFieldService.getEsCustomField(esCustomFieldDTO);
+        if (patentVO != null){
+            List<String> value = patentVO.getPatent().getESCustomField().getFieldValue();
+            switch (type) {
+                case 0:
+
+                case 1:
+
+                case 2:
+                    value.forEach(item -> {
+                        FieldValueVO fieldValueVO = new FieldValueVO();
+                        fieldValueVO.setValue(item);
+                        fieldValueVOS.add(fieldValueVO);
+                    });
+                    break;
+                case 3:
+
+                case 4:
+
+                case 5:
+                    if (value!=null&&value.size() > 0) {
+                        List<Integer> ids = FormatUtil.StringTOIntegerList(value);
+                        LambdaQueryWrapper<CustomOption> queryWrapper = new LambdaQueryWrapper<>();
+                        queryWrapper.in(CustomOption::getId, ids);
+                        List<CustomOption> customOptions = customOptionService.list(queryWrapper);
+                        customOptions.forEach(item -> {
+                            FieldValueVO fieldValueVO = new FieldValueVO();
+                            fieldValueVO.setValueId(item.getId());
+                            fieldValueVO.setValue(item.getName());
+                            fieldValueVOS.add(fieldValueVO);
+                        });
+                    }
+                    break;
+                case 6:
+                case 7:
+                case 8:
+
+                case 9:
+                    if (value!=null&&value.size() > 0) {
+                        List<Integer> ids = FormatUtil.StringTOIntegerList(value);
+                        LambdaQueryWrapper<TreeNode> queryWrapper = new LambdaQueryWrapper<>();
+                        queryWrapper.in(TreeNode::getId, ids);
+                        List<TreeNode> treeNodes = treeNodeService.list(queryWrapper);
+                        treeNodes.forEach(item -> {
+                            FieldValueVO fieldValueVO = new FieldValueVO();
+                            fieldValueVO.setValueId(item.getId());
+                            fieldValueVO.setValue(item.getName());
+                            fieldValueVO.setPath(item.getPath());
+                            fieldValueVOS.add(fieldValueVO);
+                        });
+                    }
+                    break;
+
+            }
+
+        }
+        Records records = new Records();
+        records.setData(fieldValueVOS);
+        return records;
+    }
+
+    public Records addAllPatentCustomFieldOrder(AllFieldOrderDTO allFieldOrderDTO) {
+        Integer projectId = allFieldOrderDTO.getProjectId();
+        List<AllCustomFieldVO> allCustomFieldVOS = allFieldOrderDTO.getAllCustomFieldVOs();
+        if(allFieldOrderDTO.getTaskId()!=null){
+            cacheUtils.addTaskCustomField(allFieldOrderDTO.getTaskId(),allCustomFieldVOS);
+        }
+        else {
+            cacheUtils.addPatentCustomField(projectId, allCustomFieldVOS);
+        }
+        Records records = new Records();
+        records.setData(allCustomFieldVOS);
+        return records;
+    }
+
 }

+ 129 - 31
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -10,23 +10,30 @@ import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.vo.PatentWithIdVO;
 import cn.cslg.pas.common.vo.business.*;
 import cn.cslg.pas.domain.business.*;
+import cn.cslg.pas.domain.es.EsProjectTask;
 import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentJoin;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.mapper.ProjectTaskMapper;
+import cn.cslg.pas.service.AssoTaskFieldService;
 import cn.cslg.pas.service.business.es.EsPatentService;
+import cn.cslg.pas.service.business.es.EsService;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import cn.cslg.pas.service.query.FormatQueryService;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableField;
 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 org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -91,6 +98,16 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     private EsPatentService esPatentService;
     @Autowired
     private CompareLiteratureService compareLiteratureService;
+
+    @Autowired
+    private EsService esService;
+
+    @Autowired
+    private CustomFieldService customFieldService;
+
+    @Autowired
+    private AssoTaskFieldService assoTaskFieldService;
+
     /**
      * 项目开卷审核任务
      *
@@ -795,6 +812,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
     /**
      * 根据任务id查询专利号
+     *
      * @param taskId
      * @return
      */
@@ -810,10 +828,11 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
     /**
      * 根据projectId查询专利号
+     *
      * @param projectId
      * @return
      */
-    public String getPatentNoByProjectId(Integer projectId){
+    public String getPatentNoByProjectId(Integer projectId) {
         //根据报告id查询专利号
         LambdaQueryWrapper<ReportProject> queryWrapper1 = new LambdaQueryWrapper<>();
         queryWrapper1.eq(ReportProject::getProjectId, projectId);
@@ -858,23 +877,33 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         }
     }
 
-
+    @Transactional(rollbackFor = Exception.class)
     public List<Integer> addMarkTask(MarkTaskDTO markTaskDTO) throws Exception {
-        List<Integer> ids =new ArrayList<>();
-        StringRequest stringRequest = markTaskDTO.getStringRequest();
+        Integer projectId = markTaskDTO.getProjectId();
+        List<MarkTaskDTO.MarkedField> markedFields = markTaskDTO.getMarkedFields();
         //获取人员专利
         List<PersonAssignedDTO> personAssignedDTOList = markTaskDTO.getPersonAssignedDTOList();
         //获取任务类型
-        Integer taskType =markTaskDTO.getTaskType();
+        Integer taskType = markTaskDTO.getTaskType();
         //获取任务名称
-        String taskName =markTaskDTO.getName();
+        String taskName = markTaskDTO.getName();
         //获得截止时间
-        Date deadLineTime =markTaskDTO.getDeadLine();
+        Date deadLineTime = markTaskDTO.getDeadLineTime();
+        List<Integer> ids = new ArrayList<>();
+        StringRequest stringRequest = markTaskDTO.getStringRequest();
         //过滤出已经添加的专利
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        //添加任务批次
+        TaskBatch taskBatch = new TaskBatch();
+        taskBatch.setCreateId(personnelVO.getId());
+        taskBatch.insert();
+
+        Integer taskBatchId = taskBatch.getId();
+
         List<String> patentNos = new ArrayList<>();
         List<Integer> nums = new ArrayList<>();
         personAssignedDTOList.forEach(item -> {
-            if (item.getPatentNos() == null || item.getPatentNos().size() == 0) {
+            if (item.getPatentNos() != null && item.getPatentNos().size() != 0) {
                 patentNos.addAll(item.getPatentNos());
             } else {
                 if (item.getPatentNum() != null) {
@@ -882,9 +911,11 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                 }
             }
         });
+
+
         Integer current = 0;
         for (PersonAssignedDTO item : personAssignedDTOList) {
-            List<String> addPatentNos =new ArrayList<>();
+            List<String> addPatentNos = new ArrayList<>();
             //创建任务
             ProjectTaskDTO projectTaskDTO = new ProjectTaskDTO();
             projectTaskDTO.setType(taskType);
@@ -892,36 +923,32 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
             projectTaskDTO.setDeadLineTime(deadLineTime);
             projectTaskDTO.setHandler(item.getPersonId());
             projectTaskDTO.setHandlerType(0);
-           Integer taskId= this.addTask(projectTaskDTO);
-           ids.add(taskId);
+            projectTaskDTO.setProjectId(projectId);
+            Integer taskId = this.addTask(projectTaskDTO);
+            ids.add(taskId);
+            //添加任务和标引关联
+            this.addAssoTaskField(markedFields, taskId, taskBatchId, projectId);
             //根据检索式和已经添加的专利以及位置获得专利
             if (item.getPatentNos() == null || item.getPatentNos().size() == 0) {
-                Integer num = nums.remove(0);
-                stringRequest.setCurrent(Long.parseLong(current.toString()));
-                stringRequest.setSize(Long.parseLong(num.toString()));
-                current += num;
-                List<Patent> patentList = esPatentService.getPatentsWithNotNo(stringRequest, patentNos);
-                 addPatentNos =patentList.stream().map(Patent::getPatentNo).collect(Collectors.toList());
-
-            }
-            else {
-                addPatentNos=item.getPatentNos();
+                if (nums.size() > 0) {
+                    Integer num = nums.remove(0);
+                    stringRequest.setCurrent(Long.parseLong(current.toString()));
+                    stringRequest.setSize(Long.parseLong(num.toString()));
+                    stringRequest.setProjectId(projectId);
+                    current += num;
+                    List<Patent> patentList = esPatentService.getPatentsWithNotNo(stringRequest, patentNos);
+                    addPatentNos = patentList.stream().map(Patent::getPatentNo).collect(Collectors.toList());
+                }
+            } else {
+                addPatentNos = item.getPatentNos();
             }
             //添加专利
-            this.addCompareLiteratureByNos(addPatentNos,taskId);
+            this.addCompareLiteratureByNosToEs(addPatentNos, taskId, projectId);
         }
         return ids;
     }
 
-    private void addAssignTask(MarkTaskDTO markTaskDTO) {
-        //获取人员专利
-        //过滤出已经添加的专利
-        //根据检索式和已经添加的专利,以及自定义栏位过滤和位置获得专利
-        //创建任务
-        //添加专利
-    }
-
-
+    //添加对比文献和专利号关联
     private void addCompareLiteratureByNos(List<String> patentNos, Integer taskId) {
         List<CompareLiterature> compareLiteratures = new ArrayList<>();
         if (patentNos == null || patentNos.size() == 0) {
@@ -937,4 +964,75 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         }
         compareLiteratureService.saveBatch(compareLiteratures);
     }
+
+
+    private void addCompareLiteratureByNosToEs(List<String> patentNos, Integer taskId, Integer projectId) throws Exception {
+        if (patentNos == null || patentNos.size() == 0) {
+            return;
+        } else {
+            patentNos.forEach(item -> {
+                //根据专利号查询专利
+                PatentWithIdVO patentWithIdVO = null;
+                try {
+                    patentWithIdVO = esService.getIdByPatentNo(item);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                if (patentWithIdVO != null) {
+                    String id = patentWithIdVO.getId();
+                    if (id != null || !id.trim().equals("")) {
+                        Patent patent = new Patent();
+                        EsProjectTask esProjectTask = new EsProjectTask();
+                        esProjectTask.setProjectId(projectId);
+                        esProjectTask.setTaskId(taskId);
+                        PatentJoin patentJoin = new PatentJoin();
+                        patentJoin.setParent(id);
+                        patentJoin.setName("task");
+                        patent.setPatentJoin(patentJoin);
+                        patent.setProjectTask(esProjectTask);
+                        try {
+                            esService.addChildPatent(patent, id);
+                        } catch (Exception e) {
+                        }
+                    }
+
+                }
+
+            });
+
+        }
+    }
+
+
+    private void addAssoTaskField(List<MarkTaskDTO.MarkedField> markedFields, Integer taskId, Integer batchId, Integer projectId) {
+        List<AssoTaskField> assoTaskFields = new ArrayList<>();
+        if (markedFields == null || markedFields.size() == 0) {
+            //根据projectId 查询所有标引栏位
+            List<AllCustomFieldVO> customFieldVOS = customFieldService.getAllProjectCustomField(projectId);
+            if (customFieldVOS != null && customFieldVOS.size() > 0) {
+                customFieldVOS.forEach(item -> {
+                    AssoTaskField assoTaskField = new AssoTaskField();
+                    assoTaskField.setFieldId(item.getId());
+                    assoTaskField.setFieldType(item.getType());
+                    assoTaskField.setTaskId(taskId);
+                    assoTaskField.setProjectId(batchId);
+                    assoTaskField.setProjectId(projectId);
+                    assoTaskFields.add(assoTaskField);
+                });
+            }
+        } else {
+            markedFields.forEach(item -> {
+                AssoTaskField assoTaskField = new AssoTaskField();
+                assoTaskField.setFieldId(item.getFieldId());
+                assoTaskField.setFieldType(item.getFieldType());
+                assoTaskField.setTaskId(taskId);
+                assoTaskField.setProjectId(batchId);
+                assoTaskField.setProjectId(projectId);
+                assoTaskFields.add(assoTaskField);
+            });
+
+
+        }
+        assoTaskFieldService.saveBatch(assoTaskFields);
+    }
 }

+ 31 - 0
src/main/java/cn/cslg/pas/service/business/TaskBatchService.java

@@ -0,0 +1,31 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.domain.business.SystemDict;
+import cn.cslg.pas.domain.business.TaskBatch;
+import cn.cslg.pas.mapper.SystemDictMapper;
+import cn.cslg.pas.mapper.TaskBatchMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 任务批次类
+ * </p>
+ *
+ * @author lrj
+ * @since 2023-12-15
+ */
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class TaskBatchService extends ServiceImpl<TaskBatchMapper, TaskBatch> {
+
+}

+ 55 - 57
src/main/java/cn/cslg/pas/service/business/es/EsCustomFieldService.java

@@ -62,7 +62,7 @@ public class EsCustomFieldService {
 
 
         //根据专利号查询 是否专利关联过栏位
-        PatentWithIdVO patentWithIdVO = this.getEsCustomField(esCustomFieldDTO, patentNo);
+        PatentWithIdVO patentWithIdVO = this.getEsCustomField(esCustomFieldDTO);
         if (patentWithIdVO != null) {
             esCustomField = patentWithIdVO.getPatent().getESCustomField();
             id = patentWithIdVO.getId();
@@ -93,8 +93,8 @@ public class EsCustomFieldService {
             case 2:              //文本类型
                 if (optionType.equals(1) || optionType.equals(2)) {
                     if (addValues != null && addValues.size() == 1)
-                        esCustomField.setFieldValue(esCustomFieldDTO.getFieldValue());
-                        esCustomField.setStatsValue(addValues);
+                        esCustomField.setFieldValue(addValues);
+                    esCustomField.setStatsValue(addValues);
                 } else if (optionType.equals(0)) {
                     esCustomField.setFieldValue(new ArrayList<>());
                     esCustomField.setStatsValue(new ArrayList<>());
@@ -113,14 +113,43 @@ public class EsCustomFieldService {
                 break;
             case 5:
                 if (optionType.equals(1)) {
-                    if (addValues != null && addValues.size() > 0 ) {
+                    List<String> orgValue = esCustomField.getFieldValue();
+
+                    if (orgValue == null) {
+                        orgValue = new ArrayList<>();
+                    }
+
+                    for (String item : addValues) {
+                        if (!orgValue.contains(item)) {
+                            orgValue.add(item);
+                        }
+                    }
+                    esCustomField.setFieldValue(orgValue);
+                    esCustomField.setStatsValue(orgValue);
+                } else if (optionType.equals(2)) {
+                    if (addValues != null && addValues.size() > 0) {
                         esCustomField.setFieldValue(addValues);
                         esCustomField.setStatsValue(addValues);
-                    }else {
+                    } else {
                         esCustomField.setFieldValue(new ArrayList<>());
                         esCustomField.setStatsValue(new ArrayList<>());
                     }
                 }
+                else if(optionType.equals(0)){
+                    List<String> orgValue = esCustomField.getFieldValue();
+
+                    if (orgValue == null) {
+                        orgValue = new ArrayList<>();
+                    }
+
+                    for (String item : addValues) {
+                        if (orgValue.contains(item)) {
+                            orgValue.remove(item);
+                        }
+                    }
+                    esCustomField.setFieldValue(orgValue);
+                    esCustomField.setStatsValue(orgValue);
+                }
                 break;
             case 6:            //树类型
 
@@ -132,11 +161,12 @@ public class EsCustomFieldService {
                 if (optionType.equals(1)) {
                     //根据值获得树节点
                     List<String> reValues = FormatUtil.getDistinctList(addValues, values);
+                    esCustomField.setFieldValue(reValues);
                     //根据 reValues获得 reStateValues
                     List<Integer> fieldIds = FormatUtil.StringTOIntegerList(reValues);
                     //根据树节点id查询树节点
                     LambdaQueryWrapper<TreeNode> queryWrapper = new LambdaQueryWrapper<>();
-                    queryWrapper.eq(TreeNode::getId, fieldIds);
+                    queryWrapper.in(TreeNode::getId, fieldIds);
                     List<TreeNode> treeNodes = treeNodeService.list(queryWrapper);
                     //遍历节点
                     List<String> reStateValues = new ArrayList<>(reValues);
@@ -152,7 +182,7 @@ public class EsCustomFieldService {
                     esCustomField.setStatsValue(disReStateValues);
                 } else if (optionType.equals(0)) {
                     if (values != null && values.size() > 0 && addValues != null && addValues.size() > 0) {
-                        values.remove(addValues);
+                        values.removeAll(addValues);
                         esCustomField.setFieldValue(values);
                         if (values.size() > 0) {
                             //根据 reValues获得 reStateValues
@@ -218,7 +248,7 @@ public class EsCustomFieldService {
             esCustomFieldHistory.setCustomFieldId(id);
             this.addCustomFieldHistory(esCustomFieldHistory);
         } else {
-            String b = this.addEsCustomFieldToEs(esCustomField, patentNo);
+          this.addEsCustomFieldToEs(esCustomField,patentNo);
         }
         return id;
     }
@@ -235,31 +265,44 @@ public class EsCustomFieldService {
     }
 
     //查询自定义字段
-    public PatentWithIdVO getEsCustomField(EsCustomFieldDTO esCustomFieldDTO, String patentNo) throws Exception {
+    public PatentWithIdVO getEsCustomField(EsCustomFieldDTO esCustomFieldDTO) throws Exception {
         PatentWithIdVO patentWithIdVO = new PatentWithIdVO();
         Integer projectId = esCustomFieldDTO.getProjectId();
         Integer taskId = esCustomFieldDTO.getTaskId();
         SearchRequest.Builder builder = new SearchRequest.Builder();
+        String patentNo = esCustomFieldDTO.getPatentNo();
         //设置查询索引
         builder.index("patent");
 
-        //专利号
-        Query q1 = QueryBuilders.term(t -> t.field("custom_field.project_id").value(projectId));
         //栏位
+        Query q1 = QueryBuilders.term(t -> t.field("custom_field.project_id").value(projectId));
+
         Query q2 = QueryBuilders.term((t -> t.field("custom_field.field").value(esCustomFieldDTO.getFieldId())));
 
         Query q4 = QueryBuilders.term(t -> t.field("custom_field.field_type").value(esCustomFieldDTO.getFieldType()));
 
         Query parentQ1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(patentNo));
+
         //公开号
         Query parentQ2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(patentNo));
+
         //授权号
         Query parentQ3 = QueryBuilders.term(t -> t.field("grant_no.keyword").value(patentNo));
 
         Query parentQ = QueryBuilders.bool(i -> i.should(parentQ1, parentQ2, parentQ3));
 
         Query q3 = QueryBuilders.hasParent(t -> t.parentType("patent").query(parentQ));
-        Query bool = QueryBuilders.bool(i -> i.must(q1, q2, q3, q4));
+
+        Query bool = null;
+
+        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 {
+            Query q5 = QueryBuilders.term((t -> t.field("custom_field.task_id").value(taskId)));
+            bool = QueryBuilders.bool(i -> i.must(q1, q2, q3, q4, q5));
+        }
 
         builder.query(bool);
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
@@ -291,51 +334,6 @@ public class EsCustomFieldService {
         return id;
     }
 
-    /**
-     * 根据专利号 和 projectId ,以及栏位类型栏位值查询所有customField
-     */
-    public List<QueryESCustomFieldVO> getEsCustomField(QueryEsCustomFieldDTO queryEsCustomFieldDTO) throws Exception {
-        List<QueryESCustomFieldVO> vos = new ArrayList<>();
-
-        String fieldId = queryEsCustomFieldDTO.getFieldId();
-        Integer fieldType = queryEsCustomFieldDTO.getFieldType();
-        String patentNo = queryEsCustomFieldDTO.getPatentNo();
-        Query q1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(patentNo));
-
-        Query parentQ1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(patentNo));
-        //公开号
-        Query parentQ2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(patentNo));
-        //授权号
-        Query parentQ3 = QueryBuilders.term(t -> t.field("grant_no.keyword").value(patentNo));
-
-        Query parentQ = QueryBuilders.bool(i -> i.should(parentQ1, parentQ2, parentQ3));
-        Query q3 = QueryBuilders.hasParent(t -> t.parentType("patent").query(parentQ));
-        Query bool = null;
-        if (fieldId != null && fieldType != null) {
-            Query q2 = QueryBuilders.term((t -> t.field("custom_field.field").value(fieldId)));
-            Query q4 = QueryBuilders.term(t -> t.field("custom_field.field_type").value(fieldType));
-            bool = QueryBuilders.bool(i -> i.must(q1, q2, q3, q4));
-        } else {
-            bool = QueryBuilders.bool(i -> i.must(q1, q3));
-        }
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        builder.query(bool);
-        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-        long total = response.hits().total().value();
-        if (total > 0) {
-            List<Hit<Patent>> hits = response.hits().hits();
-            hits.forEach(item -> {
-                ESCustomField esCustomField = item.source().getESCustomField();
-                QueryESCustomFieldVO queryESCustomFieldVO = new QueryESCustomFieldVO();
-                queryESCustomFieldVO.setField(esCustomField.getField());
-                queryESCustomFieldVO.setFieldType(esCustomField.getFieldType());
-                queryESCustomFieldVO.setFieldValue(esCustomField.getFieldValue());
-                vos.add(queryESCustomFieldVO);
-            });
-
-        }
-        return vos;
-    }
 
     public String getEsCustomFieldId(FieldHistoryDTO fieldHistoryDTO) throws Exception {
         String id = "";

+ 16 - 7
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -126,7 +126,7 @@ public class EsService {
      */
     public PatentDTO esSearch(QueryRequest queryRequest) throws Exception {
         PatentDTO dto = new PatentDTO();
-
+        Integer taskId =queryRequest.getTaskId();
         String searchCondition = "";
         List<EsCustomFieldValueDTO> customFields = queryRequest.getCustomFields();
         if (!CollectionUtils.isEmpty(customFields)) {
@@ -151,11 +151,20 @@ public class EsService {
             }
             searchCondition = stringBuilder.toString();
         }
-        if (projectId != null) {
+        if( taskId != null){
             if (searchCondition != null && !"".equals(searchCondition.trim())) {
-                searchCondition = "projectId = " + projectId + " AND " + searchCondition;
+                searchCondition = "taskId = " + taskId + " AND " + searchCondition;
             } else {
-                searchCondition = "projectId = " + projectId;
+                searchCondition = "taskId = " + taskId;
+            }
+        }
+        else {
+            if (projectId != null) {
+                if (searchCondition != null && !"".equals(searchCondition.trim())) {
+                    searchCondition = "projectId = " + projectId + " AND " + searchCondition;
+                } else {
+                    searchCondition = "projectId = " + projectId;
+                }
             }
         }
         SearchRequest.Builder builder = new SearchRequest.Builder();
@@ -194,9 +203,9 @@ public class EsService {
 //        }
 
         //分页
-        if (current > 0 && size > 0) {
-            builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
-        }
+//        if (current > 0 && size > 0) {
+//            builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
+//        }
 
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
         List<PatentColumnDTO> list = new ArrayList<>();

+ 28 - 11
src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java

@@ -56,11 +56,11 @@ public class GetCataloguingFromWebThread extends Thread {
                     taskLock.lock();
                     taskCondition.await();
                 }
-            }catch (Exception e){
+            } catch (Exception e) {
 
             }
-            UploadPatentWebDTO  uploadPatentWebDTO =   uploadPatentWebDTOs.remove(0);
-            try{
+            UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOs.remove(0);
+            try {
                 //根据专利申请号查询著录并装载信息
                 StarPatentVO starPatentVO = uploadPatentWebDTO.getStarPatentVO();
                 String patentZhuLuStr = "";
@@ -73,9 +73,26 @@ public class GetCataloguingFromWebThread extends Thread {
                 if (patentZhuLuStr != null && !patentZhuLuStr.trim().equals("") && !patentZhuLuStr.equals("{}") && !patentZhuLuStr.contains("请求不合法")) {
                     this.loadPatent(uploadPatentWebDTO);
                     if (starPatentVO.getApplicationNo().startsWith("CN")) {
-                        this.loadCNPatent(patentZhuLuStr, uploadPatentWebDTO.getPatent(),starPatentVO);
+                        this.loadCNPatent(patentZhuLuStr, uploadPatentWebDTO.getPatent(), starPatentVO);
+
+                         //装载专利号
+                        if (uploadPatentWebDTO.getPatent().getAppNo() != null) {
+                            uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getAppNo());
+                        } else if (uploadPatentWebDTO.getPatent().getGrantNo() != null) {
+                            uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getGrantNo());
+                        } else if (uploadPatentWebDTO.getPatent().getPublicNo() != null) {
+                            uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getPublicNo());
+                        }
                     } else {
                         this.loadWorldPatent(patentZhuLuStr, uploadPatentWebDTO.getPatent());
+                        //装载专利号
+                        if (uploadPatentWebDTO.getPatent().getGrantNo() != null) {
+                            uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getGrantNo());
+                        } else if (uploadPatentWebDTO.getPatent().getPublicNo() != null) {
+                            uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getPublicNo());
+                        } else if (uploadPatentWebDTO.getPatent().getAppNo() != null) {
+                            uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getAppNo());
+                        }
                     }
                 }
 
@@ -120,12 +137,12 @@ public class GetCataloguingFromWebThread extends Thread {
         this.importTaskAMVO = taskThread.getImportTaskAMVO();
         this.importFromWebToEsService = importFromWebToEsService;
         this.applicationContext = taskThread.getApplicationContext();
-        this.taskThread =taskThread;
+        this.taskThread = taskThread;
     }
 
     public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
-        UploadPatentWebDTO uploadPatentWebDTO1=new UploadPatentWebDTO();
-        BeanUtils.copyProperties(uploadPatentWebDTO,uploadPatentWebDTO1);
+        UploadPatentWebDTO uploadPatentWebDTO1 = new UploadPatentWebDTO();
+        BeanUtils.copyProperties(uploadPatentWebDTO, uploadPatentWebDTO1);
         uploadPatentWebDTOs.add(uploadPatentWebDTO1);
         if (taskLock.tryLock()) {
             taskCondition.signalAll();
@@ -159,7 +176,7 @@ public class GetCataloguingFromWebThread extends Thread {
         //装载申请人地址
         if (starPatentVO.getApplicationAddress() != null && !starPatentVO.getApplicationAddress().equals("")) {
             String applicationAddress = starPatentVO.getApplicationAddress();
-            PersonAddress personAddress  = AddressSplitter.splitAddress(applicationAddress,starPatentVO.getProvinceStr());
+            PersonAddress personAddress = AddressSplitter.splitAddress(applicationAddress, starPatentVO.getProvinceStr());
             patent.setApplicantAddr(personAddress);
         }
 
@@ -253,7 +270,7 @@ public class GetCataloguingFromWebThread extends Thread {
         }
 
         if (starPatentVO.getAgencyStr() != null && !starPatentVO.getAgencyStr().equals("")) {
-                patent.setAgency(starPatentVO.getAgencyStr());
+            patent.setAgency(starPatentVO.getAgencyStr());
 
         }
         //装载公开日
@@ -320,7 +337,7 @@ public class GetCataloguingFromWebThread extends Thread {
     }
 
     //装载中国专利
-    private void loadCNPatent(String chinaPatentZhuLuStr, Patent patent,StarPatentVO starPatentVO) {
+    private void loadCNPatent(String chinaPatentZhuLuStr, Patent patent, StarPatentVO starPatentVO) {
         patent.setPatentNo(patent.getAppNo());
         if (chinaPatentZhuLuStr != null && !chinaPatentZhuLuStr.trim().equals("") && !chinaPatentZhuLuStr.equals("{}") && !chinaPatentZhuLuStr.contains("请求不合法")) {
             List<ChinaPatentZhuLu> chinaPatentZhuLus = JSON.parseArray(chinaPatentZhuLuStr, ChinaPatentZhuLu.class);
@@ -328,7 +345,7 @@ public class GetCataloguingFromWebThread extends Thread {
             //装载申请人地址
             if (patent.getApplicantAddr() == null) {
                 if (chinaPatentZhuLu.getDZ() != null && !chinaPatentZhuLu.getDZ().equals("")) {
-                    PersonAddress personAddress  = AddressSplitter.splitAddress(chinaPatentZhuLu.getDZ(),starPatentVO.getProvinceStr());
+                    PersonAddress personAddress = AddressSplitter.splitAddress(chinaPatentZhuLu.getDZ(), starPatentVO.getProvinceStr());
                     patent.setApplicantAddr(personAddress);
                     patent.setApplicantAddr(personAddress);
                 }

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

@@ -117,7 +117,8 @@
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true",
-    "ifAsCondition": "true"
+    "ifAsCondition": "true",
+    "defaultHidden": "true"
   },
   {
     "name": "标题",
@@ -550,5 +551,17 @@
     "ifGroup": "false",
     "ifShow": "true",
     "ifAsCondition": "true"
+  },
+  {
+    "name": "业务任务",
+    "type": "String",
+    "value": "taskId",
+    "field": "taskId",
+    "esField": "project_task.task_id",
+    "esClass": "projectTaskQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifAsCondition": "true"
   }
 ]

+ 20 - 2
src/test/java/cn/cslg/pas/service/CustomFieldServiceTests.java

@@ -1,25 +1,32 @@
 package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.dto.business.CustomFieldDTO;
+import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.controller.CustomFieldController;
+import cn.cslg.pas.service.business.CustomFieldService;
+import cn.cslg.pas.service.business.es.EsCustomFieldService;
 import org.junit.Assert;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
 
 /**
  * @Author xiexiang
  * @Date 2023/11/14
  */
 @SpringBootTest
+@RunWith(SpringRunner.class)
 public class CustomFieldServiceTests {
     @Autowired
     private CustomFieldController customFieldController;
 
-
+    @Autowired
+    private EsCustomFieldService customFieldService;
     @Test
-    void addCustomField() throws Exception {
+  public  void addCustomField() throws Exception {
         CustomFieldDTO customFieldDTO = new CustomFieldDTO();
         customFieldDTO.setName("相关度");
         customFieldDTO.setProjectId(25);
@@ -29,4 +36,15 @@ public class CustomFieldServiceTests {
         Response response = customFieldController.addCustomField(customFieldDTO);
         Assert.assertEquals(200,Integer.parseInt(response.getCode().toString()));
     }
+
+    @Test
+   public void getC() throws Exception {
+        EsCustomFieldDTO esCustomFieldDTO = new EsCustomFieldDTO();
+        esCustomFieldDTO.setPatentNo("CN201721042063.9");
+        esCustomFieldDTO.setProjectId(101);
+        esCustomFieldDTO.setFieldId("12");
+        esCustomFieldDTO.setFieldType(6);
+    customFieldService.getEsCustomField(esCustomFieldDTO);
+
+    }
 }

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

@@ -55,7 +55,7 @@ System.out.println(a);
         esCustomFieldDTO.setFieldId("1");
 
         String patentNo="CN200920148721.1";
- PatentWithIdVO patent = esCustomFieldService.getEsCustomField(esCustomFieldDTO,patentNo);
+ PatentWithIdVO patent = esCustomFieldService.getEsCustomField(esCustomFieldDTO);
  System.out.println(patent);
     }
 

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

@@ -47,7 +47,7 @@ public class EsServiceTests {
     @Test
     public void getPatentByPatentNo() throws Exception {
         //根据专利号获得id
-        PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo("CN200920148721.1");
+        PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo("US44474689A");
         Patent patent = new Patent();
         patent.setAgency("张三");
         System.out.println(patentWithIdVO);