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 de5bb5a6b30716b52807961b8127f86cef3d97d0..894c9c3b1c11db841d8b5b4c7f63c387b38e0886 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 @@ -129,8 +129,8 @@ public interface ResourceBuildSqlService { String buildGetAppEnvCountMapByAppSystemIdGroupByAppModuleIdSql(Long appSystemId); -// String buildGetResourceCountByDynamicConditionSql(); -// String buildGetResourceIdListByDynamicConditionSql(); + String buildGetResourceCountByDynamicConditionSql(ResourceSearchVo searchVo); +// String buildGetResourceIdListByDynamicConditionSql(ResourceSearchVo searchVo); String buildGetAppResourceCountSql(ResourceSearchVo searchVo); 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 5976866c97a2a20d621c66ab8f645bb13df9c949..d754c43439e19c781ccc02c6d2431c7b77856a77 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 @@ -17,6 +17,7 @@ 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.cmdb.crossover.IResourceBuildSqlCrossoverService; @@ -24,6 +25,7 @@ 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.ResourceConditionConfigVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; import neatlogic.framework.cmdb.dto.resourcecenter.config.*; @@ -1004,6 +1006,53 @@ public class ResourceBuildSqlServiceImpl implements ResourceBuildSqlService, IRe return null; } + @Override + public String buildGetResourceCountByDynamicConditionSql(ResourceSearchVo searchVo) { + try { + ResourceEntityVo resourceEntityVo = resourceEntityMapper.getResourceEntityByName("scence_ipobject_detail"); + ResourceEntityConfigVo config = getResourceEntityConfigVo(resourceEntityVo); + List selectItemFieldNameList = new ArrayList<>(); + List filterItemFieldNameList = new ArrayList<>(); + filterItemFieldNameList.add("id"); + ResourceQueryCriteriaVo queryCriteriaVo = new ResourceQueryCriteriaVo(searchVo); + List filterItemFieldNameList1 = getFilterItemFieldNameList(queryCriteriaVo); + System.out.println("filterItemFieldNameList1 = " + filterItemFieldNameList1); + filterItemFieldNameList.addAll(filterItemFieldNameList1); + JSONObject conditionConfigObj = new JSONObject(); + conditionConfigObj.put("conditionGroupList", searchVo.getConditionGroupList()); + conditionConfigObj.put("conditionGroupRelList", searchVo.getConditionGroupRelList()); + ResourceConditionConfigVo resourceConditionConfigVo = conditionConfigObj.toJavaObject(ResourceConditionConfigVo.class); + List filterItemFieldNameList2 = resourceConditionConfigVo.getFilterItemFieldNameList(); + System.out.println("filterItemFieldNameList2 = " + filterItemFieldNameList2); + filterItemFieldNameList.addAll(filterItemFieldNameList2); + config.setSelectItemFieldNameList(selectItemFieldNameList); + config.setFilterItemFieldNameList(filterItemFieldNameList); + Map fieldName2ColumnMap = new HashMap<>(); + PlainSelect plainSelect = getPlainSelect(config, fieldName2ColumnMap); + $sql.addSelectColumn(plainSelect, $sql.fun("count", fieldName2ColumnMap.get("id").toString()).withDistinct(true)); + /* + + 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(fieldName2ColumnMap.get("name").toString(), "like", keyword), + "or", $sql.exp(fieldName2ColumnMap.get("ip").toString(), "like", keyword), + ")") + ); + } + SqlVo sqlVo = getSqlVoForResource(queryCriteriaVo, fieldName2ColumnMap); + resourceConditionConfigVo.buildConditionSqlVo(sqlVo, fieldName2ColumnMap); + $sql.addSql(plainSelect, sqlVo); + return plainSelect.toString(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + @Override public String buildGetAppResourceCountSql(ResourceSearchVo searchVo) { try {