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