V1.108 edit by lijun 2025-01-06
1.新增批量授权逻辑,批量授权或取消时同时记录操作日志
1个文件已添加
13个文件已修改
168 ■■■■■ 已修改文件
ElectLock_Monitor/bin/com/dev/lock/comm/Lock_SocketClient_Thread.class 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/bin/com/dev/lock/comm/Lock_Task_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/bin/com/dev/lock/data/ElectLock_ComBase.class 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/bin/com/sql/Sql_Mysql.class 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/bin/com/version_inf/version_inf.txt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/bin/main/main_ElectLock_Monitor.class 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/src/com/dev/lock/comm/Lock_Task_SQL.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/src/com/dev/lock/data/ElectLock_AuthIdcard.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/src/com/dev/lock/data/ElectLock_ComBase.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/src/com/dev/lock/data/ElectLock_Inf.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/src/com/sql/Sql_Mysql.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/src/com/version_inf/version_inf.txt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/src/main/main_ElectLock_Monitor.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectLock_Monitor/bin/com/dev/lock/comm/Lock_SocketClient_Thread.class
Binary files differ
ElectLock_Monitor/bin/com/dev/lock/comm/Lock_Task_SQL.class
Binary files differ
ElectLock_Monitor/bin/com/dev/lock/data/ElectLock_ComBase.class
Binary files differ
ElectLock_Monitor/bin/com/sql/Sql_Mysql.class
Binary 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.class
Binary 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
@@ -4,7 +4,7 @@
    
    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;        //'图片路径',
ElectLock_Monitor/src/com/sql/Sql_Mysql.java
@@ -10,16 +10,19 @@
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;
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;