ElectLock_Monitor/bin/com/dev/lock/comm/Lock_SocketClient_Thread.classBinary files differ
ElectLock_Monitor/bin/com/dev/lock/comm/Lock_Task_SQL.classBinary files differ
ElectLock_Monitor/bin/com/dev/lock/data/ElectLock_ComBase.classBinary files differ
ElectLock_Monitor/bin/com/sql/Sql_Mysql.classBinary files differ
ElectLock_Monitor/bin/com/version_inf/version_inf.txt
@@ -5,10 +5,11 @@ 波特率:19200 数据格式:8位数据,无校验位,1停止位 设备ID: 设备ID:10000001 V1.108 edit by lijun 2025-01-06 1.新增批量授权逻辑,批量授权或取消时同时记录操作日志 ElectLock_Monitor/bin/main/main_ElectLock_Monitor.classBinary files differ
ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java
@@ -7,6 +7,7 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.Date; import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -16,6 +17,7 @@ import com.base.Crc16; import com.config.AppConfig; import com.dev.lock.data.ElectLock_Array; import com.dev.lock.data.ElectLock_AuthIdcard; import com.dev.lock.data.ElectLock_ComBase; import com.dev.lock.data.ElectLock_Inf; import com.dev.lock.data.ElectLock_State; @@ -46,6 +48,7 @@ private ByteBuffer bytebuffer_for_socket_RX = ByteBuffer.allocate(15000); private boolean S_thread_run_flag = true; public Lock_SocketClient_Thread(MysqlConnPool pool,ElectLock_Array GB_Lock_Array ,AppConfig config,Socket tmp_socket) { this.pool = pool; @@ -164,6 +167,48 @@ } } List<ElectLock_AuthIdcard> batch_auth = Lock_Task_SQL.queryAuth_Idcard_Table(pool,client_id); if(batch_auth.size() > 0) { logger.info("开始批量授权ID卡,ID数量:" + batch_auth.size()); for(int k = 0; k < batch_auth.size() ; k++) { ElectLock_AuthIdcard tmp_auth = batch_auth.get(k); ElectLock_Ctl_Log tmp_log = null; try { int keyNumber = Integer.parseInt(tmp_auth.key_number.trim()); if(tmp_auth.state == ElectLock_AuthIdcard.AuthType_ReMove) { //取消ID卡授权 mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Clear_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double); if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(keyNumber))) { tmp_auth.auth_result = ElectLock_ComBase.Auth_Success; tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, true,keyNumber); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } else { tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, false,keyNumber); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } }else if(tmp_auth.state == ElectLock_AuthIdcard.AuthType_Add) { //添加授权 mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Add_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double); if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(keyNumber))) { tmp_auth.auth_result = ElectLock_ComBase.Auth_Success; tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, true,keyNumber); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } else { tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, false,keyNumber); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } } } catch (Exception e) { tmp_auth.auth_result = ElectLock_ComBase.Auth_Fail; } finally { tmp_log = null; } Lock_Task_SQL.moveAuth_Idcard_Table(pool, tmp_auth); } } batch_auth = null; runCount ++; if(runCount > 99999900) { runCount = 0; ElectLock_Monitor/src/com/dev/lock/comm/Lock_Task_SQL.java
@@ -2,8 +2,12 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.base.Com; import com.dev.lock.data.ElectLock_AuthIdcard; import com.dev.lock.data.ElectLock_ComBase; import com.dev.lock.data.ElectLock_Ctl_Log; import com.dev.lock.data.ElectLock_State; @@ -168,4 +172,68 @@ sql.close_con(); } } public static List<ElectLock_AuthIdcard> queryAuth_Idcard_Table(MysqlConnPool pool, int client_id) { List<ElectLock_AuthIdcard> batch_auth = new ArrayList<>(); String sql_str = "SELECT DISTINCT(tb_key_inf.key_id),lock_id,state,tb_auth_idcard.create_time,key_number " + " FROM " + Sql_Mysql.Key_Inf_Table + "," + Sql_Mysql.Auth_Idcard_Table + " WHERE tb_key_inf.key_id = tb_auth_idcard.key_id AND lock_id = " + client_id + " AND key_type = 1 "; Sql_Mysql sql = new Sql_Mysql(pool.getConn()); ResultSet res = null; try { res = sql.sqlMysqlQuery(sql_str); while(res.next()) { ElectLock_AuthIdcard auth = new ElectLock_AuthIdcard(); auth.key_id = res.getInt("key_id"); //'钥匙id', auth.lock_id = res.getInt("lock_id"); //'锁具id', auth.state = res.getInt("state"); //'1:移除id卡,2添加id卡,3已处理', auth.create_time = res.getTimestamp("create_time"); //'创建时间' auth.key_number = res.getString("key_number"); //ID卡号 batch_auth.add(auth); } } catch (SQLException e) { sql.logger.error(e.toString(),e); } finally { if(null != res) { try { res.close(); } catch (SQLException e) { sql.logger.error(e.toString(),e); } } sql.close_con(); } return batch_auth; } /** * 将当前批量操作记录移动到历史表 * @param pool * @param tmp_auth */ public static void moveAuth_Idcard_Table(MysqlConnPool pool, ElectLock_AuthIdcard tmp_auth) { ArrayList<String> sql_strs = new ArrayList<>(); String sql_str_ins = "INSERT INTO " + Sql_Mysql.Auth_Idcard_His_Table + "(key_id,lock_id,state,create_time,end_time,auth_result)" + "(" + " SELECT key_id,lock_id,state,create_time,NOW()," + tmp_auth.auth_result + " FROM " + Sql_Mysql.Auth_Idcard_Table + " WHERE lock_id = " + tmp_auth.lock_id + " AND key_id = " + tmp_auth.key_id + " AND create_time = '" + Com.getDateTimeFormat(tmp_auth.create_time, Com.DTF_YMDhms) + "' " + ");"; String sql_str_del = "DELETE FROM " + Sql_Mysql.Auth_Idcard_Table + " WHERE lock_id = " + tmp_auth.lock_id + " AND key_id = " + tmp_auth.key_id + " AND create_time = '" + Com.getDateTimeFormat(tmp_auth.create_time, Com.DTF_YMDhms) + "'"; System.out.println(sql_str_ins); sql_strs.add(sql_str_ins); sql_strs.add(sql_str_del); Sql_Mysql sql = new Sql_Mysql(pool.getConn()); try { sql.makeManualCommit(sql_strs); } catch (Exception e) { sql.logger.error(e.toString(),e); } finally { sql.close_con(); } } } ElectLock_Monitor/src/com/dev/lock/data/ElectLock_AuthIdcard.java
New file @@ -0,0 +1,23 @@ package com.dev.lock.data; import java.util.Date; /** * 批量授权数据 * @author DELL * */ public class ElectLock_AuthIdcard { public static final int AuthType_ReMove = 1; //取消授权卡号 public static final int AuthType_Add = 2; //添加授权卡号 public int key_id; //'钥匙id', public int lock_id; //'锁具id', public int state; //'1:移除id卡,2添加id卡,3已处理', public Date create_time; //'创建时间' public String key_number; //ID卡号 public int auth_result = ElectLock_ComBase.Auth_Success; //授权结果[0-失败 1-成功] } ElectLock_Monitor/src/com/dev/lock/data/ElectLock_ComBase.java
@@ -23,6 +23,9 @@ public static final int CMD_RemoveIdCard_Ack = 0x21; //移除授权卡ID成功 public static final int Auth_Fail = 0; //授权失败 public static final int Auth_Success = 1; //授权成功 public static final int LOCK_REAL_ADDR = 0; //实时数据地址 ElectLock_Monitor/src/com/dev/lock/data/ElectLock_Inf.java
ElectLock_Monitor/src/com/sql/Sql_Mysql.java
@@ -20,6 +20,9 @@ /*********************************************************/ /*************** ******************************************/ public static final String Lock_Inf_Table = DB_AREA + ".tb_lock_inf"; public static final String Key_Inf_Table = DB_AREA + ".tb_key_inf"; public static final String Auth_Idcard_Table = DB_AREA + ".tb_auth_idcard"; //批量添加授权和取消授权表 public static final String Auth_Idcard_His_Table = DB_AREA + ".tb_auth_idcard_his"; //批量添加授权和取消授权历史表 /*********************************************************/ public Logger logger; ElectLock_Monitor/src/com/version_inf/version_inf.txt
@@ -5,10 +5,11 @@ 波特率:19200 数据格式:8位数据,无校验位,1停止位 设备ID: 设备ID:10000001 V1.108 edit by lijun 2025-01-06 1.新增批量授权逻辑,批量授权或取消时同时记录操作日志 ElectLock_Monitor/src/main/main_ElectLock_Monitor.java
@@ -16,7 +16,7 @@ public class main_ElectLock_Monitor { public static final boolean app_debug = false; public static final double m_VersionNum = 3.107D; public static final double m_VersionNum = 3.108D; public static final String m_Version = "Welcome To Use main_ElectLock_Monitor V" + m_VersionNum + " RC_20180324"; public static int MysqlServer_Port; private static AppConfig m_AppConfig;