a
554325746@qq.com
2019-07-15 e6c8834e2aa2f3c1f46e588d94ae8ec6aa6c8dec
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
package com.basic.security.manager;
 
import com.basic.security.dao.DatabaseManager;
import com.basic.security.model.RealTimeMetrics;
import com.basic.security.dao.SqliteManager;
 
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
 
public class RealTimeMetricsManager extends SqliteManager {
 
    public static int TotalEnters = 0;
    public static int TotalExits = 0;
 
    public static void saveRealTimeMetrics(Map<String, String> realTimeMetrics) {
        deleteDayBeforeYesterday();
        if (realTimeMetrics != null) {
            realTimeMetrics.put(RealTimeMetrics.id, UUID.randomUUID().toString());
            realTimeMetrics.put("table", RealTimeMetrics.table);
            realTimeMetrics.put(RealTimeMetrics.CreateDate, new Date().getTime()+"");
            save(realTimeMetrics);
            initRealTimeMetrics(realTimeMetrics);
        }
    }
 
    private static void deleteDayBeforeYesterday() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -2);
        DatabaseManager.execSQL("delete from "+RealTimeMetrics.table + " where " + RealTimeMetrics.CreateDate + " < '"+
                cal.getTime().getTime()
                +"'");
    }
 
    public static Map<String, String> getFirstRealTimeMetrics() {
        List<Map<String, String>> realTimeMetricsList = findList("select * from " +
                RealTimeMetrics.table + " order by " + RealTimeMetrics.Date
                + " asc limit 1"
        );
        if (realTimeMetricsList.size() > 0) {
            return realTimeMetricsList.get(0);
        }
        return null;
    }
 
    public static Map<String, String> getLastRealTimeMetrics() {
        List<Map<String, String>> realTimeMetricsList = findList("select * from " +
                RealTimeMetrics.table + " order by " + RealTimeMetrics.CreateDate
                + " desc limit 1"
        );
        if (realTimeMetricsList.size() > 0) {
            return realTimeMetricsList.get(0);
        }
        return null;
    }
 
    public static void initRealTimeMetrics(Map<String, String> realTimeMetrics) {
        if (realTimeMetrics == null) {
            realTimeMetrics = getLastRealTimeMetrics();
        }
        if (realTimeMetrics != null) {
            try {
                TotalEnters = Integer.parseInt(realTimeMetrics.get(RealTimeMetrics.TotalEnters));
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                TotalExits = Integer.parseInt(realTimeMetrics.get(RealTimeMetrics.TotalExits));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
 
    public static int getTotalEnters() {
        return TotalEnters;
    }
 
    public static int getTotalEnters(Date date) {
        int TotalEnters = 0;
        Map<String, String> realTimeMetrics = RealTimeMetricsManager.getFirstRealTimeMetricsSince(
                date
        );
        if (realTimeMetrics != null) {
            TotalEnters = Integer.parseInt(realTimeMetrics.get(RealTimeMetrics.TotalEnters));
        }
        return TotalEnters;
    }
 
    public static int getTotalExits() {
        return TotalExits;
    }
 
    public static int getTotalExits(Date date) {
        int TotalExits = 0;
        Map<String, String> realTimeMetrics = RealTimeMetricsManager.getFirstRealTimeMetricsSince(
                date
        );
        if (realTimeMetrics != null) {
            TotalExits = Integer.parseInt(realTimeMetrics.get(RealTimeMetrics.TotalExits));
        }
        return TotalExits;
    }
 
    public static Map<String, String> getFirstRealTimeMetricsSince(Date todayBeginDate) {
        List<Map<String, String>> realTimeMetricsList = findList("select * from " +
                RealTimeMetrics.table + " where "+RealTimeMetrics.Date+" <= '"+todayBeginDate.getTime()+"' order by " + RealTimeMetrics.TransmitTime
                + " desc limit 1"
        );
        if (realTimeMetricsList.size() > 0) {
            return realTimeMetricsList.get(0);
        }
        return null;
    }
 
    public static int getTestEnterPeopleCount() {
        int TotalEnters = 0;
        List<Map<String, String>> realTimeMetricsList = findList("select max("+RealTimeMetrics.TotalEnters+") as "+RealTimeMetrics.TotalEnters+" from " +
                RealTimeMetrics.table +" "
        );
        if (realTimeMetricsList.size() > 0) {
            try {
                TotalEnters = Integer.parseInt(realTimeMetricsList.get(0).get(RealTimeMetrics.TotalEnters));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return TotalEnters;
    }
 
    public static int getTestExitPeopleCount() {
        int TotalExits = 0;
        List<Map<String, String>> realTimeMetricsList = findList("select max("+RealTimeMetrics.TotalExits+") as "+RealTimeMetrics.TotalExits+" from " +
                RealTimeMetrics.table +" "
        );
        if (realTimeMetricsList.size() > 0) {
            try {
                TotalExits = Integer.parseInt(realTimeMetricsList.get(0).get(RealTimeMetrics.TotalExits));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return TotalExits;
    }
 
    public static void initTodayData() {
        Date date = new Date();
        date.setHours(1);
        date.setMinutes(0);
        int TotalEnters = 10;
        int TotalExits = 10;
        int increment = 10;
        DatabaseManager.execSQL("delete from "+RealTimeMetrics.class.getSimpleName());
        for (int i = 1; i <= 23; i++) {
            for (int j = 0; j < 59; j++) {
                date.setHours(i);
                date.setMinutes(j);
                TotalEnters += 2*increment;
                TotalExits += increment;
                Map<String, String> realTimeMetrics = new HashMap<>();
                realTimeMetrics.put(RealTimeMetrics.TotalEnters, TotalEnters+"");
                realTimeMetrics.put(RealTimeMetrics.TotalExits, TotalExits+"");
                realTimeMetrics.put(RealTimeMetrics.CreateDate, date.getTime()+"");
                realTimeMetrics.put(RealTimeMetrics.TransmitTime, date.getTime()+"");
                realTimeMetrics.put(RealTimeMetrics.Date, date.getTime()+"");
 
                RealTimeMetricsManager.saveRealTimeMetrics(realTimeMetrics);
            }
        }
    }
 
}