搜索--时间搜索改为时间范围搜索

This commit is contained in:
zhn
2022-04-02 13:56:35 +08:00
parent ce285c1dfb
commit 1fd0df30de
@@ -104,7 +104,11 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
return header;
}
/**
* 文档库列表
* @param map
* @return
*/
@Override
public IPage getInfoList(Map<String, Object> map) {
boolean flagTemp = jeroElasticsearchTemplate.indexExists(SearchEnum.INDEX_NAME_DOCUMENT.getValue());
@@ -126,16 +130,21 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
.collect(Collectors.toList());
List<String> inputFieldList = inputOnlCgformFieldList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList());
inputFieldList.add("file_text");
//下拉,树形,日期等字段
//下拉,树形,等字段
List<OnlCgformField> otherOnlCgformFieldList = fieldList.stream()
.filter(e -> FieldTypeEnum.PULL_SINGLE.getValue().equals(e.getFieldShowType())//下拉单选
|| FieldTypeEnum.PULL_MORE.getValue().equals(e.getFieldShowType())//下拉多选
|| FieldTypeEnum.DATE_SINGLE.getValue().equals(e.getFieldShowType())//日期单选
|| FieldTypeEnum.DATE_MORE.getValue().equals(e.getFieldShowType())//日期多选
|| FieldTypeEnum.TREE.getValue().equals(e.getFieldShowType()))//树形
.collect(Collectors.toList());
List<String> otherFieldList = otherOnlCgformFieldList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList());
//日期字段
List<OnlCgformField> dateOnlCgformFieldList = fieldList.stream()
.filter(e -> FieldTypeEnum.DATE_SINGLE.getValue().equals(e.getFieldShowType()))//日期单选
.collect(Collectors.toList());
List<String> dateFieldList = dateOnlCgformFieldList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList());
//过滤出下拉选
List<OnlCgformField> onlCgformFieldList = fieldList.stream()
.filter(e -> FieldTypeEnum.PULL_SINGLE.getValue().equals(e.getFieldShowType())
@@ -161,11 +170,11 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
JSONArray must = new JSONArray();
//处理首次查询条件
if (ObjectUtils.isNotEmpty(mapOne)) {
queryCondition(mapOne, inputFieldList, otherFieldList, must);
queryCondition(mapOne, inputFieldList, otherFieldList,dateFieldList, must);
}
//处理二次查询条件
if (ObjectUtils.isNotEmpty(mapTwo)) {
queryCondition(mapTwo, inputFieldList, otherFieldList, must);
queryCondition(mapTwo, inputFieldList, otherFieldList,dateFieldList, must);
}
//处理ids
JSONArray should = new JSONArray();
@@ -179,7 +188,6 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
should.add(queryMap);
}
}
//列表
//封装查询条件
JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(must, null, should);
//1. 封装分页和字段值
@@ -206,7 +214,6 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
} else {
mapTemp.put("collectFlag", "0");
}
//处理订阅
LambdaQueryWrapper<OnlCgformSubscribe> lambdaQueryWrapperTemp = new LambdaQueryWrapper<>();
lambdaQueryWrapperTemp.in(OnlCgformSubscribe::getDocumentId, mapTemp.get("id"));
@@ -216,7 +223,6 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
} else {
mapTemp.put("subscribeFlag", "0");
}
//格式化时间字段
solveTime(mapTemp);
mapList.add(mapTemp);
@@ -229,7 +235,6 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
if (fieldPullList.contains(entry.getKey())) {
bussDocumentLibraryEOService.dictItem(sysDictItems, entry, (String) map.get("cut"), fieldList);
}
//处理文件
if (FieldFileList.contains(entry.getKey())) {
List<OSSFile> fileInfos = iOSSFileService.getFileInfos((String) entry.getValue());
@@ -250,9 +255,11 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
}
private void queryCondition(Map<String, Object> mapOne, List<String> inputFieldList, List<String> otherFieldList, JSONArray must) {
private void queryCondition(Map<String, Object> mapOne, List<String> inputFieldList,
List<String> otherFieldList, List<String> dateFieldList,JSONArray must) {
Map<String, Object> inputMap = new HashMap<>();//条件内容为输入框的
Map<String, Object> otherMap = new HashMap<>();//条件内容为下拉,日期,树形
Map<String, Object> dateMap = new HashMap<>();//条件内容为下拉,树形
//区分输入框和下拉,树形,日期等字段
if (ObjectUtils.isNotEmpty(mapOne)) {
for (Map.Entry<String, Object> entry : mapOne.entrySet()) {
@@ -265,6 +272,9 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
if (otherFieldList.contains(key)) {
otherMap.put(key, value);
}
if(dateFieldList.contains(key)){
dateMap.put(key, value);
}
}
}
@@ -284,7 +294,7 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
}
}
}
//封装下拉,树形,日期查询条件
//封装下拉,树形查询条件
if (ObjectUtils.isNotEmpty(otherMap)) {
for (Map.Entry<String, Object> entry : otherMap.entrySet()) {
String key = entry.getKey();
@@ -300,8 +310,31 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
}
}
}
//封装时间类型字段查询(时间范围)
if (ObjectUtils.isNotEmpty(dateMap)) {
for (Map.Entry<String, Object> entry : dateMap.entrySet()) {
String key = entry.getKey();
String value = (String) entry.getValue();
Map<String, Object> queryMap = new HashMap<>();
Map<String, Object> queryMapTemp = new HashMap<>();
if (ObjectUtils.isNotEmpty(value)) {
Map<String, Object> map = new HashMap<>();
map.put("gte", value.split(",")[0]);
map.put("lte", value.split(",")[1]);
map.put("format", "yyyy-MM-dd");
queryMap.put(key, map);
queryMapTemp.put("range", queryMap);
must.add(queryMapTemp);
}
}
}
}
/**
* 全文
* @param searchVO
* @return
*/
@Override
public IPage getFullTextInfoList(SearchVO searchVO) {
if(StringUtils.isBlank(searchVO.getSelectValue())){
@@ -321,7 +354,6 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
}
String selectValue = searchVO.getSelectValue();
String selectValueTwo = searchVO.getSelectValueTwo();
//不查询高亮字段
//1. 需要查询的字段
List<String> fieldList = new ArrayList<>();
fieldList.add("module_type");
@@ -408,7 +440,6 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
JSONArray jsonArraySort = new JSONArray();
jsonArraySort.add(querySort);
//全部
//1. 条件,分页
JSONObject queryObject = jeroElasticsearchTemplate.buildQuery(null,
jsonObject,
@@ -435,7 +466,6 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
//二次搜索结果
List<Map<String, Object>> mapListTwo = new ArrayList<>();
List<Map<String, Object>> listNew = new ArrayList<>();
for (Map<String, Object> stringObjectMap : list) {
Map<String, Object> mapSource = (Map<String, Object>) stringObjectMap.get("_source");
if (StringUtils.isNotBlank(selectValueTwo)) {