From ce61509ea1eb1516974fe55e23da48832826a33c Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Sat, 6 Sep 2025 17:17:30 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=B0=86=E6=B6=89?= =?UTF-8?q?=E5=8F=8Ascence=5Fipobject=5Fdetail=E8=A7=86=E5=9B=BE=E7=9A=84S?= =?UTF-8?q?QL=E8=AF=AD=E5=8F=A5=E6=94=B9=E6=88=90=E5=8A=A8=E6=80=81sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1469827334504448]将涉及scence_ipobject_detail视图的SQL语句改成动态sql http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1469827334504448 --- .../mapper/resourcecenter/ResourceMapper.java | 26 + .../IResourceCenterResourceService.java | 65 +- .../ResourceCenterResourceServiceImpl.java | 894 +++++++++++++++++- 3 files changed, 980 insertions(+), 5 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.java b/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.java index 9953a999..880611a3 100644 --- a/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.java +++ b/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.java @@ -57,41 +57,55 @@ public interface ResourceMapper extends IResourceCrossoverMapper { int getAllResourceCount(ResourceSearchVo searchVo); + @Deprecated int getResourceCountByDynamicCondition(@Param("searchVo") ResourceSearchVo searchVo, @Param("conditionSql") String conditionSql); @Deprecated List getResourceIdList(ResourceSearchVo searchVo); + @Deprecated List getResourceIdListByDynamicCondition(@Param("searchVo") ResourceSearchVo searchVo, @Param("conditionSql") String conditionSql); @Deprecated List getResourceListByIdList(List idList); + @Deprecated int getAppResourceCount(ResourceSearchVo searchVo); + @Deprecated List getAppResourceIdList(ResourceSearchVo searchVo); + @Deprecated List getAppResourceListByIdList(ResourceSearchVo searchVo); List getAppInstanceResourceListByIdListSimple(List idList); + @Deprecated Long getResourceIdByIpAndPortAndName(ResourceSearchVo searchVo); + @Deprecated List getResourceIdListByIpAndPortAndName(ResourceSearchVo searchVo); + @Deprecated List getResourceListByIpAndPortAndName(ResourceSearchVo searchVo); // Long getResourceIdByIpAndPortAndNameWithFilter(ResourceSearchVo searchVo); + @Deprecated List getResourceListByIpAndPortAndNameWithFilter(ResourceSearchVo searchVo); + @Deprecated List getResourceByIdList(List idList); + @Deprecated List getAuthResourceList(ResourceSearchVo searchVo); + @Deprecated ResourceVo getResourceById(Long id); + @Deprecated Long getResourceIdByResourceId(Long id); + @Deprecated List checkResourceIdListIsExists(List idList); List getHasModuleAppSystemIdListByAppSystemIdList(@Param("appSystemIdList") List appSystemIdList); @@ -114,6 +128,7 @@ public interface ResourceMapper extends IResourceCrossoverMapper { // Set getResourceTypeIdListByAppSystemIdAndModuleIdAndEnvIdAndInspectStatusList(ResourceSearchVo searchVo); + @Deprecated List getResourceIdListByAppSystemIdAndModuleIdAndEnvId(ResourceVo resourceVo); /** @@ -123,10 +138,13 @@ public interface ResourceMapper extends IResourceCrossoverMapper { * @param ipList * @return */ + @Deprecated List getResourceListByTypeIdListAndIpList(@Param("typeIdList") List typeIdList, @Param("ipList") List ipList); + @Deprecated ResourceVo getResourceByIpAndPortAndNameAndTypeName(@Param("ip") String ip, @Param("port") Integer port, @Param("name") String nodeName, @Param("typeName") String nodeType); + @Deprecated ResourceVo getResourceByIpAndPort(@Param("ip") String ip, @Param("port") Integer port); ResourceVo getOSByIp(String ip); @@ -147,8 +165,10 @@ public interface ResourceMapper extends IResourceCrossoverMapper { List getAllAppEnv(); + @Deprecated List searchAccountComponent(AccountComponentVo accountComponentVo); + @Deprecated Integer searchAccountComponentCount(AccountComponentVo accountComponentVo); int searchAppEnvCount(BasePageVo searchVo); @@ -191,16 +211,21 @@ public interface ResourceMapper extends IResourceCrossoverMapper { List getAppSystemListByKeyword(BasePageVo searchVo); + @Deprecated List getAppEnvListByViewNameAndAppSystemIdAndAppModuleIdAndInspectStatusList(@Param("viewName") String viewName, @Param("appSystemId") Long appSystemId, @Param("appModuleId") Long appModuleId, @Param("inspectStatusList") List inspectStatusList); + @Deprecated List getAppEnvListByAppSystemIdAndAppModuleId(@Param("appSystemId") Long appSystemId, @Param("appModuleId") Long appModuleId); + @Deprecated List> getAppEnvCountMapByAppSystemIdGroupByAppModuleId(Long appSystemId); List getOsResourceListByResourceIdList(List resourceIdList); + @Deprecated List getResourceTypeIdListByAuth(ResourceSearchVo searchVo); + @Deprecated List getAppResourceTypeIdListByViewNameAndAppSystemId( @Param("viewName") String viewName, @Param("appSystemId") Long appSystemId, @@ -209,5 +234,6 @@ public interface ResourceMapper extends IResourceCrossoverMapper { @Param("inspectStatusList") List inspectStatusList ); + @Deprecated List getAppSystemIdListById(@Param("viewName") String viewName, @Param("id") Long id); } diff --git a/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/IResourceCenterResourceService.java b/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/IResourceCenterResourceService.java index 04f4440d..56ab8ab0 100644 --- a/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/IResourceCenterResourceService.java +++ b/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/IResourceCenterResourceService.java @@ -16,9 +16,7 @@ along with this program. If not, see .*/ package neatlogic.module.cmdb.service.resourcecenter.resource; import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.cmdb.dto.resourcecenter.AccountVo; -import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; -import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; +import neatlogic.framework.cmdb.dto.resourcecenter.*; import neatlogic.framework.cmdb.dto.tag.TagVo; import java.util.List; @@ -104,4 +102,65 @@ public interface IResourceCenterResourceService { List getResourceIdList(ResourceSearchVo searchVo); List getResourceListByIdList(List idList); + + List getResourceListByIdList(List idList, List selectFieldNameList); + + int getResourceCountByNameKeyword(ResourceSearchVo searchVo); + + int getResourceCountByIpKeyword(ResourceSearchVo searchVo); + + int getAppResourceCount(ResourceSearchVo searchVo); + + List getAppResourceIdList(ResourceSearchVo searchVo); + + List getAppResourceListByIdList(ResourceSearchVo searchVo); + + Long getResourceIdByIpAndPortAndName(ResourceSearchVo searchVo); + + List getResourceIdListByIpAndPortAndName(ResourceSearchVo searchVo); + + List getResourceListByIpAndPortAndName(ResourceSearchVo searchVo); + + List getResourceListByIpAndPortAndNameWithFilter(ResourceSearchVo searchVo); + + List getResourceByIdList(List idList); + + List getAuthResourceList(ResourceSearchVo searchVo); + + ResourceVo getResourceById(Long id); + + Long getResourceIdByResourceId(Long id); + + List checkResourceIdListIsExists(List idList); + + List getResourceIdListByAppSystemIdAndModuleIdAndEnvId(ResourceVo resourceVo); + + List getResourceListByTypeIdListAndIpList(List typeIdList, List ipList); + + ResourceVo getResourceByIpAndPortAndNameAndTypeName(String ip, Integer port, String name, String typeName); + + ResourceVo getResourceByIpAndPort(String ip, Integer port); + + List searchAccountComponent(AccountComponentVo accountComponentVo); + + int searchAccountComponentCount(AccountComponentVo accountComponentVo); + + List getAppEnvListByViewNameAndAppSystemIdAndAppModuleIdAndInspectStatusList(String viewName, Long appSystemId, Long appModuleId, List inspectStatusList); + + List getAppEnvListByAppSystemIdAndAppModuleId(Long appSystemId, Long appModuleId); + + List> getAppEnvCountMapByAppSystemIdGroupByAppModuleId(Long appSystemId); + + List getResourceTypeIdListByAuth(ResourceSearchVo searchVo); + + List getAppResourceTypeIdListByViewNameAndAppSystemId( + String viewName, + Long appSystemId, + Long appModuleId, + Long envId, + List inspectStatusList + ); + + List getAppSystemIdListById(String viewName, Long id); + } diff --git a/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceCenterResourceServiceImpl.java b/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceCenterResourceServiceImpl.java index d712b52e..dc8c757a 100644 --- a/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceCenterResourceServiceImpl.java +++ b/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceCenterResourceServiceImpl.java @@ -16,6 +16,7 @@ along with this program. If not, see .*/ package neatlogic.module.cmdb.service.resourcecenter.resource; import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; import neatlogic.framework.asynchronization.threadlocal.UserContext; import neatlogic.framework.auth.core.AuthActionChecker; import neatlogic.framework.cmdb.auth.label.CIENTITY_MODIFY; @@ -679,6 +680,811 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return new ArrayList<>(); } + @Override + public List getResourceListByIdList(List idList, List selectFieldNameList) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newResourceList = new ArrayList<>(); + List oldResourceList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceListSql(idList, selectFieldNameList); + newResourceList = resourceMapper.getResourceListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceList = resourceMapper.getResourceListByIdList(idList); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + checkResourceListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceList; + } + return new ArrayList<>(); + } + + @Override + public int getResourceCountByNameKeyword(ResourceSearchVo searchVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + int newCount = 0; + int oldCount = 0; + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceCountByNameKeywordSql(searchVo); + newCount = resourceMapper.getCountBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldCount = resourceMapper.getResourceCountByNameKeyword(searchVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(oldCount, newCount)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("newCount", newCount); + resultObj.put("oldCount", oldCount); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newCount; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldCount; + } + return 0; + } + + @Override + public int getResourceCountByIpKeyword(ResourceSearchVo searchVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + int newCount = 0; + int oldCount = 0; + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceCountByIpKeywordSql(searchVo); + newCount = resourceMapper.getCountBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldCount = resourceMapper.getResourceCountByIpKeyword(searchVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(oldCount, newCount)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("newCount", newCount); + resultObj.put("oldCount", oldCount); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newCount; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldCount; + } + return 0; + } + + @Override + public int getAppResourceCount(ResourceSearchVo searchVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + int newCount = 0; + int oldCount = 0; + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetAppResourceCountSql(searchVo); + newCount = resourceMapper.getCountBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldCount = resourceMapper.getAppResourceCount(searchVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(oldCount, newCount)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("newCount", newCount); + resultObj.put("oldCount", oldCount); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newCount; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldCount; + } + return 0; + } + + @Override + public List getAppResourceIdList(ResourceSearchVo searchVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newIdList = new ArrayList<>(); + List oldIdList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetAppResourceIdListSql(searchVo); + newIdList = resourceMapper.getIdListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldIdList = resourceMapper.getAppResourceIdList(searchVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(oldIdList, newIdList)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("idList", newIdList); + resultObj.put("oldIdList", oldIdList); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newIdList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldIdList; + } + return new ArrayList<>(); + } + + @Override + public List getAppResourceListByIdList(ResourceSearchVo searchVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newResourceList = new ArrayList<>(); + List oldResourceList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetAppResourceListByIdListSql(searchVo); + newResourceList = resourceMapper.getResourceListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceList = resourceMapper.getAppResourceListByIdList(searchVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + checkResourceListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceList; + } + return new ArrayList<>(); + } + + @Override + public Long getResourceIdByIpAndPortAndName(ResourceSearchVo searchVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + Long newId = null; + Long oldId = null; + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceIdByIpAndPortAndNameSql(searchVo); + newId = resourceMapper.getIdBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldId = resourceMapper.getResourceIdByIpAndPortAndName(searchVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(newId, oldId)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("newId", newId); + resultObj.put("oldId", oldId); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newId; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldId; + } + return null; + } + + @Override + public List getResourceIdListByIpAndPortAndName(ResourceSearchVo searchVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newIdList = new ArrayList<>(); + List oldIdList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceIdListByIpAndPortAndNameSql(searchVo); + newIdList = resourceMapper.getIdListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldIdList = resourceMapper.getResourceIdListByIpAndPortAndName(searchVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(oldIdList, newIdList)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("idList", newIdList); + resultObj.put("oldIdList", oldIdList); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newIdList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldIdList; + } + return new ArrayList<>(); + } + + @Override + public List getResourceListByIpAndPortAndName(ResourceSearchVo searchVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newResourceList = new ArrayList<>(); + List oldResourceList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceListByIpAndPortAndNameSql(searchVo); + newResourceList = resourceMapper.getResourceSimpleListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceList = resourceMapper.getResourceListByIpAndPortAndName(searchVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + checkResourceListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceList; + } + return new ArrayList<>(); + } + + @Override + public List getResourceListByIpAndPortAndNameWithFilter(ResourceSearchVo searchVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newResourceList = new ArrayList<>(); + List oldResourceList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceListByIpAndPortAndNameWithFilterSql(searchVo); + newResourceList = resourceMapper.getResourceSimpleListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceList = resourceMapper.getResourceListByIpAndPortAndNameWithFilter(searchVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + checkResourceListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceList; + } + return new ArrayList<>(); + } + + @Override + public List getResourceByIdList(List idList) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newResourceList = new ArrayList<>(); + List oldResourceList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceByIdListSql(idList); + newResourceList = resourceMapper.getResourceListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceList = resourceMapper.getResourceByIdList(idList); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + checkResourceListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceList; + } + return new ArrayList<>(); + } + + @Override + public List getAuthResourceList(ResourceSearchVo searchVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newResourceList = new ArrayList<>(); + List oldResourceList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetAuthResourceListSql(searchVo); + newResourceList = resourceMapper.getResourceListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceList = resourceMapper.getAuthResourceList(searchVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + checkResourceListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceList; + } + return new ArrayList<>(); + } + + @Override + public ResourceVo getResourceById(Long id) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + ResourceVo newResourceVo = null; + ResourceVo oldResourceVo = null; + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceByIdSql(id); + newResourceVo = resourceMapper.getResourceBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceVo = resourceMapper.getResourceById(id); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + List newResourceList = new ArrayList<>(); + if (newResourceVo != null) { + newResourceList.add(newResourceVo); + } + List oldResourceList = new ArrayList<>(); + if (oldResourceVo != null) { + oldResourceList.add(oldResourceVo); + } + checkResourceListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceVo; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceVo; + } + return null; + } + + @Override + public Long getResourceIdByResourceId(Long id) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + Long newId = null; + Long oldId = null; + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceIdByResourceIdSql(id); + newId = resourceMapper.getIdBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldId = resourceMapper.getResourceIdByResourceId(id); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(newId, oldId)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("newId", newId); + resultObj.put("oldId", oldId); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newId; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldId; + } + return null; + } + + @Override + public List checkResourceIdListIsExists(List idList) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newIdList = new ArrayList<>(); + List oldIdList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildCheckResourceIdListIsExistsSql(idList); + newIdList = resourceMapper.getIdListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldIdList = resourceMapper.checkResourceIdListIsExists(idList); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(oldIdList, newIdList)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("idList", newIdList); + resultObj.put("oldIdList", oldIdList); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newIdList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldIdList; + } + return new ArrayList<>(); + } + + @Override + public List getResourceIdListByAppSystemIdAndModuleIdAndEnvId(ResourceVo resourceVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newIdList = new ArrayList<>(); + List oldIdList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceIdListByAppSystemIdAndModuleIdAndEnvIdSql(resourceVo); + newIdList = resourceMapper.getIdListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldIdList = resourceMapper.getResourceIdListByAppSystemIdAndModuleIdAndEnvId(resourceVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(oldIdList, newIdList)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("idList", newIdList); + resultObj.put("oldIdList", oldIdList); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newIdList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldIdList; + } + return new ArrayList<>(); + } + + @Override + public List getResourceListByTypeIdListAndIpList(List typeIdList, List ipList) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newResourceList = new ArrayList<>(); + List oldResourceList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceListByTypeIdListAndIpListSql(typeIdList, ipList); + newResourceList = resourceMapper.getResourceSimpleListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceList = resourceMapper.getResourceListByTypeIdListAndIpList(typeIdList, ipList); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + checkResourceListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceList; + } + return new ArrayList<>(); + } + + @Override + public ResourceVo getResourceByIpAndPortAndNameAndTypeName(String ip, Integer port, String name, String typeName) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + ResourceVo newResourceVo = null; + ResourceVo oldResourceVo = null; + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceByIpAndPortAndNameAndTypeNameSql(ip, port, name, typeName); + newResourceVo = resourceMapper.getResourceSimpleBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceVo = resourceMapper.getResourceByIpAndPortAndNameAndTypeName(ip, port, name, typeName); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + List newResourceList = new ArrayList<>(); + if (newResourceVo != null) { + newResourceList.add(newResourceVo); + } + List oldResourceList = new ArrayList<>(); + if (oldResourceVo != null) { + oldResourceList.add(oldResourceVo); + } + checkResourceListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceVo; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceVo; + } + return null; + } + + @Override + public ResourceVo getResourceByIpAndPort(String ip, Integer port) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + ResourceVo newResourceVo = null; + ResourceVo oldResourceVo = null; + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetResourceByIpAndPortSql(ip, port); + newResourceVo = resourceMapper.getResourceSimpleBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceVo = resourceMapper.getResourceByIpAndPort(ip, port); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + List newResourceList = new ArrayList<>(); + if (newResourceVo != null) { + newResourceList.add(newResourceVo); + } + List oldResourceList = new ArrayList<>(); + if (oldResourceVo != null) { + oldResourceList.add(oldResourceVo); + } + checkResourceListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceVo; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceVo; + } + return null; + } + + @Override + public List searchAccountComponent(AccountComponentVo accountComponentVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newResourceList = new ArrayList<>(); + List oldResourceList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildSearchAccountComponentSql(accountComponentVo); + newResourceList = resourceMapper.searchAccountComponentListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceList = resourceMapper.searchAccountComponent(accountComponentVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + newResourceList.sort(Comparator.comparingLong(AccountComponentVo::getId)); + Set idSet = new HashSet<>(); + for (int i = newResourceList.size() - 1; i >= 0; i--) { + AccountComponentVo resourceVo = newResourceList.get(i); + if (idSet.contains(resourceVo.getId())) { + newResourceList.remove(i); + } else { + idSet.add(resourceVo.getId()); + } + } + oldResourceList.sort(Comparator.comparingLong(AccountComponentVo::getId)); + idSet = new HashSet<>(); + for (int i = oldResourceList.size() - 1; i >= 0; i--) { + AccountComponentVo resourceVo = oldResourceList.get(i); + if (idSet.contains(resourceVo.getId())) { + oldResourceList.remove(i); + } else { + idSet.add(resourceVo.getId()); + } + } + checkAccountComponentListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceList; + } + return new ArrayList<>(); + } + + @Override + public int searchAccountComponentCount(AccountComponentVo accountComponentVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + int newCount = 0; + int oldCount = 0; + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildSearchAccountComponentCountSql(accountComponentVo); + newCount = resourceMapper.getCountBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldCount = resourceMapper.searchAccountComponentCount(accountComponentVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(oldCount, newCount)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("newCount", newCount); + resultObj.put("oldCount", oldCount); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newCount; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldCount; + } + return 0; + } + + @Override + public List getAppEnvListByViewNameAndAppSystemIdAndAppModuleIdAndInspectStatusList(String viewName, Long appSystemId, Long appModuleId, List inspectStatusList) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newResourceList = new ArrayList<>(); + List oldResourceList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetAppEnvListByViewNameAndAppSystemIdAndAppModuleIdAndInspectStatusListSql(viewName, appSystemId, appModuleId, inspectStatusList); + newResourceList = resourceMapper.getAppEnvListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceList = resourceMapper.getAppEnvListByViewNameAndAppSystemIdAndAppModuleIdAndInspectStatusList(viewName, appSystemId, appModuleId, inspectStatusList); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + newResourceList.sort(Comparator.comparingLong(AppEnvVo::getId)); + Set idSet = new HashSet<>(); + for (int i = newResourceList.size() - 1; i >= 0; i--) { + AppEnvVo resourceVo = newResourceList.get(i); + if (idSet.contains(resourceVo.getId())) { + newResourceList.remove(i); + } else { + idSet.add(resourceVo.getId()); + } + } + oldResourceList.sort(Comparator.comparingLong(AppEnvVo::getId)); + idSet = new HashSet<>(); + for (int i = oldResourceList.size() - 1; i >= 0; i--) { + AppEnvVo resourceVo = oldResourceList.get(i); + if (idSet.contains(resourceVo.getId())) { + oldResourceList.remove(i); + } else { + idSet.add(resourceVo.getId()); + } + } + checkAppEnvListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceList; + } + return new ArrayList<>(); + } + + @Override + public List getAppEnvListByAppSystemIdAndAppModuleId(Long appSystemId, Long appModuleId) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newResourceList = new ArrayList<>(); + List oldResourceList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetAppEnvListByAppSystemIdAndAppModuleIdSql(appSystemId, appModuleId); + newResourceList = resourceMapper.getAppEnvListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceList = resourceMapper.getAppEnvListByAppSystemIdAndAppModuleId(appSystemId, appModuleId); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + newResourceList.sort(Comparator.comparingLong(AppEnvVo::getId)); + Set idSet = new HashSet<>(); + for (int i = newResourceList.size() - 1; i >= 0; i--) { + AppEnvVo resourceVo = newResourceList.get(i); + if (idSet.contains(resourceVo.getId())) { + newResourceList.remove(i); + } else { + idSet.add(resourceVo.getId()); + } + } + oldResourceList.sort(Comparator.comparingLong(AppEnvVo::getId)); + idSet = new HashSet<>(); + for (int i = oldResourceList.size() - 1; i >= 0; i--) { + AppEnvVo resourceVo = oldResourceList.get(i); + if (idSet.contains(resourceVo.getId())) { + oldResourceList.remove(i); + } else { + idSet.add(resourceVo.getId()); + } + } + checkAppEnvListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newResourceList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceList; + } + return new ArrayList<>(); + } + + @Override + public List> getAppEnvCountMapByAppSystemIdGroupByAppModuleId(Long appSystemId) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List> newResourceList = new ArrayList<>(); + List> oldResourceList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(appSystemId); + newResourceList = resourceMapper.getMapListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldResourceList = resourceMapper.getAppEnvCountMapByAppSystemIdGroupByAppModuleId(appSystemId); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + checkMapListIsEquals(newResourceList, oldResourceList); + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + List> resourceList = new ArrayList<>(); + for (Map map : newResourceList) { + Map resource = new HashMap<>(); + for (Map.Entry entry : map.entrySet()) { + resource.put(entry.getKey(), (Long) entry.getValue()); + } + resourceList.add(resource); + } + return resourceList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldResourceList; + } + return new ArrayList<>(); + } + + @Override + public List getResourceTypeIdListByAuth(ResourceSearchVo searchVo) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newIdList = new ArrayList<>(); + List oldIdList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String getResourceIdListSql = resourceBuildSqlService.buildGetResourceTypeIdListByAuthSql(searchVo); + newIdList = resourceMapper.getIdListBySql(getResourceIdListSql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldIdList = resourceMapper.getResourceTypeIdListByAuth(searchVo); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(oldIdList, newIdList)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("idList", newIdList); + resultObj.put("oldIdList", oldIdList); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newIdList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldIdList; + } + return new ArrayList<>(); + } + + @Override + public List getAppResourceTypeIdListByViewNameAndAppSystemId(String viewName, Long appSystemId, Long appModuleId, Long envId, List inspectStatusList) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newIdList = new ArrayList<>(); + List oldIdList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetAppResourceTypeIdListByViewNameAndAppSystemIdSql(viewName, appSystemId, appModuleId, envId, inspectStatusList); + newIdList = resourceMapper.getIdListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldIdList = resourceMapper.getAppResourceTypeIdListByViewNameAndAppSystemId(viewName, appSystemId, appModuleId, envId, inspectStatusList); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(oldIdList, newIdList)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("idList", newIdList); + resultObj.put("oldIdList", oldIdList); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newIdList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldIdList; + } + return new ArrayList<>(); + } + + @Override + public List getAppSystemIdListById(String viewName, Long id) { + String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); + String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); + List newIdList = new ArrayList<>(); + List oldIdList = new ArrayList<>(); + if (Objects.equals(mode, JSQLPARSER_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + String sql = resourceBuildSqlService.buildGetAppSystemIdListByIdSql(viewName, id); + newIdList = resourceMapper.getIdListBySql(sql); + } + if (Objects.equals(mode, MYBATIS_MODE) || Objects.equals(enable, COMPARISON_ENABLED)) { + oldIdList = resourceMapper.getAppSystemIdListById(viewName, id); + } + if (Objects.equals(enable, COMPARISON_ENABLED)) { + if (!Objects.equals(oldIdList, newIdList)) { + JSONObject resultObj = new JSONObject(); + resultObj.put("idList", newIdList); + resultObj.put("oldIdList", oldIdList); + logger.error("资产清单新旧SQL获取结果不一致:{}", resultObj); + } + } + if (Objects.equals(mode, JSQLPARSER_MODE)) { + return newIdList; + } else if (Objects.equals(mode, MYBATIS_MODE)) { + return oldIdList; + } + return new ArrayList<>(); + } + // public Object example() { // String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); // String mode = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_SQL_MODE); @@ -713,8 +1519,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc for (int i = 0; i < resourceList.size(); i++) { ResourceVo resourceVo = resourceList.get(i); ResourceVo oldResourceVo = oldResourceList.get(i); - String resourceString = JSONObject.toJSONString(resourceVo); - String oldResourceString = JSONObject.toJSONString(oldResourceVo); + String resourceString = JSONObject.toJSONString(resourceVo, SerializerFeature.MapSortField); + String oldResourceString = JSONObject.toJSONString(oldResourceVo, SerializerFeature.MapSortField); if (!Objects.equals(resourceString, oldResourceString)) { JSONObject errorObj = new JSONObject(); errorObj.put("index", i); @@ -727,6 +1533,90 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return flag; } + private boolean checkAccountComponentListIsEquals(List resourceList, List oldResourceList) { + if (oldResourceList.size() != resourceList.size()) { + JSONObject errorObj = new JSONObject(); + errorObj.put("resourceList.size()", resourceList.size()); + errorObj.put("oldResourceList.size()", oldResourceList.size()); + logger.error("资产清单新旧SQL获取tbodyList结果不一致:{}", errorObj); + return false; + } + boolean flag = true; + resourceList.sort(Comparator.comparing(AccountComponentVo::getId)); + oldResourceList.sort(Comparator.comparing(AccountComponentVo::getId)); + for (int i = 0; i < resourceList.size(); i++) { + AccountComponentVo resourceVo = resourceList.get(i); + AccountComponentVo oldResourceVo = oldResourceList.get(i); + String resourceString = JSONObject.toJSONString(resourceVo, SerializerFeature.MapSortField); + String oldResourceString = JSONObject.toJSONString(oldResourceVo, SerializerFeature.MapSortField); + if (!Objects.equals(resourceString, oldResourceString)) { + JSONObject errorObj = new JSONObject(); + errorObj.put("index", i); + errorObj.put("resourceVo", resourceVo); + errorObj.put("oldResourceVo", oldResourceVo); + logger.error("资产清单新旧SQL获取tbodyObj结果不一致:{}", errorObj); + flag = false; + } + } + return flag; + } + + private boolean checkAppEnvListIsEquals(List resourceList, List oldResourceList) { + if (oldResourceList.size() != resourceList.size()) { + JSONObject errorObj = new JSONObject(); + errorObj.put("resourceList.size()", resourceList.size()); + errorObj.put("oldResourceList.size()", oldResourceList.size()); + logger.error("资产清单新旧SQL获取tbodyList结果不一致:{}", errorObj); + return false; + } + boolean flag = true; + resourceList.sort(Comparator.comparing(AppEnvVo::getId)); + oldResourceList.sort(Comparator.comparing(AppEnvVo::getId)); + for (int i = 0; i < resourceList.size(); i++) { + AppEnvVo resourceVo = resourceList.get(i); + AppEnvVo oldResourceVo = oldResourceList.get(i); + String resourceString = JSONObject.toJSONString(resourceVo, SerializerFeature.MapSortField); + String oldResourceString = JSONObject.toJSONString(oldResourceVo, SerializerFeature.MapSortField); + if (!Objects.equals(resourceString, oldResourceString)) { + JSONObject errorObj = new JSONObject(); + errorObj.put("index", i); + errorObj.put("resourceVo", resourceVo); + errorObj.put("oldResourceVo", oldResourceVo); + logger.error("资产清单新旧SQL获取tbodyObj结果不一致:{}", errorObj); + flag = false; + } + } + return flag; + } + + private boolean checkMapListIsEquals(List> resourceList, List> oldResourceList) { + if (oldResourceList.size() != resourceList.size()) { + JSONObject errorObj = new JSONObject(); + errorObj.put("resourceList.size()", resourceList.size()); + errorObj.put("oldResourceList.size()", oldResourceList.size()); + logger.error("资产清单新旧SQL获取tbodyList结果不一致:{}", errorObj); + return false; + } + boolean flag = true; +// resourceList.sort(Comparator.comparing(AppEnvVo::getId)); +// oldResourceList.sort(Comparator.comparing(AppEnvVo::getId)); + for (int i = 0; i < resourceList.size(); i++) { + Map resourceVo = resourceList.get(i); + Map oldResourceVo = oldResourceList.get(i); + String resourceString = JSONObject.toJSONString(resourceVo, SerializerFeature.MapSortField); + String oldResourceString = JSONObject.toJSONString(oldResourceVo, SerializerFeature.MapSortField); + if (!Objects.equals(resourceString, oldResourceString)) { + JSONObject errorObj = new JSONObject(); + errorObj.put("index", i); + errorObj.put("resourceVo", resourceVo); + errorObj.put("oldResourceVo", oldResourceVo); + logger.error("资产清单新旧SQL获取tbodyObj结果不一致:{}", errorObj); + flag = false; + } + } + return flag; + } + private boolean noFilterCondition(ResourceSearchVo searchVo) { if (StringUtils.isNotBlank(searchVo.getKeyword())) { return false; -- Gitee From 48dfc1f031052b7a5b7702bafe23eecc3fa6c112 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Sat, 6 Sep 2025 17:23:40 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=B0=86=E6=B6=89?= =?UTF-8?q?=E5=8F=8Ascence=5Fipobject=5Fdetail=E8=A7=86=E5=9B=BE=E7=9A=84S?= =?UTF-8?q?QL=E8=AF=AD=E5=8F=A5=E6=94=B9=E6=88=90=E5=8A=A8=E6=80=81sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1469827334504448]将涉及scence_ipobject_detail视图的SQL语句改成动态sql http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1469827334504448 --- .../mapper/resourcecenter/ResourceMapper.java | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.java b/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.java index 880611a3..9953a999 100644 --- a/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.java +++ b/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.java @@ -57,55 +57,41 @@ public interface ResourceMapper extends IResourceCrossoverMapper { int getAllResourceCount(ResourceSearchVo searchVo); - @Deprecated int getResourceCountByDynamicCondition(@Param("searchVo") ResourceSearchVo searchVo, @Param("conditionSql") String conditionSql); @Deprecated List getResourceIdList(ResourceSearchVo searchVo); - @Deprecated List getResourceIdListByDynamicCondition(@Param("searchVo") ResourceSearchVo searchVo, @Param("conditionSql") String conditionSql); @Deprecated List getResourceListByIdList(List idList); - @Deprecated int getAppResourceCount(ResourceSearchVo searchVo); - @Deprecated List getAppResourceIdList(ResourceSearchVo searchVo); - @Deprecated List getAppResourceListByIdList(ResourceSearchVo searchVo); List getAppInstanceResourceListByIdListSimple(List idList); - @Deprecated Long getResourceIdByIpAndPortAndName(ResourceSearchVo searchVo); - @Deprecated List getResourceIdListByIpAndPortAndName(ResourceSearchVo searchVo); - @Deprecated List getResourceListByIpAndPortAndName(ResourceSearchVo searchVo); // Long getResourceIdByIpAndPortAndNameWithFilter(ResourceSearchVo searchVo); - @Deprecated List getResourceListByIpAndPortAndNameWithFilter(ResourceSearchVo searchVo); - @Deprecated List getResourceByIdList(List idList); - @Deprecated List getAuthResourceList(ResourceSearchVo searchVo); - @Deprecated ResourceVo getResourceById(Long id); - @Deprecated Long getResourceIdByResourceId(Long id); - @Deprecated List checkResourceIdListIsExists(List idList); List getHasModuleAppSystemIdListByAppSystemIdList(@Param("appSystemIdList") List appSystemIdList); @@ -128,7 +114,6 @@ public interface ResourceMapper extends IResourceCrossoverMapper { // Set getResourceTypeIdListByAppSystemIdAndModuleIdAndEnvIdAndInspectStatusList(ResourceSearchVo searchVo); - @Deprecated List getResourceIdListByAppSystemIdAndModuleIdAndEnvId(ResourceVo resourceVo); /** @@ -138,13 +123,10 @@ public interface ResourceMapper extends IResourceCrossoverMapper { * @param ipList * @return */ - @Deprecated List getResourceListByTypeIdListAndIpList(@Param("typeIdList") List typeIdList, @Param("ipList") List ipList); - @Deprecated ResourceVo getResourceByIpAndPortAndNameAndTypeName(@Param("ip") String ip, @Param("port") Integer port, @Param("name") String nodeName, @Param("typeName") String nodeType); - @Deprecated ResourceVo getResourceByIpAndPort(@Param("ip") String ip, @Param("port") Integer port); ResourceVo getOSByIp(String ip); @@ -165,10 +147,8 @@ public interface ResourceMapper extends IResourceCrossoverMapper { List getAllAppEnv(); - @Deprecated List searchAccountComponent(AccountComponentVo accountComponentVo); - @Deprecated Integer searchAccountComponentCount(AccountComponentVo accountComponentVo); int searchAppEnvCount(BasePageVo searchVo); @@ -211,21 +191,16 @@ public interface ResourceMapper extends IResourceCrossoverMapper { List getAppSystemListByKeyword(BasePageVo searchVo); - @Deprecated List getAppEnvListByViewNameAndAppSystemIdAndAppModuleIdAndInspectStatusList(@Param("viewName") String viewName, @Param("appSystemId") Long appSystemId, @Param("appModuleId") Long appModuleId, @Param("inspectStatusList") List inspectStatusList); - @Deprecated List getAppEnvListByAppSystemIdAndAppModuleId(@Param("appSystemId") Long appSystemId, @Param("appModuleId") Long appModuleId); - @Deprecated List> getAppEnvCountMapByAppSystemIdGroupByAppModuleId(Long appSystemId); List getOsResourceListByResourceIdList(List resourceIdList); - @Deprecated List getResourceTypeIdListByAuth(ResourceSearchVo searchVo); - @Deprecated List getAppResourceTypeIdListByViewNameAndAppSystemId( @Param("viewName") String viewName, @Param("appSystemId") Long appSystemId, @@ -234,6 +209,5 @@ public interface ResourceMapper extends IResourceCrossoverMapper { @Param("inspectStatusList") List inspectStatusList ); - @Deprecated List getAppSystemIdListById(@Param("viewName") String viewName, @Param("id") Long id); } -- Gitee