diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/es/JeroElasticsearchTemplate.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/es/JeroElasticsearchTemplate.java index 139e89b3d..0a2124459 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/es/JeroElasticsearchTemplate.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/es/JeroElasticsearchTemplate.java @@ -434,16 +434,16 @@ public class JeroElasticsearchTemplate { //// json.put("sort", sort); // return json; // } - public JSONObject buildQuery(List _source, JSONObject query,Map highlight,String sort, int from, int size) { + public JSONObject buildQuery(List _source, JSONObject query,Map highlight,JSONArray sort, int from, int size) { JSONObject json = new JSONObject(); if (_source != null) { json.put("_source", _source); } json.put("highlight", highlight); json.put("query", query); + json.put("sort", sort); json.put("from", from); json.put("size", size); -// json.put("sort", sort); return json; } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java index db7317f65..ab9ed4868 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Maps; import com.jero.common.constant.CommonConstant; import com.jero.common.constant.WebsocketConst; import com.jero.common.constant.enums.*; @@ -1126,9 +1127,10 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl> fileTextList = new ArrayList<>(); List oSSFileAll = new ArrayList<>(); + List> maps = new ArrayList<>(); try { - for (Map.Entry entry : map.entrySet()) { + Map stringObjectMap = new HashMap<>(); String key = entry.getKey(); Object value = entry.getValue(); //es全文新增数据(数据转换) @@ -1152,6 +1154,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl oSSFileList = new ArrayList<>(); @@ -1175,18 +1179,24 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fileIdList = oSSFileAll.stream().map(OSSFile::getId).collect(Collectors.toList()); List fileInfos = iOSSFileService.getFileInfos(StringUtils.join(fileIdList, ",")); + + //处理文件排序(发布稿 增补件 报批稿 征求意见稿 测试程序) + List ossFileList = fileSort(fieldFileList, fileInfos, maps); + List> mapListTempCn = new ArrayList<>(); List> mapListTempEn = new ArrayList<>(); try { String cutCn = CutEnum.CN.getValue(); String cutEn = CutEnum.EN.getValue(); - if (fileInfos.size() != 0) { + if (ossFileList.size() != 0) { Map mapBaseDateCn = new HashMap<>(); Map mapBaseDateEn = new HashMap<>(); - for (OSSFile ossFile : fileInfos) { + for (OSSFile ossFile : ossFileList) { Map stringMapCn = new HashMap<>(); Map stringMapEn = new HashMap<>(); String fileText = ""; @@ -1234,15 +1244,27 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl objectMap : mapListTempCn) { + a++; + objectMap.put("file_sort",idTemp+"_"+a); + } + for (Map objectMap : mapListTempEn) { + b++; + objectMap.put("file_sort",idTemp+"_"+b); + } } //基础数据(中文) putMapCn(idTemp, (String) map.get("serial_number"), "文档库", sbCn.toString(), (String) map.get("title"), "", "", cutCn, mapBaseDateCn,SEARCH_FLAG); + mapBaseDateCn.put("file_sort",idTemp+"_"+1); //基础数据(英文) putMapCn(idTemp, (String) map.get("serial_number"), "document library", sbEn.toString(), (String) map.get("title"), "", "", cutEn, mapBaseDateEn,SEARCH_FLAG); + mapBaseDateEn.put("file_sort",idTemp+"_"+1); mapListTempCn.add(mapBaseDateCn); mapListTempEn.add(mapBaseDateEn); } else { @@ -1260,15 +1282,15 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl oSSFileAll = new ArrayList<>(); StringBuilder sbCn = new StringBuilder(); StringBuilder sbEn = new StringBuilder(); + List> maps = new ArrayList<>(); for (Map.Entry entry : mapNew.entrySet()) { + Map stringObjectMap = new HashMap<>(); String key = entry.getKey(); Object value = entry.getValue(); //es全文新增数据(数据转换) @@ -1647,6 +1671,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl oSSFileList = new ArrayList<>(); for (String fileId : value.toString().split(",")) { @@ -1681,6 +1707,10 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fileIdList = oSSFileAll.stream().map(OSSFile::getId).collect(Collectors.toList()); List fileInfos = iOSSFileService.getFileInfos(StringUtils.join(fileIdList, ",")); + + //处理文件排序(发布稿 增补件 报批稿 征求意见稿 测试程序) + List ossFileList = fileSort(fieldFileList, fileInfos, maps); + List> mapListTempCn = new ArrayList<>(); List> mapListTempEn = new ArrayList<>(); try { @@ -1739,15 +1769,28 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl objectMap : mapListTempCn) { + a++; + objectMap.put("file_sort",(String) map.get("id")+"_"+a); + } + for (Map objectMap : mapListTempEn) { + b++; + objectMap.put("file_sort",(String) map.get("id")+"_"+b); + } } + //基础数据中文(es) putMapCn((String) map.get("id"), (String) map.get("serial_number"), "文档库", sbCn.toString(), (String) map.get("title"), "", "", cutCn, mapBaseDateCn,SEARCH_FLAG); + mapBaseDateCn.put("file_sort",(String) map.get("id")+"_"+1); //基础数据英文(es) putMapCn((String) map.get("id"), (String) map.get("serial_number"), "document library", sbEn.toString(), (String) map.get("title"), "", "", cutEn, mapBaseDateEn,SEARCH_FLAG); + mapBaseDateEn.put("file_sort",(String) map.get("id")+"_"+1); mapListTempCn.add(mapBaseDateCn); mapListTempEn.add(mapBaseDateEn); } else { @@ -1769,10 +1812,12 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl字段 value-->关联文件connect_id + */ + public List fileSort(List fieldFileList,List oSSFileAll,List> maps){ + List result = new LinkedList<>(); + List fileFeildList = fieldFileList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList()); + for (OnlCgformField onlCgformField : fieldFileList) { + String dbFieldName = onlCgformField.getDbFieldName(); + for (Map map : maps) { + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey(); + String value = (String)entry.getValue(); + if(dbFieldName.equals(key)){ + List files = oSSFileAll.stream().filter(e -> value.equals(e.getConnectId())).collect(Collectors.toList()); + if(files.size() != 0){ + result.addAll(files); + } + } + } + } + } + return result; + } + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java index cf12f217d..acfdf071d 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java @@ -332,10 +332,12 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { fieldList.add("file_name"); fieldList.add("id"); fieldList.add("flag"); + JSONArray queryMapJson = new JSONArray(); JSONArray queryMapJsonTwo = new JSONArray(); JSONArray queryMapJsonThree = new JSONArray(); JSONArray queryMapJsonAll = new JSONArray(); + //封装首次的条件 if (StringUtils.isNotBlank(selectValue)) { for (String field : fieldList) { @@ -378,15 +380,24 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { JSONObject jsonObjectThree = jeroElasticsearchTemplate.buildBoolQuery(null, null, queryMapJsonThree); queryMapJsonAll.add(jsonObjectThree); } + + JSONObject sort = new JSONObject(); + Map mapSort = new HashMap<>(); + Map mapSortTemp = new HashMap<>(); + mapSort.put("order","asc"); + mapSortTemp.put("file_sort.keyword",mapSort); + sort.putAll(mapSortTemp); + Integer pageNo = searchVO.getPageNo(); Integer pageSize = searchVO.getPageSize(); - IPage page = getiPage(selectValue, selectValueTwo, queryMapJsonAll, null, pageNo, pageSize, null,searchVO.getCut()); + IPage page = getiPage(selectValue, selectValueTwo, queryMapJsonAll, null, pageNo, pageSize, null,searchVO.getCut(),sort); return page; } @NotNull private IPage getiPage(String selectValue, String selectValueTwo, JSONArray queryMapJson, - JSONArray should, Integer pageNo, Integer pageSize, String paragraphFlag,String cut) { + JSONArray should, Integer pageNo, Integer pageSize, String paragraphFlag, + String cut,JSONObject querySort) { JSONObject jsonObject = new JSONObject(); //基础添加封装 if ("paragraphFlag".equals(paragraphFlag)) { @@ -394,12 +405,15 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { } else { jsonObject = jeroElasticsearchTemplate.buildBoolQuery(queryMapJson, null, null); } + JSONArray jsonArraySort = new JSONArray(); + jsonArraySort.add(querySort); + //全部 //1. 条件,分页 JSONObject queryObject = jeroElasticsearchTemplate.buildQuery(null, jsonObject, null, - null, + jsonArraySort, pageNo-1, pageSize); //2. 数据查询 @@ -480,7 +494,7 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { if (StringUtils.isNotBlank(selectValue)) { for (Map.Entry entry : mapSource.entrySet()) { String key = entry.getKey(); - String value = (String) entry.getValue(); + String value = String.valueOf(entry.getValue()); StringBuilder sb = new StringBuilder(); if (StringUtils.isNotBlank(value)) { //file_text需要单独处理(截取第一处高亮的前后100个字符) @@ -705,6 +719,14 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { queryMapJsonAll.add(jsonObject); } + //排序 + JSONObject sort = new JSONObject(); + Map mapSort = new HashMap<>(); + Map mapSortTemp = new HashMap<>(); + mapSort.put("order","asc"); + mapSortTemp.put("file_sort.keyword",mapSort); + sort.putAll(mapSortTemp); + int pageNo = Integer.parseInt(map.get("pageNo").toString()); int pageSize = Integer.parseInt(map.get("pageSize").toString()); //判断第一次传参和第二次传参 inputFieldList @@ -728,7 +750,7 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { String paragraphFlag = "paragraphFlag"; - IPage iPage = getiPage(selectValue, selectValueTwo, queryMapJsonAll, null, pageNo, pageSize, paragraphFlag,(String) map.get("cut")); + IPage iPage = getiPage(selectValue, selectValueTwo, queryMapJsonAll, null, pageNo, pageSize, paragraphFlag,(String) map.get("cut"),sort); return iPage; }