diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoController.java index 152a710..b9c684f 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoController.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.core.apiservice.controller; +import cn.estsh.i3plus.platform.common.tool.HttpClientTool; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.platform.plugin.elasticsearch.ElasticSearchPack; import cn.estsh.i3plus.platform.plugin.elasticsearch.ElasticSearchTool; @@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; import java.util.List; /** diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java index 3b446dd..852cc6b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java @@ -13,8 +13,10 @@ import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ResultBean; +import com.google.common.collect.Maps; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections.CollectionUtils; import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,10 +26,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * @Description : Dashboard服务 @@ -59,6 +58,8 @@ public class SysDashboardController extends CoreBaseController { public static final int TIMEOUT = 60 * 60; + + /** * 获取基础数据 * @return 处理结果 @@ -148,6 +149,21 @@ public class SysDashboardController extends CoreBaseController { redisCore.putHashMap(redisKey, dashboardData, TIMEOUT); } + + if(dashboardData != null && dashboardData.size() > 0){ + Map mapSortDesc = new TreeMap<>(new TreeMap<>(new Comparator() { + public int compare(Object o1, Object o2) { + //如果有空值,直接返回0 + if (o1 == null || o2 == null) + return 0; + + return String.valueOf(o2).compareTo(String.valueOf(o1)); + } + })); + mapSortDesc.putAll(dashboardData); + dashboardData = mapSortDesc; + } + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultMap(dashboardData); } catch (ImppBusiException busExcep) { @@ -172,6 +188,7 @@ public class SysDashboardController extends CoreBaseController { Map dashboardData = redisCore.getHashMap(redisKey); LOGGER.info("getLevelLogNumredisKey:{},dashboardData:{}",redisKey,dashboardData); + dashboardData = null; if (dashboardData == null || dashboardData.size() == 0) { // 获取前10分钟时间,日志数量 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SysLogElasticSearchService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SysLogElasticSearchService.java index d7fe66b..19270c8 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SysLogElasticSearchService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SysLogElasticSearchService.java @@ -2,14 +2,22 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.base; import cn.estsh.i3plus.core.api.iservice.base.ISysLogService; import cn.estsh.i3plus.core.apiservice.util.NoSqlPack; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.platform.plugin.elasticsearch.ElasticSearchPack; import cn.estsh.i3plus.platform.plugin.elasticsearch.ElasticSearchTool; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.platform.platbean.SysLogException; import cn.estsh.i3plus.pojo.platform.platbean.SysLogOperate; import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem; import cn.estsh.i3plus.pojo.platform.platbean.SysLogTaskTime; import cn.estsh.impp.framework.boot.util.ImppLog; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.search.aggregations.Aggregation; +import org.elasticsearch.search.aggregations.bucket.terms.ParsedTerms; +import org.elasticsearch.search.aggregations.bucket.terms.Terms; +import org.elasticsearch.search.aggregations.metrics.ParsedAvg; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -18,6 +26,7 @@ import org.springframework.stereotype.Service; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * @Description : @@ -144,12 +153,48 @@ public class SysLogElasticSearchService implements ISysLogService { @Override public Map querySysLogSystemAvgExecuteTime(String startTime, String endTime) { Map resultData = new LinkedHashMap(); + ElasticSearchPack pack = ElasticSearchPack.imppBuild(SysLogSystem.class); + pack.pager(CommonConstWords.getDefaultPager()); + pack.andStringDateTimeBetween("createDatetime",startTime,endTime); + pack.group("createDatetime").avg("executeTime").buildAggregation(); + Map aggregationMap = ElasticSearchTool.searchAggregationMap(pack); + + ParsedTerms parsedTerms = (ParsedTerms)aggregationMap.get("group_createDatetime"); + if(Objects.nonNull(parsedTerms)){ + for (Terms.Bucket bucket : parsedTerms.getBuckets()) { + try { + String key = bucket.getKeyAsString(); + Double value = ((ParsedAvg) bucket.getAggregations().get("avg_executeTime")).getValue(); + resultData.put(key,value.intValue()); + }catch (Exception e){ + } + } + } + return resultData; } @Override public Map querySysLogSystemByLevel(String startTime, String endTime) { Map resultData = new LinkedHashMap(); + ElasticSearchPack pack = ElasticSearchPack.imppBuild(SysLogSystem.class); + pack.pager(CommonConstWords.getDefaultPager()); + pack.andStringDateTimeBetween("createDatetime",startTime,endTime); + pack.group("logLevel").count("id").buildAggregation(); + Map aggregationMap = ElasticSearchTool.searchAggregationMap(pack); + + + ParsedTerms parsedTerms = (ParsedTerms)aggregationMap.get("group_logLevel"); + if(Objects.nonNull(parsedTerms)){ + for (Terms.Bucket bucket : parsedTerms.getBuckets()) { + try { + String key = bucket.getKeyAsString(); + resultData.put(ImppEnumUtil.LOG_LEVEL.valueOfName(Integer.parseInt(key)),bucket.getDocCount()); + }catch (Exception e){ + } + } + } + return resultData; }