From d79e5d857f467b37652145577fe9a2c4065a77c5 Mon Sep 17 00:00:00 2001
From: 沈斌 <bluelazysb@hotmail.com>
Date: Mon, 08 Jan 2018 16:27:09 +0800
Subject: [PATCH] updated

---
 test.js        |   16 +++++--
 config.js      |    1 
 create_data.js |   79 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 91 insertions(+), 5 deletions(-)

diff --git a/config.js b/config.js
index 34cb424..4b0962d 100644
--- a/config.js
+++ b/config.js
@@ -1,6 +1,7 @@
 var config = {
 
     mysql: {
+        connectionLimit : 20,
         host : "47.96.26.152",
         database: "monitor",
         user : "root",
diff --git a/create_data.js b/create_data.js
new file mode 100644
index 0000000..10ac6b3
--- /dev/null
+++ b/create_data.js
@@ -0,0 +1,79 @@
+var mysql = require('mysql');
+var moment = require('moment');
+var config = require('./config');
+
+var pool = mysql.createPool(config.mysql);
+
+
+var start_date = moment().add(-1, 'days').format('YYYY-MM-DD');//'2017-11-11';
+var end_date   = moment().add(-1, 'days').format('YYYY-MM-DD');//'2018-01-03';
+
+console.log(moment().format('YYYY-MM-DD HH:mm:ss') + " => sync minutely data from " + start_date + " to " + end_date);
+
+var days = moment(end_date).diff(moment(start_date), 'days');
+for (var i = 0; i <= days; i++) {
+    var date_day = moment(start_date).add(i, "days");
+    for(var j = 0; j < 24; j++) {
+        var date_hour = moment(date_day).add(j, "hours").format("YYYY-MM-DD HH:00:00");
+        for(var k = 0; k < 60; k++) {
+            var start = moment(date_hour).add(k, 'minutes').format("YYYY-MM-DD HH:mm:00");
+            var end = moment(date_hour).add(k+1, 'minutes').format("YYYY-MM-DD HH:mm:00");
+            //console.log(start + " : " + end);
+
+            fetchDeviceMinutelyData(start, end);
+        }
+    }
+}
+
+function fetchDeviceMinutelyData(start, end) {
+    pool.getConnection(function (err, connection) {
+        var devices = {};
+        var sql = "SELECT mac, mac_key, avg(mac_value) as avg_val, min(mac_value) as min_val, max(mac_value) as max_val FROM history WHERE time >= '" + start + "' AND time < '" + end + "' GROUP BY mac, mac_key ORDER BY mac";
+        //console.log(sql);
+        connection.query(sql, function (error, results, fields) {
+            if (error) throw error;
+
+            results.forEach(function(data) {
+                var mac = data.mac;
+                var key = data.mac_key;
+                var val = data.avg_val;
+                if(devices[mac] == null) {
+                    devices[mac] = {
+                        mac: mac,
+                        time: moment(start).format('YYYY-MM-DD HH:mm:00')
+                    };
+                }
+                devices[mac][key] = [val.toFixed(3), data.min_val, data.max_val]
+            });
+
+            var device_data = [];
+            for(var mac in devices) {
+                device_data.push(devices[mac]);
+            }
+
+            // console.log(JSON.stringify(device_data));
+            if(device_data.length > 0) {
+                insertDeviceData(device_data, connection);
+            }
+
+            connection.release();
+        });
+    });
+}
+
+function insertDeviceData(docs, connection) {
+    var sql = "INSERT INTO data (mac, time, json) VALUES ";
+
+    docs.forEach(function(doc) {
+        var mac = doc.mac;
+        var time = doc.time;
+        delete doc.mac;
+        delete doc.time;
+        sql += "('" + mac + "', '" + time + "', '" + JSON.stringify(doc) + "'),";
+    });
+    sql = sql.substr(0, sql.length -1);
+
+    connection.query(sql, function (error, results, fields) {
+        if (error) throw error;
+    });
+}
\ No newline at end of file
diff --git a/test.js b/test.js
index cc14439..0573f20 100644
--- a/test.js
+++ b/test.js
@@ -2,11 +2,17 @@
 
 var moment = require('moment');
 
-var a = moment();
-var b = a.format('YYYY-MM-DD');
-var c = a.add(-1, 'days').format('YYYY-MM-DD');
-console.log(b);
-console.log(c);
+
+var doc = {a:1, b:2, c:3};
+delete doc.a;
+console.log(doc);
+
+
+// var a = moment();
+// var b = a.format('YYYY-MM-DD');
+// var c = a.add(-1, 'days').format('YYYY-MM-DD');
+// console.log(b);
+// console.log(c);
 //
 // var bb = a.format('YYYY-MM-DD HH:00:00');
 // var cc = a.add(1, 'hours').format('YYYY-MM-DD HH:00:00');

--
Gitblit v1.8.0