diff --git a/src/main/java/neatlogic/module/inspect/api/definition/ListInspectAppThresholdsCollectionApi.java b/src/main/java/neatlogic/module/inspect/api/definition/ListInspectAppThresholdsCollectionApi.java index cfdd6b3660d784a638ac5c71c66b76fec7020f4a..98ba3f7c0de972c166318aa2eb32f5e2a0ef09ea 100644 --- a/src/main/java/neatlogic/module/inspect/api/definition/ListInspectAppThresholdsCollectionApi.java +++ b/src/main/java/neatlogic/module/inspect/api/definition/ListInspectAppThresholdsCollectionApi.java @@ -19,11 +19,11 @@ import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import neatlogic.framework.auth.core.AuthAction; import neatlogic.framework.cmdb.crossover.ICiCrossoverMapper; -import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.crossover.ISyncCrossoverMapper; import neatlogic.framework.cmdb.dto.ci.CiVo; -import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.enums.sync.CollectMode; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.IResourceCenterDataSource; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.ResourceCenterDataSourceFactory; import neatlogic.framework.common.constvalue.ApiParamType; import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.inspect.auth.INSPECT_BASE; @@ -37,10 +37,7 @@ import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -82,15 +79,14 @@ public class ListInspectAppThresholdsCollectionApi extends PrivateApiComponentBa @Description(desc = "获取应用巡检阈值设置,需要依赖mongodb") @Override public Object myDoService(JSONObject paramObj) throws Exception { - - ResourceSearchVo searchVo = paramObj.toJavaObject(ResourceSearchVo.class); - List resourceTypeIdList = new ArrayList<>(); - IResourceCrossoverMapper iResourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - Set resourceTypeIdSet = iResourceCrossoverMapper.getIpObjectResourceTypeIdListByAppSystemIdAndEnvId(searchVo); - if (CollectionUtils.isNotEmpty(resourceTypeIdSet)) { - resourceTypeIdList.addAll(resourceTypeIdSet); - resourceTypeIdList.addAll(iResourceCrossoverMapper.getOsResourceTypeIdListByAppSystemIdAndEnvId(searchVo)); + Long appSystemId = paramObj.getLong("appSystemId"); + Set set = new HashSet<>(); + IResourceCenterDataSource resourceCenterDataSource = ResourceCenterDataSourceFactory.getResourceCenterDataSource(); + Map> viewName2TypeIdListMap = resourceCenterDataSource.getAppResourceTypeIdListByAppSystemId(appSystemId); + for (Map.Entry> entry : viewName2TypeIdListMap.entrySet()) { + set.addAll(entry.getValue()); } + List resourceTypeIdList = new ArrayList<>(set); if (CollectionUtils.isNotEmpty(resourceTypeIdList)) { ICiCrossoverMapper iCiCrossoverMapper = CrossoverServiceFactory.getApi(ICiCrossoverMapper.class); diff --git a/src/main/java/neatlogic/module/inspect/api/report/GetInspectAccessEndPointScriptApi.java b/src/main/java/neatlogic/module/inspect/api/report/GetInspectAccessEndPointScriptApi.java index a403e14a3f33f963fd724d9ac5ab252b61dbb338..06dd0ad1a3d570a4a3f5179706ab440be83dd77c 100644 --- a/src/main/java/neatlogic/module/inspect/api/report/GetInspectAccessEndPointScriptApi.java +++ b/src/main/java/neatlogic/module/inspect/api/report/GetInspectAccessEndPointScriptApi.java @@ -51,7 +51,7 @@ public class GetInspectAccessEndPointScriptApi extends PrivateApiComponentBase { public Object myDoService(JSONObject paramObj) throws Exception { Long resourceId = paramObj.getLong("resourceId"); IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - if (resourceCrossoverMapper.checkResourceIsExists(resourceId) == 0) { + if (resourceCrossoverMapper.getResourceIdByResourceId(resourceId) == null) { throw new ResourceNotFoundException(resourceId); } return inspectMapper.getResourceScriptByResourceId(resourceId); diff --git a/src/main/java/neatlogic/module/inspect/api/report/ListInspectAppEnvApi.java b/src/main/java/neatlogic/module/inspect/api/report/ListInspectAppEnvApi.java index d508063a0a69d82f3ffff64f3cadde0150517ecc..0efd7b80b0b23b4f3f6b683a5de7174bf7a916ed 100644 --- a/src/main/java/neatlogic/module/inspect/api/report/ListInspectAppEnvApi.java +++ b/src/main/java/neatlogic/module/inspect/api/report/ListInspectAppEnvApi.java @@ -16,11 +16,10 @@ package neatlogic.module.inspect.api.report; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.auth.core.AuthAction; -import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; import neatlogic.framework.cmdb.dto.resourcecenter.AppEnvVo; -import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.IResourceCenterDataSource; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.ResourceCenterDataSourceFactory; import neatlogic.framework.common.constvalue.ApiParamType; -import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.inspect.auth.INSPECT_BASE; import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; @@ -61,8 +60,8 @@ public class ListInspectAppEnvApi extends PrivateApiComponentBase { @Description(desc = "nmiar.listinspectappenvapi.getname") @Override public Object myDoService(JSONObject paramObj) throws Exception { - ResourceSearchVo searchVo = paramObj.toJavaObject(ResourceSearchVo.class); - IResourceCenterResourceCrossoverService resourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); - return resourceCrossoverService.getAppEnvList(searchVo); + Long appSystemId = paramObj.getLong("appSystemId"); + IResourceCenterDataSource resourceCenterDataSource = ResourceCenterDataSourceFactory.getResourceCenterDataSource(); + return resourceCenterDataSource.getAppEnvListByAppSystemId(appSystemId); } } diff --git a/src/main/java/neatlogic/module/inspect/api/report/InspectAppModuleReportApi.java b/src/main/java/neatlogic/module/inspect/api/report/ListInspectAppResourceApi.java similarity index 44% rename from src/main/java/neatlogic/module/inspect/api/report/InspectAppModuleReportApi.java rename to src/main/java/neatlogic/module/inspect/api/report/ListInspectAppResourceApi.java index edb5060d7c8bfa9fcc7150e4ec1a2726a3e8d692..4ffb23fb817ed46bdb3038bcc24c27d168babb41 100644 --- a/src/main/java/neatlogic/module/inspect/api/report/InspectAppModuleReportApi.java +++ b/src/main/java/neatlogic/module/inspect/api/report/ListInspectAppResourceApi.java @@ -1,20 +1,34 @@ +/*Copyright (C) 2024 深圳极向量科技有限公司 All Rights Reserved. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see .*/ + package neatlogic.module.inspect.api.report; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.auth.core.AuthAction; import neatlogic.framework.autoexec.dao.mapper.AutoexecJobMapper; import neatlogic.framework.autoexec.dto.job.AutoexecJobPhaseNodeVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobResourceInspectVo; -import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; -import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.IResourceCenterDataSource; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.ResourceCenterDataSourceFactory; import neatlogic.framework.common.constvalue.ApiParamType; -import neatlogic.framework.crossover.CrossoverServiceFactory; +import neatlogic.framework.exception.type.ParamNotExistsException; import neatlogic.framework.inspect.auth.INSPECT_BASE; -import neatlogic.framework.inspect.dto.InspectResourceVo; import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; @@ -23,16 +37,11 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; -import java.util.stream.Collectors; -/** - * @author longrf - * @date 2022/2/17 11:28 上午 - */ @Service @AuthAction(action = INSPECT_BASE.class) @OperationType(type = OperationTypeEnum.SEARCH) -public class InspectAppModuleReportApi extends PrivateApiComponentBase { +public class ListInspectAppResourceApi extends PrivateApiComponentBase { @Resource AutoexecJobMapper autoexecJobMapper; @@ -45,7 +54,7 @@ public class InspectAppModuleReportApi extends PrivateApiComponentBase { @Override public String getToken() { - return "inspect/appmodule/report/search"; + return "inspect/app/resource/list"; } @Override @@ -57,11 +66,10 @@ public class InspectAppModuleReportApi extends PrivateApiComponentBase { @Param(name = "appSystemId", type = ApiParamType.LONG, desc = "应用id"), @Param(name = "appModuleId", type = ApiParamType.LONG, desc = "应用模块id"), @Param(name = "envId", type = ApiParamType.LONG, desc = "环境id,envId=-2时表示无配置环境"), - @Param(name = "typeId", type = ApiParamType.LONG, desc = "类型id"), + @Param(name = "viewName", type = ApiParamType.LONG, desc = "视图名"), @Param(name = "inspectStatusList", type = ApiParamType.JSONARRAY, desc = "巡检状态列表"), @Param(name = "currentPage", type = ApiParamType.INTEGER, desc = "当前页"), @Param(name = "pageSize", type = ApiParamType.INTEGER, desc = "每页数据条目"), - @Param(name = "needPage", type = ApiParamType.BOOLEAN, desc = "是否需要分页,默认true") }) @Output({ @Param(name = "tableList", type = ApiParamType.JSONARRAY, desc = "巡检应用报告列表") @@ -69,33 +77,61 @@ public class InspectAppModuleReportApi extends PrivateApiComponentBase { @Description(desc = "获取巡检应用报告列表") @Override public Object myDoService(JSONObject paramObj) throws Exception { - ResourceSearchVo searchVo = paramObj.toJavaObject(ResourceSearchVo.class); JSONObject resourceJson = new JSONObject(); - List resourceVoList = new ArrayList<>(); - IResourceCenterResourceCrossoverService resourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); - JSONArray appModuleResourceList = resourceCrossoverService.getAppModuleResourceList(searchVo); - for (int i = 0; i < appModuleResourceList.size(); i++) { - JSONObject jsonObject = appModuleResourceList.getJSONObject(i); - List voList = JSONObject.parseArray(jsonObject.getJSONArray("tbodyList").toString(),InspectResourceVo.class); - resourceVoList.addAll(voList); - //voList是List,覆盖原来的List, 以便resourceVoList的vo的循环赋值 - jsonObject.put("tbodyList", voList); + JSONArray list = new JSONArray(); + Long appSystemId = paramObj.getLong("appSystemId"); + Long appModuleId = paramObj.getLong("appModuleId"); + if (appSystemId == null && appModuleId == null) { + throw new ParamNotExistsException("应用id(appSystemId)", "应用模块id(appModuleId)"); + } + Long envId = paramObj.getLong("envId"); + Integer currentPage = paramObj.getInteger("currentPage"); + Integer pageSize = paramObj.getInteger("pageSize"); + String viewName = paramObj.getString("viewName"); + List inspectStatusList = new ArrayList<>(); + JSONArray inspectStatusArray = paramObj.getJSONArray("inspectStatusList"); + if (CollectionUtils.isNotEmpty(inspectStatusArray)) { + inspectStatusList = inspectStatusArray.toJavaList(String.class); + } + IResourceCenterDataSource resourceCenterDataSource = ResourceCenterDataSourceFactory.getResourceCenterDataSource(); + JSONArray tableList = resourceCenterDataSource.getAppResourceList(appSystemId, appModuleId, envId, inspectStatusList, viewName, currentPage, pageSize); + for (int i = 0; i < tableList.size(); i++) { + JSONObject tableObj = tableList.getJSONObject(i); + JSONArray theadList = tableObj.getJSONArray("theadList"); + JSONObject thead = new JSONObject(); + thead.put("key", "taskStatus"); + thead.put("title", "巡检作业状态"); + theadList.add(thead); + JSONArray tbodyList = tableObj.getJSONArray("tbodyList"); + list.addAll(tbodyList); } //补充巡检相关信息 - if (CollectionUtils.isNotEmpty(resourceVoList)) { - List jobResourceInspectVos = autoexecJobMapper.getJobResourceInspectByResourceId(resourceVoList.stream().map(InspectResourceVo::getId).collect(Collectors.toList())); + if (CollectionUtils.isNotEmpty(list)) { + List idList = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + JSONObject tbodyObj = list.getJSONObject(i); + Long id = tbodyObj.getLong("id"); + idList.add(id); + } + List jobResourceInspectVos = autoexecJobMapper.getJobResourceInspectByResourceId(idList); if (CollectionUtils.isNotEmpty(jobResourceInspectVos)) { - for (InspectResourceVo resourceVo : resourceVoList) { - Optional jobResourceInspectVoOptional = jobResourceInspectVos.stream().filter(o -> Objects.equals(o.getResourceId(), resourceVo.getId())).findFirst(); + for (int i = 0; i < list.size(); i++) { + JSONObject tbodyObj = list.getJSONObject(i); + Long id = tbodyObj.getLong("id"); + Optional jobResourceInspectVoOptional = jobResourceInspectVos.stream().filter(o -> Objects.equals(o.getResourceId(), id)).findFirst(); if (jobResourceInspectVoOptional.isPresent()) { AutoexecJobResourceInspectVo jobResourceInspectVo = jobResourceInspectVoOptional.get(); AutoexecJobPhaseNodeVo jobPhaseNodeVo = autoexecJobMapper.getJobPhaseNodeInfoByJobPhaseIdAndResourceId(jobResourceInspectVo.getPhaseId(), jobResourceInspectVo.getResourceId()); - resourceVo.setJobPhaseNodeVo(jobPhaseNodeVo); + tbodyObj.put("jobPhaseNodeVo", jobPhaseNodeVo); + JSONObject taskStatus = new JSONObject(); + taskStatus.put("value", jobPhaseNodeVo.getStatus()); + taskStatus.put("text", jobPhaseNodeVo.getStatusName()); + tbodyObj.put("taskStatus", taskStatus); } } } } - resourceJson.put("tableList", appModuleResourceList); + resourceJson.put("tableList", tableList); return resourceJson; } diff --git a/src/main/java/neatlogic/module/inspect/api/report/SaveInspectAccessEndPointScriptApi.java b/src/main/java/neatlogic/module/inspect/api/report/SaveInspectAccessEndPointScriptApi.java index 3f4eda167cf202335b3366b4ff4545afafe428b6..88ecbb95086a3029630fe8f368bfb115dac49871 100644 --- a/src/main/java/neatlogic/module/inspect/api/report/SaveInspectAccessEndPointScriptApi.java +++ b/src/main/java/neatlogic/module/inspect/api/report/SaveInspectAccessEndPointScriptApi.java @@ -66,7 +66,7 @@ public class SaveInspectAccessEndPointScriptApi extends PrivateApiComponentBase Long resourceId = paramObj.getLong("resourceId"); JSONObject paramConfig = paramObj.getJSONObject("config"); IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - if (resourceCrossoverMapper.checkResourceIsExists(resourceId) == 0) { + if (resourceCrossoverMapper.getResourceIdByResourceId(resourceId) == null) { throw new ResourceNotFoundException(resourceId); } inspectMapper.deleteResourceScriptByResourceId(resourceId); diff --git a/src/main/java/neatlogic/module/inspect/api/report/SearchInspectAppModuleApi.java b/src/main/java/neatlogic/module/inspect/api/report/SearchInspectAppModuleApi.java index 7747a35b8707aaafacc9ff3b7b1c15436c29d3db..8d5bd0791b4437b7d2f4afea68aef7d833adb9c2 100644 --- a/src/main/java/neatlogic/module/inspect/api/report/SearchInspectAppModuleApi.java +++ b/src/main/java/neatlogic/module/inspect/api/report/SearchInspectAppModuleApi.java @@ -16,12 +16,12 @@ package neatlogic.module.inspect.api.report; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.auth.core.AuthAction; -import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.IResourceCenterDataSource; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.ResourceCenterDataSourceFactory; import neatlogic.framework.common.constvalue.ApiParamType; import neatlogic.framework.common.dto.BasePageVo; -import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.inspect.auth.INSPECT_BASE; import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; @@ -29,6 +29,8 @@ import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; import neatlogic.framework.util.TableResultUtil; import org.springframework.stereotype.Service; +import java.util.List; + /** * @author longrf * @date 2022/10/10 17:01 @@ -68,7 +70,8 @@ public class SearchInspectAppModuleApi extends PrivateApiComponentBase { @Override public Object myDoService(JSONObject paramObj) throws Exception { ResourceSearchVo searchVo = paramObj.toJavaObject(ResourceSearchVo.class); - IResourceCenterResourceCrossoverService resourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); - return TableResultUtil.getResult(resourceCrossoverService.getAppModuleList(searchVo), searchVo); + IResourceCenterDataSource resourceCenterDataSource = ResourceCenterDataSourceFactory.getResourceCenterDataSource(); + List tbodyList = resourceCenterDataSource.getAppModuleList(searchVo); + return TableResultUtil.getResult(tbodyList, searchVo); } } diff --git a/src/main/java/neatlogic/module/inspect/dao/mapper/InspectConfigFileMapper.xml b/src/main/java/neatlogic/module/inspect/dao/mapper/InspectConfigFileMapper.xml index 8bda7b76a9a706fff5966392682f6acc7d238717..799a1df04d57a37c4ecbdc48abe43754593474c8 100644 --- a/src/main/java/neatlogic/module/inspect/dao/mapper/InspectConfigFileMapper.xml +++ b/src/main/java/neatlogic/module/inspect/dao/mapper/InspectConfigFileMapper.xml @@ -433,7 +433,7 @@ SELECT COUNT(1) FROM `inspect_config_file_path` a - LEFT JOIN @{DATA_SCHEMA}.`scence_ipobject_ip_port` b ON b.`id` = a.`resource_id` + LEFT JOIN @{DATA_SCHEMA}.`scence_ipobject_detail` b ON b.`id` = a.`resource_id` AND (a.`path` LIKE CONCAT('%', #{keyword}, '%') @@ -463,7 +463,7 @@ b.`port` AS resourcePort, b.`type_label` AS resourceTypeLabel FROM `inspect_config_file_path` a - JOIN @{DATA_SCHEMA}.`scence_ipobject_ip_port` b ON b.`id` = a.`resource_id` + JOIN @{DATA_SCHEMA}.`scence_ipobject_detail` b ON b.`id` = a.`resource_id` AND (a.`path` LIKE CONCAT('%', #{keyword}, '%') @@ -498,7 +498,7 @@ b.`type_label` AS resourceTypeLabel, c.`id` AS versionId FROM `inspect_config_file_path` a - JOIN @{DATA_SCHEMA}.`scence_ipobject_ip_port` b ON b.`id` = a.`resource_id` + JOIN @{DATA_SCHEMA}.`scence_ipobject_detail` b ON b.`id` = a.`resource_id` JOIN `inspect_config_file_version` c ON c.`path_id` = a.`id` AND c.`file_id` = a.`file_id` WHERE c.`job_id` = #{value} diff --git a/src/main/java/neatlogic/module/inspect/schedule/plugin/InspectAppSystemScheduleJob.java b/src/main/java/neatlogic/module/inspect/schedule/plugin/InspectAppSystemScheduleJob.java index 3868959241303ced2bf74f7a1e93c346787cb376..211e3b92e29381a8c817150b7afa756a545de849 100644 --- a/src/main/java/neatlogic/module/inspect/schedule/plugin/InspectAppSystemScheduleJob.java +++ b/src/main/java/neatlogic/module/inspect/schedule/plugin/InspectAppSystemScheduleJob.java @@ -27,10 +27,11 @@ import neatlogic.framework.autoexec.dto.node.AutoexecNodeVo; import neatlogic.framework.autoexec.job.action.core.AutoexecJobActionHandlerFactory; import neatlogic.framework.autoexec.job.action.core.IAutoexecJobActionHandler; import neatlogic.framework.cmdb.crossover.ICiCrossoverMapper; -import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.ci.CiVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.IResourceCenterDataSource; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.ResourceCenterDataSourceFactory; import neatlogic.framework.common.constvalue.systemuser.SystemUser; import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.dao.mapper.UserMapper; @@ -44,7 +45,6 @@ import neatlogic.framework.inspect.dto.InspectAppSystemScheduleVo; import neatlogic.framework.scheduler.core.JobBase; import neatlogic.framework.scheduler.dto.JobObject; import neatlogic.framework.service.AuthenticationInfoService; -import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.quartz.DisallowConcurrentExecution; import org.quartz.JobExecutionContext; @@ -53,10 +53,7 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; /** * @author laiwt @@ -144,53 +141,27 @@ public class InspectAppSystemScheduleJob extends JobBase { return; } String userUuid = scheduleVo.getFcu(); - List ipObjectResourceTypeIdList = new ArrayList<>(); - List osResourceTypeIdList = new ArrayList<>(); - IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); + Long appSystemId = scheduleVo.getAppSystemId(); + Map> typeId2NodeListMap = new HashMap<>(); ResourceSearchVo searchVo = new ResourceSearchVo(); - searchVo.setAppSystemId(scheduleVo.getAppSystemId()); - Set resourceTypeIdSet = resourceCrossoverMapper.getIpObjectResourceTypeIdListByAppSystemIdAndEnvId(searchVo); - ipObjectResourceTypeIdList.addAll(resourceTypeIdSet); - ipObjectResourceTypeIdList.sort(Long::compare); - if (CollectionUtils.isNotEmpty(resourceTypeIdSet)) { - resourceTypeIdSet = resourceCrossoverMapper.getOsResourceTypeIdListByAppSystemIdAndEnvId(searchVo); - osResourceTypeIdList.addAll(resourceTypeIdSet); - osResourceTypeIdList.sort(Long::compare); - } - for (Long typeId : ipObjectResourceTypeIdList) { - Long combopId = inspectMapper.getCombopIdByCiId(typeId); - if (combopId == null) { - continue; - } - ICiCrossoverMapper ciCrossoverMapper = CrossoverServiceFactory.getApi(ICiCrossoverMapper.class); - CiVo ci = ciCrossoverMapper.getCiById(typeId); - if (ci == null) { - continue; - } - String name = ci.getLabel() + (ci.getName() != null ? "(" + ci.getName() + ")" : StringUtils.EMPTY) + " 巡检"; - List selectNodeList = new ArrayList<>(); - searchVo.setTypeId(typeId); - int rowNum = resourceCrossoverMapper.getIpObjectResourceCountByAppSystemIdAndAppModuleIdAndEnvIdAndTypeId(searchVo); - if (rowNum > 0) { - searchVo.setRowNum(rowNum); - for (int currentPage = 1; currentPage <= searchVo.getPageCount(); currentPage++) { - searchVo.setCurrentPage(currentPage); - List idList = resourceCrossoverMapper.getIpObjectResourceIdListByAppSystemIdAndAppModuleIdAndEnvIdAndTypeId(searchVo); - if (CollectionUtils.isNotEmpty(idList)) { - List resourceList = resourceCrossoverMapper.getResourceByIdList(idList); - for (ResourceVo resourceVo : resourceList) { - selectNodeList.add(new AutoexecNodeVo(resourceVo)); - } - } - } - try { - createAndFireJob(combopId, id, name, userUuid, selectNodeList); - } catch (Exception e) { - logger.error(e.getMessage(), e); + searchVo.setAppSystemId(appSystemId); + IResourceCenterDataSource resourceCenterDataSource = ResourceCenterDataSourceFactory.getResourceCenterDataSource(); + Map> viewName2TypeIdListMap = resourceCenterDataSource.getAppResourceTypeIdListByAppSystemId(appSystemId); + for (Map.Entry> entry : viewName2TypeIdListMap.entrySet()) { + String viewName = entry.getKey(); + searchVo.setViewName(viewName); + List typeIdList = entry.getValue(); + for (Long typeId : typeIdList) { + searchVo.setTypeId(typeId); + List resourceList = resourceCenterDataSource.getAppResourceList(searchVo, false); + for (ResourceVo resourceVo : resourceList) { + typeId2NodeListMap.computeIfAbsent(typeId, key -> new ArrayList<>()).add(new AutoexecNodeVo(resourceVo)); } } } - for (Long typeId : osResourceTypeIdList) { + for (Map.Entry> entry : typeId2NodeListMap.entrySet()) { + Long typeId = entry.getKey(); + List selectNodeList = entry.getValue(); Long combopId = inspectMapper.getCombopIdByCiId(typeId); if (combopId == null) { continue; @@ -201,29 +172,12 @@ public class InspectAppSystemScheduleJob extends JobBase { continue; } String name = ci.getLabel() + (ci.getName() != null ? "(" + ci.getName() + ")" : StringUtils.EMPTY) + " 巡检"; - List selectNodeList = new ArrayList<>(); - searchVo.setTypeId(typeId); - int rowNum = resourceCrossoverMapper.getOsResourceCountByAppSystemIdAndAppModuleIdAndEnvIdAndTypeId(searchVo); - if (rowNum > 0) { - searchVo.setRowNum(rowNum); - for (int currentPage = 1; currentPage <= searchVo.getPageCount(); currentPage++) { - searchVo.setCurrentPage(currentPage); - List idList = resourceCrossoverMapper.getOsResourceIdListByAppSystemIdAndAppModuleIdAndEnvIdAndTypeId(searchVo); - if (CollectionUtils.isNotEmpty(idList)) { - List resourceList = resourceCrossoverMapper.getResourceByIdList(idList); - for (ResourceVo resourceVo : resourceList) { - selectNodeList.add(new AutoexecNodeVo(resourceVo)); - } - } - } - try { - createAndFireJob(combopId, id, name, userUuid, selectNodeList); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } + try { + createAndFireJob(combopId, id, name, userUuid, selectNodeList); + } catch (Exception e) { + logger.error(e.getMessage(), e); } } - } private void createAndFireJob(Long combopId, Long invokeId, String name, String userUuid, List selectNodeList) throws Exception { diff --git a/src/main/java/neatlogic/module/inspect/service/InspectCollectServiceImpl.java b/src/main/java/neatlogic/module/inspect/service/InspectCollectServiceImpl.java index ea8cdec67bca7436c90ca5a906d8225ba55e10d2..81ba88996f1f57f18af668fab9c10e59a725649f 100644 --- a/src/main/java/neatlogic/module/inspect/service/InspectCollectServiceImpl.java +++ b/src/main/java/neatlogic/module/inspect/service/InspectCollectServiceImpl.java @@ -19,12 +19,8 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; -import neatlogic.framework.cmdb.crossover.ICiCrossoverMapper; -import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; -import neatlogic.framework.cmdb.dto.ci.CiVo; -import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; -import neatlogic.framework.cmdb.exception.resourcecenter.ResourceNotFoundException; -import neatlogic.framework.crossover.CrossoverServiceFactory; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.IResourceCenterDataSource; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.ResourceCenterDataSourceFactory; import neatlogic.framework.dao.mapper.UserMapper; import neatlogic.framework.dto.UserVo; import neatlogic.framework.inspect.exception.*; @@ -40,7 +36,6 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; -import java.util.stream.Collectors; /** * @author longrf @@ -196,45 +191,19 @@ public class InspectCollectServiceImpl implements InspectCollectService { @Override public List getCollectionThresholdsAppSystemIdListByResourceId(Long resourceId) { List returnAppSystemIdList = new ArrayList<>(); - IResourceCrossoverMapper iResourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - ResourceVo resourceVo = iResourceCrossoverMapper.getResourceById(resourceId); - if (resourceVo == null) { - throw new ResourceNotFoundException(resourceId); - } - ICiCrossoverMapper iCiCrossoverMapper = CrossoverServiceFactory.getApi(ICiCrossoverMapper.class); - CiVo ciVo = iCiCrossoverMapper.getCiById(resourceVo.getTypeId()); - List parentCiList = iCiCrossoverMapper.getUpwardCiListByLR(ciVo.getLft(), ciVo.getRht()); - if (CollectionUtils.isEmpty(parentCiList)) { - return null; - } - - List parentCiNameList = parentCiList.stream().map(CiVo::getName).collect(Collectors.toList()); MongoCollection collection = mongoTemplate.getCollection("_inspectdef_app"); Document searchDoc = new Document(); - - //只有OS类型的会关联多个应用实例,因此会有多个系统id - if (parentCiNameList.contains("OS")) { - Set resourceAppSystemIdList = iResourceCrossoverMapper.getResourceAppSystemIdListByResourceId(resourceId); - if (CollectionUtils.isNotEmpty(resourceAppSystemIdList)) { - searchDoc.put("appSystemId", new Document().append("$in", resourceAppSystemIdList)); - } - FindIterable collectionList = collection.find(searchDoc); - if (collectionList.first() != null) { - JSONArray defAppArray = collectionList.into(new JSONArray()); - for (Object object : defAppArray) { - JSONObject dbObject = (JSONObject) JSON.toJSON(object); - returnAppSystemIdList.add(dbObject.getLong("appSystemId")); - } - } - } else { - Long resourceAppSystemId = iResourceCrossoverMapper.getAppSystemIdByResourceId(resourceId); - if (resourceAppSystemId != null) { - searchDoc.put("appSystemId", resourceAppSystemId); - } - FindIterable collectionList = collection.find(searchDoc); - if (collectionList.first() != null) { - JSONObject defAppJson = JSONObject.parseObject(Objects.requireNonNull(collectionList.first()).toJson()); - returnAppSystemIdList.add(defAppJson.getLong("appSystemId")); + IResourceCenterDataSource resourceCenterDataSource = ResourceCenterDataSourceFactory.getResourceCenterDataSource(); + List appSystemIdList = resourceCenterDataSource.getAppSystemIdListById(resourceId); + if (CollectionUtils.isNotEmpty(appSystemIdList)) { + searchDoc.put("appSystemId", new Document().append("$in", appSystemIdList)); + } + FindIterable collectionList = collection.find(searchDoc); + if (collectionList.first() != null) { + JSONArray defAppArray = collectionList.into(new JSONArray()); + for (Object object : defAppArray) { + JSONObject dbObject = (JSONObject) JSON.toJSON(object); + returnAppSystemIdList.add(dbObject.getLong("appSystemId")); } } return returnAppSystemIdList; diff --git a/src/main/java/neatlogic/module/inspect/service/InspectReportServiceImpl.java b/src/main/java/neatlogic/module/inspect/service/InspectReportServiceImpl.java index 1c4f3cf69dc8dc15c096b04c98afb176231d7b19..aa51f05c3ca0f419e53ba04cd5dc4bbb3860288f 100644 --- a/src/main/java/neatlogic/module/inspect/service/InspectReportServiceImpl.java +++ b/src/main/java/neatlogic/module/inspect/service/InspectReportServiceImpl.java @@ -23,7 +23,6 @@ import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import neatlogic.framework.cmdb.crossover.ICiCrossoverMapper; import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; -import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.ci.CiVo; import neatlogic.framework.cmdb.dto.resourcecenter.BgVo; import neatlogic.framework.cmdb.dto.resourcecenter.IpVo; @@ -31,6 +30,8 @@ import neatlogic.framework.cmdb.dto.resourcecenter.OwnerVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.sync.CollectionVo; import neatlogic.framework.cmdb.exception.ci.CiNotFoundException; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.IResourceCenterDataSource; +import neatlogic.framework.cmdb.resourcecenter.datasource.core.ResourceCenterDataSourceFactory; import neatlogic.framework.common.constvalue.InspectStatus; import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.inspect.dao.mapper.InspectMapper; @@ -443,19 +444,8 @@ public class InspectReportServiceImpl implements InspectReportService { @Override public Workbook getInspectNewProblemReportWorkbookByAppSystemId(Long appSystemId, Integer isNeedAlertDetail) { - List ipObjectResourceTypeIdList = new ArrayList<>(); - List osResourceTypeIdList = new ArrayList<>(); - IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); ResourceSearchVo searchVo = new ResourceSearchVo(); searchVo.setAppSystemId(appSystemId); - Set resourceTypeIdSet = resourceCrossoverMapper.getIpObjectResourceTypeIdListByAppSystemIdAndEnvId(searchVo); - ipObjectResourceTypeIdList.addAll(resourceTypeIdSet); - ipObjectResourceTypeIdList.sort(Long::compare); - if (CollectionUtils.isNotEmpty(resourceTypeIdSet)) { - resourceTypeIdSet = resourceCrossoverMapper.getOsResourceTypeIdListByAppSystemIdAndEnvId(searchVo); - osResourceTypeIdList.addAll(resourceTypeIdSet); - osResourceTypeIdList.sort(Long::compare); - } List headerList = new ArrayList<>(); List columnList = new ArrayList<>(); @@ -477,34 +467,19 @@ public class InspectReportServiceImpl implements InspectReportService { inspectStatusList.add(InspectStatus.CRITICAL.getValue()); inspectStatusList.add(InspectStatus.FATAL.getValue()); searchVo.setInspectStatusList(inspectStatusList); - searchVo.setPageSize(100); - for (Long resourceTypeId : ipObjectResourceTypeIdList) { - searchVo.setTypeId(resourceTypeId); - int rowNum = resourceCrossoverMapper.getIpObjectResourceCountByAppSystemIdAndAppModuleIdAndEnvIdAndTypeId(searchVo); - if (rowNum > 0) { - searchVo.setRowNum(rowNum); - for (int currentPage = 1; currentPage <= searchVo.getPageCount(); currentPage++) { - searchVo.setCurrentPage(currentPage); - List idList = resourceCrossoverMapper.getIpObjectResourceIdListByAppSystemIdAndAppModuleIdAndEnvIdAndTypeId(searchVo); - if (CollectionUtils.isNotEmpty(idList)) { - List inspectResourceVos = inspectMapper.getInspectResourceListByIdList(idList); - putCommonDataMap(idList, inspectResourceVos, isNeedAlertDetail, nameList, fieldPathTextMap, sheetBuilder); - } - } - } - } - for (Long resourceTypeId : osResourceTypeIdList) { - searchVo.setTypeId(resourceTypeId); - int rowNum = resourceCrossoverMapper.getOsResourceCountByAppSystemIdAndAppModuleIdAndEnvIdAndTypeId(searchVo); - if (rowNum > 0) { - searchVo.setRowNum(rowNum); - for (int currentPage = 1; currentPage <= searchVo.getPageCount(); currentPage++) { - searchVo.setCurrentPage(currentPage); - List idList = resourceCrossoverMapper.getOsResourceIdListByAppSystemIdAndAppModuleIdAndEnvIdAndTypeId(searchVo); - if (CollectionUtils.isNotEmpty(idList)) { - List inspectResourceVos = inspectMapper.getInspectResourceListByIdList(idList); - putCommonDataMap(idList, inspectResourceVos, isNeedAlertDetail, nameList, fieldPathTextMap, sheetBuilder); - } +// searchVo.setPageSize(100); + IResourceCenterDataSource resourceCenterDataSource = ResourceCenterDataSourceFactory.getResourceCenterDataSource(); + Map> viewName2TypeIdListMap = resourceCenterDataSource.getAppResourceTypeIdListByAppSystemId(appSystemId); + for (Map.Entry> entry : viewName2TypeIdListMap.entrySet()) { + String viewName = entry.getKey(); + searchVo.setViewName(viewName); + List typeIdList = entry.getValue(); + for (Long typeId : typeIdList) { + searchVo.setTypeId(typeId); + List idList = resourceCenterDataSource.getAppResourceIdList(searchVo, false); + if (CollectionUtils.isNotEmpty(idList)) { + List inspectResourceVos = inspectMapper.getInspectResourceListByIdList(idList); + putCommonDataMap(idList, inspectResourceVos, isNeedAlertDetail, nameList, fieldPathTextMap, sheetBuilder); } } }