diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java index 8771af87..c6ba4249 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java @@ -7,11 +7,15 @@ import com.adc.da.search.util.InitStandAttrSearchUtil; import com.adc.da.sys.dao.DicTypeEODao; import com.adc.da.sys.entity.DicTypeEO; import com.adc.da.sys.sarMenuStandard.service.ISarMenuStandardService; +import com.adc.da.sys.sarResource.entity.SysTsResource; +import com.adc.da.sys.sarResource.service.ISysTsResourceService; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.assertj.core.util.Lists; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; @@ -54,6 +58,8 @@ public class SearchCenterServiceImpl implements SearchCenterService { @Resource private ISarMenuStandardService sarMenuStandardService; + @Resource + private ISysTsResourceService tsResourceService; @Autowired @@ -360,6 +366,64 @@ public class SearchCenterServiceImpl implements SearchCenterService { } } } + // 处理菜单名称 + List menuNameList = new ArrayList<>(); + if (StringUtils.isNotBlank(searchInfoEO.getStandSystem())) { + ArrayList menuIdList = new ArrayList<>(); + Collections.addAll(menuIdList, searchInfoEO.getStandSystem().split(",")); + // 如果是1,2,3 则代表顶级目录,无需特意查询 + if (menuIdList.contains("1") || menuIdList.contains("2") || menuIdList.contains("3")) { + menuNameList = Lists.emptyList(); + }else { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(SysTsResource::getId, menuIdList); + List tsResourceList = tsResourceService.list(wrapper); + List childTsResourceList = new ArrayList<>(); + for (SysTsResource sysTsResource : tsResourceList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysTsResource::getParentId, sysTsResource.getId()); + List TsResources=tsResourceService.list(queryWrapper); + for(SysTsResource tsResource : TsResources){ + childTsResourceList.add(tsResource); + recursionGetChildren(tsResource, childTsResourceList); + } + } + tsResourceList.addAll(childTsResourceList); + Set tsResourceSet = new HashSet<>(tsResourceList); + + List tempList = tsResourceSet.stream().map(SysTsResource::getMenuName).collect(Collectors.toList()); + if ("bussstand".equals(searchInfoEO.getSelectIndex())) { + // 和ES中的类别对应 + for (String menuName : tempList) { + menuNameList.add(getReplaceStandSortStr(menuName)); + } + } else if ("stand".equals(searchInfoEO.getSelectIndex())) { + if (StringUtils.isNotBlank(searchInfoEO.getStandSystem())) { + // 使用正则表达式提取括号内的内容 + Pattern pattern = Pattern.compile("(([^()]+))"); + for (String menuName : tempList) { + Matcher matcher = pattern.matcher(menuName); + if (matcher.find()) { + String contentInBrackets = matcher.group(1); + menuNameList.add(contentInBrackets); + } else { + menuNameList.add(menuName); + } + } + } + } + } + } +// if (!menuNameList.isEmpty()) { +// menuNameList.forEach(each -> boolQueryBuilder.must(QueryBuilders.matchQuery("standSort","*"+each+"*"))); +// } + if (!menuNameList.isEmpty()) { + // 国标包含GB/T + if (menuNameList.contains("GB")) { + menuNameList.add("GB/T"); + } + boolQueryBuilder.must(QueryBuilders.termsQuery("standSort.keyword", menuNameList)); + } searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true); // 获取查询到的结果 @@ -2186,6 +2250,59 @@ public class SearchCenterServiceImpl implements SearchCenterService { log.info(response.getHits().toString()); } + + + private void recursionGetChildren(SysTsResource parent, List childTsResourceList){ + + LambdaQueryWrapper tsResourceQueryWrapper=new LambdaQueryWrapper<>(); + tsResourceQueryWrapper.eq(SysTsResource::getParentId,parent.getId()); + List children=tsResourceService.list(tsResourceQueryWrapper); + for(SysTsResource tsResource:children){ + childTsResourceList.add(tsResource); + recursionGetChildren(tsResource, childTsResourceList); + } + } + + public String getReplaceStandSortStr(String standSort){ + switch (standSort){ + case "A类标准(技术条件)": + return "Q/FT A"; + case "B类标准(技术基础)": + return "Q/FT B"; + case "C类标准(产品标准)": + return "Q/FT C"; + case "E类标准(发动机)": + return "Q/FT E"; + case " F类标准(仿真分析)": + return "Q/FT F"; + case "G类标准": + return "Q/FT G"; + case "M类标准(工程机械)": + return "Q/FT M"; + case "P类标准(工艺工装)": + return "Q/FT P"; + case "Q类标准(质量评审)": + return "Q/FT Q"; + case "T类标准(试验标准)": + return "Q/FT T"; + case "R类标准(设计规范)": + return "Q/FT R"; + case "V类标准(评价标准)": + return "Q/FT V"; + case "X类标准(出口车)": + return "Q/FT X"; + case "Z类标准(指导性技术文件)": + return "Q/FT Z"; + case "S类标准(产品试制标准)": + return "Q/FT S"; + case "Y类标准(标杆研究标准)": + return "Q/FT Y"; + case "参考标准": + return "FT"; + default: + return "其他企业标准"; + } + } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/SendBussMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/SendBussMQService.java index 851df083..c259cac6 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/mq/SendBussMQService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/SendBussMQService.java @@ -175,10 +175,10 @@ public class SendBussMQService { saveMap.put("id",infoEO.getId()); saveMap.put("standSortOrder",esStateOrder(String.valueOf(infoEO.getStandSort()),dicMap)); -// saveMap.put("standSort",infoEO.getStandSort()); -// saveMap.put("stand_sort",infoEO.getStandSort()); - saveMap.put("standSort",convertStandSort(infoEO.getId())); - saveMap.put("stand_sort",convertStandSort(infoEO.getId())); + saveMap.put("standSort",infoEO.getStandSort()); + saveMap.put("stand_sort",infoEO.getStandSort()); +// saveMap.put("standSort",convertStandSort(infoEO.getId())); +// saveMap.put("stand_sort",convertStandSort(infoEO.getId())); if(StringUtils.isNotEmpty(infoEO.getStandSort())){ String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getStandSort(),"JKSADFH564S"); saveMap.put("standSortShow",codeName); diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/SendStandMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/SendStandMQService.java index 57c2ee7f..94abf4bd 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/mq/SendStandMQService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/SendStandMQService.java @@ -132,10 +132,10 @@ public class SendStandMQService { saveMap.put("countryShow",codeName); } saveMap.put("standSortOrder",esStateOrder(String.valueOf(infoEO.getStandSort()),dicMap)); -// saveMap.put("standSort",infoEO.getStandSort()); -// saveMap.put("stand_sort",infoEO.getStandSort()); - saveMap.put("standSort",convertStandSort(infoEO.getId())); - saveMap.put("stand_sort",convertStandSort(infoEO.getId())); + saveMap.put("standSort",infoEO.getStandSort()); + saveMap.put("stand_sort",infoEO.getStandSort()); +// saveMap.put("standSort",convertStandSort(infoEO.getId())); +// saveMap.put("stand_sort",convertStandSort(infoEO.getId())); if (StringUtils.isNotEmpty(infoEO.getStandSort())) { String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getStandSort(),"JKSADFH564S"); saveMap.put("standSortShow",codeName);