Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/example/xiaoshiweixinback/service/importPatent/GetPatentPictureFromWebService.java
#	src/main/java/com/example/xiaoshiweixinback/service/importPatent/ImportFromWebToEsService.java
lwhhszx 1 anno fa
parent
commit
1b60bb9b6a
76 ha cambiato i file con 3871 aggiunte e 650 eliminazioni
  1. 5 0
      pom.xml
  2. 1 0
      src/main/java/com/example/xiaoshiweixinback/business/exception/ExceptionEnum.java
  3. 38 0
      src/main/java/com/example/xiaoshiweixinback/business/jwt/JwtTokenUtil.java
  4. 11 0
      src/main/java/com/example/xiaoshiweixinback/business/utils/RegexUtil.java
  5. 6 1
      src/main/java/com/example/xiaoshiweixinback/controller/LoginController.java
  6. 18 1
      src/main/java/com/example/xiaoshiweixinback/controller/PatentController.java
  7. 19 9
      src/main/java/com/example/xiaoshiweixinback/controller/TicketController.java
  8. 19 0
      src/main/java/com/example/xiaoshiweixinback/domain/AssoTicketFile.java
  9. 3 5
      src/main/java/com/example/xiaoshiweixinback/domain/Ticket.java
  10. 35 0
      src/main/java/com/example/xiaoshiweixinback/domain/TicketFillIn.java
  11. 58 0
      src/main/java/com/example/xiaoshiweixinback/domain/TicketLitigationResponding.java
  12. 58 0
      src/main/java/com/example/xiaoshiweixinback/domain/TicketPatentApply.java
  13. 64 0
      src/main/java/com/example/xiaoshiweixinback/domain/TicketRightsProtection.java
  14. 6 0
      src/main/java/com/example/xiaoshiweixinback/domain/es/PatentVector.java
  15. 47 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/common/ClientDTO.java
  16. 13 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/esPicture/EsPatentSearchDTO.java
  17. 9 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/esPicture/EsPictureNoDTO.java
  18. 13 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/esPicture/EsPictureVectorDTO.java
  19. 0 42
      src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketAddDTO.java
  20. 137 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketDTO.java
  21. 28 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketFillInAddDTO.java
  22. 51 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketLitigationRespondingAddDTO.java
  23. 51 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketPatentApplyAddDTO.java
  24. 1 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketQueryDTO.java
  25. 56 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketRightsProtectionAddDTO.java
  26. 33 0
      src/main/java/com/example/xiaoshiweixinback/entity/vo/TicketFillInVO.java
  27. 58 0
      src/main/java/com/example/xiaoshiweixinback/entity/vo/TicketLitigationRespondingVO.java
  28. 58 0
      src/main/java/com/example/xiaoshiweixinback/entity/vo/TicketPatentApplyVO.java
  29. 63 0
      src/main/java/com/example/xiaoshiweixinback/entity/vo/TicketRightsProtectionVO.java
  30. 19 3
      src/main/java/com/example/xiaoshiweixinback/entity/vo/TicketVO.java
  31. 13 0
      src/main/java/com/example/xiaoshiweixinback/entity/vo/esConfig/EsConfigVO.java
  32. 13 0
      src/main/java/com/example/xiaoshiweixinback/entity/vo/esPicture/EsPictureNoVo.java
  33. 24 0
      src/main/java/com/example/xiaoshiweixinback/entity/vo/esPicture/EsPictureVectorVo.java
  34. 3 1
      src/main/java/com/example/xiaoshiweixinback/entity/vo/person/LoginByWxVO.java
  35. 14 0
      src/main/java/com/example/xiaoshiweixinback/mapper/AssoTicketFileMapper.java
  36. 14 0
      src/main/java/com/example/xiaoshiweixinback/mapper/TicketFillInMapper.java
  37. 14 0
      src/main/java/com/example/xiaoshiweixinback/mapper/TicketLitigationRespondingMapper.java
  38. 14 0
      src/main/java/com/example/xiaoshiweixinback/mapper/TicketPatentApplyMapper.java
  39. 14 0
      src/main/java/com/example/xiaoshiweixinback/mapper/TicketRightsProtectionMapper.java
  40. 17 0
      src/main/java/com/example/xiaoshiweixinback/service/AssoTicketFileService.java
  41. 30 12
      src/main/java/com/example/xiaoshiweixinback/service/LoginService.java
  42. 31 0
      src/main/java/com/example/xiaoshiweixinback/service/TicketFillInService.java
  43. 33 0
      src/main/java/com/example/xiaoshiweixinback/service/TicketLitigationRespondingService.java
  44. 32 0
      src/main/java/com/example/xiaoshiweixinback/service/TicketPatentApplyService.java
  45. 31 0
      src/main/java/com/example/xiaoshiweixinback/service/TicketRightsProtectionService.java
  46. 140 18
      src/main/java/com/example/xiaoshiweixinback/service/TicketService.java
  47. 99 13
      src/main/java/com/example/xiaoshiweixinback/service/common/EsDenseVectorService.java
  48. 17 7
      src/main/java/com/example/xiaoshiweixinback/service/common/GetVectorService.java
  49. 117 3
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/FormatQueryService.java
  50. 72 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/ChildQueryBuilder.java
  51. 124 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/CustomChildQueryBuilder.java
  52. 195 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/DateQueryBuilder.java
  53. 19 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/EsBuilderFactory.java
  54. 35 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/IQueryBuilder.java
  55. 63 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/KeyWordQueryBuilder.java
  56. 69 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/MatchPhaseQueryBuilder.java
  57. 71 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/MatchQueryBuilder.java
  58. 66 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/NestedMergePersonQueryBuilder.java
  59. 74 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/NestedPersonQueryBuilder.java
  60. 87 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/NestedQueryBuilder.java
  61. 88 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/NumberQueryBuilder.java
  62. 71 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/ParentQueryBuilder.java
  63. 106 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/PersonNameQueryBuilder.java
  64. 63 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/PrefixQueryBuilder.java
  65. 196 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/PrioritiesNestedQueryBuilder.java
  66. 71 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/ProductQueryBuilder.java
  67. 71 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/ProjectQueryBuilder.java
  68. 72 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/ProjectTaskQueryBuilder.java
  69. 71 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/TermOrWildcardQueryBuilder.java
  70. 82 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/WildcardQueryBuilder.java
  71. 2 1
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/getSqlFactorys/GetSqlFactory.java
  72. 1 1
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/getSqlFactorys/GetSqlObject.java
  73. 1 2
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/getSqlFactorys/GetWebQuerySql.java
  74. 272 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/permissions/PermissionService.java
  75. 150 0
      src/main/resources/jsons/patentVector.json
  76. 31 531
      src/test/java/com/example/xiaoshiweixinback/XiaoshiWeixinbackApplicationTests.java

+ 5 - 0
pom.xml

@@ -89,6 +89,11 @@
             <version>${jwt.version}</version>
         </dependency>
         <dependency>
+            <groupId>com.auth0</groupId>
+            <artifactId>java-jwt</artifactId>
+            <version>3.1.0</version>
+        </dependency>
+        <dependency>
             <groupId>com.ejlchina</groupId>
             <artifactId>okhttps</artifactId>
             <version>3.1.1</version>

+ 1 - 0
src/main/java/com/example/xiaoshiweixinback/business/exception/ExceptionEnum.java

@@ -15,6 +15,7 @@ public enum ExceptionEnum {
     CODE_WRONG("10002","验证码错误"),
     INIT_GENERICITY_BEAN_ERROR("10003","泛型实例化异常"),
     THE_PHONE_CANNOT_BE_EXIST("10004","手机号已存在"),
+    THE_LOG_OUT("10004","未登录"),
     THE_CODE_IS_NOT_NULL("10006","验证码不能为空");
 
     private String code;// 异常代码

+ 38 - 0
src/main/java/com/example/xiaoshiweixinback/business/jwt/JwtTokenUtil.java

@@ -1,5 +1,8 @@
 package com.example.xiaoshiweixinback.business.jwt;
 
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.JWTCreator;
+import com.auth0.jwt.algorithms.Algorithm;
 import com.example.xiaoshiweixinback.business.jwt.properties.JwtProperties;
 import com.example.xiaoshiweixinback.business.utils.ToolUtil;
 import io.jsonwebtoken.Claims;
@@ -9,12 +12,15 @@ import io.jsonwebtoken.SignatureAlgorithm;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.io.UnsupportedEncodingException;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
 @Component
 public class JwtTokenUtil {
+    private static String SECRET = "xiaoshi-weixin-background";
 
     @Autowired
     private JwtProperties jwtProperties;
@@ -98,6 +104,38 @@ public class JwtTokenUtil {
         return doGenerateToken(claims, userInfo);
     }
 
+    public String createToken() throws UnsupportedEncodingException {
+        //签发时间
+        Date iatDate = new Date();
+        Calendar nowTime = Calendar.getInstance();
+        //设置过期时间 -1小时后过期
+        nowTime.add(Calendar.MINUTE,1);
+        //得到时间
+        Date expiresDate = nowTime.getTime();
+        //实例化组成头部header的map
+        Map<String, Object> map = new HashMap<String, Object>();
+        //声明类型,这里是jwt
+        map.put("typ", "JWT");
+        //声明加密的算法,通常直接使用HMAC SHA256
+        map.put("alg", "HS256");
+        //plyload 载荷,可以理解为承载的物品
+//		iss: jwt签发者
+//		sub: jwt所面向的用户
+//		aud: 接收jwt的一方
+//		exp: jwt的过期时间,这个过期时间必须要大于签发时间
+//		nbf: 定义在什么时间之前,该jwt都是不可用的.
+//		iat: jwt的签发时间
+//		jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。
+        String token = JWT.create()
+                .withHeader(map)//头部 header
+                .withClaim("iss", "ADMIN") // 载荷 payload
+                .withClaim("aud", "All")
+                .withExpiresAt(expiresDate)//设置过期时间
+                .withIssuedAt(iatDate)//设置签发时间
+                .sign(Algorithm.HMAC256(SECRET));//验签singtrue加密
+        return token;
+    }
+
     /**
      * 生成token
      */

+ 11 - 0
src/main/java/com/example/xiaoshiweixinback/business/utils/RegexUtil.java

@@ -41,4 +41,15 @@ public class RegexUtil {
         Matcher m = p.matcher(str);
         return m.matches();
     }
+
+    public static boolean isRegExpReplace(String str) throws PatternSyntaxException {
+        if (str == null) {
+            return false;
+        }
+        String regExp = "[,。、;,./;]";
+        Pattern p = Pattern.compile(regExp);
+        Matcher m = p.matcher(str);
+        return m.matches();
+    }
+
 }

+ 6 - 1
src/main/java/com/example/xiaoshiweixinback/controller/LoginController.java

@@ -79,7 +79,12 @@ public class LoginController {
     @PostMapping("/selectPerson")
     @Operation(summary = "查询个人信息")
     public Response selectPerson(@RequestBody PersonIdDTO vo) throws Exception {
-        PersonVO personVO = loginService.selectPerson(vo);
+        PersonVO personVO = null;
+        try {
+            personVO = loginService.selectPerson(vo);
+        } catch (Exception e) {
+            return Response.unLogin(e.getMessage());
+        }
         return Response.success(personVO);
     }
 

+ 18 - 1
src/main/java/com/example/xiaoshiweixinback/controller/PatentController.java

@@ -2,23 +2,33 @@ package com.example.xiaoshiweixinback.controller;
 
 import com.example.xiaoshiweixinback.business.common.Constants;
 import com.example.xiaoshiweixinback.business.common.Response;
+import com.example.xiaoshiweixinback.entity.dto.esPicture.EsPatentSearchDTO;
 import com.example.xiaoshiweixinback.entity.dto.patent.ImportTaskAMVO;
+import com.example.xiaoshiweixinback.entity.vo.esPicture.EsPictureVectorVo;
+import com.example.xiaoshiweixinback.service.common.EsDenseVectorService;
 import com.example.xiaoshiweixinback.service.common.FileManagerService;
 import com.example.xiaoshiweixinback.service.importPatent.ImportFromWebToEsService;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 
 @RequestMapping(Constants.XIAOSHI_WEIXINBACK + "/patent")
 @RestController
 public class PatentController {
+
     @Autowired
     private ImportFromWebToEsService importFromWebToEsService;
+
     @Autowired
     private FileManagerService fileManagerService;
 
-    @Operation(summary = "手机号/账号登录")
+    @Autowired
+    private EsDenseVectorService esDenseVectorService;
+
+    @Operation(summary = "导入专利")
     @GetMapping(value = "/importPatent")
     public Response queryPatent(@RequestBody ImportTaskAMVO importTaskAMVO) {
         try {
@@ -28,4 +38,11 @@ public class PatentController {
         }
         return Response.success("");
     }
+
+    @Operation(summary = "获取检索专利列表--")
+    @PostMapping(value = "/getPatentList")
+    public Response getPatentList(@RequestBody EsPatentSearchDTO searchDTO) throws Exception {
+        List<EsPictureVectorVo> patentList = esDenseVectorService.getPatentList(searchDTO);
+        return Response.success(patentList);
+    }
 }

+ 19 - 9
src/main/java/com/example/xiaoshiweixinback/controller/TicketController.java

@@ -4,9 +4,10 @@ package com.example.xiaoshiweixinback.controller;
 import com.example.xiaoshiweixinback.business.common.Constants;
 import com.example.xiaoshiweixinback.business.common.Response;
 import com.example.xiaoshiweixinback.business.common.base.Records;
+import com.example.xiaoshiweixinback.entity.dto.ticket.TicketProcessUpDTO;
 import com.example.xiaoshiweixinback.entity.dto.ticket.TicketQueryDTO;
 import com.example.xiaoshiweixinback.entity.product.ProductDTO;
-import com.example.xiaoshiweixinback.entity.dto.ticket.TicketAddDTO;
+import com.example.xiaoshiweixinback.entity.dto.ticket.TicketDTO;
 import com.example.xiaoshiweixinback.service.TicketService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.RequiredArgsConstructor;
@@ -25,11 +26,16 @@ public class TicketController {
 
     @Operation(summary = "添加工单")
     @PostMapping("/addTicket")
-    public Response addTicket(@RequestBody TicketAddDTO ticketAddDTO) {
-        Integer id = ticketService.addorUpdateTicket(ticketAddDTO);
-        Records records = new Records();
-        records.setData(id);
-        return Response.success(records);
+    public Response addTicket(@RequestBody TicketDTO ticketDTO) {
+        Integer id = ticketService.addorUpdateTicket(ticketDTO);
+        if (!id.equals(-1)) {
+            Records records = new Records();
+            records.setData(id);
+            return Response.success(records);
+        } else {
+            return Response.error("发生错误");
+        }
+
     }
 
 
@@ -40,11 +46,15 @@ public class TicketController {
 
     @Operation(summary = "更新工单进度")
     @PostMapping("/updateTicketProcess")
-    public Response updateTicketProcess(@RequestBody ProductDTO productDTO) {
-//        Records records =productService.queryHotProduct(productDTO);
-        return Response.success("records");
+    public Response updateTicketProcess(@RequestBody TicketProcessUpDTO ticketProcessUpDTO) {
+        Integer id = ticketService.updateProcess(ticketProcessUpDTO);
+        if (id.equals(0)) {
+            return Response.error("更新工单进度失败,没有权限");
+        }
+        return Response.success(id);
     }
 
+
     @Operation(summary = "查询工单")
     @PostMapping("/queryTicket")
     public Response queryTicket(@RequestBody TicketQueryDTO ticketQueryDTO) {

+ 19 - 0
src/main/java/com/example/xiaoshiweixinback/domain/AssoTicketFile.java

@@ -0,0 +1,19 @@
+package com.example.xiaoshiweixinback.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 工单与附图关联表
+ * @Author xiexiang
+ * @Date 2024/4/8
+ */
+@TableName("asso_ticket_file")
+@Data
+public class AssoTicketFile extends BaseEntity<AssoTicketFile> {
+    private Integer id;
+
+    private Integer ticketId;
+
+    private String fileGuid;
+}

+ 3 - 5
src/main/java/com/example/xiaoshiweixinback/domain/Ticket.java

@@ -1,11 +1,6 @@
 package com.example.xiaoshiweixinback.domain;
-
-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 java.io.Serializable;
 import java.util.Date;
 
 import lombok.Data;
@@ -55,4 +50,7 @@ public class Ticket extends BaseEntity<Ticket> {
 
     private Double price;
     private String num;
+    private String contactPerson;
+    private String contactPhone;
+    private String contactMail;
 }

+ 35 - 0
src/main/java/com/example/xiaoshiweixinback/domain/TicketFillIn.java

@@ -0,0 +1,35 @@
+package com.example.xiaoshiweixinback.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 填写工单
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@TableName(value = "ticket_fill_in")
+@Data
+public class TicketFillIn extends BaseEntity<TicketFillIn> {
+    /**
+     * 填写工单id
+     */
+    private Integer id;
+
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 公司名称
+     */
+    private String companyName;
+
+    /**
+     * 专利无法导出?
+     */
+    private Boolean patentExport;
+
+    private String description;
+}

+ 58 - 0
src/main/java/com/example/xiaoshiweixinback/domain/TicketLitigationResponding.java

@@ -0,0 +1,58 @@
+package com.example.xiaoshiweixinback.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 知识产权应诉工单
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@TableName("ticket_litigation_responding")
+@Data
+public class TicketLitigationResponding extends BaseEntity<TicketLitigationResponding> {
+    /**
+     * 知识产权应诉工单id
+     */
+    private Integer id;
+
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 投诉方ADIN号
+     */
+    private String complainAdin;
+
+    /**
+     * 被投诉方ADIN号
+     */
+    private String complainedAdin;
+
+    /**
+     * 商品是否原创
+     */
+    private Boolean ifOriginal;
+
+    /**
+     * 被投诉类型
+     */
+    private String complainedType;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 是否协商过
+     */
+    private Boolean ifTalked;
+
+    /**
+     * 详细说明被投诉全过程
+     */
+    private String description;
+}

+ 58 - 0
src/main/java/com/example/xiaoshiweixinback/domain/TicketPatentApply.java

@@ -0,0 +1,58 @@
+package com.example.xiaoshiweixinback.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 我要申请专利
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@TableName(value = "ticket_patent_apply")
+@Data
+public class TicketPatentApply extends BaseEntity<TicketPatentApply> {
+    /**
+     * 申请专利工单id
+     */
+    private Integer id;
+
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 申请类型
+     */
+    private String appType;
+
+    /**
+     * 申请国家
+     */
+    private String appCountry;
+
+    /**
+     * 所属行业
+     */
+    private String industry;
+
+    /**
+     * 技术类型
+     */
+    private String techType;
+
+    /**
+     * 是否海外申请
+     */
+    private Boolean appAbroad;
+
+    /**
+     * 一同申请海牙认证
+     */
+    private Boolean appApostille;
+
+    /**
+     * 备注
+     */
+    private String description;
+}

+ 64 - 0
src/main/java/com/example/xiaoshiweixinback/domain/TicketRightsProtection.java

@@ -0,0 +1,64 @@
+package com.example.xiaoshiweixinback.domain;
+
+import co.elastic.clients.elasticsearch.xpack.usage.Base;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 知识产权维权工单
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@TableName("ticket_rights_protection")
+@Data
+public class TicketRightsProtection extends BaseEntity<TicketRightsProtection> {
+    /**
+     * 知识产权维权工单id
+     */
+    private Integer id;
+
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 侵权店铺ADIN号
+     */
+    private String tortStoreAdin;
+
+    /**
+     * 侵权类型
+     */
+    private String tortType;
+
+    /**
+     * 侵权分类
+     */
+    private String tortClassify;
+
+    /**
+     * 是否拥有专利
+     */
+    private Boolean ifHavePatent;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 描述问题
+     */
+    private String problemDescription;
+
+    /**
+     * 侵权店铺链接
+     */
+    private String tortStoreLink;
+
+    /**
+     * 提供更多信息
+     */
+    private String description;
+}

+ 6 - 0
src/main/java/com/example/xiaoshiweixinback/domain/es/PatentVector.java

@@ -1,12 +1,18 @@
 package com.example.xiaoshiweixinback.domain.es;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.stereotype.Component;
 
 import java.util.Date;
 import java.util.List;
 
+@Component
 @Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class PatentVector {
     /**
      * 专利号

+ 47 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/common/ClientDTO.java

@@ -0,0 +1,47 @@
+package com.example.xiaoshiweixinback.entity.dto.common;
+
+
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+/**
+ * <p>
+ * 委托方表
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-02-17
+ */
+@Data
+
+public class ClientDTO {
+
+    private Integer id;
+
+    /**
+     * 委托方名称
+     */
+
+    private String name;
+
+
+    /**
+     * 客户负责人
+     */
+    private Integer personnelId;
+
+
+
+    private Integer tenantId;
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+    @TableField(exist = false)
+    private String personnelName;
+
+}

+ 13 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/esPicture/EsPatentSearchDTO.java

@@ -0,0 +1,13 @@
+package com.example.xiaoshiweixinback.entity.dto.esPicture;
+
+import lombok.Data;
+
+@Data
+public class EsPatentSearchDTO {
+
+    private Long pageNum;
+
+    private Long pageSize;
+
+    private String key;
+}

+ 9 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/esPicture/EsPictureNoDTO.java

@@ -0,0 +1,9 @@
+package com.example.xiaoshiweixinback.entity.dto.esPicture;
+
+import lombok.Data;
+
+@Data
+public class EsPictureNoDTO {
+
+    private String appNo;
+}

+ 13 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/esPicture/EsPictureVectorDTO.java

@@ -0,0 +1,13 @@
+package com.example.xiaoshiweixinback.entity.dto.esPicture;
+
+import lombok.Data;
+
+import java.io.File;
+
+@Data
+public class EsPictureVectorDTO {
+
+    private File file;
+
+
+}

+ 0 - 42
src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketAddDTO.java

@@ -1,42 +0,0 @@
-package com.example.xiaoshiweixinback.entity.dto.ticket;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import lombok.Data;
-
-import java.util.Date;
-
-@Data
-public class TicketAddDTO {
-    /**
-     * ID
-     */
-    private Integer id;
-
-    /**
-     *
-     */
-    private String name;
-
-    /**
-     *
-     */
-    private String contentText;
-
-    /**
-     * 工单类型
-     */
-    private Integer ticketType;
-
-
-    private String num;
-
-    /**
-     *
-     */
-    private String createId;
-
-    /**
-     *
-     */
-    private Date createTime;
-}

+ 137 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketDTO.java

@@ -0,0 +1,137 @@
+package com.example.xiaoshiweixinback.entity.dto.ticket;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class TicketDTO {
+    /**
+     * ID
+     */
+    private Integer id;
+
+    /**
+     *
+     */
+    private String name;
+
+    /**
+     *
+     */
+    private String contentText;
+
+    /**
+     * 工单类型  1.填写工单  2.知识产权维权  3.知识产权应诉  4.我要申请专利
+     */
+    private Integer ticketType;
+
+
+    private String num;
+
+    /**
+     * 创建人
+     */
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 公司名称
+     */
+    private String companyName;
+
+    /**
+     * 专利无法导出?
+     */
+    private Boolean patentExport;
+
+    /**
+     * 侵权店铺ADIN号
+     */
+    private String tortStoreAdin;
+
+    /**
+     * 侵权类型
+     */
+    private String tortType;
+
+    /**
+     * 侵权分类
+     */
+    private String tortClassify;
+
+    /**
+     * 是否拥有专利
+     */
+    private Boolean ifHavePatent;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 描述问题
+     */
+    private String problemDescription;
+
+    /**
+     * 侵权店铺链接
+     */
+    private String tortStoreLink;
+
+    /**
+     * 投诉方ADIN号
+     */
+    private String complainAdin;
+
+    /**
+     * 被投诉方ADIN号
+     */
+    private String complainedAdin;
+
+    /**
+     * 商品是否原创
+     */
+    private Boolean ifOriginal;
+
+    /**
+     * 被投诉类型
+     */
+    private String complainedType;
+
+    /**
+     * 是否协商过
+     */
+    private Boolean ifTalked;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 联系人
+     */
+    private String contactPerson;
+
+    /**
+     * 联系电话
+     */
+    private String contactPhone;
+
+    /**
+     * 联系邮箱
+     */
+    private String contactMail;
+
+    /**
+     * 附图
+     */
+    private List<String> fileGuids;
+}

+ 28 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketFillInAddDTO.java

@@ -0,0 +1,28 @@
+package com.example.xiaoshiweixinback.entity.dto.ticket;
+
+import lombok.Data;
+
+/**
+ * 填写工单DTO
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Data
+public class TicketFillInAddDTO {
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 公司名称
+     */
+    private String companyName;
+
+    /**
+     * 专利无法导出?
+     */
+    private Boolean patentExport;
+
+    private String description;
+}

+ 51 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketLitigationRespondingAddDTO.java

@@ -0,0 +1,51 @@
+package com.example.xiaoshiweixinback.entity.dto.ticket;
+
+import lombok.Data;
+
+/**
+ * 知识产权应诉工单
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Data
+public class TicketLitigationRespondingAddDTO {
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 投诉方ADIN号
+     */
+    private String complainAdin;
+
+    /**
+     * 被投诉方ADIN号
+     */
+    private String complainedAdin;
+
+    /**
+     * 商品是否原创
+     */
+    private Boolean ifOriginal;
+
+    /**
+     * 被投诉类型
+     */
+    private String complainedType;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 是否协商过
+     */
+    private Boolean ifTalked;
+
+    /**
+     * 详细说明被投诉全过程
+     */
+    private String description;
+}

+ 51 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketPatentApplyAddDTO.java

@@ -0,0 +1,51 @@
+package com.example.xiaoshiweixinback.entity.dto.ticket;
+
+import lombok.Data;
+
+/**
+ * 我要申请专利DTO
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Data
+public class TicketPatentApplyAddDTO {
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 申请类型
+     */
+    private String appType;
+
+    /**
+     * 申请国家
+     */
+    private String appCountry;
+
+    /**
+     * 所属行业
+     */
+    private String industry;
+
+    /**
+     * 技术类型
+     */
+    private String techType;
+
+    /**
+     * 是否海外申请
+     */
+    private Boolean appAbroad;
+
+    /**
+     * 一同申请海牙认证
+     */
+    private Boolean appApostille;
+
+    /**
+     * 备注
+     */
+    private String description;
+}

+ 1 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketQueryDTO.java

@@ -7,6 +7,7 @@ import java.util.Date;
 @Data
 public class TicketQueryDTO {
     private String name;
+    private String num;
     private Integer ticketType;
     private Integer id;
     private Integer current;

+ 56 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/ticket/TicketRightsProtectionAddDTO.java

@@ -0,0 +1,56 @@
+package com.example.xiaoshiweixinback.entity.dto.ticket;
+
+import lombok.Data;
+
+/**
+ * 知识产权维权DTO
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Data
+public class TicketRightsProtectionAddDTO {
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 侵权店铺ADIN号
+     */
+    private String tortStoreAdin;
+
+    /**
+     * 侵权类型
+     */
+    private String tortType;
+
+    /**
+     * 侵权分类
+     */
+    private String tortClassify;
+
+    /**
+     * 是否拥有专利
+     */
+    private Boolean ifHavePatent;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 描述问题
+     */
+    private String problemDescription;
+
+    /**
+     * 侵权店铺链接
+     */
+    private String tortStoreLink;
+
+    /**
+     * 提供更多信息
+     */
+    private String description;
+}

+ 33 - 0
src/main/java/com/example/xiaoshiweixinback/entity/vo/TicketFillInVO.java

@@ -0,0 +1,33 @@
+package com.example.xiaoshiweixinback.entity.vo;
+
+import lombok.Data;
+
+/**
+ * 填写表单VO
+ * @Author xiexiang
+ * @Date 2024/4/8
+ */
+@Data
+public class TicketFillInVO {
+    /**
+     * 填写工单id
+     */
+    private Integer id;
+
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 公司名称
+     */
+    private String companyName;
+
+    /**
+     * 专利无法导出?
+     */
+    private Boolean patentExport;
+
+    private String description;
+}

+ 58 - 0
src/main/java/com/example/xiaoshiweixinback/entity/vo/TicketLitigationRespondingVO.java

@@ -0,0 +1,58 @@
+package com.example.xiaoshiweixinback.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.example.xiaoshiweixinback.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 知识产权应诉工单
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Data
+public class TicketLitigationRespondingVO {
+    /**
+     * 知识产权应诉工单id
+     */
+    private Integer id;
+
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 投诉方ADIN号
+     */
+    private String complainAdin;
+
+    /**
+     * 被投诉方ADIN号
+     */
+    private String complainedAdin;
+
+    /**
+     * 商品是否原创
+     */
+    private Boolean ifOriginal;
+
+    /**
+     * 被投诉类型
+     */
+    private String complainedType;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 是否协商过
+     */
+    private Boolean ifTalked;
+
+    /**
+     * 详细说明被投诉全过程
+     */
+    private String description;
+}

+ 58 - 0
src/main/java/com/example/xiaoshiweixinback/entity/vo/TicketPatentApplyVO.java

@@ -0,0 +1,58 @@
+package com.example.xiaoshiweixinback.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.example.xiaoshiweixinback.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 我要申请专利
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Data
+public class TicketPatentApplyVO {
+    /**
+     * 申请专利工单id
+     */
+    private Integer id;
+
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 申请类型
+     */
+    private String appType;
+
+    /**
+     * 申请国家
+     */
+    private String appCountry;
+
+    /**
+     * 所属行业
+     */
+    private String industry;
+
+    /**
+     * 技术类型
+     */
+    private String techType;
+
+    /**
+     * 是否海外申请
+     */
+    private Boolean appAbroad;
+
+    /**
+     * 一同申请海牙认证
+     */
+    private Boolean appApostille;
+
+    /**
+     * 备注
+     */
+    private String description;
+}

+ 63 - 0
src/main/java/com/example/xiaoshiweixinback/entity/vo/TicketRightsProtectionVO.java

@@ -0,0 +1,63 @@
+package com.example.xiaoshiweixinback.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.example.xiaoshiweixinback.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 知识产权维权工单
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Data
+public class TicketRightsProtectionVO {
+    /**
+     * 知识产权维权工单id
+     */
+    private Integer id;
+
+    /**
+     * 工单id
+     */
+    private Integer ticketId;
+
+    /**
+     * 侵权店铺ADIN号
+     */
+    private String tortStoreAdin;
+
+    /**
+     * 侵权类型
+     */
+    private String tortType;
+
+    /**
+     * 侵权分类
+     */
+    private String tortClassify;
+
+    /**
+     * 是否拥有专利
+     */
+    private Boolean ifHavePatent;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 描述问题
+     */
+    private String problemDescription;
+
+    /**
+     * 侵权店铺链接
+     */
+    private String tortStoreLink;
+
+    /**
+     * 提供更多信息
+     */
+    private String description;
+}

+ 19 - 3
src/main/java/com/example/xiaoshiweixinback/entity/vo/TicketVO.java

@@ -3,6 +3,7 @@ package com.example.xiaoshiweixinback.entity.vo;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class TicketVO {
@@ -26,25 +27,40 @@ public class TicketVO {
      */
     private Integer ticketType;
 
+    /**
+     * 唯一工单号
+     */
     private String num;
 
     /**
-     *
+     * 工单进度
      */
     private Integer ticketProgress;
 
     /**
-     *
+     * 创建人
      */
     private String createId;
 
     /**
-     *
+     * 创建时间
      */
     private Date createTime;
 
+    /**
+     * 价格
+     */
     private Double price;
 
+    /**
+     *
+     */
     private String description;
 
+    private TicketFillInVO ticketFillInVO;
+    private TicketPatentApplyVO ticketPatentApplyVO;
+    private TicketLitigationRespondingVO ticketLitigationRespondingVO;
+    private TicketRightsProtectionVO ticketRightsProtectionVO;
+
+    private List<String> fileGuids;
 }

+ 13 - 0
src/main/java/com/example/xiaoshiweixinback/entity/vo/esConfig/EsConfigVO.java

@@ -0,0 +1,13 @@
+package com.example.xiaoshiweixinback.entity.vo.esConfig;
+
+import lombok.Data;
+
+@Data
+public class EsConfigVO {
+    private String name;
+    private String type;
+    private String value;
+    private String field;
+    private String esField;
+    private String esClass;
+}

+ 13 - 0
src/main/java/com/example/xiaoshiweixinback/entity/vo/esPicture/EsPictureNoVo.java

@@ -0,0 +1,13 @@
+package com.example.xiaoshiweixinback.entity.vo.esPicture;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EsPictureNoVo {
+
+    private String guid;
+
+    private Integer imageIndex;
+}

+ 24 - 0
src/main/java/com/example/xiaoshiweixinback/entity/vo/esPicture/EsPictureVectorVo.java

@@ -0,0 +1,24 @@
+package com.example.xiaoshiweixinback.entity.vo.esPicture;
+
+import com.example.xiaoshiweixinback.domain.es.PatentPerson;
+import com.example.xiaoshiweixinback.domain.es.Text;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class EsPictureVectorVo {
+
+    private String appNo;
+
+    private List<PatentPerson> rightHolder;
+
+    private Date publicDate;
+
+    private List<Text> title;
+
+    private Integer imageIndex;
+
+    private String guid;
+}

+ 3 - 1
src/main/java/com/example/xiaoshiweixinback/entity/vo/person/LoginByWxVO.java

@@ -2,8 +2,10 @@ package com.example.xiaoshiweixinback.entity.vo.person;
 
 import lombok.Data;
 
+import java.io.Serializable;
+
 @Data
-public class LoginByWxVO {
+public class LoginByWxVO implements Serializable {
     private Integer id;
 
     private String userName;

+ 14 - 0
src/main/java/com/example/xiaoshiweixinback/mapper/AssoTicketFileMapper.java

@@ -0,0 +1,14 @@
+package com.example.xiaoshiweixinback.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.xiaoshiweixinback.domain.AssoTicketFile;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 工单与附图关联Mapper
+ * @Author xiexiang
+ * @Date 2024/4/8
+ */
+@Repository
+public interface AssoTicketFileMapper extends BaseMapper<AssoTicketFile> {
+}

+ 14 - 0
src/main/java/com/example/xiaoshiweixinback/mapper/TicketFillInMapper.java

@@ -0,0 +1,14 @@
+package com.example.xiaoshiweixinback.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.xiaoshiweixinback.domain.TicketFillIn;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 填写工单Mapper
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Repository
+public interface TicketFillInMapper extends BaseMapper<TicketFillIn> {
+}

+ 14 - 0
src/main/java/com/example/xiaoshiweixinback/mapper/TicketLitigationRespondingMapper.java

@@ -0,0 +1,14 @@
+package com.example.xiaoshiweixinback.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.xiaoshiweixinback.domain.TicketLitigationResponding;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 知识产权应诉工单
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Repository
+public interface TicketLitigationRespondingMapper extends BaseMapper<TicketLitigationResponding> {
+}

+ 14 - 0
src/main/java/com/example/xiaoshiweixinback/mapper/TicketPatentApplyMapper.java

@@ -0,0 +1,14 @@
+package com.example.xiaoshiweixinback.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.xiaoshiweixinback.domain.TicketPatentApply;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 我要申请专利Mapper
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Repository
+public interface TicketPatentApplyMapper extends BaseMapper<TicketPatentApply> {
+}

+ 14 - 0
src/main/java/com/example/xiaoshiweixinback/mapper/TicketRightsProtectionMapper.java

@@ -0,0 +1,14 @@
+package com.example.xiaoshiweixinback.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.xiaoshiweixinback.domain.TicketRightsProtection;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 知识产权维权工单Mapper
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Repository
+public interface TicketRightsProtectionMapper extends BaseMapper<TicketRightsProtection> {
+}

+ 17 - 0
src/main/java/com/example/xiaoshiweixinback/service/AssoTicketFileService.java

@@ -0,0 +1,17 @@
+package com.example.xiaoshiweixinback.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.xiaoshiweixinback.domain.AssoTicketFile;
+import com.example.xiaoshiweixinback.mapper.AssoTicketFileMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 工单与附图关联Service
+ * @Author xiexiang
+ * @Date 2024/4/8
+ */
+@Service
+@RequiredArgsConstructor
+public class AssoTicketFileService extends ServiceImpl<AssoTicketFileMapper, AssoTicketFile> {
+}

+ 30 - 12
src/main/java/com/example/xiaoshiweixinback/service/LoginService.java

@@ -1,6 +1,7 @@
 package com.example.xiaoshiweixinback.service;
 
 
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.captcha.CaptchaUtil;
 import cn.hutool.captcha.CircleCaptcha;
 import cn.hutool.core.img.ImgUtil;
@@ -25,6 +26,7 @@ import com.example.xiaoshiweixinback.mapper.PersonMapper;
 import com.example.xiaoshiweixinback.okhttp.ResponseManager;
 import com.example.xiaoshiweixinback.service.common.SmsService;
 import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -37,6 +39,7 @@ import javax.crypto.spec.SecretKeySpec;
 import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.*;
@@ -74,7 +77,7 @@ public class LoginService {
      * @return
      */
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
-    public LoginVO loginByPhone(LoginDTO dto) {
+    public LoginVO loginByPhone(LoginDTO dto) throws Exception {
         LogHelper.log("登录开始");
         //获取缓存中验证码
         Object codeObj = redisService.get(AppCacheKeyUtil.getLoginMessageCode(dto.getPhoneNum()));
@@ -118,8 +121,9 @@ public class LoginService {
         } else {
             BeanUtil.copy(person, loginVO);
         }
-        loginVO.setToken(this.getToken());
-        redisService.set(AppCacheKeyUtil.getUserIdToken(person.getId()), loginVO.getToken());
+        loginVO.setToken(jwtTokenUtil.createToken());
+//        redisService.set(AppCacheKeyUtil.getUserIdToken(loginVO.getId()), AppCacheKeyUtil.getTokenUserInfo(loginVO.getToken()));
+        redisService.set(loginVO.getToken(), loginVO.getId());
         LogHelper.log("登陆结束");
         return loginVO;
     }
@@ -180,14 +184,15 @@ public class LoginService {
                     }
                     person.setCreateTime(new Date());
                     person.insert();
-
+                    wxVO.setId(person.getId());
                     wxVO.setIfFirst(true);
                 }
                 wxVO.setPhoneNum(phoneNumber);
             }
-            wxVO.setToken(this.getToken());
+            wxVO.setToken(jwtTokenUtil.createToken());
             wxVO.setOpenId(jscode2SessionWo.getOpenid());
-            redisService.set(AppCacheKeyUtil.getUserIdToken(wxVO.getId()), wxVO.getToken());
+//            redisService.set(AppCacheKeyUtil.getUserIdToken(wxVO.getId()), AppCacheKeyUtil.getTokenUserInfo(wxVO.getToken()));
+            redisService.set(wxVO.getToken(), wxVO.getId());
         }
         return wxVO;
     }
@@ -240,7 +245,7 @@ public class LoginService {
         Map<String, String> result = new HashMap<>();
         result.put("captcha", ImgUtil.toBase64DataUri(captcha.getImage(), "png"));
         result.put("uuid", uuid);
-        //4.将验证码存放到Redis里面并设置过期时间为 60 单位:秒 KEY值格式为: 验证码:UUID  VALUE值为:验证码生成工具所生成的验证码
+        //4.将验证码存放到Redis里面
         redisService.set(AppCacheKeyUtil.getCheckCode(vo.getPhoneNum()), captcha.getCode());
         return result;
     }
@@ -252,7 +257,17 @@ public class LoginService {
      * @return
      */
     public PersonVO selectPerson(PersonIdDTO vo) {
-        Person person = personMapper.selectById(vo.getId());
+        String token = LoginUtils.getToken();
+        if (ToolUtil.isEmpty(token)) {
+            throw new BusinessException(ExceptionEnum.THE_LOG_OUT);
+        }
+        String usedToken = token.substring(token.indexOf("=") + 1);
+        Object obj = redisService.get(usedToken);
+        if (ToolUtil.isEmpty(obj)) {
+            throw new BusinessException(ExceptionEnum.THE_LOG_OUT);
+        }
+        Integer id = JSONObject.parseObject(obj.toString(), Integer.class);
+        Person person = personMapper.selectById(id);
         PersonVO personVO = new PersonVO();
         BeanUtil.copy(person, personVO);
         return personVO;
@@ -288,11 +303,14 @@ public class LoginService {
      * @author: gck
      */
     public boolean logout(PersonIdDTO dto) {
-        //获取token
-        Object obj = redisService.get(AppCacheKeyUtil.getUserIdToken(dto.getId()));
+        String token = LoginUtils.getToken();
+        String usedToken = token.substring(token.indexOf("=") + 1);
+        Object obj = redisService.get(usedToken);
         if (ToolUtil.isNotEmpty(obj)) {
-//            redisService.delete(AppCacheKeyUtil.getTokenUserInfo(obj.toString()));
-            redisService.delete(AppCacheKeyUtil.getUserIdToken(dto.getId()));
+//            Object object = redisService.get(AppCacheKeyUtil.getTokenUserInfo(token));
+//            LoginVO loginVO = JSONObject.parseObject(object.toString(), LoginVO.class);
+//            redisService.delete(AppCacheKeyUtil.getUserIdToken(loginVO.getId()));
+            redisService.delete(usedToken);
         }
         return true;
     }

+ 31 - 0
src/main/java/com/example/xiaoshiweixinback/service/TicketFillInService.java

@@ -0,0 +1,31 @@
+package com.example.xiaoshiweixinback.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.xiaoshiweixinback.domain.TicketFillIn;
+import com.example.xiaoshiweixinback.entity.dto.ticket.TicketFillInAddDTO;
+import com.example.xiaoshiweixinback.mapper.TicketFillInMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+/**
+ * 填写工单Service
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Service
+@RequiredArgsConstructor
+public class TicketFillInService extends ServiceImpl<TicketFillInMapper, TicketFillIn> {
+
+    /**
+     * 填写工单新增
+     * @param ticketFillInAddDTO
+     * @return
+     */
+    public Integer add(TicketFillInAddDTO ticketFillInAddDTO){
+        TicketFillIn ticketFillIn = new TicketFillIn();
+        BeanUtils.copyProperties(ticketFillInAddDTO, ticketFillIn);
+        ticketFillIn.insert();
+        return ticketFillIn.getTicketId();
+    }
+}

+ 33 - 0
src/main/java/com/example/xiaoshiweixinback/service/TicketLitigationRespondingService.java

@@ -0,0 +1,33 @@
+package com.example.xiaoshiweixinback.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.xiaoshiweixinback.domain.TicketLitigationResponding;
+import com.example.xiaoshiweixinback.domain.TicketRightsProtection;
+import com.example.xiaoshiweixinback.entity.dto.ticket.TicketLitigationRespondingAddDTO;
+import com.example.xiaoshiweixinback.entity.dto.ticket.TicketRightsProtectionAddDTO;
+import com.example.xiaoshiweixinback.mapper.TicketLitigationRespondingMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+/**
+ * 知识产权应诉工单
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Service
+@RequiredArgsConstructor
+public class TicketLitigationRespondingService extends ServiceImpl<TicketLitigationRespondingMapper, TicketLitigationResponding> {
+
+    /**
+     * 知识产权应诉工单新增
+     * @param ticketLitigationRespondingAddDTO
+     * @return
+     */
+    public Integer add(TicketLitigationRespondingAddDTO ticketLitigationRespondingAddDTO){
+        TicketLitigationResponding ticketLitigationResponding = new TicketLitigationResponding();
+        BeanUtils.copyProperties(ticketLitigationRespondingAddDTO, ticketLitigationResponding);
+        ticketLitigationResponding.insert();
+        return ticketLitigationResponding.getTicketId();
+    }
+}

+ 32 - 0
src/main/java/com/example/xiaoshiweixinback/service/TicketPatentApplyService.java

@@ -0,0 +1,32 @@
+package com.example.xiaoshiweixinback.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.xiaoshiweixinback.domain.TicketPatentApply;
+import com.example.xiaoshiweixinback.domain.TicketRightsProtection;
+import com.example.xiaoshiweixinback.entity.dto.ticket.TicketPatentApplyAddDTO;
+import com.example.xiaoshiweixinback.mapper.TicketPatentApplyMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+/**
+ * 我要申请专利工单Service
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Service
+@RequiredArgsConstructor
+public class TicketPatentApplyService extends ServiceImpl<TicketPatentApplyMapper, TicketPatentApply> {
+
+    /**
+     * 我要申请专利工单新增
+     * @param ticketPatentApplyAddDTO
+     * @return
+     */
+    public Integer add(TicketPatentApplyAddDTO ticketPatentApplyAddDTO){
+        TicketPatentApply ticketPatentApply = new TicketPatentApply();
+        BeanUtils.copyProperties(ticketPatentApplyAddDTO, ticketPatentApply);
+        ticketPatentApply.insert();
+        return ticketPatentApply.getTicketId();
+    }
+}

+ 31 - 0
src/main/java/com/example/xiaoshiweixinback/service/TicketRightsProtectionService.java

@@ -0,0 +1,31 @@
+package com.example.xiaoshiweixinback.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.xiaoshiweixinback.domain.TicketRightsProtection;
+import com.example.xiaoshiweixinback.entity.dto.ticket.TicketRightsProtectionAddDTO;
+import com.example.xiaoshiweixinback.mapper.TicketRightsProtectionMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+/**
+ * 知识产权维权工单Service
+ * @Author xiexiang
+ * @Date 2024/4/7
+ */
+@Service
+@RequiredArgsConstructor
+public class TicketRightsProtectionService extends ServiceImpl<TicketRightsProtectionMapper, TicketRightsProtection> {
+
+    /**
+     * 知识产权维权工单
+     * @param ticketRightsProtectionAddDTO
+     * @return
+     */
+    public Integer add(TicketRightsProtectionAddDTO ticketRightsProtectionAddDTO){
+        TicketRightsProtection ticketRightsProtection = new TicketRightsProtection();
+        BeanUtils.copyProperties(ticketRightsProtectionAddDTO, ticketRightsProtection);
+        ticketRightsProtection.insert();
+        return ticketRightsProtection.getTicketId();
+    }
+}

+ 140 - 18
src/main/java/com/example/xiaoshiweixinback/service/TicketService.java

@@ -1,5 +1,6 @@
 package com.example.xiaoshiweixinback.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -8,14 +9,9 @@ import com.example.xiaoshiweixinback.business.common.base.Records;
 import com.example.xiaoshiweixinback.business.utils.BatchNoUtil;
 import com.example.xiaoshiweixinback.business.utils.CacheUtil;
 import com.example.xiaoshiweixinback.business.utils.LoginUtils;
-import com.example.xiaoshiweixinback.domain.Person;
-import com.example.xiaoshiweixinback.domain.Ticket;
-import com.example.xiaoshiweixinback.entity.dto.ticket.TicketAddDTO;
-import com.example.xiaoshiweixinback.entity.dto.ticket.TicketPriceUpDTO;
-import com.example.xiaoshiweixinback.entity.dto.ticket.TicketProcessUpDTO;
-import com.example.xiaoshiweixinback.entity.dto.ticket.TicketQueryDTO;
-import com.example.xiaoshiweixinback.entity.vo.PersonnelVO;
-import com.example.xiaoshiweixinback.entity.vo.TicketVO;
+import com.example.xiaoshiweixinback.domain.*;
+import com.example.xiaoshiweixinback.entity.dto.ticket.*;
+import com.example.xiaoshiweixinback.entity.vo.*;
 import com.example.xiaoshiweixinback.mapper.TicketMapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
@@ -24,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author admin
@@ -35,29 +32,97 @@ import java.util.List;
 public class TicketService extends ServiceImpl<TicketMapper, Ticket> {
     private final CacheUtil cacheUtil;
     private final LoginUtils loginUtils;
+    private final TicketFillInService ticketFillInService;
+    private final TicketRightsProtectionService ticketRightsProtectionService;
+    private final TicketLitigationRespondingService ticketLitigationRespondingService;
+    private final TicketPatentApplyService ticketPatentApplyService;
+    private final AssoTicketFileService assoTicketFileService;
 
+    /**
+     * 新增or更新工单
+     * @param ticketDTO
+     * @return
+     */
     @Transactional(rollbackFor = Exception.class)
-    public Integer addorUpdateTicket(TicketAddDTO ticketAddDTO) {
+    public Integer addorUpdateTicket(TicketDTO ticketDTO) {
+        Integer reId = null;
         Ticket ticket = new Ticket();
-        if (ticketAddDTO.getId() == null) {
-            BeanUtils.copyProperties(ticketAddDTO, ticket);
-            PersonnelVO personnelVO = cacheUtil.getLoginUser(loginUtils.getId());
-            ticket.setCreateId(personnelVO.getUuid());
+        if (ticketDTO.getId() == null) {
+            //工单基本信息入库
+            BeanUtils.copyProperties(ticketDTO, ticket);
+//            PersonnelVO personnelVO = cacheUtil.getLoginUser(loginUtils.getId());
+//            ticket.setCreateId(personnelVO.getUuid());
+            ticket.setCreateId("123");
             ticket.setTicketProgress(0);
             String num = BatchNoUtil.getBatchNo();
             ticket.setNum(num);
+            ticket.insert();
+
+            Integer ticketId = ticket.getId();
+            //根据工单的不同类型 信息入库
+            Integer ticketType = ticketDTO.getTicketType();
+            switch (ticketType) {
+                case 1:
+                    //填写工单
+                    TicketFillInAddDTO ticketFillInAddDTO = new TicketFillInAddDTO();
+                    BeanUtils.copyProperties(ticketDTO, ticketFillInAddDTO);
+                    ticketFillInAddDTO.setTicketId(ticketId);
+                    reId = ticketFillInService.add(ticketFillInAddDTO);
+                    break;
+                case 2:
+                    //知识产权维权工单
+                    TicketRightsProtectionAddDTO ticketRightsProtectionAddDTO = new TicketRightsProtectionAddDTO();
+                    BeanUtils.copyProperties(ticketDTO, ticketRightsProtectionAddDTO);
+                    ticketRightsProtectionAddDTO.setTicketId(ticketId);
+                    reId = ticketRightsProtectionService.add(ticketRightsProtectionAddDTO);
+                    break;
+                case 3:
+                    //知识产权应诉工单
+                    TicketLitigationRespondingAddDTO ticketLitigationRespondingAddDTO = new TicketLitigationRespondingAddDTO();
+                    BeanUtils.copyProperties(ticketDTO, ticketLitigationRespondingAddDTO);
+                    ticketLitigationRespondingAddDTO.setTicketId(ticketId);
+                    reId = ticketLitigationRespondingService.add(ticketLitigationRespondingAddDTO);
+                    break;
+                case 4:
+                    //我要申请专利工单
+                    TicketPatentApplyAddDTO ticketPatentApplyAddDTO = new TicketPatentApplyAddDTO();
+                    BeanUtils.copyProperties(ticketDTO, ticketPatentApplyAddDTO);
+                    ticketPatentApplyAddDTO.setTicketId(ticketId);
+                    reId = ticketPatentApplyService.add(ticketPatentApplyAddDTO);
+                    break;
+                default:
+                    reId = -1;
+                    break;
+            }
+
+            //处理工单的附件
+            List<String> fileGuids = ticketDTO.getFileGuids();
+            if (!fileGuids.isEmpty()) {
+                List<AssoTicketFile> assoTicketFiles = new ArrayList<>();
+                for (String fileGuid : fileGuids) {
+                    AssoTicketFile assoTicketFile = new AssoTicketFile();
+                    assoTicketFile.setTicketId(ticketId);
+                    assoTicketFile.setFileGuid(fileGuid);
+                    assoTicketFiles.add(assoTicketFile);
+                }
+                if (!assoTicketFiles.isEmpty()) {
+                    assoTicketFileService.saveBatch(assoTicketFiles);
+                }
+            }
+
         } else {
             ticket = this.getById(ticket.getId());
-            ticket.setName(ticketAddDTO.getName());
-            ticket.setContentText(ticketAddDTO.getContentText());
+            ticket.setName(ticketDTO.getName());
+            ticket.setContentText(ticketDTO.getContentText());
+            ticket.updateById();
         }
-        ticket.insertOrUpdate();
-        return ticket.getId();
+        return reId;
     }
 
     @Transactional(rollbackFor = Exception.class)
     public Records queryTickets(TicketQueryDTO ticketQueryDTO) {
         String name = ticketQueryDTO.getName();
+        String num = ticketQueryDTO.getNum();
         Integer ticketType = ticketQueryDTO.getTicketType();
         Boolean isAdmin = ticketQueryDTO.getIsAdmin();
         Integer pageNum = ticketQueryDTO.getCurrent();
@@ -70,6 +135,9 @@ public class TicketService extends ServiceImpl<TicketMapper, Ticket> {
         if (ticketType != null) {
             queryWrapper.lambda().eq(Ticket::getTicketType, ticketType);
         }
+        if (num != null) {
+            queryWrapper.lambda().eq(Ticket::getNum, num);
+        }
         if (!isAdmin.equals(true)) {
             PersonnelVO personnelVO = cacheUtil.getLoginUser(loginUtils.getId());
             Integer personType = personnelVO.getPersonType();
@@ -101,6 +169,61 @@ public class TicketService extends ServiceImpl<TicketMapper, Ticket> {
             for (Ticket ticket : tickets) {
                 TicketVO ticketVO = new TicketVO();
                 BeanUtils.copyProperties(ticket, ticketVO);
+                Integer ticketId = ticket.getId();
+                //附图
+                LambdaQueryWrapper<AssoTicketFile> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(AssoTicketFile::getTicketId, ticketId);
+                List<AssoTicketFile> assoTicketFiles = assoTicketFileService.list(queryWrapper);
+                if (assoTicketFiles != null && !assoTicketFiles.isEmpty()) {
+                    List<String> fileGuids = assoTicketFiles.stream().map(AssoTicketFile::getFileGuid).collect(Collectors.toList());
+                    ticketVO.setFileGuids(fileGuids);
+                }
+
+                Integer ticketType = ticket.getTicketType();
+                switch (ticketType) {
+                    case 1:
+                        TicketFillInVO ticketFillInVO = new TicketFillInVO();
+                        LambdaQueryWrapper<TicketFillIn> fillInWrapper = new LambdaQueryWrapper<>();
+                        fillInWrapper.eq(TicketFillIn::getTicketId, ticketId);
+                        TicketFillIn ticketFillIn = ticketFillInService.getOne(fillInWrapper, false);
+                        if (ticketFillIn != null) {
+                            BeanUtils.copyProperties(ticketFillIn, ticketFillInVO);
+                        }
+                        ticketVO.setTicketFillInVO(ticketFillInVO);
+                        break;
+                    case 2:
+                        TicketRightsProtectionVO rightsProtectionVO = new TicketRightsProtectionVO();
+                        LambdaQueryWrapper<TicketRightsProtection> rightsProtectionWrapper = new LambdaQueryWrapper<>();
+                        rightsProtectionWrapper.eq(TicketRightsProtection::getTicketId, ticketId);
+                        TicketRightsProtection ticketRightsProtection = ticketRightsProtectionService.getOne(rightsProtectionWrapper, false);
+                        if (ticketRightsProtection != null) {
+                            BeanUtils.copyProperties(ticketRightsProtection, rightsProtectionVO);
+                        }
+                        ticketVO.setTicketRightsProtectionVO(rightsProtectionVO);
+                        break;
+                    case 3:
+                        TicketLitigationRespondingVO litigationRespondingVO = new TicketLitigationRespondingVO();
+                        LambdaQueryWrapper<TicketLitigationResponding> respondingWrapper = new LambdaQueryWrapper<>();
+                        respondingWrapper.eq(TicketLitigationResponding::getTicketId, ticketId);
+                        TicketLitigationResponding ticketLitigationResponding = ticketLitigationRespondingService.getOne(respondingWrapper, false);
+                        if (ticketLitigationResponding != null) {
+                            BeanUtils.copyProperties(ticketLitigationResponding, litigationRespondingVO);
+                        }
+                        ticketVO.setTicketLitigationRespondingVO(litigationRespondingVO);
+                        break;
+                    case 4:
+                        TicketPatentApplyVO patentApplyVO = new TicketPatentApplyVO();
+                        LambdaQueryWrapper<TicketPatentApply> patentApplyWrapper = new LambdaQueryWrapper<>();
+                        patentApplyWrapper.eq(TicketPatentApply::getTicketId, ticketId);
+                        TicketPatentApply ticketPatentApply = ticketPatentApplyService.getOne(patentApplyWrapper, false);
+                        if (ticketPatentApply != null) {
+                            BeanUtils.copyProperties(ticketPatentApply, patentApplyVO);
+                        }
+                        ticketVO.setTicketPatentApplyVO(patentApplyVO);
+                        break;
+                    default:
+                        break;
+                }
                 ticketVOS.add(ticketVO);
             }
         }
@@ -118,7 +241,6 @@ public class TicketService extends ServiceImpl<TicketMapper, Ticket> {
         Integer id = ticketProcessUpDTO.getId();
         Integer process = ticketProcessUpDTO.getProcess();
         Ticket ticket = this.getById(id);
-
         Boolean flag = this.ifHavePermission(ticket.getCreateId());
         if (!flag) {
             return 0;

+ 99 - 13
src/main/java/com/example/xiaoshiweixinback/service/common/EsDenseVectorService.java

@@ -9,10 +9,23 @@ 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.example.xiaoshiweixinback.business.utils.BeanUtil;
+import com.example.xiaoshiweixinback.business.utils.parseQueryToTree.expressManager;
+import com.example.xiaoshiweixinback.business.utils.parseQueryToTree.operateNode;
+import com.example.xiaoshiweixinback.business.utils.parseQueryToTree.treeNode;
+import com.example.xiaoshiweixinback.domain.es.PatentVector;
+import com.example.xiaoshiweixinback.entity.dto.esPicture.EsPatentSearchDTO;
+import com.example.xiaoshiweixinback.entity.dto.esPicture.EsPictureNoDTO;
+import com.example.xiaoshiweixinback.entity.vo.esPicture.EsPictureNoVo;
+import com.example.xiaoshiweixinback.entity.vo.esPicture.EsPictureVectorVo;
+import com.example.xiaoshiweixinback.service.importPatent.FormatQueryService;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -23,29 +36,102 @@ public class EsDenseVectorService {
 
     private final ElasticsearchClient client;
 
-    public List<Integer> getTenderList(List<Float> imageList) throws IOException {
-        List<Integer> list = new ArrayList<>();
+    @Autowired
+    private FormatQueryService formatQueryService;
+
+    @Autowired
+    private GetVectorService getVectorService;
+
+    public List<EsPictureVectorVo> getPatentList(EsPatentSearchDTO dto) throws Exception {
+        Long pageNum = dto.getPageNum();
+        Long pageSize = dto.getPageSize();
+//        String key = dto.getKey().replaceAll("[,。、;,./;\\s]"," OR ");
+        String key = dto.getKey().replaceAll("[,。、;,./;]"," OR ");
+        String s = "TI = " + "(" + key + ")";
+        System.out.println(s);
+
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
-        builder.index("wxpatent");
+        builder.index("patent_vector");
+
+        //1. 解析检索条件
+        treeNode tree = expressManager.getInstance().Parse(s, false);
+        //3. 从es中检索数据
+        Query query = formatQueryService.EsQueryToQuery((operateNode) tree, "patentVector", null);
+        builder.query(query);
+
+        //分页
+        if (pageNum != null && pageSize != null && pageNum > 0 && pageSize > 0) {
+            builder.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue());
+        }
+//        else {
+//            builder.from(0).size(9);
+//        }
+
+        SearchResponse<PatentVector> response = client.search(builder.build(), PatentVector.class);
+        List<EsPictureVectorVo> vectorVos = new ArrayList<>();
+        List<Hit<PatentVector>> hits = response.hits().hits();
+        for (Hit<PatentVector> hit : hits) {
+            PatentVector vector = hit.source();
+            EsPictureVectorVo vectorVo = new EsPictureVectorVo();
+            BeanUtil.copy(vector,vectorVo);
+            vectorVos.add(vectorVo);
+        }
+
+        return vectorVos;
+    }
+
+    public List<EsPictureVectorVo> getPatentVectorSort(File file, String description) throws IOException {
+        List<Float> imageList = new ArrayList<>();
+        List<String> stringList = new ArrayList<>();
+        if (file != null) {
+            stringList = getVectorService.getVectorByFile(file);
+        } else if (StringUtils.isNotEmpty(description)) {
+            stringList = getVectorService.getVectorByText(description);
+        }
+        stringList.forEach(item -> {
+            Float a = Float.parseFloat(item);
+            imageList.add(a);
+        });
 
+        List<EsPictureVectorVo> list = new ArrayList<>();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent_vector");
         String source = "cosineSimilarity(params.queryVector, 'my_vector') + 1.0";
         InlineScript inlineScript = InlineScript.of(i -> i.lang("painless").params("queryVector", JsonData.of(imageList)).source(source));
         Script script = Script.of(i -> i.inline(inlineScript));
         Query query = QueryBuilders.scriptScore(i -> i.script(script).query(org.springframework.data.elasticsearch.client.elc.QueryBuilders.matchAllQueryAsQuery()));
         builder.query(query);
-        builder.size(10);
-        SearchResponse<Integer> response = client.search(builder.build(), Integer.class);
-        List<Hit<Integer>> hits = response.hits().hits();
-        double scoreThreshold = 1.95;
-        for (Hit<Integer> hit : hits) {
-            Double score = hit.score();
-            Integer tender = hit.source();
-            if (score > scoreThreshold) {
-                list.add(tender);
-            }
+        builder.size(100);
+        SearchResponse<PatentVector> response = client.search(builder.build(), PatentVector.class);
+        List<Hit<PatentVector>> hits = response.hits().hits();
+        for (Hit<PatentVector> hit : hits) {
+            PatentVector vector = hit.source();
+            EsPictureVectorVo vectorVo = new EsPictureVectorVo();
+            BeanUtil.copy(vector,vectorVo);
+            list.add(vectorVo);
         }
         return list;
     }
 
+    public List<EsPictureNoVo> getPictureByNo(EsPictureNoDTO noDTO) throws IOException {
+        List<EsPictureNoVo> pictureNoVos = new ArrayList<>();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent_vector");
+        Query query = QueryBuilders.term(i -> i.field("app_no.keyword").value(noDTO.getAppNo()));
+        builder.query(query);
+        builder.size(100);
+        SearchResponse<PatentVector> response = client.search(builder.build(), PatentVector.class);
+        List<Hit<PatentVector>> hits = response.hits().hits();
+        for (Hit<PatentVector> hit : hits) {
+            PatentVector vector = hit.source();
+            EsPictureNoVo noVo = new EsPictureNoVo();
+            noVo.setGuid(vector.getGuid());
+            noVo.setImageIndex(vector.getImageIndex());
+            pictureNoVos.add(noVo);
+        }
+        return pictureNoVos;
+    }
 }

+ 17 - 7
src/main/java/com/example/xiaoshiweixinback/service/common/GetVectorService.java

@@ -23,13 +23,17 @@ import static cn.hutool.core.io.FileUtil.getMimeType;
 @Slf4j
 @Service
 public class GetVectorService {
+
+    @Value("${VectorUrl}")
+    private String vectorUrl;
+
     /**
-     * 调用文件系统上传文件接口
+     * 根据图片获取图片特征向量
      *
-     * @param multipartFiles 文件
+     * @param file
+     * @return
+     * @throws IOException
      */
-    @Value("${VectorUrl}")
-    private String vectorUrl;
     public List<String> getVectorByFile(File file) throws IOException {
 
         MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder()
@@ -57,13 +61,19 @@ public class GetVectorService {
         return stringList;
     }
 
-
-    public List<String> getVectorByText(String key) throws IOException {
+    /**
+     * 根据图片描述获取图片特征向量
+     *
+     * @param description
+     * @return
+     * @throws IOException
+     */
+    public List<String> getVectorByText(String description) throws IOException {
 
         OkHttpClient okHttpClient = new OkHttpClient();
 
         Request request = new Request.Builder()
-                .url(vectorUrl + "/getVectorByText?keyword="+key)
+                .url(vectorUrl + "/getVectorByText?keyword=" + description)
                 .get()
                 .build();
         Response response = null;

+ 117 - 3
src/main/java/com/example/xiaoshiweixinback/service/importPatent/FormatQueryService.java

@@ -1,17 +1,22 @@
 package com.example.xiaoshiweixinback.service.importPatent;
 
 
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import com.alibaba.fastjson.JSON;
 import com.example.xiaoshiweixinback.business.utils.parseQueryToTree.*;
 import com.example.xiaoshiweixinback.entity.dto.common.SqlObject;
-import com.example.xiaoshiweixinback.service.importPatent.getSqlFactorys.GetSqlFactory;
-import com.example.xiaoshiweixinback.service.importPatent.getSqlFactorys.GetSqlObject;
+import com.example.xiaoshiweixinback.entity.vo.esConfig.EsConfigVO;
+import com.example.xiaoshiweixinback.service.importPatent.factorys.EsBuilderFactory.EsBuilderFactory;
+import com.example.xiaoshiweixinback.service.importPatent.factorys.EsBuilderFactory.IQueryBuilder;
+import com.example.xiaoshiweixinback.service.importPatent.factorys.GetSqlFactorys.GetSqlFactory;
+import com.example.xiaoshiweixinback.service.importPatent.factorys.GetSqlFactorys.GetSqlObject;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.text.ParseException;
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -21,9 +26,12 @@ import java.util.List;
 @Service
 @Slf4j
 public class FormatQueryService {
+
     @Autowired
     private GetSqlFactory getSqlFactory;
 
+    @Autowired
+    private EsBuilderFactory esBuilderFactory;
 
 
     /**
@@ -131,7 +139,113 @@ public class FormatQueryService {
         return reQuery;
     }
 
+    /**
+     * Es检索
+     *
+     * @param node
+     * @param configName
+     * @return
+     * @throws ParseException
+     */
+    public Query EsQueryToQuery(treeNode node, String configName, Integer projectId) throws ParseException {
+        if (node == null) {
+            return null;
+        } else {
+            if (node instanceof operateNode) {
+                operate operate1 = ((operateNode) node).getoperate();
+                treeNode Left = node.getLeft();
+                treeNode Right = node.getRight();
+                //如果and or  则递归本身
+                if (operate1.gettype().equals(enuType.Logic)) {
+                    Query q1 = this.EsQueryToQuery((operateNode) Left, configName, projectId);
+                    Query q2 = this.EsQueryToQuery((operateNode) Right, configName, projectId);
+                    switch (operate1.getShowName()) {
+                        case "AND":
+                            return QueryBuilders.bool(i -> i.must(q1, q2));
+                        case "OR":
+                            return QueryBuilders.bool(i -> i.should(q1, q2));
+                        case "NOT":
+                            Query temQ = (q1 == null) ? q2 : q1;
+                            return QueryBuilders.bool(i -> i.mustNot(temQ));
+                        case "TO":
+                            return QueryBuilders.bool(i -> i.must(q1, q2));
+                        case "*":
+                            return QueryBuilders.bool(i -> i.must(q1, q2));
+                        default:
+                            return null;
+                    }
 
+                } else {
+                    if (operate1.gettype().equals(enuType.Assignment)) {
+                        return HandleValueNode(((valueNode) Left).getvalue(), operate1.getCode(), Right, configName, "", "", projectId);
+                    } else {
+                        return null;
+                    }
+                }
+            } else {
+                return null;
+            }
+        }
+    }
+
+    public Query HandleValueNode(String field, String operate, treeNode valeNode, String configName, String op, String dp, Integer projectId) throws ParseException {
+        if (valeNode == null) {
+            return null;
+        } else {
+            if (valeNode instanceof operateNode) {
+                operate operate1 = ((operateNode) valeNode).getoperate();
+                if (operate1.getShowName().equals("TO")) {
+                    op = ">=";
+                    dp = "<=";
+                }
+                if (operate1.gettype().equals(enuType.Logic)) {
+                    Query q1 = this.HandleValueNode(field, operate, ((treeNode) valeNode).getLeft(), configName, op, "", projectId);
+                    Query q2 = this.HandleValueNode(field, operate, (treeNode) valeNode.getRight(), configName, "", dp, projectId);
+                    switch (operate1.getShowName()) {
+                        case "AND":
+                            return QueryBuilders.bool(i -> i.must(q1, q2));
+                        case "OR":
+                            return QueryBuilders.bool(i -> i.should(q1, q2));
+                        case "NOT":
+                            Query temQ = (q1 == null) ? q2 : q1;
+                            return QueryBuilders.bool(i -> i.mustNot(temQ));
+                        case "TO":
+                            return QueryBuilders.bool(i -> i.must(q1, q2));
+                        case "*":
+                            return QueryBuilders.bool(i -> i.must(q1, q2));
+                        default:
+                            return null;
+                    }
+                } else {
+                    return null;
+                }
+            } else {
+                if (StringUtils.isNotEmpty(op)) {
+                    operate = op;
+                } else if (StringUtils.isNotEmpty(dp))
+                    operate = dp;
+                //比较运算符
+                IQueryBuilder iQueryBuilder = null;
+                String json = CommonService.readJsonFile(configName + ".json");
+                List<EsConfigVO> esConfigVOS = JSON.parseArray(json, EsConfigVO.class);
+                EsConfigVO esConfigVO = esConfigVOS.stream().filter(item -> item.getField().equals(field)).findFirst().orElse(null);
+                if (esConfigVO != null) {
+                    iQueryBuilder = esBuilderFactory.getClass(esConfigVO.getEsClass());
+                    iQueryBuilder.setField(esConfigVO.getEsField());
+                    if (iQueryBuilder.getField().contains(".")) {
+                        String path = iQueryBuilder.getField().substring(0, iQueryBuilder.getField().indexOf("."));
+                        iQueryBuilder.setPath(path);
+                    }
+                    iQueryBuilder.setOperator(operate);
+                    iQueryBuilder.setValue(((valueNode) valeNode).getvalue());
+                    iQueryBuilder.setProjectId(projectId);
+                    return iQueryBuilder.creteQuery();
+                } else {
+                    return null;
+                }
+            }
 
+        }
+    }
 
 }

+ 72 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/ChildQueryBuilder.java

@@ -0,0 +1,72 @@
+package com.example.xiaoshiweixinback.service.importPatent.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 ChildQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        return QueryBuilders.hasChild(child -> child.type("project")
+                .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;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 124 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/CustomChildQueryBuilder.java

@@ -0,0 +1,124 @@
+package com.example.xiaoshiweixinback.service.importPatent.factorys.EsBuilderFactory;
+
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.json.JsonData;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+
+@Component
+public class CustomChildQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public String fieldType = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        Query q = null;
+        //自定义栏位日期和数字类型
+        if (field.equals("custom_field.field_type")) {
+            fieldType = value;
+        }
+        if ((fieldType.equals("0") || fieldType.equals("1")) && field.equals("custom_field.field_value.raw")) {
+            if (fieldType.equals("0")) {
+                if (value.contains("-")) {
+                    String frontPart = value.substring(0, value.indexOf("-"));
+                    String afterPart = value.substring(value.indexOf("-") + 1);
+                    q = QueryBuilders.range(n -> n.field(field).gte(JsonData.of(frontPart)).lte(JsonData.of(afterPart)));
+                } else {
+                    q = QueryBuilders.term(n -> n.field(field).value(value));
+                }
+            } else {
+                if (value.contains("-")) {
+
+                } else {
+
+                }
+            }
+        } else if ((fieldType.equals("0") || fieldType.equals("1")) && field.equals("custom_field.stats_value.raw")) {
+            if (fieldType.equals("0")) {
+                if (value.contains("-")) {
+                    String frontPart = value.substring(0, value.indexOf("-"));
+                    String afterPart = value.substring(value.indexOf("-") + 1);
+                    q = QueryBuilders.range(n -> n.field(field).gte(JsonData.of(frontPart)).lte(JsonData.of(afterPart)));
+                } else {
+                    q = QueryBuilders.term(n -> n.field(field).value(value));
+                }
+            } else {
+                if (value.contains("-")) {
+
+                } else {
+
+                }
+            }
+        } else {
+            q = QueryBuilders.term(n -> n.field(field).value(value));
+        }
+        Query finalQ = q;
+        Query query = QueryBuilders.hasChild(i -> i.type("project_customfield")
+                .query(finalQ));
+        return query;
+    }
+
+    @Override
+    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;
+    }
+
+    public String getFieldType() {
+        return fieldType;
+    }
+
+    public void setFieldType(String fieldType) {
+        this.fieldType = fieldType;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 195 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/DateQueryBuilder.java

@@ -0,0 +1,195 @@
+package com.example.xiaoshiweixinback.service.importPatent.factorys.EsBuilderFactory;
+
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.json.JsonData;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+@Component
+public class DateQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+    public static final int YEAR = 4;
+    public static final int MONTHONE = 6;
+    public static final int MONTH = 7;
+    public static final int DAYONE = 8;
+    public static final int DAY = 10;
+    public static final String EQ = "=";
+
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        Query query = null;
+        if (value != null && !"".equals(value)) {
+            Calendar calendar = Calendar.getInstance();
+            if (value.length() == YEAR) {
+                SimpleDateFormat format = new SimpleDateFormat("yyyy");
+                Date year = format.parse(value);
+                calendar.setTime(year);
+                String yearTime = String.valueOf(calendar.getTime().getTime());
+                calendar.add(Calendar.YEAR, 1);
+                String yearNextTime = String.valueOf(calendar.getTime().getTime());
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(yearTime)));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(yearTime)));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(yearTime)));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(yearTime)));
+                        break;
+                    default:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(yearTime)).lt(JsonData.of(yearNextTime)));
+                        break;
+                }
+            } else if (value.length() == MONTH || value.length() == MONTHONE) {
+                Date month = new Date();
+                if (value.contains("-")) {
+                    SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM");
+                    month = format2.parse(value);
+                } else if (value.contains("/")) {
+                    SimpleDateFormat format3 = new SimpleDateFormat("yyyy/MM");
+                    month = format3.parse(value);
+                } else {
+                    SimpleDateFormat format1 = new SimpleDateFormat("yyyyMM");
+                    month = format1.parse(value);
+                }
+                calendar.setTime(month);
+                String monthTime = String.valueOf(calendar.getTime().getTime());
+                calendar.add(Calendar.MONTH, 1);
+                String monthNextTime = String.valueOf(calendar.getTime().getTime());
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(monthTime)));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(monthTime)));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(monthTime)));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(monthTime)));
+                        break;
+                    default:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(monthTime)).lt(JsonData.of(monthNextTime)));
+                        break;
+                }
+            } else if (value.length() == DAY || value.length() == DAYONE) {
+                Date day = new Date();
+                if (value.contains("-")) {
+                    SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
+                    day = format2.parse(value);
+                } else if (value.contains("/")) {
+                    SimpleDateFormat format3 = new SimpleDateFormat("yyyy/MM/dd");
+                    day = format3.parse(value);
+                } else {
+                    SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
+                    day = format1.parse(value);
+                }
+                calendar.setTime(day);
+                String dayTime = String.valueOf(day.getTime());
+                calendar.add(Calendar.DAY_OF_MONTH, 1);
+                String nextDayTime = String.valueOf(calendar.getTime().getTime());
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(dayTime)));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(dayTime)));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(dayTime)));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(dayTime)));
+                        break;
+                    default:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(dayTime)).lt(JsonData.of(nextDayTime)));
+                        break;
+                }
+            } else {
+                query = QueryBuilders
+                        .range(range -> range.field(field).gte(JsonData.of(1)).lte(JsonData.of(2)));
+            }
+        }
+        return query;
+    }
+
+    @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;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 19 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/EsBuilderFactory.java

@@ -0,0 +1,19 @@
+package com.example.xiaoshiweixinback.service.importPatent.factorys.EsBuilderFactory;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+@Component
+public class EsBuilderFactory {
+    @Autowired
+    private Map<String, IQueryBuilder> iQueryBuilderMap;
+
+
+    public IQueryBuilder getClass(String builderName) {
+        IQueryBuilder bean1 = iQueryBuilderMap.get(builderName);
+
+        return bean1;
+    }
+}

+ 35 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/IQueryBuilder.java

@@ -0,0 +1,35 @@
+package com.example.xiaoshiweixinback.service.importPatent.factorys.EsBuilderFactory;
+
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+
+import java.text.ParseException;
+
+public interface IQueryBuilder {
+    public String field = "";
+    public String value = "";
+    public String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    Query creteQuery() throws ParseException;
+
+    public String getField();
+
+    public void setField(String field);
+
+    public String getValue();
+
+    public void setValue(String value);
+
+    public String getOperator();
+
+    public void setOperator(String operator);
+
+    public String getPath();
+
+    public void setPath(String path);
+
+    public Integer getProjectId();
+
+    public void setProjectId(Integer projectId);
+}

+ 63 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/KeyWordQueryBuilder.java

@@ -0,0 +1,63 @@
+package com.example.xiaoshiweixinback.service.importPatent.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;
+
+@Component
+public class KeyWordQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() {
+//        QueryBuilders.matchQueryAsQuery(field, value, null, null);
+        return QueryBuilders.term(i -> i.field(field).value(value));
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 69 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/MatchPhaseQueryBuilder.java

@@ -0,0 +1,69 @@
+package com.example.xiaoshiweixinback.service.importPatent.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 MatchPhaseQueryBuilder implements IQueryBuilder{
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        Query query = null;
+        if (value.contains(" ")) {
+            query = QueryBuilders.matchPhrase(i -> i.field(field).query(value));
+        } else {
+            query = QueryBuilders.matchPhrase(i -> i.field(field).query(value).slop(2));
+        }
+        return query;
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 71 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/MatchQueryBuilder.java

@@ -0,0 +1,71 @@
+package com.example.xiaoshiweixinback.service.importPatent.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 MatchQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        return QueryBuilders.match(i -> i.field(field).query(value));
+    }
+
+    @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;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 66 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/NestedMergePersonQueryBuilder.java

@@ -0,0 +1,66 @@
+package com.example.xiaoshiweixinback.service.importPatent.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 NestedMergePersonQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        String str = "*";
+        String s = str.concat(value).concat("*");
+        Query query = QueryBuilders.wildcard(i -> i.field(field).value(s));
+        Query q1 = QueryBuilders.term(i -> i.field(path + ".project_id").value(projectId));
+        Query bool = QueryBuilders.bool(i -> i.must(query, q1));
+        return QueryBuilders.nested(z -> z.path(path).query(bool));
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 74 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/NestedPersonQueryBuilder.java

@@ -0,0 +1,74 @@
+package com.example.xiaoshiweixinback.service.importPatent.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 NestedPersonQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        Query query = null;
+        if (operator.equals("=")) {
+            String str = "*";
+            String s = str.concat(value).concat("*");
+            query = QueryBuilders.wildcard(i -> i.field(field).value(s));
+        } else {
+            query = QueryBuilders.term(i -> i.field(field).value(value));
+        }
+        Query finalQuery = query;
+        Query nestedQuery = QueryBuilders.nested(z -> z.path(path).query(finalQuery));
+        return nestedQuery;
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 87 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/NestedQueryBuilder.java

@@ -0,0 +1,87 @@
+package com.example.xiaoshiweixinback.service.importPatent.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;
+
+@Component
+public class NestedQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() {
+        Query nestedQuery = null;
+        if (operator.equals("=")) {
+            String str = "*";
+            String s = str.concat(value).concat("*");
+            Query query = QueryBuilders.wildcard(i -> i.field(field).value(s));
+            Query q1 = QueryBuilders.term(i -> i.field(path + ".project_id").value(projectId));
+            Query bool = QueryBuilders.bool(i -> i.must(query, q1));
+            nestedQuery = QueryBuilders.nested(z -> z.path(path).query(bool));
+        } else {
+            Query query = QueryBuilders.term(i -> i.field(field).value(value));
+            Query q1 = QueryBuilders.term(i -> i.field(path + ".project_id").value(projectId));
+            Query bool = QueryBuilders.bool(i -> i.must(query, q1));
+            nestedQuery = QueryBuilders.nested(z -> z.path(path).query(bool));
+        }
+        Query childQuery = null;
+        if (path.equals("merge_applicant")) {
+            Query finalNestedQuery = nestedQuery;
+            childQuery = QueryBuilders.hasChild(i -> i.type("merge_applicat").query(finalNestedQuery));
+        } else {
+            Query finalNestedQuery1 = nestedQuery;
+            childQuery = QueryBuilders.hasChild(i -> i.type(path).query(finalNestedQuery1));
+        }
+        return childQuery;
+    }
+
+    @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;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 88 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/NumberQueryBuilder.java

@@ -0,0 +1,88 @@
+package com.example.xiaoshiweixinback.service.importPatent.factorys.EsBuilderFactory;
+
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.json.JsonData;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+
+@Component
+public class NumberQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+    public static final String GT = ">";
+    public static final String GTE = ">=";
+    public static final String LT = "<";
+    public static final String LTE = "<=";
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        Query query = null;
+        if (operator.equals(GT)) {
+            query = QueryBuilders.range(range -> range.field(field).gt(JsonData.of(value)));
+        } else if (operator.equals(GTE)) {
+            query = QueryBuilders.range(range -> range.field(field).gte(JsonData.of(value)));
+        } else if (operator.equals(LT)) {
+            query = QueryBuilders.range(range -> range.field(field).lt(JsonData.of(value)));
+        } else if (operator.equals(LTE)) {
+            query = QueryBuilders.range(range -> range.field(field).lte(JsonData.of(value)));
+        } else {
+            query = QueryBuilders.match(q -> q.field(field).query(value));
+        }
+        return query;
+    }
+
+    @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;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 71 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/ParentQueryBuilder.java

@@ -0,0 +1,71 @@
+package com.example.xiaoshiweixinback.service.importPatent.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 ParentQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        return QueryBuilders.parentId(parent -> parent.type("project").id(value));
+    }
+
+    @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;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 106 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/PersonNameQueryBuilder.java

@@ -0,0 +1,106 @@
+package com.example.xiaoshiweixinback.service.importPatent.factorys.EsBuilderFactory;
+
+import co.elastic.clients.elasticsearch._types.FieldValue;
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.elasticsearch._types.query_dsl.TermsQueryField;
+import com.alibaba.fastjson.JSON;
+import com.example.xiaoshiweixinback.service.importPatent.factorys.permissions.PermissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+public class PersonNameQueryBuilder implements IQueryBuilder {
+    @Autowired
+    private PermissionService permissionService;
+
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        List<String> ids = new ArrayList<>();
+        try {
+            String json = permissionService.getPersonIdByNamePCS(value, true);
+            ids = JSON.parseArray(json, String.class);
+        } catch (Exception e) {
+        }
+        if (ids == null || ids.size() == 0) {
+            ids = new ArrayList<>();
+            ids.add("0");
+        }
+        List<FieldValue> fieldValues = new ArrayList<>();
+
+        ids.forEach(item -> {
+            fieldValues.add(FieldValue.of(item));
+        });
+
+        Query query = QueryBuilders.terms(t -> t.field(field).terms(new TermsQueryField.Builder().value(fieldValues).build()));
+        return query;
+    }
+
+    @Override
+    public String getField() {
+        return this.field;
+    }
+
+    @Override
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    @Override
+    public String getValue() {
+        return null;
+    }
+
+    @Override
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public PermissionService getPermissionService() {
+        return permissionService;
+    }
+
+    public void setPermissionService(PermissionService permissionService) {
+        this.permissionService = permissionService;
+    }
+
+    @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;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 63 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/PrefixQueryBuilder.java

@@ -0,0 +1,63 @@
+package com.example.xiaoshiweixinback.service.importPatent.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 PrefixQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        return QueryBuilders.prefix(i -> i.field(field).value(value));
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 196 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/PrioritiesNestedQueryBuilder.java

@@ -0,0 +1,196 @@
+package com.example.xiaoshiweixinback.service.importPatent.factorys.EsBuilderFactory;
+
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.json.JsonData;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+@Component
+public class PrioritiesNestedQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+    public static final int YEAR = 4;
+    public static final int MONTHONE = 6;
+    public static final int MONTH = 7;
+    public static final int DAYONE = 8;
+    public static final int DAY = 10;
+    public static final String EQ = "=";
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        Query query = null;
+        if (value != null && !"".equals(value)) {
+            Calendar calendar = Calendar.getInstance();
+            if (value.length() == YEAR) {
+                SimpleDateFormat format = new SimpleDateFormat("yyyy");
+                Date year = format.parse(value);
+                calendar.setTime(year);
+                String yearTime = String.valueOf(calendar.getTime().getTime());
+                calendar.add(Calendar.YEAR, 1);
+                String yearNextTime = String.valueOf(calendar.getTime().getTime());
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(yearTime)));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(yearTime)));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(yearTime)));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(yearTime)));
+                        break;
+                    default:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(yearTime)).lte(JsonData.of(yearNextTime)));
+                        break;
+                }
+            } else if (value.length() == MONTH || value.length() == MONTHONE) {
+                Date month = new Date();
+                if (value.contains("-")) {
+                    SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM");
+                    month = format2.parse(value);
+                } else if (value.contains("/")) {
+                    SimpleDateFormat format3 = new SimpleDateFormat("yyyy/MM");
+                    month = format3.parse(value);
+                } else {
+                    SimpleDateFormat format1 = new SimpleDateFormat("yyyyMM");
+                    month = format1.parse(value);
+                }
+                calendar.setTime(month);
+                String monthTime = String.valueOf(calendar.getTime().getTime());
+                calendar.add(Calendar.MONTH, 1);
+                String monthNextTime = String.valueOf(calendar.getTime().getTime());
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(monthTime)));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(monthTime)));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(monthTime)));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(monthTime)));
+                        break;
+                    default:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(monthTime)).lte(JsonData.of(monthNextTime)));
+                        break;
+                }
+            } else if (value.length() == DAY || value.length() == DAYONE) {
+                Date day = new Date();
+                if (value.contains("-")) {
+                    SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
+                    day = format2.parse(value);
+                } else if (value.contains("/")) {
+                    SimpleDateFormat format3 = new SimpleDateFormat("yyyy/MM/dd");
+                    day = format3.parse(value);
+                } else {
+                    SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
+                    day = format1.parse(value);
+                }
+                calendar.setTime(day);
+                String dayTime = String.valueOf(day.getTime());
+                calendar.add(Calendar.DAY_OF_MONTH, 1);
+                String nextDayTime = String.valueOf(calendar.getTime().getTime());
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(dayTime)));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(dayTime)));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(dayTime)));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(dayTime)));
+                        break;
+                    default:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(dayTime)).lte(JsonData.of(nextDayTime)));
+                        break;
+                }
+            } else {
+                query = QueryBuilders
+                        .range(range -> range.field(field).gte(JsonData.of(1)).lte(JsonData.of(2)));
+            }
+        }
+        Query finalQuery = query;
+        Query nestedQuery = QueryBuilders.nested(z -> z.path(path).query(finalQuery));
+        return nestedQuery;
+    }
+
+    @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;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 71 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/ProductQueryBuilder.java

@@ -0,0 +1,71 @@
+package com.example.xiaoshiweixinback.service.importPatent.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 ProductQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        return QueryBuilders.hasChild(child -> child.type("product").query(i -> i.term(j -> j.field(field).value(value))));
+    }
+
+    @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;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 71 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/ProjectQueryBuilder.java

@@ -0,0 +1,71 @@
+package com.example.xiaoshiweixinback.service.importPatent.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 ProjectQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        return QueryBuilders.term(t -> t.field(field).value(value));
+    }
+
+    @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;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 72 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/ProjectTaskQueryBuilder.java

@@ -0,0 +1,72 @@
+package com.example.xiaoshiweixinback.service.importPatent.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 = "";
+    public Integer projectId = null;
+
+    @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;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 71 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/TermOrWildcardQueryBuilder.java

@@ -0,0 +1,71 @@
+package com.example.xiaoshiweixinback.service.importPatent.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 TermOrWildcardQueryBuilder implements IQueryBuilder{
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        Query query = null;
+        if (operator.equals("=")) {
+            String str = "*";
+            String s = str.concat(value).concat("*");
+            query =  QueryBuilders.wildcard(i -> i.field(field).value(s));
+        } else {
+            query = QueryBuilders.term(i -> i.field(field).value(value));
+        }
+        return query;
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 82 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/EsBuilderFactory/WildcardQueryBuilder.java

@@ -0,0 +1,82 @@
+package com.example.xiaoshiweixinback.service.importPatent.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;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+@Component
+public class WildcardQueryBuilder implements IQueryBuilder{
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        List<String> list = Arrays.asList("patent_no.keyword", "app_no.keyword", "public_no.keyword", "grant_no.keyword");
+        String str = "*";
+        String s = "";
+        if (list.contains(field)) {
+            if (value.length() == 13 || value.length() == 15) {
+                String frontPart = value.substring(0, value.length() - 1);
+                String afterPart = value.substring(value.length() - 1);
+                String s1 = frontPart + "." + afterPart;
+                s = str.concat(s1.toUpperCase(Locale.ROOT)).concat("*");
+            } else {
+                s = str.concat(value.toUpperCase(Locale.ROOT)).concat("*");
+            }
+        } else {
+            s = str.concat(value).concat("*");
+        }
+        String result = s;
+        return QueryBuilders.wildcard(i -> i.field(field).value(result));
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

+ 2 - 1
src/main/java/com/example/xiaoshiweixinback/service/importPatent/getSqlFactorys/GetSqlFactory.java

@@ -1,4 +1,4 @@
-package com.example.xiaoshiweixinback.service.importPatent.getSqlFactorys;
+package com.example.xiaoshiweixinback.service.importPatent.factorys.GetSqlFactorys;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -7,6 +7,7 @@ import java.util.Map;
 
 @Component
 public class GetSqlFactory {
+
     @Autowired
     private Map<String, GetSqlObject> getSqlObjectMap;
 

+ 1 - 1
src/main/java/com/example/xiaoshiweixinback/service/importPatent/getSqlFactorys/GetSqlObject.java

@@ -1,4 +1,4 @@
-package com.example.xiaoshiweixinback.service.importPatent.getSqlFactorys;
+package com.example.xiaoshiweixinback.service.importPatent.factorys.GetSqlFactorys;
 
 
 import com.example.xiaoshiweixinback.entity.dto.common.SqlObject;

+ 1 - 2
src/main/java/com/example/xiaoshiweixinback/service/importPatent/getSqlFactorys/GetWebQuerySql.java

@@ -1,5 +1,4 @@
-package com.example.xiaoshiweixinback.service.importPatent.getSqlFactorys;
-
+package com.example.xiaoshiweixinback.service.importPatent.factorys.GetSqlFactorys;
 
 import com.example.xiaoshiweixinback.entity.dto.common.SqlObject;
 import lombok.extern.slf4j.Slf4j;

+ 272 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/factorys/permissions/PermissionService.java

@@ -0,0 +1,272 @@
+package com.example.xiaoshiweixinback.service.importPatent.factorys.permissions;
+
+import com.alibaba.fastjson.JSON;
+import com.example.xiaoshiweixinback.business.utils.LoginUtils;
+import com.example.xiaoshiweixinback.entity.dto.common.ClientDTO;
+import com.google.gson.Gson;
+import okhttp3.MediaType;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 获取权限系统数据接口
+ */
+@Service
+public class PermissionService {
+    @Value("${authorUrl}")
+    private String PCSUrl;
+
+    /**
+     * 根据名称模糊查询人员接口
+     * @param personName
+     * @return
+     * @throws IOException
+     */
+    public String getPersonIdByNamePCS(String personName, Boolean ifEqual) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getPersonIdByName?personName=" + personName+"&ifEqual="+ifEqual)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 获得所有人员排序接口
+     * @param orderType
+     * @return
+     * @throws IOException
+     */
+    public String getPersonIdOrders(Integer orderType) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getPersonIdOrders?orderType=" + orderType)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 根据人员ids查询人员列表
+     *
+     * @param ids 人员ids
+     * @return 返回装载着人员列表数据的data的String
+     */
+    public String getPersonnelByIdsFromPCS(List<String> ids) throws IOException {
+        String param = new Gson().toJson(ids);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getPersonnelByIds")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+
+    /**
+     * 根据客户ids查询客户列表
+     *
+     * @param ids 客户ids
+     * @return 返回装载着客户列表数据的data的String
+     */
+    public String getClientByIdsFromPCS(List<Integer> ids) throws IOException {
+        String param = new Gson().toJson(ids);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getClintByIds")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 根据名称模糊查询客户接口
+     * @param clientName
+     * @return
+     * @throws IOException
+     */
+    public String getClientIdByNamePCS(String clientName,Boolean ifEqual) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getClientIdByName?clientName=" + clientName+"&ifEqual="+ifEqual)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+
+    /**
+     * 获得所有客户排序接口
+     * @param orderType
+     * @return
+     * @throws IOException
+     */
+    public String getClientIdOrders(Integer orderType) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getClientIdOrders?orderType=" + orderType)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+
+    /**
+     * @title 添加客户
+     * @description 添加客户
+     * @autor lrj
+     */
+
+    public String addClient(ClientDTO client) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        String param = new Gson().toJson(client);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/client/add")
+                .addHeader("Cookie", LoginUtils.getToken())
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 根据部门ids查询部门列表
+     *
+     * @param ids 部门id
+     * @return 返回装载着客户列表数据的data的String
+     */
+    public String getDepartmentByIdsFromPCS(List<String> ids) throws IOException {
+        String param = new Gson().toJson(ids);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getDeparts")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 获得所有部门排序接口
+     * @param orderType
+     * @return
+     * @throws IOException
+     */
+    public String getDepartmentOrders(Integer orderType) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getDepartmentOrders?orderType=" + orderType)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 获得所有委托方排序接口
+     * @param orderType
+     * @return
+     * @throws IOException
+     */
+    public String getEntrustsOrder(Integer orderType) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getEntrustsOrder?orderType=" + orderType)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 根据名称获得委托方id和类型接口
+     * @param
+     * @return
+     * @throws IOException
+     */
+    public String getEntrustsByName(String name,Integer type) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getEntrustsByName?name=" + name+"&type="+type)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+
+    /**
+     * 根据部门ids查询部门列表
+     *
+     * @param ids 部门id
+     * @return 返回装载着客户列表数据的data的String
+     */
+    public String getEntrustsByIdAndType(List<String> ids) throws IOException {
+        String param = new Gson().toJson(ids);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getEntrustsByIdAndType")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+
+
+
+    /**
+     * 根据名称模糊查询部门接口
+     * @param
+     * @return
+     * @throws IOException
+     */
+    public String getDepartmentIdByName(String departmentName, Boolean ifEqual) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getDepartmentIdByName?departmentName=" + departmentName+"&ifEqual="+ifEqual)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    public List<String> getPersonIdsByName(String name){
+
+        List<String> ids = new ArrayList<>();
+        try {
+            String json = this.getPersonIdByNamePCS(name, false);
+            ids = JSON.parseArray(json, String.class);
+        } catch (Exception e) {
+        }
+        if (ids == null || ids.size() == 0) {
+            ids = new ArrayList<>();
+            ids.add("0");
+        }
+        return ids;
+
+    }
+}

+ 150 - 0
src/main/resources/jsons/patentVector.json

@@ -0,0 +1,150 @@
+[
+  {
+    "name": "申请号",
+    "type": "String",
+    "value": "appNo",
+    "field": "AN",
+    "esField": "app_no.keyword",
+    "esClass": "wildcardQueryBuilder",
+    "ifSearch": "true",
+    "ifGroup": "true",
+    "ifShow": "true",
+    "ifAsCondition": "true",
+    "ifStats": "false",
+    "groupBy": "number",
+    "ifSort": "true",
+    "exportClass": "getCommonValue"
+  },
+  {
+    "name": "申请日",
+    "type": "DateTime",
+    "value": "appDate",
+    "field": "AD",
+    "esField": "app_date",
+    "esClass": "dateQueryBuilder",
+    "ifSearch": "true",
+    "ifGroup": "true",
+    "ifShow": "true",
+    "ifAsCondition": "true",
+    "ifStats": "true",
+    "groupBy": "dateType",
+    "ifSort": "true",
+    "exportClass": "getDateValue"
+  },
+  {
+    "name": "项目id",
+    "type": "String",
+    "value": "projectId",
+    "field": "projectId",
+    "esField": "project_id",
+    "esClass": "childQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifAsCondition": "true",
+    "ifStats": "false"
+  },
+  {
+    "name": "摘要",
+    "type": "Object",
+    "value": "abstractStr",
+    "field": "AB",
+    "esField": "abstract_str.text_content",
+    "esClass": "matchPhaseQueryBuilder",
+    "ifSearch": "true",
+    "ifGroup": "true",
+    "ifShow": "true",
+    "ifAsCondition": "true",
+    "defaultHidden": "true",
+    "ifStats": "false",
+    "groupBy": "text",
+    "ifSort": "true",
+    "exportClass": "getTextContentValue"
+  },
+  {
+    "name": "标题",
+    "type": "Object",
+    "value": "title",
+    "field": "TI",
+    "esField": "title.text_content",
+    "esClass": "matchPhaseQueryBuilder",
+    "ifSearch": "true",
+    "ifGroup": "true",
+    "ifShow": "true",
+    "ifAsCondition": "true",
+    "ifStats": "false",
+    "groupBy": "text",
+    "ifSort": "false",
+    "exportClass": "getTextContentValue"
+  },
+  {
+    "name": "申请国家",
+    "type": "String",
+    "value": "appCountry",
+    "field": "CO",
+    "esField": "app_country",
+    "esClass": "keyWordQueryBuilder",
+    "ifSearch": "true",
+    "ifGroup": "true",
+    "ifShow": "true",
+    "ifStats": "true",
+    "ifAsCondition": "true",
+    "groupBy": "nation",
+    "ifSort": "true"
+  },
+  {
+    "name": "LOC分类号",
+    "type": "Object",
+    "value": "mloc",
+    "field": "MLOC",
+    "esField": "mloc",
+    "esClass": "prefixQueryBuilder",
+    "ifSearch": "true",
+    "ifGroup": "true",
+    "ifShow": "true",
+    "ifStats": "true",
+    "ifAsCondition": "true",
+    "groupBy": "classify",
+    "ifSort": "false",
+    "children": [
+      {
+        "label": "LOC大类",
+        "type": "1",
+        "group": "nos",
+        "value": "LOC1"
+      },
+      {
+        "label": "LOC",
+        "type": "1",
+        "group": "nos",
+        "value": "LOC"
+      }
+    ]
+  },
+  {
+    "name": "LOC大类",
+    "type": "String",
+    "value": "locLevel1",
+    "field": "LOC1",
+    "esField": "mloc.level1",
+    "esClass": "keyWordQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifStats": "false",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "LOC",
+    "type": "String",
+    "value": "locLevel2",
+    "field": "LOC",
+    "esField": "mloc.level2",
+    "esClass": "keyWordQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifStats": "false",
+    "ifAsCondition": "true"
+  }
+]

+ 31 - 531
src/test/java/com/example/xiaoshiweixinback/XiaoshiWeixinbackApplicationTests.java

@@ -1,554 +1,54 @@
 package com.example.xiaoshiweixinback;
 
-import com.alibaba.fastjson.JSON;
-import com.example.xiaoshiweixinback.entity.dto.person.PersonPhoneDTO;
-import com.example.xiaoshiweixinback.entity.dto.person.SendCodeDTO;
-import com.example.xiaoshiweixinback.service.LoginService;
+import cn.dev33.satoken.stp.StpUtil;
+import com.example.xiaoshiweixinback.business.utils.RegexUtil;
+import com.example.xiaoshiweixinback.entity.dto.esPicture.EsPatentSearchDTO;
+import com.example.xiaoshiweixinback.entity.vo.esPicture.EsPictureVectorVo;
+import com.example.xiaoshiweixinback.service.common.EsDenseVectorService;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.Lazy;
 
-import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
+
 
 @SpringBootTest
 class XiaoshiWeixinbackApplicationTests {
 
     @Autowired
     @Lazy
-    private LoginService loginService;
+    private EsDenseVectorService denseVectorService;
 
     @Test
     void contextLoads() {
     }
 
     @Test
-    public void test() {
-//        PersonPhoneDTO dto = new PersonPhoneDTO();
-//        dto.setPhoneNum("123456789");
-//        Map<String, String> map = loginService.verifyCode(dto);
-//        System.out.println(map);
-//        SendCodeDTO dto = new SendCodeDTO();
-//        dto.setPhoneNum("15705220533");
-//        boolean send = loginService.send(dto);
-//        System.out.println(send);
+    public void test() throws Exception {
+//        List<EsPictureVectorVo> list = denseVectorService.getPatentVectorSort(null, "大大的原型");
+        EsPatentSearchDTO dto = new EsPatentSearchDTO();
+        dto.setKey("手机 OR 产品");
+        List<EsPictureVectorVo> list = denseVectorService.getPatentList(dto);
+        System.out.println(list);
+
+//        String s = "a , b , c , d";
+//        boolean regExpReplace = RegexUtil.isRegExpReplace(s);
+//        System.out.println(regExpReplace);
+//        String all = s.replaceAll("[,。、;,./;]", " OR ");
+//        System.out.println(all);
+
+//        String s = "a OR b OR c OR d";
+//        boolean regExpReplace = RegexUtil.isRegExpReplace(s);
+//        System.out.println(regExpReplace);
+//        String sa = s.replaceAll("[,。、;,./;\\s]", " OR ");
+//        System.out.println(sa);
 
-        String s = "\"" +
-                "  -0.43104565143585205,\n" +
-                "  -0.5174650549888611,\n" +
-                "  -0.2149243950843811,\n" +
-                "  -0.41307300329208374,\n" +
-                "  0.33717718720436096,\n" +
-                "  -0.4122418165206909,\n" +
-                "  -0.10073207318782806,\n" +
-                "  0.8990738391876221,\n" +
-                "  0.2938253879547119,\n" +
-                "  0.15962588787078857,\n" +
-                "  0.07490569353103638,\n" +
-                "  0.015168831683695316,\n" +
-                "  0.7117551565170288,\n" +
-                "  0.20649850368499756,\n" +
-                "  0.00492202490568161,\n" +
-                "  -0.3063884675502777,\n" +
-                "  -0.09571979939937592,\n" +
-                "  -0.06397294998168945,\n" +
-                "  -0.2555930018424988,\n" +
-                "  0.3156653046607971,\n" +
-                "  -0.6173087954521179,\n" +
-                "  -0.09985126554965973,\n" +
-                "  0.2674689292907715,\n" +
-                "  -0.0568261593580246,\n" +
-                "  -0.09287881851196289,\n" +
-                "  -0.10219928622245789,\n" +
-                "  -0.04920598864555359,\n" +
-                "  -0.3122442364692688,\n" +
-                "  -0.058546021580696106,\n" +
-                "  0.05023355782032013,\n" +
-                "  -0.2052859365940094,\n" +
-                "  0.03210242837667465,\n" +
-                "  -0.01743297278881073,\n" +
-                "  0.4844779372215271,\n" +
-                "  -0.621017575263977,\n" +
-                "  -0.12284699082374573,\n" +
-                "  0.3427127003669739,\n" +
-                "  -0.03558463230729103,\n" +
-                "  -0.06305825710296631,\n" +
-                "  -0.9444432854652405,\n" +
-                "  -0.16140100359916687,\n" +
-                "  -0.060797180980443954,\n" +
-                "  -0.05767505615949631,\n" +
-                "  0.0010891705751419067,\n" +
-                "  -0.23530007898807526,\n" +
-                "  -0.2653476595878601,\n" +
-                "  -0.4238918721675873,\n" +
-                "  0.0334915816783905,\n" +
-                "  -0.42220649123191833,\n" +
-                "  -0.1422613263130188,\n" +
-                "  0.11282847076654434,\n" +
-                "  -0.1965130716562271,\n" +
-                "  -0.24236483871936798,\n" +
-                "  -0.15939763188362122,\n" +
-                "  0.004429027438163757,\n" +
-                "  -0.04000389575958252,\n" +
-                "  0.18624305725097656,\n" +
-                "  -0.20168577134609222,\n" +
-                "  0.08920460939407349,\n" +
-                "  0.3156498670578003,\n" +
-                "  0.4573097229003906,\n" +
-                "  -0.392400860786438,\n" +
-                "  0.08116964250802994,\n" +
-                "  -0.18996715545654297,\n" +
-                "  -0.01169702410697937,\n" +
-                "  -0.16127005219459534,\n" +
-                "  0.7318961024284363,\n" +
-                "  0.16215404868125916,\n" +
-                "  -0.06464187800884247,\n" +
-                "  0.12966163456439972,\n" +
-                "  -0.6570093631744385,\n" +
-                "  -0.23499099910259247,\n" +
-                "  -0.07537676393985748,\n" +
-                "  0.38073819875717163,\n" +
-                "  0.2937473654747009,\n" +
-                "  -0.1984231173992157,\n" +
-                "  0.10365790128707886,\n" +
-                "  -0.29997140169143677,\n" +
-                "  -0.09984797984361649,\n" +
-                "  0.00755426287651062,\n" +
-                "  0.09685152024030685,\n" +
-                "  -0.1377292424440384,\n" +
-                "  0.021001748740673065,\n" +
-                "  0.6029696464538574,\n" +
-                "  0.05080830305814743,\n" +
-                "  -0.09060272574424744,\n" +
-                "  0.40772029757499695,\n" +
-                "  -0.09505730122327805,\n" +
-                "  -0.05455566942691803,\n" +
-                "  -0.29869967699050903,\n" +
-                "  -0.054645538330078125,\n" +
-                "  -0.2818771302700043,\n" +
-                "  -7.972299575805664,\n" +
-                "  1.594887137413025,\n" +
-                "  -0.27918753027915955,\n" +
-                "  0.1012020856142044,\n" +
-                "  0.3057509660720825,\n" +
-                "  0.014297470450401306,\n" +
-                "  0.2715816795825958,\n" +
-                "  0.2381725013256073,\n" +
-                "  0.06819632649421692,\n" +
-                "  0.0489702969789505,\n" +
-                "  -0.1641303300857544,\n" +
-                "  -0.1084078699350357,\n" +
-                "  0.1188381016254425,\n" +
-                "  -0.29626673460006714,\n" +
-                "  -3.4667415618896484,\n" +
-                "  0.41730180382728577,\n" +
-                "  0.39382749795913696,\n" +
-                "  -0.0679512470960617,\n" +
-                "  0.19178995490074158,\n" +
-                "  -0.6033183932304382,\n" +
-                "  -0.052560463547706604,\n" +
-                "  0.4198887348175049,\n" +
-                "  -0.02734776958823204,\n" +
-                "  -0.48307502269744873,\n" +
-                "  0.07171829044818878,\n" +
-                "  -0.4070138931274414,\n" +
-                "  -0.11798611283302307,\n" +
-                "  0.27966728806495667,\n" +
-                "  -0.5075569152832031,\n" +
-                "  0.6828979849815369,\n" +
-                "  -0.1324898600578308,\n" +
-                "  0.3194037079811096,\n" +
-                "  0.09830759465694427,\n" +
-                "  -0.08246639370918274,\n" +
-                "  -0.0783839225769043,\n" +
-                "  -0.07903331518173218,\n" +
-                "  0.16915661096572876,\n" +
-                "  0.21139909327030182,\n" +
-                "  0.19305340945720673,\n" +
-                "  0.5255670547485352,\n" +
-                "  -0.15476123988628387,\n" +
-                "  0.9363498687744141,\n" +
-                "  0.05482716113328934,\n" +
-                "  -0.2774311900138855,\n" +
-                "  -0.34266209602355957,\n" +
-                "  -0.42955800890922546,\n" +
-                "  -0.6351125240325928,\n" +
-                "  -0.4563421308994293,\n" +
-                "  0.20771488547325134,\n" +
-                "  -0.08270931243896484,\n" +
-                "  -0.1300777792930603,\n" +
-                "  0.09531296789646149,\n" +
-                "  -0.72136390209198,\n" +
-                "  0.3517090976238251,\n" +
-                "  0.03142721951007843,\n" +
-                "  0.004673510789871216,\n" +
-                "  -0.40440210700035095,\n" +
-                "  0.09886397421360016,\n" +
-                "  -0.09198453277349472,\n" +
-                "  0.37061771750450134,\n" +
-                "  -0.07958219200372696,\n" +
-                "  -0.21704158186912537,\n" +
-                "  -0.1832444816827774,\n" +
-                "  0.17178627848625183,\n" +
-                "  -0.3310597538948059,\n" +
-                "  -0.1795501410961151,\n" +
-                "  0.21323290467262268,\n" +
-                "  -0.0770866647362709,\n" +
-                "  -0.00037901103496551514,\n" +
-                "  0.0660974308848381,\n" +
-                "  0.10238930583000183,\n" +
-                "  -0.06077095866203308,\n" +
-                "  -0.10594264417886734,\n" +
-                "  -0.18683038651943207,\n" +
-                "  0.20321524143218994,\n" +
-                "  0.36864036321640015,\n" +
-                "  -0.16162171959877014,\n" +
-                "  -0.12744686007499695,\n" +
-                "  -0.42373770475387573,\n" +
-                "  0.2272757738828659,\n" +
-                "  -0.17044681310653687,\n" +
-                "  0.08889009058475494,\n" +
-                "  -0.016556911170482635,\n" +
-                "  -0.326185941696167,\n" +
-                "  -0.06728824973106384,\n" +
-                "  -0.2064031958580017,\n" +
-                "  0.06609776616096497,\n" +
-                "  0.1906692534685135,\n" +
-                "  -0.5341193675994873,\n" +
-                "  -0.07126845419406891,\n" +
-                "  -0.2783043682575226,\n" +
-                "  -0.10398821532726288,\n" +
-                "  -0.1723007708787918,\n" +
-                "  -0.25305402278900146,\n" +
-                "  0.40613800287246704,\n" +
-                "  0.0732945054769516,\n" +
-                "  -0.2203199863433838,\n" +
-                "  0.14576727151870728,\n" +
-                "  0.15503567457199097,\n" +
-                "  -0.009210973978042603,\n" +
-                "  -0.20183685421943665,\n" +
-                "  0.3028118312358856,\n" +
-                "  -0.3066505193710327,\n" +
-                "  0.3887465000152588,\n" +
-                "  0.19712799787521362,\n" +
-                "  0.36405104398727417,\n" +
-                "  -0.03938812389969826,\n" +
-                "  0.6184861063957214,\n" +
-                "  0.011722996830940247,\n" +
-                "  0.13787129521369934,\n" +
-                "  -0.0960576981306076,\n" +
-                "  -0.4716346263885498,\n" +
-                "  -0.45463263988494873,\n" +
-                "  -0.2159414291381836,\n" +
-                "  -0.09910790622234344,\n" +
-                "  -0.13406133651733398,\n" +
-                "  -0.3185977637767792,\n" +
-                "  0.13862985372543335,\n" +
-                "  0.3938766419887543,\n" +
-                "  -0.07366828620433807,\n" +
-                "  0.08985570818185806,\n" +
-                "  0.22664476931095123,\n" +
-                "  -0.08873455226421356,\n" +
-                "  -0.17400918900966644,\n" +
-                "  0.053254880011081696,\n" +
-                "  0.11168800294399261,\n" +
-                "  -0.5366578102111816,\n" +
-                "  0.10118700563907623,\n" +
-                "  0.1827230304479599,\n" +
-                "  -0.4744732677936554,\n" +
-                "  0.20448333024978638,\n" +
-                "  -0.026072606444358826,\n" +
-                "  -0.34367719292640686,\n" +
-                "  0.4178789556026459,\n" +
-                "  -0.1383686661720276,\n" +
-                "  -0.06868205219507217,\n" +
-                "  0.04774346947669983,\n" +
-                "  -0.20923110842704773,\n" +
-                "  0.2263452261686325,\n" +
-                "  0.21730774641036987,\n" +
-                "  0.0010698586702346802,\n" +
-                "  0.05457471311092377,\n" +
-                "  0.40554380416870117,\n" +
-                "  0.5056960582733154,\n" +
-                "  -0.027282580733299255,\n" +
-                "  -0.5211331248283386,\n" +
-                "  -0.39231207966804504,\n" +
-                "  -0.39876946806907654,\n" +
-                "  0.10888379067182541,\n" +
-                "  -0.0755651593208313,\n" +
-                "  0.0507970005273819,\n" +
-                "  0.04452098160982132,\n" +
-                "  -0.41173410415649414,\n" +
-                "  -0.0418677031993866,\n" +
-                "  -0.003041345626115799,\n" +
-                "  0.1826772391796112,\n" +
-                "  0.1450490951538086,\n" +
-                "  0.3830234408378601,\n" +
-                "  -0.003193587064743042,\n" +
-                "  -0.2726131081581116,\n" +
-                "  0.3601018786430359,\n" +
-                "  0.5272528529167175,\n" +
-                "  -0.07475632429122925,\n" +
-                "  0.18786969780921936,\n" +
-                "  0.0028927549719810486,\n" +
-                "  -0.035576231777668,\n" +
-                "  0.7334576845169067,\n" +
-                "  0.02747926115989685,\n" +
-                "  0.13495147228240967,\n" +
-                "  0.16010069847106934,\n" +
-                "  0.19516289234161377,\n" +
-                "  0.4050833582878113,\n" +
-                "  -0.36571741104125977,\n" +
-                "  -0.04826915264129639,\n" +
-                "  0.12123829126358032,\n" +
-                "  -0.29513272643089294,\n" +
-                "  -0.10261483490467072,\n" +
-                "  -0.10557376593351364,\n" +
-                "  0.26259905099868774,\n" +
-                "  0.33260688185691833,\n" +
-                "  -0.12890076637268066,\n" +
-                "  0.3525870740413666,\n" +
-                "  -0.0271192267537117,\n" +
-                "  -0.032377056777477264,\n" +
-                "  0.14405684173107147,\n" +
-                "  -0.232418492436409,\n" +
-                "  -0.1066998541355133,\n" +
-                "  0.08321140706539154,\n" +
-                "  0.4352346658706665,\n" +
-                "  -0.288862407207489,\n" +
-                "  -0.6276355385780334,\n" +
-                "  -0.06491145491600037,\n" +
-                "  -0.20944485068321228,\n" +
-                "  0.12362077832221985,\n" +
-                "  0.47717827558517456,\n" +
-                "  -0.012167178094387054,\n" +
-                "  0.06673938035964966,\n" +
-                "  0.17786787450313568,\n" +
-                "  0.7896139621734619,\n" +
-                "  0.03647494316101074,\n" +
-                "  -0.23887138068675995,\n" +
-                "  0.289887934923172,\n" +
-                "  -0.11306026577949524,\n" +
-                "  0.09389196336269379,\n" +
-                "  -0.3060562014579773,\n" +
-                "  0.013977117836475372,\n" +
-                "  -0.15545639395713806,\n" +
-                "  0.06666401028633118,\n" +
-                "  0.3026837706565857,\n" +
-                "  -0.3160085380077362,\n" +
-                "  -0.04955947399139404,\n" +
-                "  -0.0007518231868743896,\n" +
-                "  0.21104300022125244,\n" +
-                "  -0.5660488605499268,\n" +
-                "  -0.27207762002944946,\n" +
-                "  0.05650728940963745,\n" +
-                "  0.19105133414268494,\n" +
-                "  0.32923591136932373,\n" +
-                "  0.018958397209644318,\n" +
-                "  0.16541166603565216,\n" +
-                "  0.9371109008789062,\n" +
-                "  -0.17414633929729462,\n" +
-                "  -0.19418443739414215,\n" +
-                "  0.30502375960350037,\n" +
-                "  0.6452566981315613,\n" +
-                "  -0.4946202039718628,\n" +
-                "  0.12415440380573273,\n" +
-                "  -0.2740612328052521,\n" +
-                "  0.24090537428855896,\n" +
-                "  1.2112586498260498,\n" +
-                "  -0.2004469931125641,\n" +
-                "  0.19456474483013153,\n" +
-                "  -0.07129184901714325,\n" +
-                "  -0.2652958929538727,\n" +
-                "  -0.4771229922771454,\n" +
-                "  0.06906124949455261,\n" +
-                "  -0.19536174833774567,\n" +
-                "  0.42340266704559326,\n" +
-                "  0.3490642309188843,\n" +
-                "  0.1533818542957306,\n" +
-                "  -0.002619698643684387,\n" +
-                "  -0.7674639225006104,\n" +
-                "  -0.41130632162094116,\n" +
-                "  0.28423255681991577,\n" +
-                "  0.02326872944831848,\n" +
-                "  -0.0033740997314453125,\n" +
-                "  -0.03309548646211624,\n" +
-                "  0.5123624801635742,\n" +
-                "  -0.3206082582473755,\n" +
-                "  -0.017632998526096344,\n" +
-                "  0.507940948009491,\n" +
-                "  0.06964299082756042,\n" +
-                "  0.1992568075656891,\n" +
-                "  0.08371978998184204,\n" +
-                "  -0.2124290019273758,\n" +
-                "  -0.05792833864688873,\n" +
-                "  0.3172972500324249,\n" +
-                "  0.10649973154067993,\n" +
-                "  0.2177993655204773,\n" +
-                "  -0.5670945644378662,\n" +
-                "  -0.2091679871082306,\n" +
-                "  0.27361616492271423,\n" +
-                "  -0.28316181898117065,\n" +
-                "  -0.4587651789188385,\n" +
-                "  -0.14226603507995605,\n" +
-                "  0.3579331338405609,\n" +
-                "  -0.04957467317581177,\n" +
-                "  0.3441537022590637,\n" +
-                "  -0.4265733063220978,\n" +
-                "  0.3376060426235199,\n" +
-                "  -0.18330684304237366,\n" +
-                "  0.24171751737594604,\n" +
-                "  -0.7516365051269531,\n" +
-                "  -0.0953027606010437,\n" +
-                "  0.06649346649646759,\n" +
-                "  -0.023136164993047714,\n" +
-                "  -0.0029480531811714172,\n" +
-                "  -0.1198638528585434,\n" +
-                "  -0.08051956444978714,\n" +
-                "  -0.40153074264526367,\n" +
-                "  0.0019767582416534424,\n" +
-                "  0.0030095279216766357,\n" +
-                "  0.2259364128112793,\n" +
-                "  0.06676347553730011,\n" +
-                "  -0.6066460013389587,\n" +
-                "  -0.1975584775209427,\n" +
-                "  -0.4331360459327698,\n" +
-                "  -0.003943219780921936,\n" +
-                "  -0.4438878893852234,\n" +
-                "  -0.4397556185722351,\n" +
-                "  -0.10185614228248596,\n" +
-                "  -0.015234231948852539,\n" +
-                "  -0.06340392678976059,\n" +
-                "  -0.23084059357643127,\n" +
-                "  -0.013163983821868896,\n" +
-                "  -0.2071400284767151,\n" +
-                "  -0.030840158462524414,\n" +
-                "  0.80415940284729,\n" +
-                "  -0.580469012260437,\n" +
-                "  0.14882954955101013,\n" +
-                "  0.24830004572868347,\n" +
-                "  -0.40925201773643494,\n" +
-                "  -0.1407734453678131,\n" +
-                "  0.23014745116233826,\n" +
-                "  -0.0823458805680275,\n" +
-                "  0.007828965783119202,\n" +
-                "  0.02996101975440979,\n" +
-                "  0.010555922985076904,\n" +
-                "  0.15066708624362946,\n" +
-                "  0.287901908159256,\n" +
-                "  0.5406299829483032,\n" +
-                "  -0.0061859264969825745,\n" +
-                "  -0.18341150879859924,\n" +
-                "  -0.37757888436317444,\n" +
-                "  0.12247267365455627,\n" +
-                "  0.3016035854816437,\n" +
-                "  0.5941266417503357,\n" +
-                "  -0.01705111563205719,\n" +
-                "  -0.7482421398162842,\n" +
-                "  0.2194576859474182,\n" +
-                "  0.2829921841621399,\n" +
-                "  0.329537957906723,\n" +
-                "  0.34207436442375183,\n" +
-                "  0.24207574129104614,\n" +
-                "  0.2152753323316574,\n" +
-                "  -0.4948556125164032,\n" +
-                "  -0.21106621623039246,\n" +
-                "  0.2197628617286682,\n" +
-                "  0.021849922835826874,\n" +
-                "  -0.15778842568397522,\n" +
-                "  0.5366860628128052,\n" +
-                "  -0.3348696231842041,\n" +
-                "  0.01650083065032959,\n" +
-                "  0.047065336257219315,\n" +
-                "  -0.4570930600166321,\n" +
-                "  -0.2960754930973053,\n" +
-                "  -1.4024643898010254,\n" +
-                "  0.1697397381067276,\n" +
-                "  -0.19636468589305878,\n" +
-                "  -0.3684859275817871,\n" +
-                "  -0.3888061046600342,\n" +
-                "  0.12527327239513397,\n" +
-                "  -0.4199543297290802,\n" +
-                "  -0.24464133381843567,\n" +
-                "  -0.20547638833522797,\n" +
-                "  -0.02873031049966812,\n" +
-                "  0.04006829857826233,\n" +
-                "  -0.013615094125270844,\n" +
-                "  -0.38151949644088745,\n" +
-                "  0.07635307312011719,\n" +
-                "  -0.2532101273536682,\n" +
-                "  -0.12779554724693298,\n" +
-                "  0.33027273416519165,\n" +
-                "  -0.15510135889053345,\n" +
-                "  -0.35100120306015015,\n" +
-                "  -0.5484926700592041,\n" +
-                "  -0.23958733677864075,\n" +
-                "  0.07633547484874725,\n" +
-                "  0.012362942099571228,\n" +
-                "  -0.25504401326179504,\n" +
-                "  -0.2392117977142334,\n" +
-                "  0.07403606176376343,\n" +
-                "  0.07280385494232178,\n" +
-                "  -0.2516927719116211,\n" +
-                "  -0.145125612616539,\n" +
-                "  0.3015434145927429,\n" +
-                "  -0.06891579926013947,\n" +
-                "  0.156633198261261,\n" +
-                "  0.04245932027697563,\n" +
-                "  -0.488684743642807,\n" +
-                "  0.290077269077301,\n" +
-                "  0.06895345449447632,\n" +
-                "  0.061262570321559906,\n" +
-                "  0.3415754735469818,\n" +
-                "  0.44531649351119995,\n" +
-                "  -0.1993744820356369,\n" +
-                "  -0.49592965841293335,\n" +
-                "  -0.229221373796463,\n" +
-                "  0.1547122597694397,\n" +
-                "  0.3082579970359802,\n" +
-                "  0.1941603720188141,\n" +
-                "  -0.07362228631973267,\n" +
-                "  -0.15126489102840424,\n" +
-                "  -0.06226333975791931,\n" +
-                "  -0.052758291363716125,\n" +
-                "  -0.09666634351015091,\n" +
-                "  0.029960323125123978,\n" +
-                "  -0.07342107594013214,\n" +
-                "  -0.028656944632530212,\n" +
-                "  -0.44580066204071045,\n" +
-                "  0.1984643042087555,\n" +
-                "  0.3391294777393341,\n" +
-                "  0.055216170847415924,\n" +
-                "  0.5317773818969727,\n" +
-                "  0.27008047699928284,\n" +
-                "  -0.20487630367279053,\n" +
-                "  0.20794649422168732,\n" +
-                "  -0.21459823846817017,\n" +
-                "  0.07720515131950378,\n" +
-                "  0.11551633477210999,\n" +
-                "  0.17852582037448883,\n" +
-                "  -0.05072091519832611,\n" +
-                "  -0.18453016877174377,\n" +
-                "  -0.20271456241607666,\n" +
-                "  0.1535874903202057,\n" +
-                "  -0.011345595121383667,\n" +
-                "  -0.024836257100105286,\n" +
-                "  0.13989995419979095,\n" +
-                "  -0.6433340311050415,\n" +
-                "  -0.2115182876586914,\n" +
-                "  0.21272718906402588,\n" +
-                "  0.4063172936439514,\n" +
-                "  0.648801863193512,\n" +
-                "  0.4203355014324188,\n" +
-                "  0.018419981002807617,\n" +
-                "  -0.3565654158592224,\n" +
-                "  -0.17074896395206451,\n" +
-                "  0.8897092342376709,\n" +
-                "  -0.09069225192070007,\n" +
-                "  -0.24005284905433655\n" + "\"";
-        List<String> list = JSON.parseArray(s, String.class);
-        System.out.println(list.size());
+//        StpUtil.login("2");
+//        Object id = StpUtil.getLoginId();
+//        String tokenValue = StpUtil.getTokenValue();
+//        String value = StpUtil.getTokenValueByLoginId(2);
+//        System.out.println(tokenValue);
+//        System.out.println(value);
     }
 }