From 2f3e3ec2c0cad87eab8a6d170caffc06a4e11c2d Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期四, 07 十一月 2019 09:55:24 +0800
Subject: [PATCH] set getData 1 sec and add day task

---
 src/main/java/com/cloud/count/listener/CountInitTask.java               |    9 ++
 src/main/resources/index.html                                           |    4 
 src/main/java/com/cloud/count/service/serviceImpl/CountServiceImpl.java |    6 +-
 src/main/java/com/cloud/count/listener/CountTaskListener.java           |   16 +++++
 src/main/java/com/cloud/count/listener/CountListener.java               |   32 ++++++++++
 src/main/java/com/cloud/count/listener/TimerManager.java                |   34 +++++++++++
 src/main/java/com/cloud/count/listener/CountThread.java                 |   43 +++-----------
 7 files changed, 103 insertions(+), 41 deletions(-)

diff --git a/src/main/java/com/cloud/count/listener/CountInitTask.java b/src/main/java/com/cloud/count/listener/CountInitTask.java
index 0e11c69..6c01fe1 100644
--- a/src/main/java/com/cloud/count/listener/CountInitTask.java
+++ b/src/main/java/com/cloud/count/listener/CountInitTask.java
@@ -1,10 +1,17 @@
 package com.cloud.count.listener;
 
+import com.cloud.count.service.serviceImpl.CountServiceImpl;
+
+import java.util.HashMap;
 import java.util.TimerTask;
 
 public class CountInitTask extends TimerTask {
     @Override
     public void run() {
-
+        CountServiceImpl.baseEnters = CountServiceImpl.totalEnters;
+        CountServiceImpl.baseExits = CountServiceImpl.totalExits;
+        CountServiceImpl.dayAllMap = new HashMap<>();
+        CountServiceImpl.dayInMap = new HashMap<>();
+        CountServiceImpl.dayOutMap = new HashMap<>();
     }
 }
diff --git a/src/main/java/com/cloud/count/listener/CountListener.java b/src/main/java/com/cloud/count/listener/CountListener.java
index 6a12900..a59e18e 100644
--- a/src/main/java/com/cloud/count/listener/CountListener.java
+++ b/src/main/java/com/cloud/count/listener/CountListener.java
@@ -25,6 +25,10 @@
 public class CountListener implements ApplicationListener<ContextRefreshedEvent> {
     static ServerSocket server;
     static Integer port = 2010;
+    static boolean isServerReboot = false;
+
+    @Autowired
+    private CountDao dao;
 
     @Override
     public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
@@ -32,7 +36,35 @@
         if(contextRefreshedEvent.getApplicationContext().getParent() !=null){
             return;
         }
+        op: if(!isServerReboot){
+            isServerReboot = true;
+            CountState state = dao.getCountState();//鎭㈠缁熻鐘舵��
+            Date nowDate = new Date();
+            Date BaseDate = new Date(state.getBaseTime()*1000L);
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            if(!sdf.format(nowDate).equals(sdf.format(BaseDate))){//鍘嗗彶鏁版嵁涓嶇瓑浜庡綋澶�
+//                CountServiceImpl.baseEnters  = people.getEnters();
+//                CountServiceImpl.baseExits = people.getExits();
+//                CountServiceImpl.realtimeBaseEnters = people.getEnters();
+//                CountServiceImpl.realtimebBaseExits =  people.getExits();
+//                CountServiceImpl.errorCount = 0;
 
+                People initPeople = new People();
+                initPeople.setEnters(0);
+                initPeople.setExits(0);
+                CountServiceImpl.initCountArgs(initPeople);
+                CountServiceImpl.errorCount = 0;
+                break op;
+            }
+            //杩樺師鐘舵��
+            CountServiceImpl.baseEnters  = state.getBaseEnters();
+            CountServiceImpl.baseExits = state.getBaseExits();
+            CountServiceImpl.totalEnters = state.getTotalEnters();
+            CountServiceImpl.totalExits = state.getTotalExits();
+            CountServiceImpl.realtimeBaseEnters = state.getRealtimeBaseEnters();
+            CountServiceImpl.realtimebBaseExits = state.getRealtimeBaseExits();
+            CountServiceImpl.errorCount = state.getErrorCount();
+        }
         new Thread(new Runnable() {
             @Override
             public void run() {
diff --git a/src/main/java/com/cloud/count/listener/CountTaskListener.java b/src/main/java/com/cloud/count/listener/CountTaskListener.java
index bfcdcfb..11b7bd8 100644
--- a/src/main/java/com/cloud/count/listener/CountTaskListener.java
+++ b/src/main/java/com/cloud/count/listener/CountTaskListener.java
@@ -1,4 +1,18 @@
 package com.cloud.count.listener;
 
-public class CountTaskListener {
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+@Component
+public class CountTaskListener implements ServletContextListener {
+    @Override
+    public void contextInitialized(ServletContextEvent servletContextEvent) {
+        new TimerManager();
+    }
+
+    @Override
+    public void contextDestroyed(ServletContextEvent servletContextEvent) {
+
+    }
 }
diff --git a/src/main/java/com/cloud/count/listener/CountThread.java b/src/main/java/com/cloud/count/listener/CountThread.java
index abd3000..2cabd09 100644
--- a/src/main/java/com/cloud/count/listener/CountThread.java
+++ b/src/main/java/com/cloud/count/listener/CountThread.java
@@ -14,7 +14,7 @@
 
 public class CountThread implements Runnable {
     private Logger logger = LoggerFactory.getLogger(this.getClass());
-    static boolean isServerReboot = false;
+
 
     private CountDao dao;
 
@@ -36,15 +36,16 @@
         try{
             iReader = new BufferedReader(new InputStreamReader(client.getInputStream(), encoding));
             iWriter = new BufferedWriter(new OutputStreamWriter(client.getOutputStream(), encoding));
-
+            String msgStr = "";
+            String xmlStr = "";
+            People people = null;
             while (true) {
-                String str = iReader.readLine();
+                msgStr = iReader.readLine();
                 sendAck(iWriter);
 
-                String xmlStr = XmlUtil.toXmlStr(str);
+                xmlStr = XmlUtil.toXmlStr(msgStr);
 
                 // 濡傛灉瀛樺湪TotalEnters銆傚垯璇佹槑杩斿洖鐨勬槸瀹炴椂鏁版嵁鐨剎ml
-                People people = null;
                 if(xmlStr.indexOf("TotalEnters")>-1){
                     people = XmlUtil.realTimeXmlToPeople(xmlStr);
                     int inCreEnter = CountServiceImpl.addEnter(people.getEnters());//杩涘叆浜烘暟澧為噺
@@ -55,36 +56,12 @@
                     people.setEnters(CountServiceImpl.totalEnters);//灏嗙疮鍔犲悗鐨勬暟閲忓瓨鍒版暟鎹簱涓�
                     people.setExits(CountServiceImpl.totalExits);
                     boolean resultB = dao.savePeople(people);
-                    System.out.println("totalEnters:"+CountServiceImpl.totalEnters);
 
                     //鎬昏繘鍏ユ暟閲忔垨鑰呮�诲嚭鍘绘暟閲忥紝涓嶄竴瀹氬摢涓�涓厛鍒�2瀛楄妭int鐨勪笂闄�65535
 //                                if( CountServiceImpl.totalEnters < CountServiceImpl.baseEnters){
 //                                    //琛ㄧず缁熻璁惧閲嶆柊鍚姩浜�,缁熻鍙傛暟褰掗浂
 //                                    CountServiceImpl.initCountArgs(people);
 //                                }
-                    op: if(!isServerReboot){
-                        isServerReboot = true;
-                        CountState state = dao.getCountState();//鎭㈠缁熻鐘舵��
-                        Date nowDate = new Date();
-                        Date BaseDate = new Date(state.getBaseTime()*1000L);
-                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                        if(!sdf.format(nowDate).equals(sdf.format(BaseDate))){//鍘嗗彶鏁版嵁涓嶇瓑浜庡綋澶�
-                            CountServiceImpl.baseEnters  = people.getEnters();
-                            CountServiceImpl.baseExits = people.getExits();
-                            CountServiceImpl.realtimeBaseEnters = people.getEnters();
-                            CountServiceImpl.realtimebBaseExits =  people.getExits();
-                            CountServiceImpl.errorCount = 0;
-                            break op;
-                        }
-                        //杩樺師鐘舵��
-                        CountServiceImpl.baseEnters  = state.getBaseEnters();
-                        CountServiceImpl.baseExits = state.getBaseExits();
-                        CountServiceImpl.totalEnters = state.getTotalEnters();
-                        CountServiceImpl.totalExits = state.getTotalExits();
-                        CountServiceImpl.realtimeBaseEnters = state.getRealtimeBaseEnters();
-                        CountServiceImpl.realtimebBaseExits = state.getRealtimeBaseExits();
-                        CountServiceImpl.errorCount = state.getErrorCount();
-                    }
 
                     //鎬昏繘鍏ヤ汉鏁板皬浜庢�诲嚭鍘荤殑浜烘暟锛岃〃绀虹粺璁¤澶囧湪鏀惧鏃堕棿锛堝嚭鍘荤殑浜烘暟澶т簬杩涘叆鐨勪汉鏁帮級閲嶅惎浜�
                     if(CountServiceImpl.totalEnters < CountServiceImpl.totalExits){
@@ -112,8 +89,6 @@
                 }
             }
 
-        }catch (IOException ex){
-
         }catch (Exception e){
             System.out.println("exception:"+e.getMessage());
         }
@@ -135,13 +110,13 @@
     public static void sendAck(BufferedWriter iWriter) {
         String statusLine = "HTTP/1.0 200 OK"+CRLF;
         String contentTypeLine = "Content-type: text/html"+CRLF ;
-        String connectionClose = "Connection: Keep-Alive"+CRLF ;
-        String contentLengthLine = "Content-Length: 0"+CRLF +CRLF;;
+        String connectionAlive = "Connection: Keep-Alive"+CRLF ;
+        String contentLengthLine = "Content-Length: 0"+CRLF +CRLF;
 
         try {
             iWriter.write(statusLine);
             iWriter.write(contentTypeLine);
-            iWriter.write(connectionClose);
+            iWriter.write(connectionAlive);
             iWriter.write(contentLengthLine);
             iWriter.flush();
         } catch (IOException ex) {
diff --git a/src/main/java/com/cloud/count/listener/TimerManager.java b/src/main/java/com/cloud/count/listener/TimerManager.java
index c6bfbd6..3e77c7b 100644
--- a/src/main/java/com/cloud/count/listener/TimerManager.java
+++ b/src/main/java/com/cloud/count/listener/TimerManager.java
@@ -1,4 +1,38 @@
 package com.cloud.count.listener;
 
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Timer;
+
 public class TimerManager {
+
+    private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
+
+    public TimerManager() {
+        Calendar calendar = Calendar.getInstance();
+        /*** 瀹氬埗姣忔棩6:00鎵ц鏂规硶 ***/
+        calendar.set(Calendar.HOUR_OF_DAY, 6);
+        calendar.set(Calendar.MINUTE, 0);
+        calendar.set(Calendar.SECOND, 0);
+        Date date=calendar.getTime(); //绗竴娆℃墽琛屽畾鏃朵换鍔$殑鏃堕棿
+        System.out.println(date);
+        System.out.println("before 鏂规硶姣旇緝锛�"+date.before(new Date()));
+        //濡傛灉绗竴娆℃墽琛屽畾鏃朵换鍔$殑鏃堕棿 灏忎簬 褰撳墠鐨勬椂闂�
+        //姝ゆ椂瑕佸湪 绗竴娆℃墽琛屽畾鏃朵换鍔$殑鏃堕棿 鍔犱竴澶╋紝浠ヤ究姝や换鍔″湪涓嬩釜鏃堕棿鐐规墽琛屻�傚鏋滀笉鍔犱竴澶╋紝浠诲姟浼氱珛鍗虫墽琛屻�傚惊鐜墽琛岀殑鍛ㄦ湡鍒欎互褰撳墠鏃堕棿涓哄噯
+        if (date.before(new Date())) {
+            date = this.addDay(date, 1);
+            System.out.println(date);
+        }
+        Timer timer = new Timer();
+        CountInitTask task = new CountInitTask();
+
+        timer.schedule(task, date, PERIOD_DAY);
+    }
+
+    public Date addDay(Date date, int num) {
+        Calendar startDT = Calendar.getInstance();
+        startDT.setTime(date);
+        startDT.add(Calendar.DAY_OF_MONTH, num);
+        return startDT.getTime();
+    }
 }
diff --git a/src/main/java/com/cloud/count/service/serviceImpl/CountServiceImpl.java b/src/main/java/com/cloud/count/service/serviceImpl/CountServiceImpl.java
index cfb9185..80c0d12 100644
--- a/src/main/java/com/cloud/count/service/serviceImpl/CountServiceImpl.java
+++ b/src/main/java/com/cloud/count/service/serviceImpl/CountServiceImpl.java
@@ -66,9 +66,9 @@
             "30","35","40","45","50","55"};
     public static volatile  int countType = 0;
 
-    private static Map<Integer,Integer> dayAllMap = new HashMap<>();
-    private static Map<Integer,Integer> dayOutMap = new HashMap<>();
-    private static Map<Integer,Integer> dayInMap = new HashMap<>();
+    public static Map<Integer,Integer> dayAllMap = new HashMap<>();
+    public static Map<Integer,Integer> dayOutMap = new HashMap<>();
+    public static Map<Integer,Integer> dayInMap = new HashMap<>();
 
     public static int addEnter(int count) {
         int inCre = 0;
diff --git a/src/main/resources/index.html b/src/main/resources/index.html
index abf7c33..da646c6 100644
--- a/src/main/resources/index.html
+++ b/src/main/resources/index.html
@@ -290,8 +290,8 @@
 
     $(function () {
         startRequest();
-        setInterval("startRequest()", 3000 );
-        setInterval("nowPeople()", 3000);
+        setInterval("startRequest()", 1000 );
+        setInterval("nowPeople()", 1000);
     });
     function update() {
         $.messager.confirm('娑堟伅','纭畾杩涜鍩虹璁剧疆鍚楋紵',function(r){

--
Gitblit v1.8.0