فهرست منبع

搭建查询架构-2023/10/15 李仁杰

lwhhszx 1 سال پیش
والد
کامیت
94bf270c0f
29فایلهای تغییر یافته به همراه471 افزوده شده و 169 حذف شده
  1. 17 0
      src/main/java/cn/cslg/pas/common/model/cronModel/OrderConfig.java
  2. 25 0
      src/main/java/cn/cslg/pas/common/model/cronModel/SqlObject.java
  3. 9 0
      src/main/java/cn/cslg/pas/common/model/request/OrderDTO.java
  4. 3 1
      src/main/java/cn/cslg/pas/common/model/request/QueryRequest.java
  5. 8 0
      src/main/java/cn/cslg/pas/common/utils/parseQueryToTree/expressManager.java
  6. 2 6
      src/main/java/cn/cslg/pas/controller/EventController.java
  7. 2 1
      src/main/java/cn/cslg/pas/domain/Event.java
  8. 1 1
      src/main/java/cn/cslg/pas/service/Business.java
  9. 19 0
      src/main/java/cn/cslg/pas/factorys/businessFactory/BusinessFactory.java
  10. 23 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetComOrder.java
  11. 43 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetCreateNameOrder.java
  12. 19 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetOrderFactory.java
  13. 8 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetOrderObject.java
  14. 37 0
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetComSql.java
  15. 51 0
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetCreateNameSql.java
  16. 19 0
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetSqlFactory.java
  17. 10 0
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetSqlObject.java
  18. 1 2
      src/main/java/cn/cslg/pas/mapper/EventMapper.java
  19. 0 13
      src/main/java/cn/cslg/pas/service/BusinessFactory.java
  20. 3 6
      src/main/java/cn/cslg/pas/service/business/CommonService.java
  21. 30 9
      src/main/java/cn/cslg/pas/service/business/EventService.java
  22. 0 22
      src/main/java/cn/cslg/pas/service/formatRequest/BusinessFactory.java
  23. 31 0
      src/main/java/cn/cslg/pas/service/permissions/PermissionService.java
  24. 0 35
      src/main/java/cn/cslg/pas/service/query/BusinessFactory.java
  25. 67 70
      src/main/java/cn/cslg/pas/service/query/FormatQueryService.java
  26. 11 0
      src/main/resources/jsons/event_order.json
  27. 11 0
      src/main/resources/jsons/event_sql.json
  28. 5 2
      src/test/java/cn/cslg/pas/service/CommonServiceTests.java
  29. 16 1
      src/test/java/cn/cslg/pas/service/PatentPDFServiceTests.java

+ 17 - 0
src/main/java/cn/cslg/pas/common/model/cronModel/OrderConfig.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.model.cronModel;
+
+import lombok.Data;
+
+/**
+ * 获得排序配置类
+ */
+@Data
+public class OrderConfig {
+    /**
+     * ID
+     */
+    private String field;
+    private String sqlField;
+    private String orderClass;
+
+}

+ 25 - 0
src/main/java/cn/cslg/pas/common/model/cronModel/SqlObject.java

@@ -0,0 +1,25 @@
+package cn.cslg.pas.common.model.cronModel;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-4
+ * @description 人员类 前台对应实体
+ */
+
+@Data
+@Accessors(chain = true)
+public class SqlObject {
+    /**
+     * ID
+     */
+    private String field;
+    private String sqlField;
+    private String sqlClass;
+    private String option;
+
+}

+ 9 - 0
src/main/java/cn/cslg/pas/common/model/request/OrderDTO.java

@@ -0,0 +1,9 @@
+package cn.cslg.pas.common.model.request;
+
+import lombok.Data;
+
+@Data
+public class OrderDTO {
+ private String orderBy;
+ private Integer orderType;
+}

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

@@ -4,11 +4,13 @@ package cn.cslg.pas.common.model.request;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import java.util.List;
+
 @Data
 @Accessors(chain = true)
 public class QueryRequest {
 
     private Long current;
     private Long size;
-
+    private List<OrderDTO> orderDTOList;
 }

+ 8 - 0
src/main/java/cn/cslg/pas/common/utils/parseQueryToTree/expressManager.java

@@ -82,6 +82,13 @@ public class expressManager {
             oOR.operateValue = 2;
             hSymbols.put(oOR.Code, oOR);
 
+        oOR = new operate();
+        oOR.Code = "~";
+        oOR.ShowName = " LIKE ";
+        oOR.type = enuType.Assignment;
+        oOR.priorityVale = 20;
+        oOR.operateValue = 2;
+        hSymbols.put(oOR.Code, oOR);
             //#endregion
 
             //#region 添加成对出现的符号
@@ -432,6 +439,7 @@ public class expressManager {
                             }
                             break;
                         case '=':
+                        case '~':
                         case '>':
                         case '>':
                         case '<':

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

@@ -2,16 +2,12 @@ package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.business.EventDTO;
-import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
-import cn.cslg.pas.domain.Event;
-import cn.cslg.pas.service.Business;
-import cn.cslg.pas.service.business.EventService;
-import cn.cslg.pas.service.query.BusinessFactory;
+import cn.cslg.pas.factorys.businessFactory.Business;
+import cn.cslg.pas.factorys.businessFactory.BusinessFactory;
 import com.alibaba.fastjson.JSONObject;
 import io.swagger.v3.oas.annotations.Operation;
-import lombok.experimental.Accessors;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;

+ 2 - 1
src/main/java/cn/cslg/pas/domain/Event.java

@@ -1,5 +1,6 @@
-package cn.cslg.pas.domain;
+package cn.cslg.pas.domain.business;
 
+import cn.cslg.pas.domain.BaseEntity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 

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

@@ -1,4 +1,4 @@
-package cn.cslg.pas.service;
+package cn.cslg.pas.factorys.businessFactory;
 
 import cn.cslg.pas.common.model.request.QueryRequest;
 import org.springframework.web.multipart.MultipartFile;

+ 19 - 0
src/main/java/cn/cslg/pas/factorys/businessFactory/BusinessFactory.java

@@ -0,0 +1,19 @@
+package cn.cslg.pas.factorys.businessFactory;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+@Component
+public class BusinessFactory {
+    @Autowired
+    private Map<String, Business> businessMap;
+
+
+    public Business getClass(String shapeType) {
+        Business bean1 = businessMap.get(shapeType);
+        System.out.println(bean1);
+        return bean1;
+    }
+}

+ 23 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetComOrder.java

@@ -0,0 +1,23 @@
+package cn.cslg.pas.factorys.getOrderFactory;
+
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+public class GetComOrder implements GetOrderObject {
+
+    @Override
+    public String getOrderString(String orderBy,Integer orderType) {
+     if(orderType.equals(0)){
+      return orderBy+" asc";
+
+     }
+       else {
+         return orderBy+" desc";
+     }
+    }
+
+}

+ 43 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetCreateNameOrder.java

@@ -0,0 +1,43 @@
+package cn.cslg.pas.factorys.getOrderFactory;
+
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Slf4j
+@Component
+public class GetCreateNameOrder implements GetOrderObject {
+    @Autowired
+    private PermissionService permissionService;
+
+    @Override
+    public String getOrderString(String orderBy, Integer orderType) {
+        List<Integer> ids =new ArrayList<>();
+        //根据名称查询人员id
+        try {
+           String json = permissionService.getPersonIdOrders(orderType);
+           System.out.println(json);
+           ids =JSON.parseArray(json,Integer.class);
+        } catch (Exception e) {
+        }
+String idStr =StringUtils.join(ids,",");
+        String orderStr =" field("+orderBy+","+idStr+")";
+        String re="";
+        if(orderType.equals(0)){
+            re=orderStr+" asc";
+        }
+       else {
+            re=orderStr+" desc";
+        }
+       return  re;
+    }
+
+}

+ 19 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetOrderFactory.java

@@ -0,0 +1,19 @@
+package cn.cslg.pas.factorys.getOrderFactory;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+@Component
+public class GetOrderFactory {
+    @Autowired
+    private Map<String, GetOrderObject> getOrderObjectMap;
+
+
+    public GetOrderObject getClass(String type) {
+        GetOrderObject bean1 = getOrderObjectMap.get(type);
+        System.out.println(bean1);
+        return bean1;
+    }
+}

+ 8 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetOrderObject.java

@@ -0,0 +1,8 @@
+package cn.cslg.pas.factorys.getOrderFactory;
+
+
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+
+public interface GetOrderObject {
+    public String getOrderString(String orderBy,Integer orderType) ;
+}

+ 37 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetComSql.java

@@ -0,0 +1,37 @@
+package cn.cslg.pas.factorys.getSqlFactorys;
+
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+import cn.cslg.pas.common.model.request.QueryRequest;
+import cn.cslg.pas.common.model.request.StringRequest;
+import cn.cslg.pas.common.utils.parseQueryToTree.expressManager;
+import cn.cslg.pas.common.utils.parseQueryToTree.operateNode;
+import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
+import cn.cslg.pas.domain.business.Event;
+import cn.cslg.pas.mapper.EventMapper;
+import cn.cslg.pas.service.query.FormatQueryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+
+@Slf4j
+@Component
+public class GetComSql  implements GetSqlObject{
+
+ private SqlObject sqlObject ;
+    @Override
+    public String getSql(String value) {
+      String filed= sqlObject.getSqlField();
+      String option =sqlObject.getOption();
+       return filed+option+value;
+    }
+
+    public void setSqlObject(SqlObject sqlObject){
+        this.sqlObject=sqlObject;
+    }
+}

+ 51 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetCreateNameSql.java

@@ -0,0 +1,51 @@
+package cn.cslg.pas.factorys.getSqlFactorys;
+
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Slf4j
+@Component
+public class GetCreateNameSql implements GetSqlObject{
+    private SqlObject sqlObject ;
+  @Autowired
+  private PermissionService permissionService;
+    @Override
+    public String getSql( String value) {
+        //根据名称查询人员id
+        List<Integer> ids = null;
+        if(sqlObject.getOption()=="=")
+        {
+            sqlObject.setOption(" in ");
+        }
+       else if(sqlObject.getOption()=="!=")
+        {
+            sqlObject.setOption(" not in ");
+        }
+       //根据名称查询
+        try {
+          String json =  permissionService.getPersonIdByNamePCS(value);
+           ids = JSON.parseArray(json,Integer.class);
+        }catch (Exception e){
+        }
+        if(ids==null||ids.size()==0){
+            ids =new ArrayList<>();
+            ids.add(0);
+        }
+        String idStr = StringUtils.join(ids,",");
+        String re = sqlObject.getSqlField()+sqlObject.getOption()+"("+idStr+")";
+        return re;
+    }
+    @Override
+    public void setSqlObject(SqlObject sqlObject){
+        this.sqlObject =sqlObject;
+    };
+}

+ 19 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetSqlFactory.java

@@ -0,0 +1,19 @@
+package cn.cslg.pas.factorys.getSqlFactorys;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+@Component
+public class GetSqlFactory {
+    @Autowired
+    private Map<String, GetSqlObject> getSqlObjectMap;
+
+
+    public GetSqlObject getClass(String sqlType) {
+        GetSqlObject bean1 = getSqlObjectMap.get(sqlType);
+        System.out.println(bean1);
+        return bean1;
+    }
+}

+ 10 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetSqlObject.java

@@ -0,0 +1,10 @@
+package cn.cslg.pas.factorys.getSqlFactorys;
+
+
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+
+public interface GetSqlObject {
+    public SqlObject sqlObject = null;
+    public String getSql(String value);
+    public void setSqlObject(SqlObject sqlObject);
+}

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

@@ -1,9 +1,8 @@
 package cn.cslg.pas.mapper;
 
-import cn.cslg.pas.domain.Event;
+import cn.cslg.pas.domain.business.Event;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import io.swagger.v3.oas.models.security.SecurityScheme;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;

+ 0 - 13
src/main/java/cn/cslg/pas/service/BusinessFactory.java

@@ -1,13 +0,0 @@
-package cn.cslg.pas.service;
-
-import cn.cslg.pas.service.business.EventService;
-import cn.cslg.pas.service.query.EsQuery;
-import cn.cslg.pas.service.query.Query;
-
-public class BusinessFactory {
-
-    private Business createObject(){
-        return new EventService();
-
-    }
-}

+ 3 - 6
src/main/java/cn/cslg/pas/service/business/CommonService.java

@@ -13,11 +13,10 @@ import java.util.Map;
 @Service
 @Slf4j
 public class CommonService{
-    public static List<QueryCondition> readJsonFile(String fileName) {
-        Gson gson = new Gson();
+    public static String readJsonFile(String fileName) {
         String json = "";
         try {
-            File file = new File("src/main/resources/jsons/event.json");
+            File file = new File("src/main/resources/jsons/"+fileName);
             Reader reader = new InputStreamReader(new FileInputStream(file), "utf-8");
             int ch = 0;
             StringBuffer buffer = new StringBuffer();
@@ -26,9 +25,7 @@ public class CommonService{
             }
             reader.close();
             json = buffer.toString();
-            List<QueryCondition> queryConditions = JSON.parseArray(json, QueryCondition.class);
-
-            return queryConditions;
+            return json;
         } catch (IOException e) {
             e.printStackTrace();
             return null;

+ 30 - 9
src/main/java/cn/cslg/pas/service/business/EventService.java

@@ -1,19 +1,18 @@
 package cn.cslg.pas.service.business;
 
-import cn.cslg.pas.common.dto.business.EventDTO;
+import cn.cslg.pas.common.model.request.MapRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.parseQueryToTree.expressManager;
 import cn.cslg.pas.common.utils.parseQueryToTree.operateNode;
 import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
-import cn.cslg.pas.domain.Event;
+import cn.cslg.pas.domain.business.Event;
+import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.mapper.EventMapper;
-import cn.cslg.pas.service.Business;
 import cn.cslg.pas.service.query.FormatQueryService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -21,7 +20,7 @@ import java.util.List;
 
 @Service
 @Slf4j
-public class EventService  extends ServiceImpl<EventMapper, Event> implements Business{
+public class EventService  extends ServiceImpl<EventMapper, Event> implements Business {
     @Autowired
     private  EventMapper eventMapper;
     @Autowired
@@ -32,14 +31,36 @@ public class EventService  extends ServiceImpl<EventMapper, Event> implements Bu
     }
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
-if(queryRequest instanceof StringRequest){
-  StringRequest stringRequest =(StringRequest)queryRequest;
+    //合成检索式
+        StringRequest stringRequest =null;
+        if(queryRequest instanceof MapRequest){
+
+
+        }
+        else {
+            stringRequest =(StringRequest)queryRequest;
+        }
   String condition =stringRequest.getSearchQuery();
   //将检索式转换为二叉树
     treeNode tree = expressManager.getInstance().Parse(condition, false);
     //格式化检索式
-    formatQueryService.ToString((operateNode) tree);
-}
+   String sql = formatQueryService.ToString((operateNode) tree);
+   //格式化排序
+        if(queryRequest.getOrderDTOList()!=null&&queryRequest.getOrderDTOList().size()!=0) {
+            String orderSql = formatQueryService.orderToString(queryRequest.getOrderDTOList());
+            sql+=orderSql;
+        }
+        //格式化 分页信息
+        if(queryRequest.getSize()!=null&&queryRequest.getCurrent()!=null) {
+            Long size =queryRequest.getSize();
+            Long current =queryRequest.getCurrent();
+           String page= " limit "+((current-1)*size)+","+size;
+           sql +=page;
+        }
+        //根据sql查询事件信息
+  List<Integer> ids = eventMapper.getEvent(sql);
+
+  System.out.println(ids);
         return "";
     }
 

+ 0 - 22
src/main/java/cn/cslg/pas/service/formatRequest/BusinessFactory.java

@@ -1,22 +0,0 @@
-package cn.cslg.pas.service.formatRequest;
-
-import cn.cslg.pas.service.Business;
-
-public class BusinessFactory {
-
-    public static Object getClass(Class<? extends Business> clazz) {
-        Object obj = null;
-
-        try {
-            obj = Class.forName(clazz.getName()).newInstance();
-        } catch (ClassNotFoundException e) {
-            e.printStackTrace();
-        } catch (InstantiationException e) {
-            e.printStackTrace();
-        } catch (IllegalAccessException e) {
-            e.printStackTrace();
-        }
-        return obj;
-    }
-
-}

+ 31 - 0
src/main/java/cn/cslg/pas/service/permissions/PermissionService.java

@@ -0,0 +1,31 @@
+package cn.cslg.pas.service.permissions;
+
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.Objects;
+
+@Service
+public class PermissionService {
+    @Value("${authorUrl}")
+    private String PCSUrl;
+    public String getPersonIdByNamePCS(String personName) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getPersonIdByName?personName=" + personName)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+    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();
+    }
+}

+ 0 - 35
src/main/java/cn/cslg/pas/service/query/BusinessFactory.java

@@ -1,35 +0,0 @@
-package cn.cslg.pas.service.query;
-
-import cn.cslg.pas.service.Business;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-@Component
-public class BusinessFactory {
-    @Autowired
-    private Map<String, Business> businessMap;
-//    public static Object getClass(Class<? extends Business> clazz) {
-//        Object obj = null;
-//
-//        try {
-//            obj = Class.forName(clazz.getName()).newInstance();
-//        } catch (ClassNotFoundException e) {
-//            e.printStackTrace();
-//        } catch (InstantiationException e) {
-//            e.printStackTrace();
-//        } catch (IllegalAccessException e) {
-//            e.printStackTrace();
-//        }
-//        return obj;
-//    }
-
-
-
-    public Business getClass(String shapeType) {
-        Business bean1 = businessMap.get(shapeType);
-        System.out.println(bean1);
-        return bean1;
-    }
-}

+ 67 - 70
src/main/java/cn/cslg/pas/service/query/FormatQueryService.java

@@ -1,9 +1,20 @@
 package cn.cslg.pas.service.query;
 
+import cn.cslg.pas.common.model.cronModel.OrderConfig;
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+import cn.cslg.pas.common.model.request.OrderDTO;
+import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.common.utils.parseQueryToTree.*;
+import cn.cslg.pas.factorys.getOrderFactory.GetOrderFactory;
+import cn.cslg.pas.factorys.getOrderFactory.GetOrderObject;
+import cn.cslg.pas.factorys.getSqlFactorys.GetSqlFactory;
+import cn.cslg.pas.factorys.getSqlFactorys.GetSqlObject;
+import cn.cslg.pas.service.business.CommonService;
+import com.alibaba.fastjson.JSON;
 import com.google.gson.Gson;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
@@ -17,115 +28,101 @@ import java.util.*;
 @Service
 @Slf4j
 public class FormatQueryService {
+    @Autowired
+   private GetSqlFactory getSqlFactory;
+
+    @Autowired
+    private GetOrderFactory getOrderFactory;
     public String getText(String text) throws Exception {
         treeNode tree = expressManager.getInstance().Parse(text, false);
-        String a = this.get(tree);
         System.out.print(this.ToString((operateNode) tree));
         return "";
     }
 
-
-    public  String get(treeNode node) {
-        String a = "(";
-        treeNode leftNode = node.getLeft();
-        treeNode rightNode = node.getRight();
-        if (leftNode instanceof valueNode) {
-            a += ((valueNode) leftNode).getvalue() +" "+ ((operateNode)node).getoperate().getShowName()+" ";
-        } else {
-            a += this.get(leftNode)+" "+ ((operateNode)node).getoperate().getShowName()+" ";
-        }
-
-        if (rightNode instanceof valueNode) {
-            a += ((valueNode) rightNode).ToString();
-        } else {
-            a += this.get(rightNode);
-        }
-        a+=")";
-    return  a;
-    }
-
+    /**
+     *  二叉树转检索式
+     * @param node
+     * @return
+     */
     public String ToString(operateNode node){
         operate operate1 =node.getoperate();
         treeNode Left =node.getLeft();
         treeNode Right =node.getRight();
         String strCode = "";
+        String optionName="";
         if ((operate1.getShowName()!=null))
         {
             strCode = operate1.getShowName();
+            optionName=operate1.getShowName();
         }
         else
         {
             strCode = operate1.getCode();
+            optionName=operate1.getCode();
         }
-
+        GetSqlObject getSqlObject =null;
         if(Left != null)
         {
-            if((operate1.gettype() == enuType.Logic || operate1.gettype()  == enuType.Assignment ) && (Left.getLeft() != null || Left.getRight() != null))
+            if((operate1.gettype() == enuType.Logic || operate1.gettype()  == enuType.Assignment ) && (Left instanceof operateNode))
             {
                 strCode = "(" + this.ToString((operateNode) Left) +") " + strCode;
             }
             else
-            {
+            {  //获得栏位名称
+                String field= Left.ToString();
                 strCode = Left.ToString() +" " + strCode;
                 //判断 参数类型
+              String json =  CommonService.readJsonFile("event_sql.json");
+           List<SqlObject> sqlObjects = JSON.parseArray(json,SqlObject.class);
+                SqlObject sqlObject = sqlObjects.stream().filter(item->item.getField().equals(field)).findFirst().orElse(null);
+                if(sqlObject!=null){
+                    getSqlObject=  getSqlFactory.getClass(sqlObject.getSqlClass());
+                    sqlObject.setOption(optionName);
+                    getSqlObject.setSqlObject(sqlObject);
+                }
             }
 
         }
         if(Right!= null)
-        {
-            if ((operate1.gettype() == enuType.Logic || operate1.gettype() == enuType.Assignment ) && (Right.getLeft() != null || Right.getRight() != null))
-            {
-                strCode = strCode +" (" + this.ToString((operateNode) Right)+ ") ";
+        {  String rightValue="";
+            if ((operate1.gettype() == enuType.Logic || operate1.gettype() == enuType.Assignment ) && (Right instanceof operateNode))
+            { rightValue =this.ToString((operateNode) Right);
+                strCode = strCode +" (" + rightValue+ ") ";
             }
             else
-            {
+            { rightValue =Right.ToString();
                 strCode = strCode + " " + Right.ToString();
             }
-
+            if(getSqlObject!=null){
+                if(optionName.equals(" LIKE ")){
+                    rightValue="'%"+rightValue+"%'";
+                }
+             strCode = getSqlObject.getSql(rightValue);
+            }
         }
 
         return strCode;
     }
 
-
-    public void write() {
-        // 创建一个Map对象并添加一些数据
-        Map<String, String> map = new HashMap<>();
-        map.put("key1", "value1");
-        map.put("key2", "value2");
-        map.put("key3", "value3");
-
-        // 将Map存储到文件中
-        try {
-            FileOutputStream fileOut = new FileOutputStream("map.ser");
-            ObjectOutputStream out = new ObjectOutputStream(fileOut);
-            out.writeObject(map);
-            out.close();
-            fileOut.close();
-            System.out.println("Map已经成功存储到文件中");
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+    /**
+     * 排序转sql排序语句
+     * @param dtos
+     * @return
+     */
+    public String orderToString(List<OrderDTO> dtos){
+        //读取排序配置类
+        String json =  CommonService.readJsonFile("event_order.json");
+        List<OrderConfig> configs =  JSON.parseArray(json,OrderConfig.class);
+        String re ="order by ";
+        List<String> orders= new ArrayList<>();
+        dtos.forEach(item->{
+            OrderConfig orderConfig =configs.stream().filter(tem->tem.getField().equals(item.getOrderBy())).findFirst().orElse(null);
+            GetOrderObject getOrderObject =  getOrderFactory.getClass(orderConfig.getOrderClass());
+          String order=  getOrderObject.getOrderString(orderConfig.getSqlField(),item.getOrderType());
+            orders.add(order);
+        });
+      String orderStr = StringUtils.join(orders,",");
+      re += orderStr;
+return re;
     }
-
-    public static Map<String, Object> readJsonFile(String fileName) {
-        Gson gson = new Gson();
-        String json = "";
-        try {
-            File file = new File("target/file/test.json");
-            Reader reader = new InputStreamReader(new FileInputStream(file), "utf-8");
-            int ch = 0;
-            StringBuffer buffer = new StringBuffer();
-            while ((ch = reader.read()) != -1) {
-                buffer.append((char) ch);
-            }
-            reader.close();
-            json = buffer.toString();
-            return gson.fromJson(json, Map.class);
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
 }

+ 11 - 0
src/main/resources/jsons/event_order.json

@@ -0,0 +1,11 @@
+[{"field":"name","sqlField":"name","orderClass":"getComOrder"
+
+},
+{"field":"id","sqlField":"id","orderClass":"getComOrder"
+
+},
+{"field":"createName","sqlField":"create_id","orderClass":"getCreateNameOrder"
+
+}
+
+]

+ 11 - 0
src/main/resources/jsons/event_sql.json

@@ -0,0 +1,11 @@
+[{"field":"name","sqlField":"name","sqlClass":"getComSql"
+
+},
+{"field":"id","sqlField":"id","sqlClass":"getComSql"
+
+},
+{"field":"createName","sqlField":"create_id","sqlClass":"getCreateNameSql"
+
+}
+
+]

+ 5 - 2
src/test/java/cn/cslg/pas/service/CommonServiceTests.java

@@ -5,6 +5,7 @@ import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.controller.EventController;
 import cn.cslg.pas.service.business.CommonService;
+import cn.cslg.pas.service.permissions.PermissionService;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -19,10 +20,12 @@ import java.util.List;
 public class CommonServiceTests {
     @Autowired
     private EventController eventController;
+    @Autowired
+    private PermissionService permissionService;
     @Test
     void test() throws Exception {
-     List<QueryCondition> conditions = CommonService.readJsonFile("");
-     conditions.get(0);
+     String aa=   permissionService.getPersonIdByNamePCS("朱");
+     System.out.println(aa);
     }
 
 

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

@@ -1,6 +1,7 @@
 package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.model.request.MapRequest;
+import cn.cslg.pas.common.model.request.OrderDTO;
 import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.controller.EventController;
@@ -11,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -27,7 +30,19 @@ public class PatentPDFServiceTests {
     @Test
     void test() throws Exception {
         StringRequest queryRequest =new StringRequest();
-        queryRequest.setSearchQuery("ti=c and bc=q or cd=e");
+        queryRequest.setSearchQuery("name~事件 and createName=朱");
+        List<OrderDTO> dtos =new ArrayList<>();
+        OrderDTO orderDTO1 =new OrderDTO();
+        orderDTO1.setOrderBy("name");
+        orderDTO1.setOrderType(0);
+        OrderDTO orderDTO2 =new OrderDTO();
+        orderDTO2.setOrderBy("createName");
+        orderDTO2.setOrderType(1);
+        dtos.add(orderDTO1);
+        dtos.add(orderDTO2);
+        queryRequest.setOrderDTOList(dtos);
+        queryRequest.setCurrent(Long.parseLong("1"));
+        queryRequest.setSize(Long.parseLong("10"));
   eventController.queryEvent(queryRequest);
     }