全文检索数据权限控制,需要根据业务权限配置;
本组成员包括查看自己【有些模块本来就没有分组】,此时需要查询groupId为null,但是creator为自己的数据!
参考案例
.must(QueryBuilders.existsQuery("message")) //查message为非空的数据
.mustNot(QueryBuilders.existsQuery("message"))) //查message为空的数据
//本组权限【 包括分组是为null, 但能查看自己的数据】 acsBoolQuery.mustNot(QueryBuilders.existsQuery("groupId")).should(QueryBuilders.termsQuery("creator", businessAuthorityVO.getUserId()));
效果:
附上整个search代码
package com.sw.fam.service.ais.impl;import com.sw.fam.enums.acs.BusinessCodeEnum;
import com.sw.fam.enums.ais.EsIndexEnum;
import com.sw.fam.service.acs.impl.AcsBusinessAuthorityServiceImpl;
import com.sw.fam.service.ais.AisService;
import com.sw.fam.utils.FileComponent;
import com.sw.fam.vo.acs.BusinessAuthorityVO;
import com.sw.fam.vo.ais.IndexEntityVO;
import com.sw.fam.vo.ais.ReturnBean;
import com.sw.fam.vo.ais.SearchBean;
import com.sw.seeker.basic.constant.SeekerConstant;
import com.sw.seeker.common.util.CurrentUser;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.QueryStringQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.AggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.ParsedStringTerms;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.regex.Pattern;/*** @author ganquanzhong* @version v1.0* @description 检索服务接口实现类* @since 2020-09-21 v1.0**/
@Service
public class AisServiceImpl implements AisService {@Autowiredprivate RestHighLevelClient restHighLevelClient;@Autowiredprivate FileComponent fileComponent;@Autowiredprivate AcsBusinessAuthorityServiceImpl businessAuthorityService;/*** @param param {@link com.sw.fam.vo.ais.SearchBean} 请求参数* @return ReturnBean {@link com.sw.fam.vo.ais.ReturnBean} 返回结果* @throws IOException 检索异常* @description 全部 全文检索* @create ganquanzhong 2020/09/21*/@Overridepublic ReturnBean search(SearchBean param) throws IOException {//最终的请求体SearchRequest searchRequest = null;String indexName = param.getClusterName();String searchValue = param.getSearchValue();String projectId = "";if (param.getSearchMap().get("projectId") != null) {//项目内检索projectId = param.getSearchMap().get("projectId").toString();}HashMap<String, List<BusinessAuthorityVO>> businessAuthorityVOMap = new HashMap<>();// 1.构建SearchRequest检索请求if (indexName == null || "".equals(indexName)) {searchRequest = new SearchRequest();HashMap<String, List<BusinessAuthorityVO>> relicsAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_RELICS, BusinessCodeEnum.ADS_RELICS, BusinessCodeEnum.AES_RELICS_RELICS, BusinessCodeEnum.AES_RELICS_TILES);HashMap<String, List<BusinessAuthorityVO>> ruinsAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_RUINS, BusinessCodeEnum.ADS_RUINS, BusinessCodeEnum.AES_RUINS);HashMap<String, List<BusinessAuthorityVO>> sampleAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ADS_SOIL, BusinessCodeEnum.AES_RELICS_SAMPLE);HashMap<String, List<BusinessAuthorityVO>> diaryAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_DIARY, BusinessCodeEnum.ADS_DRILL_DIARY, BusinessCodeEnum.AES_DIARY_EXPLORATION, BusinessCodeEnum.AES_DIARY_TEAM);HashMap<String, List<BusinessAuthorityVO>> siteAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_SITE_RECORD, BusinessCodeEnum.ADS_SITE_RECORD);HashMap<String, List<BusinessAuthorityVO>> layerAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.AES_LAYER);HashMap<String, List<BusinessAuthorityVO>> clueAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_CLUE);HashMap<String, List<BusinessAuthorityVO>> adsAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ADS_DRILL);HashMap<String, List<BusinessAuthorityVO>> explorationAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.AES_EXPLORATION);if (relicsAcsMap != null) businessAuthorityVOMap.putAll(relicsAcsMap);if (ruinsAcsMap != null) businessAuthorityVOMap.putAll(ruinsAcsMap);if (sampleAcsMap != null) businessAuthorityVOMap.putAll(sampleAcsMap);if (diaryAcsMap != null) businessAuthorityVOMap.putAll(diaryAcsMap);if (siteAcsMap != null) businessAuthorityVOMap.putAll(siteAcsMap);if (layerAcsMap != null) businessAuthorityVOMap.putAll(layerAcsMap);if (clueAcsMap != null) businessAuthorityVOMap.putAll(clueAcsMap);if (adsAcsMap != null) businessAuthorityVOMap.putAll(adsAcsMap);if (explorationAcsMap != null) businessAuthorityVOMap.putAll(explorationAcsMap);}else {searchRequest = new SearchRequest(indexName);if (indexName.equals(EsIndexEnum.ASS_RELICS_IDX.getIndexName())) { //文物businessAuthorityVOMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_RELICS, BusinessCodeEnum.ADS_RELICS, BusinessCodeEnum.AES_RELICS_RELICS, BusinessCodeEnum.AES_RELICS_TILES);}if (indexName.equals(EsIndexEnum.ASS_RUINS_IDX.getIndexName())) { //遗迹businessAuthorityVOMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_RUINS, BusinessCodeEnum.ADS_RUINS, BusinessCodeEnum.AES_RUINS);}if (indexName.equals(EsIndexEnum.AES_SAMPLE_IDX.getIndexName())) { //样品businessAuthorityVOMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ADS_SOIL, BusinessCodeEnum.AES_RELICS_SAMPLE);}if (indexName.equals(EsIndexEnum.ASS_DIARY_IDX.getIndexName())) { //日记businessAuthorityVOMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_DIARY, BusinessCodeEnum.ADS_DRILL_DIARY, BusinessCodeEnum.AES_DIARY_EXPLORATION, BusinessCodeEnum.AES_DIARY_TEAM);}if (indexName.equals(EsIndexEnum.SITE_IDX.getIndexName())) { //遗址businessAuthorityVOMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_SITE_RECORD, BusinessCodeEnum.ADS_SITE_RECORD);}if (indexName.equals(EsIndexEnum.AES_LAYER_IDX.getIndexName())) { //地层businessAuthorityVOMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.AES_LAYER);}if (indexName.equals(EsIndexEnum.ASS_CLUE_IDX.getIndexName())) { //线索businessAuthorityVOMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_CLUE);}if (indexName.equals(EsIndexEnum.ADS_DRILL_IDX.getIndexName())) { //探孔businessAuthorityVOMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ADS_DRILL);}if (indexName.equals(EsIndexEnum.AES_EXPLORATION_IDX.getIndexName())) { //探方businessAuthorityVOMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.AES_EXPLORATION);}if (indexName.equals(EsIndexEnum.FILE_IDX.getIndexName())) { //附件HashMap<String, List<BusinessAuthorityVO>> relicsAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_RELICS, BusinessCodeEnum.ADS_RELICS, BusinessCodeEnum.AES_RELICS_RELICS, BusinessCodeEnum.AES_RELICS_TILES);HashMap<String, List<BusinessAuthorityVO>> ruinsAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_RUINS, BusinessCodeEnum.ADS_RUINS, BusinessCodeEnum.AES_RUINS);HashMap<String, List<BusinessAuthorityVO>> sampleAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ADS_SOIL, BusinessCodeEnum.AES_RELICS_SAMPLE);HashMap<String, List<BusinessAuthorityVO>> diaryAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_DIARY, BusinessCodeEnum.ADS_DRILL_DIARY, BusinessCodeEnum.AES_DIARY_EXPLORATION, BusinessCodeEnum.AES_DIARY_TEAM);HashMap<String, List<BusinessAuthorityVO>> siteAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_SITE_RECORD, BusinessCodeEnum.ADS_SITE_RECORD);HashMap<String, List<BusinessAuthorityVO>> layerAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.AES_LAYER);HashMap<String, List<BusinessAuthorityVO>> clueAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ASS_CLUE);HashMap<String, List<BusinessAuthorityVO>> adsAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.ADS_DRILL);HashMap<String, List<BusinessAuthorityVO>> explorationAcsMap = businessAuthorityService.queryAisAuthorityByBusinessCode(projectId, BusinessCodeEnum.AES_EXPLORATION);if (relicsAcsMap != null) businessAuthorityVOMap.putAll(relicsAcsMap);if (ruinsAcsMap != null) businessAuthorityVOMap.putAll(ruinsAcsMap);if (sampleAcsMap != null) businessAuthorityVOMap.putAll(sampleAcsMap);if (diaryAcsMap != null) businessAuthorityVOMap.putAll(diaryAcsMap);if (siteAcsMap != null) businessAuthorityVOMap.putAll(siteAcsMap);if (layerAcsMap != null) businessAuthorityVOMap.putAll(layerAcsMap);if (clueAcsMap != null) businessAuthorityVOMap.putAll(clueAcsMap);if (adsAcsMap != null) businessAuthorityVOMap.putAll(adsAcsMap);if (explorationAcsMap != null) businessAuthorityVOMap.putAll(explorationAcsMap);}}// 2.创建一个SearchSourceBuilder专门用于构建查询条件SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//使用BoolQueryBuilder进行复合查询 过滤字段,效率高于mustBoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();// 输入框 查询条件if (searchValue == null || searchValue.isEmpty()) {sourceBuilder.query(QueryBuilders.matchAllQuery());} else {String reg = "^[a-z0-9A-Z]+$";// 判断输入的内容是否完全由数字或字母组成boolean flag = Pattern.compile(reg).matcher(searchValue).matches();searchValue = searchValue.toLowerCase(); //大写转为小写,由于ES创建索引时默认为小写if (flag) {searchValue = "*" + searchValue + "*";}QueryStringQueryBuilder builder = new QueryStringQueryBuilder(searchValue).fields(IndexEntityVO.getSearchField().get(indexName)).analyzer("ik_smart");boolQueryBuilder.must(builder);}// 数据权限过滤if (businessAuthorityVOMap.size() > 0) {BoolQueryBuilder authorityQuery = QueryBuilders.boolQuery();for (Map.Entry<String, List<BusinessAuthorityVO>> businessAuthorEntry : businessAuthorityVOMap.entrySet()) {Optional<BusinessAuthorityVO> filterFirst = businessAuthorEntry.getValue().stream().filter(x -> x.getQueryType().equals(SeekerConstant.SYS_BUSINESS_TYPE_ALL) || StringUtils.isEmpty(x.getGroupId())).findFirst();if (filterFirst.isPresent()) {//查询该模块的 全部或者不存在分组id时if (!indexName.equals(EsIndexEnum.FILE_IDX.getIndexName())) {authorityQuery.should(QueryBuilders.termQuery("flag", parseCode(businessAuthorEntry.getKey())));}continue;}BoolQueryBuilder acsBoolQuery = QueryBuilders.boolQuery();if (!indexName.equals(EsIndexEnum.FILE_IDX.getIndexName())) {//非附件类别的都通过业务权限过滤acsBoolQuery.must(QueryBuilders.termQuery("flag", parseCode(businessAuthorEntry.getKey()))); //模块过滤}//每个模块分开处理权限for (BusinessAuthorityVO businessAuthorityVO : businessAuthorEntry.getValue()) {if (businessAuthorityVO.getQueryType().equals(SeekerConstant.SYS_BUSINESS_TYPE_GROUP)) {acsBoolQuery.should(QueryBuilders.termsQuery("groupId", businessAuthorityVO.getGroupId()));//本组权限【 包括分组是为null, 但能查看自己的数据】acsBoolQuery.mustNot(QueryBuilders.existsQuery("groupId")).should(QueryBuilders.termsQuery("creator", businessAuthorityVO.getUserId()));} else if (businessAuthorityVO.getQueryType().equals(SeekerConstant.SYS_BUSINESS_TYPE_SELF)) {acsBoolQuery.should(QueryBuilders.termsQuery("creator", businessAuthorityVO.getUserId()));} else if (businessAuthorityVO.getQueryType().equals(SeekerConstant.SYS_BUSINESS_TYPE_DISABLE)) {acsBoolQuery.mustNot(QueryBuilders.termsQuery("groupId", businessAuthorityVO.getGroupId()));}}authorityQuery.should(acsBoolQuery);}boolQueryBuilder.must(authorityQuery);}// 分组条件 entrySet遍历,在键和值都需要时使用(最常用) 此处是遍历传入的字段限定,为完全符合BoolQueryBuilder mustQueryBuilder = QueryBuilders.boolQuery();if (param.getSearchMap() != null && param.getSearchMap().size() > 0) {for (Map.Entry<String, Object> entry : param.getSearchMap().entrySet()) {//判断组织idif ("orgId".equals(entry.getKey())) {String orgIds = CurrentUser.getOrgIds();String newOrgIds = orgIds.replace("'", "");String[] split = newOrgIds.split(",");if (split.length > 0) {boolQueryBuilder.filter(QueryBuilders.termsQuery(entry.getKey(), split));}continue;}//处理排序if (entry.getValue() != null && "order".equals(entry.getKey())) {// searchMap中键值为es中索引的字段,值为arrayList封装的ArrayList<String> terms = (ArrayList<String>) entry.getValue();if (terms.size() > 0) {terms.forEach(item -> {sourceBuilder.sort(item, SortOrder.DESC);});}} else {//处理条件查询if (entry.getValue() != null && !"".equals(entry.getValue())) {//分组条件查询if (entry.getValue() instanceof ArrayList) {// searchMap中键值为es中索引的字段,值为arrayList封装的ArrayList<String> terms = (ArrayList<String>) entry.getValue();BoolQueryBuilder shouldQueryBuilder = QueryBuilders.boolQuery();if (terms.size() > 0) {terms.forEach(item -> shouldQueryBuilder.should(QueryBuilders.termQuery(entry.getKey(), item)));mustQueryBuilder.must(shouldQueryBuilder);}} else {//单个键值对条件boolQueryBuilder.filter(QueryBuilders.termQuery(entry.getKey(), entry.getValue()));}}}}}boolQueryBuilder.must(mustQueryBuilder);//匹配度倒数,数值越大匹配度越高sourceBuilder.sort("_score", SortOrder.DESC);// 给请求设置需要高亮显示的字段HighlightBuilder highlightBuilder = new HighlightBuilder();List highlightFieldList = IndexEntityVO.getHighlightField().get(indexName);if (CollectionUtils.isNotEmpty(highlightFieldList)) {for (int i = 0; i < highlightFieldList.size(); i++) {String name = highlightFieldList.get(i).toString();HighlightBuilder.Field highlight =new HighlightBuilder.Field(name).preTags("<span style='color:#e74c3c;'>").postTags("</span>").fragmentSize(200).numOfFragments(1);highlight.highlighterType("unified");highlightBuilder.field(highlight);}}sourceBuilder.highlighter(highlightBuilder);//分页处理sourceBuilder.query(boolQueryBuilder).from((param.getPageNum() - 1) * param.getPageSize()).size(param.getPageSize());// 4.调用SearchRequest.source将查询条件设置到检索请求searchRequest.source(sourceBuilder);// 5.执行RestHighLevelClient.search发起请求SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);ReturnBean returnBean = new ReturnBean();List<Map<String, Object>> list = new ArrayList<>();//SearchHits提供有关所有匹配的全局信息,例如总命中数或最高分数:SearchHits hits = response.getHits();long totalHits = response.getHits().getTotalHits();returnBean.setTotal(totalHits);returnBean.setCurrent(param.getPageNum());returnBean.setSize(param.getPageSize());SearchHit[] searchHits = hits.getHits();ArrayList<String> fileInfoIdList = new ArrayList<>();for (SearchHit hit : searchHits) {//获取命中的数据源Map<String, Object> source = hit.getSourceAsMap();//文件类别需要处理if ("fam_file_idx".equals(indexName) || (source.get("flag") != null && source.get("flag").toString().equals("file"))) {if (source.get("fileInfoId") != null) {fileInfoIdList.add(source.get("fileInfoId").toString());}}//高亮结果处理Map<String, HighlightField> highlightFields = hit.getHighlightFields();if (CollectionUtils.isNotEmpty(highlightFieldList)) {for (int i = 0; i < highlightFieldList.size(); i++) {String name = highlightFieldList.get(i).toString();HighlightField highlightField = highlightFields.get(name);StringBuilder sb = new StringBuilder();if (highlightField != null) {Text[] fragments = highlightField.getFragments();for (Text text : fragments) {sb.append(text);}source.put(name, sb.toString());}}}list.add(source);}if (CollectionUtils.isNotEmpty(fileInfoIdList)) {HashMap<String, Object> map = fileComponent.queryFileList(fileInfoIdList);for (Map<String, Object> objectMap : list) {if (map.get(objectMap.get("fileInfoId")) != null) {LinkedHashMap fileInfoMap = (LinkedHashMap) map.get(objectMap.get("fileInfoId"));objectMap.put("filePath", fileInfoMap.get("filePath") + fileInfoMap.get("fileName").toString());objectMap.put("fileName", fileInfoMap.get("fileName"));objectMap.put("serverPath", fileInfoMap.get("serverPath"));}}}returnBean.setRecords(list);return returnBean;}/*** @param param {@link com.sw.fam.vo.ais.SearchBean} 请求参数* @return ReturnBean {@link com.sw.fam.vo.ais.ReturnBean} 返回结果* @throws IOException 检索服务异常* @description 获取某个索引下面的分类* @create ganquanzhong 2020/09/22*/@Overridepublic ReturnBean queryGroupList(SearchBean param) throws IOException {SearchRequest searchRequest = null;String indexName = param.getClusterName();// 构建SearchRequest检索请求if (indexName == null || "".equals(indexName)) {//查全部searchRequest = new SearchRequest();} else {searchRequest = new SearchRequest(indexName);}// 创建一个SearchSourceBuilder专门用于构建查询条件SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();// 分组条件时加入的条件,如项目等BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();if (param.getSearchMap() != null && param.getSearchMap().size() > 0) {for (Map.Entry<String, Object> entry : param.getSearchMap().entrySet()) {//判断组织idif ("orgId".equals(entry.getKey())) {String orgIds = CurrentUser.getOrgIds();String newOrgIds = orgIds.replace("'", "");String[] split = newOrgIds.split(",");if (split.length > 0) {boolQueryBuilder.filter(QueryBuilders.termsQuery(entry.getKey(), split));}continue;}//处理条件查询if (entry.getValue() != null && !"".equals(entry.getValue())) {boolQueryBuilder.filter(QueryBuilders.termQuery(entry.getKey(), entry.getValue()));}}}//分组查询封装List searchGroup = IndexEntityVO.getSearchGroupTerm().get(indexName);ReturnBean returnBean = new ReturnBean();List<Map<String, Object>> list = new ArrayList<>();HashMap<String, Object> group = new HashMap<>();if (CollectionUtils.isNotEmpty(searchGroup)) {SearchResponse response = null;Map<String, Aggregation> aggMap = null;ParsedStringTerms stringTerms = null;Iterator<? extends Terms.Bucket> iterator = null;for (int i = 0; i < searchGroup.size(); i++) {//聚合查询AggregationBuilder groupAgg = AggregationBuilders.terms("group_" + searchGroup.get(i)).field(searchGroup.get(i).toString()).size(Integer.MAX_VALUE);sourceBuilder.aggregation(groupAgg).query(boolQueryBuilder);searchRequest.source(sourceBuilder);response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);//处理返回的聚合结果aggMap = response.getAggregations().asMap();if (aggMap != null && aggMap.size() > 0) {stringTerms = (ParsedStringTerms) aggMap.get("group_" + searchGroup.get(i));//将集合转换成迭代器遍历桶iterator = stringTerms.getBuckets().iterator();ArrayList<Map> resultList = new ArrayList<>();while (iterator.hasNext()) {HashMap<String, Object> sourceMap = new HashMap<>();Terms.Bucket bucket = iterator.next();//bucket桶也是一个map对象, 我们取它的key值就可以if (StringUtils.isNotEmpty(bucket.getKeyAsString())) {sourceMap.put("id", bucket.getKeyAsString());resultList.add(sourceMap);}}group.put(searchGroup.get(i) + "List", resultList);}}}list.add(group);returnBean.setRecords(list);return returnBean;}/*** @param code 业务权限code* @return String 检索类型flag* @description 解析业务权限中的code为检索中flag类型* @create ganquanzhong 2020/09/22*/private String parseCode(String code) {String flag = "";if ("FAM_ASS_DIARY".equals(code)) flag = "assDiary";else if ("FAM_ADS_DRILL_DIARY".equals(code)) flag = "adsDiary";else if ("FAM_AES_DIARY_EXPLORATION".equals(code)) flag = "aesExplorationDiary";else if ("FAM_AES_DIARY_TEAM".equals(code)) flag = "aesExplorationDiary";else if ("FAM_ASS_SITE_RECORD".equals(code)) flag = "site";else if ("FAM_ASS_RUINS".equals(code)) flag = "assRuins";else if ("FAM_ADS_RUINS".equals(code)) flag = "adsRuins";else if ("FAM_AES_RUINS".equals(code)) flag = "aesRuins";else if ("FAM_ASS_RELICS".equals(code)) flag = "assRelics";else if ("FAM_ADS_RELICS".equals(code)) flag = "adsRelics";else if ("FAM_AES_RELICS".equals(code)) flag = "aesRelics";else if ("FAM_ADS_SOIL".equals(code)) flag = "adsSoil";else if ("FAM_AES_RELICS_SAMPLE".equals(code)) flag = "aesSample";else if ("FAM_AES_LAYER".equals(code)) flag = "aesLayer";else if ("FAM_ASS_CLUE".equals(code)) flag = "clue";else if ("FAM_ADS_DRILL".equals(code)) flag = "drill";else if ("FAM_AES_EXPLORATION".equals(code)) flag = "exploration";else flag = "file";return flag;}
}