Bladeren bron

栏位配置管理

lwhhszx 1 jaar geleden
bovenliggende
commit
71b83c91cb

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

@@ -0,0 +1,16 @@
+package cn.cslg.pas.common.dto;
+
+import cn.cslg.pas.common.vo.PersonSelfFieldVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 实体类表以及栏位信息
+ */
+@Data
+public class AddSelfFieldDTO {
+    private String tableName;
+    private List<String> value;
+
+}

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

@@ -18,6 +18,8 @@ public class PatentProjectDTO {
     private String name;
     @Schema(description = "委托方id")
     private String entrustId;
+    @Schema(description = "委托方名称")
+    private String entrustName;
     @Schema(description = "负责人id")
     private String headId;
     @Schema(description = "负责部门id")

+ 16 - 0
src/main/java/cn/cslg/pas/common/vo/PersonSelfFieldVO.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+
+/**
+ * 人员私有栏位vo
+ */
+@Data
+public class PersonSelfFieldVO {
+    private String name;
+    private String type;
+    private String value;
+    private Integer order;
+    private Boolean ifSearch;
+
+}

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

@@ -2,9 +2,12 @@ package cn.cslg.pas.controller;
 
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.dto.AddSelfFieldDTO;
 import cn.cslg.pas.common.vo.EntityVO;
+import cn.cslg.pas.common.vo.PersonSelfFieldVO;
 import cn.cslg.pas.common.vo.business.ScenarioVO;
 import cn.cslg.pas.domain.business.AssoScenarioMatter;
 import cn.cslg.pas.domain.business.SystemDict;
@@ -13,6 +16,7 @@ import cn.cslg.pas.service.business.AssoScenarioMatterService;
 import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.business.ScenarioService;
 import cn.cslg.pas.service.business.SystemDictService;
+import cn.cslg.pas.service.common.PersonFieldService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +40,8 @@ public class CommonController {
     @Autowired
     private AssoScenarioMatterService assoScenarioMatterService;
 
+    @Autowired
+    private PersonFieldService personFieldService;
     @PostMapping("getParams")
     @Operation(summary = "获得实体类栏位信息")
     public Response getQueryConditions(@RequestBody List<String> tables) {
@@ -55,6 +61,37 @@ public class CommonController {
         return Response.success(map);
     }
 
+
+    @GetMapping("getCustomField")
+    @Operation(summary = "查询个人栏位配置")
+    public Response getCustomField(String tableName) {
+        try {
+          List<PersonSelfFieldVO> personSelfFieldVOS= personFieldService.getCustomField(tableName);
+            Records records =new Records();
+            records.setData(personSelfFieldVOS);
+            return Response.success(records);
+        }
+        catch (Exception e){
+                return Response.error(e.getMessage());
+        }
+
+    }
+
+
+    @PostMapping("setCustomField")
+    @Operation(summary = "设置个人栏位配置")
+    public Response setCustomField(AddSelfFieldDTO addSelfFieldDTO) {
+        try {
+            List<PersonSelfFieldVO> personSelfFieldVOS= personFieldService.setCustomField(addSelfFieldDTO);
+            Records records =new Records();
+            records.setData(personSelfFieldVOS);
+            return Response.success(records);
+        }
+        catch (Exception e){
+            return Response.error(e.getMessage());
+        }
+
+    }
     @GetMapping("/scenario")
     @Operation(summary = "查询应用场景")
     public List<ScenarioVO> queryAllScenario(){

+ 1 - 1
src/main/java/cn/cslg/pas/domain/es/Patent.java

@@ -26,7 +26,7 @@ public class Patent {
     /**
      * 标题
      */
-    @JsonProperty("patent_no")
+    @JsonProperty("title")
     private List<Text> title;
 
     /**

+ 0 - 40
src/main/java/cn/cslg/pas/service/CustomFieldService.java

@@ -1,40 +0,0 @@
-package cn.cslg.pas.service;
-
-
-import cn.cslg.pas.common.core.base.RedisConf;
-import cn.cslg.pas.common.utils.JsonUtils;
-import cn.cslg.pas.common.utils.RedisUtil;
-import cn.cslg.pas.common.utils.StringUtils;
-import cn.cslg.pas.domain.business.AssoProject;
-import cn.cslg.pas.mapper.AssoProjectMapper;
-import cn.hutool.crypto.SecureUtil;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service
-public class CustomFieldService {
-    @Autowired
-    private RedisUtil redisUtil;
-
-    public List<Integer> getCustomField(String type){
-//        String key = SecureUtil.md5(RedisConf.SYMBOL_COLON + type + RedisConf.SYMBOL_COLON +  + RedisConf.SYMBOL_COLON //+ userId+createId);
-//        String json = redisUtil.get(RedisConf.USER_FIELD + RedisConf.SYMBOL_COLON + key);
-//        if (StringUtils.isNotEmpty(json)) {
-//            return JsonUtils.jsonToList(json, PatentField.class);
-//        }
-        //根据登录人id和type查询
-
-        //如果没查询到,则获取所有栏位添加到redis里
-
-        //如果查到则返回
-        return null;
-    }
-
-    public List<Integer> setCustomField(){
-
-        return null;
-    }
-}

+ 49 - 8
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -1,27 +1,68 @@
 package cn.cslg.pas.service.business.es;
 
 import cn.cslg.pas.domain.School;
+import cn.cslg.pas.domain.es.Patent;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch.core.IndexResponse;
+import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.elasticsearch.core.search.Hit;
+import co.elastic.clients.elasticsearch.core.search.TotalHits;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class EsService {
- private final ElasticsearchClient client;
-    public void addDoc() throws Exception {
-        School user = new School();
-        user.setName_test("广西6");
+    private final ElasticsearchClient client;
+
+    /**
+     * @param patent
+     * @throws Exception
+     */
+    public String addPatent(Patent patent) throws Exception {
         IndexResponse indexResponse = client.index(i -> i
-                .index("school")
-                //设置id
-                .id("1")
+                .index("patent")
                 //传入user对象
-                .document(user));
+                .document(patent));
+
+        return indexResponse.id();
+
+    }
 
 
+    /**
+     * 根据专利号获取专利
+     *
+     * @param patentNo
+     * @return
+     * @throws Exception
+     */
+    public String getIdByPatentNo(String patentNo) throws Exception {
+      String id = null;
+
+        SearchResponse<Patent> response = client.search(
+                s -> s.index("patent")
+                        .query(
+                                q -> q.match(
+                                        t -> t.field("patent_no")
+                                                .query(patentNo)
+                                )
+
+                        )
+                ,
+                Patent.class
+
+        );
+        TotalHits total = response.hits().total();
+        List<Hit<Patent>> hits = response.hits().hits();
+        if(hits!=null&&hits.size()>0){  id= hits.get(0).id();}
+        return id;
     }
+
+
 }

+ 88 - 0
src/main/java/cn/cslg/pas/service/common/PersonFieldService.java

@@ -0,0 +1,88 @@
+package cn.cslg.pas.service.common;
+
+
+import cn.cslg.pas.common.core.base.RedisConf;
+import cn.cslg.pas.common.utils.JsonUtils;
+import cn.cslg.pas.common.utils.RedisUtil;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.dto.AddSelfFieldDTO;
+import cn.cslg.pas.common.vo.PersonSelfFieldVO;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.service.business.CommonService;
+import cn.hutool.crypto.SecureUtil;
+import com.alibaba.fastjson.JSON;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class PersonFieldService {
+    @Autowired
+    private RedisUtil redisUtil;
+
+    public List<PersonSelfFieldVO> getCustomField(String tableName) {
+
+        //根据登录人id和type查询
+        String userId = "328";
+        String key = SecureUtil.md5(tableName + RedisConf.SYMBOL_COLON + userId);
+        String json = redisUtil.get(RedisConf.USER_FIELD + RedisConf.SYMBOL_COLON + key);
+
+        //如果查到
+        if (StringUtils.isNotEmpty(json)) {
+            return JsonUtils.jsonToList(json, PersonSelfFieldVO.class);
+        }
+        //如果没查询到,则获取所有栏位添加到redis里
+        String fieldJson = CommonService.readJsonFile(tableName + ".json");
+        List<PersonSelfFieldVO> fieldVOS = JSON.parseArray(fieldJson, PersonSelfFieldVO.class);
+        fieldVOS = fieldVOS.stream().filter(item -> item.getIfSearch().equals(true)).collect(Collectors.toList());
+        if (fieldVOS == null || fieldVOS.size() == 0) {
+            throw new XiaoShiException("表中无字段");
+        }
+
+        //装载顺序
+        Integer order = 0;
+        for (PersonSelfFieldVO item : fieldVOS) {
+            item.setOrder(order);
+            order++;
+        }
+        ;
+
+        //保存到redis
+        redisUtil.set(RedisConf.USER_FIELD + RedisConf.SYMBOL_COLON + key, JsonUtils.objectToJson(fieldVOS));
+
+
+        return fieldVOS;
+    }
+
+    public List<PersonSelfFieldVO> setCustomField(AddSelfFieldDTO addSelfFieldDTO) {
+        String userId = "328";
+        String key = SecureUtil.md5(addSelfFieldDTO.getTableName() + RedisConf.SYMBOL_COLON + userId);
+
+        String fieldJson = CommonService.readJsonFile(addSelfFieldDTO.getTableName() + ".json");
+        List<PersonSelfFieldVO> fieldVOS = JSON.parseArray(fieldJson, PersonSelfFieldVO.class);
+
+        List<PersonSelfFieldVO> personSelfFieldVOS = new ArrayList<>();
+
+        addSelfFieldDTO.getValue().forEach(item -> {
+            PersonSelfFieldVO personSelfFieldVO = fieldVOS.stream().filter(tem -> tem.getValue().equals(item)).findFirst().orElse(null);
+
+            if (personSelfFieldVO != null) {
+                personSelfFieldVOS.add(personSelfFieldVO);
+            }
+        });
+
+        Integer order = 0;
+        
+        for (PersonSelfFieldVO item : personSelfFieldVOS) {
+            item.setOrder(order);
+            order++;
+        }
+        ;
+        redisUtil.set(RedisConf.USER_FIELD + RedisConf.SYMBOL_COLON + key, JsonUtils.objectToJson(personSelfFieldVOS));
+
+        return personSelfFieldVOS;
+    }
+}

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

@@ -3,6 +3,7 @@ package cn.cslg.pas.service;
 import cn.cslg.pas.common.utils.RedisUtil;
 import cn.cslg.pas.controller.CommonController;
 import cn.cslg.pas.controller.EventController;
+import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.service.business.es.EsService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import org.junit.jupiter.api.Test;
@@ -24,15 +25,16 @@ public class EsServiceTests {
     @Autowired
     private RedisUtil redisUtil;
     @Test
-    void addIoc() throws Exception {
-        List<String> list =new ArrayList<>();
-        list.add("event");
-        esService.addDoc();
+    void addPatent() throws Exception {
+        Patent patent =new Patent();
+        patent.setPatentNo("CN202023204739.4");
+     String id = esService.addPatent(patent);
+        System.out.println(id);
     }
 
     @Test
-    void add() throws  Exception{
-        redisUtil.set("1","1");
+    void getPatentByPatentNo() throws  Exception {
+        String a  = esService.getIdByPatentNo("CN202023204739.4");
+    System.out.println(a);
     }
-
 }