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 63fa60d8f378b9f24fb3b05cfb8d55a4406318fb..c1f16b5898b0ac237b745f93565ab52952cf04d8 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 3f30cae1ba58c5d78cc2d3e6356bdff517de0972..e41214f71fb2e1cc904f02fadde2f6a2d0758dfe 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 {