a
554325746@qq.com
2019-12-25 5ca83635d670aff1070f616a50d3fc43cccf2e29
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
package com.basic.security.fragment;
 
import android.os.SystemClock;
import android.widget.TextView;
 
import com.basic.security.count.R;
import com.basic.security.activity.MainActivity;
import com.basic.security.base.BaseApplication;
import com.basic.security.base.BaseFragment;
import com.basic.security.manager.ClearBeginManager;
import com.basic.security.manager.HomeManager;
import com.basic.security.manager.RealTimeMetricsManager;
 
import org.androidannotations.annotations.AfterInject;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.Click;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.UiThread;
import org.androidannotations.annotations.ViewById;
 
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
 
import com.basic.security.manager.TodayBeginManager;
import com.basic.security.widget.SuitLines;
import com.basic.security.utils.Unit;
 
@EFragment(R.layout.fragment_home)
public class HomeFragment extends BaseFragment {
 
    @ViewById
    public TextView todayEnters;
    @ViewById
    public TextView todayExits;
    @ViewById
    public TextView todayRemaining;
    @ViewById
    public TextView entersSinceLastClear;
    @ViewById
    public TextView exitsSinceLastClear;
    @ViewById
    public SuitLines suitLines;
 
    int peopleCount = 1;
    int peopleCountAdd = 100;
 
    @Override
    public void show() {
        refresh();
    }
 
    @AfterViews
    public void afterViews() {
        initDataForLines();
    }
 
 
    @Background
    public void initDataForLinesInterval() {
        while (true) {
            if (System.currentTimeMillis() - initDataForLinesLockUpdateTime > 60*1000) {
                ClearBeginManager.initClearBegin();
                ClearBeginManager.reset();
                TodayBeginManager.initTodayBegin();
 
                ((MainActivity) BaseApplication.getApplication().activity).fragment_home.refresh();
            }
            SystemClock.sleep(20*1000);
        }
    }
 
    Lock initDataForLinesLock = new ReentrantLock();
    long initDataForLinesLockUpdateTime = System.currentTimeMillis();
 
    @Background
    public void initDataForLines() {
        initDataForLinesLock.lock();
        initDataForLinesLockUpdateTime = System.currentTimeMillis();
        List<Unit> lines = new ArrayList<>();
        int currentHour = new Date().getHours();
        Date dateStartHour7 = new Date();
        dateStartHour7.setHours(7);
        dateStartHour7.setMinutes(0);
        dateStartHour7.setSeconds(0);
        boolean lastAdd = false;
        for (int i = 7; i <= 19; i++) {
            dateStartHour7.setHours(i);
            dateStartHour7.setMinutes(0);
            for (int j = 0; j <= 60; j=j+5) {
                if (j == 60) {
                    break;
                }
                dateStartHour7.setHours(i);
                dateStartHour7.setMinutes(j);
                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
                String hourStr = sdf.format(dateStartHour7);
                if (System.currentTimeMillis() < dateStartHour7.getTime()) {
                    if (!lastAdd) {
                        lastAdd = true;
                        peopleCount = peopleCount + peopleCountAdd;
                        Date currentDate = new Date();
                        int remaining = Integer.parseInt(HomeManager.getTodayRemaining(currentDate));
                        lines.add(new Unit(remaining, sdf.format(currentDate)));
                    }
                    lines.add(new Unit(0, hourStr, false));
                } else {
                    peopleCount = peopleCount + peopleCountAdd;
                    int remaining = Integer.parseInt(HomeManager.getTodayRemaining(dateStartHour7));
                    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                    lines.add(new Unit(remaining, hourStr));
                }
            }
        }
        refreshLines(lines);
        initDataForLinesLock.unlock();
    }
 
    @UiThread
    public void refreshLines(List<Unit> lines) {
        suitLines.feedWithAnim(lines);
    }
 
    @UiThread
    public void refresh() {
        initDataForLines();
        peopleCount = 1;
        Random rand = new Random();
 
        peopleCountAdd = rand.nextInt(50);
        if (peopleCountAdd == 0) {
            peopleCountAdd = 10;
        }
 
        todayEnters.setText(HomeManager.getTodayEnters());
        todayExits.setText(HomeManager.getTodayExits());
        todayRemaining.setText(HomeManager.getTodayRemaining());
        entersSinceLastClear.setText(HomeManager.getEntersSinceLastClear());
        exitsSinceLastClear.setText(HomeManager.getExitsSinceLastClear());
    }
 
    @Click
    @Background
    public void clearBegin() {
        initDataForLines();
        ClearBeginManager.saveClearBegin(RealTimeMetricsManager.getLastRealTimeMetrics());
        refresh();
    }
 
}