动态字段--高级搜索

This commit is contained in:
zhn
2022-05-20 17:09:12 +08:00
parent 4b05bfe75e
commit 29780321da
2 changed files with 131 additions and 6 deletions
@@ -13,9 +13,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.CommonConstant;
import com.jero.common.constant.WebsocketConst;
import com.jero.common.constant.enums.*;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.constant.enums.IsMustEnum;
import com.jero.common.constant.enums.MessageTypeEnum;
import com.jero.common.constant.enums.ModuleEnum;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.es.JeroElasticsearchTemplate;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryRuleEnum;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.DateUtils;
import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
@@ -30,6 +35,7 @@ import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper;
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
import com.jero.modules.document.utils.ReadPdfUtil;
import com.jero.modules.document.utils.ReadWordUtil;
import com.jero.modules.document.vo.QueryConditionVO;
import com.jero.modules.domain.service.DomainUserRelService;
import com.jero.modules.feishu.service.IFeishuService;
import com.jero.modules.log.entity.BussLogEO;
@@ -42,7 +48,11 @@ import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.subscribe.entity.OnlCgformSubscribe;
import com.jero.modules.subscribe.service.IOnlCgformSubscribeService;
import com.jero.modules.system.entity.*;
import com.jero.modules.system.entity.SysAnnouncement;
import com.jero.modules.system.entity.SysCategory;
import com.jero.modules.system.entity.SysCategoryTreeVO;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysUserMapper;
import com.jero.modules.system.service.ISysAnnouncementService;
import com.jero.modules.system.service.ISysDepartService;
@@ -56,8 +66,20 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.shiro.SecurityUtils;
@@ -73,11 +95,26 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
@@ -5009,4 +5046,70 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
return infoPage;
}
//高级搜索条件拼接
private void sqlJoint(List<QueryConditionVO> queryConditionVOList){
if(queryConditionVOList.size() != 0){
int count =0;
StringBuilder sb = new StringBuilder();
for (QueryConditionVO queryConditionVO : queryConditionVOList) {
String type = queryConditionVO.getType();//and或or
String rule = queryConditionVO.getRule();
String field = queryConditionVO.getField();
String val = queryConditionVO.getVal();
//如果查询字段对应的搜索条件值为空,则不作处理
if(StringUtils.isNotBlank(val)){
count ++;//从第二个查询条件开始拼接type(and或or)
sb.append(" " + field + " ");
//查询类型
String ruleTemp = queryType(rule);
sb.append(ruleTemp + " ");
//..(用in-->特殊处理)
if(val.contains(",")){
StringBuilder sbTemp = new StringBuilder();
for (String valTemp : val.split(",")) {
sbTemp.append("'" + valTemp +"' ,");
}
if(StringUtils.isNotBlank(sbTemp)){
String substring = sbTemp.substring(0, sbTemp.length() - 1);
sb.append(substring);
}
}else{
sb.append(val);
}
if(count > 1){
sb.append(type + " ");
}
}
}
}
}
public String queryType(String rule){
String value ="";
if(QueryRuleEnum.GT.getCondition().equals(rule)){
value = QueryRuleEnum.GT.getValue();
}else if(QueryRuleEnum.GE.getCondition().equals(rule)){
value = QueryRuleEnum.GE.getValue();
}else if(QueryRuleEnum.LT.getCondition().equals(rule)){
value = QueryRuleEnum.LT.getValue();
}else if(QueryRuleEnum.LE.getCondition().equals(rule)){
value = QueryRuleEnum.LE.getValue();
}else if(QueryRuleEnum.EQ.getCondition().equals(rule)){
value = QueryRuleEnum.EQ.getValue();
}else if(QueryRuleEnum.NE.getCondition().equals(rule)){
value = QueryRuleEnum.NE.getValue();
}else if(QueryRuleEnum.LIKE.getCondition().equals(rule)){
value = QueryRuleEnum.LIKE.getValue();
}else if(QueryRuleEnum.LEFT_LIKE.getCondition().equals(rule)){
value = QueryRuleEnum.LEFT_LIKE.getValue();
}else if(QueryRuleEnum.RIGHT_LIKE.getCondition().equals(rule)){
value = QueryRuleEnum.RIGHT_LIKE.getValue();
}else if(QueryRuleEnum.IN.getCondition().equals(rule)){
value = QueryRuleEnum.IN.getValue();
}
return value;
}
}
@@ -0,0 +1,22 @@
package com.jero.modules.document.vo;
import lombok.Data;
/**
* @description
* @date 2022/5/20 14:37
* @auth zhn
*/
@Data
public class QueryConditionVO {
//类型(and或or)
private String type;
//查询类型
private String rule;
//字段
private String field;
//字段值
private String val;
}