소스 검색

事件更新接口改,文件配置逻辑修改

lwhhszx 1 년 전
부모
커밋
e173246eff

+ 70 - 70
src/main/java/cn/cslg/pas/common/TreeBuild.java

@@ -8,76 +8,76 @@ import java.util.List;
  * @date 2023/8/31
  */
 public class TreeBuild {
-
-    // 保存参与构建树形的所有数据(通常数据库查询结果)
-    public List<TreeNode> nodeList;
-
-    /**
-     * 构造方法
-     *
-     * @param nodeList 将数据集合赋值给nodeList,即所有数据作为所有节点。
-     */
-    public TreeBuild(List<TreeNode> nodeList) {
-        this.nodeList = nodeList;
-    }
-
-    /**
-     * 获取需构建的所有根节点(顶级节点) "-1"
-     *
-     * @return 所有根节点List集合
-     */
-    public List<TreeNode> getRootNode() {
-        // 保存所有根节点(所有根节点的数据)
-        List<TreeNode> rootNodeList = new ArrayList<>();
-        // TreeNode:查询出的每一条数据(节点)
-        for (TreeNode treeNode : nodeList) {
-            // 判断当前节点是否为根节点,此处注意:若parentId类型是String,则要采用equals()方法判断。
-            if (treeNode.getParentSorts().contains(-1)) {
-                // 是,添加
-                rootNodeList.add(treeNode);
-            }
-        }
-        return rootNodeList;
-    }
-
-    /**
-     * 根据每一个顶级节点(根节点)进行构建树形结构
-     *
-     * @return 构建整棵树
-     */
-    public List<TreeNode> buildTree() {
-        // TreeNodes:保存一个顶级节点所构建出来的完整树形
-        List<TreeNode> TreeNodes = new ArrayList<>();
-        // getRootNode():获取所有的根节点
-        for (TreeNode treeRootNode : getRootNode()) {
-            // 将顶级节点进行构建子树
-            treeRootNode = buildChildTree(treeRootNode);
-            // 完成一个顶级节点所构建的树形,增加进来
-            TreeNodes.add(treeRootNode);
-        }
-        return TreeNodes;
-    }
-
-    /**
-     * 递归-----构建子树形结构
-     *
-     * @param pNode 根节点(顶级节点)
-     * @return 整棵树
-     */
-    public TreeNode buildChildTree(TreeNode pNode) {
-        List<TreeNode> childTree = new ArrayList<>();
-        // nodeList:所有节点集合(所有数据)
-        for (TreeNode treeNode : nodeList) {
-            // 判断当前节点的父节点ID是否等于根节点的ID,即当前节点是否为其下的子节点
-            if (treeNode.getParentSorts().contains(pNode.getSort())) {
-                // 再递归进行判断当前节点的情况,调用自身方法
-                childTree.add(buildChildTree(treeNode));
-            }
-        }
-        // for循环结束,即节点下没有任何节点,树形构建结束,设置树结果
-        pNode.setChildren(childTree);
-        return pNode;
-    }
+//
+//    // 保存参与构建树形的所有数据(通常数据库查询结果)
+//    public List<TreeNode> nodeList;
+//
+//    /**
+//     * 构造方法
+//     *
+//     * @param nodeList 将数据集合赋值给nodeList,即所有数据作为所有节点。
+//     */
+//    public TreeBuild(List<TreeNode> nodeList) {
+//        this.nodeList = nodeList;
+//    }
+//
+//    /**
+//     * 获取需构建的所有根节点(顶级节点) "-1"
+//     *
+//     * @return 所有根节点List集合
+//     */
+//    public List<TreeNode> getRootNode() {
+//        // 保存所有根节点(所有根节点的数据)
+//        List<TreeNode> rootNodeList = new ArrayList<>();
+//        // TreeNode:查询出的每一条数据(节点)
+//        for (TreeNode treeNode : nodeList) {
+//            // 判断当前节点是否为根节点,此处注意:若parentId类型是String,则要采用equals()方法判断。
+//            if (treeNode.getParentSorts().contains(-1)) {
+//                // 是,添加
+//                rootNodeList.add(treeNode);
+//            }
+//        }
+//        return rootNodeList;
+//    }
+//
+//    /**
+//     * 根据每一个顶级节点(根节点)进行构建树形结构
+//     *
+//     * @return 构建整棵树
+//     */
+//    public List<TreeNode> buildTree() {
+//        // TreeNodes:保存一个顶级节点所构建出来的完整树形
+//        List<TreeNode> TreeNodes = new ArrayList<>();
+//        // getRootNode():获取所有的根节点
+//        for (TreeNode treeRootNode : getRootNode()) {
+//            // 将顶级节点进行构建子树
+//            treeRootNode = buildChildTree(treeRootNode);
+//            // 完成一个顶级节点所构建的树形,增加进来
+//            TreeNodes.add(treeRootNode);
+//        }
+//        return TreeNodes;
+//    }
+//
+//    /**
+//     * 递归-----构建子树形结构
+//     *
+//     * @param pNode 根节点(顶级节点)
+//     * @return 整棵树
+//     */
+//    public TreeNode buildChildTree(TreeNode pNode) {
+//        List<TreeNode> childTree = new ArrayList<>();
+//        // nodeList:所有节点集合(所有数据)
+//        for (TreeNode treeNode : nodeList) {
+//            // 判断当前节点的父节点ID是否等于根节点的ID,即当前节点是否为其下的子节点
+//            if (treeNode.getParentSorts().contains(pNode.getSort())) {
+//                // 再递归进行判断当前节点的情况,调用自身方法
+//                childTree.add(buildChildTree(treeNode));
+//            }
+//        }
+//        // for循环结束,即节点下没有任何节点,树形构建结束,设置树结果
+//        pNode.setChildren(childTree);
+//        return pNode;
+//    }
 
 
 }

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

@@ -6,6 +6,7 @@ import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -33,5 +34,6 @@ public class EventUpdateDTO {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  private Date eventDate;
+    private List<String> fileGuids;
 
 }

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

@@ -83,7 +83,7 @@ public class expressManager {
             hSymbols.put(oOR.Code, oOR);
 
         oOR = new operate();
-        oOR.Code = "~";
+        oOR.Code = "CONTAIN";
         oOR.ShowName = " LIKE ";
         oOR.type = enuType.Assignment;
         oOR.priorityVale = 20;

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

@@ -47,6 +47,6 @@ public class EventVO {
     @Schema(description = "专题库数量")
     private Integer patentProjectNum;
 
-    @Schema(description = "专题库数量")
+    @Schema(description = "文件信息")
     private List<SystemFile> systemFileList;
 }

+ 10 - 4
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetClientNameSql.java

@@ -20,19 +20,22 @@ public class GetClientNameSql implements GetSqlObject{
   private PermissionService permissionService;
     @Override
     public String getSql( String value) {
+        Boolean ifEqual= false;
         //根据名称查询人员id
         List<Integer> ids = null;
-        if(sqlObject.getOption()=="=")
+        if(sqlObject.getOption()=="contain")
         {
             sqlObject.setOption(" in ");
+
         }
-       else if(sqlObject.getOption()=="!=")
+        else if(sqlObject.getOption()=="=")
         {
-            sqlObject.setOption(" not in ");
+            sqlObject.setOption(" in ");
+            ifEqual=true;
         }
        //根据名称查询
         try {
-          String json =  permissionService.getClientIdByNamePCS(value);
+          String json =  permissionService.getClientIdByNamePCS(value,ifEqual);
            ids = JSON.parseArray(json,Integer.class);
         }catch (Exception e){
         }
@@ -48,4 +51,7 @@ public class GetClientNameSql implements GetSqlObject{
     public void setSqlObject(SqlObject sqlObject){
         this.sqlObject =sqlObject;
     };
+    public SqlObject getSqlObject(){
+        return sqlObject;
+    }
 }

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

@@ -34,4 +34,7 @@ public class GetComSql  implements GetSqlObject{
     public void setSqlObject(SqlObject sqlObject){
         this.sqlObject=sqlObject;
     }
+    public SqlObject getSqlObject(){
+        return sqlObject;
+    }
 }

+ 11 - 4
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetCreateNameSql.java

@@ -20,19 +20,23 @@ public class GetCreateNameSql implements GetSqlObject{
   private PermissionService permissionService;
     @Override
     public String getSql( String value) {
+        Boolean ifEqual= false;
         //根据名称查询人员id
         List<Integer> ids = null;
-        if(sqlObject.getOption()=="=")
+        if(sqlObject.getOption()=="contain")
         {
             sqlObject.setOption(" in ");
+
         }
-       else if(sqlObject.getOption()=="!=")
+            else if(sqlObject.getOption()=="=")
         {
-            sqlObject.setOption(" not in ");
+            sqlObject.setOption(" in ");
+            ifEqual=true;
         }
+
        //根据名称查询
         try {
-          String json =  permissionService.getPersonIdByNamePCS(value);
+        String json =  permissionService.getPersonIdByNamePCS(value,ifEqual);
            ids = JSON.parseArray(json,Integer.class);
         }catch (Exception e){
         }
@@ -48,4 +52,7 @@ public class GetCreateNameSql implements GetSqlObject{
     public void setSqlObject(SqlObject sqlObject){
         this.sqlObject =sqlObject;
     };
+    public SqlObject getSqlObject(){
+        return sqlObject;
+    }
 }

+ 3 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetDateTimeSql.java

@@ -22,4 +22,7 @@ public class GetDateTimeSql implements GetSqlObject{
     public void setSqlObject(SqlObject sqlObject){
         this.sqlObject=sqlObject;
     }
+    public SqlObject getSqlObject(){
+        return sqlObject;
+    }
 }

+ 3 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetLikeSql.java

@@ -26,4 +26,7 @@ public class GetLikeSql implements GetSqlObject{
     public void setSqlObject(SqlObject sqlObject){
         this.sqlObject=sqlObject;
     }
+    public SqlObject getSqlObject(){
+        return sqlObject;
+    }
 }

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

@@ -7,4 +7,5 @@ public interface GetSqlObject {
     public SqlObject sqlObject = null;
     public String getSql(String value);
     public void setSqlObject(SqlObject sqlObject);
+    public SqlObject getSqlObject();
 }

+ 85 - 51
src/main/java/cn/cslg/pas/service/business/EventService.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.EventDTO;
+import cn.cslg.pas.common.dto.business.EventUpdateDTO;
 import cn.cslg.pas.common.model.cronModel.*;
 import cn.cslg.pas.common.model.request.*;
 
@@ -81,9 +82,9 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
 
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
-        String sql1 ="";
-        String sql2="";
-        String sql3 ="";
+        String sql1 = "";
+        String sql2 = "";
+        String sql3 = "";
         //合成检索式
         StringRequest stringRequest = null;
         if (queryRequest instanceof MapRequest) {
@@ -93,22 +94,21 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
         }
         String condition = stringRequest.getSearchQuery();
 
-        if(condition!=null&&condition!="") {
+        if (condition != null && condition != "") {
             try {
                 //将检索式转换为二叉树
                 treeNode tree = expressManager.getInstance().Parse(condition, false);
                 //格式化检索式
-                sql1 = formatQueryService.ToString((operateNode) tree);
-            }
-            catch (Exception e){
+                sql1 = formatQueryService.ToString2((operateNode) tree, null);
+            } catch (Exception e) {
                 throw new ConditionException("检索式错误");
             }
-            }
+        }
 
         //格式化排序
         if (queryRequest.getOrderDTOList() != null && queryRequest.getOrderDTOList().size() != 0) {
             String orderSql = formatQueryService.orderToString(queryRequest.getOrderDTOList());
-            sql2= orderSql;
+            sql2 = orderSql;
         }
 
         //格式化 分页信息
@@ -116,11 +116,11 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
             Long size = queryRequest.getSize();
             Long current = queryRequest.getCurrent();
             String page = " limit " + ((current - 1) * size) + "," + size;
-            sql3= page;
+            sql3 = page;
         }
 
         //根据sql查询事件信息
-        List<EventVO> eventVOS = eventMapper.getEvent(sql1,sql2,sql3);
+        List<EventVO> eventVOS = eventMapper.getEvent(sql1, sql2, sql3);
 
         //查询总数
         Long total = eventMapper.getEventCount(sql1);
@@ -144,13 +144,11 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
         }
 
         //获取登录人信息
-        PersonnelVO personnelVO =new PersonnelVO();
+        PersonnelVO personnelVO = new PersonnelVO();
         try {
             personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-        }
-        catch (Exception e)
-        {
-            throw  new UnLoginException("未登录");
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
         }
 
         //根据名称查询是否重复
@@ -173,13 +171,13 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
             try {
                 List<String> guids = fileManagerService.uploadFileGetGuid(files);
                 List<AssoEventFile> assoEventFiles = new ArrayList<>();
-                    for(String item:guids) {
-                        AssoEventFile assoEventFile = new AssoEventFile();
-                        assoEventFile.setEventId(event.getId());
-                        assoEventFile.setFileGuid(item);
-                        assoEventFile.setCreateId(personnelVO.getId());
-                        assoEventFiles.add(assoEventFile);
-                    }
+                for (String item : guids) {
+                    AssoEventFile assoEventFile = new AssoEventFile();
+                    assoEventFile.setEventId(event.getId());
+                    assoEventFile.setFileGuid(item);
+                    assoEventFile.setCreateId(personnelVO.getId());
+                    assoEventFiles.add(assoEventFile);
+                }
 
                 if (assoEventFiles != null && assoEventFiles.size() != 0) {
                     assoEventFileService.saveBatch(assoEventFiles);
@@ -198,8 +196,8 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
         queryWrapper.in(AssoEventFile::getEventId, ids);
         List<AssoEventFile> assoEventFiles = assoEventFileService.list(queryWrapper);
         List<String> guids = assoEventFiles.stream().map(AssoEventFile::getFileGuid).collect(Collectors.toList());
-        //TODO 根据guid删除文件
-        if(guids.size()!=0) {
+        // 根据guid删除文件
+        if (guids.size() != 0) {
             fileManagerService.deleteFileFromFMS(guids);
         }
         //删除事件和文件关联表
@@ -209,22 +207,61 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
         return ids;
     }
 
+    /**
+     * 更新事件接口
+     * @param object
+     * @param files
+     * @return
+     */
     @Override
     public Object updateMessage(Object object, List<MultipartFile> files) {
-        EventDTO eventDTO = (EventDTO) object;
-        //检查事件格式 TODO
+
+        EventUpdateDTO eventUpdateDTO = (EventUpdateDTO) object;
+        //检查事件格式
+        if (eventUpdateDTO == null || eventUpdateDTO.getId() == null) {
+            throw new XiaoShiException("参数错误");
+
+        }
+        Event event = this.getById(eventUpdateDTO.getId());
         //根据名称查询是否重复
-        eventDTO.setName(eventDTO.getName().trim());
-        String name = eventDTO.getName();
+        eventUpdateDTO.setName(eventUpdateDTO.getName().trim());
+        String name = eventUpdateDTO.getName();
         LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Event::getName, name);
         List<Event> events = this.list(queryWrapper);
-        if (events == null || events.size() == 0) {
-            return null;
+        if (eventUpdateDTO.getName() != event.getName() && events.size() != 0) {
+            throw new XiaoShiException("名称重复");
         }
-        Event event = new Event();
-        BeanUtils.copyProperties(eventDTO, event);
-        event.insert();
+        BeanUtils.copyProperties(eventUpdateDTO, event);
+        event.updateById();
+
+        // 根据事件Id查询对应的附件Id
+        LambdaQueryWrapper<AssoEventFile> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(AssoEventFile::getEventId, eventUpdateDTO.getId());
+        List<AssoEventFile> assoReportFiles = assoEventFileService.list(wrapper);
+        List<String> fileGuIds = assoReportFiles.stream().map(AssoEventFile::getFileGuid).collect(Collectors.toList());
+        // 获得事件更新后的附件Id
+        List<String> updateFilGuId = new ArrayList<>();
+        if (eventUpdateDTO.getFileGuids() != null && eventUpdateDTO.getFileGuids().size() != 0) {
+            updateFilGuId = eventUpdateDTO.getFileGuids();
+        }
+        fileGuIds.retainAll(updateFilGuId);
+        //做差获得被删除的文件Id
+        if (fileGuIds.size() != 0) {
+            //根据文件Id删除报事件文件关联表记录
+            LambdaQueryWrapper<AssoEventFile> deleteWrapper = new LambdaQueryWrapper<>();
+            deleteWrapper.in(AssoEventFile::getFileGuid, fileGuIds);
+            assoEventFileService.remove(deleteWrapper);
+
+            //远程删除服务器上文件
+            try {
+                fileManagerService.deleteFileFromFMS(fileGuIds);
+            } catch (Exception e) {
+
+            }
+        }
+
+        //添加文件
         if (files != null && files.size() != 0) {
             try {
                 List<String> guids = fileManagerService.uploadFileGetGuid(files);
@@ -254,7 +291,7 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
      * @throws Exception
      */
     public GroupVO getGroup(GroupRequest groupRequest) throws Exception {
-        String sql ="";
+        String sql = "";
 
         //合成检索式
         StringGroupRequest stringGroupRequest = null;
@@ -264,12 +301,12 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
             stringGroupRequest = (StringGroupRequest) groupRequest;
         }
         String condition = stringGroupRequest.getSearchQuery();
-           if(condition!=null) {
-               //将检索式转换为二叉树
-               treeNode tree = expressManager.getInstance().Parse(condition, false);
-               //格式化检索式
-               sql = formatQueryService.ToString((operateNode) tree);
-           }
+        if (condition != null) {
+            //将检索式转换为二叉树
+            treeNode tree = expressManager.getInstance().Parse(condition, false);
+            //格式化检索式
+            sql = formatQueryService.ToString((operateNode) tree);
+        }
         //格式化 分组
         String json = CommonService.readJsonFile("event_group.json");
         List<GroupConfig> groupConfigs = JSON.parseArray(json, GroupConfig.class);
@@ -413,30 +450,27 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
             if (eventCountVOS.size() != 0) {
                 //专题库数量
                 EventCountVO eventCountVO1 = eventCountVOS.stream().filter(item ->
-                    item.getEventId().equals(eventVO.getId())&&item.getProjectType().equals(1)).findFirst().orElse(null);
+                        item.getEventId().equals(eventVO.getId()) && item.getProjectType().equals(1)).findFirst().orElse(null);
 
                 //报告数量
                 EventCountVO eventCountVO2 = eventCountVOS.stream().filter(item ->
-                        item.getEventId().equals(eventVO.getId())&&item.getProjectType().equals(2)).findFirst().orElse(null);
+                        item.getEventId().equals(eventVO.getId()) && item.getProjectType().equals(2)).findFirst().orElse(null);
 
                 //设置专题库数量
-                if(eventCountVO1!=null){
+                if (eventCountVO1 != null) {
                     eventVO.setPatentProjectNum(eventCountVO1.getProjectCount());
-                }
-                else {
+                } else {
                     eventVO.setPatentProjectNum(0);
                 }
 
                 //设置报告数量
-                if(eventCountVO2!=null){
+                if (eventCountVO2 != null) {
                     eventVO.setReportProjectNum(eventCountVO2.getProjectCount());
-                }
-                else {
+                } else {
                     eventVO.setReportProjectNum(0);
                 }
 
-            }
-            else {
+            } else {
                 eventVO.setReportProjectNum(0);
                 eventVO.setPatentProjectNum(0);
             }

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

@@ -27,10 +27,10 @@ public class PermissionService {
      * @return
      * @throws IOException
      */
-    public String getPersonIdByNamePCS(String personName) 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)
+                .url(PCSUrl + "/permission/api/system/getPersonIdByName?personName=" + personName+"&ifEqual="+ifEqual)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
@@ -100,10 +100,10 @@ public class PermissionService {
      * @return
      * @throws IOException
      */
-    public String getClientIdByNamePCS(String clientName) 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/getClientIdByNam?clientName=" + clientName)
+                .url(PCSUrl + "/permission/api/system/getClientIdByNam?clientName=" + clientName+"&ifEqual="+ifEqual)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();

+ 121 - 54
src/main/java/cn/cslg/pas/service/query/FormatQueryService.java

@@ -29,10 +29,11 @@ import java.util.*;
 @Slf4j
 public class FormatQueryService {
     @Autowired
-   private GetSqlFactory getSqlFactory;
+    private GetSqlFactory getSqlFactory;
 
     @Autowired
     private GetOrderFactory getOrderFactory;
+
     public String getText(String text) throws Exception {
         treeNode tree = expressManager.getInstance().Parse(text, false);
         System.out.print(this.ToString((operateNode) tree));
@@ -40,65 +41,58 @@ public class FormatQueryService {
     }
 
     /**
-     *  二叉树转检索式
+     * 二叉树转检索式
+     *
      * @param node
      * @return
      */
-    public String ToString(operateNode node){
-        operate operate1 =node.getoperate();
-        treeNode Left =node.getLeft();
-        treeNode Right =node.getRight();
+    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))
-        {
+        String optionName = "";
+        if ((operate1.getShowName() != null)) {
             strCode = operate1.getShowName();
-            optionName=operate1.getShowName();
-        }
-        else
-        {
+            optionName = operate1.getShowName();
+        } else {
             strCode = operate1.getCode();
-            optionName=operate1.getCode();
+            optionName = operate1.getCode();
         }
-        GetSqlObject getSqlObject =null;
-        if(Left != 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;
+        GetSqlObject getSqlObject = null;
+        if (Left != 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());
+                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)
-        {  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();
+        if (Right != null) {
+            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+"%'";
+            if (getSqlObject != null) {
+                if (optionName.equals(" LIKE ")) {
+                    rightValue = "'%" + rightValue + "%'";
                 }
 
-             strCode = getSqlObject.getSql(rightValue);
+                strCode = getSqlObject.getSql(rightValue);
             }
         }
 
@@ -107,23 +101,96 @@ public class FormatQueryService {
 
     /**
      * 排序转sql排序语句
+     *
      * @param dtos
      * @return
      */
-    public String orderToString(List<OrderDTO> dtos){
+    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());
+        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;
+        String orderStr = StringUtils.join(orders, ",");
+        re += orderStr;
+        return re;
+    }
+
+
+    /**
+     * 二叉树转检索式
+     *
+     * @param node
+     * @return
+     */
+    public String ToString2(operateNode node, GetSqlObject getSqlObject) {
+        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 getSqlObjectLocal =null;
+        if (Left != null) {
+            if ((operate1.gettype() == enuType.Logic || operate1.gettype() == enuType.Assignment) && (Left instanceof operateNode)) {
+                strCode = "(" + this.ToString2((operateNode) Left, getSqlObject) + ") " + strCode+" ";
+            } else {  //获得栏位名称
+                String field = Left.ToString();
+
+                if (getSqlObject != null) {
+                    strCode = getSqlObject.getSql(field) +strCode+" ";
+                } else {
+                    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) {
+                        getSqlObjectLocal = getSqlFactory.getClass(sqlObject.getSqlClass());
+                        sqlObject.setOption(optionName);
+                        getSqlObjectLocal.setSqlObject(sqlObject);
+                        getSqlObject =getSqlObjectLocal;
+                    }
+                }
+            }
+
+        }
+        if (Right != null) {
+            String rightValue = "";
+            if ((operate1.gettype() == enuType.Logic || operate1.gettype() == enuType.Assignment) && (Right instanceof operateNode)) {
+                rightValue = this.ToString2((operateNode) Right, getSqlObject);
+                if (getSqlObject != null) {
+                    return rightValue;
+                }
+                strCode = strCode + " (" + rightValue + ") ";
+            }
+            else {
+                if(getSqlObjectLocal!=null){
+                    rightValue =Right.ToString();
+                    strCode =  getSqlObject.getSql(rightValue);
+                }
+               else if (getSqlObject != null) {
+                    rightValue =Right.ToString();
+                    strCode = strCode + getSqlObject.getSql(rightValue);
+                }
+
+            }
+
+        }
+
+        return strCode;
     }
 }

+ 66 - 2
src/main/resources/jsons/event.json

@@ -1,14 +1,36 @@
-[{"name":"事件名称",
+[
+  {"name":"Id",
+    "type":"String",
+    "value":"id",
+    "field":"id",
+    "sqlField": "id",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getComGroup",
+    "ifSearch":"false",
+    "ifGroup": "false"
+  },
+  {"name":"事件名称",
   "type":"String",
   "value":"name",
+  "field": "name",
+  "sqlField": "name",
+  "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getComGroup",
   "ifSearch":"true",
   "ifGroup": "false"
 },
   {"name":"创建人",
     "type":"String",
     "value":"createName",
+    "field": "createName",
+    "sqlField": "create_id",
+    "sqlClass": "getCreateNameSql",
+    "groupClass":"getComGroup",
     "ifSearch":"true",
-    "ifGroup": "false"
+    "ifGroup": "false",
+
   },
   {"name":"客户",
     "type":"String",
@@ -19,12 +41,20 @@
   {"name":"创建时间",
     "type":"DateTime",
     "value":"createTime",
+    "field": "createTime",
+    "sqlField": "create_time",
+    "sqlClass": "getDateTimeSql",
+    "orderClass": "getComOrder",
     "ifSearch":"true",
     "ifGroup": "true"
   },
   {"name":"发生时间",
     "type":"DateTime",
     "value":"eventDate",
+    "field": "eventDate",
+    "sqlField": "event_Date",
+    "sqlClass": "getDateTimeSql",
+    "orderClass": "getComOrder",
     "ifSearch":"true",
     "ifGroup": "true"
   },
@@ -37,7 +67,41 @@
   {"name":"应用场景",
     "type":"Integer",
     "value":"scenarioId",
+    "field": "scenarioId",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
     "ifSearch":"true",
     "ifGroup": "true"
+  },
+  {"name":"委托方",
+    "type":"String",
+    "value":"clientName",
+    "field": "clientName",
+    "sqlField": "client_id",
+    "sqlClass": "getClientNameSql",
+    "orderClass": "getClientNameOrder",
+    "ifSearch":"false",
+    "ifGroup": "false"
+  },
+  {
+    "name":"报告数量",
+    "type":"Integer",
+    "value":"reportProjectNum",
+    "field":"reportProjectNum",
+    "sqlField": "event_id",
+    "orderClass": "getEventReportNumOrder",
+    "ifSearch":"false",
+    "ifGroup": "false"
+  },
+  {
+    "name":"专题库数量",
+    "type":"Integer",
+    "value":"patentProjectNum",
+    "field":"patentProjectNum",
+    "sqlField": "event_id",
+    "orderClass": "getEventProjectNumOrder",
+    "ifSearch":"false",
+    "ifGroup": "false"
   }
 ]

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

@@ -29,7 +29,7 @@ public class EventServiceTests {
     @Test
     void test() throws Exception {
         StringRequest queryRequest = new StringRequest();
-        queryRequest.setSearchQuery("name~事件 and createName=朱");
+        queryRequest.setSearchQuery("name CONTAIN 事件 OR name =[1 OR 2] AND name = 事件11");
         List<OrderDTO> dtos = new ArrayList<>();
         OrderDTO orderDTO1 = new OrderDTO();
         orderDTO1.setOrderBy("name");