干燥机配套车间生产管理系统/云平台服务端
bsw215583320
2024-04-16 c2fccb01b972176dc3da5a497b5e904025e9e98d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package org.jeecg.modules.monitor.service.impl;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
 
import javax.annotation.Resource;
 
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.monitor.domain.RedisInfo;
import org.jeecg.modules.monitor.exception.RedisConnectException;
import org.jeecg.modules.monitor.service.RedisService;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.stereotype.Service;
 
import lombok.extern.slf4j.Slf4j;
 
/**
 * Redis 监控信息获取
 *
 * @Author MrBird
 */
@Service("redisService")
@Slf4j
public class RedisServiceImpl implements RedisService {
 
    @Resource
    private RedisConnectionFactory redisConnectionFactory;
 
    /**
     * redis信息
     */
    private static final String REDIS_MESSAGE = "3";
 
    /**
     * Redis详细信息
     */
    @Override
    public List<RedisInfo> getRedisInfo() throws RedisConnectException {
        Properties info = redisConnectionFactory.getConnection().info();
        List<RedisInfo> infoList = new ArrayList<>();
        RedisInfo redisInfo = null;
        for (Map.Entry<Object, Object> entry : info.entrySet()) {
            redisInfo = new RedisInfo();
            redisInfo.setKey(oConvertUtils.getString(entry.getKey()));
            redisInfo.setValue(oConvertUtils.getString(entry.getValue()));
            infoList.add(redisInfo);
        }
        return infoList;
    }
 
    @Override
    public Map<String, Object> getKeysSize() throws RedisConnectException {
        Long dbSize = redisConnectionFactory.getConnection().dbSize();
        Map<String, Object> map = new HashMap(5);
        map.put("create_time", System.currentTimeMillis());
        map.put("dbSize", dbSize);
 
        log.debug("--getKeysSize--: " + map.toString());
        return map;
    }
 
    @Override
    public Map<String, Object> getMemoryInfo() throws RedisConnectException {
        Map<String, Object> map = null;
        Properties info = redisConnectionFactory.getConnection().info();
        for (Map.Entry<Object, Object> entry : info.entrySet()) {
            String key = oConvertUtils.getString(entry.getKey());
            if ("used_memory".equals(key)) {
                map = new HashMap(5);
                map.put("used_memory", entry.getValue());
                map.put("create_time", System.currentTimeMillis());
            }
        }
        log.debug("--getMemoryInfo--: " + map.toString());
        return map;
    }
 
    /**
     * 查询redis信息for报表
     * @param type 1redis key数量 2 占用内存 3redis信息
     * @return
     * @throws RedisConnectException
     */
    @Override
    public Map<String, JSONArray> getMapForReport(String type)  throws RedisConnectException {
        Map<String,JSONArray> mapJson=new HashMap(5);
        JSONArray json = new JSONArray();
        if(REDIS_MESSAGE.equals(type)){
            List<RedisInfo> redisInfo = getRedisInfo();
            for(RedisInfo info:redisInfo){
                Map<String, Object> map= Maps.newHashMap();
                BeanMap beanMap = BeanMap.create(info);
                for (Object key : beanMap.keySet()) {
                    map.put(key+"", beanMap.get(key));
                }
                json.add(map);
            }
            mapJson.put("data",json);
            return mapJson;
        }
        int length = 5;
        for(int i = 0; i < length; i++){
            JSONObject jo = new JSONObject();
            Map<String, Object> map;
            if("1".equals(type)){
                map= getKeysSize();
                jo.put("value",map.get("dbSize"));
            }else{
                map = getMemoryInfo();
                Integer usedMemory = Integer.valueOf(map.get("used_memory").toString());
                jo.put("value",usedMemory/1000);
            }
            String createTime = DateUtil.formatTime(DateUtil.date((Long) map.get("create_time")-(4-i)*1000));
            jo.put("name",createTime);
            json.add(jo);
        }
        mapJson.put("data",json);
        return mapJson;
    }
}