From 62e3aef24514016f28f5a2b8fb02689299642dc5 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Thu, 14 Aug 2025 18:23:17 +0800 Subject: [PATCH] =?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/ResourceBuildSqlService.java | 14 ++ .../resource/ResourceBuildSqlServiceImpl.java | 196 ++++++++++++++++++ 2 files changed, 210 insertions(+) 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 index 63fa60d8..c1f16b58 100644 --- a/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlService.java +++ b/src/main/java/neatlogic/module/cmdb/service/resourcecenter/resource/ResourceBuildSqlService.java @@ -132,6 +132,20 @@ public interface ResourceBuildSqlService { // String buildGetResourceCountByDynamicConditionSql(); // String buildGetResourceIdListByDynamicConditionSql(); + String buildGetAppResourceCountSql(ResourceSearchVo searchVo); + + String buildGetAppResourceIdListSql(ResourceSearchVo searchVo); + + String buildGetAppResourceListByIdListSql(ResourceSearchVo searchVo, List selectFieldNameList); + + String buildGetAppResourceListByIdListSql(ResourceSearchVo searchVo); + + String buildGetAppEnvListByViewNameAndAppSystemIdAndAppModuleIdAndInspectStatusListSql(String viewName, Long appSystemId, Long appModuleId, List inspectStatusList); + +// List buildGetAppResourceTypeIdListByViewNameAndAppSystemIdSql(String viewName, Long appSystemId, Long appModuleId, Long envId, List inspectStatusList); + +// List getAppSystemIdListById(@Param("viewName") String viewName, @Param("id") Long id); + // InspectMapper String buildGetInspectResourceListByIdListSql(List idList, List selectFieldNameList); 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 3f30cae1..e41214f7 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 @@ -1004,6 +1004,202 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe return null; } + @Override + public String buildGetAppResourceCountSql(ResourceSearchVo searchVo) { + try { + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName(searchVo.getViewName()); + 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("type_id"); + filterItemFieldNameList.add("inspect_status"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + if (searchVo.getAppSystemId() != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("app_system_id").toString(), "=", searchVo.getAppSystemId())); + } + if (searchVo.getAppModuleId() != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("app_module_id").toString(), "=", searchVo.getAppModuleId())); + } + if (searchVo.getEnvId() != null) { + if (searchVo.getEnvId() != -2) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("env_id").toString(), "=", searchVo.getEnvId())); + } else { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("env_id").toString(), "is null")); + } + } + if (searchVo.getTypeId() != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("type_id").toString(), "=", searchVo.getTypeId())); + } + if (CollectionUtils.isNotEmpty(searchVo.getInspectStatusList())) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("inspect_status").toString(), "in", searchVo.getInspectStatusList())); + } + Column column = fieldName2ColumnMap.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 buildGetAppResourceIdListSql(ResourceSearchVo searchVo) { + try { + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName(searchVo.getViewName()); + 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("type_id"); + filterItemFieldNameList.add("inspect_status"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + if (searchVo.getAppSystemId() != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("app_system_id").toString(), "=", searchVo.getAppSystemId())); + } + if (searchVo.getAppModuleId() != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("app_module_id").toString(), "=", searchVo.getAppModuleId())); + } + if (searchVo.getEnvId() != null) { + if (searchVo.getEnvId() != -2) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("env_id").toString(), "=", searchVo.getEnvId())); + } else { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("env_id").toString(), "is null")); + } + } + if (searchVo.getTypeId() != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("type_id").toString(), "=", searchVo.getTypeId())); + } + if (CollectionUtils.isNotEmpty(searchVo.getInspectStatusList())) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("inspect_status").toString(), "in", searchVo.getInspectStatusList())); + } + $sql.setDistinct(plainSelect, true); + Column column = fieldName2ColumnMap.get("id"); + $sql.addOrderBy(plainSelect, column.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 buildGetAppResourceListByIdListSql(ResourceSearchVo searchVo, List selectFieldNameList) { + try { + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName(searchVo.getViewName()); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(selectFieldNameList)) { + selectItemFieldNameList.addAll(selectFieldNameList); + } + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("app_system_id"); + filterItemFieldNameList.add("app_module_id"); + filterItemFieldNameList.add("env_id"); + filterItemFieldNameList.add("type_id"); + filterItemFieldNameList.add("inspect_status"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + if (searchVo.getAppSystemId() != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("app_system_id").toString(), "=", searchVo.getAppSystemId())); + } + if (searchVo.getAppModuleId() != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("app_module_id").toString(), "=", searchVo.getAppModuleId())); + } + if (searchVo.getEnvId() != null) { + if (searchVo.getEnvId() != -2) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("env_id").toString(), "=", searchVo.getEnvId())); + } else { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("env_id").toString(), "is null")); + } + } + if (searchVo.getTypeId() != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("type_id").toString(), "=", searchVo.getTypeId())); + } + if (CollectionUtils.isNotEmpty(searchVo.getInspectStatusList())) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("inspect_status").toString(), "in", searchVo.getInspectStatusList())); + } + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("id").toString(), "in", searchVo.getIdList())); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override + public String buildGetAppResourceListByIdListSql(ResourceSearchVo searchVo) { + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName(searchVo.getViewName()); + List fieldNameList = ResourceEntityFactory.getFieldNameListByViewName(resourceEntityVo.getConfig().getSceneTemplateName()); + return buildGetAppResourceListByIdListSql(searchVo, fieldNameList); + } + + @Override + public String buildGetAppEnvListByViewNameAndAppSystemIdAndAppModuleIdAndInspectStatusListSql(String viewName, Long appSystemId, Long appModuleId, List inspectStatusList) { + try { + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName(viewName); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + filterItemFieldNameList.add("app_system_id"); + filterItemFieldNameList.add("app_module_id"); + filterItemFieldNameList.add("app_module_name"); + filterItemFieldNameList.add("app_module_abbr_name"); + filterItemFieldNameList.add("env_id"); + filterItemFieldNameList.add("env_name"); + filterItemFieldNameList.add("env_seq_no"); + filterItemFieldNameList.add("type_id"); + filterItemFieldNameList.add("type_name"); + filterItemFieldNameList.add("type_label"); + filterItemFieldNameList.add("inspect_status"); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + $sql.addSelectColumn(plainSelect, $sql.fun("IFNULL", fieldName2ColumnMap.get("env_id").toString(), -2), "id"); + $sql.addSelectColumn(plainSelect, $sql.fun("IFNULL", fieldName2ColumnMap.get("env_name").toString(), "'未配置'"), "name"); + $sql.addSelectColumn(plainSelect, $sql.fun("IFNULL", fieldName2ColumnMap.get("env_seq_no").toString(), 9999), "seqNo"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("app_module_id").toString(), "moduleId"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("app_module_name").toString(), "moduleName"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("app_module_abbr_name").toString(), "moduleAbbrName"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("type_id").toString(), "typeId"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("type_name").toString(), "typeName"); + $sql.addSelectColumn(plainSelect, fieldName2ColumnMap.get("type_label").toString(), "typeLabel"); + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("app_system_id").toString(), "=", appSystemId)); + if (appModuleId != null) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("app_module_id").toString(), "=", appModuleId)); + } else { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("app_module_id").toString(), "is not null")); + } + if (CollectionUtils.isNotEmpty(inspectStatusList)) { + $sql.addWhereExpression(plainSelect, $sql.exp(fieldName2ColumnMap.get("inspect_status").toString(), "in", inspectStatusList)); + } + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + @Override public String buildGetInspectResourceListByIdListSql(List idList, List selectFieldNameList) { try { -- Gitee