From 335a3b0a6a6f27d0f7097b27c6614c66f5946676 Mon Sep 17 00:00:00 2001
From: Administrator <1525436766@qq.com>
Date: 星期四, 25 三月 2021 17:10:31 +0800
Subject: [PATCH] 添加电机历史实时数据记录

---
 Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread.java     |   48 +++++++++++++++++++++++
 Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread_SQL.java |   57 ++++++++++++++++++++++++++++
 2 files changed, 103 insertions(+), 2 deletions(-)

diff --git a/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread.java b/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread.java
index abc2a41..5b53d03 100644
--- a/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread.java
+++ b/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread.java
@@ -1,5 +1,6 @@
 package com.thread.devs;
 
+import java.util.Calendar;
 import java.util.Date;
 
 import com.mode.Device_Inf;
@@ -20,6 +21,9 @@
 	
 	@Override
 	public void run() {
+		RecordRealData real = new RecordRealData(pool, device);
+		new Thread(real).start();
+		
 		Manage_Simul_Motor_Thread_SQL.insertOrUpdateMotor_State_Table(pool, state);
 		while(true) {
 			try {
@@ -28,7 +32,7 @@
 				Manage_Simul_Motor_Thread_SQL.updateMotor_State_Table(pool, state);
 				
 				Thread.sleep(1000);
-			} catch (InterruptedException e) {
+			} catch (Exception e) {
 				e.printStackTrace();
 			}
 		}
@@ -46,5 +50,47 @@
 		state.motor_state = Manage_Util.CreateSwitchRanDom();//'电机状态',
 	}
 	
+	public class RecordRealData implements Runnable{
+		public MysqlConnPool pool;
+		public Device_Inf device;
+		
+		
+		public RecordRealData(MysqlConnPool pool,Device_Inf device) {
+			this.pool = pool;
+			this.device = device;
+		}
+
+		@Override
+		public void run() {
+			Date last = new Date(0,0,0);
+			while(true) {
+				Date now = new Date();
+				try {
+					Manage_Simul_Motor_Thread_SQL.createTb_Motor_State_RealData_Table(pool, state.device_id, now);
+					Manage_Simul_Motor_Thread_SQL.createTb_Motor_State_RealData_Table(pool, state.device_id, tomorrow(now));
+					
+					if((now.getTime()-last.getTime())>=1000){
+						Manage_Simul_Motor_Thread_SQL.insertMotor_State_RealData_Table(pool, state);
+						
+						last = now;
+					}				
+					Thread.sleep(200);
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		}
+	}
 	
+	/**
+	 * 	返回明天日期
+     * @param today
+     * @return
+     */
+    public Date tomorrow(Date today) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(today);
+        calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + 1);
+        return calendar.getTime();
+    }
 }
diff --git a/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread_SQL.java b/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread_SQL.java
index d3740ba..936b34c 100644
--- a/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread_SQL.java
+++ b/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread_SQL.java
@@ -2,6 +2,7 @@
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.Date;
 
 import com.base.Com;
 import com.mode.Motor_State;
@@ -50,7 +51,11 @@
 		}
 	}
 	
-	
+	/**
+	 * 	更新电机实时状态
+	 * @param pool
+	 * @param state
+	 */
 	public static void updateMotor_State_Table(MysqlConnPool pool,Motor_State state) {
 		String sql_str_upd = "UPDATE " + Sql_Mysql.Tb_Motor_State_Table +
 				" SET device_id="+state.device_id+""
@@ -74,4 +79,54 @@
 			sql.close_con();
 		}
 	}
+	
+	/**
+	 * 
+	 * @param pool
+	 * @param state
+	 * @param time
+	 */
+	public static void createTb_Motor_State_RealData_Table(MysqlConnPool pool,int device_id,Date time) {
+		String sql_str = "CREATE TABLE IF NOT EXISTS "+Sql_Mysql.Tb_Motor_State_RealData_Table+device_id+"_"+Com.getDateTimeFormat(time, Com.DTF_Y_M_D)+" (" + 
+				"  `num` bigint(20) NOT NULL AUTO_INCREMENT," + 
+				"  `device_id` int(11) NOT NULL DEFAULT '100001' COMMENT '设备id'," + 
+				"  `record_time` datetime NOT NULL DEFAULT '2000-01-01 00:00:00' COMMENT '记录时间'," + 
+				"  `motor_curr` float NOT NULL DEFAULT '0' COMMENT '电机电流'," + 
+				"  `motor_power` float NOT NULL DEFAULT '0' COMMENT '电机功率'," + 
+				"  `motor_speed` float NOT NULL DEFAULT '0' COMMENT '电机转速'," + 
+				"  `motor_vol` float NOT NULL DEFAULT '0' COMMENT '电机电压'," + 
+				"  `motor_out_tmp` float NOT NULL DEFAULT '0' COMMENT '电机出口温度'," + 
+				"  `motor_into_tmp` float NOT NULL DEFAULT '0' COMMENT '电机进口温度'," + 
+				"  `motor_torque` float NOT NULL DEFAULT '0' COMMENT '电机转矩'," + 
+				"  `motor_state` int(11) NOT NULL DEFAULT '0' COMMENT '电机状态'," + 
+				"  PRIMARY KEY (`num`)" + 
+				") ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;";
+		Sql_Mysql sql = new Sql_Mysql(pool.getConn());
+		try {
+			sql.sqlMysqlExecute(sql_str);
+		} catch (SQLException e) {
+			e.printStackTrace();
+		} finally {
+			sql.close_con();
+		}
+	}
+	
+	/**
+	 * 	插入历史实时数据
+	 * @param pool
+	 * @param state
+	 */
+	public static void insertMotor_State_RealData_Table(MysqlConnPool pool,Motor_State state) {
+		String sql_str_ins = " INSERT INTO " + Sql_Mysql.Tb_Motor_State_RealData_Table+state.device_id+"_"+Com.getDateTimeFormat(state.record_time, Com.DTF_Y_M_D) +
+				"(device_id,record_time,motor_curr,motor_power,motor_speed,motor_vol,motor_out_tmp,motor_into_tmp,motor_torque,motor_state) " + 
+				"VALUES("+state.device_id+",'"+Com.getDateTimeFormat(state.record_time, Com.DTF_YMDhms)+"',"+state.motor_curr+","+state.motor_power+","+state.motor_speed+","+state.motor_vol+","+state.motor_out_tmp+","+state.motor_into_tmp+","+state.motor_torque+","+state.motor_state+")";
+		Sql_Mysql sql = new Sql_Mysql(pool.getConn());
+		try {
+			sql.sqlMysqlExecute(sql_str_ins);
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			sql.close_con();
+		}
+	}
 }

--
Gitblit v1.9.1