From 1af31e38c6a2cd072ed310149c656780610fe57b Mon Sep 17 00:00:00 2001
From: DELL <1525436766@qq.com>
Date: 星期一, 21 四月 2025 08:42:54 +0800
Subject: [PATCH] 2.修复锁具开启之后记录bug

---
 ElectLock_Monitor/src/com/dev/lock/comm/Lock_Task_SQL.java |   42 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/ElectLock_Monitor/src/com/dev/lock/comm/Lock_Task_SQL.java b/ElectLock_Monitor/src/com/dev/lock/comm/Lock_Task_SQL.java
index d19961c..3b033e1 100644
--- a/ElectLock_Monitor/src/com/dev/lock/comm/Lock_Task_SQL.java
+++ b/ElectLock_Monitor/src/com/dev/lock/comm/Lock_Task_SQL.java
@@ -66,7 +66,7 @@
 						",comm_count = " +  state.getComm_count() +
 						",err_tol_count = " +  state.getErr_tol_count() +
 						",err_count = " + state.getErr_count() +
-						" WHERE lock_id = " + lock_id;
+						" WHERE lock_id = " + state.getLock_id();
 		Sql_Mysql sql = new Sql_Mysql(pool.getConn());
 		try {
 			sql.sqlMysqlExecute(sql_str);
@@ -86,8 +86,10 @@
 	public static void updateLock_Inf_Table(MysqlConnPool pool,ElectLock_Inf inf,ElectLock_State state) {
 		String sql_str = "UPDATE " + Sql_Mysql.Lock_Inf_Table + 
 						" Set lock_state = " +  state.getLock_state() +
-						" ,lock_online =  " + state.getLock_online() +
+						" ,lock_online =  " + ((state.getErr_count() > 4)?0:1) +
+//						" ,lock_online =  " + state.getLock_online() +
 						" ,lock_mac =  '" + state.getLockMacAddr() + "'" +
+						" ,bl_state =  '" + state.getBluetooth_state() + "'" +
 						" ,lock_open_count =  " + state.getLock_open_count() + 
 						" ,model =  " + state.getWorkmodel() + 
 						" ,last_update_time = '" + Com.getDateTimeFormat(state.getLast_update_time(), Com.DTF_YMDhms) + "'" +
@@ -110,14 +112,25 @@
 	 * @param param
 	 */
 	public static void queryElectLockControlCmd(MysqlConnPool pool,int lock_id,ElectLock_State param) {
-		String sql_str =  " SELECT op_cmd,id_card_set,lock_addr_set,ctl_uname "
+		String sql_str =  " SELECT op_cmd,id_card_set,lock_addr_set,ctl_uname,lock_id "
 						+ " FROM " + Sql_Mysql.Lock_Rt_Table + ""
-						+ " WHERE lock_id = " + lock_id;
+						+ " WHERE FLOOR(lock_id/10000) = " + (lock_id/10000) 
+						+ " AND ("
+						+ " op_cmd = " + ElectLock_ComBase.CMD_ClearIdCard 
+						+ " OR op_cmd = " + ElectLock_ComBase.CMD_REMOTE_OPEN_Lock 
+						+ " OR op_cmd = " + ElectLock_ComBase.CMD_REMOTE_ReStart 
+						+ " OR op_cmd = " + ElectLock_ComBase.CMD_AddIdCard 
+						+ " OR op_cmd = " + ElectLock_ComBase.CMD_RemoveIdCard 
+						+ " OR op_cmd = " + ElectLock_ComBase.CMD_OpenBluetooth 
+						+ " OR op_cmd = " + ElectLock_ComBase.CMD_CloseBluetooth 
+						+ " )";
 		Sql_Mysql sql = new Sql_Mysql(pool.getConn());
 		ResultSet res = null;
 		try {
 			res = sql.sqlMysqlQuery(sql_str);
 			if(res.next()) {
+				//褰撳墠闇�瑕佹帶鍒剁殑閿佸叿ID
+				param.setLock_id(res.getInt("lock_id"));
 				param.setOp_cmd(res.getInt("op_cmd"));
 				param.setId_card_set(res.getInt("id_card_set"));
 				param.setLock_addr_set(res.getInt("lock_addr_set"));
@@ -148,7 +161,7 @@
 	public static void updateElectLockControlCmd(MysqlConnPool pool, int lock_id, ElectLock_State state) {
 		String sql_str = "UPDATE " + Sql_Mysql.Lock_Rt_Table + 
 				" Set op_cmd =  " + state.getOp_cmd() +
-				" WHERE lock_id = " + lock_id;
+				" WHERE lock_id = " + state.getLock_id();
 		Sql_Mysql sql = new Sql_Mysql(pool.getConn());
 		try {
 			sql.sqlMysqlExecute(sql_str);
@@ -339,7 +352,7 @@
 				state.setErr_tol_count(res.getInt("err_tol_count"));		//'鎬婚敊璇鏁�',
 //				state.setErr_count(res.getInt("err_count"));				//'杩炵画閿欒璁℃暟',
 				state.setOp_cmd(res.getInt("op_cmd"));						//'鎺у埗鍛戒护',
-				state.setId_card_set(res.getInt("id_card_set"));			//'鎺堟潈ID鍗″彿',
+				state.setId_card_set(res.getLong("id_card_set"));			//'鎺堟潈ID鍗″彿',
 				state.setLock_addr_set(res.getInt("lock_addr_set"));;		//'璁剧疆璁惧鍦板潃[鎱庣敤]',
 				
 			}
@@ -446,4 +459,21 @@
 			sql.close_con();
 		}
 	}
+
+	/**
+	 * 	璁剧疆褰撳墠閿佸叿绂荤嚎
+	 * @param pool
+	 * @param client_id
+	 */
+	public static void updateLock_OffLineTable(MysqlConnPool pool, int client_id) {
+		String sql_str = " UPDATE " + Sql_Mysql.Lock_Inf_Table + " SET lock_online = 0 WHERE FLOOR(lock_id/10000) = " + (client_id/10000);
+		Sql_Mysql sql = new Sql_Mysql(pool.getConn());
+		try {
+			sql.sqlMysqlExecute(sql_str);
+		} catch (SQLException e) {
+			sql.logger.error(e.toString(),e);
+		} finally {
+			sql.close_con();
+		}
+	}
 }

--
Gitblit v1.9.1