diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java index a70a33e6..3b64ef82 100644 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java @@ -122,6 +122,7 @@ public class WebMvcConfig implements WebMvcConfigurer { // 重置ES addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetALLSearchCenter"); addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/manualResetALLSearchCenter"); + addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetALLSearchCenterToSearch"); addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetAStandSearchCenter"); addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetBLawsSearchCenter"); addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetCBussStandSearchCenter"); diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/ElasticsearchService.java b/adc-da-search/src/main/java/com/adc/da/search/service/ElasticsearchService.java index 41563bb6..3ee60980 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/service/ElasticsearchService.java +++ b/adc-da-search/src/main/java/com/adc/da/search/service/ElasticsearchService.java @@ -122,7 +122,7 @@ public interface ElasticsearchService { * 使用索引查询所有 */ - List> searchAll(String index); + List> searchAll(String index,String search); /** * 使用分词查询 diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/ElasticsearchServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/ElasticsearchServiceImpl.java index 76f1f3c5..c2f7ae08 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/service/impl/ElasticsearchServiceImpl.java +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/ElasticsearchServiceImpl.java @@ -284,7 +284,7 @@ public class ElasticsearchServiceImpl implements ElasticsearchService { * 使用索引查询所有 */ @Override - public List> searchAll(String index) { + public List> searchAll(String index,String search) { List> sourceList = new ArrayList>(); //1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称 @@ -295,7 +295,18 @@ public class ElasticsearchServiceImpl implements ElasticsearchService { .get(); SearchHits hits = sResponse.getHits(); if(hits.getTotalHits().value > 0){ - SearchResponse scrollResp = search(index,qBuilder, 1,(int) hits.getTotalHits().value); + BoolQueryBuilder boolSelectValue = new BoolQueryBuilder(); + if(StringUtils.isNotBlank(search)){ + boolSelectValue + .should(QueryBuilders.wildcardQuery("sortTitle.keyword", "*" + search.toUpperCase() + "*").boost(1005f)) + .should(QueryBuilders.wildcardQuery("numberTitle.keyword", "*" + search.toUpperCase() + "*").boost(1003f)) + .should(QueryBuilders.wildcardQuery("yearOrder.keyword", "*" + search.toUpperCase() + "*").boost(1002f)) + .should(QueryBuilders.wildcardQuery("nameTitle.keyword", "*" + search.toUpperCase() + "*").boost(1001f)) + .should(QueryBuilders.wildcardQuery("title.keyword", "*" + search + "*").boost(1000f)) + .should(QueryBuilders.wildcardQuery("textContent.keyword", "*" + search.toUpperCase() + "*").boost(0.0000000000000000000000000000000001f)) + .should(QueryBuilders.wildcardQuery("issue_time", "*" + search.toUpperCase() + "*")); + } + SearchResponse scrollResp = search(index,boolSelectValue, 1,(int) hits.getTotalHits().value); for (SearchHit hit : scrollResp.getHits().getHits()) { sourceList.add(hit.getSourceAsMap()); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/search/ResetSearchCenterController.java b/adc-da-slrs/src/main/java/com/adc/da/search/ResetSearchCenterController.java index 90b7cf85..b2dcb3ff 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/search/ResetSearchCenterController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/search/ResetSearchCenterController.java @@ -12,6 +12,8 @@ import com.adc.da.util.http.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -29,6 +31,17 @@ public class ResetSearchCenterController extends BaseController r = new ArrayList<>(); + if(stand.isOk() && StringUtils.isNotBlank(stand.getData().toString())){ + r.add(stand.getData().toString()); + } + + SearchCenter lawsSearch = new SearchCenter(); + lawsSearch.setExecType(searchCenter.getExecType()); + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + lawsSearch.setSearch(searchCenter.getSearch()); + } + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + lawsSearch.setIdList(searchCenter.getIdList()); + } + SarLawsStandInfoPage lawsPage = new SarLawsStandInfoPage(); + ResponseMessage laws = resetLawsSearchCenterToSearch(lawsPage,lawsSearch); + if(laws.isOk() && StringUtils.isNotBlank(laws.getData().toString())){ + r.add(laws.getData().toString()); + } + + SearchCenter bussSearch = new SearchCenter(); + bussSearch.setExecType(searchCenter.getExecType()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + bussSearch.setIdList(searchCenter.getIdList()); + } + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + bussSearch.setSearch(searchCenter.getSearch()); + } + SarBussionessStandEOPage bussPage = new SarBussionessStandEOPage(); + ResponseMessage buss = resetBussStandSearchCenterToSearch(bussPage,bussSearch); + if(buss.isOk() && StringUtils.isNotBlank(buss.getData().toString())){ + r.add(buss.getData().toString()); + } + + String res = String.join(", ", r); + logger.info(res); + + return Result.success(res); + } + @Async public ResponseMessage resetALLSearchCenter(SearchCenter searchCenter) throws Exception{ Boolean getFulltextserchIndex = elasticsearchService.isIndexExist("fulltextserch"); SearchCenter standSearch = new SearchCenter(); standSearch.setExecType(searchCenter.getExecType()); + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + standSearch.setSearch(searchCenter.getSearch()); + } if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ standSearch.setIdList(searchCenter.getIdList()); } @@ -122,6 +177,9 @@ public class ResetSearchCenterService { SearchCenter lawsSearch = new SearchCenter(); lawsSearch.setExecType(searchCenter.getExecType()); + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + lawsSearch.setSearch(searchCenter.getSearch()); + } if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ lawsSearch.setIdList(searchCenter.getIdList()); } @@ -136,6 +194,9 @@ public class ResetSearchCenterService { if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ bussSearch.setIdList(searchCenter.getIdList()); } + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + bussSearch.setSearch(searchCenter.getSearch()); + } SarBussionessStandEOPage bussPage = new SarBussionessStandEOPage(); ResponseMessage buss = resetBussStandSearchCenter(bussPage,bussSearch); if(buss.isOk() && StringUtils.isNotBlank(buss.getData().toString())){ @@ -185,6 +246,78 @@ public class ResetSearchCenterService { return Result.success(res); } + //重建国内外标准 + @Async + public ResponseMessage resetStandSearchCenterToSearch(SarStandardsInfoEOPage page,SearchCenter searchCenter) throws Exception{ + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + + Boolean getStandIndex = elasticsearchService.isIndexExist("fulltextserch"); + + if(!getStandIndex){ + logger.info("ES 不存在索引:fulltextserch"); + return Result.error("ES 不存在索引:fulltextserch"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("fulltextserch",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + + page.setValidFlag("0"); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + page.setIdlist(result); + } + QueryWrapper qw = new QueryWrapper(); + qw.eq("VALID_FLAG","0"); + int count = iSarStandardsInfoService.count(qw); + if(count > 0){ + page.setPageSize(count); + page.setMenuId("nomenu"); + page.setStandType("ALL"); + List rowsStand = iSarStandardsInfoService.getSarStandardsInfoPage(page); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarStandardsInfo::getId).collect(Collectors.toList()); + if(!esIdList.isEmpty()){ + + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + + + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarStandardsInfo sarStandardsInfoEO : updList){ + countUpdateSuccess++; + standFunc(sarStandardsInfoEO); + createStandMQService.sendStandMQ(sarStandardsInfoEO,"update"); + } + } + + logger.info("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+0+"条)删除-共"+delList.size()+"条数据"); + return Result.success("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+0+"条)删除-共"+delList.size()+"条数据"); + }else { + logger.info("未查询到标准数据"); + return Result.error("未查询到标准数据"); + } + + } + //重建国内外标准 @Async public ResponseMessage resetStandSearchCenter(SarStandardsInfoEOPage page,SearchCenter searchCenter) throws Exception{ @@ -199,7 +332,9 @@ public class ResetSearchCenterService { return Result.error("ES 不存在索引:stand"); } - List> searchListData = elasticsearchService.searchAll("stand"); + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("stand",search); List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); @@ -296,6 +431,14 @@ public class ResetSearchCenterService { } + private String getSearch(SearchCenter searchCenter) { + String search = ""; + if(StringUtils.isNotBlank(searchCenter.getSearch())) { + search = searchCenter.getSearch(); + } + return search; + } + private void standFunc(SarStandardsInfo sarStandardsInfoEO) throws Exception { attrInfoSearchDetails(sarStandardsInfoEO); FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); @@ -365,6 +508,93 @@ public class ResetSearchCenterService { } } + @Async + public ResponseMessage resetLawsSearchCenterToSearch(SarLawsStandInfoPage sarLawsInfoEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getLawsIndex = elasticsearchService.isIndexExist("fulltextserch"); + + if(!getLawsIndex){ + logger.info("ES 不存在索引:fulltextserch"); + return Result.error("ES 不存在索引:fulltextserch"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("fulltextserch",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + + sarLawsInfoEOPage.setLawsType("FOREIGN"); + + // page idlist 赋值 + idListFunc(sarLawsInfoEOPage, searchCenter); + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + QueryWrapper qw2 = new QueryWrapper(); + qw2.eq("VALID_FLAG","0"); + int count2 = iSarLawsStandInfoService.count(qw2); + if(count2 > 0){ + sarLawsInfoEOPage.setPageSize(count2); + List rowsStand = iSarLawsStandInfoService.getSarStandardsInfoPage(sarLawsInfoEOPage); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarLawsStandInfo::getId).collect(Collectors.toList()); + + if(!esIdList.isEmpty()){ + + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + + + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarLawsStandInfo sarLawsInfoEO : updList){ + countUpdateSuccess++; + lawsAttrInfoShowSearchDetails(sarLawsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarLawsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsInfoEO.setMapItems(collectMap); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } + createStandMQService.sendLawsMQ(sarLawsInfoEO,"update"); + } + } + + logger.info("重置国内外政策:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外政策共:"+rowsStand.size()+"条)数据"); + return Result.success(""); + }else { + logger.info("未查询到国内外政策数据"); + return Result.error("未查询到国内外政策数据"); + } + + } + @Async public ResponseMessage resetLawsSearchCenter(SarLawsStandInfoPage sarLawsInfoEOPage,SearchCenter searchCenter) throws Exception{ Boolean getLawsIndex = elasticsearchService.isIndexExist("laws"); @@ -374,7 +604,9 @@ public class ResetSearchCenterService { return Result.error("ES 不存在索引:laws"); } - List> searchListData = elasticsearchService.searchAll("laws"); + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("laws",search); List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); @@ -442,6 +674,25 @@ public class ResetSearchCenterService { for(SarLawsStandInfo sarLawsInfoEO : updList){ countUpdateSuccess++; lawsAttrInfoShowSearchDetails(sarLawsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarLawsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsInfoEO.setMapItems(collectMap); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } createStandMQService.sendLawsMQ(sarLawsInfoEO,"update"); } } @@ -571,6 +822,84 @@ public class ResetSearchCenterService { } } + /** + * 文本搜索 + */ + + @Async + public ResponseMessage resetBussStandSearchCenterToSearch(SarBussionessStandEOPage sarBussionessStandEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getbussstandIndex = elasticsearchService.isIndexExist("fulltextserch"); + + if(!getbussstandIndex){ + logger.info("ES 不存在索引:fulltextserch"); + return Result.error("ES 不存在索引:fulltextserch"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("fulltextserch",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + + sarBussionessStandEOPage.setValidFlag("0"); + sarBussionessStandEOPage.setOrderBy("SAR_BUSSIONESS_STAND.issue_time is null,SAR_BUSSIONESS_STAND.issue_time desc,SAR_BUSSIONESS_STAND.id"); + sarBussionessStandEOPage.setMenuRoleList(null); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + sarBussionessStandEOPage.setIdlist(result); + } + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + sarBussionessStandEOPage.setMenuId("0"); + + QueryWrapper qw3 = new QueryWrapper(); + qw3.eq("VALID_FLAG","0"); + int count3 = iSarBussionessStandService.count(qw3); + + if(count3 > 0){ + sarBussionessStandEOPage.setPageSize(count3); + + List rowsStand = iSarBussionessStandService.getSarBussionStandPage(sarBussionessStandEOPage); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + if(!esIdList.isEmpty()){ + + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarBussionessStand sarBussionessStandEO : updList){ + countUpdateSuccess++; + bussAttrInfoShowSearchDetails(sarBussionessStandEO); + if (sarBussionessStandEO.getAttrInfoMap() != null) { + sarBussionessStandEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarBussionessStandEO.getAttrInfoMap())); + } + createStandMQService.sendBussStandMQ(sarBussionessStandEO,"update"); + } + } + logger.info("重置企标:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(企标共:"+rowsStand.size()+"条)数据"); + return Result.success(""); + }else { + logger.info("未查询到企标数据"); + return Result.error("未查询到企标数据"); + } + + } + @Async public ResponseMessage resetBussStandSearchCenter(SarBussionessStandEOPage sarBussionessStandEOPage,SearchCenter searchCenter) throws Exception{ Boolean getbussstandIndex = elasticsearchService.isIndexExist("bussstand"); @@ -580,7 +909,9 @@ public class ResetSearchCenterService { return Result.error("ES 不存在索引:bussstand"); } - List> searchListData = elasticsearchService.searchAll("bussstand"); + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("bussstand",search); List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/service/impl/SarLawsStandInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/service/impl/SarLawsStandInfoServiceImpl.java index 01d9e28d..ddd92ac9 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/service/impl/SarLawsStandInfoServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/service/impl/SarLawsStandInfoServiceImpl.java @@ -736,6 +736,22 @@ public class SarLawsStandInfoServiceImpl extends ServiceImpl sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsStandInfo.setMapItems(collectMap); + } createStandMQService.sendLawsMQ(sarLawsStandInfo, "update"); } }