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/service/serviceImpl/CountServiceImpl.java |   93 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 88 insertions(+), 5 deletions(-)

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 7bbcf97..80c0d12 100644
--- a/src/main/java/com/cloud/count/service/serviceImpl/CountServiceImpl.java
+++ b/src/main/java/com/cloud/count/service/serviceImpl/CountServiceImpl.java
@@ -4,6 +4,7 @@
 import com.cloud.count.model.Config;
 import com.cloud.count.model.People;
 import com.cloud.count.service.CountService;
+import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import java.text.ParseException;
@@ -31,6 +32,19 @@
      */
     public static volatile int totalExits = 0;
     /**
+     * 缁熻璁惧鍙粺璁$殑鏈�澶ф暟閲�
+     */
+    private static final int MAXCOUNT = 65535;
+    /**
+     * 缁熻璁惧鍗曡瘝鍙粺璁$殑鏈�澶ф暟閲�
+     */
+    private static final int MAXCOUNTONCE = 100;
+    /**
+     * 璁$畻鐨勮繘鍏ヤ腑闂村彉閲�
+     */
+    private static volatile int tmpEnter = 0;
+    private static volatile int tmpExit = 0;
+    /**
      * 瀹炴椂璁$畻鏃朵綔涓鸿绠楃殑杩涙牎浜烘暟鍩哄噯鍊�
      */
     public static volatile int realtimeBaseEnters = 0;
@@ -51,6 +65,36 @@
     private static String[] time2={"00","05","10","15","20","25",
             "30","35","40","45","50","55"};
     public static volatile  int countType = 0;
+
+    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;
+        if(tmpEnter <= count){
+            inCre = count - tmpEnter;
+        } else {
+            if(tmpEnter >= (MAXCOUNT-MAXCOUNTONCE) && count <= MAXCOUNT) {
+                inCre = count + MAXCOUNT - tmpEnter;
+            }
+        }
+        tmpEnter = count;
+        return inCre;
+    }
+
+    public static int addExit(int count) {
+        int inCre = 0;
+        if(tmpExit <= count){
+            inCre = count - tmpExit;
+        } else {
+            if(tmpExit >= (MAXCOUNT-MAXCOUNTONCE) && count <= MAXCOUNT) {
+                inCre = count + MAXCOUNT - tmpExit;
+            }
+        }
+        tmpExit = count;
+        return inCre;
+    }
 
     /**
      * 缁熻鍙傛暟鍒濆鍖栵紝鐢ㄤ簬缁熻璁惧閲嶅惎鎯呭喌(鍙戦�佺殑绗竴鏉℃姤鏂�)
@@ -82,6 +126,15 @@
         Map<String,Object> map = new HashMap<>(16);
         // 鑾峰彇涓�浜涘垵濮嬪��
         Config config = dao.getConfig();
+        if(config==null) {
+            config = new Config();
+            config.setCor(1);
+            config.setPassword("123456");
+            config.setCountStartTime("06:00");
+            config.setInit(1);
+            config.setInitialPeople(60);
+            config.setInitialTime("00:00");
+        }
         // 鍒濆浜烘暟鍊�
         int initialPeople = (config.getInit()==1)?config.getInitialPeople():0;
         // 鏍℃浜烘暟鍊�
@@ -100,6 +153,10 @@
         if (now>start-1 && now<start+11){//琛ㄧず浠庤缃殑鍒濆鍖栨椂闂村紑濮嬮噸鏂拌鏁�
            baseEnters = totalEnters;
            baseExits = totalExits;
+
+           dayAllMap = new HashMap<>();
+           dayInMap = new HashMap<>();
+           dayOutMap = new HashMap<>();
        }
 
         // 浠庡紑濮嬭绠楁椂闂村埌鐜板湪鐨勮繘鏍℃暟
@@ -119,10 +176,10 @@
         // 寮�濮嬬粺璁℃椂闂� 鍒嗗紑 濡�06:40
         String[] times = config.getCountStartTime().split(":");
         // 鍒濆璁剧疆鏃堕棿鍒嗗紑
-        String[] times2 = initialTime.split(":");
+        String[] times2 = initialTime.split(":");//鍒濆鍖栨椂闂�06:00
         // 璁剧疆鏃堕棿鍥捐〃鐨勯」
-        int charat = Integer.parseInt(times[0]);
-        int mm =Integer.parseInt(times2[0])-charat;
+        int charat = Integer.parseInt(times[0]);//缁熻寮�濮嬫椂闂�06:00
+        int mm =Integer.parseInt(times2[0])-charat;//鍒嗛挓鏄�00
         // 璁剧疆鏃堕棿鍥捐〃鐨勯」锛屾瘮濡傚浘琛ㄧ殑寮�濮嬬粺璁℃椂闂翠负06:40锛屽垯time_set灏辨槸[06:40,07:40,08:40,09:40,10:40,11:40,12:40,]
         for(int i=0;i<minute;i++){
             //time_set[i]=time[charat]+":"+times[1];
@@ -139,9 +196,35 @@
                 people[i]=initialPeople;
                 set = hourset; //杩欒浠g爜寰堥噸瑕侊紝琛ㄧず閲嶆柊缁熻
             }else {
-                //System.out.println("绗�"+i+"涓皬鏃剁殑鏁版嵁:");
+
                // people[i] = dao.countInPeople(set-60,hourset+3599)- dao.countOutPeople(set-60,hourset+3599)+initialPeople+correctionPeople;
-                people[i] = getDataValue(map,countType,set-60,hourset+1799,initialPeople,correctionPeople);
+                //姣忔閮藉疄鏃惰绠楋紝浼氶噸澶嶈绠楀巻鍙叉暟鎹�
+//                people[i] = getDataValue(map,countType,set-60,hourset+1799,initialPeople,correctionPeople);
+                //閲囩敤缂撳瓨鐨勬柟寮忥紝绠楄繃鐨勫氨涓嶅啀璁$畻浜�
+                if(countType == 1){
+                    if(dayInMap.containsKey(i) && minute >1 && (i != minute-1)){
+                        people[i] = dayInMap.get(i);
+                    }else{
+                        people[i] = getDataValue(map,countType,set-60,hourset+1799,initialPeople,correctionPeople);
+                        dayInMap.put(i, people[i]);
+                    }
+                } else if(countType == 0) {
+                    if(dayAllMap.containsKey(i) && minute >1 && (i != minute-1)){
+                        people[i] = dayAllMap.get(i);
+                    }else{
+                        people[i] = getDataValue(map,countType,set-60,hourset+1799,initialPeople,correctionPeople);
+                        dayAllMap.put(i, people[i]);
+                    }
+                } else {
+                    if(dayOutMap.containsKey(i) && minute >1 && (i != minute-1)){
+                        people[i] = dayOutMap.get(i);
+                    }else{
+                        people[i] = getDataValue(map,countType,set-60,hourset+1799,initialPeople,correctionPeople);
+                        dayOutMap.put(i, people[i]);
+                    }
+                }
+
+
             }
             hourset +=1800;
         }

--
Gitblit v1.8.0