From 13c8fb50b0ce806fdae27b16d90d5661d6fa7e7c Mon Sep 17 00:00:00 2001 From: zhangjun Date: Wed, 21 Sep 2022 00:50:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../search/ResetSearchCenterController.java | 10 + .../server/ResetSearchCenterService.java | 476 ++++++++++++++++++ 2 files changed, 486 insertions(+) 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 c55733e2..07a0e863 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 @@ -71,6 +71,16 @@ 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()); + SarLawsStandInfoPage lawsPage = new SarLawsStandInfoPage(); + lawsPage.setSyncParam("sync"); + ResponseMessage laws = resetLawsSearchCenterId(lawsPage,lawsSearch); + if(laws.isOk() && StringUtils.isNotBlank(laws.getData().toString())){ + r.add(laws.getData().toString()); + } + + SearchCenter bussSearch = new SearchCenter(); + bussSearch.setExecType(searchCenter.getExecType()); + SarBussionessStandEOPage bussPage = new SarBussionessStandEOPage(); + bussPage.setSyncParam("sync"); + ResponseMessage buss = resetBussStandSearchCenterId(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 resetStandSearchCenterToFields(List esIdList,Map dicMap) throws Exception { @@ -584,6 +622,139 @@ public class ResetSearchCenterService { } + //重建国内外标准 + @Async + public ResponseMessage resetStandSearchCenterId(SarStandardsInfoEOPage page,SearchCenter searchCenter) throws Exception{ + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + + Boolean getStandIndex = elasticsearchService.isIndexExist("stand"); + + if(!getStandIndex){ + logger.info("ES 不存在索引:stand"); + return Result.error("ES 不存在索引:stand"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("stand",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 insIdList = new ArrayList<>(); + List updIdList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarStandardsInfo::getId).collect(Collectors.toList()); + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + for (SarStandardsInfo sarStandardsInfo : collect) { + insIdList.add(sarStandardsInfo.getId()); + } + }else{ + insList.addAll(distinctByUniqueList); + for (SarStandardsInfo sarStandardsInfo : distinctByUniqueList) { + insIdList.add(sarStandardsInfo.getId()); + } + } + + // 交集 更新 + 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); + for (SarStandardsInfo sarStandardsInfo : collect) { + updIdList.add(sarStandardsInfo.getId()); + } + }else{ + updList.addAll(intersection); + for (SarStandardsInfo sarStandardsInfo : intersection) { + updIdList.add(sarStandardsInfo.getId()); + } + } + + // 差集 (list2 - list1) 删除 + List delDataList = esIdList.stream().filter(num -> !standIdList.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + + }else { + // 新增 + insList.addAll(rowsStand); + for (SarStandardsInfo sarStandardsInfo : rowsStand) { + insIdList.add(sarStandardsInfo.getId()); + } + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarStandardsInfo sarStandardsInfoEO : updList){ + countUpdateSuccess++; + standFunc(sarStandardsInfoEO); +// createStandMQService.sendStandMQ(sarStandardsInfoEO,"update"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarStandardsInfo sarStandardsInfoEO : insList){ + countAddSuccess++; + standFunc(sarStandardsInfoEO); + if (sarStandardsInfoEO.getAttrInfoMap() != null) { + sarStandardsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarStandardsInfoEO.getAttrInfoMap())); + } +// createStandMQService.sendStandMQ(sarStandardsInfoEO,"add"); + } + } + String a = ""; + if(!delList.isEmpty() && ("DEL".equals(searchCenter.getExecType().toUpperCase()) && !"sync".equals(page.getSyncParam()))){ +// elasticsearchService.deleteBatchId(delList,"stand"); +// elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("重置国内外标准:删除-共"+delList.size()+"条数据"); + a = "国内外政策:应删除-共"+delList.size()+"条数据:"+ String.join(",",delList); + } + String b = "国内外政策:新增-"+ String.join(",",insIdList); + String c = "国内外政策:修改-"+ String.join(",",updIdList); + logger.info("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+0+"条)删除-共"+delList.size()+"条数据"); + return Result.success(a+b+c); + }else { + logger.info("未查询到标准数据"); + return Result.error("未查询到标准数据"); + } + + } + private String getSearch(SearchCenter searchCenter) { String search = ""; if(StringUtils.isNotBlank(searchCenter.getSearch())) { @@ -980,6 +1151,173 @@ public class ResetSearchCenterService { } + @Async + public ResponseMessage resetLawsSearchCenterId(SarLawsStandInfoPage sarLawsInfoEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getLawsIndex = elasticsearchService.isIndexExist("laws"); + + if(!getLawsIndex){ + logger.info("ES 不存在索引:laws"); + return Result.error("ES 不存在索引:laws"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("laws",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 insIdList = new ArrayList<>(); + List updIdList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarLawsStandInfo::getId).collect(Collectors.toList()); + + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + for (SarLawsStandInfo sarLawsStandInfo : insList) { + insIdList.add(sarLawsStandInfo.getId()); + } + }else{ + insList.addAll(distinctByUniqueList); + for (SarLawsStandInfo sarLawsStandInfo : distinctByUniqueList) { + insIdList.add(sarLawsStandInfo.getId()); + } + } + // 交集 更新 + 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); + for (SarLawsStandInfo sarLawsStandInfo : collect) { + updIdList.add(sarLawsStandInfo.getId()); + } + }else{ + updList.addAll(intersection); + for (SarLawsStandInfo sarLawsStandInfo : intersection) { + updIdList.add(sarLawsStandInfo.getId()); + } + } + + // 差集 (list2 - list1) 删除 + List delDataList = esIdList.stream().filter(num -> !standIdList.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + + }else { + // 新增 + insList.addAll(rowsStand); + for (SarLawsStandInfo sarLawsStandInfo : rowsStand) { + insIdList.add(sarLawsStandInfo.getId()); + } + } + + 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"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarLawsStandInfo sarLawsInfoEO : insList){ + countAddSuccess++; + 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())); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } +// createStandMQService.sendLawsMQ(sarLawsInfoEO,"add"); + } + } + String rett = ""; + String a = ""; + if(!delList.isEmpty() && ("DEL".equals(searchCenter.getExecType().toUpperCase()) && !"sync".equals(sarLawsInfoEOPage.getSyncParam()))){ +// elasticsearchService.deleteBatchId(delList,"laws"); +// elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("国内外政策:应删除-共"+delList.size()+"条数据:"+ String.join(",",delList)); + a = "国内外政策:应删除-共"+delList.size()+"条数据:"+ String.join(",",delList); + } + String b = "国内外政策:新增-"+ String.join(",",insIdList); + String c = "国内外政策:修改-"+ String.join(",",updIdList); + logger.info("重置国内外政策:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外政策共:"+rowsStand.size()+"条)数据"); + return Result.success(a+b+c); + }else { + logger.info("未查询到国内外政策数据"); + return Result.error("未查询到国内外政策数据"); + } + + } + public void lawsAttrInfoSearchDetails(SarLawsStandInfo row) throws Exception { String fieldInfo = InitStandAttrUtil.queryFieldLaws; String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); @@ -1359,6 +1697,144 @@ public class ResetSearchCenterService { } + @Async + public ResponseMessage resetBussStandSearchCenterId(SarBussionessStandEOPage sarBussionessStandEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getbussstandIndex = elasticsearchService.isIndexExist("bussstand"); + + if(!getbussstandIndex){ + logger.info("ES 不存在索引:bussstand"); + return Result.error("ES 不存在索引:bussstand"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("bussstand",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 insIdList = new ArrayList<>(); + List updIdList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + for (SarBussionessStand sarBussionessStand : collect) { + insIdList.add(sarBussionessStand.getId()); + } + }else{ + insList.addAll(distinctByUniqueList); + for (SarBussionessStand sarBussionessStand : distinctByUniqueList) { + insIdList.add(sarBussionessStand.getId()); + } + } + + // 交集 更新 + 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); + for (SarBussionessStand sarBussionessStand : collect) { + updIdList.add(sarBussionessStand.getId()); + } + }else{ + updList.addAll(intersection); + for (SarBussionessStand sarBussionessStand : intersection) { + updIdList.add(sarBussionessStand.getId()); + } + } + + // 差集 (list2 - list1) 删除 + List delDataList = esIdList.stream().filter(num -> !standIdList.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + }else { + // 新增 + insList.addAll(rowsStand); + for (SarBussionessStand sarBussionessStand : rowsStand) { + insIdList.add(sarBussionessStand.getId()); + } + } + + 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"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarBussionessStand sarBussionessStandEO : insList){ + countAddSuccess++; + bussAttrInfoShowSearchDetails(sarBussionessStandEO); + if (sarBussionessStandEO.getAttrInfoMap() != null) { + sarBussionessStandEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarBussionessStandEO.getAttrInfoMap())); + } +// createStandMQService.sendBussStandMQ(sarBussionessStandEO,"add"); + } + } + String a = ""; + if(!delList.isEmpty() && ("DEL".equals(searchCenter.getExecType().toUpperCase()) && !"sync".equals(sarBussionessStandEOPage.getSyncParam()))){ +// elasticsearchService.deleteBatchId(delList,"bussstand"); +// elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("重置企标:删除-共"+delList.size()+"条数据"); + a = "国内外政策:应删除-共"+delList.size()+"条数据:"+ String.join(",",delList); + } + String b = "国内外政策:新增-"+ String.join(",",insIdList); + String c = "国内外政策:修改-"+ String.join(",",updIdList); + logger.info("重置企标:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(企标共:"+rowsStand.size()+"条)数据"); + return Result.success(a+b+c); + }else { + logger.info("未查询到企标数据"); + return Result.error("未查询到企标数据"); + } + + } + public void bussAttrInfoShowSearchDetails(SarBussionessStand row) throws Exception { if (row != null) { bussAttrInfoSearchDetails(row);