Administrator
2021-02-19 f7c8ccbaa43fdda57fd04cce5f409f1a99bde86b
添加控制操作日志记录功能
2个文件已添加
2个文件已修改
284 ■■■■ 已修改文件
ElectricalSystem_MonitorServer_2KW/src/com/electrical/TwoKW/Electrical_2KW_SocketClient_Thread.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/modbus/data/MyModbusUtils.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/modbus/data/User_Log.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/modbus/data/User_Log_SQL.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/electrical/TwoKW/Electrical_2KW_SocketClient_Thread.java
@@ -6,6 +6,8 @@
import com.modbus.data.MyModbusMaster;
import com.modbus.data.MyModbusUtils;
import com.modbus.data.User_Log;
import com.modbus.data.User_Log_SQL;
import com.serotonin.modbus4j.BatchRead;
import com.serotonin.modbus4j.BatchResults;
import com.serotonin.modbus4j.code.DataType;
@@ -21,6 +23,8 @@
    public MyModbusMaster master;
    public Electric_2MW_alarm eAlarm;
    public List<Electric_2MW_alarm> listAlarm;
    public List<User_Log> logs;
    
    public Electrical_2KW_SocketClient_Thread(Electric_inf_2kw winf,MysqlConnPool conn_pool) {
        this.conn_pool = conn_pool;
@@ -31,6 +35,7 @@
        econ = einf.control;
        eAlarm = einf.alarm;
        
        logs = new ArrayList<>();
        /*
        state = new Electric_State_2kw(einf.electric2KW_id);
        ert = new Electric_Rt_2kw(einf.electric2KW_id);
@@ -65,30 +70,38 @@
                
                Electrical_2KWTask_SQL.queryElectric_Control_2KW(conn_pool,econ);
                if(econ.update_en == true) {
                    logs.clear();
                    //System.out.println(econ.electric2KW_id+"##");
                    //转为恒压模式充电电压值
                    if(econ.consvolmode_chargecurr > 0) {
                        MyModbusUtils.writeHoldingRegister(330, econ.consvolmode_chargecurr, DataType.TWO_BYTE_INT_SIGNED, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(330, econ.consvolmode_chargecurr, DataType.TWO_BYTE_INT_SIGNED, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"转为恒压模式充电电压值为:"+econ.consvolmode_chargecurr, flag));
                    }
                    //第5阶段充电电流值
                    if(econ.chargecurr_five > 0) {
                        MyModbusUtils.writeHoldingRegister(319,econ.chargecurr_five, DataType.TWO_BYTE_INT_SIGNED, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(319,econ.chargecurr_five, DataType.TWO_BYTE_INT_SIGNED, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"第5阶段充电电流值为:"+econ.chargecurr_five, flag));
                    }
                    //第4阶段充电电流值
                    if(econ.chargecurr_four > 0) {
                        MyModbusUtils.writeHoldingRegister(318,econ.chargecurr_four, DataType.TWO_BYTE_INT_SIGNED, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(318,econ.chargecurr_four, DataType.TWO_BYTE_INT_SIGNED, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"第4阶段充电电流值为:"+econ.chargecurr_four, flag));
                    }
                    //第3阶段充电电流值
                    if(econ.chargecurr_three > 0) {
                        MyModbusUtils.writeHoldingRegister(317,econ.chargecurr_three, DataType.TWO_BYTE_INT_SIGNED, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(317,econ.chargecurr_three, DataType.TWO_BYTE_INT_SIGNED, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"第3阶段充电电流值为:"+econ.chargecurr_three, flag));
                    }
                    //第2阶段充电电流值
                    if(econ.chargecurr_two > 0) {
                        MyModbusUtils.writeHoldingRegister(316,econ.chargecurr_two, DataType.TWO_BYTE_INT_SIGNED, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(316,econ.chargecurr_two, DataType.TWO_BYTE_INT_SIGNED, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"第2阶段充电电流值为:"+econ.chargecurr_two, flag));
                    }
                    //第1阶段充电电流值
                    if(econ.chargecurr_one > 0) {
                        MyModbusUtils.writeHoldingRegister(315,econ.chargecurr_one, DataType.TWO_BYTE_INT_SIGNED, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(315,econ.chargecurr_one, DataType.TWO_BYTE_INT_SIGNED, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"第1阶段充电电流值为:"+econ.chargecurr_one, flag));
                    }
                    //电流设定值
//                    if(econ.currset > 0) {
@@ -100,108 +113,128 @@
//                    }
                    //第5阶段充电终止电压
                    if(econ.stopchargevol_five > 0) {
                        MyModbusUtils.writeHoldingRegister(328,econ.stopchargevol_five, DataType.FOUR_BYTE_FLOAT, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(328,econ.stopchargevol_five, DataType.FOUR_BYTE_FLOAT, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"第5阶段充电终止电压为:"+econ.stopchargevol_five, flag));
                    }
                    //第4阶段充电终止电压
                    if(econ.stopchargevol_four > 0) {
                        MyModbusUtils.writeHoldingRegister(326,econ.stopchargevol_four, DataType.FOUR_BYTE_FLOAT, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(326,econ.stopchargevol_four, DataType.FOUR_BYTE_FLOAT, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"第4阶段充电终止电压为:"+econ.stopchargevol_four, flag));
                    }
                    //第3阶段充电终止电压
                    if(econ.stopchargevol_three > 0) {
                        MyModbusUtils.writeHoldingRegister(324,econ.stopchargevol_three, DataType.FOUR_BYTE_FLOAT, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(324,econ.stopchargevol_three, DataType.FOUR_BYTE_FLOAT, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"第3阶段充电终止电压为:"+econ.stopchargevol_three, flag));
                    }
                    //第2阶段充电终止电压
                    if(econ.stopchargevol_two > 0) {
                        MyModbusUtils.writeHoldingRegister(322,econ.stopchargevol_two, DataType.FOUR_BYTE_FLOAT, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(322,econ.stopchargevol_two, DataType.FOUR_BYTE_FLOAT, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"第2阶段充电终止电压为:"+econ.stopchargevol_two, flag));
                    }
                    //第1阶段充电终止电压
                    if(econ.stopchargevol_one > 0) {
                        MyModbusUtils.writeHoldingRegister(320,econ.stopchargevol_one, DataType.FOUR_BYTE_FLOAT, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(320,econ.stopchargevol_one, DataType.FOUR_BYTE_FLOAT, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"第1阶段充电终止电压为:"+econ.stopchargevol_one, flag));
                    }
                    //上位机脉冲封锁
                    if(econ.upper_pulse_block > 0) {
                        MyModbusUtils.writeCoil(80, true, master);
                        boolean flag = MyModbusUtils.writeCoil(80, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(80, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(80, false, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"上位机脉冲封锁", flag));
                    }
                    //远程启动
                    if(econ.remote_start > 0) {
                        MyModbusUtils.writeCoil(112, true, master);
                        boolean flag = MyModbusUtils.writeCoil(112, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(112, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(112, false, master);
                        logs.add(new User_Log(User_Log.Start_up, User_Log.electric2mwsystem,einf.electric2KW_name+"远程启动", flag));
                    }
                    //故障复位
                    if(econ.fault_reset > 0) {
                        MyModbusUtils.writeCoil(113, true, master);
                        boolean flag = MyModbusUtils.writeCoil(113, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(113, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(113, false, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"故障复位", flag));
                    }
                    //恒流切换
                    if(econ.conscurrswitch > 0) {
                        MyModbusUtils.writeCoil(114, true, master);
                        boolean flag = MyModbusUtils.writeCoil(114, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(114, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(114, false, master);
                        logs.add(new User_Log(User_Log.Start_up, User_Log.electric2mwsystem,einf.electric2KW_name+"恒流切换", flag));
                    }
                    //4并或2串2并恒压
                    if(econ.constantvol > 0) {
                        MyModbusUtils.writeCoil(115, true, master);
                        boolean flag = MyModbusUtils.writeCoil(115, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(115, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(115, false, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"为:4并或2串2并恒压", flag));
                    }
                    //电压给定确认
                    if(econ.volset_confirm > 0) {
                        MyModbusUtils.writeHoldingRegister(18,econ.volset, DataType.TWO_BYTE_INT_SIGNED, master);
                        MyModbusUtils.writeCoil(116, true, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(18,econ.volset, DataType.TWO_BYTE_INT_SIGNED, master);
                        flag = flag&&MyModbusUtils.writeCoil(116, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(116, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(116, false, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"电压设定值为:"+econ.volset, flag));
                    }
                    //电流给定确认
                    if(econ.currset_confirm > 0) {
                        MyModbusUtils.writeHoldingRegister(27,econ.currset, DataType.TWO_BYTE_INT_SIGNED, master);
                        MyModbusUtils.writeCoil(117, true, master);
                        boolean flag = MyModbusUtils.writeHoldingRegister(27,econ.currset, DataType.TWO_BYTE_INT_SIGNED, master);
                        flag = flag&&MyModbusUtils.writeCoil(117, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(117, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(117, false, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"电流设定值为:"+econ.currset, flag));
                    }
                    //远程停止
                    if(econ.remote_stop > 0) {
                        MyModbusUtils.writeCoil(118, true, master);
                        boolean flag = MyModbusUtils.writeCoil(118, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(118, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(118, false, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"远程停止", flag));
                    }
                    //启动触摸屏给定
                    if(econ.start_screen_set > 0) {
                        MyModbusUtils.writeCoil(120, true, master);
                        boolean flag = MyModbusUtils.writeCoil(120, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(120, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(120, false, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"触摸屏给定", flag));
                    }
                    //启动上位机给定
                    if(econ.start_upper_set > 0) {
                        MyModbusUtils.writeCoil(121, true, master);
                        boolean flag = MyModbusUtils.writeCoil(121, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(121, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(121, false, master);
                        logs.add(new User_Log(User_Log.Start_up, User_Log.electric2mwsystem,einf.electric2KW_name+"上位机给定", flag));
                    }
                    //恒压切换
                    if(econ.consvolswitch > 0) {
                        MyModbusUtils.writeCoil(123, true, master);
                        boolean flag = MyModbusUtils.writeCoil(123, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(123, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(123, false, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"恒压切换", flag));
                    }
                    //4并或2串2并以外模式
                    if(econ.othermode > 0) {
                        MyModbusUtils.writeCoil(125, true, master);
                        boolean flag = MyModbusUtils.writeCoil(125, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(125, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(125, false, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"4并或2串2并以外模式", flag));
                    }
                    //四串恒压电压分配位
                    if(econ.consvol_distribution > 0) {
                        MyModbusUtils.writeCoil(128, true, master);
                        boolean flag = MyModbusUtils.writeCoil(128, true, master);
                        Thread.sleep(2000);
                        MyModbusUtils.writeCoil(128, false, master);
                        flag = flag&&MyModbusUtils.writeCoil(128, false, master);
                        logs.add(new User_Log(User_Log.Alter, User_Log.electric2mwsystem,einf.electric2KW_name+"四串恒压电压分配", flag));
                    }
                    econ.clear();
//                    //System.err.println(econ);
                    Electrical_2KWTask_SQL.update_Electric_Control_2KW(conn_pool, econ);
                    User_Log_SQL.recordUserLog(conn_pool, logs);            //记录操作日志
                }
                
                
ElectricalSystem_MonitorServer_2KW/src/com/modbus/data/MyModbusUtils.java
@@ -305,17 +305,17 @@
     * @param registerCount
     *            ,com.serotonin.modbus4j.code.DataType
     */
    public static void writeHoldingRegister(int offset, Number value, int dataType,MyModbusMaster master){
    public static boolean writeHoldingRegister(int offset, Number value, int dataType,MyModbusMaster master){
        // 获取master
        ModbusMaster tcpMaster = master.getMaster();
        // 类型
        BaseLocator<Number> locator = BaseLocator.holdingRegister(master.getSlaveId(), offset, dataType);
        boolean isSuccess = true;
        boolean isSuccess = false;
        try {
            tcpMaster.setValue(locator, value);
            isSuccess = true;
        } catch (ModbusTransportException | ErrorResponseException e) {
            e.printStackTrace();
            isSuccess = false;
        } finally {
            if(isSuccess) {
                master.clearError();
@@ -323,6 +323,7 @@
                master.addErrorCount();
            }
        }
        return isSuccess;
    }
    public static BatchResults<Integer> readMutilRegisters(BatchRead<Integer> batch,MyModbusMaster master){
ElectricalSystem_MonitorServer_2KW/src/com/modbus/data/User_Log.java
New file
@@ -0,0 +1,128 @@
package com.modbus.data;
import java.util.Date;
public class User_Log {
    //用户操作对应关系
    public final static int Login_system=1;       //登录系统
    public final static int Logout_system=2;      //登出系统
    public final static int Increase=3;           //增加
    public final static int Alter=4;              //更改
    public final static int Delete=5;             //删除
    public final static int Set_up=6;             //设置
    public final static int Cancel=7;             //取消
    public final static int Start_up=8;           //启动
    public final static int End=9;                //终止
    public final static int Batch=10;             //批量
    public final static int Export=11;            //导出
    //系统对应关系
    public final static int dynamicload=1;        //负载
    public final static int elemachinery=2;        //电机
    public final static int batt=3;                //电池组
    public final static int electricsystem=4;        //4MW
    public final static int watersystem=5;        //水冷
    public final static int electric2mwsystem=6;    //2MW
    public int uId;                            //用户id
    public int uOprateType;                    //操作类型
    public Date uOprateDay;                    //操作时间
    public String uTerminalIp;                //操作ip
    public String uOprateMsg;                //操作日志
    public int uSystemType;                    //系统类型
    public User_Log(){
    }
    public User_Log(int uOprateType,int uSystemType,String msg,boolean flag){
        this.uId = 1002;
        this.uOprateType = uOprateType;
        this.uOprateDay = new Date();
        this.uTerminalIp = "127.0.0.1";
        this.uSystemType = uSystemType;
        this.uOprateMsg = getUserOprateType(uSystemType)+ msg + (flag?";√成功":";×失败");
    }
    public String getUserOprateType(int uSystemType){
        String msg = "";
        switch(uSystemType) {
            case Login_system:{
                msg = "登录系统";
            };break;       //登录系统
            case Logout_system:{
                msg = "登出系统";
            };break;      //登出系统
            case Increase:{
                msg = "增加";
            };break;           //增加
            case Alter:{
                msg = "更改";
            };break;              //更改
            case Delete:{
                msg = "删除";
            };break;             //删除
            case Set_up:{
                msg = "设置";
            };break;             //设置
            case Cancel:{
                msg = "取消";
            };break;             //取消
            case Start_up:{
                msg = "启动";
            };break;           //启动
            case End:{
                msg = "终止";
            };break;                //终止
            case Batch:{
                msg = "批量";
            };break;             //批量
            case Export:{
                msg = "导出";
            };break;            //导出
        }
        return msg;
    }
    public int getuId() {
        return uId;
    }
    public int getuOprateType() {
        return uOprateType;
    }
    public Date getuOprateDay() {
        return uOprateDay;
    }
    public String getuTerminalIp() {
        return uTerminalIp;
    }
    public String getuOprateMsg() {
        return uOprateMsg;
    }
    public int getuSystemType() {
        return uSystemType;
    }
    public void setuId(int uId) {
        this.uId = uId;
    }
    public void setuOprateType(int uOprateType) {
        this.uOprateType = uOprateType;
    }
    public void setuOprateDay(Date uOprateDay) {
        this.uOprateDay = uOprateDay;
    }
    public void setuTerminalIp(String uTerminalIp) {
        this.uTerminalIp = uTerminalIp;
    }
    public void setuOprateMsg(String uOprateMsg) {
        this.uOprateMsg = uOprateMsg;
    }
    public void setuSystemType(int uSystemType) {
        this.uSystemType = uSystemType;
    }
    @Override
    public String toString() {
        return "User_Log [uId=" + uId + ", uOprateType=" + uOprateType + ", uOprateDay=" + uOprateDay + ", uTerminalIp="
                + uTerminalIp + ", uOprateMsg=" + uOprateMsg + ", uSystemType=" + uSystemType + "]";
    }
}
ElectricalSystem_MonitorServer_2KW/src/com/modbus/data/User_Log_SQL.java
New file
@@ -0,0 +1,38 @@
package com.modbus.data;
import java.sql.SQLException;
import java.util.List;
import com.base.Com;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
public class User_Log_SQL {
    /**
     * 记录用户操作日志
     * @param pool
     * @param logs
     */
    public static void recordUserLog(MysqlConnPool pool,List<User_Log> logs) {
        String sql_str = "INSERT INTO " + Sql_Mysql.UserLogTable + "(uid,uOprateType,uOprateDay,uTerminalIp,uOprateMsg,uSystemType) VALUES";
        if(logs.size()>0) {
            for(int i=0;i<logs.size();i++) {
                User_Log log = logs.get(i);
                if(i>0) {
                    sql_str += ",";
                }
                sql_str += "("+log.getuId()+","+log.getuOprateType()+",'"+Com.getDateTimeFormat(log.uOprateDay, Com.DTF_YMDhms)+"','"+log.getuTerminalIp()+"','"+log.getuOprateMsg()+"',"+log.getuSystemType()+")";
            }
            Sql_Mysql sql = new Sql_Mysql(pool.getConn());
            try {
                //System.out.println(sql_str);
                sql.sqlMysqlExecute(sql_str);
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                sql.close_con();
            }
        }
    }
}