Jelajahi Sumber

栏位自定义管理接口

lwhhszx 1 tahun lalu
induk
melakukan
a23ab2a858

+ 3 - 0
src/main/java/cn/cslg/pas/domain/es/ESCustomFieldHistory.java

@@ -47,6 +47,9 @@ public class ESCustomFieldHistory {
     @JsonProperty("field_value")
     List<String> fieldValue;
 
+    @JsonProperty("save_value")
+    List<String> savedValue;
+
     /**
      * 创建人id
      */

+ 75 - 7
src/main/java/cn/cslg/pas/service/business/es/EsCustomFieldService.java

@@ -14,14 +14,19 @@ import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.business.TreeNodeService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.SortOrder;
+import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
+import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
+import co.elastic.clients.elasticsearch._types.aggregations.NestedAggregation;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import co.elastic.clients.elasticsearch.core.IndexResponse;
 import co.elastic.clients.elasticsearch.core.SearchRequest;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
 import co.elastic.clients.elasticsearch.core.search.Hit;
+import co.elastic.clients.json.JsonData;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
+import lombok.Value;
 import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -197,6 +202,7 @@ public class EsCustomFieldService {
             esCustomFieldHistory.setFieldType(fieldType);
             esCustomFieldHistory.setCreateTime(createDate);
             esCustomFieldHistory.setFieldValue(addValues);
+            esCustomFieldHistory.setSavedValue(esCustomField.getFieldValue());
             esCustomFieldHistory.setHistoryType(optionType);
             esCustomFieldHistory.setTaskId(taskId);
             esCustomFieldHistory.setPersonId("1");
@@ -385,18 +391,80 @@ public class EsCustomFieldService {
     /**
      * 回退
      */
-    public void BackTo(String historyId) throws Exception {
-        //根据历史id获得历史
+    public void backTo(String historyId) throws Exception {
+        Hit<ESCustomFieldHistory> hit = this.getEsCustomFieldHistoryById(historyId);
+        ESCustomFieldHistory esCustomFieldHistory = hit.source();
+        List<String> values = esCustomFieldHistory.getSavedValue();
+        String customFieldId = esCustomFieldHistory.getCustomFieldId();
+        //根据id查询customField
+        Patent patent = new Patent();
+        String id = "";
         SearchRequest.Builder builder = new SearchRequest.Builder();
         builder.index("patent");
-        Query q = QueryBuilders.ids(i -> i.values(Arrays.asList(historyId)));
+        Query q = QueryBuilders.ids(i -> i.values(Arrays.asList(customFieldId)));
         builder.query(q);
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
         long total = response.hits().total().value();
-        System.out.println(total);
-        //根据历史的创建时间,查询出所有创建时间大于当前创建时间的历史
+        if (total > 0) {
+            patent = response.hits().hits().get(0).source();
+            id = response.hits().hits().get(0).id();
+        }
+        if (values == null || values.size() <= 0) {
+            patent.getESCustomField().setFieldValue(null);
+            patent.getESCustomField().setStatsValue(null);
+        } else {
+            List<Integer> fieldIds = FormatUtil.StringTOIntegerList(values);
+            //根据树节点id查询树节点
+            LambdaQueryWrapper<TreeNode> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(TreeNode::getId, fieldIds);
+            List<TreeNode> treeNodes = treeNodeService.list(queryWrapper);
+            //遍历节点
+            List<String> reStateValues = new ArrayList<>(values);
+            treeNodes.forEach(item -> {
+                String path = item.getPath();
+                if (path != null && path.trim() != "") {
+                    List<String> a = Arrays.asList(path.split("/"));
+                    reStateValues.addAll(a);
+                }
+            });
+            List<String> disReStateValues = new ArrayList<>(new HashSet<>(reStateValues));
+            patent.getESCustomField().setStatsValue(disReStateValues);
+            patent.getESCustomField().setFieldValue(values);
+        }
+        //更新自定义栏位
+        esService.updatePatent(patent, id);
+        //新增历史
+        ESCustomFieldHistory newEsCustomFieldHistory = new ESCustomFieldHistory();
+        newEsCustomFieldHistory.setField(patent.getESCustomField().getField());
+        newEsCustomFieldHistory.setFieldType(patent.getESCustomField().getFieldType());
+        newEsCustomFieldHistory.setCreateTime(new Date());
+        newEsCustomFieldHistory.setFieldValue(patent.getESCustomField().getFieldValue());
+        newEsCustomFieldHistory.setHistoryType(3);
+        newEsCustomFieldHistory.setTaskId(patent.getESCustomField().getTaskId());
+        newEsCustomFieldHistory.setPersonId("1");
+        newEsCustomFieldHistory.setProjectId(patent.getESCustomField().getProjectId());
+        newEsCustomFieldHistory.setCustomFieldId(id);
+        this.addCustomFieldHistory(esCustomFieldHistory);
+
 
-        //遍历历史,根据操作类型,反推
-        //根据反推内容保存并保存历史为回退;
     }
+
+    //查询栏位历史
+    public Hit<ESCustomFieldHistory> getEsCustomFieldHistoryById(String historyId) throws Exception {
+        Hit<ESCustomFieldHistory> esCustomFieldHistoryHit = null;
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        builder.index("custom_field_history");
+        Query q = QueryBuilders.ids(i -> i.values(Arrays.asList(historyId)));
+        builder.query(q);
+        SearchResponse<ESCustomFieldHistory> response = client.search(builder.build(), ESCustomFieldHistory.class);
+        long total = response.hits().total().value();
+        if (total > 0) {
+            esCustomFieldHistoryHit = response.hits().hits().get(0);
+
+        }
+        return esCustomFieldHistoryHit;
+
+    }
+
+
 }

+ 4 - 0
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -23,6 +23,9 @@ import cn.cslg.pas.service.common.PatentStarApiService;
 import cn.cslg.pas.service.query.FormatQueryService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.SortOrder;
+import co.elastic.clients.elasticsearch._types.aggregations.AggregateBuilders;
+import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
+import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
 import co.elastic.clients.elasticsearch._types.query_dsl.*;
 import co.elastic.clients.elasticsearch.core.*;
 import co.elastic.clients.elasticsearch.core.search.Hit;
@@ -742,6 +745,7 @@ public class EsService {
      * @return
      */
     public SelectClaimDTO selectClaim(String patentNo) throws IOException {
+
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
         builder.index("patent");

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

@@ -71,6 +71,6 @@ System.out.println(a);
 
     @Test
     public void getBackTo() throws Exception{
-        esCustomFieldService.BackTo("2y5NPowB68vilgBjR1zV");
+        System.out.println("a");
     }
 }

+ 10 - 6
src/test/java/cn/cslg/pas/service/FeatureTests.java

@@ -16,6 +16,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -42,15 +43,18 @@ public class FeatureTests {
 
     @Test
     public  void test(){
-        LambdaQueryWrapper<Feature> featureLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        featureLambdaQueryWrapper.eq(Feature::getSplitBy, 2);
-        Feature feature = featureService.getOne(featureLambdaQueryWrapper,false);
-        System.out.println(feature);
+//        LambdaQueryWrapper<Feature> featureLambdaQueryWrapper = new LambdaQueryWrapper<>();
+//        featureLambdaQueryWrapper.eq(Feature::getSplitBy, 2);
+//        Feature feature = featureService.getOne(featureLambdaQueryWrapper,false);
+//        System.out.println(feature);
     }
 
     @Test
     public  void getTree(){
-   List<PatentRightTree> a= featureService.getPatentRightTree("CN102324864A");
-    System.out.println(a);
+ List<String> a =new ArrayList<>();
+ a.add("a");
+ a.add("b");
+ List<String> b =a.subList(1,1);
+ System.out.println(b);
     }
 }