V1.108 edit by lijun 2025-01-06
1.新增批量授权逻辑,批量授权或取消时同时记录操作日志
| | |
| | | 波特率:19200
|
| | | 数据格式:8位数据,无校验位,1停止位
|
| | |
|
| | | 设备ID:
|
| | | 设备ID:10000001
|
| | |
|
| | |
|
| | |
|
| | | V1.108 edit by lijun 2025-01-06
|
| | | 1.新增批量授权逻辑,批量授权或取消时同时记录操作日志
|
| | |
|
| | |
|
| | |
|
| | |
| | | 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;
|
| | |
| | | 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;
|
| | |
| | | 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;
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | 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;
|
| | |
| | |
|
| | | 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;
|
| | |
| | | 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();
|
| | | }
|
| | | }
|
| | | }
|
New file |
| | |
| | | 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-成功]
|
| | | |
| | | }
|
| | |
| | | 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; //实时数据地址
|
| | |
|
| | |
| | |
|
| | | private int area_id; //'区域id',
|
| | | private String lock_name; //'锁名称',
|
| | | private String lock_type; //'锁类型(无源,蓝牙)',
|
| | | private String lock_type; //'锁类型(无源,蓝牙)',
|
| | | private int lock_state; //'锁状态',
|
| | | private String lock_address; //'锁地址',
|
| | | private String lock_path; //'图片路径',
|
| | |
| | | import org.apache.logging.log4j.Logger;
|
| | |
|
| | | public class Sql_Mysql {
|
| | | public static final String DB_AREA = "`db_area`";
|
| | | public static final String DB_LOCK_RAM = "`db_lock_ram`";
|
| | | public static final String DB_USER = "`db_user`";
|
| | | public static final String DB_AREA = "`db_area`";
|
| | | public static final String DB_LOCK_RAM = "`db_lock_ram`";
|
| | | public static final String DB_USER = "`db_user`";
|
| | |
|
| | | /*********************************************************/
|
| | | public static final String Lock_Rt_Table = DB_LOCK_RAM + ".tb_lock_rt";
|
| | | public static final String Lock_Ctl_Log_Table = DB_LOCK_RAM + ".tb_lock_ctl_log";
|
| | | public static final String Lock_Rt_Table = DB_LOCK_RAM + ".tb_lock_rt";
|
| | | public static final String Lock_Ctl_Log_Table = DB_LOCK_RAM + ".tb_lock_ctl_log";
|
| | | /*********************************************************/
|
| | | /*************** ******************************************/
|
| | | public static final String Lock_Inf_Table = DB_AREA + ".tb_lock_inf";
|
| | | 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;
|
| | |
| | | 波特率:19200
|
| | | 数据格式:8位数据,无校验位,1停止位
|
| | |
|
| | | 设备ID:
|
| | | 设备ID:10000001
|
| | |
|
| | |
|
| | |
|
| | | V1.108 edit by lijun 2025-01-06
|
| | | 1.新增批量授权逻辑,批量授权或取消时同时记录操作日志
|
| | |
|
| | |
|
| | |
|
| | |
| | |
|
| | | 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;
|