From 5b6f8aa27b327f76d0d2200ca837095533f54e96 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Fri, 1 Aug 2025 19:08:43 +0800 Subject: [PATCH 01/15] =?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 | 8 +- .../mapper/resourcecenter/ResourceMapper.xml | 18 +- .../IResourceCenterResourceService.java | 28 + .../ResourceCenterResourceServiceImpl.java | 586 +++++++++++++++++- 4 files changed, 622 insertions(+), 18 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 47e12b72..ae9f1750 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 @@ -29,9 +29,9 @@ import java.util.Map; import java.util.Set; public interface ResourceMapper extends IResourceCrossoverMapper { - + @Deprecated int getResourceCountByNameKeyword(ResourceSearchVo searchVo); - + @Deprecated int getResourceCountByIpKeyword(ResourceSearchVo searchVo); @Deprecated int getResourceCount(ResourceSearchVo searchVo); @@ -53,6 +53,8 @@ public interface ResourceMapper extends IResourceCrossoverMapper { List getResourceListBySql(String sql); + List getResourceSimpleListBySql(String sql); + int getAppResourceCount(ResourceSearchVo searchVo); List getAppResourceIdList(ResourceSearchVo searchVo); @@ -67,7 +69,7 @@ public interface ResourceMapper extends IResourceCrossoverMapper { List getResourceListByIpAndPortAndName(ResourceSearchVo searchVo); - Long getResourceIdByIpAndPortAndNameWithFilter(ResourceSearchVo searchVo); +// Long getResourceIdByIpAndPortAndNameWithFilter(ResourceSearchVo searchVo); List getResourceListByIpAndPortAndNameWithFilter(ResourceSearchVo searchVo); diff --git a/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml b/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml index 0b1f7dbc..3c916fbc 100644 --- a/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml +++ b/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml @@ -160,7 +160,7 @@ along with this program. If not, see .--> - + - + + + - + - + --> - + --> --> - + + + + + + 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 9ef54a50..d36c02c2 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 @@ -174,11 +174,12 @@ public interface IResourceCenterResourceService extends IResourceCenterResourceC String buildGetResourceIdByIpAndPortAndNameSql(ResourceSearchVo searchVo); String buildGetResourceIdListByIpAndPortAndNameSql(ResourceSearchVo searchVo); -// String buildGetResourceListByIpAndPortAndNameSql(); -// String buildGetResourceByIdListSql(); -// String buildGetResourceByIdSql(); -// String buildGetResourceIdByResourceIdSql(); -// String buildCheckResourceIdListIsExistsSql(); + String buildGetResourceListByIpAndPortAndNameSql(ResourceSearchVo searchVo); + String buildGetResourceByIdListSql(List idList); + String buildGetResourceByIdSql(Long id, List selectFieldNameList); + String buildGetResourceByIdSql(Long id); + String buildGetResourceIdByResourceIdSql(Long id); + String buildCheckResourceIdListIsExistsSql(List idList); // String buildGetResourceListByResourceVoListSql(); // String buildGetResourceIdListByAppSystemIdAndModuleIdAndEnvIdSql(); // String buildGetResourceListByTypeIdListAndIpListSql(); 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 46f12d30..f5a853b9 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 @@ -1180,6 +1180,200 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return null; } + @Override + public String buildGetResourceListByIpAndPortAndNameSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + selectItemFieldNameList.add("name"); + selectItemFieldNameList.add("ip"); + selectItemFieldNameList.add("port"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + filterItemFieldNameList.add("port"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + if (Objects.equals(searchVo.getIsHasAuth(), false)) { + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(); + queryCriteriaVo.setIsHasAuth(false); + if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { + queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); + } + SqlVo sqlVo = getSqlVo(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + } + List inputNodeList = searchVo.getInputNodeList(); + if (CollectionUtils.isNotEmpty(inputNodeList)) { + ExpressionVo orExp = null; + for (ResourceVo inputNode : inputNodeList) { + Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + ExpressionVo andExp = $sql.exp(ipColumn.toString(), "=", $sql.value(inputNode.getIp())); + Column portColumn = filterItemFieldName2ColumnMap.get("port"); + if (inputNode.getPort() != null) { + andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "=", inputNode.getPort())); + } else { + andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "is null")); + } + if (StringUtils.isNotBlank(inputNode.getName())) { + Column nameColumn = filterItemFieldName2ColumnMap.get("name"); + andExp = $sql.exp(andExp, "and", $sql.exp(nameColumn.toString(), "=", $sql.value(inputNode.getName()))); + } + andExp = $sql.exp("(", andExp, ")"); + if (orExp == null) { + orExp = andExp; + } else { + orExp = $sql.exp(orExp, "or", andExp); + } + } + orExp = $sql.exp("(", orExp, ")"); + $sql.addWhereExpression(plainSelect, orExp); + } else { + $sql.addWhereExpression(plainSelect, $sql.exp(1, "=", 0)); + } + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceByIdListSql(List idList) { + List fieldNameList = new ArrayList<>(); + fieldNameList.add("id"); + fieldNameList.add("name"); + fieldNameList.add("ip"); + fieldNameList.add("port"); + fieldNameList.add("type_id"); + fieldNameList.add("type_name"); + fieldNameList.add("type_label"); + return buildGetResourceListSql(idList, fieldNameList); + } + + @Override + public String buildGetResourceByIdSql(Long id, List selectFieldNameList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(selectFieldNameList)) { + selectItemFieldNameList.addAll(selectFieldNameList); + } + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column column = filterItemFieldName2ColumnMap.get("id"); + $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "=", id)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceByIdSql(Long id) { + List fieldNameList = new ArrayList<>(); + fieldNameList.add("id"); + fieldNameList.add("name"); + fieldNameList.add("ip"); + fieldNameList.add("port"); + fieldNameList.add("type_id"); + fieldNameList.add("type_name"); + fieldNameList.add("type_label"); + return buildGetResourceByIdSql(id, fieldNameList); + } + + @Override + public String buildGetResourceIdByResourceIdSql(Long id) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column column = filterItemFieldName2ColumnMap.get("id"); + $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "=", id)); + $sql.setLimit(plainSelect, 1); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildCheckResourceIdListIsExistsSql(List idList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column column = filterItemFieldName2ColumnMap.get("id"); + $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "in", idList)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + private ResourceEntityConfigVo getResourceEntityConfigVo(ResourceEntityVo resourceEntityVo) { String viewName = resourceEntityVo.getName(); ResourceEntityConfigVo originalConfig = resourceEntityVo.getConfig(); -- Gitee From 25c220f3081bbc8467d659ee814d911030362a05 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Thu, 7 Aug 2025 19:04:24 +0800 Subject: [PATCH 05/15] =?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 | 10 +- .../mapper/resourcecenter/ResourceMapper.xml | 22 +- .../DefaultResourceCenterDataSourceImpl.java | 2 +- .../IResourceCenterResourceService.java | 15 +- .../ResourceCenterResourceServiceImpl.java | 326 ++++++++++++++++++ 5 files changed, 363 insertions(+), 12 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 40c3e30a..f3e23845 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 @@ -37,6 +37,8 @@ public interface ResourceMapper extends IResourceCrossoverMapper { int getResourceCountBySql(String sql); + int getCountBySql(String sql); + int getAllResourceCount(ResourceSearchVo searchVo); int getResourceCountByDynamicCondition(@Param("searchVo") ResourceSearchVo searchVo, @Param("conditionSql") String conditionSql); @@ -52,6 +54,8 @@ public interface ResourceMapper extends IResourceCrossoverMapper { ResourceVo getResourceBySql(String sql); + ResourceVo getResourceSimpleBySql(String sql); + List getResourceListBySql(String sql); List getResourceSimpleListBySql(String sql); @@ -101,7 +105,7 @@ public interface ResourceMapper extends IResourceCrossoverMapper { List getAppModuleListByAppSystemIdList(ResourceSearchVo searchVo); List getAppModuleListByIdListSimple(@Param("idList") List idList, @Param("needOrder") boolean needOrder); - + // 该SQL语句可以使用 getResourceListByIpAndPortAndName 代替 List getResourceListByResourceVoList(@Param("resourceList") List resourceList,@Param("searchVo") ResourceSearchVo searchVo); // Set getResourceTypeIdListByAppSystemIdAndModuleIdAndEnvIdAndInspectStatusList(ResourceSearchVo searchVo); @@ -141,6 +145,8 @@ public interface ResourceMapper extends IResourceCrossoverMapper { List searchAccountComponent(AccountComponentVo accountComponentVo); + List searchAccountComponentListBySql(String sql); + Integer searchAccountComponentCount(AccountComponentVo accountComponentVo); int searchAppEnvCount(BasePageVo searchVo); @@ -187,6 +193,8 @@ public interface ResourceMapper extends IResourceCrossoverMapper { List getAppEnvListByAppSystemIdAndAppModuleId(@Param("appSystemId") Long appSystemId, @Param("appModuleId") Long appModuleId); + List getAppEnvListBySql(String sql); + List> getAppEnvCountMapByAppSystemIdGroupByAppModuleId(Long appSystemId); List getOsResourceListByResourceIdList(List resourceIdList); diff --git a/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml b/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml index c7007a7b..460b1237 100644 --- a/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml +++ b/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml @@ -304,6 +304,10 @@ along with this program. If not, see .--> ${sql} + + + + @@ -844,7 +852,7 @@ along with this program. If not, see .--> - + + + SELECT - count(DISTINCT a.id) + count(DISTINCT c.resource_id, c.account_id) FROM `cmdb_resourcecenter_resource_account` c JOIN @{DATA_SCHEMA}.`scence_ipobject_detail` a ON a.id = c.resource_id JOIN `cmdb_resourcecenter_account` b ON b.id = c.account_id @@ -1811,6 +1823,10 @@ along with this program. If not, see .--> AND a.`env_id` IS NOT NULL + + + + 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 664d904a..b9f3bab8 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 @@ -189,7 +189,28 @@ public interface IResourceCenterResourceService extends IResourceCenterResourceC String buildSearchAccountComponentSql(AccountComponentVo accountComponentVo); String buildSearchAccountComponentCountSql(AccountComponentVo accountComponentVo); String buildGetAppEnvListByAppSystemIdAndAppModuleIdSql(Long appSystemId, Long appModuleId); -// String buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(); + String buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(Long appSystemId); // String buildGetResourceCountByDynamicConditionSql(); // String buildGetResourceIdListByDynamicConditionSql(); + + // InspectMapper +// String buildgetInspectResourceListByIdListSql(); +// String buildgetInspectResourceCountSql(); +// String buildgetInspectResourceCountByIpKeywordSql(); +// String buildgetInspectResourceCountByNameKeywordSql(); +// String buildgetInspectResourceIdListSql(); +// String buildgetInspectAutoexecJobNodeResourceCountSql(); +// String buildgetInspectAutoexecJobNodeResourceCountByIpKeywordSql(); +// String buildgetInspectAutoexecJobNodeResourceCountByNameKeywordSql(); +// String buildgetInspectAutoexecJobNodeResourceIdListSql(); +// String buildgetInspectResourceListByIdListAndJobIdSql(); + // InspectConfigFileMapper +// String buildgetInspectResourceCountSql(); +// String buildgetInspectResourceIdListSql(); +// String buildgetInspectResourceListByIdListSql(); +// String buildgetInspectConfigFilePathCountSql(); +// String buildgetInspectConfigFilePathIdListSql(); +// String buildgetInspectConfigFilePathListSql(); +// String buildgetInspectConfigFilePathListByJobIdSql(); + } 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 a293d931..03114ae4 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 @@ -1700,6 +1700,53 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return null; } + @Override + public String buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(Long appSystemId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); +// selectItemFieldNameList.add("id"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("app_system_id"); + filterItemFieldNameList.add("app_module_id"); + filterItemFieldNameList.add("env_id"); +// filterItemFieldNameList.add("env_name"); +// filterItemFieldNameList.add("env_seq_no"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } +// $sql.setDistinct(plainSelect, true); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("app_module_id").toString(), "appModuleId"); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("env_id").toString()).withDistinct(true), "count"); +// $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_name").toString(), "name"); +// $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_seq_no").toString(), "seqNo"); + Column appSystemIdColumn = filterItemFieldName2ColumnMap.get("app_system_id"); + $sql.addWhereExpression(plainSelect, $sql.exp(appSystemIdColumn.toString(), "=", appSystemId)); +// Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); +// $sql.addWhereExpression(plainSelect, $sql.exp(appModuleIdColumn.toString(), "=", appModuleId)); + Column envIdColumn = filterItemFieldName2ColumnMap.get("env_id"); + $sql.addWhereExpression(plainSelect, $sql.exp(envIdColumn.toString(), "is not null")); + Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); + $sql.addGroupBy(plainSelect, appModuleIdColumn.toString()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + private ResourceEntityConfigVo getResourceEntityConfigVo(ResourceEntityVo resourceEntityVo) { String viewName = resourceEntityVo.getName(); ResourceEntityConfigVo originalConfig = resourceEntityVo.getConfig(); -- Gitee From e08472e0084d5acdd5b7c4ac7e41a31c89a3f314 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Fri, 8 Aug 2025 18:50:16 +0800 Subject: [PATCH 07/15] =?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 --- .../IResourceCenterResourceService.java | 20 - .../ResourceCenterResourceServiceImpl.java | 567 ++++++++++++++++++ 2 files changed, 567 insertions(+), 20 deletions(-) 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 b9f3bab8..a9647edc 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 @@ -193,24 +193,4 @@ public interface IResourceCenterResourceService extends IResourceCenterResourceC // String buildGetResourceCountByDynamicConditionSql(); // String buildGetResourceIdListByDynamicConditionSql(); - // InspectMapper -// String buildgetInspectResourceListByIdListSql(); -// String buildgetInspectResourceCountSql(); -// String buildgetInspectResourceCountByIpKeywordSql(); -// String buildgetInspectResourceCountByNameKeywordSql(); -// String buildgetInspectResourceIdListSql(); -// String buildgetInspectAutoexecJobNodeResourceCountSql(); -// String buildgetInspectAutoexecJobNodeResourceCountByIpKeywordSql(); -// String buildgetInspectAutoexecJobNodeResourceCountByNameKeywordSql(); -// String buildgetInspectAutoexecJobNodeResourceIdListSql(); -// String buildgetInspectResourceListByIdListAndJobIdSql(); - // InspectConfigFileMapper -// String buildgetInspectResourceCountSql(); -// String buildgetInspectResourceIdListSql(); -// String buildgetInspectResourceListByIdListSql(); -// String buildgetInspectConfigFilePathCountSql(); -// String buildgetInspectConfigFilePathIdListSql(); -// String buildgetInspectConfigFilePathListSql(); -// String buildgetInspectConfigFilePathListByJobIdSql(); - } 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 03114ae4..03eb80d5 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 @@ -1747,6 +1747,207 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return null; } + @Override + public String buildGetInspectResourceListByIdListSql(List idList, List selectFieldNameList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(selectFieldNameList)) { + selectItemFieldNameList.addAll(selectFieldNameList); + } + List filterItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(idList)) { + filterItemFieldNameList.add("id"); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column idColumn = filterItemFieldName2ColumnMap.get("id"); + $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_account", "crra").withOn($sql.exp("crra.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_account", "cra").withOn($sql.exp("cra.id", "=", "crra.account_id"))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_tag", "crrt").withOn($sql.exp("crrt.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp( + $sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), + "and", + $sql.exp("ajpn.resource_id", "=", idColumn.toString()) + ))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_tag", "ct").withOn($sql.exp("ct.id", "=", "crrt.tag_id"))); + $sql.addSelectColumn(plainSelect, "ajpn.id", "inspectJobPhaseNodeId"); + $sql.addSelectColumn(plainSelect, "ajpn.`job_id`", "jobId"); + $sql.addSelectColumn(plainSelect, "ajpn.status", "jobPhaseNodeStatus"); + $sql.addSelectColumn(plainSelect, "ct.name", "tagName"); + $sql.addWhereExpression(plainSelect, $sql.exp(idColumn.toString(), "in", idList)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectResourceListByIdListSql(List idList) { + List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName("scence_ipobject_detail"); + fieldNameList.remove("env_seq_no"); + fieldNameList.remove("vendor_id"); + fieldNameList.remove("vendor_name"); + fieldNameList.remove("vendor_label"); + fieldNameList.remove("datacenter_id"); + fieldNameList.remove("datacenter_name"); + fieldNameList.remove("fcu"); + fieldNameList.remove("fcd"); + fieldNameList.remove("lcu"); + fieldNameList.remove("lcd"); + return buildGetInspectResourceListByIdListSql(idList, fieldNameList); + } + + @Override + public String buildGetInspectResourceCountSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp("(", + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + ")") + ); + } + SqlVo sqlVo = getSqlVo2(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectResourceCountByIpKeywordSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword)); + } + SqlVo sqlVo = getSqlVo2(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectResourceCountByNameKeywordSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND a.`name` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword)); + } + SqlVo sqlVo = getSqlVo2(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + private ResourceEntityConfigVo getResourceEntityConfigVo(ResourceEntityVo resourceEntityVo) { String viewName = resourceEntityVo.getName(); ResourceEntityConfigVo originalConfig = resourceEntityVo.getConfig(); @@ -2176,6 +2377,10 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ private List getFilterItemFieldNameList(ResourceQueryCriteriaVo queryCriteriaVo) { Set filterItemFieldNameSet = new HashSet<>(); + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + filterItemFieldNameSet.add("name"); + filterItemFieldNameSet.add("ip"); + } if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList())) { filterItemFieldNameSet.add("id"); } @@ -3164,6 +3369,368 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return sqlVo; } + private SqlVo getSqlVo2(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + SqlVo sqlVo = new SqlVo(); + List joinList = new ArrayList<>(); + List whereExpressionList = new ArrayList<>(); + /* + + JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) + JOIN fulltextindex_word fw ON ffc.word_id = fw.id + AND (fw.word IN + + #{item} + + ) + + */ +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { +// System.out.println("a"); +// { +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), +// "and", +// $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); +// joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); +// } +// { +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("fw.id", "=", "ffc.word_id"), +// "and", +// $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); +// joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); +// } +// } + /* + + AND + + + a.`name` LIKE #{item} + + + + + a.`ip` LIKE #{item} + + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + String columnName = null; + if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { + System.out.println("b"); + columnName = filterItemFieldName2ColumnMap.get("name").toString(); + } else { + System.out.println("c"); + columnName = filterItemFieldName2ColumnMap.get("ip").toString(); + } + ExpressionVo orExp = null; + for (String item : queryCriteriaVo.getBatchSearchList()) { + if (orExp != null) { + orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); + } else { + orExp = $sql.exp(columnName, "like", $sql.value(item)); + } + } + whereExpressionList.add($sql.exp("(", orExp, ")")); + } + /* + + LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` + LEFT JOIN `cmdb_resourcecenter_account` c ON c.`id` = b.`account_id` + + + + AND c.`protocol_id` IN + + #{protocolId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { + System.out.println("d"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); + whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); + } + /* + + LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` + + + + AND d.`tag_id` IN + + #{tagId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { + System.out.println("e"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); + } + /* + + left join autoexec_job_resource_inspect ajri on ajri.resource_id=a.id + left join autoexec_job_phase_node ajpn on ajpn.job_phase_id =ajri.phase_id AND ajpn.resource_id = a.id + + + + AND a.`inspect_status` IN + + #{inspectStatus} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { + System.out.println("f"); + joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); + whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); + } + /* + + LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id + LEFT JOIN cmdb_group_auth cga ON ccg.group_id = cga.group_id + + + LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('autoexec') + + + LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('readonly','maintain','autoexec') + + + + */ + if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { + joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); + + List strList = new ArrayList<>(); + if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { + System.out.println("g"); + strList.add("autoexec"); + } else { + System.out.println("h"); + strList.add("autoexec"); + strList.add("readonly"); + strList.add("maintain"); + } + ExpressionVo expressionVo = $sql.exp( + $sql.exp("cg.id", "=", "cga.group_id"), + "and", + $sql.exp("cg.type", "in", strList) + ); + joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); + } + /* + + + AND a.`type_id` IN + + #{typeId} + + + + AND ( + + + a.`type_id` IN + + #{authedTypeId} + + + + 1 = 0 + + + or ( + cg.id is not null and + a.`type_id` IN + + #{typeId} + + and + ((cga.auth_type = 'common' AND cga.auth_uuid = 'alluser') + + OR cga.auth_uuid IN ( + #{authenticationInfo.userUuid} + + + #{item} + + + + + #{item} + + + ) + + ) + ) + ) + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { + if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { + System.out.println("i"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { + ExpressionVo orLeftExpressionVo = null; + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { + System.out.println("j"); + orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); + } else { + System.out.println("k"); + orLeftExpressionVo = $sql.exp(1, "=", 0); + } + ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + + ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); + ExpressionVo orRightExpressionVo2 = null; + if (queryCriteriaVo.getAuthenticationInfo() != null) { + System.out.println("l"); + List uuidList = new ArrayList<>(); + if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { + uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { + uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { + uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); + } + if (CollectionUtils.isNotEmpty(uuidList)) { + System.out.println("m"); + orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); + } + } + if (orRightExpressionVo2 != null) { + System.out.println("n"); + orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); + } else { + System.out.println("o"); + orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); + } + ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); + whereExpressionList.add(orExpressionVo); + } + } + /* + + AND a.`state_id` IN + + #{stateId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { + System.out.println("p"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); + } + /* + + AND a.`vendor_id` IN + + #{vendorId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { + System.out.println("q"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); + } + /* + + AND a.`env_id` IN + + #{envId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { + System.out.println("r"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); + } + /* + + AND a.`env_id` is null + + */ +// if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { +// System.out.println("s"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); +// } + /* + + AND a.`app_system_id` IN + + #{appSystemId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { + System.out.println("t"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); + } + /* + + AND a.`app_module_id` IN + + #{appModuleId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { + System.out.println("u"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); + } + /* + + AND a.`id` IN + + #{id} + + + */ +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { +// System.out.println("v"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); +// } + /* + + AND a.`id` IN + + #{id} + + + */ +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { +// System.out.println("w"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); +// } + /* + + AND a.`inspect_status` IN + + #{inspectStatus} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { + System.out.println("x"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); + } + sqlVo.withJoinList(joinList); + sqlVo.withWhereExpressionList(whereExpressionList); + return sqlVo; + } + private List getJoinList(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { List joinList = new ArrayList<>(); /* -- Gitee From 76d050130b3a21a608cc4abbf6f837415c49fe80 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Mon, 11 Aug 2025 17:14:05 +0800 Subject: [PATCH 08/15] =?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 --- .../ResourceCenterResourceServiceImpl.java | 1952 +++++++++++------ 1 file changed, 1334 insertions(+), 618 deletions(-) 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 03eb80d5..fc7772b3 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 @@ -1948,6 +1948,349 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return null; } + @Override + public String buildGetInspectResourceIdListSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp("(", + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + ")") + ); + } + SqlVo sqlVo = getSqlVo2(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { + $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); + } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { + $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); + } + $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectResourceListByIdListAndJobIdSql(List idList, Long jobId) { + List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName("scence_ipobject_detail"); + fieldNameList.remove("env_seq_no"); + fieldNameList.remove("vendor_id"); + fieldNameList.remove("vendor_name"); + fieldNameList.remove("vendor_label"); + fieldNameList.remove("datacenter_id"); + fieldNameList.remove("datacenter_name"); + fieldNameList.remove("fcu"); + fieldNameList.remove("fcd"); + fieldNameList.remove("lcu"); + fieldNameList.remove("lcd"); + + fieldNameList.remove("monitor_status"); + fieldNameList.remove("monitor_time"); + fieldNameList.remove("inspect_status"); + fieldNameList.remove("inspect_time"); + fieldNameList.remove("maintenance_window"); + fieldNameList.remove("description"); + fieldNameList.remove("app_module_id"); + fieldNameList.remove("app_module_name"); + fieldNameList.remove("app_module_abbr_name"); + fieldNameList.remove("app_system_id"); + fieldNameList.remove("app_system_name"); + fieldNameList.remove("app_system_abbr_name"); + fieldNameList.remove("state_label"); + fieldNameList.remove("env_id"); + fieldNameList.remove("env_name"); + return buildGetInspectResourceListByIdListAndJobIdSql(idList, jobId, fieldNameList); + } + + @Override + public String buildGetInspectResourceListByIdListAndJobIdSql(List idList, Long jobId, List selectFieldNameList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(selectFieldNameList)) { + selectItemFieldNameList.addAll(selectFieldNameList); + } + List filterItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(idList)) { + filterItemFieldNameList.add("id"); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column idColumn = filterItemFieldName2ColumnMap.get("id"); + $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_account", "crra").withOn($sql.exp("crra.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_account", "cra").withOn($sql.exp("cra.id", "=", "crra.account_id"))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_tag", "crrt").withOn($sql.exp("crrt.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", idColumn.toString()))); +// $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp( +// $sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), +// "and", +// $sql.exp("ajpn.resource_id", "=", idColumn.toString()) +// ))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_cientity_inspect", "cci").withOn($sql.exp( + $sql.exp("cci.ci_entity_id", "=", idColumn.toString()), + "and", + $sql.exp("cci.job_id", "=", "ajpn.job_id") + ))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_tag", "ct").withOn($sql.exp("ct.id", "=", "crrt.tag_id"))); + $sql.addSelectColumn(plainSelect, "cci.inspect_status"); + $sql.addSelectColumn(plainSelect, "cci.inspect_time"); + $sql.addSelectColumn(plainSelect, "ajpn.id", "inspectJobPhaseNodeId"); + $sql.addSelectColumn(plainSelect, "ajpn.`job_id`", "jobId"); + $sql.addSelectColumn(plainSelect, "ajpn.status", "jobPhaseNodeStatus"); + $sql.addSelectColumn(plainSelect, "ct.id", "tagId"); + $sql.addSelectColumn(plainSelect, "ct.name", "tagName"); + $sql.addSelectColumn(plainSelect, "ct.description", "tagDescription"); + $sql.addWhereExpression(plainSelect, $sql.exp(idColumn.toString(), "in", idList)); + $sql.addWhereExpression(plainSelect, $sql.exp("ajpn.job_id", "=", jobId)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + @Override + public String buildGetInspectAutoexecJobNodeResourceCountSql(ResourceSearchVo searchVo, Long jobId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + queryCriteriaVo.setJobId(jobId); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp("(", + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + ")") + ); + } + SqlVo sqlVo = getSqlVo3(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectAutoexecJobNodeResourceCountByIpKeywordSql(ResourceSearchVo searchVo, Long jobId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + queryCriteriaVo.setJobId(jobId); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword)); + } + SqlVo sqlVo = getSqlVo3(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectAutoexecJobNodeResourceCountByNameKeywordSql(ResourceSearchVo searchVo, Long jobId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + queryCriteriaVo.setJobId(jobId); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND a.`name` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword)); + } + SqlVo sqlVo = getSqlVo3(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectAutoexecJobNodeResourceIdListSql(ResourceSearchVo searchVo, Long jobId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + queryCriteriaVo.setJobId(jobId); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp("(", + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + ")") + ); + } + SqlVo sqlVo = getSqlVo3(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { + $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); + } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { + $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); + } + $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + private ResourceEntityConfigVo getResourceEntityConfigVo(ResourceEntityVo resourceEntityVo) { String viewName = resourceEntityVo.getName(); ResourceEntityConfigVo originalConfig = resourceEntityVo.getConfig(); @@ -2240,207 +2583,768 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc if (StringUtils.isBlank(toAttr)) { throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); } - if (!Objects.equals(toAttr, "id") && !Objects.equals(toAttr, "value") && !Objects.equals(toAttr, "sort")) { - throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); + if (!Objects.equals(toAttr, "id") && !Objects.equals(toAttr, "value") && !Objects.equals(toAttr, "sort")) { + throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); + } + newFieldMappingVo.setFromCi(fromCi); + newFieldMappingVo.setFromCiId(fromCiVo.getId()); + newFieldMappingVo.setFromAttr(fromAttr); + newFieldMappingVo.setToAttr(toAttr); + } else if (Objects.equals(type, "empty")) { + + } else { + throw new ResourceViewFieldMappingException(viewName, field, "type", type); + } + resultList.add(newFieldMappingVo); + } + newConfig.setFieldMappingList(resultList); + return newConfig; + } + + private List getRelLinkListByRelNode(ResourceEntityRelNodeVo relNode) { + List relLinkList = new ArrayList<>(); + if (relNode != null) { + Map> map = new HashMap<>(); + List children = relNode.getChildren(); + if (CollectionUtils.isNotEmpty(children)) { + for (ResourceEntityRelNodeVo child : children) { + addRelLinkListByRelNode(relLinkList, relNode, child, map); + } + } + } + return relLinkList; + } + + private void addRelLinkListByRelNode(List relLinkList, ResourceEntityRelNodeVo leftNode, ResourceEntityRelNodeVo rightNode, Map> map) { + { + ResourceEntityRelLinkVo relLinkVo = new ResourceEntityRelLinkVo(); + { + Map relNodeAliasMap = map.computeIfAbsent(leftNode.getCiName(), key -> new HashMap<>()); + int size = relNodeAliasMap.size(); + String alias = relNodeAliasMap.get(leftNode); + if (alias == null) { + if (size == 0) { + alias = StringUtils.EMPTY; + } else { + alias = "alias_" + (size + 1); + } + relNodeAliasMap.put(leftNode, alias); + } + relLinkVo.setLeftCi(leftNode.getCiName()); + relLinkVo.setLeftCiAlias(alias); + } + { + Map relNodeAliasMap = map.computeIfAbsent(rightNode.getCiName(), key -> new HashMap<>()); + int size = relNodeAliasMap.size(); + String alias = relNodeAliasMap.get(rightNode); + if (alias == null) { + if (size == 0) { + alias = StringUtils.EMPTY; + } else { + alias = "_alias_" + (size + 1); + } + relNodeAliasMap.put(rightNode, alias); + } + relLinkVo.setRightCi(rightNode.getCiName()); + relLinkVo.setRightCiAlias(alias); + relLinkVo.setRightUuid(rightNode.getUuid()); + } + relLinkVo.setDirection(rightNode.getDirection()); + relLinkList.add(relLinkVo); + } + List children = rightNode.getChildren(); + if (CollectionUtils.isNotEmpty(children)) { + for (ResourceEntityRelNodeVo child : children) { + addRelLinkListByRelNode(relLinkList, rightNode, child, map); + } + } + } + + private List getLeftJoinList(ResourceEntityConfigVo config) { + List resultList = new ArrayList<>(); + List relLinkList = config.getRelLinkList(); + if (CollectionUtils.isNotEmpty(relLinkList)) { + for (ResourceEntityRelLinkVo linkVo : relLinkList) { + String leftCi = linkVo.getLeftCi(); + String rightCi = linkVo.getRightCi(); + CiVo leftCiVo = ciMapper.getCiByName(leftCi); + if (leftCiVo == null) { + throw new CiNotFoundException(leftCi); + } + CiVo rightCiVo = ciMapper.getCiByName(rightCi); + if (rightCiVo == null) { + throw new CiNotFoundException(rightCi); + } + String direction = linkVo.getDirection(); + if (Objects.equals(direction, RelDirectionType.FROM.getValue())) { + ResourceEntityLeftJoinVo leftJoinVo = new ResourceEntityLeftJoinVo(); + leftJoinVo.setDirection(direction); + leftJoinVo.setFromCi(rightCiVo.getName()); + leftJoinVo.setFromCiId(rightCiVo.getId()); + leftJoinVo.setFromCiAlias(linkVo.getRightCiAlias()); + leftJoinVo.setToCi(leftCiVo.getName()); + leftJoinVo.setToCiId(leftCiVo.getId()); + leftJoinVo.setToCiAlias(linkVo.getLeftCiAlias()); + resultList.add(leftJoinVo); + } else if (Objects.equals(direction, RelDirectionType.TO.getValue())) { + ResourceEntityLeftJoinVo leftJoinVo = new ResourceEntityLeftJoinVo(); + leftJoinVo.setDirection(direction); + leftJoinVo.setFromCi(leftCiVo.getName()); + leftJoinVo.setFromCiId(leftCiVo.getId()); + leftJoinVo.setFromCiAlias(linkVo.getLeftCiAlias()); + leftJoinVo.setToCi(rightCiVo.getName()); + leftJoinVo.setToCiId(rightCiVo.getId()); + leftJoinVo.setToCiAlias(linkVo.getRightCiAlias()); + resultList.add(leftJoinVo); + } + } + } + return resultList; + } + + private AttrVo getAttrVo(CiVo ciVo, String attrName) { + List upwardCiList = ciMapper.getUpwardCiListByLR(ciVo.getLft(), ciVo.getRht()); + for (CiVo ci : upwardCiList) { + AttrVo attr = attrMapper.getDeclaredAttrByCiIdAndName(ci.getId(), attrName); + if (attr != null) { + return attr; + } + } + return null; + } + + /** + * 根据queryCriteriaVo查询条件收集组装动态sql时,需要返回的条件列 + * @param queryCriteriaVo + * @return + */ + private List getFilterItemFieldNameList(ResourceQueryCriteriaVo queryCriteriaVo) { + Set filterItemFieldNameSet = new HashSet<>(); + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + filterItemFieldNameSet.add("name"); + filterItemFieldNameSet.add("ip"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { + filterItemFieldNameSet.add("id"); + } + if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { + filterItemFieldNameSet.add("type_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { + filterItemFieldNameSet.add("state_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { + filterItemFieldNameSet.add("vendor_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { + filterItemFieldNameSet.add("env_id"); + } + if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { + filterItemFieldNameSet.add("env_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { + filterItemFieldNameSet.add("app_system_id"); + filterItemFieldNameSet.add("app_module_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { + filterItemFieldNameSet.add("app_module_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { + filterItemFieldNameSet.add("inspect_status"); + } + return new ArrayList<>(filterItemFieldNameSet); + } + + /** + * 根据queryCriteriaVo查询条件补充业务逻辑过滤条件,包括join表和where条件 + * @param queryCriteriaVo + * @param plainSelect + * @param filterItemFieldName2ColumnMap + * @return + */ + private PlainSelect supplementBusinessLogicByResourceSearchVo(ResourceQueryCriteriaVo queryCriteriaVo, PlainSelect plainSelect, Map filterItemFieldName2ColumnMap) { + /* + + JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) + JOIN fulltextindex_word fw ON ffc.word_id = fw.id + AND (fw.word IN + + #{item} + + ) + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { + Table ffcTable = new Table("fulltextindex_field_cmdb").withAlias(new Alias("ffc").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(ffcTable, "target_id"), filterItemFieldName2ColumnMap.get("id")); + ExpressionList values = new ExpressionList(); + if (queryCriteriaVo.getNameFieldAttrId() != null) { + values.addExpressions(new LongValue(queryCriteriaVo.getNameFieldAttrId())); + } + if (queryCriteriaVo.getIpFieldAttrId() != null) { + values.addExpressions(new LongValue(queryCriteriaVo.getIpFieldAttrId())); + } + InExpression inExpression = new InExpression(new Column(ffcTable, "target_field"), values); + Join join = new Join().withRightItem(ffcTable).addOnExpression(new AndExpression(equalsTo, inExpression)); + plainSelect.addJoins(join); + } + Table fwTable = new Table("fulltextindex_word").withAlias(new Alias("fw").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(fwTable, "id"), new Column(ffcTable,"word_id")); + ExpressionList values = new ExpressionList(); + for (String keyword : queryCriteriaVo.getKeywordList()) { + values.addExpressions(new StringValue(keyword)); + } + InExpression inExpression = new InExpression(new Column(fwTable, "word"), values); + Join join = new Join().withRightItem(fwTable).addOnExpression(new AndExpression(equalsTo, inExpression)); + plainSelect.addJoins(join); + } + } + /* + + JOIN fulltextindex_field_cmdb ffc2 ON ffc2.target_id = a.id + + + AND ffc2.target_field = #{nameFieldAttrId} + + + AND ffc2.target_field = #{ipFieldAttrId} + + + JOIN fulltextindex_word fw2 ON ffc2.word_id = fw2.id + AND (fw2.word IN + + #{item} + + ) + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + Table ffc2Table = new Table("fulltextindex_field_cmdb").withAlias(new Alias("ffc2").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(ffc2Table, "target_id"), filterItemFieldName2ColumnMap.get("id")); + LongValue longValue = null; + if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { + longValue = new LongValue(queryCriteriaVo.getNameFieldAttrId()); + } else { + longValue = new LongValue(queryCriteriaVo.getIpFieldAttrId()); + } + EqualsTo equalsTo2 = new EqualsTo(new Column(ffc2Table, "target_field"), longValue); + Join join = new Join().withRightItem(ffc2Table).addOnExpression(new AndExpression(equalsTo, equalsTo2)); + plainSelect.addJoins(join); + } + Table fw2Table = new Table("fulltextindex_word").withAlias(new Alias("fw2").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(fw2Table, "id"), new Column(ffc2Table,"word_id")); + ExpressionList values = new ExpressionList(); + for (String keyword : queryCriteriaVo.getBatchSearchList()) { + values.addExpressions(new StringValue(keyword)); } - newFieldMappingVo.setFromCi(fromCi); - newFieldMappingVo.setFromCiId(fromCiVo.getId()); - newFieldMappingVo.setFromAttr(fromAttr); - newFieldMappingVo.setToAttr(toAttr); - } else if (Objects.equals(type, "empty")) { + InExpression inExpression = new InExpression(new Column(fw2Table, "word"), values); + Join join = new Join().withRightItem(fw2Table).addOnExpression(new AndExpression(equalsTo, inExpression)); + plainSelect.addJoins(join); + } + } + /* + + LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` + LEFT JOIN `cmdb_resourcecenter_account` c ON c.`id` = b.`account_id` + + + + AND c.`protocol_id` IN + + #{protocolId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { + Table bTable = new Table("cmdb_resourcecenter_resource_account").withAlias(new Alias("b").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(bTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); + Join join = new Join().withLeft(true).withRightItem(bTable).addOnExpression(equalsTo); + plainSelect.addJoins(join); + } + Table cTable = new Table("cmdb_resourcecenter_account").withAlias(new Alias("c").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(cTable, "id"), new Column(bTable,"account_id")); + Join join = new Join().withLeft(true).withRightItem(cTable).addOnExpression(equalsTo); + plainSelect.addJoins(join); + } + Column column = new Column(cTable,"protocol_id"); + ExpressionList values = new ExpressionList(); + for (Long protocolId : queryCriteriaVo.getProtocolIdList()) { + values.addExpressions(new LongValue(protocolId)); + } + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); + } else { + plainSelect.setWhere(inExpression); + } + } + /* + + LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` + + + AND d.`tag_id` IN + + #{tagId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { + Table dTable = new Table("cmdb_resourcecenter_resource_tag").withAlias(new Alias("d").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(dTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); + Join join = new Join().withLeft(true).withRightItem(dTable).addOnExpression(equalsTo); + plainSelect.addJoins(join); + } + Column column = new Column(dTable, "tag_id"); + ExpressionList values = new ExpressionList(); + for (Long tagId : queryCriteriaVo.getTagIdList()) { + values.addExpressions(new LongValue(tagId)); + } + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); } else { - throw new ResourceViewFieldMappingException(viewName, field, "type", type); + plainSelect.setWhere(inExpression); } - resultList.add(newFieldMappingVo); } - newConfig.setFieldMappingList(resultList); - return newConfig; - } + /* + + left join autoexec_job_resource_inspect ajri on ajri.resource_id=a.id + left join autoexec_job_phase_node ajpn on ajpn.job_phase_id =ajri.phase_id AND ajpn.resource_id = a.id + - private List getRelLinkListByRelNode(ResourceEntityRelNodeVo relNode) { - List relLinkList = new ArrayList<>(); - if (relNode != null) { - Map> map = new HashMap<>(); - List children = relNode.getChildren(); - if (CollectionUtils.isNotEmpty(children)) { - for (ResourceEntityRelNodeVo child : children) { - addRelLinkListByRelNode(relLinkList, relNode, child, map); + + AND a.`inspect_status` IN + + #{inspectStatus} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { + Table ajriTable = new Table("autoexec_job_resource_inspect").withAlias(new Alias("ajri").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(ajriTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); + Join join = new Join().withLeft(true).withRightItem(ajriTable).addOnExpression(equalsTo); + plainSelect.addJoins(join); + } + Table ajpnTable = new Table("autoexec_job_phase_node").withAlias(new Alias("ajpn").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(ajpnTable, "job_phase_id"), new Column(ajriTable,"phase_id")); + EqualsTo equalsTo2 = new EqualsTo(new Column(ajpnTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); + Join join = new Join().withLeft(true).withRightItem(ajpnTable).addOnExpression(new AndExpression(equalsTo, equalsTo2)); + plainSelect.addJoins(join); + } + Column column = new Column(ajpnTable, "status"); + ExpressionList values = new ExpressionList(); + for (String status : queryCriteriaVo.getInspectJobPhaseNodeStatusList()) { + values.addExpressions(new StringValue(status)); + } + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); + } else { + plainSelect.setWhere(inExpression); + } + } + /* + + LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id + LEFT JOIN cmdb_group_auth cga ON ccg.group_id = cga.group_id + + + LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('autoexec') + + + LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('readonly','maintain','autoexec') + + + + */ + if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { + Table ccgTable = new Table("cmdb_cientity_group").withAlias(new Alias("ccg").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(ccgTable, "cientity_id"), filterItemFieldName2ColumnMap.get("id")); + Join join = new Join().withLeft(true).withRightItem(ccgTable).addOnExpression(equalsTo); + plainSelect.addJoins(join); + } + Table cgaTable = new Table("cmdb_group_auth").withAlias(new Alias("cga").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(cgaTable, "group_id"), new Column(ccgTable,"group_id")); + Join join = new Join().withLeft(true).withRightItem(cgaTable).addOnExpression(equalsTo); + plainSelect.addJoins(join); + } + Table cgTable = new Table("cmdb_group").withAlias(new Alias("cg").withUseAs(false)); + { + EqualsTo equalsTo = new EqualsTo(new Column(cgTable, "id"), new Column(cgaTable, "group_id")); + ExpressionList values = new ExpressionList(); + if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { + values.addExpressions(new StringValue("autoexec")); + } else { + values.addExpressions(new StringValue("autoexec")); + values.addExpressions(new StringValue("readonly")); + values.addExpressions(new StringValue("maintain")); + } + InExpression inExpression = new InExpression(new Column(cgTable, "type"), values); + Join join = new Join().withLeft(true).withRightItem(cgTable).addOnExpression(new AndExpression(equalsTo, inExpression)); + plainSelect.addJoins(join); + } + } + /* + + + AND a.`type_id` IN + + #{typeId} + + + + AND ( + + + a.`type_id` IN + + #{authedTypeId} + + + + 1 = 0 + + + or ( + cg.id is not null and + a.`type_id` IN + + #{typeId} + + and + ((cga.auth_type = 'common' AND cga.auth_uuid = 'alluser') + + OR cga.auth_uuid IN ( + #{authenticationInfo.userUuid} + + + #{item} + + + + + #{item} + + + ) + + ) + ) + ) + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { + if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { + Column column = filterItemFieldName2ColumnMap.get("type_id"); + ExpressionList values = new ExpressionList(); + for (Long typeId : queryCriteriaVo.getTypeIdList()) { + values.addExpressions(new LongValue(typeId)); } - } - } - return relLinkList; - } - - private void addRelLinkListByRelNode(List relLinkList, ResourceEntityRelNodeVo leftNode, ResourceEntityRelNodeVo rightNode, Map> map) { - { - ResourceEntityRelLinkVo relLinkVo = new ResourceEntityRelLinkVo(); - { - Map relNodeAliasMap = map.computeIfAbsent(leftNode.getCiName(), key -> new HashMap<>()); - int size = relNodeAliasMap.size(); - String alias = relNodeAliasMap.get(leftNode); - if (alias == null) { - if (size == 0) { - alias = StringUtils.EMPTY; - } else { - alias = "alias_" + (size + 1); - } - relNodeAliasMap.put(leftNode, alias); + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); + } else { + plainSelect.setWhere(inExpression); } - relLinkVo.setLeftCi(leftNode.getCiName()); - relLinkVo.setLeftCiAlias(alias); - } - { - Map relNodeAliasMap = map.computeIfAbsent(rightNode.getCiName(), key -> new HashMap<>()); - int size = relNodeAliasMap.size(); - String alias = relNodeAliasMap.get(rightNode); - if (alias == null) { - if (size == 0) { - alias = StringUtils.EMPTY; - } else { - alias = "_alias_" + (size + 1); + } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { + Expression orLeftExpression = null; + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { + Column column = filterItemFieldName2ColumnMap.get("type_id"); + ExpressionList values = new ExpressionList(); + for (Long authedTypeId : queryCriteriaVo.getAuthedTypeIdList()) { + values.addExpressions(new LongValue(authedTypeId)); } - relNodeAliasMap.put(rightNode, alias); + orLeftExpression = new InExpression(column, values); + } else { + orLeftExpression = new EqualsTo(new LongValue(1), new LongValue(0)); } - relLinkVo.setRightCi(rightNode.getCiName()); - relLinkVo.setRightCiAlias(alias); - relLinkVo.setRightUuid(rightNode.getUuid()); - } - relLinkVo.setDirection(rightNode.getDirection()); - relLinkList.add(relLinkVo); - } - List children = rightNode.getChildren(); - if (CollectionUtils.isNotEmpty(children)) { - for (ResourceEntityRelNodeVo child : children) { - addRelLinkListByRelNode(relLinkList, rightNode, child, map); - } - } - } - - private List getLeftJoinList(ResourceEntityConfigVo config) { - List resultList = new ArrayList<>(); - List relLinkList = config.getRelLinkList(); - if (CollectionUtils.isNotEmpty(relLinkList)) { - for (ResourceEntityRelLinkVo linkVo : relLinkList) { - String leftCi = linkVo.getLeftCi(); - String rightCi = linkVo.getRightCi(); - CiVo leftCiVo = ciMapper.getCiByName(leftCi); - if (leftCiVo == null) { - throw new CiNotFoundException(leftCi); + Expression orRightExpression = null; + IsNullExpression IsNullExpression = new IsNullExpression().withLeftExpression(new Column("cg.id")).withNot(true); + Column column = filterItemFieldName2ColumnMap.get("type_id"); + ExpressionList values = new ExpressionList(); + for (Long typeId : queryCriteriaVo.getTypeIdList()) { + values.addExpressions(new LongValue(typeId)); } - CiVo rightCiVo = ciMapper.getCiByName(rightCi); - if (rightCiVo == null) { - throw new CiNotFoundException(rightCi); + InExpression inExpression = new InExpression(column, values); + orRightExpression = new AndExpression(IsNullExpression, inExpression); + Expression orLeftExpression2 = new AndExpression(new EqualsTo(new Column("cga.auth_type"), new StringValue("common")), new EqualsTo(new Column("cga.auth_uuid"), new StringValue("alluser"))); + orLeftExpression2 = new Parenthesis(orLeftExpression2); + Expression orRightExpression2 = null; + if (queryCriteriaVo.getAuthenticationInfo() != null) { + List uuidList = new ArrayList<>(); + if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { + uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { + uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { + uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); + } + if (CollectionUtils.isNotEmpty(uuidList)) { + Column column2 = new Column("cga.auth_uuid"); + ExpressionList values2 = new ExpressionList(); + for (String uuid : uuidList) { + values2.addExpressions(new StringValue(uuid)); + } + orRightExpression2 = new InExpression(column2, values2); + } } - String direction = linkVo.getDirection(); - if (Objects.equals(direction, RelDirectionType.FROM.getValue())) { - ResourceEntityLeftJoinVo leftJoinVo = new ResourceEntityLeftJoinVo(); - leftJoinVo.setDirection(direction); - leftJoinVo.setFromCi(rightCiVo.getName()); - leftJoinVo.setFromCiId(rightCiVo.getId()); - leftJoinVo.setFromCiAlias(linkVo.getRightCiAlias()); - leftJoinVo.setToCi(leftCiVo.getName()); - leftJoinVo.setToCiId(leftCiVo.getId()); - leftJoinVo.setToCiAlias(linkVo.getLeftCiAlias()); - resultList.add(leftJoinVo); - } else if (Objects.equals(direction, RelDirectionType.TO.getValue())) { - ResourceEntityLeftJoinVo leftJoinVo = new ResourceEntityLeftJoinVo(); - leftJoinVo.setDirection(direction); - leftJoinVo.setFromCi(leftCiVo.getName()); - leftJoinVo.setFromCiId(leftCiVo.getId()); - leftJoinVo.setFromCiAlias(linkVo.getLeftCiAlias()); - leftJoinVo.setToCi(rightCiVo.getName()); - leftJoinVo.setToCiId(rightCiVo.getId()); - leftJoinVo.setToCiAlias(linkVo.getRightCiAlias()); - resultList.add(leftJoinVo); + if (orRightExpression2 != null) { + orRightExpression = new AndExpression(orRightExpression, new Parenthesis(new OrExpression(orLeftExpression2, orRightExpression2))); + } else { + orRightExpression = new AndExpression(orRightExpression, orLeftExpression2); + } + OrExpression orExpression = new OrExpression(orLeftExpression, orRightExpression); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, new Parenthesis(orExpression))); + } else { + plainSelect.setWhere(orExpression); } } } - return resultList; - } - - private AttrVo getAttrVo(CiVo ciVo, String attrName) { - List upwardCiList = ciMapper.getUpwardCiListByLR(ciVo.getLft(), ciVo.getRht()); - for (CiVo ci : upwardCiList) { - AttrVo attr = attrMapper.getDeclaredAttrByCiIdAndName(ci.getId(), attrName); - if (attr != null) { - return attr; - } - } - return null; - } - - /** - * 根据queryCriteriaVo查询条件收集组装动态sql时,需要返回的条件列 - * @param queryCriteriaVo - * @return - */ - private List getFilterItemFieldNameList(ResourceQueryCriteriaVo queryCriteriaVo) { - Set filterItemFieldNameSet = new HashSet<>(); - if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { - filterItemFieldNameSet.add("name"); - filterItemFieldNameSet.add("ip"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList())) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { - filterItemFieldNameSet.add("id"); - } - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { - filterItemFieldNameSet.add("type_id"); - } + /* + + AND a.`state_id` IN + + #{stateId} + + + */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { - filterItemFieldNameSet.add("state_id"); + Column column = filterItemFieldName2ColumnMap.get("state_id"); + ExpressionList values = new ExpressionList(); + for (Long stateId : queryCriteriaVo.getStateIdList()) { + values.addExpressions(new LongValue(stateId)); + } + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); + } else { + plainSelect.setWhere(inExpression); + } } + /* + + AND a.`vendor_id` IN + + #{vendorId} + + + */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { - filterItemFieldNameSet.add("vendor_id"); + Column column = filterItemFieldName2ColumnMap.get("vendor_id"); + ExpressionList values = new ExpressionList(); + for (Long vendorId : queryCriteriaVo.getVendorIdList()) { + values.addExpressions(new LongValue(vendorId)); + } + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); + } else { + plainSelect.setWhere(inExpression); + } } + /* + + AND a.`env_id` IN + + #{envId} + + + */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { - filterItemFieldNameSet.add("env_id"); + Column column = filterItemFieldName2ColumnMap.get("env_id"); + ExpressionList values = new ExpressionList(); + for (Long envId : queryCriteriaVo.getEnvIdList()) { + values.addExpressions(new LongValue(envId)); + } + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); + } else { + plainSelect.setWhere(inExpression); + } } + /* + + AND a.`env_id` is null + + */ if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { - filterItemFieldNameSet.add("env_id"); + Column column = filterItemFieldName2ColumnMap.get("env_id"); + + IsNullExpression isNullExpression = new IsNullExpression(); + isNullExpression.withLeftExpression(column); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, isNullExpression)); + } else { + plainSelect.setWhere(isNullExpression); + } } + /* + + AND a.`app_system_id` IN + + #{appSystemId} + + + */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { - filterItemFieldNameSet.add("app_system_id"); - filterItemFieldNameSet.add("app_module_id"); + Column column = filterItemFieldName2ColumnMap.get("app_system_id"); + ExpressionList values = new ExpressionList(); + for (Long appSystemIdList : queryCriteriaVo.getAppSystemIdList()) { + values.addExpressions(new LongValue(appSystemIdList)); + } + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); + } else { + plainSelect.setWhere(inExpression); + } } + /* + + AND a.`app_module_id` IN + + #{appModuleId} + + + */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { - filterItemFieldNameSet.add("app_module_id"); + Column column = filterItemFieldName2ColumnMap.get("app_module_id"); + ExpressionList values = new ExpressionList(); + for (Long appModuleIdList : queryCriteriaVo.getAppModuleIdList()) { + values.addExpressions(new LongValue(appModuleIdList)); + } + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); + } else { + plainSelect.setWhere(inExpression); + } } + /* + + AND a.`id` IN + + #{id} + + + */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { - filterItemFieldNameSet.add("id"); + Column column = filterItemFieldName2ColumnMap.get("id"); + ExpressionList values = new ExpressionList(); + JSONArray defaultValue = queryCriteriaVo.getDefaultValue(); + List idList = defaultValue.toJavaList(Long.class); + for (Long id : idList) { + values.addExpressions(new LongValue(id)); + } + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); + } else { + plainSelect.setWhere(inExpression); + } } + /* + + AND a.`id` IN + + #{id} + + + */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { - filterItemFieldNameSet.add("id"); + Column column = filterItemFieldName2ColumnMap.get("id"); + ExpressionList values = new ExpressionList(); + for (Long id : queryCriteriaVo.getIdList()) { + values.addExpressions(new LongValue(id)); + } + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); + } else { + plainSelect.setWhere(inExpression); + } } + /* + + AND a.`inspect_status` IN + + #{inspectStatus} + + + */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { - filterItemFieldNameSet.add("inspect_status"); + Column column = filterItemFieldName2ColumnMap.get("inspect_status"); + ExpressionList values = new ExpressionList(); + for (String inspectStatus : queryCriteriaVo.getInspectStatusList()) { + values.addExpressions(new StringValue(inspectStatus)); + } + InExpression inExpression = new InExpression(column, values); + Expression where = plainSelect.getWhere(); + if (where != null) { + plainSelect.setWhere(new AndExpression(where, inExpression)); + } else { + plainSelect.setWhere(inExpression); + } } - return new ArrayList<>(filterItemFieldNameSet); + return plainSelect; } - /** - * 根据queryCriteriaVo查询条件补充业务逻辑过滤条件,包括join表和where条件 - * @param queryCriteriaVo - * @param plainSelect - * @param filterItemFieldName2ColumnMap - * @return - */ - private PlainSelect supplementBusinessLogicByResourceSearchVo(ResourceQueryCriteriaVo queryCriteriaVo, PlainSelect plainSelect, Map filterItemFieldName2ColumnMap) { + private SqlVo getSqlVo(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + SqlVo sqlVo = new SqlVo(); + List joinList = new ArrayList<>(); + List whereExpressionList = new ArrayList<>(); /* JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) @@ -2453,30 +3357,20 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { - Table ffcTable = new Table("fulltextindex_field_cmdb").withAlias(new Alias("ffc").withUseAs(false)); + System.out.println("a"); { - EqualsTo equalsTo = new EqualsTo(new Column(ffcTable, "target_id"), filterItemFieldName2ColumnMap.get("id")); - ExpressionList values = new ExpressionList(); - if (queryCriteriaVo.getNameFieldAttrId() != null) { - values.addExpressions(new LongValue(queryCriteriaVo.getNameFieldAttrId())); - } - if (queryCriteriaVo.getIpFieldAttrId() != null) { - values.addExpressions(new LongValue(queryCriteriaVo.getIpFieldAttrId())); - } - InExpression inExpression = new InExpression(new Column(ffcTable, "target_field"), values); - Join join = new Join().withRightItem(ffcTable).addOnExpression(new AndExpression(equalsTo, inExpression)); - plainSelect.addJoins(join); + ExpressionVo expressionVo = $sql.exp( + $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + "and", + $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); + joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); } - Table fwTable = new Table("fulltextindex_word").withAlias(new Alias("fw").withUseAs(false)); { - EqualsTo equalsTo = new EqualsTo(new Column(fwTable, "id"), new Column(ffcTable,"word_id")); - ExpressionList values = new ExpressionList(); - for (String keyword : queryCriteriaVo.getKeywordList()) { - values.addExpressions(new StringValue(keyword)); - } - InExpression inExpression = new InExpression(new Column(fwTable, "word"), values); - Join join = new Join().withRightItem(fwTable).addOnExpression(new AndExpression(equalsTo, inExpression)); - plainSelect.addJoins(join); + ExpressionVo expressionVo = $sql.exp( + $sql.exp("fw.id", "=", "ffc.word_id"), + "and", + $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); + joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); } } /* @@ -2499,29 +3393,27 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - Table ffc2Table = new Table("fulltextindex_field_cmdb").withAlias(new Alias("ffc2").withUseAs(false)); { - EqualsTo equalsTo = new EqualsTo(new Column(ffc2Table, "target_id"), filterItemFieldName2ColumnMap.get("id")); - LongValue longValue = null; + Long fieldAttrId = null; if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { - longValue = new LongValue(queryCriteriaVo.getNameFieldAttrId()); + System.out.println("b"); + fieldAttrId = queryCriteriaVo.getNameFieldAttrId(); } else { - longValue = new LongValue(queryCriteriaVo.getIpFieldAttrId()); + System.out.println("c"); + fieldAttrId = queryCriteriaVo.getIpFieldAttrId(); } - EqualsTo equalsTo2 = new EqualsTo(new Column(ffc2Table, "target_field"), longValue); - Join join = new Join().withRightItem(ffc2Table).addOnExpression(new AndExpression(equalsTo, equalsTo2)); - plainSelect.addJoins(join); + ExpressionVo expressionVo = $sql.exp( + $sql.exp("ffc2.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + "and", + $sql.exp("ffc2.target_field", "=", fieldAttrId)); + joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc2").withOn(expressionVo)); } - Table fw2Table = new Table("fulltextindex_word").withAlias(new Alias("fw2").withUseAs(false)); { - EqualsTo equalsTo = new EqualsTo(new Column(fw2Table, "id"), new Column(ffc2Table,"word_id")); - ExpressionList values = new ExpressionList(); - for (String keyword : queryCriteriaVo.getBatchSearchList()) { - values.addExpressions(new StringValue(keyword)); - } - InExpression inExpression = new InExpression(new Column(fw2Table, "word"), values); - Join join = new Join().withRightItem(fw2Table).addOnExpression(new AndExpression(equalsTo, inExpression)); - plainSelect.addJoins(join); + ExpressionVo expressionVo = $sql.exp( + $sql.exp("fw2.id", "=", "ffc2.word_id"), + "and", + $sql.exp("fw2.word", "in", queryCriteriaVo.getBatchSearchList())); + joinList.add($sql.join("join", "fulltextindex_word", "fw2").withOn(expressionVo)); } } /* @@ -2538,62 +3430,27 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { - Table bTable = new Table("cmdb_resourcecenter_resource_account").withAlias(new Alias("b").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(bTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); - Join join = new Join().withLeft(true).withRightItem(bTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Table cTable = new Table("cmdb_resourcecenter_account").withAlias(new Alias("c").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(cTable, "id"), new Column(bTable,"account_id")); - Join join = new Join().withLeft(true).withRightItem(cTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Column column = new Column(cTable,"protocol_id"); - ExpressionList values = new ExpressionList(); - for (Long protocolId : queryCriteriaVo.getProtocolIdList()) { - values.addExpressions(new LongValue(protocolId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("d"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); + whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); } /* - - LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` - - - - AND d.`tag_id` IN - - #{tagId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { - Table dTable = new Table("cmdb_resourcecenter_resource_tag").withAlias(new Alias("d").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(dTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); - Join join = new Join().withLeft(true).withRightItem(dTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Column column = new Column(dTable, "tag_id"); - ExpressionList values = new ExpressionList(); - for (Long tagId : queryCriteriaVo.getTagIdList()) { - values.addExpressions(new LongValue(tagId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + + LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` + + + + AND d.`tag_id` IN + + #{tagId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { + System.out.println("e"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); } /* @@ -2609,31 +3466,11 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { - Table ajriTable = new Table("autoexec_job_resource_inspect").withAlias(new Alias("ajri").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(ajriTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); - Join join = new Join().withLeft(true).withRightItem(ajriTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Table ajpnTable = new Table("autoexec_job_phase_node").withAlias(new Alias("ajpn").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(ajpnTable, "job_phase_id"), new Column(ajriTable,"phase_id")); - EqualsTo equalsTo2 = new EqualsTo(new Column(ajpnTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); - Join join = new Join().withLeft(true).withRightItem(ajpnTable).addOnExpression(new AndExpression(equalsTo, equalsTo2)); - plainSelect.addJoins(join); - } - Column column = new Column(ajpnTable, "status"); - ExpressionList values = new ExpressionList(); - for (String status : queryCriteriaVo.getInspectJobPhaseNodeStatusList()) { - values.addExpressions(new StringValue(status)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("f"); + joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); + whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); } /* @@ -2650,33 +3487,25 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - Table ccgTable = new Table("cmdb_cientity_group").withAlias(new Alias("ccg").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(ccgTable, "cientity_id"), filterItemFieldName2ColumnMap.get("id")); - Join join = new Join().withLeft(true).withRightItem(ccgTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Table cgaTable = new Table("cmdb_group_auth").withAlias(new Alias("cga").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(cgaTable, "group_id"), new Column(ccgTable,"group_id")); - Join join = new Join().withLeft(true).withRightItem(cgaTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Table cgTable = new Table("cmdb_group").withAlias(new Alias("cg").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(cgTable, "id"), new Column(cgaTable, "group_id")); - ExpressionList values = new ExpressionList(); - if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { - values.addExpressions(new StringValue("autoexec")); - } else { - values.addExpressions(new StringValue("autoexec")); - values.addExpressions(new StringValue("readonly")); - values.addExpressions(new StringValue("maintain")); - } - InExpression inExpression = new InExpression(new Column(cgTable, "type"), values); - Join join = new Join().withLeft(true).withRightItem(cgTable).addOnExpression(new AndExpression(equalsTo, inExpression)); - plainSelect.addJoins(join); + joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); + + List strList = new ArrayList<>(); + if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { + System.out.println("g"); + strList.add("autoexec"); + } else { + System.out.println("h"); + strList.add("autoexec"); + strList.add("readonly"); + strList.add("maintain"); } + ExpressionVo expressionVo = $sql.exp( + $sql.exp("cg.id", "=", "cga.group_id"), + "and", + $sql.exp("cg.type", "in", strList) + ); + joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); } /* @@ -2730,43 +3559,23 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { - Column column = filterItemFieldName2ColumnMap.get("type_id"); - ExpressionList values = new ExpressionList(); - for (Long typeId : queryCriteriaVo.getTypeIdList()) { - values.addExpressions(new LongValue(typeId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("i"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - Expression orLeftExpression = null; + ExpressionVo orLeftExpressionVo = null; if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { - Column column = filterItemFieldName2ColumnMap.get("type_id"); - ExpressionList values = new ExpressionList(); - for (Long authedTypeId : queryCriteriaVo.getAuthedTypeIdList()) { - values.addExpressions(new LongValue(authedTypeId)); - } - orLeftExpression = new InExpression(column, values); + System.out.println("j"); + orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); } else { - orLeftExpression = new EqualsTo(new LongValue(1), new LongValue(0)); - } - Expression orRightExpression = null; - IsNullExpression IsNullExpression = new IsNullExpression().withLeftExpression(new Column("cg.id")).withNot(true); - Column column = filterItemFieldName2ColumnMap.get("type_id"); - ExpressionList values = new ExpressionList(); - for (Long typeId : queryCriteriaVo.getTypeIdList()) { - values.addExpressions(new LongValue(typeId)); + System.out.println("k"); + orLeftExpressionVo = $sql.exp(1, "=", 0); } - InExpression inExpression = new InExpression(column, values); - orRightExpression = new AndExpression(IsNullExpression, inExpression); - Expression orLeftExpression2 = new AndExpression(new EqualsTo(new Column("cga.auth_type"), new StringValue("common")), new EqualsTo(new Column("cga.auth_uuid"), new StringValue("alluser"))); - orLeftExpression2 = new Parenthesis(orLeftExpression2); - Expression orRightExpression2 = null; + ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + + ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); + ExpressionVo orRightExpressionVo2 = null; if (queryCriteriaVo.getAuthenticationInfo() != null) { + System.out.println("l"); List uuidList = new ArrayList<>(); if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); @@ -2778,26 +3587,19 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); } if (CollectionUtils.isNotEmpty(uuidList)) { - Column column2 = new Column("cga.auth_uuid"); - ExpressionList values2 = new ExpressionList(); - for (String uuid : uuidList) { - values2.addExpressions(new StringValue(uuid)); - } - orRightExpression2 = new InExpression(column2, values2); + System.out.println("m"); + orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); } } - if (orRightExpression2 != null) { - orRightExpression = new AndExpression(orRightExpression, new Parenthesis(new OrExpression(orLeftExpression2, orRightExpression2))); - } else { - orRightExpression = new AndExpression(orRightExpression, orLeftExpression2); - } - OrExpression orExpression = new OrExpression(orLeftExpression, orRightExpression); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, new Parenthesis(orExpression))); + if (orRightExpressionVo2 != null) { + System.out.println("n"); + orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); } else { - plainSelect.setWhere(orExpression); + System.out.println("o"); + orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); } + ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); + whereExpressionList.add(orExpressionVo); } } /* @@ -2809,18 +3611,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { - Column column = filterItemFieldName2ColumnMap.get("state_id"); - ExpressionList values = new ExpressionList(); - for (Long stateId : queryCriteriaVo.getStateIdList()) { - values.addExpressions(new LongValue(stateId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("p"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); } /* @@ -2831,18 +3623,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { - Column column = filterItemFieldName2ColumnMap.get("vendor_id"); - ExpressionList values = new ExpressionList(); - for (Long vendorId : queryCriteriaVo.getVendorIdList()) { - values.addExpressions(new LongValue(vendorId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("q"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); } /* @@ -2853,18 +3635,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { - Column column = filterItemFieldName2ColumnMap.get("env_id"); - ExpressionList values = new ExpressionList(); - for (Long envId : queryCriteriaVo.getEnvIdList()) { - values.addExpressions(new LongValue(envId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("r"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); } /* @@ -2872,16 +3644,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { - Column column = filterItemFieldName2ColumnMap.get("env_id"); - - IsNullExpression isNullExpression = new IsNullExpression(); - isNullExpression.withLeftExpression(column); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, isNullExpression)); - } else { - plainSelect.setWhere(isNullExpression); - } + System.out.println("s"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); } /* @@ -2892,18 +3656,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { - Column column = filterItemFieldName2ColumnMap.get("app_system_id"); - ExpressionList values = new ExpressionList(); - for (Long appSystemIdList : queryCriteriaVo.getAppSystemIdList()) { - values.addExpressions(new LongValue(appSystemIdList)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("t"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); } /* @@ -2914,18 +3668,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { - Column column = filterItemFieldName2ColumnMap.get("app_module_id"); - ExpressionList values = new ExpressionList(); - for (Long appModuleIdList : queryCriteriaVo.getAppModuleIdList()) { - values.addExpressions(new LongValue(appModuleIdList)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("u"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); } /* @@ -2936,20 +3680,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { - Column column = filterItemFieldName2ColumnMap.get("id"); - ExpressionList values = new ExpressionList(); - JSONArray defaultValue = queryCriteriaVo.getDefaultValue(); - List idList = defaultValue.toJavaList(Long.class); - for (Long id : idList) { - values.addExpressions(new LongValue(id)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("v"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); } /* @@ -2960,18 +3692,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { - Column column = filterItemFieldName2ColumnMap.get("id"); - ExpressionList values = new ExpressionList(); - for (Long id : queryCriteriaVo.getIdList()) { - values.addExpressions(new LongValue(id)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("w"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); } /* @@ -2982,23 +3704,15 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { - Column column = filterItemFieldName2ColumnMap.get("inspect_status"); - ExpressionList values = new ExpressionList(); - for (String inspectStatus : queryCriteriaVo.getInspectStatusList()) { - values.addExpressions(new StringValue(inspectStatus)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("x"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); } - return plainSelect; + sqlVo.withJoinList(joinList); + sqlVo.withWhereExpressionList(whereExpressionList); + return sqlVo; } - private SqlVo getSqlVo(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + private SqlVo getSqlVo2(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { SqlVo sqlVo = new SqlVo(); List joinList = new ArrayList<>(); List whereExpressionList = new ArrayList<>(); @@ -3013,65 +3727,56 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc ) */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { - System.out.println("a"); - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), - "and", - $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); - joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); - } - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("fw.id", "=", "ffc.word_id"), - "and", - $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); - joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); - } - } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { +// System.out.println("a"); +// { +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), +// "and", +// $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); +// joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); +// } +// { +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("fw.id", "=", "ffc.word_id"), +// "and", +// $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); +// joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); +// } +// } /* - JOIN fulltextindex_field_cmdb ffc2 ON ffc2.target_id = a.id - - - AND ffc2.target_field = #{nameFieldAttrId} - - - AND ffc2.target_field = #{ipFieldAttrId} - - - JOIN fulltextindex_word fw2 ON ffc2.word_id = fw2.id - AND (fw2.word IN - - #{item} - - ) + AND + + + a.`name` LIKE #{item} + + + + + a.`ip` LIKE #{item} + + */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - { - Long fieldAttrId = null; - if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { - System.out.println("b"); - fieldAttrId = queryCriteriaVo.getNameFieldAttrId(); + String columnName = null; + if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { + System.out.println("b"); + columnName = filterItemFieldName2ColumnMap.get("name").toString(); + } else { + System.out.println("c"); + columnName = filterItemFieldName2ColumnMap.get("ip").toString(); + } + ExpressionVo orExp = null; + for (String item : queryCriteriaVo.getBatchSearchList()) { + if (orExp != null) { + orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); } else { - System.out.println("c"); - fieldAttrId = queryCriteriaVo.getIpFieldAttrId(); + orExp = $sql.exp(columnName, "like", $sql.value(item)); } - ExpressionVo expressionVo = $sql.exp( - $sql.exp("ffc2.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), - "and", - $sql.exp("ffc2.target_field", "=", fieldAttrId)); - joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc2").withOn(expressionVo)); - } - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("fw2.id", "=", "ffc2.word_id"), - "and", - $sql.exp("fw2.word", "in", queryCriteriaVo.getBatchSearchList())); - joinList.add($sql.join("join", "fulltextindex_word", "fw2").withOn(expressionVo)); } + whereExpressionList.add($sql.exp("(", orExp, ")")); } /* @@ -3300,10 +4005,10 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc AND a.`env_id` is null */ - if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { - System.out.println("s"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); - } +// if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { +// System.out.println("s"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); +// } /* AND a.`app_system_id` IN @@ -3336,10 +4041,10 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { - System.out.println("v"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); - } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { +// System.out.println("v"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); +// } /* AND a.`id` IN @@ -3348,10 +4053,10 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { - System.out.println("w"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); - } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { +// System.out.println("w"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); +// } /* AND a.`inspect_status` IN @@ -3369,7 +4074,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return sqlVo; } - private SqlVo getSqlVo2(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + private SqlVo getSqlVo3(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { SqlVo sqlVo = new SqlVo(); List joinList = new ArrayList<>(); List whereExpressionList = new ArrayList<>(); @@ -3416,25 +4121,25 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - String columnName = null; - if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { - System.out.println("b"); - columnName = filterItemFieldName2ColumnMap.get("name").toString(); - } else { - System.out.println("c"); - columnName = filterItemFieldName2ColumnMap.get("ip").toString(); - } - ExpressionVo orExp = null; - for (String item : queryCriteriaVo.getBatchSearchList()) { - if (orExp != null) { - orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); - } else { - orExp = $sql.exp(columnName, "like", $sql.value(item)); - } - } - whereExpressionList.add($sql.exp("(", orExp, ")")); - } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { +// String columnName = null; +// if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { +// System.out.println("b"); +// columnName = filterItemFieldName2ColumnMap.get("name").toString(); +// } else { +// System.out.println("c"); +// columnName = filterItemFieldName2ColumnMap.get("ip").toString(); +// } +// ExpressionVo orExp = null; +// for (String item : queryCriteriaVo.getBatchSearchList()) { +// if (orExp != null) { +// orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); +// } else { +// orExp = $sql.exp(columnName, "like", $sql.value(item)); +// } +// } +// whereExpressionList.add($sql.exp("(", orExp, ")")); +// } /* LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` @@ -3486,11 +4191,15 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { System.out.println("f"); - joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); +// joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); +// ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); } + if (queryCriteriaVo.getJobId() != null) { + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + whereExpressionList.add($sql.exp("ajpn.job_id", "=", queryCriteriaVo.getJobId())); + } /* LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id @@ -3505,27 +4214,27 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); - - List strList = new ArrayList<>(); - if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { - System.out.println("g"); - strList.add("autoexec"); - } else { - System.out.println("h"); - strList.add("autoexec"); - strList.add("readonly"); - strList.add("maintain"); - } - ExpressionVo expressionVo = $sql.exp( - $sql.exp("cg.id", "=", "cga.group_id"), - "and", - $sql.exp("cg.type", "in", strList) - ); - joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); - } +// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { +// joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); +// joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); +// +// List strList = new ArrayList<>(); +// if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { +// System.out.println("g"); +// strList.add("autoexec"); +// } else { +// System.out.println("h"); +// strList.add("autoexec"); +// strList.add("readonly"); +// strList.add("maintain"); +// } +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("cg.id", "=", "cga.group_id"), +// "and", +// $sql.exp("cg.type", "in", strList) +// ); +// joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); +// } /* @@ -3577,49 +4286,50 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { - System.out.println("i"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); - } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - ExpressionVo orLeftExpressionVo = null; - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { - System.out.println("j"); - orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); - } else { - System.out.println("k"); - orLeftExpressionVo = $sql.exp(1, "=", 0); - } - ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); - - ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); - ExpressionVo orRightExpressionVo2 = null; - if (queryCriteriaVo.getAuthenticationInfo() != null) { - System.out.println("l"); - List uuidList = new ArrayList<>(); - if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { - uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { - uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { - uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); - } - if (CollectionUtils.isNotEmpty(uuidList)) { - System.out.println("m"); - orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); - } - } - if (orRightExpressionVo2 != null) { - System.out.println("n"); - orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); - } else { - System.out.println("o"); - orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); - } - ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); - whereExpressionList.add(orExpressionVo); - } + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); +// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { +// System.out.println("i"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); +// } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { +// ExpressionVo orLeftExpressionVo = null; +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { +// System.out.println("j"); +// orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); +// } else { +// System.out.println("k"); +// orLeftExpressionVo = $sql.exp(1, "=", 0); +// } +// ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); +// +// ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); +// ExpressionVo orRightExpressionVo2 = null; +// if (queryCriteriaVo.getAuthenticationInfo() != null) { +// System.out.println("l"); +// List uuidList = new ArrayList<>(); +// if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { +// uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); +// } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { +// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); +// } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { +// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); +// } +// if (CollectionUtils.isNotEmpty(uuidList)) { +// System.out.println("m"); +// orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); +// } +// } +// if (orRightExpressionVo2 != null) { +// System.out.println("n"); +// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); +// } else { +// System.out.println("o"); +// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); +// } +// ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); +// whereExpressionList.add(orExpressionVo); +// } } /* @@ -3724,7 +4434,13 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { System.out.println("x"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_cientity_inspect", "cci").withOn($sql.exp( + $sql.exp("cci.ci_entity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + "and", + $sql.exp("cci.job_id", "=", "ajpn.job_id") + ))); + whereExpressionList.add($sql.exp("cci.inspect_status", "in", queryCriteriaVo.getInspectStatusList())); } sqlVo.withJoinList(joinList); sqlVo.withWhereExpressionList(whereExpressionList); -- Gitee From 763810de50bf6adef5183f14688da9e5d7fde6c1 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Mon, 11 Aug 2025 18:21:35 +0800 Subject: [PATCH 09/15] =?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 --- .../ResourceCenterResourceServiceImpl.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) 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 fc7772b3..e1a3fd3c 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 @@ -2095,6 +2095,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc } return null; } + @Override public String buildGetInspectAutoexecJobNodeResourceCountSql(ResourceSearchVo searchVo, Long jobId) { try { @@ -2291,6 +2292,64 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return null; } + @Override + public String buildGetInspectConfigFileResourceIdListSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp("(", + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + ")") + ); + } + SqlVo sqlVo = getSqlVo2(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addJoin(plainSelect, $sql.join("left join", "inspect_config_file_last_change_time", "g").withOn($sql.exp("g.`resource_id`", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); +// if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { +// $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); +// } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { +// $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); +// } + $sql.addOrderBy(plainSelect, $sql.fun("max","g.`last_change_time`"), "desc"); + $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + private ResourceEntityConfigVo getResourceEntityConfigVo(ResourceEntityVo resourceEntityVo) { String viewName = resourceEntityVo.getName(); ResourceEntityConfigVo originalConfig = resourceEntityVo.getConfig(); -- Gitee From 6d9a517f1b27a25ee418622c9aaed89fd6cd69f9 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Tue, 12 Aug 2025 19:19:32 +0800 Subject: [PATCH 10/15] =?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 --- .../ResourceCenterResourceServiceImpl.java | 231 ++++++++++++++++++ 1 file changed, 231 insertions(+) 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 e1a3fd3c..b972f915 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 @@ -2350,6 +2350,237 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return null; } + @Override + public String buildGetInspectConfigFilePathCountSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + /* + + AND (a.`path` LIKE CONCAT('%', #{keyword}, '%') + OR b.`name` LIKE CONCAT('%', #{keyword}, '%') + OR b.`ip` LIKE CONCAT('%', #{keyword}, '%') + ) + + */ + if (StringUtils.isNotBlank(searchVo.getKeyword())) { + String keyword = "'%" + searchVo.getKeyword() + "%'"; + ExpressionVo orExp = $sql.exp( + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword) + ); + orExp = $sql.exp(orExp, "or", $sql.exp("b.path", "like", keyword)); + $sql.addWhereExpression(plainSelect, $sql.exp("(", orExp, ")") + ); + } + /* + + + AND a.`inspect_time` >= STR_TO_DATE(#{timeRange[0]}, '%Y-%m-%d %H:%i:%s') + + + AND a.`inspect_time` <= STR_TO_DATE(#{timeRange[1]}, '%Y-%m-%d %H:%i:%s') + + + */ + List timeRange = searchVo.getTimeRange(); + if (CollectionUtils.isNotEmpty(timeRange)) { + $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", ">=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(0)), "'%Y-%m-%d %H:%i:%s'"))); + if (timeRange.size() > 1) { + $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", "<=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(1)), "'%Y-%m-%d %H:%i:%s'"))); + } + } + $sql.addSelectColumn(plainSelect, $sql.fun("count", "b.id").withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectConfigFilePathIdListSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + /* + + AND (a.`path` LIKE CONCAT('%', #{keyword}, '%') + OR b.`name` LIKE CONCAT('%', #{keyword}, '%') + OR b.`ip` LIKE CONCAT('%', #{keyword}, '%') + ) + + */ + if (StringUtils.isNotBlank(searchVo.getKeyword())) { + String keyword = "'%" + searchVo.getKeyword() + "%'"; + ExpressionVo orExp = $sql.exp( + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword) + ); + orExp = $sql.exp(orExp, "or", $sql.exp("b.path", "like", keyword)); + $sql.addWhereExpression(plainSelect, $sql.exp("(", orExp, ")") + ); + } + /* + + + AND a.`inspect_time` >= STR_TO_DATE(#{timeRange[0]}, '%Y-%m-%d %H:%i:%s') + + + AND a.`inspect_time` <= STR_TO_DATE(#{timeRange[1]}, '%Y-%m-%d %H:%i:%s') + + + */ + List timeRange = searchVo.getTimeRange(); + if (CollectionUtils.isNotEmpty(timeRange)) { + $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", ">=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(0)), "'%Y-%m-%d %H:%i:%s'"))); + if (timeRange.size() > 1) { + $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", "<=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(1)), "'%Y-%m-%d %H:%i:%s'"))); + } + } + $sql.addGroupBy(plainSelect, "b.id"); + $sql.addOrderBy(plainSelect, $sql.fun("max", "b.inspect_time"), "desc"); + $sql.addSelectColumn(plainSelect, "b.id"); + $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectConfigFilePathListSql(List idList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + filterItemFieldNameList.add("port"); + filterItemFieldNameList.add("type_label"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.setDistinct(plainSelect, true); + $sql.addSelectColumn(plainSelect, "b.id", "id"); + $sql.addSelectColumn(plainSelect, "b.resource_id", "resourceId"); + $sql.addSelectColumn(plainSelect, "b.path", "path"); + $sql.addSelectColumn(plainSelect, "b.inspect_time", "inspectTime"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("name").toString(), "resourceName"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("ip").toString(), "resourceIP"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("port").toString(), "resourcePort"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_label").toString(), "resourceTypeLabel"); + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + $sql.addWhereExpression(plainSelect, $sql.exp("b.id", "in", idList)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectConfigFilePathListByJobIdSql(Long jobId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + filterItemFieldNameList.add("port"); + filterItemFieldNameList.add("type_label"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.setDistinct(plainSelect, true); + $sql.addSelectColumn(plainSelect, "b.id", "id"); + $sql.addSelectColumn(plainSelect, "b.resource_id", "resourceId"); + $sql.addSelectColumn(plainSelect, "b.path", "path"); + $sql.addSelectColumn(plainSelect, "b.md5", "md5"); + $sql.addSelectColumn(plainSelect, "b.inspect_time", "inspectTime"); + $sql.addSelectColumn(plainSelect, "b.file_id", "fileId"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("name").toString(), "resourceName"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("ip").toString(), "resourceIP"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("port").toString(), "resourcePort"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_label").toString(), "resourceTypeLabel"); + $sql.addSelectColumn(plainSelect, "c.id", "versionId"); + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_version", "c").withOn($sql.exp( + $sql.exp("c.`path_id`", "=", "b.`id`"), + "and", + $sql.exp("c.`file_id`", "=", "b.`file_id`") + ))); + $sql.addWhereExpression(plainSelect, $sql.exp("c.job_id", "=", jobId)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + private ResourceEntityConfigVo getResourceEntityConfigVo(ResourceEntityVo resourceEntityVo) { String viewName = resourceEntityVo.getName(); ResourceEntityConfigVo originalConfig = resourceEntityVo.getConfig(); -- Gitee From d96646320190f2091a05729aca030d69c3b5c030 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 13 Aug 2025 14:20:52 +0800 Subject: [PATCH 11/15] =?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 --- .../IResourceCenterResourceService.java | 55 ++++++++++++++++++- .../ResourceCenterResourceServiceImpl.java | 3 +- 2 files changed, 54 insertions(+), 4 deletions(-) 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 a9647edc..8fa81008 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,7 +16,6 @@ along with this program. If not, see .*/ package neatlogic.module.cmdb.service.resourcecenter.resource; import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; import neatlogic.framework.cmdb.dto.resourcecenter.AccountComponentVo; import neatlogic.framework.cmdb.dto.resourcecenter.AccountVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; @@ -32,7 +31,7 @@ import java.util.Map; * @author laiwt * @since 2021/11/22 14:41 **/ -public interface IResourceCenterResourceService extends IResourceCenterResourceCrossoverService { +public interface IResourceCenterResourceService { ResourceSearchVo assembleResourceSearchVo(JSONObject jsonObj); @@ -174,23 +173,73 @@ public interface IResourceCenterResourceService extends IResourceCenterResourceC String buildGetResourceTypeIdListByAuthSql(ResourceSearchVo searchVo); String buildGetResourceIdByIpAndPortAndNameSql(ResourceSearchVo searchVo); + String buildGetResourceIdListByIpAndPortAndNameSql(ResourceSearchVo searchVo); + String buildGetResourceListByIpAndPortAndNameSql(ResourceSearchVo searchVo); + String buildGetResourceByIdListSql(List idList); + String buildGetResourceByIdSql(Long id, List selectFieldNameList); + String buildGetResourceByIdSql(Long id); + String buildGetResourceIdByResourceIdSql(Long id); + String buildCheckResourceIdListIsExistsSql(List idList); -// String buildGetResourceListByResourceVoListSql(); + String buildGetResourceIdListByAppSystemIdAndModuleIdAndEnvIdSql(ResourceVo resourceVo); + String buildGetResourceListByTypeIdListAndIpListSql(List typeIdList, List ipList); + String buildGetResourceByIpAndPortAndNameAndTypeNameSql(String ip, Integer port, String name, String typeName); + String buildGetResourceByIpAndPortSql(String ip, Integer port); + String buildSearchAccountComponentSql(AccountComponentVo accountComponentVo); + String buildSearchAccountComponentCountSql(AccountComponentVo accountComponentVo); + String buildGetAppEnvListByAppSystemIdAndAppModuleIdSql(Long appSystemId, Long appModuleId); + String buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(Long appSystemId); // String buildGetResourceCountByDynamicConditionSql(); // String buildGetResourceIdListByDynamicConditionSql(); + // InspectMapper + String buildGetInspectResourceListByIdListSql(List idList, List selectFieldNameList); + + String buildGetInspectResourceListByIdListSql(List idList); + + String buildGetInspectResourceCountSql(ResourceSearchVo searchVo); + + String buildGetInspectResourceCountByIpKeywordSql(ResourceSearchVo searchVo); + + String buildGetInspectResourceCountByNameKeywordSql(ResourceSearchVo searchVo); + + String buildGetInspectResourceIdListSql(ResourceSearchVo searchVo); + + String buildGetInspectAutoexecJobNodeResourceCountSql(ResourceSearchVo searchVo, Long jobId); + + String buildGetInspectAutoexecJobNodeResourceCountByIpKeywordSql(ResourceSearchVo searchVo, Long jobId); + + String buildGetInspectAutoexecJobNodeResourceCountByNameKeywordSql(ResourceSearchVo searchVo, Long jobId); + + String buildGetInspectAutoexecJobNodeResourceIdListSql(ResourceSearchVo searchVo, Long jobId); + + String buildGetInspectResourceListByIdListAndJobIdSql(List IdList, Long jobId); + + String buildGetInspectResourceListByIdListAndJobIdSql(List IdList, Long jobId, List selectFieldNameList); + + // InspectConfigFileMapper + String buildGetInspectConfigFileResourceIdListSql(ResourceSearchVo searchVo); + + String buildGetInspectConfigFilePathCountSql(ResourceSearchVo searchVo); + + String buildGetInspectConfigFilePathIdListSql(ResourceSearchVo searchVo); + + String buildGetInspectConfigFilePathListSql(List idList); + + String buildGetInspectConfigFilePathListByJobIdSql(Long jobId); + } 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 b972f915..46988e49 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 @@ -22,6 +22,7 @@ import neatlogic.framework.asynchronization.threadlocal.UserContext; import neatlogic.framework.auth.core.AuthActionChecker; import neatlogic.framework.cmdb.auth.label.CIENTITY_MODIFY; import neatlogic.framework.cmdb.auth.label.CI_MODIFY; +import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; import neatlogic.framework.cmdb.dto.ci.AttrVo; import neatlogic.framework.cmdb.dto.ci.CiVo; import neatlogic.framework.cmdb.dto.globalattr.GlobalAttrVo; @@ -85,7 +86,7 @@ import java.util.stream.Collectors; * @since 2021/11/22 14:41 **/ @Service -public class ResourceCenterResourceServiceImpl implements IResourceCenterResourceService { +public class ResourceCenterResourceServiceImpl implements IResourceCenterResourceService, IResourceCenterResourceCrossoverService { private final Logger logger = LoggerFactory.getLogger(ResourceCenterResourceServiceImpl.class); private final static List defaultAttrList = Arrays.asList("_id", "_uuid", "_name", "_fcu", "_fcd", "_lcu", "_lcd", "_inspectStatus", "_inspectTime", "_monitorStatus", "_monitorTime", "_typeId", "_typeName", "_typeLabel"); -- Gitee From 53894c889bb5d697ed79d140cc321f14fca41f65 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 13 Aug 2025 15:09:48 +0800 Subject: [PATCH 12/15] =?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 --- .../IResourceCenterResourceService.java | 1 + .../ResourceCenterResourceServiceImpl.java | 1483 +++-------------- 2 files changed, 278 insertions(+), 1206 deletions(-) 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 8fa81008..81a9d3b0 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 @@ -203,6 +203,7 @@ public interface IResourceCenterResourceService { String buildGetAppEnvListByAppSystemIdAndAppModuleIdSql(Long appSystemId, Long appModuleId); String buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(Long appSystemId); + // String buildGetResourceCountByDynamicConditionSql(); // String buildGetResourceIdListByDynamicConditionSql(); 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 46988e49..a60e1ff2 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 @@ -15,7 +15,6 @@ along with this program. If not, see .*/ package neatlogic.module.cmdb.service.resourcecenter.resource; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.asynchronization.threadlocal.TenantContext; import neatlogic.framework.asynchronization.threadlocal.UserContext; @@ -56,19 +55,11 @@ import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceEntityMapper; import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper; import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceTagMapper; import neatlogic.module.cmdb.utils.ResourceEntityFactory; -import net.sf.jsqlparser.expression.*; -import net.sf.jsqlparser.expression.operators.conditional.AndExpression; -import net.sf.jsqlparser.expression.operators.conditional.OrExpression; -import net.sf.jsqlparser.expression.operators.relational.EqualsTo; -import net.sf.jsqlparser.expression.operators.relational.ExpressionList; -import net.sf.jsqlparser.expression.operators.relational.InExpression; -import net.sf.jsqlparser.expression.operators.relational.IsNullExpression; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.schema.Table; import net.sf.jsqlparser.statement.create.table.ColDataType; import net.sf.jsqlparser.statement.create.table.ColumnDefinition; import net.sf.jsqlparser.statement.create.table.CreateTable; -import net.sf.jsqlparser.statement.select.Join; import net.sf.jsqlparser.statement.select.PlainSelect; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -712,7 +703,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); } - SqlVo sqlVo = getSqlVo(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); // List joinList = getJoinList(queryCriteriaVo, filterItemFieldName2ColumnMap); // $sql.addJoinList(plainSelect, joinList); @@ -757,7 +748,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc plainSelect = resourceViewGenerateSqlUtil.getSql(); filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); } - SqlVo sqlVo = getSqlVo(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); // List joinList = getJoinList(queryCriteriaVo, filterItemFieldName2ColumnMap); // $sql.addJoinList(plainSelect, joinList); @@ -849,7 +840,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc plainSelect = resourceViewGenerateSqlUtil.getSql(); filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); } - SqlVo sqlVo = getSqlVo(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); Column column = filterItemFieldName2ColumnMap.get("id"); $sql.setSelectColumn(plainSelect, $sql.fun("COUNT", column.toString()).withDistinct(true)); @@ -886,7 +877,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc plainSelect = resourceViewGenerateSqlUtil.getSql(); filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); } - SqlVo sqlVo = getSqlVo(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); Column column = filterItemFieldName2ColumnMap.get("id"); $sql.setSelectColumn(plainSelect, $sql.fun("COUNT", column.toString()).withDistinct(true)); @@ -926,7 +917,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc plainSelect = resourceViewGenerateSqlUtil.getSql(); filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); } - SqlVo sqlVo = getSqlVo(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); return plainSelect.toString(); } catch (Exception e) { @@ -964,7 +955,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc plainSelect = resourceViewGenerateSqlUtil.getSql(); filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); } - SqlVo sqlVo = getSqlVo(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); String keyword = searchVo.getKeyword(); if (StringUtils.isNotBlank(keyword)) { @@ -1037,7 +1028,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc plainSelect = resourceViewGenerateSqlUtil.getSql(); filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); } - SqlVo sqlVo = getSqlVo(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); $sql.setDistinct(plainSelect, true); Column typeIdColumn = filterItemFieldName2ColumnMap.get("type_id"); @@ -1092,7 +1083,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); } - SqlVo sqlVo = getSqlVo(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); } $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "=", $sql.value(searchVo.getIp()))); @@ -1143,7 +1134,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); } - SqlVo sqlVo = getSqlVo(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); } List inputNodeList = searchVo.getInputNodeList(); @@ -1197,6 +1188,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc filterItemFieldNameList.add("name"); filterItemFieldNameList.add("ip"); filterItemFieldNameList.add("port"); + filterItemFieldNameList.add("type_name"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); Map filterItemFieldName2ColumnMap = new HashMap<>(); @@ -1209,13 +1201,14 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc plainSelect = resourceViewGenerateSqlUtil.getSql(); filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); } + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); if (Objects.equals(searchVo.getIsHasAuth(), false)) { ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(); queryCriteriaVo.setIsHasAuth(false); if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); } - SqlVo sqlVo = getSqlVo(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); } List inputNodeList = searchVo.getInputNodeList(); @@ -1851,7 +1844,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc ")") ); } - SqlVo sqlVo = getSqlVo2(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); @@ -1895,7 +1888,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword)); } - SqlVo sqlVo = getSqlVo2(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); @@ -1939,7 +1932,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword)); } - SqlVo sqlVo = getSqlVo2(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); @@ -1987,7 +1980,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc ")") ); } - SqlVo sqlVo = getSqlVo2(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); @@ -2136,7 +2129,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc ")") ); } - SqlVo sqlVo = getSqlVo3(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); @@ -2181,7 +2174,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword)); } - SqlVo sqlVo = getSqlVo3(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); @@ -2226,7 +2219,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword)); } - SqlVo sqlVo = getSqlVo3(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); @@ -2275,7 +2268,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc ")") ); } - SqlVo sqlVo = getSqlVo3(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); @@ -2331,7 +2324,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc ")") ); } - SqlVo sqlVo = getSqlVo2(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); $sql.addJoin(plainSelect, $sql.join("left join", "inspect_config_file_last_change_time", "g").withOn($sql.exp("g.`resource_id`", "=", filterItemFieldName2ColumnMap.get("id").toString()))); $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); @@ -3067,14 +3060,10 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return new ArrayList<>(filterItemFieldNameSet); } - /** - * 根据queryCriteriaVo查询条件补充业务逻辑过滤条件,包括join表和where条件 - * @param queryCriteriaVo - * @param plainSelect - * @param filterItemFieldName2ColumnMap - * @return - */ - private PlainSelect supplementBusinessLogicByResourceSearchVo(ResourceQueryCriteriaVo queryCriteriaVo, PlainSelect plainSelect, Map filterItemFieldName2ColumnMap) { + private SqlVo getSqlVoForResource(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + SqlVo sqlVo = new SqlVo(); + List joinList = new ArrayList<>(); + List whereExpressionList = new ArrayList<>(); /* JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) @@ -3087,30 +3076,20 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { - Table ffcTable = new Table("fulltextindex_field_cmdb").withAlias(new Alias("ffc").withUseAs(false)); + System.out.println("a"); { - EqualsTo equalsTo = new EqualsTo(new Column(ffcTable, "target_id"), filterItemFieldName2ColumnMap.get("id")); - ExpressionList values = new ExpressionList(); - if (queryCriteriaVo.getNameFieldAttrId() != null) { - values.addExpressions(new LongValue(queryCriteriaVo.getNameFieldAttrId())); - } - if (queryCriteriaVo.getIpFieldAttrId() != null) { - values.addExpressions(new LongValue(queryCriteriaVo.getIpFieldAttrId())); - } - InExpression inExpression = new InExpression(new Column(ffcTable, "target_field"), values); - Join join = new Join().withRightItem(ffcTable).addOnExpression(new AndExpression(equalsTo, inExpression)); - plainSelect.addJoins(join); + ExpressionVo expressionVo = $sql.exp( + $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + "and", + $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); + joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); } - Table fwTable = new Table("fulltextindex_word").withAlias(new Alias("fw").withUseAs(false)); { - EqualsTo equalsTo = new EqualsTo(new Column(fwTable, "id"), new Column(ffcTable,"word_id")); - ExpressionList values = new ExpressionList(); - for (String keyword : queryCriteriaVo.getKeywordList()) { - values.addExpressions(new StringValue(keyword)); - } - InExpression inExpression = new InExpression(new Column(fwTable, "word"), values); - Join join = new Join().withRightItem(fwTable).addOnExpression(new AndExpression(equalsTo, inExpression)); - plainSelect.addJoins(join); + ExpressionVo expressionVo = $sql.exp( + $sql.exp("fw.id", "=", "ffc.word_id"), + "and", + $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); + joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); } } /* @@ -3133,29 +3112,27 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - Table ffc2Table = new Table("fulltextindex_field_cmdb").withAlias(new Alias("ffc2").withUseAs(false)); { - EqualsTo equalsTo = new EqualsTo(new Column(ffc2Table, "target_id"), filterItemFieldName2ColumnMap.get("id")); - LongValue longValue = null; + Long fieldAttrId = null; if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { - longValue = new LongValue(queryCriteriaVo.getNameFieldAttrId()); + System.out.println("b"); + fieldAttrId = queryCriteriaVo.getNameFieldAttrId(); } else { - longValue = new LongValue(queryCriteriaVo.getIpFieldAttrId()); + System.out.println("c"); + fieldAttrId = queryCriteriaVo.getIpFieldAttrId(); } - EqualsTo equalsTo2 = new EqualsTo(new Column(ffc2Table, "target_field"), longValue); - Join join = new Join().withRightItem(ffc2Table).addOnExpression(new AndExpression(equalsTo, equalsTo2)); - plainSelect.addJoins(join); + ExpressionVo expressionVo = $sql.exp( + $sql.exp("ffc2.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + "and", + $sql.exp("ffc2.target_field", "=", fieldAttrId)); + joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc2").withOn(expressionVo)); } - Table fw2Table = new Table("fulltextindex_word").withAlias(new Alias("fw2").withUseAs(false)); { - EqualsTo equalsTo = new EqualsTo(new Column(fw2Table, "id"), new Column(ffc2Table,"word_id")); - ExpressionList values = new ExpressionList(); - for (String keyword : queryCriteriaVo.getBatchSearchList()) { - values.addExpressions(new StringValue(keyword)); - } - InExpression inExpression = new InExpression(new Column(fw2Table, "word"), values); - Join join = new Join().withRightItem(fw2Table).addOnExpression(new AndExpression(equalsTo, inExpression)); - plainSelect.addJoins(join); + ExpressionVo expressionVo = $sql.exp( + $sql.exp("fw2.id", "=", "ffc2.word_id"), + "and", + $sql.exp("fw2.word", "in", queryCriteriaVo.getBatchSearchList())); + joinList.add($sql.join("join", "fulltextindex_word", "fw2").withOn(expressionVo)); } } /* @@ -3172,30 +3149,10 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { - Table bTable = new Table("cmdb_resourcecenter_resource_account").withAlias(new Alias("b").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(bTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); - Join join = new Join().withLeft(true).withRightItem(bTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Table cTable = new Table("cmdb_resourcecenter_account").withAlias(new Alias("c").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(cTable, "id"), new Column(bTable,"account_id")); - Join join = new Join().withLeft(true).withRightItem(cTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Column column = new Column(cTable,"protocol_id"); - ExpressionList values = new ExpressionList(); - for (Long protocolId : queryCriteriaVo.getProtocolIdList()) { - values.addExpressions(new LongValue(protocolId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("d"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); + whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); } /* @@ -3210,24 +3167,9 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { - Table dTable = new Table("cmdb_resourcecenter_resource_tag").withAlias(new Alias("d").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(dTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); - Join join = new Join().withLeft(true).withRightItem(dTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Column column = new Column(dTable, "tag_id"); - ExpressionList values = new ExpressionList(); - for (Long tagId : queryCriteriaVo.getTagIdList()) { - values.addExpressions(new LongValue(tagId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("e"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); } /* @@ -3243,31 +3185,11 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { - Table ajriTable = new Table("autoexec_job_resource_inspect").withAlias(new Alias("ajri").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(ajriTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); - Join join = new Join().withLeft(true).withRightItem(ajriTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Table ajpnTable = new Table("autoexec_job_phase_node").withAlias(new Alias("ajpn").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(ajpnTable, "job_phase_id"), new Column(ajriTable,"phase_id")); - EqualsTo equalsTo2 = new EqualsTo(new Column(ajpnTable, "resource_id"), filterItemFieldName2ColumnMap.get("id")); - Join join = new Join().withLeft(true).withRightItem(ajpnTable).addOnExpression(new AndExpression(equalsTo, equalsTo2)); - plainSelect.addJoins(join); - } - Column column = new Column(ajpnTable, "status"); - ExpressionList values = new ExpressionList(); - for (String status : queryCriteriaVo.getInspectJobPhaseNodeStatusList()) { - values.addExpressions(new StringValue(status)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("f"); + joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); + whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); } /* @@ -3284,33 +3206,25 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - Table ccgTable = new Table("cmdb_cientity_group").withAlias(new Alias("ccg").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(ccgTable, "cientity_id"), filterItemFieldName2ColumnMap.get("id")); - Join join = new Join().withLeft(true).withRightItem(ccgTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Table cgaTable = new Table("cmdb_group_auth").withAlias(new Alias("cga").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(cgaTable, "group_id"), new Column(ccgTable,"group_id")); - Join join = new Join().withLeft(true).withRightItem(cgaTable).addOnExpression(equalsTo); - plainSelect.addJoins(join); - } - Table cgTable = new Table("cmdb_group").withAlias(new Alias("cg").withUseAs(false)); - { - EqualsTo equalsTo = new EqualsTo(new Column(cgTable, "id"), new Column(cgaTable, "group_id")); - ExpressionList values = new ExpressionList(); - if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { - values.addExpressions(new StringValue("autoexec")); - } else { - values.addExpressions(new StringValue("autoexec")); - values.addExpressions(new StringValue("readonly")); - values.addExpressions(new StringValue("maintain")); - } - InExpression inExpression = new InExpression(new Column(cgTable, "type"), values); - Join join = new Join().withLeft(true).withRightItem(cgTable).addOnExpression(new AndExpression(equalsTo, inExpression)); - plainSelect.addJoins(join); + joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); + + List strList = new ArrayList<>(); + if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { + System.out.println("g"); + strList.add("autoexec"); + } else { + System.out.println("h"); + strList.add("autoexec"); + strList.add("readonly"); + strList.add("maintain"); } + ExpressionVo expressionVo = $sql.exp( + $sql.exp("cg.id", "=", "cga.group_id"), + "and", + $sql.exp("cg.type", "in", strList) + ); + joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); } /* @@ -3364,43 +3278,23 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { - Column column = filterItemFieldName2ColumnMap.get("type_id"); - ExpressionList values = new ExpressionList(); - for (Long typeId : queryCriteriaVo.getTypeIdList()) { - values.addExpressions(new LongValue(typeId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("i"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - Expression orLeftExpression = null; + ExpressionVo orLeftExpressionVo = null; if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { - Column column = filterItemFieldName2ColumnMap.get("type_id"); - ExpressionList values = new ExpressionList(); - for (Long authedTypeId : queryCriteriaVo.getAuthedTypeIdList()) { - values.addExpressions(new LongValue(authedTypeId)); - } - orLeftExpression = new InExpression(column, values); + System.out.println("j"); + orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); } else { - orLeftExpression = new EqualsTo(new LongValue(1), new LongValue(0)); - } - Expression orRightExpression = null; - IsNullExpression IsNullExpression = new IsNullExpression().withLeftExpression(new Column("cg.id")).withNot(true); - Column column = filterItemFieldName2ColumnMap.get("type_id"); - ExpressionList values = new ExpressionList(); - for (Long typeId : queryCriteriaVo.getTypeIdList()) { - values.addExpressions(new LongValue(typeId)); + System.out.println("k"); + orLeftExpressionVo = $sql.exp(1, "=", 0); } - InExpression inExpression = new InExpression(column, values); - orRightExpression = new AndExpression(IsNullExpression, inExpression); - Expression orLeftExpression2 = new AndExpression(new EqualsTo(new Column("cga.auth_type"), new StringValue("common")), new EqualsTo(new Column("cga.auth_uuid"), new StringValue("alluser"))); - orLeftExpression2 = new Parenthesis(orLeftExpression2); - Expression orRightExpression2 = null; + ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + + ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); + ExpressionVo orRightExpressionVo2 = null; if (queryCriteriaVo.getAuthenticationInfo() != null) { + System.out.println("l"); List uuidList = new ArrayList<>(); if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); @@ -3412,26 +3306,19 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); } if (CollectionUtils.isNotEmpty(uuidList)) { - Column column2 = new Column("cga.auth_uuid"); - ExpressionList values2 = new ExpressionList(); - for (String uuid : uuidList) { - values2.addExpressions(new StringValue(uuid)); - } - orRightExpression2 = new InExpression(column2, values2); + System.out.println("m"); + orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); } } - if (orRightExpression2 != null) { - orRightExpression = new AndExpression(orRightExpression, new Parenthesis(new OrExpression(orLeftExpression2, orRightExpression2))); - } else { - orRightExpression = new AndExpression(orRightExpression, orLeftExpression2); - } - OrExpression orExpression = new OrExpression(orLeftExpression, orRightExpression); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, new Parenthesis(orExpression))); + if (orRightExpressionVo2 != null) { + System.out.println("n"); + orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); } else { - plainSelect.setWhere(orExpression); + System.out.println("o"); + orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); } + ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); + whereExpressionList.add(orExpressionVo); } } /* @@ -3443,18 +3330,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { - Column column = filterItemFieldName2ColumnMap.get("state_id"); - ExpressionList values = new ExpressionList(); - for (Long stateId : queryCriteriaVo.getStateIdList()) { - values.addExpressions(new LongValue(stateId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("p"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); } /* @@ -3465,18 +3342,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { - Column column = filterItemFieldName2ColumnMap.get("vendor_id"); - ExpressionList values = new ExpressionList(); - for (Long vendorId : queryCriteriaVo.getVendorIdList()) { - values.addExpressions(new LongValue(vendorId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("q"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); } /* @@ -3487,18 +3354,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { - Column column = filterItemFieldName2ColumnMap.get("env_id"); - ExpressionList values = new ExpressionList(); - for (Long envId : queryCriteriaVo.getEnvIdList()) { - values.addExpressions(new LongValue(envId)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("r"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); } /* @@ -3506,16 +3363,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { - Column column = filterItemFieldName2ColumnMap.get("env_id"); - - IsNullExpression isNullExpression = new IsNullExpression(); - isNullExpression.withLeftExpression(column); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, isNullExpression)); - } else { - plainSelect.setWhere(isNullExpression); - } + System.out.println("s"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); } /* @@ -3526,18 +3375,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { - Column column = filterItemFieldName2ColumnMap.get("app_system_id"); - ExpressionList values = new ExpressionList(); - for (Long appSystemIdList : queryCriteriaVo.getAppSystemIdList()) { - values.addExpressions(new LongValue(appSystemIdList)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("t"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); } /* @@ -3548,18 +3387,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { - Column column = filterItemFieldName2ColumnMap.get("app_module_id"); - ExpressionList values = new ExpressionList(); - for (Long appModuleIdList : queryCriteriaVo.getAppModuleIdList()) { - values.addExpressions(new LongValue(appModuleIdList)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("u"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); } /* @@ -3570,20 +3399,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { - Column column = filterItemFieldName2ColumnMap.get("id"); - ExpressionList values = new ExpressionList(); - JSONArray defaultValue = queryCriteriaVo.getDefaultValue(); - List idList = defaultValue.toJavaList(Long.class); - for (Long id : idList) { - values.addExpressions(new LongValue(id)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("v"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); } /* @@ -3594,18 +3411,8 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { - Column column = filterItemFieldName2ColumnMap.get("id"); - ExpressionList values = new ExpressionList(); - for (Long id : queryCriteriaVo.getIdList()) { - values.addExpressions(new LongValue(id)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("w"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); } /* @@ -3616,23 +3423,15 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { - Column column = filterItemFieldName2ColumnMap.get("inspect_status"); - ExpressionList values = new ExpressionList(); - for (String inspectStatus : queryCriteriaVo.getInspectStatusList()) { - values.addExpressions(new StringValue(inspectStatus)); - } - InExpression inExpression = new InExpression(column, values); - Expression where = plainSelect.getWhere(); - if (where != null) { - plainSelect.setWhere(new AndExpression(where, inExpression)); - } else { - plainSelect.setWhere(inExpression); - } + System.out.println("x"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); } - return plainSelect; + sqlVo.withJoinList(joinList); + sqlVo.withWhereExpressionList(whereExpressionList); + return sqlVo; } - private SqlVo getSqlVo(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + private SqlVo getSqlVoForInspect(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { SqlVo sqlVo = new SqlVo(); List joinList = new ArrayList<>(); List whereExpressionList = new ArrayList<>(); @@ -3647,65 +3446,56 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc ) */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { - System.out.println("a"); - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), - "and", - $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); - joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); - } - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("fw.id", "=", "ffc.word_id"), - "and", - $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); - joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); - } - } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { +// System.out.println("a"); +// { +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), +// "and", +// $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); +// joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); +// } +// { +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("fw.id", "=", "ffc.word_id"), +// "and", +// $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); +// joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); +// } +// } /* - JOIN fulltextindex_field_cmdb ffc2 ON ffc2.target_id = a.id - - - AND ffc2.target_field = #{nameFieldAttrId} - - - AND ffc2.target_field = #{ipFieldAttrId} - - - JOIN fulltextindex_word fw2 ON ffc2.word_id = fw2.id - AND (fw2.word IN - - #{item} - - ) + AND + + + a.`name` LIKE #{item} + + + + + a.`ip` LIKE #{item} + + */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - { - Long fieldAttrId = null; - if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { - System.out.println("b"); - fieldAttrId = queryCriteriaVo.getNameFieldAttrId(); + String columnName = null; + if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { + System.out.println("b"); + columnName = filterItemFieldName2ColumnMap.get("name").toString(); + } else { + System.out.println("c"); + columnName = filterItemFieldName2ColumnMap.get("ip").toString(); + } + ExpressionVo orExp = null; + for (String item : queryCriteriaVo.getBatchSearchList()) { + if (orExp != null) { + orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); } else { - System.out.println("c"); - fieldAttrId = queryCriteriaVo.getIpFieldAttrId(); + orExp = $sql.exp(columnName, "like", $sql.value(item)); } - ExpressionVo expressionVo = $sql.exp( - $sql.exp("ffc2.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), - "and", - $sql.exp("ffc2.target_field", "=", fieldAttrId)); - joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc2").withOn(expressionVo)); - } - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("fw2.id", "=", "ffc2.word_id"), - "and", - $sql.exp("fw2.word", "in", queryCriteriaVo.getBatchSearchList())); - joinList.add($sql.join("join", "fulltextindex_word", "fw2").withOn(expressionVo)); } + whereExpressionList.add($sql.exp("(", orExp, ")")); } /* @@ -3934,10 +3724,10 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc AND a.`env_id` is null */ - if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { - System.out.println("s"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); - } +// if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { +// System.out.println("s"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); +// } /* AND a.`app_system_id` IN @@ -3970,10 +3760,10 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { - System.out.println("v"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); - } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { +// System.out.println("v"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); +// } /* AND a.`id` IN @@ -3982,10 +3772,10 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { - System.out.println("w"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); - } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { +// System.out.println("w"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); +// } /* AND a.`inspect_status` IN @@ -4003,7 +3793,7 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc return sqlVo; } - private SqlVo getSqlVo2(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + private SqlVo getSqlVoForInspectConfigFile(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { SqlVo sqlVo = new SqlVo(); List joinList = new ArrayList<>(); List whereExpressionList = new ArrayList<>(); @@ -4050,25 +3840,25 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - String columnName = null; - if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { - System.out.println("b"); - columnName = filterItemFieldName2ColumnMap.get("name").toString(); - } else { - System.out.println("c"); - columnName = filterItemFieldName2ColumnMap.get("ip").toString(); - } - ExpressionVo orExp = null; - for (String item : queryCriteriaVo.getBatchSearchList()) { - if (orExp != null) { - orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); - } else { - orExp = $sql.exp(columnName, "like", $sql.value(item)); - } - } - whereExpressionList.add($sql.exp("(", orExp, ")")); - } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { +// String columnName = null; +// if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { +// System.out.println("b"); +// columnName = filterItemFieldName2ColumnMap.get("name").toString(); +// } else { +// System.out.println("c"); +// columnName = filterItemFieldName2ColumnMap.get("ip").toString(); +// } +// ExpressionVo orExp = null; +// for (String item : queryCriteriaVo.getBatchSearchList()) { +// if (orExp != null) { +// orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); +// } else { +// orExp = $sql.exp(columnName, "like", $sql.value(item)); +// } +// } +// whereExpressionList.add($sql.exp("(", orExp, ")")); +// } /* LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` @@ -4120,11 +3910,15 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { System.out.println("f"); - joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); +// joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); +// ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); } + if (queryCriteriaVo.getJobId() != null) { + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + whereExpressionList.add($sql.exp("ajpn.job_id", "=", queryCriteriaVo.getJobId())); + } /* LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id @@ -4139,27 +3933,27 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); - - List strList = new ArrayList<>(); - if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { - System.out.println("g"); - strList.add("autoexec"); - } else { - System.out.println("h"); - strList.add("autoexec"); - strList.add("readonly"); - strList.add("maintain"); - } - ExpressionVo expressionVo = $sql.exp( - $sql.exp("cg.id", "=", "cga.group_id"), - "and", - $sql.exp("cg.type", "in", strList) - ); - joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); - } +// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { +// joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); +// joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); +// +// List strList = new ArrayList<>(); +// if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { +// System.out.println("g"); +// strList.add("autoexec"); +// } else { +// System.out.println("h"); +// strList.add("autoexec"); +// strList.add("readonly"); +// strList.add("maintain"); +// } +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("cg.id", "=", "cga.group_id"), +// "and", +// $sql.exp("cg.type", "in", strList) +// ); +// joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); +// } /* @@ -4211,49 +4005,50 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { - System.out.println("i"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); - } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - ExpressionVo orLeftExpressionVo = null; - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { - System.out.println("j"); - orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); - } else { - System.out.println("k"); - orLeftExpressionVo = $sql.exp(1, "=", 0); - } - ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); - - ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); - ExpressionVo orRightExpressionVo2 = null; - if (queryCriteriaVo.getAuthenticationInfo() != null) { - System.out.println("l"); - List uuidList = new ArrayList<>(); - if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { - uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { - uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { - uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); - } - if (CollectionUtils.isNotEmpty(uuidList)) { - System.out.println("m"); - orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); - } - } - if (orRightExpressionVo2 != null) { - System.out.println("n"); - orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); - } else { - System.out.println("o"); - orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); - } - ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); - whereExpressionList.add(orExpressionVo); - } + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); +// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { +// System.out.println("i"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); +// } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { +// ExpressionVo orLeftExpressionVo = null; +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { +// System.out.println("j"); +// orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); +// } else { +// System.out.println("k"); +// orLeftExpressionVo = $sql.exp(1, "=", 0); +// } +// ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); +// +// ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); +// ExpressionVo orRightExpressionVo2 = null; +// if (queryCriteriaVo.getAuthenticationInfo() != null) { +// System.out.println("l"); +// List uuidList = new ArrayList<>(); +// if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { +// uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); +// } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { +// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); +// } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { +// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); +// } +// if (CollectionUtils.isNotEmpty(uuidList)) { +// System.out.println("m"); +// orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); +// } +// } +// if (orRightExpressionVo2 != null) { +// System.out.println("n"); +// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); +// } else { +// System.out.println("o"); +// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); +// } +// ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); +// whereExpressionList.add(orExpressionVo); +// } } /* @@ -4358,740 +4153,16 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { System.out.println("x"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_cientity_inspect", "cci").withOn($sql.exp( + $sql.exp("cci.ci_entity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + "and", + $sql.exp("cci.job_id", "=", "ajpn.job_id") + ))); + whereExpressionList.add($sql.exp("cci.inspect_status", "in", queryCriteriaVo.getInspectStatusList())); } sqlVo.withJoinList(joinList); sqlVo.withWhereExpressionList(whereExpressionList); return sqlVo; } - - private SqlVo getSqlVo3(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { - SqlVo sqlVo = new SqlVo(); - List joinList = new ArrayList<>(); - List whereExpressionList = new ArrayList<>(); - /* - - JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) - JOIN fulltextindex_word fw ON ffc.word_id = fw.id - AND (fw.word IN - - #{item} - - ) - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { -// System.out.println("a"); -// { -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), -// "and", -// $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); -// joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); -// } -// { -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("fw.id", "=", "ffc.word_id"), -// "and", -// $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); -// joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); -// } -// } - /* - - AND - - - a.`name` LIKE #{item} - - - - - a.`ip` LIKE #{item} - - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { -// String columnName = null; -// if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { -// System.out.println("b"); -// columnName = filterItemFieldName2ColumnMap.get("name").toString(); -// } else { -// System.out.println("c"); -// columnName = filterItemFieldName2ColumnMap.get("ip").toString(); -// } -// ExpressionVo orExp = null; -// for (String item : queryCriteriaVo.getBatchSearchList()) { -// if (orExp != null) { -// orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); -// } else { -// orExp = $sql.exp(columnName, "like", $sql.value(item)); -// } -// } -// whereExpressionList.add($sql.exp("(", orExp, ")")); -// } - /* - - LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` - LEFT JOIN `cmdb_resourcecenter_account` c ON c.`id` = b.`account_id` - - - - AND c.`protocol_id` IN - - #{protocolId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { - System.out.println("d"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); - whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); - } - /* - - LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` - - - - AND d.`tag_id` IN - - #{tagId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { - System.out.println("e"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); - } - /* - - left join autoexec_job_resource_inspect ajri on ajri.resource_id=a.id - left join autoexec_job_phase_node ajpn on ajpn.job_phase_id =ajri.phase_id AND ajpn.resource_id = a.id - - - - AND a.`inspect_status` IN - - #{inspectStatus} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { - System.out.println("f"); -// joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); -// ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); - } - if (queryCriteriaVo.getJobId() != null) { - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - whereExpressionList.add($sql.exp("ajpn.job_id", "=", queryCriteriaVo.getJobId())); - } - /* - - LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id - LEFT JOIN cmdb_group_auth cga ON ccg.group_id = cga.group_id - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('autoexec') - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('readonly','maintain','autoexec') - - - - */ -// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { -// joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); -// joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); -// -// List strList = new ArrayList<>(); -// if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { -// System.out.println("g"); -// strList.add("autoexec"); -// } else { -// System.out.println("h"); -// strList.add("autoexec"); -// strList.add("readonly"); -// strList.add("maintain"); -// } -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("cg.id", "=", "cga.group_id"), -// "and", -// $sql.exp("cg.type", "in", strList) -// ); -// joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); -// } - /* - - - AND a.`type_id` IN - - #{typeId} - - - - AND ( - - - a.`type_id` IN - - #{authedTypeId} - - - - 1 = 0 - - - or ( - cg.id is not null and - a.`type_id` IN - - #{typeId} - - and - ((cga.auth_type = 'common' AND cga.auth_uuid = 'alluser') - - OR cga.auth_uuid IN ( - #{authenticationInfo.userUuid} - - - #{item} - - - - - #{item} - - - ) - - ) - ) - ) - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); -// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { -// System.out.println("i"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); -// } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { -// ExpressionVo orLeftExpressionVo = null; -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { -// System.out.println("j"); -// orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); -// } else { -// System.out.println("k"); -// orLeftExpressionVo = $sql.exp(1, "=", 0); -// } -// ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); -// -// ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); -// ExpressionVo orRightExpressionVo2 = null; -// if (queryCriteriaVo.getAuthenticationInfo() != null) { -// System.out.println("l"); -// List uuidList = new ArrayList<>(); -// if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { -// uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); -// } -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { -// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); -// } -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { -// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); -// } -// if (CollectionUtils.isNotEmpty(uuidList)) { -// System.out.println("m"); -// orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); -// } -// } -// if (orRightExpressionVo2 != null) { -// System.out.println("n"); -// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); -// } else { -// System.out.println("o"); -// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); -// } -// ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); -// whereExpressionList.add(orExpressionVo); -// } - } - /* - - AND a.`state_id` IN - - #{stateId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { - System.out.println("p"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); - } - /* - - AND a.`vendor_id` IN - - #{vendorId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { - System.out.println("q"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); - } - /* - - AND a.`env_id` IN - - #{envId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { - System.out.println("r"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); - } - /* - - AND a.`env_id` is null - - */ -// if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { -// System.out.println("s"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); -// } - /* - - AND a.`app_system_id` IN - - #{appSystemId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { - System.out.println("t"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); - } - /* - - AND a.`app_module_id` IN - - #{appModuleId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { - System.out.println("u"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); - } - /* - - AND a.`id` IN - - #{id} - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { -// System.out.println("v"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); -// } - /* - - AND a.`id` IN - - #{id} - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { -// System.out.println("w"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); -// } - /* - - AND a.`inspect_status` IN - - #{inspectStatus} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { - System.out.println("x"); - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_cientity_inspect", "cci").withOn($sql.exp( - $sql.exp("cci.ci_entity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), - "and", - $sql.exp("cci.job_id", "=", "ajpn.job_id") - ))); - whereExpressionList.add($sql.exp("cci.inspect_status", "in", queryCriteriaVo.getInspectStatusList())); - } - sqlVo.withJoinList(joinList); - sqlVo.withWhereExpressionList(whereExpressionList); - return sqlVo; - } - - private List getJoinList(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { - List joinList = new ArrayList<>(); - /* - - JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) - JOIN fulltextindex_word fw ON ffc.word_id = fw.id - AND (fw.word IN - - #{item} - - ) - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), - "and", - $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); - joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); - } - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("fw.id", "=", "ffc.word_id"), - "and", - $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); - joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); - } - } - /* - - JOIN fulltextindex_field_cmdb ffc2 ON ffc2.target_id = a.id - - - AND ffc2.target_field = #{nameFieldAttrId} - - - AND ffc2.target_field = #{ipFieldAttrId} - - - JOIN fulltextindex_word fw2 ON ffc2.word_id = fw2.id - AND (fw2.word IN - - #{item} - - ) - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - { - Long fieldAttrId = null; - if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { - fieldAttrId = queryCriteriaVo.getNameFieldAttrId(); - } else { - fieldAttrId = queryCriteriaVo.getIpFieldAttrId(); - } - ExpressionVo expressionVo = $sql.exp( - $sql.exp("ffc2.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), - "and", - $sql.exp("ffc2.target_field", "=", fieldAttrId)); - joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc2").withOn(expressionVo)); - } - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("fw2.id", "=", "ffc2.word_id"), - "and", - $sql.exp("fw2.word", "in", queryCriteriaVo.getBatchSearchList())); - joinList.add($sql.join("join", "fulltextindex_word", "fw2").withOn(expressionVo)); - } - } - /* - - LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` - LEFT JOIN `cmdb_resourcecenter_account` c ON c.`id` = b.`account_id` - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); - } - /* - - LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - } - /* - - left join autoexec_job_resource_inspect ajri on ajri.resource_id=a.id - left join autoexec_job_phase_node ajpn on ajpn.job_phase_id =ajri.phase_id AND ajpn.resource_id = a.id - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { - joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); - } - /* - - LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id - LEFT JOIN cmdb_group_auth cga ON ccg.group_id = cga.group_id - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('autoexec') - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('readonly','maintain','autoexec') - - - - */ - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); - - List strList = new ArrayList<>(); - if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { - strList.add("autoexec"); - } else { - strList.add("autoexec"); - strList.add("readonly"); - strList.add("maintain"); - } - ExpressionVo expressionVo = $sql.exp( - $sql.exp("cg.id", "=", "cga.group_id"), - "and", - $sql.exp("cg.type", "in", strList) - ); - joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); - } - return joinList; - } - - private List getWhereExpressionList(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { - List whereExpressionList = new ArrayList<>(); - /* - - AND c.`protocol_id` IN - - #{protocolId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { - whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); - } - /* - - AND d.`tag_id` IN - - #{tagId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { - whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); - } - /* - - AND a.`inspect_status` IN - - #{inspectStatus} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { - whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); - } - /* - - - AND a.`type_id` IN - - #{typeId} - - - - AND ( - - - a.`type_id` IN - - #{authedTypeId} - - - - 1 = 0 - - - or ( - cg.id is not null and - a.`type_id` IN - - #{typeId} - - and - ((cga.auth_type = 'common' AND cga.auth_uuid = 'alluser') - - OR cga.auth_uuid IN ( - #{authenticationInfo.userUuid} - - - #{item} - - - - - #{item} - - - ) - - ) - ) - ) - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); - } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - ExpressionVo orLeftExpressionVo = null; - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { - orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); - } else { - orLeftExpressionVo = $sql.exp(1, "=", 0); - } - ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); - - ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); - ExpressionVo orRightExpressionVo2 = null; - if (queryCriteriaVo.getAuthenticationInfo() != null) { - List uuidList = new ArrayList<>(); - if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { - uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { - uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { - uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); - } - if (CollectionUtils.isNotEmpty(uuidList)) { - orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); - } - } - if (orRightExpressionVo2 != null) { - orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); - } else { - orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); - } - ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); - whereExpressionList.add(orExpressionVo); - } - } - /* - - AND a.`state_id` IN - - #{stateId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); - } - /* - - AND a.`vendor_id` IN - - #{vendorId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); - } - /* - - AND a.`env_id` IN - - #{envId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); - } - /* - - AND a.`env_id` is null - - */ - if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); - } - /* - - AND a.`app_system_id` IN - - #{appSystemId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); - } - /* - - AND a.`app_module_id` IN - - #{appModuleId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); - } - /* - - AND a.`id` IN - - #{id} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); - } - /* - - AND a.`id` IN - - #{id} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); - } - /* - - AND a.`inspect_status` IN - - #{inspectStatus} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); - } - return whereExpressionList; - } } -- Gitee From 8c121b9e86951a588469fd5d6530d664499eadc7 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 13 Aug 2025 15:52:52 +0800 Subject: [PATCH 13/15] =?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 --- .../config/SaveResourceEntityApi.java | 7 +- .../handler/ResourceViewRebuildHandler.java | 6 +- .../DefaultResourceCenterDataSourceImpl.java | 10 +- .../IResourceCenterResourceService.java | 144 - .../resource/ResourceBuildSqlService.java | 170 + .../resource/ResourceBuildSqlServiceImpl.java | 3668 +++++++++++++++++ .../ResourceCenterResourceServiceImpl.java | 3595 +--------------- 7 files changed, 3855 insertions(+), 3745 deletions(-) create mode 100644 src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlService.java create mode 100644 src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlServiceImpl.java diff --git a/src/main/java/neatlogic/module/cmdb/api/resourcecenter/config/SaveResourceEntityApi.java b/src/main/java/neatlogic/module/cmdb/api/resourcecenter/config/SaveResourceEntityApi.java index f6869d49..6b26d4a0 100644 --- a/src/main/java/neatlogic/module/cmdb/api/resourcecenter/config/SaveResourceEntityApi.java +++ b/src/main/java/neatlogic/module/cmdb/api/resourcecenter/config/SaveResourceEntityApi.java @@ -35,7 +35,7 @@ import neatlogic.framework.restful.core.IValid; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; import neatlogic.module.cmdb.dao.mapper.ci.CiMapper; import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceEntityMapper; -import neatlogic.module.cmdb.service.resourcecenter.resource.IResourceCenterResourceService; +import neatlogic.module.cmdb.service.resourcecenter.resource.ResourceBuildSqlService; import neatlogic.module.cmdb.utils.ResourceEntityFactory; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -56,8 +56,9 @@ public class SaveResourceEntityApi extends PrivateApiComponentBase { private CiMapper ciMapper; @Resource private ResourceEntityMapper resourceEntityMapper; + @Resource - private IResourceCenterResourceService resourceCenterResourceService; + private ResourceBuildSqlService resourceBuildSqlService; @Override public String getToken() { @@ -121,7 +122,7 @@ public class SaveResourceEntityApi extends PrivateApiComponentBase { } // if (!configEquals) { resourceEntityVo.setError(null); - String sql = resourceCenterResourceService.buildResourceView(resourceEntityVo); + String sql = resourceBuildSqlService.buildResourceView(resourceEntityVo); if (StringUtils.isNotBlank(resourceEntityVo.getError())) { resourceEntityVo.setStatus(Status.ERROR.getValue()); } else { diff --git a/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/ResourceViewRebuildHandler.java b/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/ResourceViewRebuildHandler.java index a792e903..4423f711 100644 --- a/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/ResourceViewRebuildHandler.java +++ b/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/ResourceViewRebuildHandler.java @@ -25,7 +25,7 @@ import neatlogic.framework.dao.mapper.SchemaMapper; import neatlogic.framework.rebuilddatabaseview.core.IRebuildDataBaseView; import neatlogic.framework.rebuilddatabaseview.core.ViewStatusInfo; import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceEntityMapper; -import neatlogic.module.cmdb.service.resourcecenter.resource.IResourceCenterResourceService; +import neatlogic.module.cmdb.service.resourcecenter.resource.ResourceBuildSqlService; import neatlogic.module.cmdb.utils.ResourceEntityFactory; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -39,7 +39,7 @@ import java.util.Objects; public class ResourceViewRebuildHandler implements IRebuildDataBaseView { @Resource - private IResourceCenterResourceService resourceCenterResourceService; + private ResourceBuildSqlService resourceBuildSqlService; @Resource private ResourceEntityMapper resourceEntityMapper; @@ -150,7 +150,7 @@ public class ResourceViewRebuildHandler implements IRebuildDataBaseView { private ViewStatusInfo rebuildSceneEntity(ResourceEntityVo resourceEntityVo) { if (resourceEntityVo.getConfig() != null) { resourceEntityVo.setError(null); - String sql = resourceCenterResourceService.buildResourceView(resourceEntityVo); + String sql = resourceBuildSqlService.buildResourceView(resourceEntityVo); if (StringUtils.isNotBlank(resourceEntityVo.getError())) { resourceEntityVo.setStatus(Status.ERROR.getValue()); } else { diff --git a/src/main/java/neatlogic/module/cmdb/resourcecenter/datasource/handler/DefaultResourceCenterDataSourceImpl.java b/src/main/java/neatlogic/module/cmdb/resourcecenter/datasource/handler/DefaultResourceCenterDataSourceImpl.java index 576e160c..f523447b 100644 --- a/src/main/java/neatlogic/module/cmdb/resourcecenter/datasource/handler/DefaultResourceCenterDataSourceImpl.java +++ b/src/main/java/neatlogic/module/cmdb/resourcecenter/datasource/handler/DefaultResourceCenterDataSourceImpl.java @@ -45,6 +45,7 @@ import neatlogic.module.cmdb.dao.mapper.globalattr.GlobalAttrMapper; import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceEntityMapper; import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper; import neatlogic.module.cmdb.service.resourcecenter.resource.IResourceCenterResourceService; +import neatlogic.module.cmdb.service.resourcecenter.resource.ResourceBuildSqlService; import neatlogic.module.cmdb.utils.ResourceEntityFactory; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -82,6 +83,9 @@ public class DefaultResourceCenterDataSourceImpl implements IResourceCenterDataS @Resource private IResourceCenterResourceService resourceCenterResourceService; + @Resource + private ResourceBuildSqlService resourceBuildSqlService; + private final Map> headFieldHandlerMap = new LinkedHashMap<>(); @PostConstruct @@ -645,7 +649,7 @@ public class DefaultResourceCenterDataSourceImpl implements IResourceCenterDataS public List getResourceList(ResourceSearchVo searchVo) { String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); List resultList = new ArrayList<>(); - String getResourceIdListSql = resourceCenterResourceService.buildGetResourceIdListSql(searchVo); + String getResourceIdListSql = resourceBuildSqlService.buildGetResourceIdListSql(searchVo); List idList = resourceMapper.getResourceIdListBySql(getResourceIdListSql); if (Objects.equals(enable, "1")) { List oldIdList = resourceMapper.getResourceIdList(searchVo); @@ -657,7 +661,7 @@ public class DefaultResourceCenterDataSourceImpl implements IResourceCenterDataS } } if (CollectionUtils.isNotEmpty(idList)) { - String getResourceListSql = resourceCenterResourceService.buildGetResourceListSql(idList); + String getResourceListSql = resourceBuildSqlService.buildGetResourceListSql(idList); List resourceList = resourceMapper.getResourceListBySql(getResourceListSql); if (Objects.equals(enable, "1")) { List oldResourceList = resourceMapper.getResourceListByIdList(idList); @@ -673,7 +677,7 @@ public class DefaultResourceCenterDataSourceImpl implements IResourceCenterDataS } } if (Objects.equals(searchVo.getRowNum(), 0)) { - String getResourceCountSql = resourceCenterResourceService.buildGetResourceCountSql(searchVo); + String getResourceCountSql = resourceBuildSqlService.buildGetResourceCountSql(searchVo); int rowNum = resourceMapper.getCountBySql(getResourceCountSql); if (Objects.equals(enable, "1")) { int oldRowNum = 0; 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 81a9d3b0..527c345c 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,11 +16,9 @@ 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.AccountComponentVo; 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.config.ResourceEntityVo; import neatlogic.framework.cmdb.dto.tag.TagVo; import java.util.List; @@ -101,146 +99,4 @@ public interface IResourceCenterResourceService { */ void addAccountInformation(List resourceList); - /** - * 构建单个视图 - * @param resourceEntityVo - * @return - */ - String buildResourceView(ResourceEntityVo resourceEntityVo); - - /** - * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceIdList(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} - * @param searchVo - * @return - */ - String buildGetResourceIdListSql(ResourceSearchVo searchVo); - - /** - * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceCount(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} - * @param searchVo - * @return - */ - String buildGetResourceCountSql(ResourceSearchVo searchVo); - - /** - * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceListByIdList(java.util.List)} - * @param idList - * @param selectFieldNameList - * @return - */ - String buildGetResourceListSql(List idList, List selectFieldNameList); - - /** - * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceListByIdList(java.util.List)} - * @param idList - * @return - */ - String buildGetResourceListSql(List idList); - - /** - * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceCountByNameKeyword(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} - * @param searchVo - * @return - */ - String buildGetResourceCountByNameKeywordSql(ResourceSearchVo searchVo); - - /** - * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceCountByIpKeyword(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} - * @param searchVo - * @return - */ - String buildGetResourceCountByIpKeywordSql(ResourceSearchVo searchVo); - - /** - * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getAuthResourceList(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} - * @param searchVo - * @return - */ - String buildGetAuthResourceListSql(ResourceSearchVo searchVo); - - /** - * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceListByIpAndPortAndNameWithFilter(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} - * @param searchVo - * @return - */ - String buildGetResourceListByIpAndPortAndNameWithFilterSql(ResourceSearchVo searchVo); - - /** - * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceTypeIdListByAuth(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} - * @param searchVo - * @return - */ - String buildGetResourceTypeIdListByAuthSql(ResourceSearchVo searchVo); - - String buildGetResourceIdByIpAndPortAndNameSql(ResourceSearchVo searchVo); - - String buildGetResourceIdListByIpAndPortAndNameSql(ResourceSearchVo searchVo); - - String buildGetResourceListByIpAndPortAndNameSql(ResourceSearchVo searchVo); - - String buildGetResourceByIdListSql(List idList); - - String buildGetResourceByIdSql(Long id, List selectFieldNameList); - - String buildGetResourceByIdSql(Long id); - - String buildGetResourceIdByResourceIdSql(Long id); - - String buildCheckResourceIdListIsExistsSql(List idList); - - String buildGetResourceIdListByAppSystemIdAndModuleIdAndEnvIdSql(ResourceVo resourceVo); - - String buildGetResourceListByTypeIdListAndIpListSql(List typeIdList, List ipList); - - String buildGetResourceByIpAndPortAndNameAndTypeNameSql(String ip, Integer port, String name, String typeName); - - String buildGetResourceByIpAndPortSql(String ip, Integer port); - - String buildSearchAccountComponentSql(AccountComponentVo accountComponentVo); - - String buildSearchAccountComponentCountSql(AccountComponentVo accountComponentVo); - - String buildGetAppEnvListByAppSystemIdAndAppModuleIdSql(Long appSystemId, Long appModuleId); - - String buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(Long appSystemId); - -// String buildGetResourceCountByDynamicConditionSql(); -// String buildGetResourceIdListByDynamicConditionSql(); - - // InspectMapper - String buildGetInspectResourceListByIdListSql(List idList, List selectFieldNameList); - - String buildGetInspectResourceListByIdListSql(List idList); - - String buildGetInspectResourceCountSql(ResourceSearchVo searchVo); - - String buildGetInspectResourceCountByIpKeywordSql(ResourceSearchVo searchVo); - - String buildGetInspectResourceCountByNameKeywordSql(ResourceSearchVo searchVo); - - String buildGetInspectResourceIdListSql(ResourceSearchVo searchVo); - - String buildGetInspectAutoexecJobNodeResourceCountSql(ResourceSearchVo searchVo, Long jobId); - - String buildGetInspectAutoexecJobNodeResourceCountByIpKeywordSql(ResourceSearchVo searchVo, Long jobId); - - String buildGetInspectAutoexecJobNodeResourceCountByNameKeywordSql(ResourceSearchVo searchVo, Long jobId); - - String buildGetInspectAutoexecJobNodeResourceIdListSql(ResourceSearchVo searchVo, Long jobId); - - String buildGetInspectResourceListByIdListAndJobIdSql(List IdList, Long jobId); - - String buildGetInspectResourceListByIdListAndJobIdSql(List IdList, Long jobId, List selectFieldNameList); - - // InspectConfigFileMapper - String buildGetInspectConfigFileResourceIdListSql(ResourceSearchVo searchVo); - - String buildGetInspectConfigFilePathCountSql(ResourceSearchVo searchVo); - - String buildGetInspectConfigFilePathIdListSql(ResourceSearchVo searchVo); - - String buildGetInspectConfigFilePathListSql(List idList); - - String buildGetInspectConfigFilePathListByJobIdSql(Long jobId); - } diff --git a/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlService.java b/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlService.java new file mode 100644 index 00000000..63fa60d8 --- /dev/null +++ b/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlService.java @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2025 深圳极向量科技有限公司 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.cmdb.service.resourcecenter.resource; + +import neatlogic.framework.cmdb.dto.resourcecenter.AccountComponentVo; +import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; +import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; +import neatlogic.framework.cmdb.dto.resourcecenter.config.ResourceEntityVo; + +import java.util.List; + +public interface ResourceBuildSqlService { + + /** + * 构建单个视图 + * @param resourceEntityVo + * @return + */ + String buildResourceView(ResourceEntityVo resourceEntityVo); + + /** + * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceIdList(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} + * @param searchVo + * @return + */ + String buildGetResourceIdListSql(ResourceSearchVo searchVo); + + /** + * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceCount(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} + * @param searchVo + * @return + */ + String buildGetResourceCountSql(ResourceSearchVo searchVo); + + /** + * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceListByIdList(java.util.List)} + * @param idList + * @param selectFieldNameList + * @return + */ + String buildGetResourceListSql(List idList, List selectFieldNameList); + + /** + * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceListByIdList(java.util.List)} + * @param idList + * @return + */ + String buildGetResourceListSql(List idList); + + /** + * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceCountByNameKeyword(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} + * @param searchVo + * @return + */ + String buildGetResourceCountByNameKeywordSql(ResourceSearchVo searchVo); + + /** + * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceCountByIpKeyword(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} + * @param searchVo + * @return + */ + String buildGetResourceCountByIpKeywordSql(ResourceSearchVo searchVo); + + /** + * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getAuthResourceList(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} + * @param searchVo + * @return + */ + String buildGetAuthResourceListSql(ResourceSearchVo searchVo); + + /** + * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceListByIpAndPortAndNameWithFilter(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} + * @param searchVo + * @return + */ + String buildGetResourceListByIpAndPortAndNameWithFilterSql(ResourceSearchVo searchVo); + + /** + * 生成SQL等效于{@link neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper#getResourceTypeIdListByAuth(neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo)} + * @param searchVo + * @return + */ + String buildGetResourceTypeIdListByAuthSql(ResourceSearchVo searchVo); + + String buildGetResourceIdByIpAndPortAndNameSql(ResourceSearchVo searchVo); + + String buildGetResourceIdListByIpAndPortAndNameSql(ResourceSearchVo searchVo); + + String buildGetResourceListByIpAndPortAndNameSql(ResourceSearchVo searchVo); + + String buildGetResourceByIdListSql(List idList); + + String buildGetResourceByIdSql(Long id, List selectFieldNameList); + + String buildGetResourceByIdSql(Long id); + + String buildGetResourceIdByResourceIdSql(Long id); + + String buildCheckResourceIdListIsExistsSql(List idList); + + String buildGetResourceIdListByAppSystemIdAndModuleIdAndEnvIdSql(ResourceVo resourceVo); + + String buildGetResourceListByTypeIdListAndIpListSql(List typeIdList, List ipList); + + String buildGetResourceByIpAndPortAndNameAndTypeNameSql(String ip, Integer port, String name, String typeName); + + String buildGetResourceByIpAndPortSql(String ip, Integer port); + + String buildSearchAccountComponentSql(AccountComponentVo accountComponentVo); + + String buildSearchAccountComponentCountSql(AccountComponentVo accountComponentVo); + + String buildGetAppEnvListByAppSystemIdAndAppModuleIdSql(Long appSystemId, Long appModuleId); + + String buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(Long appSystemId); + +// String buildGetResourceCountByDynamicConditionSql(); +// String buildGetResourceIdListByDynamicConditionSql(); + + // InspectMapper + String buildGetInspectResourceListByIdListSql(List idList, List selectFieldNameList); + + String buildGetInspectResourceListByIdListSql(List idList); + + String buildGetInspectResourceCountSql(ResourceSearchVo searchVo); + + String buildGetInspectResourceCountByIpKeywordSql(ResourceSearchVo searchVo); + + String buildGetInspectResourceCountByNameKeywordSql(ResourceSearchVo searchVo); + + String buildGetInspectResourceIdListSql(ResourceSearchVo searchVo); + + String buildGetInspectAutoexecJobNodeResourceCountSql(ResourceSearchVo searchVo, Long jobId); + + String buildGetInspectAutoexecJobNodeResourceCountByIpKeywordSql(ResourceSearchVo searchVo, Long jobId); + + String buildGetInspectAutoexecJobNodeResourceCountByNameKeywordSql(ResourceSearchVo searchVo, Long jobId); + + String buildGetInspectAutoexecJobNodeResourceIdListSql(ResourceSearchVo searchVo, Long jobId); + + String buildGetInspectResourceListByIdListAndJobIdSql(List IdList, Long jobId); + + String buildGetInspectResourceListByIdListAndJobIdSql(List IdList, Long jobId, List selectFieldNameList); + + // InspectConfigFileMapper + String buildGetInspectConfigFileResourceIdListSql(ResourceSearchVo searchVo); + + String buildGetInspectConfigFilePathCountSql(ResourceSearchVo searchVo); + + String buildGetInspectConfigFilePathIdListSql(ResourceSearchVo searchVo); + + String buildGetInspectConfigFilePathListSql(List idList); + + String buildGetInspectConfigFilePathListByJobIdSql(Long jobId); +} diff --git a/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlServiceImpl.java b/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlServiceImpl.java new file mode 100644 index 00000000..a65dffe2 --- /dev/null +++ b/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlServiceImpl.java @@ -0,0 +1,3668 @@ +/* + * Copyright (C) 2025 深圳极向量科技有限公司 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.cmdb.service.resourcecenter.resource; + +import neatlogic.framework.asynchronization.threadlocal.TenantContext; +import neatlogic.framework.asynchronization.threadlocal.UserContext; +import neatlogic.framework.cmdb.crossover.IResourceBuildSqlCrossoverService; +import neatlogic.framework.cmdb.dto.ci.AttrVo; +import neatlogic.framework.cmdb.dto.ci.CiVo; +import neatlogic.framework.cmdb.dto.globalattr.GlobalAttrVo; +import neatlogic.framework.cmdb.dto.resourcecenter.AccountComponentVo; +import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; +import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; +import neatlogic.framework.cmdb.dto.resourcecenter.config.*; +import neatlogic.framework.cmdb.enums.RelDirectionType; +import neatlogic.framework.cmdb.exception.ci.CiNotFoundException; +import neatlogic.framework.cmdb.exception.resourcecenter.ResourceViewFieldMappingException; +import neatlogic.framework.cmdb.utils.ResourceViewGenerateSqlUtil; +import neatlogic.framework.cmdb.utils.ResourceViewGenerateSqlUtilForTiDB; +import neatlogic.framework.dao.mapper.DataBaseViewInfoMapper; +import neatlogic.framework.dao.mapper.SchemaMapper; +import neatlogic.framework.dto.DataBaseViewInfoVo; +import neatlogic.framework.sqlgenerator.$sql; +import neatlogic.framework.sqlgenerator.ExpressionVo; +import neatlogic.framework.sqlgenerator.JoinVo; +import neatlogic.framework.sqlgenerator.SqlVo; +import neatlogic.framework.store.mysql.DatabaseVendor; +import neatlogic.framework.store.mysql.DatasourceManager; +import neatlogic.framework.transaction.core.EscapeTransactionJob; +import neatlogic.framework.util.Md5Util; +import neatlogic.module.cmdb.dao.mapper.ci.AttrMapper; +import neatlogic.module.cmdb.dao.mapper.ci.CiMapper; +import neatlogic.module.cmdb.dao.mapper.globalattr.GlobalAttrMapper; +import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceAccountMapper; +import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceEntityMapper; +import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper; +import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceTagMapper; +import neatlogic.module.cmdb.utils.ResourceEntityFactory; +import net.sf.jsqlparser.schema.Column; +import net.sf.jsqlparser.schema.Table; +import net.sf.jsqlparser.statement.create.table.ColDataType; +import net.sf.jsqlparser.statement.create.table.ColumnDefinition; +import net.sf.jsqlparser.statement.create.table.CreateTable; +import net.sf.jsqlparser.statement.select.PlainSelect; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; + +@Service +public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IResourceBuildSqlCrossoverService { + + private final Logger logger = LoggerFactory.getLogger(ResourceBuildSqlServiceImpl.class); + private final static List defaultAttrList = Arrays.asList("_id", "_uuid", "_name", "_fcu", "_fcd", "_lcu", "_lcd", "_inspectStatus", "_inspectTime", "_monitorStatus", "_monitorTime", "_typeId", "_typeName", "_typeLabel"); + + @Resource + ResourceMapper resourceMapper; + @Resource + ResourceTagMapper resourceTagMapper; + @Resource + ResourceAccountMapper resourceAccountMapper; + + @Resource + private CiMapper ciMapper; + + @Resource + private AttrMapper attrMapper; + + @Resource + private GlobalAttrMapper globalAttrMapper; + + @Resource + private ResourceEntityMapper resourceEntityMapper; + + @Resource + private SchemaMapper schemaMapper; + + @Resource + private DataBaseViewInfoMapper dataBaseViewInfoMapper; + + @Override + public String buildResourceView(ResourceEntityVo resourceEntityVo) { + String viewName = resourceEntityVo.getName(); + String select = null; + String error = StringUtils.EMPTY; + try { + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + select = resourceViewGenerateSqlUtilForTiDB.getSql().toString(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + select = resourceViewGenerateSqlUtil.getSql().toString(); + } + String md5 = Md5Util.encryptMD5(select); + boolean needCreateView = true; + String tableType = schemaMapper.checkTableOrViewIsExists(TenantContext.get().getDataDbName(), viewName); + if (Objects.equals(tableType, "VIEW")) { + DataBaseViewInfoVo dataBaseViewInfoVo = dataBaseViewInfoMapper.getDataBaseViewInfoByViewName(viewName); + if (dataBaseViewInfoVo != null) { + // md5相同就不用更新视图了 + if (Objects.equals(md5, dataBaseViewInfoVo.getMd5())) { + try { + resourceEntityMapper.getResourceEntityViewDataList(viewName, 0, 1); + needCreateView = false; + } catch (Exception e) { + } + } + } + } + if (needCreateView) { + String selectSql = select; + EscapeTransactionJob.State s = new EscapeTransactionJob(() -> { + if (Objects.equals(tableType, "BASE TABLE")) { + schemaMapper.deleteTable(TenantContext.get().getDataDbName() + "." + viewName); + } + String sql = "CREATE OR REPLACE VIEW " + TenantContext.get().getDataDbName() + "." + viewName + " AS " + selectSql; + schemaMapper.insertView(sql); + }).execute(); + if (s.isSucceed()) { + DataBaseViewInfoVo dataBaseViewInfoVo = new DataBaseViewInfoVo(); + dataBaseViewInfoVo.setViewName(viewName); + dataBaseViewInfoVo.setMd5(md5); + dataBaseViewInfoVo.setLcu(UserContext.get().getUserUuid()); + dataBaseViewInfoMapper.insertDataBaseViewInfo(dataBaseViewInfoVo); + } else { + error = s.getError(); + } + } + } catch (Exception ex) { + error = ExceptionUtils.getStackTrace(ex); + } finally { + if (StringUtils.isNotBlank(error)) { + String tableType = schemaMapper.checkTableOrViewIsExists(TenantContext.get().getDataDbName(), viewName); + if (!Objects.equals(tableType, "BASE TABLE")) { + EscapeTransactionJob.State s = new EscapeTransactionJob(() -> { + schemaMapper.deleteView(TenantContext.get().getDataDbName() + "." + viewName); + List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName(viewName); + Table table = new Table(); + table.setName(viewName); + table.setSchemaName(TenantContext.get().getDataDbName()); + List columnDefinitions = new ArrayList<>(); + for (String columnName : fieldNameList) { + ColumnDefinition columnDefinition = new ColumnDefinition(); + columnDefinition.setColumnName(columnName); + columnDefinition.setColDataType(new ColDataType("int")); + columnDefinitions.add(columnDefinition); + } + CreateTable createTable = new CreateTable(); + createTable.setTable(table); + createTable.setColumnDefinitions(columnDefinitions); + createTable.setIfNotExists(true); + schemaMapper.insertView(createTable.toString()); + }).execute(); + } + resourceEntityVo.setError(error); + } + } + return select; + } + + @Override + public String buildGetResourceIdListSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); +// List joinList = getJoinList(queryCriteriaVo, filterItemFieldName2ColumnMap); +// $sql.addJoinList(plainSelect, joinList); +// List whereExpressionList = getWhereExpressionList(queryCriteriaVo, filterItemFieldName2ColumnMap); +// $sql.addWhereExpressionList(plainSelect, whereExpressionList); + if (CollectionUtils.isNotEmpty(searchVo.getKeywordList()) && searchVo.getNameFieldAttrId() != null && searchVo.getIpFieldAttrId() != null) { + $sql.addOrderBy(plainSelect, $sql.fun("COUNT", "fw.word").withDistinct(true), "desc"); + } + Column idColumn = filterItemFieldName2ColumnMap.get("id"); + // 分组 + $sql.addGroupBy(plainSelect, idColumn.toString()); + // 排序 + $sql.addOrderBy(plainSelect, idColumn.toString(), "desc"); + $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceCountSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); +// List joinList = getJoinList(queryCriteriaVo, filterItemFieldName2ColumnMap); +// $sql.addJoinList(plainSelect, joinList); +// List whereExpressionList = getWhereExpressionList(queryCriteriaVo, filterItemFieldName2ColumnMap); +// $sql.addWhereExpressionList(plainSelect, whereExpressionList); + Column column = filterItemFieldName2ColumnMap.get("id"); + $sql.setSelectColumn(plainSelect, $sql.fun("COUNT", column.toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceListSql(List idList, List selectFieldNameList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(selectFieldNameList)) { + selectItemFieldNameList.addAll(selectFieldNameList); + } + List filterItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(idList)) { + filterItemFieldNameList.add("id"); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column column = filterItemFieldName2ColumnMap.get("id"); + $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "in", idList)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceListSql(List idList) { + List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName("scence_ipobject_detail"); + fieldNameList.remove("env_seq_no"); + fieldNameList.remove("vendor_id"); + fieldNameList.remove("vendor_name"); + fieldNameList.remove("vendor_label"); + fieldNameList.remove("datacenter_id"); + fieldNameList.remove("datacenter_name"); + fieldNameList.remove("fcu"); + fieldNameList.remove("fcd"); + fieldNameList.remove("lcu"); + fieldNameList.remove("lcd"); + return buildGetResourceListSql(idList, fieldNameList); + } + + @Override + public String buildGetResourceCountByNameKeywordSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + queryCriteriaVo.setInspectJobPhaseNodeStatusList(null); + queryCriteriaVo.setBatchSearchList(null); + queryCriteriaVo.setIpFieldAttrId(null); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + Column column = filterItemFieldName2ColumnMap.get("id"); + $sql.setSelectColumn(plainSelect, $sql.fun("COUNT", column.toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceCountByIpKeywordSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + queryCriteriaVo.setInspectJobPhaseNodeStatusList(null); + queryCriteriaVo.setBatchSearchList(null); + queryCriteriaVo.setNameFieldAttrId(null); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + Column column = filterItemFieldName2ColumnMap.get("id"); + $sql.setSelectColumn(plainSelect, $sql.fun("COUNT", column.toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetAuthResourceListSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + selectItemFieldNameList.add("name"); + selectItemFieldNameList.add("ip"); + selectItemFieldNameList.add("port"); + selectItemFieldNameList.add("type_id"); + selectItemFieldNameList.add("type_name"); + selectItemFieldNameList.add("type_label"); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceListByIpAndPortAndNameWithFilterSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + selectItemFieldNameList.add("name"); + selectItemFieldNameList.add("ip"); + selectItemFieldNameList.add("port"); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + filterItemFieldNameList.add("port"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + String keyword = searchVo.getKeyword(); + if (StringUtils.isNotBlank(keyword)) { + keyword = "%" + keyword + "%"; + Column nameColumn = filterItemFieldName2ColumnMap.get("name"); + Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + $sql.addWhereExpression(plainSelect, + $sql.exp("(", + $sql.exp(nameColumn.toString(), "like", $sql.value(keyword)), + "OR", + $sql.exp(ipColumn.toString(), "like", $sql.value(keyword)), + ")")); + } + List inputNodeList = searchVo.getInputNodeList(); + if (CollectionUtils.isNotEmpty(inputNodeList)) { + ExpressionVo orExp = null; + for (ResourceVo inputNode : inputNodeList) { + Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + ExpressionVo andExp = $sql.exp(ipColumn.toString(), "=", $sql.value(inputNode.getIp())); + Column portColumn = filterItemFieldName2ColumnMap.get("port"); + if (inputNode.getPort() != null) { + andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "=", inputNode.getPort())); + } else { + andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "is null")); + } + if (StringUtils.isNotBlank(inputNode.getName())) { + Column nameColumn = filterItemFieldName2ColumnMap.get("name"); + andExp = $sql.exp(andExp, "and", $sql.exp(nameColumn.toString(), "=", $sql.value(inputNode.getName()))); + } + andExp = $sql.exp("(", andExp, ")"); + if (orExp == null) { + orExp = andExp; + } else { + orExp = $sql.exp(orExp, "or", andExp); + } + } + orExp = $sql.exp("(", orExp, ")"); + $sql.addWhereExpression(plainSelect, orExp); + } else { + $sql.addWhereExpression(plainSelect, $sql.exp(1, "=", 0)); + } + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceTypeIdListByAuthSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("type_id"); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.setDistinct(plainSelect, true); + Column typeIdColumn = filterItemFieldName2ColumnMap.get("type_id"); + $sql.setSelectColumn(plainSelect, typeIdColumn.toString()); + String keyword = searchVo.getKeyword(); + if (StringUtils.isNotBlank(keyword)) { + keyword = "%" + keyword + "%"; + Column nameColumn = filterItemFieldName2ColumnMap.get("name"); + Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + $sql.addWhereExpression(plainSelect, + $sql.exp("(", + $sql.exp(nameColumn.toString(), "like", $sql.value(keyword)), + "OR", + $sql.exp(ipColumn.toString(), "like", $sql.value(keyword)), + ")")); + } + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceIdByIpAndPortAndNameSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + filterItemFieldNameList.add("port"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + if (Objects.equals(searchVo.getIsHasAuth(), false)) { + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(); + queryCriteriaVo.setIsHasAuth(false); + if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { + queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); + } + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + } + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "=", $sql.value(searchVo.getIp()))); + if (StringUtils.isNotBlank(searchVo.getPort())) { + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "=", $sql.value(searchVo.getPort()))); + } else { + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "is null")); + } + if (StringUtils.isNotBlank(searchVo.getName())) { + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "=", $sql.value(searchVo.getName()))); + } + $sql.setLimit(plainSelect, 1); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceIdListByIpAndPortAndNameSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + filterItemFieldNameList.add("port"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + if (Objects.equals(searchVo.getIsHasAuth(), false)) { + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(); + queryCriteriaVo.setIsHasAuth(false); + if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { + queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); + } + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + } + List inputNodeList = searchVo.getInputNodeList(); + if (CollectionUtils.isNotEmpty(inputNodeList)) { + ExpressionVo orExp = null; + for (ResourceVo inputNode : inputNodeList) { + Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + ExpressionVo andExp = $sql.exp(ipColumn.toString(), "=", $sql.value(inputNode.getIp())); + Column portColumn = filterItemFieldName2ColumnMap.get("port"); + if (inputNode.getPort() != null) { + andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "=", inputNode.getPort())); + } else { + andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "is null")); + } + if (StringUtils.isNotBlank(inputNode.getName())) { + Column nameColumn = filterItemFieldName2ColumnMap.get("name"); + andExp = $sql.exp(andExp, "and", $sql.exp(nameColumn.toString(), "=", $sql.value(inputNode.getName()))); + } + andExp = $sql.exp("(", andExp, ")"); + if (orExp == null) { + orExp = andExp; + } else { + orExp = $sql.exp(orExp, "or", andExp); + } + } + orExp = $sql.exp("(", orExp, ")"); + $sql.addWhereExpression(plainSelect, orExp); + } else { + $sql.addWhereExpression(plainSelect, $sql.exp(1, "=", 0)); + } + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceListByIpAndPortAndNameSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + selectItemFieldNameList.add("name"); + selectItemFieldNameList.add("ip"); + selectItemFieldNameList.add("port"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + filterItemFieldNameList.add("port"); + filterItemFieldNameList.add("type_name"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); + if (Objects.equals(searchVo.getIsHasAuth(), false)) { + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(); + queryCriteriaVo.setIsHasAuth(false); + if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { + queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); + } + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + } + List inputNodeList = searchVo.getInputNodeList(); + if (CollectionUtils.isNotEmpty(inputNodeList)) { + ExpressionVo orExp = null; + for (ResourceVo inputNode : inputNodeList) { + Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + ExpressionVo andExp = $sql.exp(ipColumn.toString(), "=", $sql.value(inputNode.getIp())); + Column portColumn = filterItemFieldName2ColumnMap.get("port"); + if (inputNode.getPort() != null) { + andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "=", inputNode.getPort())); + } else { + andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "is null")); + } + if (StringUtils.isNotBlank(inputNode.getName())) { + Column nameColumn = filterItemFieldName2ColumnMap.get("name"); + andExp = $sql.exp(andExp, "and", $sql.exp(nameColumn.toString(), "=", $sql.value(inputNode.getName()))); + } + andExp = $sql.exp("(", andExp, ")"); + if (orExp == null) { + orExp = andExp; + } else { + orExp = $sql.exp(orExp, "or", andExp); + } + } + orExp = $sql.exp("(", orExp, ")"); + $sql.addWhereExpression(plainSelect, orExp); + } else { + $sql.addWhereExpression(plainSelect, $sql.exp(1, "=", 0)); + } + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceByIdListSql(List idList) { + List fieldNameList = new ArrayList<>(); + fieldNameList.add("id"); + fieldNameList.add("name"); + fieldNameList.add("ip"); + fieldNameList.add("port"); + fieldNameList.add("type_id"); + fieldNameList.add("type_name"); + fieldNameList.add("type_label"); + return buildGetResourceListSql(idList, fieldNameList); + } + + @Override + public String buildGetResourceByIdSql(Long id, List selectFieldNameList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(selectFieldNameList)) { + selectItemFieldNameList.addAll(selectFieldNameList); + } + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column column = filterItemFieldName2ColumnMap.get("id"); + $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "=", id)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceByIdSql(Long id) { + List fieldNameList = new ArrayList<>(); + fieldNameList.add("id"); + fieldNameList.add("name"); + fieldNameList.add("ip"); + fieldNameList.add("port"); + fieldNameList.add("type_id"); + fieldNameList.add("type_name"); + fieldNameList.add("type_label"); + return buildGetResourceByIdSql(id, fieldNameList); + } + + @Override + public String buildGetResourceIdByResourceIdSql(Long id) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column column = filterItemFieldName2ColumnMap.get("id"); + $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "=", id)); + $sql.setLimit(plainSelect, 1); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildCheckResourceIdListIsExistsSql(List idList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column column = filterItemFieldName2ColumnMap.get("id"); + $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "in", idList)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceIdListByAppSystemIdAndModuleIdAndEnvIdSql(ResourceVo resourceVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("app_system_id"); + filterItemFieldNameList.add("app_module_id"); + filterItemFieldNameList.add("env_id"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column appSystemIdColumn = filterItemFieldName2ColumnMap.get("app_system_id"); + $sql.addWhereExpression(plainSelect, $sql.exp(appSystemIdColumn.toString(), "=", resourceVo.getAppSystemId())); + Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); + $sql.addWhereExpression(plainSelect, $sql.exp(appModuleIdColumn.toString(), "=", resourceVo.getAppModuleId())); + Column envIdColumn = filterItemFieldName2ColumnMap.get("env_id"); + $sql.addWhereExpression(plainSelect, $sql.exp(envIdColumn.toString(), "=", resourceVo.getEnvId())); + Column idColumn = filterItemFieldName2ColumnMap.get("id"); + $sql.addOrderBy(plainSelect, idColumn.toString(), "desc"); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceListByTypeIdListAndIpListSql(List typeIdList, List ipList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + selectItemFieldNameList.add("ip"); + selectItemFieldNameList.add("name"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("type_id"); + filterItemFieldNameList.add("ip"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column typeIdColumn = filterItemFieldName2ColumnMap.get("type_id"); + $sql.addWhereExpression(plainSelect, $sql.exp(typeIdColumn.toString(), "in", typeIdList)); + Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + $sql.addWhereExpression(plainSelect, $sql.exp(ipColumn.toString(), "in", ipList)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceByIpAndPortAndNameAndTypeNameSql(String ip, Integer port, String name, String typeName) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + selectItemFieldNameList.add("name"); + selectItemFieldNameList.add("ip"); + selectItemFieldNameList.add("port"); +// selectItemFieldNameList.add("type_name"); + List filterItemFieldNameList = new ArrayList<>(); +// filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + filterItemFieldNameList.add("port"); + filterItemFieldNameList.add("type_name"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "=", $sql.value(ip))); + if (port != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "=", port)); + } else { + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "is null")); + } + if (StringUtils.isNotBlank(name)) { + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "=", $sql.value(name))); + } + if (StringUtils.isNotBlank(typeName)) { + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("type_name").toString(), "=", $sql.value(typeName))); + } + $sql.setLimit(plainSelect, 1); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetResourceByIpAndPortSql(String ip, Integer port) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + selectItemFieldNameList.add("name"); + selectItemFieldNameList.add("ip"); + selectItemFieldNameList.add("port"); +// selectItemFieldNameList.add("type_name"); + List filterItemFieldNameList = new ArrayList<>(); +// filterItemFieldNameList.add("id"); +// filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + filterItemFieldNameList.add("port"); + filterItemFieldNameList.add("type_name"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "=", $sql.value(ip))); + if (port != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "=", port)); + } else { + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "is null")); + } + $sql.setLimit(plainSelect, 1); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildSearchAccountComponentSql(AccountComponentVo accountComponentVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + selectItemFieldNameList.add("id"); + selectItemFieldNameList.add("name"); + selectItemFieldNameList.add("ip"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); +// filterItemFieldNameList.add("port"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); + $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account_protocol", "d").withOn($sql.exp("d.id", "=", "c.protocol_id"))); +// $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); + $sql.addSelectColumn(plainSelect, "c.id", "accountId"); + $sql.addSelectColumn(plainSelect, "c.name", "accountName"); + $sql.addSelectColumn(plainSelect, "c.account", "account"); + $sql.addSelectColumn(plainSelect, "d.id", "protocolId"); + $sql.addSelectColumn(plainSelect, "d.name", "protocol"); + $sql.addSelectColumn(plainSelect, "d.port", "port"); + String keyword = accountComponentVo.getKeyword(); + if (StringUtils.isNotBlank(keyword)) { +// keyword = "%" + keyword + "%"; + Column nameColumn = filterItemFieldName2ColumnMap.get("name"); + Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + $sql.addWhereExpression(plainSelect, + $sql.exp("(", + $sql.exp(nameColumn.toString(), "like", "'%" + keyword + "%'"), + "OR", + $sql.exp(ipColumn.toString(), "=", $sql.value(keyword)), + ")" + ) + ); + } + $sql.setLimit(plainSelect, accountComponentVo.getStartNum(), accountComponentVo.getPageSize()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildSearchAccountComponentCountSql(AccountComponentVo accountComponentVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); +// selectItemFieldNameList.add("id"); +//// selectItemFieldNameList.add("name"); +//// selectItemFieldNameList.add("ip"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); + $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account_protocol", "d").withOn($sql.exp("d.id", "=", "c.protocol_id"))); + $sql.addSelectColumn(plainSelect, $sql.fun("count", "b.resource_id", "b.account_id").withDistinct(true)); + String keyword = accountComponentVo.getKeyword(); + if (StringUtils.isNotBlank(keyword)) { + Column nameColumn = filterItemFieldName2ColumnMap.get("name"); + Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + $sql.addWhereExpression(plainSelect, + $sql.exp("(", + $sql.exp(nameColumn.toString(), "like", "'%" + keyword + "%'"), + "OR", + $sql.exp(ipColumn.toString(), "=", $sql.value(keyword)), + ")" + ) + ); + } +// $sql.setLimit(plainSelect, accountComponentVo.getStartNum(), accountComponentVo.getPageSize()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetAppEnvListByAppSystemIdAndAppModuleIdSql(Long appSystemId, Long appModuleId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); +// selectItemFieldNameList.add("id"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("app_system_id"); + filterItemFieldNameList.add("app_module_id"); + filterItemFieldNameList.add("env_id"); + filterItemFieldNameList.add("env_name"); + filterItemFieldNameList.add("env_seq_no"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.setDistinct(plainSelect, true); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_id").toString(), "id"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_name").toString(), "name"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_seq_no").toString(), "seqNo"); + Column appSystemIdColumn = filterItemFieldName2ColumnMap.get("app_system_id"); + $sql.addWhereExpression(plainSelect, $sql.exp(appSystemIdColumn.toString(), "=", appSystemId)); + Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); + $sql.addWhereExpression(plainSelect, $sql.exp(appModuleIdColumn.toString(), "=", appModuleId)); + Column envIdColumn = filterItemFieldName2ColumnMap.get("env_id"); + $sql.addWhereExpression(plainSelect, $sql.exp(envIdColumn.toString(), "is not null")); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(Long appSystemId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); +// selectItemFieldNameList.add("id"); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("app_system_id"); + filterItemFieldNameList.add("app_module_id"); + filterItemFieldNameList.add("env_id"); +// filterItemFieldNameList.add("env_name"); +// filterItemFieldNameList.add("env_seq_no"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } +// $sql.setDistinct(plainSelect, true); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("app_module_id").toString(), "appModuleId"); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("env_id").toString()).withDistinct(true), "count"); +// $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_name").toString(), "name"); +// $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_seq_no").toString(), "seqNo"); + Column appSystemIdColumn = filterItemFieldName2ColumnMap.get("app_system_id"); + $sql.addWhereExpression(plainSelect, $sql.exp(appSystemIdColumn.toString(), "=", appSystemId)); +// Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); +// $sql.addWhereExpression(plainSelect, $sql.exp(appModuleIdColumn.toString(), "=", appModuleId)); + Column envIdColumn = filterItemFieldName2ColumnMap.get("env_id"); + $sql.addWhereExpression(plainSelect, $sql.exp(envIdColumn.toString(), "is not null")); + Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); + $sql.addGroupBy(plainSelect, appModuleIdColumn.toString()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectResourceListByIdListSql(List idList, List selectFieldNameList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(selectFieldNameList)) { + selectItemFieldNameList.addAll(selectFieldNameList); + } + List filterItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(idList)) { + filterItemFieldNameList.add("id"); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column idColumn = filterItemFieldName2ColumnMap.get("id"); + $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_account", "crra").withOn($sql.exp("crra.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_account", "cra").withOn($sql.exp("cra.id", "=", "crra.account_id"))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_tag", "crrt").withOn($sql.exp("crrt.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp( + $sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), + "and", + $sql.exp("ajpn.resource_id", "=", idColumn.toString()) + ))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_tag", "ct").withOn($sql.exp("ct.id", "=", "crrt.tag_id"))); + $sql.addSelectColumn(plainSelect, "ajpn.id", "inspectJobPhaseNodeId"); + $sql.addSelectColumn(plainSelect, "ajpn.`job_id`", "jobId"); + $sql.addSelectColumn(plainSelect, "ajpn.status", "jobPhaseNodeStatus"); + $sql.addSelectColumn(plainSelect, "ct.name", "tagName"); + $sql.addWhereExpression(plainSelect, $sql.exp(idColumn.toString(), "in", idList)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectResourceListByIdListSql(List idList) { + List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName("scence_ipobject_detail"); + fieldNameList.remove("env_seq_no"); + fieldNameList.remove("vendor_id"); + fieldNameList.remove("vendor_name"); + fieldNameList.remove("vendor_label"); + fieldNameList.remove("datacenter_id"); + fieldNameList.remove("datacenter_name"); + fieldNameList.remove("fcu"); + fieldNameList.remove("fcd"); + fieldNameList.remove("lcu"); + fieldNameList.remove("lcd"); + return buildGetInspectResourceListByIdListSql(idList, fieldNameList); + } + + @Override + public String buildGetInspectResourceCountSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp("(", + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + ")") + ); + } + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectResourceCountByIpKeywordSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword)); + } + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectResourceCountByNameKeywordSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND a.`name` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword)); + } + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectResourceIdListSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp("(", + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + ")") + ); + } + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { + $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); + } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { + $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); + } + $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectResourceListByIdListAndJobIdSql(List idList, Long jobId) { + List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName("scence_ipobject_detail"); + fieldNameList.remove("env_seq_no"); + fieldNameList.remove("vendor_id"); + fieldNameList.remove("vendor_name"); + fieldNameList.remove("vendor_label"); + fieldNameList.remove("datacenter_id"); + fieldNameList.remove("datacenter_name"); + fieldNameList.remove("fcu"); + fieldNameList.remove("fcd"); + fieldNameList.remove("lcu"); + fieldNameList.remove("lcd"); + + fieldNameList.remove("monitor_status"); + fieldNameList.remove("monitor_time"); + fieldNameList.remove("inspect_status"); + fieldNameList.remove("inspect_time"); + fieldNameList.remove("maintenance_window"); + fieldNameList.remove("description"); + fieldNameList.remove("app_module_id"); + fieldNameList.remove("app_module_name"); + fieldNameList.remove("app_module_abbr_name"); + fieldNameList.remove("app_system_id"); + fieldNameList.remove("app_system_name"); + fieldNameList.remove("app_system_abbr_name"); + fieldNameList.remove("state_label"); + fieldNameList.remove("env_id"); + fieldNameList.remove("env_name"); + return buildGetInspectResourceListByIdListAndJobIdSql(idList, jobId, fieldNameList); + } + + @Override + public String buildGetInspectResourceListByIdListAndJobIdSql(List idList, Long jobId, List selectFieldNameList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(selectFieldNameList)) { + selectItemFieldNameList.addAll(selectFieldNameList); + } + List filterItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(idList)) { + filterItemFieldNameList.add("id"); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + Column idColumn = filterItemFieldName2ColumnMap.get("id"); + $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_account", "crra").withOn($sql.exp("crra.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_account", "cra").withOn($sql.exp("cra.id", "=", "crra.account_id"))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_tag", "crrt").withOn($sql.exp("crrt.resource_id", "=", idColumn.toString()))); + $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", idColumn.toString()))); +// $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp( +// $sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), +// "and", +// $sql.exp("ajpn.resource_id", "=", idColumn.toString()) +// ))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_cientity_inspect", "cci").withOn($sql.exp( + $sql.exp("cci.ci_entity_id", "=", idColumn.toString()), + "and", + $sql.exp("cci.job_id", "=", "ajpn.job_id") + ))); + $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_tag", "ct").withOn($sql.exp("ct.id", "=", "crrt.tag_id"))); + $sql.addSelectColumn(plainSelect, "cci.inspect_status"); + $sql.addSelectColumn(plainSelect, "cci.inspect_time"); + $sql.addSelectColumn(plainSelect, "ajpn.id", "inspectJobPhaseNodeId"); + $sql.addSelectColumn(plainSelect, "ajpn.`job_id`", "jobId"); + $sql.addSelectColumn(plainSelect, "ajpn.status", "jobPhaseNodeStatus"); + $sql.addSelectColumn(plainSelect, "ct.id", "tagId"); + $sql.addSelectColumn(plainSelect, "ct.name", "tagName"); + $sql.addSelectColumn(plainSelect, "ct.description", "tagDescription"); + $sql.addWhereExpression(plainSelect, $sql.exp(idColumn.toString(), "in", idList)); + $sql.addWhereExpression(plainSelect, $sql.exp("ajpn.job_id", "=", jobId)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectAutoexecJobNodeResourceCountSql(ResourceSearchVo searchVo, Long jobId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + queryCriteriaVo.setJobId(jobId); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp("(", + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + ")") + ); + } + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectAutoexecJobNodeResourceCountByIpKeywordSql(ResourceSearchVo searchVo, Long jobId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + queryCriteriaVo.setJobId(jobId); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword)); + } + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectAutoexecJobNodeResourceCountByNameKeywordSql(ResourceSearchVo searchVo, Long jobId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + queryCriteriaVo.setJobId(jobId); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND a.`name` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword)); + } + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectAutoexecJobNodeResourceIdListSql(ResourceSearchVo searchVo, Long jobId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + queryCriteriaVo.setJobId(jobId); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp("(", + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + ")") + ); + } + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { + $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); + } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { + $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); + } + $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectConfigFileResourceIdListSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); + filterItemFieldNameList.add("id"); + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); + } + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + /* + + AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) + + */ + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; + $sql.addWhereExpression(plainSelect, $sql.exp("(", + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + ")") + ); + } + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + $sql.addJoin(plainSelect, $sql.join("left join", "inspect_config_file_last_change_time", "g").withOn($sql.exp("g.`resource_id`", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); +// if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { +// $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); +// } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { +// $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); +// } + $sql.addOrderBy(plainSelect, $sql.fun("max","g.`last_change_time`"), "desc"); + $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectConfigFilePathCountSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + /* + + AND (a.`path` LIKE CONCAT('%', #{keyword}, '%') + OR b.`name` LIKE CONCAT('%', #{keyword}, '%') + OR b.`ip` LIKE CONCAT('%', #{keyword}, '%') + ) + + */ + if (StringUtils.isNotBlank(searchVo.getKeyword())) { + String keyword = "'%" + searchVo.getKeyword() + "%'"; + ExpressionVo orExp = $sql.exp( + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword) + ); + orExp = $sql.exp(orExp, "or", $sql.exp("b.path", "like", keyword)); + $sql.addWhereExpression(plainSelect, $sql.exp("(", orExp, ")") + ); + } + /* + + + AND a.`inspect_time` >= STR_TO_DATE(#{timeRange[0]}, '%Y-%m-%d %H:%i:%s') + + + AND a.`inspect_time` <= STR_TO_DATE(#{timeRange[1]}, '%Y-%m-%d %H:%i:%s') + + + */ + List timeRange = searchVo.getTimeRange(); + if (CollectionUtils.isNotEmpty(timeRange)) { + $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", ">=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(0)), "'%Y-%m-%d %H:%i:%s'"))); + if (timeRange.size() > 1) { + $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", "<=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(1)), "'%Y-%m-%d %H:%i:%s'"))); + } + } + $sql.addSelectColumn(plainSelect, $sql.fun("count", "b.id").withDistinct(true)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectConfigFilePathIdListSql(ResourceSearchVo searchVo) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + /* + + AND (a.`path` LIKE CONCAT('%', #{keyword}, '%') + OR b.`name` LIKE CONCAT('%', #{keyword}, '%') + OR b.`ip` LIKE CONCAT('%', #{keyword}, '%') + ) + + */ + if (StringUtils.isNotBlank(searchVo.getKeyword())) { + String keyword = "'%" + searchVo.getKeyword() + "%'"; + ExpressionVo orExp = $sql.exp( + $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword) + ); + orExp = $sql.exp(orExp, "or", $sql.exp("b.path", "like", keyword)); + $sql.addWhereExpression(plainSelect, $sql.exp("(", orExp, ")") + ); + } + /* + + + AND a.`inspect_time` >= STR_TO_DATE(#{timeRange[0]}, '%Y-%m-%d %H:%i:%s') + + + AND a.`inspect_time` <= STR_TO_DATE(#{timeRange[1]}, '%Y-%m-%d %H:%i:%s') + + + */ + List timeRange = searchVo.getTimeRange(); + if (CollectionUtils.isNotEmpty(timeRange)) { + $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", ">=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(0)), "'%Y-%m-%d %H:%i:%s'"))); + if (timeRange.size() > 1) { + $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", "<=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(1)), "'%Y-%m-%d %H:%i:%s'"))); + } + } + $sql.addGroupBy(plainSelect, "b.id"); + $sql.addOrderBy(plainSelect, $sql.fun("max", "b.inspect_time"), "desc"); + $sql.addSelectColumn(plainSelect, "b.id"); + $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectConfigFilePathListSql(List idList) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + filterItemFieldNameList.add("port"); + filterItemFieldNameList.add("type_label"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.setDistinct(plainSelect, true); + $sql.addSelectColumn(plainSelect, "b.id", "id"); + $sql.addSelectColumn(plainSelect, "b.resource_id", "resourceId"); + $sql.addSelectColumn(plainSelect, "b.path", "path"); + $sql.addSelectColumn(plainSelect, "b.inspect_time", "inspectTime"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("name").toString(), "resourceName"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("ip").toString(), "resourceIP"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("port").toString(), "resourcePort"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_label").toString(), "resourceTypeLabel"); + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + $sql.addWhereExpression(plainSelect, $sql.exp("b.id", "in", idList)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetInspectConfigFilePathListByJobIdSql(Long jobId) { + try { + PlainSelect plainSelect = null; + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("name"); + filterItemFieldNameList.add("ip"); + filterItemFieldNameList.add("port"); + filterItemFieldNameList.add("type_label"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map filterItemFieldName2ColumnMap = new HashMap<>(); + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); + } + $sql.setDistinct(plainSelect, true); + $sql.addSelectColumn(plainSelect, "b.id", "id"); + $sql.addSelectColumn(plainSelect, "b.resource_id", "resourceId"); + $sql.addSelectColumn(plainSelect, "b.path", "path"); + $sql.addSelectColumn(plainSelect, "b.md5", "md5"); + $sql.addSelectColumn(plainSelect, "b.inspect_time", "inspectTime"); + $sql.addSelectColumn(plainSelect, "b.file_id", "fileId"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("name").toString(), "resourceName"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("ip").toString(), "resourceIP"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("port").toString(), "resourcePort"); + $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_label").toString(), "resourceTypeLabel"); + $sql.addSelectColumn(plainSelect, "c.id", "versionId"); + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_version", "c").withOn($sql.exp( + $sql.exp("c.`path_id`", "=", "b.`id`"), + "and", + $sql.exp("c.`file_id`", "=", "b.`file_id`") + ))); + $sql.addWhereExpression(plainSelect, $sql.exp("c.job_id", "=", jobId)); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + private ResourceEntityConfigVo getResourceEntityConfigVo(ResourceEntityVo resourceEntityVo) { + String viewName = resourceEntityVo.getName(); + ResourceEntityConfigVo originalConfig = resourceEntityVo.getConfig(); + List relLinkList = getRelLinkListByRelNode(originalConfig.getRelNode()); + originalConfig.setRelLinkList(relLinkList); + List leftJoinList = getLeftJoinList(originalConfig); + List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName(viewName); + if (CollectionUtils.isEmpty(fieldNameList)) { + String sceneTemplateName = originalConfig.getSceneTemplateName(); + if (StringUtils.isNotBlank(sceneTemplateName)) { + fieldNameList = ResourceEntityFactory.getFieldNameListByViewName(sceneTemplateName); + } + } + List selectItemFieldNameList = new ArrayList<>(fieldNameList); + ResourceEntityConfigVo config = fieldMappingCheckValidityAndFillIdData(viewName, fieldNameList, originalConfig); + config.setLeftJoinList(leftJoinList); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(new ArrayList<>()); + return config; + } + /** + * 对字段映射配置信息进行有效性检查及填充缺省数据 + * + * @param viewName + * @param config + * @return + */ + private ResourceEntityConfigVo fieldMappingCheckValidityAndFillIdData(String viewName, List fieldNameList, ResourceEntityConfigVo config) { + ResourceEntityConfigVo newConfig = new ResourceEntityConfigVo(); + String mainCi = config.getMainCi(); + if (StringUtils.isBlank(mainCi)) { + throw new ResourceViewFieldMappingException(viewName); + } + List fieldMappingList = config.getFieldMappingList(); + if (CollectionUtils.isEmpty(fieldMappingList)) { + throw new ResourceViewFieldMappingException(viewName, fieldNameList); + } + CiVo mainCiVo = ciMapper.getCiByName(mainCi); + if (mainCiVo == null) { + throw new ResourceViewFieldMappingException(viewName, mainCi); + } + newConfig.setMainCi(mainCi); + newConfig.setMainCiVo(mainCiVo); + List resultList = new ArrayList<>(); + for (ResourceEntityFieldMappingVo fieldMappingVo : fieldMappingList) { + String field = fieldMappingVo.getField(); + if (!fieldNameList.remove(field)) { + continue; + } + String type = fieldMappingVo.getType(); + ResourceEntityFieldMappingVo newFieldMappingVo = new ResourceEntityFieldMappingVo(); + newFieldMappingVo.setField(field); + newFieldMappingVo.setType(type); + if (Objects.equals(type, "const")) { + String fromCi = fieldMappingVo.getFromCi(); + if (StringUtils.isBlank(fromCi)) { + throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); + } + CiVo fromCiVo = ciMapper.getCiByName(fromCi); + if (fromCiVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); + } + String fromAttr = fieldMappingVo.getFromAttr(); + if (StringUtils.isBlank(fromAttr)) { + throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); + } + if (!defaultAttrList.contains(fromAttr)) { + throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); + } + newFieldMappingVo.setFromCi(fromCi); + newFieldMappingVo.setFromCiId(fromCiVo.getId()); + newFieldMappingVo.setFromAttr(fromAttr); + } else if (Objects.equals(type, "attr")) { + String fromCi = fieldMappingVo.getFromCi(); + if (StringUtils.isBlank(fromCi)) { + throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); + } + CiVo fromCiVo = ciMapper.getCiByName(fromCi); + if (fromCiVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); + } + String fromAttr = fieldMappingVo.getFromAttr(); + if (StringUtils.isBlank(fromAttr)) { + throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); + } + AttrVo fromAttrVo = getAttrVo(fromCiVo, fromAttr); + if (fromAttrVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); + } + newFieldMappingVo.setFromCi(fromCi); + newFieldMappingVo.setFromCiId(fromCiVo.getId()); + newFieldMappingVo.setFromAttr(fromAttr); + newFieldMappingVo.setFromAttrId(fromAttrVo.getId()); + newFieldMappingVo.setFromAttrCiId(fromAttrVo.getCiId()); + if (fromAttrVo.getTargetCiId() != null) { + String toCi = fieldMappingVo.getToCi(); + if (StringUtils.isBlank(toCi)) { + throw new ResourceViewFieldMappingException(viewName, field, "toCi", toCi); + } + CiVo toCiVo = ciMapper.getCiByName(toCi); + if (toCiVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "toCi", toCi); + } + if (!Objects.equals(toCiVo.getId(), fromAttrVo.getTargetCiId())) { + throw new ResourceViewFieldMappingException(viewName, field, "toCi", toCi); + } + String toAttr = fieldMappingVo.getToAttr(); + if (StringUtils.isBlank(toAttr)) { + throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); + } + newFieldMappingVo.setToCi(toCi); + newFieldMappingVo.setToCiId(toCiVo.getId()); + newFieldMappingVo.setToCiIsVirtual(toCiVo.getIsVirtual()); + newFieldMappingVo.setToAttr(toAttr); + if (Objects.equals(toCiVo.getIsVirtual(), 1)) { + newFieldMappingVo.setToAttrCiId(toCiVo.getId()); + newFieldMappingVo.setToAttrCiName(toCiVo.getName()); + } + if (!defaultAttrList.contains(toAttr)) { + AttrVo toAttrVo = getAttrVo(toCiVo, toAttr); + if (toAttrVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); + } + newFieldMappingVo.setToAttrId(toAttrVo.getId()); + if (Objects.equals(toCiVo.getIsVirtual(), 0)) { + newFieldMappingVo.setToAttrCiId(toAttrVo.getCiId()); + newFieldMappingVo.setToAttrCiName(toAttrVo.getCiName()); + } + if (toAttrVo.getTargetCiId() != null) { + throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); + } + } + } + } else if (Objects.equals(type, "rel")) { + String fromCi = fieldMappingVo.getFromCi(); + if (StringUtils.isBlank(fromCi)) { + throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); + } + CiVo fromCiVo = ciMapper.getCiByName(fromCi); + if (fromCiVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); + } + String toCi = fieldMappingVo.getToCi(); + if (StringUtils.isBlank(toCi)) { + throw new ResourceViewFieldMappingException(viewName, field, "toCi", toCi); + } + CiVo toCiVo = ciMapper.getCiByName(toCi); + if (toCiVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "toCi", toCi); + } + newFieldMappingVo.setFromCi(fromCi); + newFieldMappingVo.setFromCiId(fromCiVo.getId()); + newFieldMappingVo.setToCi(toCi); + newFieldMappingVo.setToCiId(toCiVo.getId()); + newFieldMappingVo.setToCiIsVirtual(toCiVo.getIsVirtual()); + String direction = fieldMappingVo.getDirection(); + newFieldMappingVo.setDirection(direction); + if (Objects.equals(direction, "from")) { + String fromAttr = fieldMappingVo.getFromAttr(); + if (StringUtils.isBlank(fromAttr)) { + throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); + } + newFieldMappingVo.setFromAttr(fromAttr); + if (!defaultAttrList.contains(fromAttr)) { + AttrVo fromAttrVo = getAttrVo(fromCiVo, fromAttr); + if (fromAttrVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); + } + if (fromAttrVo.getTargetCiId() != null) { + throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); + } + newFieldMappingVo.setFromAttrId(fromAttrVo.getId()); + newFieldMappingVo.setFromAttrCiId(fromAttrVo.getCiId()); + } + } else { + String toAttr = fieldMappingVo.getToAttr(); + if (StringUtils.isBlank(toAttr)) { + newFieldMappingVo.setToAttr("_id"); + } else { + newFieldMappingVo.setToAttr(toAttr); + if (!defaultAttrList.contains(toAttr)) { + AttrVo toAttrVo = getAttrVo(toCiVo, toAttr); + if (toAttrVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); + } + if (toAttrVo.getTargetCiId() != null) { + throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); + } + newFieldMappingVo.setToAttrId(toAttrVo.getId()); + newFieldMappingVo.setToAttrCiId(toAttrVo.getCiId()); + newFieldMappingVo.setToAttrCiName(toAttrVo.getCiName()); + } + } + } + } else if (Objects.equals(type, "newRel")) { + String uuid = fieldMappingVo.getUuid(); + String ciName = fieldMappingVo.getCiName(); + String attr = fieldMappingVo.getAttr(); + if (StringUtils.isBlank(attr)) { + throw new ResourceViewFieldMappingException(viewName, field, "attr", attr); + } + List relLinkList = config.getRelLinkList(); + if (CollectionUtils.isNotEmpty(relLinkList)) { + for (ResourceEntityRelLinkVo relLinkVo : relLinkList) { + if (Objects.equals(relLinkVo.getRightUuid(), uuid)) { + CiVo rightCiVo = ciMapper.getCiByName(ciName); + if (rightCiVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "ciName", ciName); + } + newFieldMappingVo.setType("rel"); + newFieldMappingVo.setDirection(relLinkVo.getDirection()); + if (Objects.equals(relLinkVo.getDirection(), RelDirectionType.FROM.getValue())) { + CiVo fromCiVo = rightCiVo; + newFieldMappingVo.setFromCi(fromCiVo.getName()); + newFieldMappingVo.setFromCiId(fromCiVo.getId()); + String fromAttr = attr; + newFieldMappingVo.setFromAttr(fromAttr); + if (!defaultAttrList.contains(fromAttr)) { + AttrVo fromAttrVo = getAttrVo(fromCiVo, fromAttr); + if (fromAttrVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "attr", attr); + } + if (fromAttrVo.getTargetCiId() != null) { + throw new ResourceViewFieldMappingException(viewName, field, "attr", attr); + } + newFieldMappingVo.setFromAttrId(fromAttrVo.getId()); + newFieldMappingVo.setFromAttrCiId(fromAttrVo.getCiId()); + } + newFieldMappingVo.setFromCiAlias(relLinkVo.getRightCiAlias()); + + String toCi = relLinkVo.getLeftCi(); + CiVo toCiVo = ciMapper.getCiByName(toCi); + newFieldMappingVo.setToCi(toCiVo.getName()); + newFieldMappingVo.setToCiId(toCiVo.getId()); + newFieldMappingVo.setToCiIsVirtual(toCiVo.getIsVirtual()); + newFieldMappingVo.setToCiAlias(relLinkVo.getLeftCiAlias()); + } else if (Objects.equals(relLinkVo.getDirection(), RelDirectionType.TO.getValue())) { + CiVo toCiVo = rightCiVo; + newFieldMappingVo.setToCi(toCiVo.getName()); + newFieldMappingVo.setToCiId(toCiVo.getId()); + newFieldMappingVo.setToCiIsVirtual(toCiVo.getIsVirtual()); + newFieldMappingVo.setToCiAlias(relLinkVo.getRightCiAlias()); + String toAttr = attr; + if (StringUtils.isBlank(toAttr)) { + newFieldMappingVo.setToAttr("_id"); + } else { + newFieldMappingVo.setToAttr(toAttr); + if (!defaultAttrList.contains(toAttr)) { + AttrVo toAttrVo = getAttrVo(toCiVo, toAttr); + if (toAttrVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "attr", attr); + } + if (toAttrVo.getTargetCiId() != null) { + throw new ResourceViewFieldMappingException(viewName, field, "attr", attr); + } + newFieldMappingVo.setToAttrId(toAttrVo.getId()); + newFieldMappingVo.setToAttrCiId(toAttrVo.getCiId()); + newFieldMappingVo.setToAttrCiName(toAttrVo.getCiName()); + } + } + String fromCi = relLinkVo.getLeftCi(); + CiVo fromCiVo = ciMapper.getCiByName(fromCi); + newFieldMappingVo.setFromCi(fromCiVo.getName()); + newFieldMappingVo.setFromCiId(fromCiVo.getId()); + newFieldMappingVo.setFromCiAlias(relLinkVo.getLeftCiAlias()); + } + break; + } + } + } + } else if (Objects.equals(type, "globalAttr")) { + String fromCi = fieldMappingVo.getFromCi(); + if (StringUtils.isBlank(fromCi)) { + throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); + } + CiVo fromCiVo = ciMapper.getCiByName(fromCi); + if (fromCiVo == null) { + throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); + } + String fromAttr = fieldMappingVo.getFromAttr(); + if (StringUtils.isBlank(fromAttr)) { + throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); + } + GlobalAttrVo globalAttrVo = new GlobalAttrVo(); + globalAttrVo.setName(fromAttr); + if (globalAttrMapper.checkGlobalAttrNameIsUsed(globalAttrVo) == 0) { + throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); + } + String toAttr = fieldMappingVo.getToAttr(); + if (StringUtils.isBlank(toAttr)) { + throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); + } + if (!Objects.equals(toAttr, "id") && !Objects.equals(toAttr, "value") && !Objects.equals(toAttr, "sort")) { + throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); + } + newFieldMappingVo.setFromCi(fromCi); + newFieldMappingVo.setFromCiId(fromCiVo.getId()); + newFieldMappingVo.setFromAttr(fromAttr); + newFieldMappingVo.setToAttr(toAttr); + } else if (Objects.equals(type, "empty")) { + + } else { + throw new ResourceViewFieldMappingException(viewName, field, "type", type); + } + resultList.add(newFieldMappingVo); + } + newConfig.setFieldMappingList(resultList); + return newConfig; + } + + private List getRelLinkListByRelNode(ResourceEntityRelNodeVo relNode) { + List relLinkList = new ArrayList<>(); + if (relNode != null) { + Map> map = new HashMap<>(); + List children = relNode.getChildren(); + if (CollectionUtils.isNotEmpty(children)) { + for (ResourceEntityRelNodeVo child : children) { + addRelLinkListByRelNode(relLinkList, relNode, child, map); + } + } + } + return relLinkList; + } + + private void addRelLinkListByRelNode(List relLinkList, ResourceEntityRelNodeVo leftNode, ResourceEntityRelNodeVo rightNode, Map> map) { + { + ResourceEntityRelLinkVo relLinkVo = new ResourceEntityRelLinkVo(); + { + Map relNodeAliasMap = map.computeIfAbsent(leftNode.getCiName(), key -> new HashMap<>()); + int size = relNodeAliasMap.size(); + String alias = relNodeAliasMap.get(leftNode); + if (alias == null) { + if (size == 0) { + alias = StringUtils.EMPTY; + } else { + alias = "alias_" + (size + 1); + } + relNodeAliasMap.put(leftNode, alias); + } + relLinkVo.setLeftCi(leftNode.getCiName()); + relLinkVo.setLeftCiAlias(alias); + } + { + Map relNodeAliasMap = map.computeIfAbsent(rightNode.getCiName(), key -> new HashMap<>()); + int size = relNodeAliasMap.size(); + String alias = relNodeAliasMap.get(rightNode); + if (alias == null) { + if (size == 0) { + alias = StringUtils.EMPTY; + } else { + alias = "_alias_" + (size + 1); + } + relNodeAliasMap.put(rightNode, alias); + } + relLinkVo.setRightCi(rightNode.getCiName()); + relLinkVo.setRightCiAlias(alias); + relLinkVo.setRightUuid(rightNode.getUuid()); + } + relLinkVo.setDirection(rightNode.getDirection()); + relLinkList.add(relLinkVo); + } + List children = rightNode.getChildren(); + if (CollectionUtils.isNotEmpty(children)) { + for (ResourceEntityRelNodeVo child : children) { + addRelLinkListByRelNode(relLinkList, rightNode, child, map); + } + } + } + + private List getLeftJoinList(ResourceEntityConfigVo config) { + List resultList = new ArrayList<>(); + List relLinkList = config.getRelLinkList(); + if (CollectionUtils.isNotEmpty(relLinkList)) { + for (ResourceEntityRelLinkVo linkVo : relLinkList) { + String leftCi = linkVo.getLeftCi(); + String rightCi = linkVo.getRightCi(); + CiVo leftCiVo = ciMapper.getCiByName(leftCi); + if (leftCiVo == null) { + throw new CiNotFoundException(leftCi); + } + CiVo rightCiVo = ciMapper.getCiByName(rightCi); + if (rightCiVo == null) { + throw new CiNotFoundException(rightCi); + } + String direction = linkVo.getDirection(); + if (Objects.equals(direction, RelDirectionType.FROM.getValue())) { + ResourceEntityLeftJoinVo leftJoinVo = new ResourceEntityLeftJoinVo(); + leftJoinVo.setDirection(direction); + leftJoinVo.setFromCi(rightCiVo.getName()); + leftJoinVo.setFromCiId(rightCiVo.getId()); + leftJoinVo.setFromCiAlias(linkVo.getRightCiAlias()); + leftJoinVo.setToCi(leftCiVo.getName()); + leftJoinVo.setToCiId(leftCiVo.getId()); + leftJoinVo.setToCiAlias(linkVo.getLeftCiAlias()); + resultList.add(leftJoinVo); + } else if (Objects.equals(direction, RelDirectionType.TO.getValue())) { + ResourceEntityLeftJoinVo leftJoinVo = new ResourceEntityLeftJoinVo(); + leftJoinVo.setDirection(direction); + leftJoinVo.setFromCi(leftCiVo.getName()); + leftJoinVo.setFromCiId(leftCiVo.getId()); + leftJoinVo.setFromCiAlias(linkVo.getLeftCiAlias()); + leftJoinVo.setToCi(rightCiVo.getName()); + leftJoinVo.setToCiId(rightCiVo.getId()); + leftJoinVo.setToCiAlias(linkVo.getRightCiAlias()); + resultList.add(leftJoinVo); + } + } + } + return resultList; + } + + private AttrVo getAttrVo(CiVo ciVo, String attrName) { + List upwardCiList = ciMapper.getUpwardCiListByLR(ciVo.getLft(), ciVo.getRht()); + for (CiVo ci : upwardCiList) { + AttrVo attr = attrMapper.getDeclaredAttrByCiIdAndName(ci.getId(), attrName); + if (attr != null) { + return attr; + } + } + return null; + } + + /** + * 根据queryCriteriaVo查询条件收集组装动态sql时,需要返回的条件列 + * @param queryCriteriaVo + * @return + */ + private List getFilterItemFieldNameList(ResourceQueryCriteriaVo queryCriteriaVo) { + Set filterItemFieldNameSet = new HashSet<>(); + if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { + filterItemFieldNameSet.add("name"); + filterItemFieldNameSet.add("ip"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { + filterItemFieldNameSet.add("id"); + } + if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { + filterItemFieldNameSet.add("type_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { + filterItemFieldNameSet.add("state_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { + filterItemFieldNameSet.add("vendor_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { + filterItemFieldNameSet.add("env_id"); + } + if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { + filterItemFieldNameSet.add("env_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { + filterItemFieldNameSet.add("app_system_id"); + filterItemFieldNameSet.add("app_module_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { + filterItemFieldNameSet.add("app_module_id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { + filterItemFieldNameSet.add("id"); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { + filterItemFieldNameSet.add("inspect_status"); + } + return new ArrayList<>(filterItemFieldNameSet); + } + + private SqlVo getSqlVoForResource(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + SqlVo sqlVo = new SqlVo(); + List joinList = new ArrayList<>(); + List whereExpressionList = new ArrayList<>(); + /* + + JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) + JOIN fulltextindex_word fw ON ffc.word_id = fw.id + AND (fw.word IN + + #{item} + + ) + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { + System.out.println("a"); + { + ExpressionVo expressionVo = $sql.exp( + $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + "and", + $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); + joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); + } + { + ExpressionVo expressionVo = $sql.exp( + $sql.exp("fw.id", "=", "ffc.word_id"), + "and", + $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); + joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); + } + } + /* + + JOIN fulltextindex_field_cmdb ffc2 ON ffc2.target_id = a.id + + + AND ffc2.target_field = #{nameFieldAttrId} + + + AND ffc2.target_field = #{ipFieldAttrId} + + + JOIN fulltextindex_word fw2 ON ffc2.word_id = fw2.id + AND (fw2.word IN + + #{item} + + ) + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + { + Long fieldAttrId = null; + if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { + System.out.println("b"); + fieldAttrId = queryCriteriaVo.getNameFieldAttrId(); + } else { + System.out.println("c"); + fieldAttrId = queryCriteriaVo.getIpFieldAttrId(); + } + ExpressionVo expressionVo = $sql.exp( + $sql.exp("ffc2.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + "and", + $sql.exp("ffc2.target_field", "=", fieldAttrId)); + joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc2").withOn(expressionVo)); + } + { + ExpressionVo expressionVo = $sql.exp( + $sql.exp("fw2.id", "=", "ffc2.word_id"), + "and", + $sql.exp("fw2.word", "in", queryCriteriaVo.getBatchSearchList())); + joinList.add($sql.join("join", "fulltextindex_word", "fw2").withOn(expressionVo)); + } + } + /* + + LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` + LEFT JOIN `cmdb_resourcecenter_account` c ON c.`id` = b.`account_id` + + + + AND c.`protocol_id` IN + + #{protocolId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { + System.out.println("d"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); + whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); + } + /* + + LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` + + + + AND d.`tag_id` IN + + #{tagId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { + System.out.println("e"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); + } + /* + + left join autoexec_job_resource_inspect ajri on ajri.resource_id=a.id + left join autoexec_job_phase_node ajpn on ajpn.job_phase_id =ajri.phase_id AND ajpn.resource_id = a.id + + + + AND a.`inspect_status` IN + + #{inspectStatus} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { + System.out.println("f"); + joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); + whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); + } + /* + + LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id + LEFT JOIN cmdb_group_auth cga ON ccg.group_id = cga.group_id + + + LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('autoexec') + + + LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('readonly','maintain','autoexec') + + + + */ + if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { + joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); + + List strList = new ArrayList<>(); + if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { + System.out.println("g"); + strList.add("autoexec"); + } else { + System.out.println("h"); + strList.add("autoexec"); + strList.add("readonly"); + strList.add("maintain"); + } + ExpressionVo expressionVo = $sql.exp( + $sql.exp("cg.id", "=", "cga.group_id"), + "and", + $sql.exp("cg.type", "in", strList) + ); + joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); + } + /* + + + AND a.`type_id` IN + + #{typeId} + + + + AND ( + + + a.`type_id` IN + + #{authedTypeId} + + + + 1 = 0 + + + or ( + cg.id is not null and + a.`type_id` IN + + #{typeId} + + and + ((cga.auth_type = 'common' AND cga.auth_uuid = 'alluser') + + OR cga.auth_uuid IN ( + #{authenticationInfo.userUuid} + + + #{item} + + + + + #{item} + + + ) + + ) + ) + ) + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { + if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { + System.out.println("i"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { + ExpressionVo orLeftExpressionVo = null; + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { + System.out.println("j"); + orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); + } else { + System.out.println("k"); + orLeftExpressionVo = $sql.exp(1, "=", 0); + } + ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + + ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); + ExpressionVo orRightExpressionVo2 = null; + if (queryCriteriaVo.getAuthenticationInfo() != null) { + System.out.println("l"); + List uuidList = new ArrayList<>(); + if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { + uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { + uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { + uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); + } + if (CollectionUtils.isNotEmpty(uuidList)) { + System.out.println("m"); + orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); + } + } + if (orRightExpressionVo2 != null) { + System.out.println("n"); + orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); + } else { + System.out.println("o"); + orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); + } + ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); + whereExpressionList.add(orExpressionVo); + } + } + /* + + AND a.`state_id` IN + + #{stateId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { + System.out.println("p"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); + } + /* + + AND a.`vendor_id` IN + + #{vendorId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { + System.out.println("q"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); + } + /* + + AND a.`env_id` IN + + #{envId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { + System.out.println("r"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); + } + /* + + AND a.`env_id` is null + + */ + if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { + System.out.println("s"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); + } + /* + + AND a.`app_system_id` IN + + #{appSystemId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { + System.out.println("t"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); + } + /* + + AND a.`app_module_id` IN + + #{appModuleId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { + System.out.println("u"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); + } + /* + + AND a.`id` IN + + #{id} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { + System.out.println("v"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); + } + /* + + AND a.`id` IN + + #{id} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { + System.out.println("w"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); + } + /* + + AND a.`inspect_status` IN + + #{inspectStatus} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { + System.out.println("x"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); + } + sqlVo.withJoinList(joinList); + sqlVo.withWhereExpressionList(whereExpressionList); + return sqlVo; + } + + private SqlVo getSqlVoForInspect(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + SqlVo sqlVo = new SqlVo(); + List joinList = new ArrayList<>(); + List whereExpressionList = new ArrayList<>(); + /* + + JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) + JOIN fulltextindex_word fw ON ffc.word_id = fw.id + AND (fw.word IN + + #{item} + + ) + + */ +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { +// System.out.println("a"); +// { +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), +// "and", +// $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); +// joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); +// } +// { +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("fw.id", "=", "ffc.word_id"), +// "and", +// $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); +// joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); +// } +// } + /* + + AND + + + a.`name` LIKE #{item} + + + + + a.`ip` LIKE #{item} + + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { + String columnName = null; + if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { + System.out.println("b"); + columnName = filterItemFieldName2ColumnMap.get("name").toString(); + } else { + System.out.println("c"); + columnName = filterItemFieldName2ColumnMap.get("ip").toString(); + } + ExpressionVo orExp = null; + for (String item : queryCriteriaVo.getBatchSearchList()) { + if (orExp != null) { + orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); + } else { + orExp = $sql.exp(columnName, "like", $sql.value(item)); + } + } + whereExpressionList.add($sql.exp("(", orExp, ")")); + } + /* + + LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` + LEFT JOIN `cmdb_resourcecenter_account` c ON c.`id` = b.`account_id` + + + + AND c.`protocol_id` IN + + #{protocolId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { + System.out.println("d"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); + whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); + } + /* + + LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` + + + + AND d.`tag_id` IN + + #{tagId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { + System.out.println("e"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); + } + /* + + left join autoexec_job_resource_inspect ajri on ajri.resource_id=a.id + left join autoexec_job_phase_node ajpn on ajpn.job_phase_id =ajri.phase_id AND ajpn.resource_id = a.id + + + + AND a.`inspect_status` IN + + #{inspectStatus} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { + System.out.println("f"); + joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); + whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); + } + /* + + LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id + LEFT JOIN cmdb_group_auth cga ON ccg.group_id = cga.group_id + + + LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('autoexec') + + + LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('readonly','maintain','autoexec') + + + + */ + if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { + joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); + + List strList = new ArrayList<>(); + if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { + System.out.println("g"); + strList.add("autoexec"); + } else { + System.out.println("h"); + strList.add("autoexec"); + strList.add("readonly"); + strList.add("maintain"); + } + ExpressionVo expressionVo = $sql.exp( + $sql.exp("cg.id", "=", "cga.group_id"), + "and", + $sql.exp("cg.type", "in", strList) + ); + joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); + } + /* + + + AND a.`type_id` IN + + #{typeId} + + + + AND ( + + + a.`type_id` IN + + #{authedTypeId} + + + + 1 = 0 + + + or ( + cg.id is not null and + a.`type_id` IN + + #{typeId} + + and + ((cga.auth_type = 'common' AND cga.auth_uuid = 'alluser') + + OR cga.auth_uuid IN ( + #{authenticationInfo.userUuid} + + + #{item} + + + + + #{item} + + + ) + + ) + ) + ) + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { + if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { + System.out.println("i"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { + ExpressionVo orLeftExpressionVo = null; + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { + System.out.println("j"); + orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); + } else { + System.out.println("k"); + orLeftExpressionVo = $sql.exp(1, "=", 0); + } + ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + + ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); + ExpressionVo orRightExpressionVo2 = null; + if (queryCriteriaVo.getAuthenticationInfo() != null) { + System.out.println("l"); + List uuidList = new ArrayList<>(); + if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { + uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { + uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); + } + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { + uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); + } + if (CollectionUtils.isNotEmpty(uuidList)) { + System.out.println("m"); + orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); + } + } + if (orRightExpressionVo2 != null) { + System.out.println("n"); + orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); + } else { + System.out.println("o"); + orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); + } + ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); + whereExpressionList.add(orExpressionVo); + } + } + /* + + AND a.`state_id` IN + + #{stateId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { + System.out.println("p"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); + } + /* + + AND a.`vendor_id` IN + + #{vendorId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { + System.out.println("q"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); + } + /* + + AND a.`env_id` IN + + #{envId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { + System.out.println("r"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); + } + /* + + AND a.`env_id` is null + + */ +// if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { +// System.out.println("s"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); +// } + /* + + AND a.`app_system_id` IN + + #{appSystemId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { + System.out.println("t"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); + } + /* + + AND a.`app_module_id` IN + + #{appModuleId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { + System.out.println("u"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); + } + /* + + AND a.`id` IN + + #{id} + + + */ +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { +// System.out.println("v"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); +// } + /* + + AND a.`id` IN + + #{id} + + + */ +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { +// System.out.println("w"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); +// } + /* + + AND a.`inspect_status` IN + + #{inspectStatus} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { + System.out.println("x"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); + } + sqlVo.withJoinList(joinList); + sqlVo.withWhereExpressionList(whereExpressionList); + return sqlVo; + } + + private SqlVo getSqlVoForInspectConfigFile(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + SqlVo sqlVo = new SqlVo(); + List joinList = new ArrayList<>(); + List whereExpressionList = new ArrayList<>(); + /* + + JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) + JOIN fulltextindex_word fw ON ffc.word_id = fw.id + AND (fw.word IN + + #{item} + + ) + + */ +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { +// System.out.println("a"); +// { +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), +// "and", +// $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); +// joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); +// } +// { +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("fw.id", "=", "ffc.word_id"), +// "and", +// $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); +// joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); +// } +// } + /* + + AND + + + a.`name` LIKE #{item} + + + + + a.`ip` LIKE #{item} + + + + */ +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { +// String columnName = null; +// if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { +// System.out.println("b"); +// columnName = filterItemFieldName2ColumnMap.get("name").toString(); +// } else { +// System.out.println("c"); +// columnName = filterItemFieldName2ColumnMap.get("ip").toString(); +// } +// ExpressionVo orExp = null; +// for (String item : queryCriteriaVo.getBatchSearchList()) { +// if (orExp != null) { +// orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); +// } else { +// orExp = $sql.exp(columnName, "like", $sql.value(item)); +// } +// } +// whereExpressionList.add($sql.exp("(", orExp, ")")); +// } + /* + + LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` + LEFT JOIN `cmdb_resourcecenter_account` c ON c.`id` = b.`account_id` + + + + AND c.`protocol_id` IN + + #{protocolId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { + System.out.println("d"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); + whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); + } + /* + + LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` + + + + AND d.`tag_id` IN + + #{tagId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { + System.out.println("e"); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); + } + /* + + left join autoexec_job_resource_inspect ajri on ajri.resource_id=a.id + left join autoexec_job_phase_node ajpn on ajpn.job_phase_id =ajri.phase_id AND ajpn.resource_id = a.id + + + + AND a.`inspect_status` IN + + #{inspectStatus} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { + System.out.println("f"); +// joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); +// ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); + } + if (queryCriteriaVo.getJobId() != null) { + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + whereExpressionList.add($sql.exp("ajpn.job_id", "=", queryCriteriaVo.getJobId())); + } + /* + + LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id + LEFT JOIN cmdb_group_auth cga ON ccg.group_id = cga.group_id + + + LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('autoexec') + + + LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('readonly','maintain','autoexec') + + + + */ +// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { +// joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); +// joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); +// +// List strList = new ArrayList<>(); +// if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { +// System.out.println("g"); +// strList.add("autoexec"); +// } else { +// System.out.println("h"); +// strList.add("autoexec"); +// strList.add("readonly"); +// strList.add("maintain"); +// } +// ExpressionVo expressionVo = $sql.exp( +// $sql.exp("cg.id", "=", "cga.group_id"), +// "and", +// $sql.exp("cg.type", "in", strList) +// ); +// joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); +// } + /* + + + AND a.`type_id` IN + + #{typeId} + + + + AND ( + + + a.`type_id` IN + + #{authedTypeId} + + + + 1 = 0 + + + or ( + cg.id is not null and + a.`type_id` IN + + #{typeId} + + and + ((cga.auth_type = 'common' AND cga.auth_uuid = 'alluser') + + OR cga.auth_uuid IN ( + #{authenticationInfo.userUuid} + + + #{item} + + + + + #{item} + + + ) + + ) + ) + ) + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); +// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { +// System.out.println("i"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); +// } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { +// ExpressionVo orLeftExpressionVo = null; +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { +// System.out.println("j"); +// orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); +// } else { +// System.out.println("k"); +// orLeftExpressionVo = $sql.exp(1, "=", 0); +// } +// ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); +// +// ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); +// ExpressionVo orRightExpressionVo2 = null; +// if (queryCriteriaVo.getAuthenticationInfo() != null) { +// System.out.println("l"); +// List uuidList = new ArrayList<>(); +// if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { +// uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); +// } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { +// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); +// } +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { +// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); +// } +// if (CollectionUtils.isNotEmpty(uuidList)) { +// System.out.println("m"); +// orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); +// } +// } +// if (orRightExpressionVo2 != null) { +// System.out.println("n"); +// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); +// } else { +// System.out.println("o"); +// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); +// } +// ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); +// whereExpressionList.add(orExpressionVo); +// } + } + /* + + AND a.`state_id` IN + + #{stateId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { + System.out.println("p"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); + } + /* + + AND a.`vendor_id` IN + + #{vendorId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { + System.out.println("q"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); + } + /* + + AND a.`env_id` IN + + #{envId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { + System.out.println("r"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); + } + /* + + AND a.`env_id` is null + + */ +// if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { +// System.out.println("s"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); +// } + /* + + AND a.`app_system_id` IN + + #{appSystemId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { + System.out.println("t"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); + } + /* + + AND a.`app_module_id` IN + + #{appModuleId} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { + System.out.println("u"); + whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); + } + /* + + AND a.`id` IN + + #{id} + + + */ +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { +// System.out.println("v"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); +// } + /* + + AND a.`id` IN + + #{id} + + + */ +// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { +// System.out.println("w"); +// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); +// } + /* + + AND a.`inspect_status` IN + + #{inspectStatus} + + + */ + if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { + System.out.println("x"); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_cientity_inspect", "cci").withOn($sql.exp( + $sql.exp("cci.ci_entity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + "and", + $sql.exp("cci.job_id", "=", "ajpn.job_id") + ))); + whereExpressionList.add($sql.exp("cci.inspect_status", "in", queryCriteriaVo.getInspectStatusList())); + } + sqlVo.withJoinList(joinList); + sqlVo.withWhereExpressionList(whereExpressionList); + return sqlVo; + } +} 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 a60e1ff2..bffbf765 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,7 +16,6 @@ along with this program. If not, see .*/ package neatlogic.module.cmdb.service.resourcecenter.resource; import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.asynchronization.threadlocal.TenantContext; import neatlogic.framework.asynchronization.threadlocal.UserContext; import neatlogic.framework.auth.core.AuthActionChecker; import neatlogic.framework.cmdb.auth.label.CIENTITY_MODIFY; @@ -24,29 +23,17 @@ import neatlogic.framework.cmdb.auth.label.CI_MODIFY; import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; import neatlogic.framework.cmdb.dto.ci.AttrVo; import neatlogic.framework.cmdb.dto.ci.CiVo; -import neatlogic.framework.cmdb.dto.globalattr.GlobalAttrVo; import neatlogic.framework.cmdb.dto.resourcecenter.*; -import neatlogic.framework.cmdb.dto.resourcecenter.config.*; +import neatlogic.framework.cmdb.dto.resourcecenter.config.ResourceEntityConfigVo; +import neatlogic.framework.cmdb.dto.resourcecenter.config.ResourceEntityFieldMappingVo; +import neatlogic.framework.cmdb.dto.resourcecenter.config.ResourceEntityVo; import neatlogic.framework.cmdb.dto.tag.TagVo; import neatlogic.framework.cmdb.enums.CmdbTenantConfig; -import neatlogic.framework.cmdb.enums.RelDirectionType; import neatlogic.framework.cmdb.exception.ci.CiNotFoundException; -import neatlogic.framework.cmdb.exception.resourcecenter.ResourceViewFieldMappingException; -import neatlogic.framework.cmdb.utils.ResourceViewGenerateSqlUtil; -import neatlogic.framework.cmdb.utils.ResourceViewGenerateSqlUtilForTiDB; import neatlogic.framework.config.ConfigManager; import neatlogic.framework.dao.mapper.DataBaseViewInfoMapper; import neatlogic.framework.dao.mapper.SchemaMapper; -import neatlogic.framework.dto.DataBaseViewInfoVo; import neatlogic.framework.fulltextindex.utils.FullTextIndexUtil; -import neatlogic.framework.sqlgenerator.$sql; -import neatlogic.framework.sqlgenerator.ExpressionVo; -import neatlogic.framework.sqlgenerator.JoinVo; -import neatlogic.framework.sqlgenerator.SqlVo; -import neatlogic.framework.store.mysql.DatabaseVendor; -import neatlogic.framework.store.mysql.DatasourceManager; -import neatlogic.framework.transaction.core.EscapeTransactionJob; -import neatlogic.framework.util.Md5Util; import neatlogic.module.cmdb.dao.mapper.ci.AttrMapper; import neatlogic.module.cmdb.dao.mapper.ci.CiMapper; import neatlogic.module.cmdb.dao.mapper.globalattr.GlobalAttrMapper; @@ -54,16 +41,8 @@ import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceAccountMapper; import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceEntityMapper; import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper; import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceTagMapper; -import neatlogic.module.cmdb.utils.ResourceEntityFactory; -import net.sf.jsqlparser.schema.Column; -import net.sf.jsqlparser.schema.Table; -import net.sf.jsqlparser.statement.create.table.ColDataType; -import net.sf.jsqlparser.statement.create.table.ColumnDefinition; -import net.sf.jsqlparser.statement.create.table.CreateTable; -import net.sf.jsqlparser.statement.select.PlainSelect; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.exception.ExceptionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -597,3572 +576,4 @@ public class ResourceCenterResourceServiceImpl implements IResourceCenterResourc } } } - - @Override - public String buildResourceView(ResourceEntityVo resourceEntityVo) { - String viewName = resourceEntityVo.getName(); - String select = null; - String error = StringUtils.EMPTY; - try { - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - select = resourceViewGenerateSqlUtilForTiDB.getSql().toString(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - select = resourceViewGenerateSqlUtil.getSql().toString(); - } - String md5 = Md5Util.encryptMD5(select); - boolean needCreateView = true; - String tableType = schemaMapper.checkTableOrViewIsExists(TenantContext.get().getDataDbName(), viewName); - if (Objects.equals(tableType, "VIEW")) { - DataBaseViewInfoVo dataBaseViewInfoVo = dataBaseViewInfoMapper.getDataBaseViewInfoByViewName(viewName); - if (dataBaseViewInfoVo != null) { - // md5相同就不用更新视图了 - if (Objects.equals(md5, dataBaseViewInfoVo.getMd5())) { - try { - resourceEntityMapper.getResourceEntityViewDataList(viewName, 0, 1); - needCreateView = false; - } catch (Exception e) { - } - } - } - } - if (needCreateView) { - String selectSql = select; - EscapeTransactionJob.State s = new EscapeTransactionJob(() -> { - if (Objects.equals(tableType, "BASE TABLE")) { - schemaMapper.deleteTable(TenantContext.get().getDataDbName() + "." + viewName); - } - String sql = "CREATE OR REPLACE VIEW " + TenantContext.get().getDataDbName() + "." + viewName + " AS " + selectSql; - schemaMapper.insertView(sql); - }).execute(); - if (s.isSucceed()) { - DataBaseViewInfoVo dataBaseViewInfoVo = new DataBaseViewInfoVo(); - dataBaseViewInfoVo.setViewName(viewName); - dataBaseViewInfoVo.setMd5(md5); - dataBaseViewInfoVo.setLcu(UserContext.get().getUserUuid()); - dataBaseViewInfoMapper.insertDataBaseViewInfo(dataBaseViewInfoVo); - } else { - error = s.getError(); - } - } - } catch (Exception ex) { - error = ExceptionUtils.getStackTrace(ex); - } finally { - if (StringUtils.isNotBlank(error)) { - String tableType = schemaMapper.checkTableOrViewIsExists(TenantContext.get().getDataDbName(), viewName); - if (!Objects.equals(tableType, "BASE TABLE")) { - EscapeTransactionJob.State s = new EscapeTransactionJob(() -> { - schemaMapper.deleteView(TenantContext.get().getDataDbName() + "." + viewName); - List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName(viewName); - Table table = new Table(); - table.setName(viewName); - table.setSchemaName(TenantContext.get().getDataDbName()); - List columnDefinitions = new ArrayList<>(); - for (String columnName : fieldNameList) { - ColumnDefinition columnDefinition = new ColumnDefinition(); - columnDefinition.setColumnName(columnName); - columnDefinition.setColDataType(new ColDataType("int")); - columnDefinitions.add(columnDefinition); - } - CreateTable createTable = new CreateTable(); - createTable.setTable(table); - createTable.setColumnDefinitions(columnDefinitions); - createTable.setIfNotExists(true); - schemaMapper.insertView(createTable.toString()); - }).execute(); - } - resourceEntityVo.setError(error); - } - } - return select; - } - - @Override - public String buildGetResourceIdListSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); -// List joinList = getJoinList(queryCriteriaVo, filterItemFieldName2ColumnMap); -// $sql.addJoinList(plainSelect, joinList); -// List whereExpressionList = getWhereExpressionList(queryCriteriaVo, filterItemFieldName2ColumnMap); -// $sql.addWhereExpressionList(plainSelect, whereExpressionList); - if (CollectionUtils.isNotEmpty(searchVo.getKeywordList()) && searchVo.getNameFieldAttrId() != null && searchVo.getIpFieldAttrId() != null) { - $sql.addOrderBy(plainSelect, $sql.fun("COUNT", "fw.word").withDistinct(true), "desc"); - } - Column idColumn = filterItemFieldName2ColumnMap.get("id"); - // 分组 - $sql.addGroupBy(plainSelect, idColumn.toString()); - // 排序 - $sql.addOrderBy(plainSelect, idColumn.toString(), "desc"); - $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceCountSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); -// List joinList = getJoinList(queryCriteriaVo, filterItemFieldName2ColumnMap); -// $sql.addJoinList(plainSelect, joinList); -// List whereExpressionList = getWhereExpressionList(queryCriteriaVo, filterItemFieldName2ColumnMap); -// $sql.addWhereExpressionList(plainSelect, whereExpressionList); - Column column = filterItemFieldName2ColumnMap.get("id"); - $sql.setSelectColumn(plainSelect, $sql.fun("COUNT", column.toString()).withDistinct(true)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceListSql(List idList, List selectFieldNameList) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(selectFieldNameList)) { - selectItemFieldNameList.addAll(selectFieldNameList); - } - List filterItemFieldNameList = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(idList)) { - filterItemFieldNameList.add("id"); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column column = filterItemFieldName2ColumnMap.get("id"); - $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "in", idList)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceListSql(List idList) { - List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName("scence_ipobject_detail"); - fieldNameList.remove("env_seq_no"); - fieldNameList.remove("vendor_id"); - fieldNameList.remove("vendor_name"); - fieldNameList.remove("vendor_label"); - fieldNameList.remove("datacenter_id"); - fieldNameList.remove("datacenter_name"); - fieldNameList.remove("fcu"); - fieldNameList.remove("fcd"); - fieldNameList.remove("lcu"); - fieldNameList.remove("lcd"); - return buildGetResourceListSql(idList, fieldNameList); - } - - @Override - public String buildGetResourceCountByNameKeywordSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - queryCriteriaVo.setInspectJobPhaseNodeStatusList(null); - queryCriteriaVo.setBatchSearchList(null); - queryCriteriaVo.setIpFieldAttrId(null); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - Column column = filterItemFieldName2ColumnMap.get("id"); - $sql.setSelectColumn(plainSelect, $sql.fun("COUNT", column.toString()).withDistinct(true)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceCountByIpKeywordSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - queryCriteriaVo.setInspectJobPhaseNodeStatusList(null); - queryCriteriaVo.setBatchSearchList(null); - queryCriteriaVo.setNameFieldAttrId(null); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - Column column = filterItemFieldName2ColumnMap.get("id"); - $sql.setSelectColumn(plainSelect, $sql.fun("COUNT", column.toString()).withDistinct(true)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetAuthResourceListSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - selectItemFieldNameList.add("name"); - selectItemFieldNameList.add("ip"); - selectItemFieldNameList.add("port"); - selectItemFieldNameList.add("type_id"); - selectItemFieldNameList.add("type_name"); - selectItemFieldNameList.add("type_label"); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceListByIpAndPortAndNameWithFilterSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - selectItemFieldNameList.add("name"); - selectItemFieldNameList.add("ip"); - selectItemFieldNameList.add("port"); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - filterItemFieldNameList.add("port"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - String keyword = searchVo.getKeyword(); - if (StringUtils.isNotBlank(keyword)) { - keyword = "%" + keyword + "%"; - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); - $sql.addWhereExpression(plainSelect, - $sql.exp("(", - $sql.exp(nameColumn.toString(), "like", $sql.value(keyword)), - "OR", - $sql.exp(ipColumn.toString(), "like", $sql.value(keyword)), - ")")); - } - List inputNodeList = searchVo.getInputNodeList(); - if (CollectionUtils.isNotEmpty(inputNodeList)) { - ExpressionVo orExp = null; - for (ResourceVo inputNode : inputNodeList) { - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); - ExpressionVo andExp = $sql.exp(ipColumn.toString(), "=", $sql.value(inputNode.getIp())); - Column portColumn = filterItemFieldName2ColumnMap.get("port"); - if (inputNode.getPort() != null) { - andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "=", inputNode.getPort())); - } else { - andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "is null")); - } - if (StringUtils.isNotBlank(inputNode.getName())) { - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); - andExp = $sql.exp(andExp, "and", $sql.exp(nameColumn.toString(), "=", $sql.value(inputNode.getName()))); - } - andExp = $sql.exp("(", andExp, ")"); - if (orExp == null) { - orExp = andExp; - } else { - orExp = $sql.exp(orExp, "or", andExp); - } - } - orExp = $sql.exp("(", orExp, ")"); - $sql.addWhereExpression(plainSelect, orExp); - } else { - $sql.addWhereExpression(plainSelect, $sql.exp(1, "=", 0)); - } - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceTypeIdListByAuthSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("type_id"); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - $sql.setDistinct(plainSelect, true); - Column typeIdColumn = filterItemFieldName2ColumnMap.get("type_id"); - $sql.setSelectColumn(plainSelect, typeIdColumn.toString()); - String keyword = searchVo.getKeyword(); - if (StringUtils.isNotBlank(keyword)) { - keyword = "%" + keyword + "%"; - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); - $sql.addWhereExpression(plainSelect, - $sql.exp("(", - $sql.exp(nameColumn.toString(), "like", $sql.value(keyword)), - "OR", - $sql.exp(ipColumn.toString(), "like", $sql.value(keyword)), - ")")); - } - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceIdByIpAndPortAndNameSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - filterItemFieldNameList.add("port"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - if (Objects.equals(searchVo.getIsHasAuth(), false)) { - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(); - queryCriteriaVo.setIsHasAuth(false); - if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { - queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - } - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "=", $sql.value(searchVo.getIp()))); - if (StringUtils.isNotBlank(searchVo.getPort())) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "=", $sql.value(searchVo.getPort()))); - } else { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "is null")); - } - if (StringUtils.isNotBlank(searchVo.getName())) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "=", $sql.value(searchVo.getName()))); - } - $sql.setLimit(plainSelect, 1); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceIdListByIpAndPortAndNameSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - filterItemFieldNameList.add("port"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - if (Objects.equals(searchVo.getIsHasAuth(), false)) { - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(); - queryCriteriaVo.setIsHasAuth(false); - if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { - queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - } - List inputNodeList = searchVo.getInputNodeList(); - if (CollectionUtils.isNotEmpty(inputNodeList)) { - ExpressionVo orExp = null; - for (ResourceVo inputNode : inputNodeList) { - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); - ExpressionVo andExp = $sql.exp(ipColumn.toString(), "=", $sql.value(inputNode.getIp())); - Column portColumn = filterItemFieldName2ColumnMap.get("port"); - if (inputNode.getPort() != null) { - andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "=", inputNode.getPort())); - } else { - andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "is null")); - } - if (StringUtils.isNotBlank(inputNode.getName())) { - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); - andExp = $sql.exp(andExp, "and", $sql.exp(nameColumn.toString(), "=", $sql.value(inputNode.getName()))); - } - andExp = $sql.exp("(", andExp, ")"); - if (orExp == null) { - orExp = andExp; - } else { - orExp = $sql.exp(orExp, "or", andExp); - } - } - orExp = $sql.exp("(", orExp, ")"); - $sql.addWhereExpression(plainSelect, orExp); - } else { - $sql.addWhereExpression(plainSelect, $sql.exp(1, "=", 0)); - } - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceListByIpAndPortAndNameSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - selectItemFieldNameList.add("name"); - selectItemFieldNameList.add("ip"); - selectItemFieldNameList.add("port"); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - filterItemFieldNameList.add("port"); - filterItemFieldNameList.add("type_name"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); - if (Objects.equals(searchVo.getIsHasAuth(), false)) { - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(); - queryCriteriaVo.setIsHasAuth(false); - if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { - queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - } - List inputNodeList = searchVo.getInputNodeList(); - if (CollectionUtils.isNotEmpty(inputNodeList)) { - ExpressionVo orExp = null; - for (ResourceVo inputNode : inputNodeList) { - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); - ExpressionVo andExp = $sql.exp(ipColumn.toString(), "=", $sql.value(inputNode.getIp())); - Column portColumn = filterItemFieldName2ColumnMap.get("port"); - if (inputNode.getPort() != null) { - andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "=", inputNode.getPort())); - } else { - andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "is null")); - } - if (StringUtils.isNotBlank(inputNode.getName())) { - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); - andExp = $sql.exp(andExp, "and", $sql.exp(nameColumn.toString(), "=", $sql.value(inputNode.getName()))); - } - andExp = $sql.exp("(", andExp, ")"); - if (orExp == null) { - orExp = andExp; - } else { - orExp = $sql.exp(orExp, "or", andExp); - } - } - orExp = $sql.exp("(", orExp, ")"); - $sql.addWhereExpression(plainSelect, orExp); - } else { - $sql.addWhereExpression(plainSelect, $sql.exp(1, "=", 0)); - } - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceByIdListSql(List idList) { - List fieldNameList = new ArrayList<>(); - fieldNameList.add("id"); - fieldNameList.add("name"); - fieldNameList.add("ip"); - fieldNameList.add("port"); - fieldNameList.add("type_id"); - fieldNameList.add("type_name"); - fieldNameList.add("type_label"); - return buildGetResourceListSql(idList, fieldNameList); - } - - @Override - public String buildGetResourceByIdSql(Long id, List selectFieldNameList) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(selectFieldNameList)) { - selectItemFieldNameList.addAll(selectFieldNameList); - } - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column column = filterItemFieldName2ColumnMap.get("id"); - $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "=", id)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceByIdSql(Long id) { - List fieldNameList = new ArrayList<>(); - fieldNameList.add("id"); - fieldNameList.add("name"); - fieldNameList.add("ip"); - fieldNameList.add("port"); - fieldNameList.add("type_id"); - fieldNameList.add("type_name"); - fieldNameList.add("type_label"); - return buildGetResourceByIdSql(id, fieldNameList); - } - - @Override - public String buildGetResourceIdByResourceIdSql(Long id) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column column = filterItemFieldName2ColumnMap.get("id"); - $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "=", id)); - $sql.setLimit(plainSelect, 1); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildCheckResourceIdListIsExistsSql(List idList) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column column = filterItemFieldName2ColumnMap.get("id"); - $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "in", idList)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceIdListByAppSystemIdAndModuleIdAndEnvIdSql(ResourceVo resourceVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("app_system_id"); - filterItemFieldNameList.add("app_module_id"); - filterItemFieldNameList.add("env_id"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column appSystemIdColumn = filterItemFieldName2ColumnMap.get("app_system_id"); - $sql.addWhereExpression(plainSelect, $sql.exp(appSystemIdColumn.toString(), "=", resourceVo.getAppSystemId())); - Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); - $sql.addWhereExpression(plainSelect, $sql.exp(appModuleIdColumn.toString(), "=", resourceVo.getAppModuleId())); - Column envIdColumn = filterItemFieldName2ColumnMap.get("env_id"); - $sql.addWhereExpression(plainSelect, $sql.exp(envIdColumn.toString(), "=", resourceVo.getEnvId())); - Column idColumn = filterItemFieldName2ColumnMap.get("id"); - $sql.addOrderBy(plainSelect, idColumn.toString(), "desc"); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceListByTypeIdListAndIpListSql(List typeIdList, List ipList) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - selectItemFieldNameList.add("ip"); - selectItemFieldNameList.add("name"); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("type_id"); - filterItemFieldNameList.add("ip"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column typeIdColumn = filterItemFieldName2ColumnMap.get("type_id"); - $sql.addWhereExpression(plainSelect, $sql.exp(typeIdColumn.toString(), "in", typeIdList)); - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); - $sql.addWhereExpression(plainSelect, $sql.exp(ipColumn.toString(), "in", ipList)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceByIpAndPortAndNameAndTypeNameSql(String ip, Integer port, String name, String typeName) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - selectItemFieldNameList.add("name"); - selectItemFieldNameList.add("ip"); - selectItemFieldNameList.add("port"); -// selectItemFieldNameList.add("type_name"); - List filterItemFieldNameList = new ArrayList<>(); -// filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - filterItemFieldNameList.add("port"); - filterItemFieldNameList.add("type_name"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "=", $sql.value(ip))); - if (port != null) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "=", port)); - } else { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "is null")); - } - if (StringUtils.isNotBlank(name)) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "=", $sql.value(name))); - } - if (StringUtils.isNotBlank(typeName)) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("type_name").toString(), "=", $sql.value(typeName))); - } - $sql.setLimit(plainSelect, 1); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetResourceByIpAndPortSql(String ip, Integer port) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - selectItemFieldNameList.add("name"); - selectItemFieldNameList.add("ip"); - selectItemFieldNameList.add("port"); -// selectItemFieldNameList.add("type_name"); - List filterItemFieldNameList = new ArrayList<>(); -// filterItemFieldNameList.add("id"); -// filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - filterItemFieldNameList.add("port"); - filterItemFieldNameList.add("type_name"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "=", $sql.value(ip))); - if (port != null) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "=", port)); - } else { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "is null")); - } - $sql.setLimit(plainSelect, 1); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildSearchAccountComponentSql(AccountComponentVo accountComponentVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - selectItemFieldNameList.add("id"); - selectItemFieldNameList.add("name"); - selectItemFieldNameList.add("ip"); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); -// filterItemFieldNameList.add("port"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); - $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account_protocol", "d").withOn($sql.exp("d.id", "=", "c.protocol_id"))); -// $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); - $sql.addSelectColumn(plainSelect, "c.id", "accountId"); - $sql.addSelectColumn(plainSelect, "c.name", "accountName"); - $sql.addSelectColumn(plainSelect, "c.account", "account"); - $sql.addSelectColumn(plainSelect, "d.id", "protocolId"); - $sql.addSelectColumn(plainSelect, "d.name", "protocol"); - $sql.addSelectColumn(plainSelect, "d.port", "port"); - String keyword = accountComponentVo.getKeyword(); - if (StringUtils.isNotBlank(keyword)) { -// keyword = "%" + keyword + "%"; - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); - $sql.addWhereExpression(plainSelect, - $sql.exp("(", - $sql.exp(nameColumn.toString(), "like", "'%" + keyword + "%'"), - "OR", - $sql.exp(ipColumn.toString(), "=", $sql.value(keyword)), - ")" - ) - ); - } - $sql.setLimit(plainSelect, accountComponentVo.getStartNum(), accountComponentVo.getPageSize()); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildSearchAccountComponentCountSql(AccountComponentVo accountComponentVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); -// selectItemFieldNameList.add("id"); -//// selectItemFieldNameList.add("name"); -//// selectItemFieldNameList.add("ip"); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); - $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account_protocol", "d").withOn($sql.exp("d.id", "=", "c.protocol_id"))); - $sql.addSelectColumn(plainSelect, $sql.fun("count", "b.resource_id", "b.account_id").withDistinct(true)); - String keyword = accountComponentVo.getKeyword(); - if (StringUtils.isNotBlank(keyword)) { - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); - $sql.addWhereExpression(plainSelect, - $sql.exp("(", - $sql.exp(nameColumn.toString(), "like", "'%" + keyword + "%'"), - "OR", - $sql.exp(ipColumn.toString(), "=", $sql.value(keyword)), - ")" - ) - ); - } -// $sql.setLimit(plainSelect, accountComponentVo.getStartNum(), accountComponentVo.getPageSize()); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetAppEnvListByAppSystemIdAndAppModuleIdSql(Long appSystemId, Long appModuleId) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); -// selectItemFieldNameList.add("id"); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("app_system_id"); - filterItemFieldNameList.add("app_module_id"); - filterItemFieldNameList.add("env_id"); - filterItemFieldNameList.add("env_name"); - filterItemFieldNameList.add("env_seq_no"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.setDistinct(plainSelect, true); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_id").toString(), "id"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_name").toString(), "name"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_seq_no").toString(), "seqNo"); - Column appSystemIdColumn = filterItemFieldName2ColumnMap.get("app_system_id"); - $sql.addWhereExpression(plainSelect, $sql.exp(appSystemIdColumn.toString(), "=", appSystemId)); - Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); - $sql.addWhereExpression(plainSelect, $sql.exp(appModuleIdColumn.toString(), "=", appModuleId)); - Column envIdColumn = filterItemFieldName2ColumnMap.get("env_id"); - $sql.addWhereExpression(plainSelect, $sql.exp(envIdColumn.toString(), "is not null")); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(Long appSystemId) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); -// selectItemFieldNameList.add("id"); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("app_system_id"); - filterItemFieldNameList.add("app_module_id"); - filterItemFieldNameList.add("env_id"); -// filterItemFieldNameList.add("env_name"); -// filterItemFieldNameList.add("env_seq_no"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } -// $sql.setDistinct(plainSelect, true); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("app_module_id").toString(), "appModuleId"); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("env_id").toString()).withDistinct(true), "count"); -// $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_name").toString(), "name"); -// $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_seq_no").toString(), "seqNo"); - Column appSystemIdColumn = filterItemFieldName2ColumnMap.get("app_system_id"); - $sql.addWhereExpression(plainSelect, $sql.exp(appSystemIdColumn.toString(), "=", appSystemId)); -// Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); -// $sql.addWhereExpression(plainSelect, $sql.exp(appModuleIdColumn.toString(), "=", appModuleId)); - Column envIdColumn = filterItemFieldName2ColumnMap.get("env_id"); - $sql.addWhereExpression(plainSelect, $sql.exp(envIdColumn.toString(), "is not null")); - Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); - $sql.addGroupBy(plainSelect, appModuleIdColumn.toString()); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectResourceListByIdListSql(List idList, List selectFieldNameList) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(selectFieldNameList)) { - selectItemFieldNameList.addAll(selectFieldNameList); - } - List filterItemFieldNameList = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(idList)) { - filterItemFieldNameList.add("id"); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column idColumn = filterItemFieldName2ColumnMap.get("id"); - $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", idColumn.toString()))); - $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_account", "crra").withOn($sql.exp("crra.resource_id", "=", idColumn.toString()))); - $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_account", "cra").withOn($sql.exp("cra.id", "=", "crra.account_id"))); - $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_tag", "crrt").withOn($sql.exp("crrt.resource_id", "=", idColumn.toString()))); - $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp( - $sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), - "and", - $sql.exp("ajpn.resource_id", "=", idColumn.toString()) - ))); - $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_tag", "ct").withOn($sql.exp("ct.id", "=", "crrt.tag_id"))); - $sql.addSelectColumn(plainSelect, "ajpn.id", "inspectJobPhaseNodeId"); - $sql.addSelectColumn(plainSelect, "ajpn.`job_id`", "jobId"); - $sql.addSelectColumn(plainSelect, "ajpn.status", "jobPhaseNodeStatus"); - $sql.addSelectColumn(plainSelect, "ct.name", "tagName"); - $sql.addWhereExpression(plainSelect, $sql.exp(idColumn.toString(), "in", idList)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectResourceListByIdListSql(List idList) { - List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName("scence_ipobject_detail"); - fieldNameList.remove("env_seq_no"); - fieldNameList.remove("vendor_id"); - fieldNameList.remove("vendor_name"); - fieldNameList.remove("vendor_label"); - fieldNameList.remove("datacenter_id"); - fieldNameList.remove("datacenter_name"); - fieldNameList.remove("fcu"); - fieldNameList.remove("fcd"); - fieldNameList.remove("lcu"); - fieldNameList.remove("lcd"); - return buildGetInspectResourceListByIdListSql(idList, fieldNameList); - } - - @Override - public String buildGetInspectResourceCountSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - /* - - AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) - - */ - if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { - String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp("(", - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), - ")") - ); - } - SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectResourceCountByIpKeywordSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - /* - - AND a.`ip` LIKE CONCAT('%', #{keyword}, '%')) - - */ - if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { - String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword)); - } - SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectResourceCountByNameKeywordSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - /* - - AND a.`name` LIKE CONCAT('%', #{keyword}, '%')) - - */ - if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { - String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword)); - } - SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectResourceIdListSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - /* - - AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) - - */ - if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { - String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp("(", - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), - ")") - ); - } - SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); - $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); - if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { - $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); - } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { - $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); - } - $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); - $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectResourceListByIdListAndJobIdSql(List idList, Long jobId) { - List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName("scence_ipobject_detail"); - fieldNameList.remove("env_seq_no"); - fieldNameList.remove("vendor_id"); - fieldNameList.remove("vendor_name"); - fieldNameList.remove("vendor_label"); - fieldNameList.remove("datacenter_id"); - fieldNameList.remove("datacenter_name"); - fieldNameList.remove("fcu"); - fieldNameList.remove("fcd"); - fieldNameList.remove("lcu"); - fieldNameList.remove("lcd"); - - fieldNameList.remove("monitor_status"); - fieldNameList.remove("monitor_time"); - fieldNameList.remove("inspect_status"); - fieldNameList.remove("inspect_time"); - fieldNameList.remove("maintenance_window"); - fieldNameList.remove("description"); - fieldNameList.remove("app_module_id"); - fieldNameList.remove("app_module_name"); - fieldNameList.remove("app_module_abbr_name"); - fieldNameList.remove("app_system_id"); - fieldNameList.remove("app_system_name"); - fieldNameList.remove("app_system_abbr_name"); - fieldNameList.remove("state_label"); - fieldNameList.remove("env_id"); - fieldNameList.remove("env_name"); - return buildGetInspectResourceListByIdListAndJobIdSql(idList, jobId, fieldNameList); - } - - @Override - public String buildGetInspectResourceListByIdListAndJobIdSql(List idList, Long jobId, List selectFieldNameList) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(selectFieldNameList)) { - selectItemFieldNameList.addAll(selectFieldNameList); - } - List filterItemFieldNameList = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(idList)) { - filterItemFieldNameList.add("id"); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column idColumn = filterItemFieldName2ColumnMap.get("id"); - $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", idColumn.toString()))); - $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_account", "crra").withOn($sql.exp("crra.resource_id", "=", idColumn.toString()))); - $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_account", "cra").withOn($sql.exp("cra.id", "=", "crra.account_id"))); - $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_tag", "crrt").withOn($sql.exp("crrt.resource_id", "=", idColumn.toString()))); - $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", idColumn.toString()))); -// $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp( -// $sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), -// "and", -// $sql.exp("ajpn.resource_id", "=", idColumn.toString()) -// ))); - $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_cientity_inspect", "cci").withOn($sql.exp( - $sql.exp("cci.ci_entity_id", "=", idColumn.toString()), - "and", - $sql.exp("cci.job_id", "=", "ajpn.job_id") - ))); - $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_tag", "ct").withOn($sql.exp("ct.id", "=", "crrt.tag_id"))); - $sql.addSelectColumn(plainSelect, "cci.inspect_status"); - $sql.addSelectColumn(plainSelect, "cci.inspect_time"); - $sql.addSelectColumn(plainSelect, "ajpn.id", "inspectJobPhaseNodeId"); - $sql.addSelectColumn(plainSelect, "ajpn.`job_id`", "jobId"); - $sql.addSelectColumn(plainSelect, "ajpn.status", "jobPhaseNodeStatus"); - $sql.addSelectColumn(plainSelect, "ct.id", "tagId"); - $sql.addSelectColumn(plainSelect, "ct.name", "tagName"); - $sql.addSelectColumn(plainSelect, "ct.description", "tagDescription"); - $sql.addWhereExpression(plainSelect, $sql.exp(idColumn.toString(), "in", idList)); - $sql.addWhereExpression(plainSelect, $sql.exp("ajpn.job_id", "=", jobId)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectAutoexecJobNodeResourceCountSql(ResourceSearchVo searchVo, Long jobId) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - queryCriteriaVo.setJobId(jobId); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - /* - - AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) - - */ - if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { - String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp("(", - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), - ")") - ); - } - SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectAutoexecJobNodeResourceCountByIpKeywordSql(ResourceSearchVo searchVo, Long jobId) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - queryCriteriaVo.setJobId(jobId); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - /* - - AND a.`ip` LIKE CONCAT('%', #{keyword}, '%')) - - */ - if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { - String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword)); - } - SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectAutoexecJobNodeResourceCountByNameKeywordSql(ResourceSearchVo searchVo, Long jobId) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - queryCriteriaVo.setJobId(jobId); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - /* - - AND a.`name` LIKE CONCAT('%', #{keyword}, '%')) - - */ - if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { - String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword)); - } - SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectAutoexecJobNodeResourceIdListSql(ResourceSearchVo searchVo, Long jobId) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - queryCriteriaVo.setJobId(jobId); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - /* - - AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) - - */ - if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { - String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp("(", - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), - ")") - ); - } - SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); - $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); - if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { - $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); - } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { - $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); - } - $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); - $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectConfigFileResourceIdListSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = getFilterItemFieldNameList(queryCriteriaVo); - filterItemFieldNameList.add("id"); - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - filterItemFieldNameList.add(queryCriteriaVo.getSearchField()); - } - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - /* - - AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) - - */ - if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { - String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp("(", - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), - ")") - ); - } - SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); - $sql.addSql(plainSelect, sqlVo); - $sql.addJoin(plainSelect, $sql.join("left join", "inspect_config_file_last_change_time", "g").withOn($sql.exp("g.`resource_id`", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); - $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); -// if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { -// $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); -// } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { -// $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); -// } - $sql.addOrderBy(plainSelect, $sql.fun("max","g.`last_change_time`"), "desc"); - $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); - $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectConfigFilePathCountSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - /* - - AND (a.`path` LIKE CONCAT('%', #{keyword}, '%') - OR b.`name` LIKE CONCAT('%', #{keyword}, '%') - OR b.`ip` LIKE CONCAT('%', #{keyword}, '%') - ) - - */ - if (StringUtils.isNotBlank(searchVo.getKeyword())) { - String keyword = "'%" + searchVo.getKeyword() + "%'"; - ExpressionVo orExp = $sql.exp( - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword) - ); - orExp = $sql.exp(orExp, "or", $sql.exp("b.path", "like", keyword)); - $sql.addWhereExpression(plainSelect, $sql.exp("(", orExp, ")") - ); - } - /* - - - AND a.`inspect_time` >= STR_TO_DATE(#{timeRange[0]}, '%Y-%m-%d %H:%i:%s') - - - AND a.`inspect_time` <= STR_TO_DATE(#{timeRange[1]}, '%Y-%m-%d %H:%i:%s') - - - */ - List timeRange = searchVo.getTimeRange(); - if (CollectionUtils.isNotEmpty(timeRange)) { - $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", ">=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(0)), "'%Y-%m-%d %H:%i:%s'"))); - if (timeRange.size() > 1) { - $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", "<=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(1)), "'%Y-%m-%d %H:%i:%s'"))); - } - } - $sql.addSelectColumn(plainSelect, $sql.fun("count", "b.id").withDistinct(true)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectConfigFilePathIdListSql(ResourceSearchVo searchVo) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - /* - - AND (a.`path` LIKE CONCAT('%', #{keyword}, '%') - OR b.`name` LIKE CONCAT('%', #{keyword}, '%') - OR b.`ip` LIKE CONCAT('%', #{keyword}, '%') - ) - - */ - if (StringUtils.isNotBlank(searchVo.getKeyword())) { - String keyword = "'%" + searchVo.getKeyword() + "%'"; - ExpressionVo orExp = $sql.exp( - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword) - ); - orExp = $sql.exp(orExp, "or", $sql.exp("b.path", "like", keyword)); - $sql.addWhereExpression(plainSelect, $sql.exp("(", orExp, ")") - ); - } - /* - - - AND a.`inspect_time` >= STR_TO_DATE(#{timeRange[0]}, '%Y-%m-%d %H:%i:%s') - - - AND a.`inspect_time` <= STR_TO_DATE(#{timeRange[1]}, '%Y-%m-%d %H:%i:%s') - - - */ - List timeRange = searchVo.getTimeRange(); - if (CollectionUtils.isNotEmpty(timeRange)) { - $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", ">=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(0)), "'%Y-%m-%d %H:%i:%s'"))); - if (timeRange.size() > 1) { - $sql.addWhereExpression(plainSelect, $sql.exp("b.inspect_time", "<=", $sql.fun("STR_TO_DATE", $sql.value(timeRange.get(1)), "'%Y-%m-%d %H:%i:%s'"))); - } - } - $sql.addGroupBy(plainSelect, "b.id"); - $sql.addOrderBy(plainSelect, $sql.fun("max", "b.inspect_time"), "desc"); - $sql.addSelectColumn(plainSelect, "b.id"); - $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectConfigFilePathListSql(List idList) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - filterItemFieldNameList.add("port"); - filterItemFieldNameList.add("type_label"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.setDistinct(plainSelect, true); - $sql.addSelectColumn(plainSelect, "b.id", "id"); - $sql.addSelectColumn(plainSelect, "b.resource_id", "resourceId"); - $sql.addSelectColumn(plainSelect, "b.path", "path"); - $sql.addSelectColumn(plainSelect, "b.inspect_time", "inspectTime"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("name").toString(), "resourceName"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("ip").toString(), "resourceIP"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("port").toString(), "resourcePort"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_label").toString(), "resourceTypeLabel"); - $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - $sql.addWhereExpression(plainSelect, $sql.exp("b.id", "in", idList)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - @Override - public String buildGetInspectConfigFilePathListByJobIdSql(Long jobId) { - try { - PlainSelect plainSelect = null; - ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); - ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - List selectItemFieldNameList = new ArrayList<>(); - List filterItemFieldNameList = new ArrayList<>(); - filterItemFieldNameList.add("id"); - filterItemFieldNameList.add("name"); - filterItemFieldNameList.add("ip"); - filterItemFieldNameList.add("port"); - filterItemFieldNameList.add("type_label"); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.setDistinct(plainSelect, true); - $sql.addSelectColumn(plainSelect, "b.id", "id"); - $sql.addSelectColumn(plainSelect, "b.resource_id", "resourceId"); - $sql.addSelectColumn(plainSelect, "b.path", "path"); - $sql.addSelectColumn(plainSelect, "b.md5", "md5"); - $sql.addSelectColumn(plainSelect, "b.inspect_time", "inspectTime"); - $sql.addSelectColumn(plainSelect, "b.file_id", "fileId"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("name").toString(), "resourceName"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("ip").toString(), "resourceIP"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("port").toString(), "resourcePort"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_label").toString(), "resourceTypeLabel"); - $sql.addSelectColumn(plainSelect, "c.id", "versionId"); - $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_version", "c").withOn($sql.exp( - $sql.exp("c.`path_id`", "=", "b.`id`"), - "and", - $sql.exp("c.`file_id`", "=", "b.`file_id`") - ))); - $sql.addWhereExpression(plainSelect, $sql.exp("c.job_id", "=", jobId)); - return plainSelect.toString(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - return null; - } - - private ResourceEntityConfigVo getResourceEntityConfigVo(ResourceEntityVo resourceEntityVo) { - String viewName = resourceEntityVo.getName(); - ResourceEntityConfigVo originalConfig = resourceEntityVo.getConfig(); - List relLinkList = getRelLinkListByRelNode(originalConfig.getRelNode()); - originalConfig.setRelLinkList(relLinkList); - List leftJoinList = getLeftJoinList(originalConfig); - List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName(viewName); - if (CollectionUtils.isEmpty(fieldNameList)) { - String sceneTemplateName = originalConfig.getSceneTemplateName(); - if (StringUtils.isNotBlank(sceneTemplateName)) { - fieldNameList = ResourceEntityFactory.getFieldNameListByViewName(sceneTemplateName); - } - } - List selectItemFieldNameList = new ArrayList<>(fieldNameList); - ResourceEntityConfigVo config = fieldMappingCheckValidityAndFillIdData(viewName, fieldNameList, originalConfig); - config.setLeftJoinList(leftJoinList); - config.setSelectItemFieldNameList(selectItemFieldNameList); - config.setFilterItemFieldNameList(new ArrayList<>()); - return config; - } - /** - * 对字段映射配置信息进行有效性检查及填充缺省数据 - * - * @param viewName - * @param config - * @return - */ - private ResourceEntityConfigVo fieldMappingCheckValidityAndFillIdData(String viewName, List fieldNameList, ResourceEntityConfigVo config) { - ResourceEntityConfigVo newConfig = new ResourceEntityConfigVo(); - String mainCi = config.getMainCi(); - if (StringUtils.isBlank(mainCi)) { - throw new ResourceViewFieldMappingException(viewName); - } - List fieldMappingList = config.getFieldMappingList(); - if (CollectionUtils.isEmpty(fieldMappingList)) { - throw new ResourceViewFieldMappingException(viewName, fieldNameList); - } - CiVo mainCiVo = ciMapper.getCiByName(mainCi); - if (mainCiVo == null) { - throw new ResourceViewFieldMappingException(viewName, mainCi); - } - newConfig.setMainCi(mainCi); - newConfig.setMainCiVo(mainCiVo); - List resultList = new ArrayList<>(); - for (ResourceEntityFieldMappingVo fieldMappingVo : fieldMappingList) { - String field = fieldMappingVo.getField(); - if (!fieldNameList.remove(field)) { - continue; - } - String type = fieldMappingVo.getType(); - ResourceEntityFieldMappingVo newFieldMappingVo = new ResourceEntityFieldMappingVo(); - newFieldMappingVo.setField(field); - newFieldMappingVo.setType(type); - if (Objects.equals(type, "const")) { - String fromCi = fieldMappingVo.getFromCi(); - if (StringUtils.isBlank(fromCi)) { - throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); - } - CiVo fromCiVo = ciMapper.getCiByName(fromCi); - if (fromCiVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); - } - String fromAttr = fieldMappingVo.getFromAttr(); - if (StringUtils.isBlank(fromAttr)) { - throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); - } - if (!defaultAttrList.contains(fromAttr)) { - throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); - } - newFieldMappingVo.setFromCi(fromCi); - newFieldMappingVo.setFromCiId(fromCiVo.getId()); - newFieldMappingVo.setFromAttr(fromAttr); - } else if (Objects.equals(type, "attr")) { - String fromCi = fieldMappingVo.getFromCi(); - if (StringUtils.isBlank(fromCi)) { - throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); - } - CiVo fromCiVo = ciMapper.getCiByName(fromCi); - if (fromCiVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); - } - String fromAttr = fieldMappingVo.getFromAttr(); - if (StringUtils.isBlank(fromAttr)) { - throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); - } - AttrVo fromAttrVo = getAttrVo(fromCiVo, fromAttr); - if (fromAttrVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); - } - newFieldMappingVo.setFromCi(fromCi); - newFieldMappingVo.setFromCiId(fromCiVo.getId()); - newFieldMappingVo.setFromAttr(fromAttr); - newFieldMappingVo.setFromAttrId(fromAttrVo.getId()); - newFieldMappingVo.setFromAttrCiId(fromAttrVo.getCiId()); - if (fromAttrVo.getTargetCiId() != null) { - String toCi = fieldMappingVo.getToCi(); - if (StringUtils.isBlank(toCi)) { - throw new ResourceViewFieldMappingException(viewName, field, "toCi", toCi); - } - CiVo toCiVo = ciMapper.getCiByName(toCi); - if (toCiVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "toCi", toCi); - } - if (!Objects.equals(toCiVo.getId(), fromAttrVo.getTargetCiId())) { - throw new ResourceViewFieldMappingException(viewName, field, "toCi", toCi); - } - String toAttr = fieldMappingVo.getToAttr(); - if (StringUtils.isBlank(toAttr)) { - throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); - } - newFieldMappingVo.setToCi(toCi); - newFieldMappingVo.setToCiId(toCiVo.getId()); - newFieldMappingVo.setToCiIsVirtual(toCiVo.getIsVirtual()); - newFieldMappingVo.setToAttr(toAttr); - if (Objects.equals(toCiVo.getIsVirtual(), 1)) { - newFieldMappingVo.setToAttrCiId(toCiVo.getId()); - newFieldMappingVo.setToAttrCiName(toCiVo.getName()); - } - if (!defaultAttrList.contains(toAttr)) { - AttrVo toAttrVo = getAttrVo(toCiVo, toAttr); - if (toAttrVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); - } - newFieldMappingVo.setToAttrId(toAttrVo.getId()); - if (Objects.equals(toCiVo.getIsVirtual(), 0)) { - newFieldMappingVo.setToAttrCiId(toAttrVo.getCiId()); - newFieldMappingVo.setToAttrCiName(toAttrVo.getCiName()); - } - if (toAttrVo.getTargetCiId() != null) { - throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); - } - } - } - } else if (Objects.equals(type, "rel")) { - String fromCi = fieldMappingVo.getFromCi(); - if (StringUtils.isBlank(fromCi)) { - throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); - } - CiVo fromCiVo = ciMapper.getCiByName(fromCi); - if (fromCiVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); - } - String toCi = fieldMappingVo.getToCi(); - if (StringUtils.isBlank(toCi)) { - throw new ResourceViewFieldMappingException(viewName, field, "toCi", toCi); - } - CiVo toCiVo = ciMapper.getCiByName(toCi); - if (toCiVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "toCi", toCi); - } - newFieldMappingVo.setFromCi(fromCi); - newFieldMappingVo.setFromCiId(fromCiVo.getId()); - newFieldMappingVo.setToCi(toCi); - newFieldMappingVo.setToCiId(toCiVo.getId()); - newFieldMappingVo.setToCiIsVirtual(toCiVo.getIsVirtual()); - String direction = fieldMappingVo.getDirection(); - newFieldMappingVo.setDirection(direction); - if (Objects.equals(direction, "from")) { - String fromAttr = fieldMappingVo.getFromAttr(); - if (StringUtils.isBlank(fromAttr)) { - throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); - } - newFieldMappingVo.setFromAttr(fromAttr); - if (!defaultAttrList.contains(fromAttr)) { - AttrVo fromAttrVo = getAttrVo(fromCiVo, fromAttr); - if (fromAttrVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); - } - if (fromAttrVo.getTargetCiId() != null) { - throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); - } - newFieldMappingVo.setFromAttrId(fromAttrVo.getId()); - newFieldMappingVo.setFromAttrCiId(fromAttrVo.getCiId()); - } - } else { - String toAttr = fieldMappingVo.getToAttr(); - if (StringUtils.isBlank(toAttr)) { - newFieldMappingVo.setToAttr("_id"); - } else { - newFieldMappingVo.setToAttr(toAttr); - if (!defaultAttrList.contains(toAttr)) { - AttrVo toAttrVo = getAttrVo(toCiVo, toAttr); - if (toAttrVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); - } - if (toAttrVo.getTargetCiId() != null) { - throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); - } - newFieldMappingVo.setToAttrId(toAttrVo.getId()); - newFieldMappingVo.setToAttrCiId(toAttrVo.getCiId()); - newFieldMappingVo.setToAttrCiName(toAttrVo.getCiName()); - } - } - } - } else if (Objects.equals(type, "newRel")) { - String uuid = fieldMappingVo.getUuid(); - String ciName = fieldMappingVo.getCiName(); - String attr = fieldMappingVo.getAttr(); - if (StringUtils.isBlank(attr)) { - throw new ResourceViewFieldMappingException(viewName, field, "attr", attr); - } - List relLinkList = config.getRelLinkList(); - if (CollectionUtils.isNotEmpty(relLinkList)) { - for (ResourceEntityRelLinkVo relLinkVo : relLinkList) { - if (Objects.equals(relLinkVo.getRightUuid(), uuid)) { - CiVo rightCiVo = ciMapper.getCiByName(ciName); - if (rightCiVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "ciName", ciName); - } - newFieldMappingVo.setType("rel"); - newFieldMappingVo.setDirection(relLinkVo.getDirection()); - if (Objects.equals(relLinkVo.getDirection(), RelDirectionType.FROM.getValue())) { - CiVo fromCiVo = rightCiVo; - newFieldMappingVo.setFromCi(fromCiVo.getName()); - newFieldMappingVo.setFromCiId(fromCiVo.getId()); - String fromAttr = attr; - newFieldMappingVo.setFromAttr(fromAttr); - if (!defaultAttrList.contains(fromAttr)) { - AttrVo fromAttrVo = getAttrVo(fromCiVo, fromAttr); - if (fromAttrVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "attr", attr); - } - if (fromAttrVo.getTargetCiId() != null) { - throw new ResourceViewFieldMappingException(viewName, field, "attr", attr); - } - newFieldMappingVo.setFromAttrId(fromAttrVo.getId()); - newFieldMappingVo.setFromAttrCiId(fromAttrVo.getCiId()); - } - newFieldMappingVo.setFromCiAlias(relLinkVo.getRightCiAlias()); - - String toCi = relLinkVo.getLeftCi(); - CiVo toCiVo = ciMapper.getCiByName(toCi); - newFieldMappingVo.setToCi(toCiVo.getName()); - newFieldMappingVo.setToCiId(toCiVo.getId()); - newFieldMappingVo.setToCiIsVirtual(toCiVo.getIsVirtual()); - newFieldMappingVo.setToCiAlias(relLinkVo.getLeftCiAlias()); - } else if (Objects.equals(relLinkVo.getDirection(), RelDirectionType.TO.getValue())) { - CiVo toCiVo = rightCiVo; - newFieldMappingVo.setToCi(toCiVo.getName()); - newFieldMappingVo.setToCiId(toCiVo.getId()); - newFieldMappingVo.setToCiIsVirtual(toCiVo.getIsVirtual()); - newFieldMappingVo.setToCiAlias(relLinkVo.getRightCiAlias()); - String toAttr = attr; - if (StringUtils.isBlank(toAttr)) { - newFieldMappingVo.setToAttr("_id"); - } else { - newFieldMappingVo.setToAttr(toAttr); - if (!defaultAttrList.contains(toAttr)) { - AttrVo toAttrVo = getAttrVo(toCiVo, toAttr); - if (toAttrVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "attr", attr); - } - if (toAttrVo.getTargetCiId() != null) { - throw new ResourceViewFieldMappingException(viewName, field, "attr", attr); - } - newFieldMappingVo.setToAttrId(toAttrVo.getId()); - newFieldMappingVo.setToAttrCiId(toAttrVo.getCiId()); - newFieldMappingVo.setToAttrCiName(toAttrVo.getCiName()); - } - } - String fromCi = relLinkVo.getLeftCi(); - CiVo fromCiVo = ciMapper.getCiByName(fromCi); - newFieldMappingVo.setFromCi(fromCiVo.getName()); - newFieldMappingVo.setFromCiId(fromCiVo.getId()); - newFieldMappingVo.setFromCiAlias(relLinkVo.getLeftCiAlias()); - } - break; - } - } - } - } else if (Objects.equals(type, "globalAttr")) { - String fromCi = fieldMappingVo.getFromCi(); - if (StringUtils.isBlank(fromCi)) { - throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); - } - CiVo fromCiVo = ciMapper.getCiByName(fromCi); - if (fromCiVo == null) { - throw new ResourceViewFieldMappingException(viewName, field, "fromCi", fromCi); - } - String fromAttr = fieldMappingVo.getFromAttr(); - if (StringUtils.isBlank(fromAttr)) { - throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); - } - GlobalAttrVo globalAttrVo = new GlobalAttrVo(); - globalAttrVo.setName(fromAttr); - if (globalAttrMapper.checkGlobalAttrNameIsUsed(globalAttrVo) == 0) { - throw new ResourceViewFieldMappingException(viewName, field, "fromAttr", fromAttr); - } - String toAttr = fieldMappingVo.getToAttr(); - if (StringUtils.isBlank(toAttr)) { - throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); - } - if (!Objects.equals(toAttr, "id") && !Objects.equals(toAttr, "value") && !Objects.equals(toAttr, "sort")) { - throw new ResourceViewFieldMappingException(viewName, field, "toAttr", toAttr); - } - newFieldMappingVo.setFromCi(fromCi); - newFieldMappingVo.setFromCiId(fromCiVo.getId()); - newFieldMappingVo.setFromAttr(fromAttr); - newFieldMappingVo.setToAttr(toAttr); - } else if (Objects.equals(type, "empty")) { - - } else { - throw new ResourceViewFieldMappingException(viewName, field, "type", type); - } - resultList.add(newFieldMappingVo); - } - newConfig.setFieldMappingList(resultList); - return newConfig; - } - - private List getRelLinkListByRelNode(ResourceEntityRelNodeVo relNode) { - List relLinkList = new ArrayList<>(); - if (relNode != null) { - Map> map = new HashMap<>(); - List children = relNode.getChildren(); - if (CollectionUtils.isNotEmpty(children)) { - for (ResourceEntityRelNodeVo child : children) { - addRelLinkListByRelNode(relLinkList, relNode, child, map); - } - } - } - return relLinkList; - } - - private void addRelLinkListByRelNode(List relLinkList, ResourceEntityRelNodeVo leftNode, ResourceEntityRelNodeVo rightNode, Map> map) { - { - ResourceEntityRelLinkVo relLinkVo = new ResourceEntityRelLinkVo(); - { - Map relNodeAliasMap = map.computeIfAbsent(leftNode.getCiName(), key -> new HashMap<>()); - int size = relNodeAliasMap.size(); - String alias = relNodeAliasMap.get(leftNode); - if (alias == null) { - if (size == 0) { - alias = StringUtils.EMPTY; - } else { - alias = "alias_" + (size + 1); - } - relNodeAliasMap.put(leftNode, alias); - } - relLinkVo.setLeftCi(leftNode.getCiName()); - relLinkVo.setLeftCiAlias(alias); - } - { - Map relNodeAliasMap = map.computeIfAbsent(rightNode.getCiName(), key -> new HashMap<>()); - int size = relNodeAliasMap.size(); - String alias = relNodeAliasMap.get(rightNode); - if (alias == null) { - if (size == 0) { - alias = StringUtils.EMPTY; - } else { - alias = "_alias_" + (size + 1); - } - relNodeAliasMap.put(rightNode, alias); - } - relLinkVo.setRightCi(rightNode.getCiName()); - relLinkVo.setRightCiAlias(alias); - relLinkVo.setRightUuid(rightNode.getUuid()); - } - relLinkVo.setDirection(rightNode.getDirection()); - relLinkList.add(relLinkVo); - } - List children = rightNode.getChildren(); - if (CollectionUtils.isNotEmpty(children)) { - for (ResourceEntityRelNodeVo child : children) { - addRelLinkListByRelNode(relLinkList, rightNode, child, map); - } - } - } - - private List getLeftJoinList(ResourceEntityConfigVo config) { - List resultList = new ArrayList<>(); - List relLinkList = config.getRelLinkList(); - if (CollectionUtils.isNotEmpty(relLinkList)) { - for (ResourceEntityRelLinkVo linkVo : relLinkList) { - String leftCi = linkVo.getLeftCi(); - String rightCi = linkVo.getRightCi(); - CiVo leftCiVo = ciMapper.getCiByName(leftCi); - if (leftCiVo == null) { - throw new CiNotFoundException(leftCi); - } - CiVo rightCiVo = ciMapper.getCiByName(rightCi); - if (rightCiVo == null) { - throw new CiNotFoundException(rightCi); - } - String direction = linkVo.getDirection(); - if (Objects.equals(direction, RelDirectionType.FROM.getValue())) { - ResourceEntityLeftJoinVo leftJoinVo = new ResourceEntityLeftJoinVo(); - leftJoinVo.setDirection(direction); - leftJoinVo.setFromCi(rightCiVo.getName()); - leftJoinVo.setFromCiId(rightCiVo.getId()); - leftJoinVo.setFromCiAlias(linkVo.getRightCiAlias()); - leftJoinVo.setToCi(leftCiVo.getName()); - leftJoinVo.setToCiId(leftCiVo.getId()); - leftJoinVo.setToCiAlias(linkVo.getLeftCiAlias()); - resultList.add(leftJoinVo); - } else if (Objects.equals(direction, RelDirectionType.TO.getValue())) { - ResourceEntityLeftJoinVo leftJoinVo = new ResourceEntityLeftJoinVo(); - leftJoinVo.setDirection(direction); - leftJoinVo.setFromCi(leftCiVo.getName()); - leftJoinVo.setFromCiId(leftCiVo.getId()); - leftJoinVo.setFromCiAlias(linkVo.getLeftCiAlias()); - leftJoinVo.setToCi(rightCiVo.getName()); - leftJoinVo.setToCiId(rightCiVo.getId()); - leftJoinVo.setToCiAlias(linkVo.getRightCiAlias()); - resultList.add(leftJoinVo); - } - } - } - return resultList; - } - - private AttrVo getAttrVo(CiVo ciVo, String attrName) { - List upwardCiList = ciMapper.getUpwardCiListByLR(ciVo.getLft(), ciVo.getRht()); - for (CiVo ci : upwardCiList) { - AttrVo attr = attrMapper.getDeclaredAttrByCiIdAndName(ci.getId(), attrName); - if (attr != null) { - return attr; - } - } - return null; - } - - /** - * 根据queryCriteriaVo查询条件收集组装动态sql时,需要返回的条件列 - * @param queryCriteriaVo - * @return - */ - private List getFilterItemFieldNameList(ResourceQueryCriteriaVo queryCriteriaVo) { - Set filterItemFieldNameSet = new HashSet<>(); - if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { - filterItemFieldNameSet.add("name"); - filterItemFieldNameSet.add("ip"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList())) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { - filterItemFieldNameSet.add("id"); - } - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { - filterItemFieldNameSet.add("type_id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { - filterItemFieldNameSet.add("state_id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { - filterItemFieldNameSet.add("vendor_id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { - filterItemFieldNameSet.add("env_id"); - } - if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { - filterItemFieldNameSet.add("env_id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { - filterItemFieldNameSet.add("app_system_id"); - filterItemFieldNameSet.add("app_module_id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { - filterItemFieldNameSet.add("app_module_id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { - filterItemFieldNameSet.add("id"); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { - filterItemFieldNameSet.add("inspect_status"); - } - return new ArrayList<>(filterItemFieldNameSet); - } - - private SqlVo getSqlVoForResource(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { - SqlVo sqlVo = new SqlVo(); - List joinList = new ArrayList<>(); - List whereExpressionList = new ArrayList<>(); - /* - - JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) - JOIN fulltextindex_word fw ON ffc.word_id = fw.id - AND (fw.word IN - - #{item} - - ) - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { - System.out.println("a"); - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), - "and", - $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); - joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); - } - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("fw.id", "=", "ffc.word_id"), - "and", - $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); - joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); - } - } - /* - - JOIN fulltextindex_field_cmdb ffc2 ON ffc2.target_id = a.id - - - AND ffc2.target_field = #{nameFieldAttrId} - - - AND ffc2.target_field = #{ipFieldAttrId} - - - JOIN fulltextindex_word fw2 ON ffc2.word_id = fw2.id - AND (fw2.word IN - - #{item} - - ) - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - { - Long fieldAttrId = null; - if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { - System.out.println("b"); - fieldAttrId = queryCriteriaVo.getNameFieldAttrId(); - } else { - System.out.println("c"); - fieldAttrId = queryCriteriaVo.getIpFieldAttrId(); - } - ExpressionVo expressionVo = $sql.exp( - $sql.exp("ffc2.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), - "and", - $sql.exp("ffc2.target_field", "=", fieldAttrId)); - joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc2").withOn(expressionVo)); - } - { - ExpressionVo expressionVo = $sql.exp( - $sql.exp("fw2.id", "=", "ffc2.word_id"), - "and", - $sql.exp("fw2.word", "in", queryCriteriaVo.getBatchSearchList())); - joinList.add($sql.join("join", "fulltextindex_word", "fw2").withOn(expressionVo)); - } - } - /* - - LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` - LEFT JOIN `cmdb_resourcecenter_account` c ON c.`id` = b.`account_id` - - - - AND c.`protocol_id` IN - - #{protocolId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { - System.out.println("d"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); - whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); - } - /* - - LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` - - - - AND d.`tag_id` IN - - #{tagId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { - System.out.println("e"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); - } - /* - - left join autoexec_job_resource_inspect ajri on ajri.resource_id=a.id - left join autoexec_job_phase_node ajpn on ajpn.job_phase_id =ajri.phase_id AND ajpn.resource_id = a.id - - - - AND a.`inspect_status` IN - - #{inspectStatus} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { - System.out.println("f"); - joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); - whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); - } - /* - - LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id - LEFT JOIN cmdb_group_auth cga ON ccg.group_id = cga.group_id - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('autoexec') - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('readonly','maintain','autoexec') - - - - */ - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); - - List strList = new ArrayList<>(); - if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { - System.out.println("g"); - strList.add("autoexec"); - } else { - System.out.println("h"); - strList.add("autoexec"); - strList.add("readonly"); - strList.add("maintain"); - } - ExpressionVo expressionVo = $sql.exp( - $sql.exp("cg.id", "=", "cga.group_id"), - "and", - $sql.exp("cg.type", "in", strList) - ); - joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); - } - /* - - - AND a.`type_id` IN - - #{typeId} - - - - AND ( - - - a.`type_id` IN - - #{authedTypeId} - - - - 1 = 0 - - - or ( - cg.id is not null and - a.`type_id` IN - - #{typeId} - - and - ((cga.auth_type = 'common' AND cga.auth_uuid = 'alluser') - - OR cga.auth_uuid IN ( - #{authenticationInfo.userUuid} - - - #{item} - - - - - #{item} - - - ) - - ) - ) - ) - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { - System.out.println("i"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); - } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - ExpressionVo orLeftExpressionVo = null; - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { - System.out.println("j"); - orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); - } else { - System.out.println("k"); - orLeftExpressionVo = $sql.exp(1, "=", 0); - } - ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); - - ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); - ExpressionVo orRightExpressionVo2 = null; - if (queryCriteriaVo.getAuthenticationInfo() != null) { - System.out.println("l"); - List uuidList = new ArrayList<>(); - if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { - uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { - uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { - uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); - } - if (CollectionUtils.isNotEmpty(uuidList)) { - System.out.println("m"); - orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); - } - } - if (orRightExpressionVo2 != null) { - System.out.println("n"); - orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); - } else { - System.out.println("o"); - orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); - } - ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); - whereExpressionList.add(orExpressionVo); - } - } - /* - - AND a.`state_id` IN - - #{stateId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { - System.out.println("p"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); - } - /* - - AND a.`vendor_id` IN - - #{vendorId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { - System.out.println("q"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); - } - /* - - AND a.`env_id` IN - - #{envId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { - System.out.println("r"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); - } - /* - - AND a.`env_id` is null - - */ - if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { - System.out.println("s"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); - } - /* - - AND a.`app_system_id` IN - - #{appSystemId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { - System.out.println("t"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); - } - /* - - AND a.`app_module_id` IN - - #{appModuleId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { - System.out.println("u"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); - } - /* - - AND a.`id` IN - - #{id} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { - System.out.println("v"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); - } - /* - - AND a.`id` IN - - #{id} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { - System.out.println("w"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); - } - /* - - AND a.`inspect_status` IN - - #{inspectStatus} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { - System.out.println("x"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); - } - sqlVo.withJoinList(joinList); - sqlVo.withWhereExpressionList(whereExpressionList); - return sqlVo; - } - - private SqlVo getSqlVoForInspect(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { - SqlVo sqlVo = new SqlVo(); - List joinList = new ArrayList<>(); - List whereExpressionList = new ArrayList<>(); - /* - - JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) - JOIN fulltextindex_word fw ON ffc.word_id = fw.id - AND (fw.word IN - - #{item} - - ) - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { -// System.out.println("a"); -// { -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), -// "and", -// $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); -// joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); -// } -// { -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("fw.id", "=", "ffc.word_id"), -// "and", -// $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); -// joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); -// } -// } - /* - - AND - - - a.`name` LIKE #{item} - - - - - a.`ip` LIKE #{item} - - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { - String columnName = null; - if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { - System.out.println("b"); - columnName = filterItemFieldName2ColumnMap.get("name").toString(); - } else { - System.out.println("c"); - columnName = filterItemFieldName2ColumnMap.get("ip").toString(); - } - ExpressionVo orExp = null; - for (String item : queryCriteriaVo.getBatchSearchList()) { - if (orExp != null) { - orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); - } else { - orExp = $sql.exp(columnName, "like", $sql.value(item)); - } - } - whereExpressionList.add($sql.exp("(", orExp, ")")); - } - /* - - LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` - LEFT JOIN `cmdb_resourcecenter_account` c ON c.`id` = b.`account_id` - - - - AND c.`protocol_id` IN - - #{protocolId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { - System.out.println("d"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); - whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); - } - /* - - LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` - - - - AND d.`tag_id` IN - - #{tagId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { - System.out.println("e"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); - } - /* - - left join autoexec_job_resource_inspect ajri on ajri.resource_id=a.id - left join autoexec_job_phase_node ajpn on ajpn.job_phase_id =ajri.phase_id AND ajpn.resource_id = a.id - - - - AND a.`inspect_status` IN - - #{inspectStatus} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { - System.out.println("f"); - joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); - whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); - } - /* - - LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id - LEFT JOIN cmdb_group_auth cga ON ccg.group_id = cga.group_id - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('autoexec') - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('readonly','maintain','autoexec') - - - - */ - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); - - List strList = new ArrayList<>(); - if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { - System.out.println("g"); - strList.add("autoexec"); - } else { - System.out.println("h"); - strList.add("autoexec"); - strList.add("readonly"); - strList.add("maintain"); - } - ExpressionVo expressionVo = $sql.exp( - $sql.exp("cg.id", "=", "cga.group_id"), - "and", - $sql.exp("cg.type", "in", strList) - ); - joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); - } - /* - - - AND a.`type_id` IN - - #{typeId} - - - - AND ( - - - a.`type_id` IN - - #{authedTypeId} - - - - 1 = 0 - - - or ( - cg.id is not null and - a.`type_id` IN - - #{typeId} - - and - ((cga.auth_type = 'common' AND cga.auth_uuid = 'alluser') - - OR cga.auth_uuid IN ( - #{authenticationInfo.userUuid} - - - #{item} - - - - - #{item} - - - ) - - ) - ) - ) - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { - if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { - System.out.println("i"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); - } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - ExpressionVo orLeftExpressionVo = null; - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { - System.out.println("j"); - orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); - } else { - System.out.println("k"); - orLeftExpressionVo = $sql.exp(1, "=", 0); - } - ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); - - ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); - ExpressionVo orRightExpressionVo2 = null; - if (queryCriteriaVo.getAuthenticationInfo() != null) { - System.out.println("l"); - List uuidList = new ArrayList<>(); - if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { - uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { - uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); - } - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { - uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); - } - if (CollectionUtils.isNotEmpty(uuidList)) { - System.out.println("m"); - orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); - } - } - if (orRightExpressionVo2 != null) { - System.out.println("n"); - orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); - } else { - System.out.println("o"); - orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); - } - ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); - whereExpressionList.add(orExpressionVo); - } - } - /* - - AND a.`state_id` IN - - #{stateId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { - System.out.println("p"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); - } - /* - - AND a.`vendor_id` IN - - #{vendorId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { - System.out.println("q"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); - } - /* - - AND a.`env_id` IN - - #{envId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { - System.out.println("r"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); - } - /* - - AND a.`env_id` is null - - */ -// if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { -// System.out.println("s"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); -// } - /* - - AND a.`app_system_id` IN - - #{appSystemId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { - System.out.println("t"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); - } - /* - - AND a.`app_module_id` IN - - #{appModuleId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { - System.out.println("u"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); - } - /* - - AND a.`id` IN - - #{id} - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { -// System.out.println("v"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); -// } - /* - - AND a.`id` IN - - #{id} - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { -// System.out.println("w"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); -// } - /* - - AND a.`inspect_status` IN - - #{inspectStatus} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { - System.out.println("x"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); - } - sqlVo.withJoinList(joinList); - sqlVo.withWhereExpressionList(whereExpressionList); - return sqlVo; - } - - private SqlVo getSqlVoForInspectConfigFile(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { - SqlVo sqlVo = new SqlVo(); - List joinList = new ArrayList<>(); - List whereExpressionList = new ArrayList<>(); - /* - - JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) - JOIN fulltextindex_word fw ON ffc.word_id = fw.id - AND (fw.word IN - - #{item} - - ) - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { -// System.out.println("a"); -// { -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), -// "and", -// $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); -// joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); -// } -// { -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("fw.id", "=", "ffc.word_id"), -// "and", -// $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); -// joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); -// } -// } - /* - - AND - - - a.`name` LIKE #{item} - - - - - a.`ip` LIKE #{item} - - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { -// String columnName = null; -// if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { -// System.out.println("b"); -// columnName = filterItemFieldName2ColumnMap.get("name").toString(); -// } else { -// System.out.println("c"); -// columnName = filterItemFieldName2ColumnMap.get("ip").toString(); -// } -// ExpressionVo orExp = null; -// for (String item : queryCriteriaVo.getBatchSearchList()) { -// if (orExp != null) { -// orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); -// } else { -// orExp = $sql.exp(columnName, "like", $sql.value(item)); -// } -// } -// whereExpressionList.add($sql.exp("(", orExp, ")")); -// } - /* - - LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` - LEFT JOIN `cmdb_resourcecenter_account` c ON c.`id` = b.`account_id` - - - - AND c.`protocol_id` IN - - #{protocolId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { - System.out.println("d"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); - whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); - } - /* - - LEFT JOIN `cmdb_resourcecenter_resource_tag` d ON d.`resource_id` = a.`id` - - - - AND d.`tag_id` IN - - #{tagId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { - System.out.println("e"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); - } - /* - - left join autoexec_job_resource_inspect ajri on ajri.resource_id=a.id - left join autoexec_job_phase_node ajpn on ajpn.job_phase_id =ajri.phase_id AND ajpn.resource_id = a.id - - - - AND a.`inspect_status` IN - - #{inspectStatus} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { - System.out.println("f"); -// joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); -// ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); - } - if (queryCriteriaVo.getJobId() != null) { - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - whereExpressionList.add($sql.exp("ajpn.job_id", "=", queryCriteriaVo.getJobId())); - } - /* - - LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id - LEFT JOIN cmdb_group_auth cga ON ccg.group_id = cga.group_id - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('autoexec') - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('readonly','maintain','autoexec') - - - - */ -// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { -// joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); -// joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); -// -// List strList = new ArrayList<>(); -// if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { -// System.out.println("g"); -// strList.add("autoexec"); -// } else { -// System.out.println("h"); -// strList.add("autoexec"); -// strList.add("readonly"); -// strList.add("maintain"); -// } -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("cg.id", "=", "cga.group_id"), -// "and", -// $sql.exp("cg.type", "in", strList) -// ); -// joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); -// } - /* - - - AND a.`type_id` IN - - #{typeId} - - - - AND ( - - - a.`type_id` IN - - #{authedTypeId} - - - - 1 = 0 - - - or ( - cg.id is not null and - a.`type_id` IN - - #{typeId} - - and - ((cga.auth_type = 'common' AND cga.auth_uuid = 'alluser') - - OR cga.auth_uuid IN ( - #{authenticationInfo.userUuid} - - - #{item} - - - - - #{item} - - - ) - - ) - ) - ) - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); -// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { -// System.out.println("i"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); -// } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { -// ExpressionVo orLeftExpressionVo = null; -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { -// System.out.println("j"); -// orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); -// } else { -// System.out.println("k"); -// orLeftExpressionVo = $sql.exp(1, "=", 0); -// } -// ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); -// -// ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); -// ExpressionVo orRightExpressionVo2 = null; -// if (queryCriteriaVo.getAuthenticationInfo() != null) { -// System.out.println("l"); -// List uuidList = new ArrayList<>(); -// if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { -// uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); -// } -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { -// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); -// } -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { -// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); -// } -// if (CollectionUtils.isNotEmpty(uuidList)) { -// System.out.println("m"); -// orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); -// } -// } -// if (orRightExpressionVo2 != null) { -// System.out.println("n"); -// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); -// } else { -// System.out.println("o"); -// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); -// } -// ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); -// whereExpressionList.add(orExpressionVo); -// } - } - /* - - AND a.`state_id` IN - - #{stateId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { - System.out.println("p"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); - } - /* - - AND a.`vendor_id` IN - - #{vendorId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { - System.out.println("q"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); - } - /* - - AND a.`env_id` IN - - #{envId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { - System.out.println("r"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); - } - /* - - AND a.`env_id` is null - - */ -// if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { -// System.out.println("s"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); -// } - /* - - AND a.`app_system_id` IN - - #{appSystemId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { - System.out.println("t"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); - } - /* - - AND a.`app_module_id` IN - - #{appModuleId} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { - System.out.println("u"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); - } - /* - - AND a.`id` IN - - #{id} - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { -// System.out.println("v"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); -// } - /* - - AND a.`id` IN - - #{id} - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { -// System.out.println("w"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); -// } - /* - - AND a.`inspect_status` IN - - #{inspectStatus} - - - */ - if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { - System.out.println("x"); - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - joinList.add($sql.join("left join", "cmdb_cientity_inspect", "cci").withOn($sql.exp( - $sql.exp("cci.ci_entity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), - "and", - $sql.exp("cci.job_id", "=", "ajpn.job_id") - ))); - whereExpressionList.add($sql.exp("cci.inspect_status", "in", queryCriteriaVo.getInspectStatusList())); - } - sqlVo.withJoinList(joinList); - sqlVo.withWhereExpressionList(whereExpressionList); - return sqlVo; - } } -- Gitee From 29da8ef482086b671b024b226eb4dc33b4fd0c69 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 13 Aug 2025 16:37:31 +0800 Subject: [PATCH 14/15] =?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 --- .../resource/ResourceBuildSqlServiceImpl.java | 1213 ++++------------- 1 file changed, 281 insertions(+), 932 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlServiceImpl.java b/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlServiceImpl.java index a65dffe2..3f30cae1 100644 --- a/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlServiceImpl.java +++ b/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlServiceImpl.java @@ -46,10 +46,7 @@ import neatlogic.framework.util.Md5Util; import neatlogic.module.cmdb.dao.mapper.ci.AttrMapper; import neatlogic.module.cmdb.dao.mapper.ci.CiMapper; import neatlogic.module.cmdb.dao.mapper.globalattr.GlobalAttrMapper; -import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceAccountMapper; import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceEntityMapper; -import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceMapper; -import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceTagMapper; import neatlogic.module.cmdb.utils.ResourceEntityFactory; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.schema.Table; @@ -73,13 +70,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe private final Logger logger = LoggerFactory.getLogger(ResourceBuildSqlServiceImpl.class); private final static List defaultAttrList = Arrays.asList("_id", "_uuid", "_name", "_fcu", "_fcd", "_lcu", "_lcd", "_inspectStatus", "_inspectTime", "_monitorStatus", "_monitorTime", "_typeId", "_typeName", "_typeLabel"); - @Resource - ResourceMapper resourceMapper; - @Resource - ResourceTagMapper resourceTagMapper; - @Resource - ResourceAccountMapper resourceAccountMapper; - @Resource private CiMapper ciMapper; @@ -105,13 +95,9 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe String error = StringUtils.EMPTY; try { ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - select = resourceViewGenerateSqlUtilForTiDB.getSql().toString(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - select = resourceViewGenerateSqlUtil.getSql().toString(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + select = plainSelect.toString(); String md5 = Md5Util.encryptMD5(select); boolean needCreateView = true; String tableType = schemaMapper.checkTableOrViewIsExists(TenantContext.get().getDataDbName(), viewName); @@ -124,6 +110,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe resourceEntityMapper.getResourceEntityViewDataList(viewName, 0, 1); needCreateView = false; } catch (Exception e) { + // ignore } } } @@ -178,11 +165,10 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } return select; } - + @Override public String buildGetResourceIdListSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -192,27 +178,15 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("id"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); -// List joinList = getJoinList(queryCriteriaVo, filterItemFieldName2ColumnMap); -// $sql.addJoinList(plainSelect, joinList); -// List whereExpressionList = getWhereExpressionList(queryCriteriaVo, filterItemFieldName2ColumnMap); -// $sql.addWhereExpressionList(plainSelect, whereExpressionList); if (CollectionUtils.isNotEmpty(searchVo.getKeywordList()) && searchVo.getNameFieldAttrId() != null && searchVo.getIpFieldAttrId() != null) { $sql.addOrderBy(plainSelect, $sql.fun("COUNT", "fw.word").withDistinct(true), "desc"); } - Column idColumn = filterItemFieldName2ColumnMap.get("id"); + Column idColumn = fieldName2ColumnMap.get("id"); // 分组 $sql.addGroupBy(plainSelect, idColumn.toString()); // 排序 @@ -228,7 +202,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceCountSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -238,23 +211,11 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("id"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); -// List joinList = getJoinList(queryCriteriaVo, filterItemFieldName2ColumnMap); -// $sql.addJoinList(plainSelect, joinList); -// List whereExpressionList = getWhereExpressionList(queryCriteriaVo, filterItemFieldName2ColumnMap); -// $sql.addWhereExpressionList(plainSelect, whereExpressionList); - Column column = filterItemFieldName2ColumnMap.get("id"); + Column column = fieldName2ColumnMap.get("id"); $sql.setSelectColumn(plainSelect, $sql.fun("COUNT", column.toString()).withDistinct(true)); return plainSelect.toString(); } catch (Exception e) { @@ -266,7 +227,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceListSql(List idList, List selectFieldNameList) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -279,17 +239,9 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column column = filterItemFieldName2ColumnMap.get("id"); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + Column column = fieldName2ColumnMap.get("id"); $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "in", idList)); return plainSelect.toString(); } catch (Exception e) { @@ -317,7 +269,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceCountByNameKeywordSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -330,19 +281,11 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("id"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); - Column column = filterItemFieldName2ColumnMap.get("id"); + Column column = fieldName2ColumnMap.get("id"); $sql.setSelectColumn(plainSelect, $sql.fun("COUNT", column.toString()).withDistinct(true)); return plainSelect.toString(); } catch (Exception e) { @@ -354,7 +297,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceCountByIpKeywordSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -367,19 +309,11 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("id"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); - Column column = filterItemFieldName2ColumnMap.get("id"); + Column column = fieldName2ColumnMap.get("id"); $sql.setSelectColumn(plainSelect, $sql.fun("COUNT", column.toString()).withDistinct(true)); return plainSelect.toString(); } catch (Exception e) { @@ -391,7 +325,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetAuthResourceListSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -407,17 +340,9 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("id"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); return plainSelect.toString(); } catch (Exception e) { @@ -429,7 +354,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceListByIpAndPortAndNameWithFilterSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -445,23 +369,15 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("port"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); String keyword = searchVo.getKeyword(); if (StringUtils.isNotBlank(keyword)) { keyword = "%" + keyword + "%"; - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + Column nameColumn = fieldName2ColumnMap.get("name"); + Column ipColumn = fieldName2ColumnMap.get("ip"); $sql.addWhereExpression(plainSelect, $sql.exp("(", $sql.exp(nameColumn.toString(), "like", $sql.value(keyword)), @@ -473,16 +389,16 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe if (CollectionUtils.isNotEmpty(inputNodeList)) { ExpressionVo orExp = null; for (ResourceVo inputNode : inputNodeList) { - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + Column ipColumn = fieldName2ColumnMap.get("ip"); ExpressionVo andExp = $sql.exp(ipColumn.toString(), "=", $sql.value(inputNode.getIp())); - Column portColumn = filterItemFieldName2ColumnMap.get("port"); + Column portColumn = fieldName2ColumnMap.get("port"); if (inputNode.getPort() != null) { andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "=", inputNode.getPort())); } else { andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "is null")); } if (StringUtils.isNotBlank(inputNode.getName())) { - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); + Column nameColumn = fieldName2ColumnMap.get("name"); andExp = $sql.exp(andExp, "and", $sql.exp(nameColumn.toString(), "=", $sql.value(inputNode.getName()))); } andExp = $sql.exp("(", andExp, ")"); @@ -507,7 +423,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceTypeIdListByAuthSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -518,26 +433,18 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("ip"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); $sql.setDistinct(plainSelect, true); - Column typeIdColumn = filterItemFieldName2ColumnMap.get("type_id"); + Column typeIdColumn = fieldName2ColumnMap.get("type_id"); $sql.setSelectColumn(plainSelect, typeIdColumn.toString()); String keyword = searchVo.getKeyword(); if (StringUtils.isNotBlank(keyword)) { keyword = "%" + keyword + "%"; - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + Column nameColumn = fieldName2ColumnMap.get("name"); + Column ipColumn = fieldName2ColumnMap.get("ip"); $sql.addWhereExpression(plainSelect, $sql.exp("(", $sql.exp(nameColumn.toString(), "like", $sql.value(keyword)), @@ -555,7 +462,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceIdByIpAndPortAndNameSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -567,33 +473,25 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("port"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); if (Objects.equals(searchVo.getIsHasAuth(), false)) { ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(); queryCriteriaVo.setIsHasAuth(false); if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); } - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "=", $sql.value(searchVo.getIp()))); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("ip").toString(), "=", $sql.value(searchVo.getIp()))); if (StringUtils.isNotBlank(searchVo.getPort())) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "=", $sql.value(searchVo.getPort()))); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("port").toString(), "=", $sql.value(searchVo.getPort()))); } else { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "is null")); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("port").toString(), "is null")); } if (StringUtils.isNotBlank(searchVo.getName())) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "=", $sql.value(searchVo.getName()))); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("name").toString(), "=", $sql.value(searchVo.getName()))); } $sql.setLimit(plainSelect, 1); return plainSelect.toString(); @@ -606,7 +504,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceIdListByIpAndPortAndNameSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -618,39 +515,31 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("port"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); if (Objects.equals(searchVo.getIsHasAuth(), false)) { ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(); queryCriteriaVo.setIsHasAuth(false); if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); } List inputNodeList = searchVo.getInputNodeList(); if (CollectionUtils.isNotEmpty(inputNodeList)) { ExpressionVo orExp = null; for (ResourceVo inputNode : inputNodeList) { - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + Column ipColumn = fieldName2ColumnMap.get("ip"); ExpressionVo andExp = $sql.exp(ipColumn.toString(), "=", $sql.value(inputNode.getIp())); - Column portColumn = filterItemFieldName2ColumnMap.get("port"); + Column portColumn = fieldName2ColumnMap.get("port"); if (inputNode.getPort() != null) { andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "=", inputNode.getPort())); } else { andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "is null")); } if (StringUtils.isNotBlank(inputNode.getName())) { - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); + Column nameColumn = fieldName2ColumnMap.get("name"); andExp = $sql.exp(andExp, "and", $sql.exp(nameColumn.toString(), "=", $sql.value(inputNode.getName()))); } andExp = $sql.exp("(", andExp, ")"); @@ -675,7 +564,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceListByIpAndPortAndNameSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -691,40 +579,32 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("type_name"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("type_name").toString(), "typeName"); if (Objects.equals(searchVo.getIsHasAuth(), false)) { ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(); queryCriteriaVo.setIsHasAuth(false); if (StringUtils.isNotBlank(searchVo.getCmdbGroupType())) { queryCriteriaVo.setCmdbGroupType(searchVo.getCmdbGroupType()); } - SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); } List inputNodeList = searchVo.getInputNodeList(); if (CollectionUtils.isNotEmpty(inputNodeList)) { ExpressionVo orExp = null; for (ResourceVo inputNode : inputNodeList) { - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + Column ipColumn = fieldName2ColumnMap.get("ip"); ExpressionVo andExp = $sql.exp(ipColumn.toString(), "=", $sql.value(inputNode.getIp())); - Column portColumn = filterItemFieldName2ColumnMap.get("port"); + Column portColumn = fieldName2ColumnMap.get("port"); if (inputNode.getPort() != null) { andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "=", inputNode.getPort())); } else { andExp = $sql.exp(andExp, "and", $sql.exp(portColumn.toString(), "is null")); } if (StringUtils.isNotBlank(inputNode.getName())) { - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); + Column nameColumn = fieldName2ColumnMap.get("name"); andExp = $sql.exp(andExp, "and", $sql.exp(nameColumn.toString(), "=", $sql.value(inputNode.getName()))); } andExp = $sql.exp("(", andExp, ")"); @@ -762,7 +642,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceByIdSql(Long id, List selectFieldNameList) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -773,17 +652,9 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("id"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column column = filterItemFieldName2ColumnMap.get("id"); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + Column column = fieldName2ColumnMap.get("id"); $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "=", id)); return plainSelect.toString(); } catch (Exception e) { @@ -808,7 +679,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceIdByResourceIdSql(Long id) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -817,17 +687,9 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("id"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column column = filterItemFieldName2ColumnMap.get("id"); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + Column column = fieldName2ColumnMap.get("id"); $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "=", id)); $sql.setLimit(plainSelect, 1); return plainSelect.toString(); @@ -840,7 +702,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildCheckResourceIdListIsExistsSql(List idList) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -849,17 +710,9 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("id"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column column = filterItemFieldName2ColumnMap.get("id"); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + Column column = fieldName2ColumnMap.get("id"); $sql.addWhereExpression(plainSelect, $sql.exp(column.toString(), "in", idList)); return plainSelect.toString(); } catch (Exception e) { @@ -871,7 +724,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceIdListByAppSystemIdAndModuleIdAndEnvIdSql(ResourceVo resourceVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -883,23 +735,15 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("env_id"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column appSystemIdColumn = filterItemFieldName2ColumnMap.get("app_system_id"); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + Column appSystemIdColumn = fieldName2ColumnMap.get("app_system_id"); $sql.addWhereExpression(plainSelect, $sql.exp(appSystemIdColumn.toString(), "=", resourceVo.getAppSystemId())); - Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); + Column appModuleIdColumn = fieldName2ColumnMap.get("app_module_id"); $sql.addWhereExpression(plainSelect, $sql.exp(appModuleIdColumn.toString(), "=", resourceVo.getAppModuleId())); - Column envIdColumn = filterItemFieldName2ColumnMap.get("env_id"); + Column envIdColumn = fieldName2ColumnMap.get("env_id"); $sql.addWhereExpression(plainSelect, $sql.exp(envIdColumn.toString(), "=", resourceVo.getEnvId())); - Column idColumn = filterItemFieldName2ColumnMap.get("id"); + Column idColumn = fieldName2ColumnMap.get("id"); $sql.addOrderBy(plainSelect, idColumn.toString(), "desc"); return plainSelect.toString(); } catch (Exception e) { @@ -911,7 +755,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceListByTypeIdListAndIpListSql(List typeIdList, List ipList) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -923,19 +766,11 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("ip"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column typeIdColumn = filterItemFieldName2ColumnMap.get("type_id"); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + Column typeIdColumn = fieldName2ColumnMap.get("type_id"); $sql.addWhereExpression(plainSelect, $sql.exp(typeIdColumn.toString(), "in", typeIdList)); - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + Column ipColumn = fieldName2ColumnMap.get("ip"); $sql.addWhereExpression(plainSelect, $sql.exp(ipColumn.toString(), "in", ipList)); return plainSelect.toString(); } catch (Exception e) { @@ -947,7 +782,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceByIpAndPortAndNameAndTypeNameSql(String ip, Integer port, String name, String typeName) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -957,35 +791,26 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe selectItemFieldNameList.add("port"); // selectItemFieldNameList.add("type_name"); List filterItemFieldNameList = new ArrayList<>(); -// filterItemFieldNameList.add("id"); filterItemFieldNameList.add("name"); filterItemFieldNameList.add("ip"); filterItemFieldNameList.add("port"); filterItemFieldNameList.add("type_name"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "=", $sql.value(ip))); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("type_name").toString(), "typeName"); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("ip").toString(), "=", $sql.value(ip))); if (port != null) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "=", port)); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("port").toString(), "=", port)); } else { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "is null")); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("port").toString(), "is null")); } if (StringUtils.isNotBlank(name)) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "=", $sql.value(name))); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("name").toString(), "=", $sql.value(name))); } if (StringUtils.isNotBlank(typeName)) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("type_name").toString(), "=", $sql.value(typeName))); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("type_name").toString(), "=", $sql.value(typeName))); } $sql.setLimit(plainSelect, 1); return plainSelect.toString(); @@ -998,7 +823,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetResourceByIpAndPortSql(String ip, Integer port) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -1008,29 +832,19 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe selectItemFieldNameList.add("port"); // selectItemFieldNameList.add("type_name"); List filterItemFieldNameList = new ArrayList<>(); -// filterItemFieldNameList.add("id"); -// filterItemFieldNameList.add("name"); filterItemFieldNameList.add("ip"); filterItemFieldNameList.add("port"); filterItemFieldNameList.add("type_name"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "=", $sql.value(ip))); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("type_name").toString(), "typeName"); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("ip").toString(), "=", $sql.value(ip))); if (port != null) { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "=", port)); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("port").toString(), "=", port)); } else { - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("port").toString(), "is null")); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("port").toString(), "is null")); } $sql.setLimit(plainSelect, 1); return plainSelect.toString(); @@ -1043,7 +857,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildSearchAccountComponentSql(AccountComponentVo accountComponentVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -1054,23 +867,14 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("id"); filterItemFieldNameList.add("name"); filterItemFieldNameList.add("ip"); -// filterItemFieldNameList.add("port"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account_protocol", "d").withOn($sql.exp("d.id", "=", "c.protocol_id"))); -// $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_name").toString(), "typeName"); + $sql.addSelectColumn(plainSelect, "c.id", "accountId"); $sql.addSelectColumn(plainSelect, "c.name", "accountName"); $sql.addSelectColumn(plainSelect, "c.account", "account"); @@ -1079,9 +883,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe $sql.addSelectColumn(plainSelect, "d.port", "port"); String keyword = accountComponentVo.getKeyword(); if (StringUtils.isNotBlank(keyword)) { -// keyword = "%" + keyword + "%"; - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + Column nameColumn = fieldName2ColumnMap.get("name"); + Column ipColumn = fieldName2ColumnMap.get("ip"); $sql.addWhereExpression(plainSelect, $sql.exp("(", $sql.exp(nameColumn.toString(), "like", "'%" + keyword + "%'"), @@ -1102,37 +905,25 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildSearchAccountComponentCountSql(AccountComponentVo accountComponentVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); -// selectItemFieldNameList.add("id"); -//// selectItemFieldNameList.add("name"); -//// selectItemFieldNameList.add("ip"); List filterItemFieldNameList = new ArrayList<>(); filterItemFieldNameList.add("id"); filterItemFieldNameList.add("name"); filterItemFieldNameList.add("ip"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); $sql.addJoin(plainSelect, $sql.join("join", "cmdb_resourcecenter_account_protocol", "d").withOn($sql.exp("d.id", "=", "c.protocol_id"))); $sql.addSelectColumn(plainSelect, $sql.fun("count", "b.resource_id", "b.account_id").withDistinct(true)); String keyword = accountComponentVo.getKeyword(); if (StringUtils.isNotBlank(keyword)) { - Column nameColumn = filterItemFieldName2ColumnMap.get("name"); - Column ipColumn = filterItemFieldName2ColumnMap.get("ip"); + Column nameColumn = fieldName2ColumnMap.get("name"); + Column ipColumn = fieldName2ColumnMap.get("ip"); $sql.addWhereExpression(plainSelect, $sql.exp("(", $sql.exp(nameColumn.toString(), "like", "'%" + keyword + "%'"), @@ -1142,7 +933,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe ) ); } -// $sql.setLimit(plainSelect, accountComponentVo.getStartNum(), accountComponentVo.getPageSize()); return plainSelect.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); @@ -1153,11 +943,9 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetAppEnvListByAppSystemIdAndAppModuleIdSql(Long appSystemId, Long appModuleId) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); -// selectItemFieldNameList.add("id"); List filterItemFieldNameList = new ArrayList<>(); filterItemFieldNameList.add("id"); filterItemFieldNameList.add("app_system_id"); @@ -1167,25 +955,17 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("env_seq_no"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); $sql.setDistinct(plainSelect, true); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_id").toString(), "id"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_name").toString(), "name"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_seq_no").toString(), "seqNo"); - Column appSystemIdColumn = filterItemFieldName2ColumnMap.get("app_system_id"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("env_id").toString(), "id"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("env_name").toString(), "name"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("env_seq_no").toString(), "seqNo"); + Column appSystemIdColumn = fieldName2ColumnMap.get("app_system_id"); $sql.addWhereExpression(plainSelect, $sql.exp(appSystemIdColumn.toString(), "=", appSystemId)); - Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); + Column appModuleIdColumn = fieldName2ColumnMap.get("app_module_id"); $sql.addWhereExpression(plainSelect, $sql.exp(appModuleIdColumn.toString(), "=", appModuleId)); - Column envIdColumn = filterItemFieldName2ColumnMap.get("env_id"); + Column envIdColumn = fieldName2ColumnMap.get("env_id"); $sql.addWhereExpression(plainSelect, $sql.exp(envIdColumn.toString(), "is not null")); return plainSelect.toString(); } catch (Exception e) { @@ -1197,42 +977,25 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(Long appSystemId) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); -// selectItemFieldNameList.add("id"); List filterItemFieldNameList = new ArrayList<>(); filterItemFieldNameList.add("id"); filterItemFieldNameList.add("app_system_id"); filterItemFieldNameList.add("app_module_id"); filterItemFieldNameList.add("env_id"); -// filterItemFieldNameList.add("env_name"); -// filterItemFieldNameList.add("env_seq_no"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } -// $sql.setDistinct(plainSelect, true); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("app_module_id").toString(), "appModuleId"); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("env_id").toString()).withDistinct(true), "count"); -// $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_name").toString(), "name"); -// $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("env_seq_no").toString(), "seqNo"); - Column appSystemIdColumn = filterItemFieldName2ColumnMap.get("app_system_id"); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("app_module_id").toString(), "appModuleId"); + $sql.addSelectColumn(plainSelect, $sql.fun("count", fieldName2ColumnMap.get("env_id").toString()).withDistinct(true), "count"); + Column appSystemIdColumn = fieldName2ColumnMap.get("app_system_id"); $sql.addWhereExpression(plainSelect, $sql.exp(appSystemIdColumn.toString(), "=", appSystemId)); -// Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); -// $sql.addWhereExpression(plainSelect, $sql.exp(appModuleIdColumn.toString(), "=", appModuleId)); - Column envIdColumn = filterItemFieldName2ColumnMap.get("env_id"); + Column envIdColumn = fieldName2ColumnMap.get("env_id"); $sql.addWhereExpression(plainSelect, $sql.exp(envIdColumn.toString(), "is not null")); - Column appModuleIdColumn = filterItemFieldName2ColumnMap.get("app_module_id"); + Column appModuleIdColumn = fieldName2ColumnMap.get("app_module_id"); $sql.addGroupBy(plainSelect, appModuleIdColumn.toString()); return plainSelect.toString(); } catch (Exception e) { @@ -1244,7 +1007,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectResourceListByIdListSql(List idList, List selectFieldNameList) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -1257,17 +1019,9 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column idColumn = filterItemFieldName2ColumnMap.get("id"); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + Column idColumn = fieldName2ColumnMap.get("id"); $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", idColumn.toString()))); $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_account", "crra").withOn($sql.exp("crra.resource_id", "=", idColumn.toString()))); $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_account", "cra").withOn($sql.exp("cra.id", "=", "crra.account_id"))); @@ -1309,7 +1063,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectResourceCountSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -1321,16 +1074,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); /* AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) @@ -1339,14 +1084,14 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; $sql.addWhereExpression(plainSelect, $sql.exp("(", - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + $sql.exp(fieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(fieldName2ColumnMap.get("ip").toString(), "like", keyword), ")") ); } - SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + $sql.addSelectColumn(plainSelect, $sql.fun("count", fieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); @@ -1357,7 +1102,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectResourceCountByIpKeywordSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -1369,16 +1113,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); /* AND a.`ip` LIKE CONCAT('%', #{keyword}, '%')) @@ -1386,11 +1122,11 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword)); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("ip").toString(), "like", keyword)); } - SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + $sql.addSelectColumn(plainSelect, $sql.fun("count", fieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); @@ -1401,7 +1137,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectResourceCountByNameKeywordSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -1413,16 +1148,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); /* AND a.`name` LIKE CONCAT('%', #{keyword}, '%')) @@ -1430,11 +1157,11 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword)); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("name").toString(), "like", keyword)); } - SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + $sql.addSelectColumn(plainSelect, $sql.fun("count", fieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); @@ -1445,7 +1172,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectResourceIdListSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -1457,16 +1183,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); /* AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) @@ -1475,21 +1193,21 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; $sql.addWhereExpression(plainSelect, $sql.exp("(", - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + $sql.exp(fieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(fieldName2ColumnMap.get("ip").toString(), "like", keyword), ")") ); } - SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); - $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("id").toString()); + $sql.addGroupBy(plainSelect, fieldName2ColumnMap.get("id").toString()); if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { - $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); + $sql.addOrderBy(plainSelect, $sql.fun("length", fieldName2ColumnMap.get("name").toString())); } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { - $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); + $sql.addOrderBy(plainSelect, $sql.fun("length", fieldName2ColumnMap.get("ip").toString())); } - $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.addOrderBy(plainSelect, fieldName2ColumnMap.get("id").toString()); $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); return plainSelect.toString(); } catch (Exception e) { @@ -1533,7 +1251,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectResourceListByIdListAndJobIdSql(List idList, Long jobId, List selectFieldNameList) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -1546,27 +1263,14 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - Column idColumn = filterItemFieldName2ColumnMap.get("id"); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + Column idColumn = fieldName2ColumnMap.get("id"); $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", idColumn.toString()))); $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_account", "crra").withOn($sql.exp("crra.resource_id", "=", idColumn.toString()))); $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_account", "cra").withOn($sql.exp("cra.id", "=", "crra.account_id"))); $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_resourcecenter_resource_tag", "crrt").withOn($sql.exp("crrt.resource_id", "=", idColumn.toString()))); $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", idColumn.toString()))); -// $sql.addJoin(plainSelect, $sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp( -// $sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), -// "and", -// $sql.exp("ajpn.resource_id", "=", idColumn.toString()) -// ))); $sql.addJoin(plainSelect, $sql.join("left join", "cmdb_cientity_inspect", "cci").withOn($sql.exp( $sql.exp("cci.ci_entity_id", "=", idColumn.toString()), "and", @@ -1593,7 +1297,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectAutoexecJobNodeResourceCountSql(ResourceSearchVo searchVo, Long jobId) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -1606,16 +1309,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); /* AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) @@ -1624,14 +1319,14 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; $sql.addWhereExpression(plainSelect, $sql.exp("(", - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + $sql.exp(fieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(fieldName2ColumnMap.get("ip").toString(), "like", keyword), ")") ); } - SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + $sql.addSelectColumn(plainSelect, $sql.fun("count", fieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); @@ -1642,7 +1337,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectAutoexecJobNodeResourceCountByIpKeywordSql(ResourceSearchVo searchVo, Long jobId) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -1655,16 +1349,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); /* AND a.`ip` LIKE CONCAT('%', #{keyword}, '%')) @@ -1672,11 +1358,11 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword)); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("ip").toString(), "like", keyword)); } - SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + $sql.addSelectColumn(plainSelect, $sql.fun("count", fieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); @@ -1687,7 +1373,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectAutoexecJobNodeResourceCountByNameKeywordSql(ResourceSearchVo searchVo, Long jobId) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -1700,16 +1385,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); /* AND a.`name` LIKE CONCAT('%', #{keyword}, '%')) @@ -1717,11 +1394,11 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; - $sql.addWhereExpression(plainSelect, $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword)); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("name").toString(), "like", keyword)); } - SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, $sql.fun("count", filterItemFieldName2ColumnMap.get("id").toString()).withDistinct(true)); + $sql.addSelectColumn(plainSelect, $sql.fun("count", fieldName2ColumnMap.get("id").toString()).withDistinct(true)); return plainSelect.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); @@ -1732,7 +1409,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectAutoexecJobNodeResourceIdListSql(ResourceSearchVo searchVo, Long jobId) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -1745,16 +1421,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); /* AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) @@ -1763,21 +1431,21 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; $sql.addWhereExpression(plainSelect, $sql.exp("(", - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + $sql.exp(fieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(fieldName2ColumnMap.get("ip").toString(), "like", keyword), ")") ); } - SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspectConfigFile(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); - $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("id").toString()); + $sql.addGroupBy(plainSelect, fieldName2ColumnMap.get("id").toString()); if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { - $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); + $sql.addOrderBy(plainSelect, $sql.fun("length", fieldName2ColumnMap.get("name").toString())); } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { - $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); + $sql.addOrderBy(plainSelect, $sql.fun("length", fieldName2ColumnMap.get("ip").toString())); } - $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.addOrderBy(plainSelect, fieldName2ColumnMap.get("id").toString()); $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); return plainSelect.toString(); } catch (Exception e) { @@ -1789,7 +1457,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectConfigFileResourceIdListSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); @@ -1801,16 +1468,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); /* AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`ip` LIKE CONCAT('%', #{keyword}, '%')) @@ -1819,23 +1478,19 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe if (StringUtils.isNotBlank(queryCriteriaVo.getKeyword())) { String keyword = "'%" + queryCriteriaVo.getKeyword() + "%'"; $sql.addWhereExpression(plainSelect, $sql.exp("(", - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword), + $sql.exp(fieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(fieldName2ColumnMap.get("ip").toString(), "like", keyword), ")") ); } - SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, filterItemFieldName2ColumnMap); + SqlVo sqlVo = getSqlVoForInspect(queryCriteriaVo, fieldName2ColumnMap); $sql.addSql(plainSelect, sqlVo); - $sql.addJoin(plainSelect, $sql.join("left join", "inspect_config_file_last_change_time", "g").withOn($sql.exp("g.`resource_id`", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); - $sql.addGroupBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); -// if (Objects.equals(queryCriteriaVo.getIsNameFieldSort(), 1)) { -// $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("name").toString())); -// } else if (Objects.equals(queryCriteriaVo.getIsIpFieldSort(), 1)) { -// $sql.addOrderBy(plainSelect, $sql.fun("length", filterItemFieldName2ColumnMap.get("ip").toString())); -// } + $sql.addJoin(plainSelect, $sql.join("left join", "inspect_config_file_last_change_time", "g").withOn($sql.exp("g.`resource_id`", "=", fieldName2ColumnMap.get("id").toString()))); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("id").toString()); + $sql.addGroupBy(plainSelect, fieldName2ColumnMap.get("id").toString()); + $sql.addOrderBy(plainSelect, $sql.fun("max","g.`last_change_time`"), "desc"); - $sql.addOrderBy(plainSelect, filterItemFieldName2ColumnMap.get("id").toString()); + $sql.addOrderBy(plainSelect, fieldName2ColumnMap.get("id").toString()); $sql.setLimit(plainSelect, searchVo.getStartNum(), searchVo.getPageSize()); return plainSelect.toString(); } catch (Exception e) { @@ -1847,7 +1502,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectConfigFilePathCountSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -1857,17 +1511,9 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("ip"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); /* AND (a.`path` LIKE CONCAT('%', #{keyword}, '%') @@ -1879,8 +1525,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe if (StringUtils.isNotBlank(searchVo.getKeyword())) { String keyword = "'%" + searchVo.getKeyword() + "%'"; ExpressionVo orExp = $sql.exp( - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword) + $sql.exp(fieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(fieldName2ColumnMap.get("ip").toString(), "like", keyword) ); orExp = $sql.exp(orExp, "or", $sql.exp("b.path", "like", keyword)); $sql.addWhereExpression(plainSelect, $sql.exp("(", orExp, ")") @@ -1914,7 +1560,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectConfigFilePathIdListSql(ResourceSearchVo searchVo) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -1924,17 +1569,9 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("ip"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } - $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); /* AND (a.`path` LIKE CONCAT('%', #{keyword}, '%') @@ -1946,8 +1583,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe if (StringUtils.isNotBlank(searchVo.getKeyword())) { String keyword = "'%" + searchVo.getKeyword() + "%'"; ExpressionVo orExp = $sql.exp( - $sql.exp(filterItemFieldName2ColumnMap.get("name").toString(), "like", keyword), - "or", $sql.exp(filterItemFieldName2ColumnMap.get("ip").toString(), "like", keyword) + $sql.exp(fieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(fieldName2ColumnMap.get("ip").toString(), "like", keyword) ); orExp = $sql.exp(orExp, "or", $sql.exp("b.path", "like", keyword)); $sql.addWhereExpression(plainSelect, $sql.exp("(", orExp, ")") @@ -1984,7 +1621,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectConfigFilePathListSql(List idList) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -1996,26 +1632,18 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("type_label"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); $sql.setDistinct(plainSelect, true); $sql.addSelectColumn(plainSelect, "b.id", "id"); $sql.addSelectColumn(plainSelect, "b.resource_id", "resourceId"); $sql.addSelectColumn(plainSelect, "b.path", "path"); $sql.addSelectColumn(plainSelect, "b.inspect_time", "inspectTime"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("name").toString(), "resourceName"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("ip").toString(), "resourceIP"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("port").toString(), "resourcePort"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_label").toString(), "resourceTypeLabel"); - $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("name").toString(), "resourceName"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("ip").toString(), "resourceIP"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("port").toString(), "resourcePort"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("type_label").toString(), "resourceTypeLabel"); + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); $sql.addWhereExpression(plainSelect, $sql.exp("b.id", "in", idList)); return plainSelect.toString(); } catch (Exception e) { @@ -2027,7 +1655,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe @Override public String buildGetInspectConfigFilePathListByJobIdSql(Long jobId) { try { - PlainSelect plainSelect = null; ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); List selectItemFieldNameList = new ArrayList<>(); @@ -2039,16 +1666,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe filterItemFieldNameList.add("type_label"); config.setSelectItemFieldNameList(selectItemFieldNameList); config.setFilterItemFieldNameList(filterItemFieldNameList); - Map filterItemFieldName2ColumnMap = new HashMap<>(); - if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { - ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); - plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap(); - } else { - ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); - plainSelect = resourceViewGenerateSqlUtil.getSql(); - filterItemFieldName2ColumnMap = resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap(); - } + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); $sql.setDistinct(plainSelect, true); $sql.addSelectColumn(plainSelect, "b.id", "id"); $sql.addSelectColumn(plainSelect, "b.resource_id", "resourceId"); @@ -2056,12 +1675,12 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe $sql.addSelectColumn(plainSelect, "b.md5", "md5"); $sql.addSelectColumn(plainSelect, "b.inspect_time", "inspectTime"); $sql.addSelectColumn(plainSelect, "b.file_id", "fileId"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("name").toString(), "resourceName"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("ip").toString(), "resourceIP"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("port").toString(), "resourcePort"); - $sql.addSelectColumn(plainSelect, filterItemFieldName2ColumnMap.get("type_label").toString(), "resourceTypeLabel"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("name").toString(), "resourceName"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("ip").toString(), "resourceIP"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("port").toString(), "resourcePort"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("type_label").toString(), "resourceTypeLabel"); $sql.addSelectColumn(plainSelect, "c.id", "versionId"); - $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_path", "b").withOn($sql.exp("b.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); $sql.addJoin(plainSelect, $sql.join("join", "inspect_config_file_version", "c").withOn($sql.exp( $sql.exp("c.`path_id`", "=", "b.`id`"), "and", @@ -2097,10 +1716,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe } /** * 对字段映射配置信息进行有效性检查及填充缺省数据 - * - * @param viewName - * @param config - * @return */ private ResourceEntityConfigVo fieldMappingCheckValidityAndFillIdData(String viewName, List fieldNameList, ResourceEntityConfigVo config) { ResourceEntityConfigVo newConfig = new ResourceEntityConfigVo(); @@ -2375,7 +1990,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe newFieldMappingVo.setFromAttr(fromAttr); newFieldMappingVo.setToAttr(toAttr); } else if (Objects.equals(type, "empty")) { - + // ignore } else { throw new ResourceViewFieldMappingException(viewName, field, "type", type); } @@ -2499,8 +2114,6 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe /** * 根据queryCriteriaVo查询条件收集组装动态sql时,需要返回的条件列 - * @param queryCriteriaVo - * @return */ private List getFilterItemFieldNameList(ResourceQueryCriteriaVo queryCriteriaVo) { Set filterItemFieldNameSet = new HashSet<>(); @@ -2560,7 +2173,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe return new ArrayList<>(filterItemFieldNameSet); } - private SqlVo getSqlVoForResource(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + private SqlVo getSqlVoForResource(ResourceQueryCriteriaVo queryCriteriaVo, Map fieldName2ColumnMap) { SqlVo sqlVo = new SqlVo(); List joinList = new ArrayList<>(); List whereExpressionList = new ArrayList<>(); @@ -2579,7 +2192,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe System.out.println("a"); { ExpressionVo expressionVo = $sql.exp( - $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + $sql.exp("ffc.target_id", "=", fieldName2ColumnMap.get("id").toString()), "and", $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); @@ -2622,7 +2235,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe fieldAttrId = queryCriteriaVo.getIpFieldAttrId(); } ExpressionVo expressionVo = $sql.exp( - $sql.exp("ffc2.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + $sql.exp("ffc2.target_id", "=", fieldName2ColumnMap.get("id").toString()), "and", $sql.exp("ffc2.target_field", "=", fieldAttrId)); joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc2").withOn(expressionVo)); @@ -2650,7 +2263,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { System.out.println("d"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); } @@ -2668,7 +2281,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { System.out.println("e"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); } /* @@ -2686,8 +2299,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { System.out.println("f"); - joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); + joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); + ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", fieldName2ColumnMap.get("id").toString())); joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); } @@ -2706,7 +2319,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", fieldName2ColumnMap.get("id").toString()))); joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); List strList = new ArrayList<>(); @@ -2779,17 +2392,17 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { System.out.println("i"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { ExpressionVo orLeftExpressionVo = null; if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { System.out.println("j"); - orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); + orLeftExpressionVo = $sql.exp(fieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); } else { System.out.println("k"); orLeftExpressionVo = $sql.exp(1, "=", 0); } - ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(fieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); ExpressionVo orRightExpressionVo2 = null; @@ -2831,7 +2444,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { System.out.println("p"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); } /* @@ -2843,7 +2456,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { System.out.println("q"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); } /* @@ -2855,7 +2468,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { System.out.println("r"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); } /* @@ -2864,7 +2477,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { System.out.println("s"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("env_id").toString(), "is null")); } /* @@ -2876,7 +2489,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { System.out.println("t"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); } /* @@ -2888,7 +2501,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { System.out.println("u"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); } /* @@ -2900,7 +2513,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { System.out.println("v"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); } /* @@ -2912,7 +2525,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { System.out.println("w"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); } /* @@ -2924,45 +2537,17 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { System.out.println("x"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); } sqlVo.withJoinList(joinList); sqlVo.withWhereExpressionList(whereExpressionList); return sqlVo; } - private SqlVo getSqlVoForInspect(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + private SqlVo getSqlVoForInspect(ResourceQueryCriteriaVo queryCriteriaVo, Map fieldName2ColumnMap) { SqlVo sqlVo = new SqlVo(); List joinList = new ArrayList<>(); List whereExpressionList = new ArrayList<>(); - /* - - JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) - JOIN fulltextindex_word fw ON ffc.word_id = fw.id - AND (fw.word IN - - #{item} - - ) - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { -// System.out.println("a"); -// { -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), -// "and", -// $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); -// joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); -// } -// { -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("fw.id", "=", "ffc.word_id"), -// "and", -// $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); -// joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); -// } -// } /* AND @@ -2982,10 +2567,10 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe String columnName = null; if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { System.out.println("b"); - columnName = filterItemFieldName2ColumnMap.get("name").toString(); + columnName = fieldName2ColumnMap.get("name").toString(); } else { System.out.println("c"); - columnName = filterItemFieldName2ColumnMap.get("ip").toString(); + columnName = fieldName2ColumnMap.get("ip").toString(); } ExpressionVo orExp = null; for (String item : queryCriteriaVo.getBatchSearchList()) { @@ -3012,7 +2597,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { System.out.println("d"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); } @@ -3030,7 +2615,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { System.out.println("e"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); } /* @@ -3048,8 +2633,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { System.out.println("f"); - joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); - ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); + joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); + ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", fieldName2ColumnMap.get("id").toString())); joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn(expressionVo)); whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); } @@ -3068,7 +2653,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { - joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", fieldName2ColumnMap.get("id").toString()))); joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); List strList = new ArrayList<>(); @@ -3141,17 +2726,17 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { System.out.println("i"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { ExpressionVo orLeftExpressionVo = null; if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { System.out.println("j"); - orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); + orLeftExpressionVo = $sql.exp(fieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); } else { System.out.println("k"); orLeftExpressionVo = $sql.exp(1, "=", 0); } - ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); + ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(fieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); ExpressionVo orRightExpressionVo2 = null; @@ -3193,7 +2778,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { System.out.println("p"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); } /* @@ -3205,7 +2790,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { System.out.println("q"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); } /* @@ -3217,17 +2802,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { System.out.println("r"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); } - /* - - AND a.`env_id` is null - - */ -// if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { -// System.out.println("s"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); -// } /* AND a.`app_system_id` IN @@ -3238,7 +2814,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { System.out.println("t"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); } /* @@ -3250,32 +2826,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { System.out.println("u"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); } - /* - - AND a.`id` IN - - #{id} - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { -// System.out.println("v"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); -// } - /* - - AND a.`id` IN - - #{id} - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { -// System.out.println("w"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); -// } /* AND a.`inspect_status` IN @@ -3286,79 +2838,17 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { System.out.println("x"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("inspect_status").toString(), "in", queryCriteriaVo.getInspectStatusList())); } sqlVo.withJoinList(joinList); sqlVo.withWhereExpressionList(whereExpressionList); return sqlVo; } - private SqlVo getSqlVoForInspectConfigFile(ResourceQueryCriteriaVo queryCriteriaVo, Map filterItemFieldName2ColumnMap) { + private SqlVo getSqlVoForInspectConfigFile(ResourceQueryCriteriaVo queryCriteriaVo, Map fieldName2ColumnMap) { SqlVo sqlVo = new SqlVo(); List joinList = new ArrayList<>(); List whereExpressionList = new ArrayList<>(); - /* - - JOIN fulltextindex_field_cmdb ffc ON ffc.target_id = a.id AND ffc.target_field IN (#{nameFieldAttrId}, #{ipFieldAttrId}) - JOIN fulltextindex_word fw ON ffc.word_id = fw.id - AND (fw.word IN - - #{item} - - ) - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getKeywordList()) && (queryCriteriaVo.getNameFieldAttrId() != null || queryCriteriaVo.getIpFieldAttrId() != null)) { -// System.out.println("a"); -// { -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("ffc.target_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), -// "and", -// $sql.exp("ffc.target_field", "in", Arrays.asList(queryCriteriaVo.getNameFieldAttrId(), queryCriteriaVo.getIpFieldAttrId()))); -// joinList.add($sql.join("join", "fulltextindex_field_cmdb", "ffc").withOn(expressionVo)); -// } -// { -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("fw.id", "=", "ffc.word_id"), -// "and", -// $sql.exp("fw.word", "in", queryCriteriaVo.getKeywordList())); -// joinList.add($sql.join("join", "fulltextindex_word", "fw").withOn(expressionVo)); -// } -// } - /* - - AND - - - a.`name` LIKE #{item} - - - - - a.`ip` LIKE #{item} - - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getBatchSearchList()) && StringUtils.isNotBlank(queryCriteriaVo.getSearchField())) { -// String columnName = null; -// if (Objects.equals(queryCriteriaVo.getSearchField(), "name")) { -// System.out.println("b"); -// columnName = filterItemFieldName2ColumnMap.get("name").toString(); -// } else { -// System.out.println("c"); -// columnName = filterItemFieldName2ColumnMap.get("ip").toString(); -// } -// ExpressionVo orExp = null; -// for (String item : queryCriteriaVo.getBatchSearchList()) { -// if (orExp != null) { -// orExp = $sql.exp(orExp, "or", $sql.exp(columnName, "like", $sql.value(item))); -// } else { -// orExp = $sql.exp(columnName, "like", $sql.value(item)); -// } -// } -// whereExpressionList.add($sql.exp("(", orExp, ")")); -// } /* LEFT JOIN `cmdb_resourcecenter_resource_account` b ON b.`resource_id` = a.`id` @@ -3374,7 +2864,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getProtocolIdList())) { System.out.println("d"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_account", "b").withOn($sql.exp("b.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); joinList.add($sql.join("left join", "cmdb_resourcecenter_account", "c").withOn($sql.exp("c.id", "=", "b.account_id"))); whereExpressionList.add($sql.exp("c.protocol_id", "in", queryCriteriaVo.getProtocolIdList())); } @@ -3392,7 +2882,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTagIdList())) { System.out.println("e"); - joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "cmdb_resourcecenter_resource_tag", "d").withOn($sql.exp("d.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); whereExpressionList.add($sql.exp("d.tag_id", "in", queryCriteriaVo.getTagIdList())); } /* @@ -3410,145 +2900,23 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectJobPhaseNodeStatusList())) { System.out.println("f"); -// joinList.add($sql.join("left join", "autoexec_job_resource_inspect", "ajri").withOn($sql.exp("ajri.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); -// ExpressionVo expressionVo = $sql.exp($sql.exp("ajpn.job_phase_id", "=", "ajri.phase_id"), "and", $sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString())); - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); whereExpressionList.add($sql.exp("ajpn.status", "in", queryCriteriaVo.getInspectJobPhaseNodeStatusList())); } if (queryCriteriaVo.getJobId() != null) { - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); whereExpressionList.add($sql.exp("ajpn.job_id", "=", queryCriteriaVo.getJobId())); } - /* - - LEFT JOIN cmdb_cientity_group ccg ON ccg.cientity_id = a.id - LEFT JOIN cmdb_group_auth cga ON ccg.group_id = cga.group_id - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('autoexec') - - - LEFT JOIN cmdb_group cg ON cga.group_id = cg.id AND cg.type in ('readonly','maintain','autoexec') - - - - */ -// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { -// joinList.add($sql.join("left join", "cmdb_cientity_group", "ccg").withOn($sql.exp("ccg.cientity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); -// joinList.add($sql.join("left join", "cmdb_group_auth", "cga").withOn($sql.exp("cga.group_id", "=", "ccg.group_id"))); -// -// List strList = new ArrayList<>(); -// if (Objects.equals(queryCriteriaVo.getCmdbGroupType(), "autoexec")) { -// System.out.println("g"); -// strList.add("autoexec"); -// } else { -// System.out.println("h"); -// strList.add("autoexec"); -// strList.add("readonly"); -// strList.add("maintain"); -// } -// ExpressionVo expressionVo = $sql.exp( -// $sql.exp("cg.id", "=", "cga.group_id"), -// "and", -// $sql.exp("cg.type", "in", strList) -// ); -// joinList.add($sql.join("left join", "cmdb_group", "cg").withOn(expressionVo)); -// } /* - - AND a.`type_id` IN - - #{typeId} - - - - AND ( - - - a.`type_id` IN - - #{authedTypeId} - - - - 1 = 0 - - - or ( - cg.id is not null and - a.`type_id` IN - - #{typeId} - - and - ((cga.auth_type = 'common' AND cga.auth_uuid = 'alluser') - - OR cga.auth_uuid IN ( - #{authenticationInfo.userUuid} - - - #{item} - - - - - #{item} - - - ) - - ) - ) - ) - + AND a.`type_id` IN + + #{typeId} + */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getTypeIdList())) { - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); -// if (Objects.equals(queryCriteriaVo.getIsHasAuth(), true)) { -// System.out.println("i"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); -// } else if (Objects.equals(queryCriteriaVo.getIsHasAuth(), false)) { -// ExpressionVo orLeftExpressionVo = null; -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthedTypeIdList())) { -// System.out.println("j"); -// orLeftExpressionVo = $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getAuthedTypeIdList()); -// } else { -// System.out.println("k"); -// orLeftExpressionVo = $sql.exp(1, "=", 0); -// } -// ExpressionVo orRightExpressionVo = $sql.exp($sql.exp("cg.id", "is not null"), "and", $sql.exp(filterItemFieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); -// -// ExpressionVo orLeftExpressionVo2 = $sql.exp("(", $sql.exp("cga.auth_type", "=", "'common'"), "and", $sql.exp("cga.auth_uuid", "=", "'alluser'"), ")"); -// ExpressionVo orRightExpressionVo2 = null; -// if (queryCriteriaVo.getAuthenticationInfo() != null) { -// System.out.println("l"); -// List uuidList = new ArrayList<>(); -// if (StringUtils.isNotBlank(queryCriteriaVo.getAuthenticationInfo().getUserUuid())) { -// uuidList.add(queryCriteriaVo.getAuthenticationInfo().getUserUuid()); -// } -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList())) { -// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getTeamUuidList()); -// } -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList())) { -// uuidList.addAll(queryCriteriaVo.getAuthenticationInfo().getRoleUuidList()); -// } -// if (CollectionUtils.isNotEmpty(uuidList)) { -// System.out.println("m"); -// orRightExpressionVo2 = $sql.exp("cga.auth_uuid", "in", uuidList); -// } -// } -// if (orRightExpressionVo2 != null) { -// System.out.println("n"); -// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", $sql.exp("(", orLeftExpressionVo2, "or", orRightExpressionVo2, ")")); -// } else { -// System.out.println("o"); -// orRightExpressionVo = $sql.exp(orRightExpressionVo, "and", orLeftExpressionVo2); -// } -// ExpressionVo orExpressionVo = $sql.exp("(", orLeftExpressionVo, "or", orRightExpressionVo, ")"); -// whereExpressionList.add(orExpressionVo); -// } + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("type_id").toString(), "in", queryCriteriaVo.getTypeIdList())); } /* @@ -3560,7 +2928,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getStateIdList())) { System.out.println("p"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("state_id").toString(), "in", queryCriteriaVo.getStateIdList())); } /* @@ -3572,7 +2940,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getVendorIdList())) { System.out.println("q"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("vendor_id").toString(), "in", queryCriteriaVo.getVendorIdList())); } /* @@ -3584,17 +2952,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getEnvIdList())) { System.out.println("r"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("env_id").toString(), "in", queryCriteriaVo.getEnvIdList())); } - /* - - AND a.`env_id` is null - - */ -// if (Objects.equals(queryCriteriaVo.getExistNoEnv(), true)) { -// System.out.println("s"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("env_id").toString(), "is null")); -// } /* AND a.`app_system_id` IN @@ -3605,7 +2964,7 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppSystemIdList())) { System.out.println("t"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("app_system_id").toString(), "in", queryCriteriaVo.getAppSystemIdList())); } /* @@ -3617,32 +2976,8 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getAppModuleIdList())) { System.out.println("u"); - whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); + whereExpressionList.add($sql.exp(fieldName2ColumnMap.get("app_module_id").toString(), "in", queryCriteriaVo.getAppModuleIdList())); } - /* - - AND a.`id` IN - - #{id} - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getDefaultValue())) { -// System.out.println("v"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getDefaultValue())); -// } - /* - - AND a.`id` IN - - #{id} - - - */ -// if (CollectionUtils.isNotEmpty(queryCriteriaVo.getIdList())) { -// System.out.println("w"); -// whereExpressionList.add($sql.exp(filterItemFieldName2ColumnMap.get("id").toString(), "in", queryCriteriaVo.getIdList())); -// } /* AND a.`inspect_status` IN @@ -3653,9 +2988,9 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe */ if (CollectionUtils.isNotEmpty(queryCriteriaVo.getInspectStatusList())) { System.out.println("x"); - joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", filterItemFieldName2ColumnMap.get("id").toString()))); + joinList.add($sql.join("left join", "autoexec_job_phase_node", "ajpn").withOn($sql.exp("ajpn.resource_id", "=", fieldName2ColumnMap.get("id").toString()))); joinList.add($sql.join("left join", "cmdb_cientity_inspect", "cci").withOn($sql.exp( - $sql.exp("cci.ci_entity_id", "=", filterItemFieldName2ColumnMap.get("id").toString()), + $sql.exp("cci.ci_entity_id", "=", fieldName2ColumnMap.get("id").toString()), "and", $sql.exp("cci.job_id", "=", "ajpn.job_id") ))); @@ -3665,4 +3000,18 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe sqlVo.withWhereExpressionList(whereExpressionList); return sqlVo; } + + private PlainSelect getPlainSelect(ResourceEntityConfigVo config, Map fieldName2ColumnMap) { + PlainSelect plainSelect = null; + if (Objects.equals(DatasourceManager.getDatabaseId(), DatabaseVendor.TIDB.getDatabaseId())) { + ResourceViewGenerateSqlUtilForTiDB resourceViewGenerateSqlUtilForTiDB = new ResourceViewGenerateSqlUtilForTiDB(config); + plainSelect = resourceViewGenerateSqlUtilForTiDB.getSql(); + fieldName2ColumnMap.putAll(resourceViewGenerateSqlUtilForTiDB.getFilterItemFieldName2ColumnMap()); + } else { + ResourceViewGenerateSqlUtil resourceViewGenerateSqlUtil = new ResourceViewGenerateSqlUtil(config); + plainSelect = resourceViewGenerateSqlUtil.getSql(); + fieldName2ColumnMap.putAll(resourceViewGenerateSqlUtil.getFilterItemFieldName2ColumnMap()); + } + return plainSelect; + } } -- Gitee From 21d4d79aed7e78b7de9bdd5496bd03a0a8e29b15 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 13 Aug 2025 16:57:57 +0800 Subject: [PATCH 15/15] =?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 | 42 +++++----- .../mapper/resourcecenter/ResourceMapper.xml | 84 +++++++++---------- .../DefaultResourceCenterDataSourceImpl.java | 2 +- 3 files changed, 61 insertions(+), 67 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 4927bab7..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 @@ -28,6 +28,26 @@ import java.util.List; import java.util.Map; public interface ResourceMapper extends IResourceCrossoverMapper { + + int getCountBySql(String sql); + + Long getIdBySql(String sql); + + List getIdListBySql(String sql); + + ResourceVo getResourceBySql(String sql); + + ResourceVo getResourceSimpleBySql(String sql); + + List getResourceListBySql(String sql); + + List getResourceSimpleListBySql(String sql); + + List searchAccountComponentListBySql(String sql); + + List getAppEnvListBySql(String sql); + + List> getMapListBySql(String sql); @Deprecated int getResourceCountByNameKeyword(ResourceSearchVo searchVo); @Deprecated @@ -35,10 +55,6 @@ public interface ResourceMapper extends IResourceCrossoverMapper { @Deprecated int getResourceCount(ResourceSearchVo searchVo); - int getResourceCountBySql(String sql); - - int getCountBySql(String sql); - int getAllResourceCount(ResourceSearchVo searchVo); int getResourceCountByDynamicCondition(@Param("searchVo") ResourceSearchVo searchVo, @Param("conditionSql") String conditionSql); @@ -46,20 +62,10 @@ public interface ResourceMapper extends IResourceCrossoverMapper { @Deprecated List getResourceIdList(ResourceSearchVo searchVo); - List getResourceIdListBySql(String sql); - List getResourceIdListByDynamicCondition(@Param("searchVo") ResourceSearchVo searchVo, @Param("conditionSql") String conditionSql); @Deprecated List getResourceListByIdList(List idList); - ResourceVo getResourceBySql(String sql); - - ResourceVo getResourceSimpleBySql(String sql); - - List getResourceListBySql(String sql); - - List getResourceSimpleListBySql(String sql); - int getAppResourceCount(ResourceSearchVo searchVo); List getAppResourceIdList(ResourceSearchVo searchVo); @@ -70,8 +76,6 @@ public interface ResourceMapper extends IResourceCrossoverMapper { Long getResourceIdByIpAndPortAndName(ResourceSearchVo searchVo); - Long getIdBySql(String sql); - List getResourceIdListByIpAndPortAndName(ResourceSearchVo searchVo); List getResourceListByIpAndPortAndName(ResourceSearchVo searchVo); @@ -145,8 +149,6 @@ public interface ResourceMapper extends IResourceCrossoverMapper { List searchAccountComponent(AccountComponentVo accountComponentVo); - List searchAccountComponentListBySql(String sql); - Integer searchAccountComponentCount(AccountComponentVo accountComponentVo); int searchAppEnvCount(BasePageVo searchVo); @@ -193,12 +195,8 @@ public interface ResourceMapper extends IResourceCrossoverMapper { List getAppEnvListByAppSystemIdAndAppModuleId(@Param("appSystemId") Long appSystemId, @Param("appModuleId") Long appModuleId); - List getAppEnvListBySql(String sql); - List> getAppEnvCountMapByAppSystemIdGroupByAppModuleId(Long appSystemId); - List> getMapListBySql(String sql); - List getOsResourceListByResourceIdList(List resourceIdList); List getResourceTypeIdListByAuth(ResourceSearchVo searchVo); diff --git a/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml b/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml index 67081a0a..26489062 100644 --- a/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml +++ b/src/main/java/neatlogic/module/cmdb/dao/mapper/resourcecenter/ResourceMapper.xml @@ -17,6 +17,46 @@ along with this program. If not, see .--> + + + + + + + + + + + + + + + + + + + + @@ -300,14 +340,6 @@ along with this program. If not, see .--> - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/java/neatlogic/module/cmdb/resourcecenter/datasource/handler/DefaultResourceCenterDataSourceImpl.java b/src/main/java/neatlogic/module/cmdb/resourcecenter/datasource/handler/DefaultResourceCenterDataSourceImpl.java index f523447b..f14abd7b 100644 --- a/src/main/java/neatlogic/module/cmdb/resourcecenter/datasource/handler/DefaultResourceCenterDataSourceImpl.java +++ b/src/main/java/neatlogic/module/cmdb/resourcecenter/datasource/handler/DefaultResourceCenterDataSourceImpl.java @@ -650,7 +650,7 @@ public class DefaultResourceCenterDataSourceImpl implements IResourceCenterDataS String enable = ConfigManager.getConfig(CmdbTenantConfig.RESOURCECENTER_DATA_COMPARISON_MODE_ENABLE); List resultList = new ArrayList<>(); String getResourceIdListSql = resourceBuildSqlService.buildGetResourceIdListSql(searchVo); - List idList = resourceMapper.getResourceIdListBySql(getResourceIdListSql); + List idList = resourceMapper.getIdListBySql(getResourceIdListSql); if (Objects.equals(enable, "1")) { List oldIdList = resourceMapper.getResourceIdList(searchVo); if (!Objects.equals(oldIdList, idList)) { -- Gitee