南方电网标准版(紫晶版)初始带UKEY版通讯程序
Administrator
2021-01-22 6d31a7e364b74acb92bb69552e1a0e31f39a55f0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package com.battdata_rt;
 
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Random;
 
import com.base.AppConfig;
import com.base.Com;
import com.dec.fbs9100.AppParam;
import com.dec.fbs9100.MysqlConnPool;
import com.dec.fbs9100.Sql_Mysql;
 
public class BattData_RT_Array {
    
    final public static int DATA_SOURCE_FBSDEV = 0;
    final public static int DATA_SOURCE_SQLSERVER = 1;
    final public static int DATA_SOURCE_C_INTERFACE = 2;
    final public static int DATA_SOURCE_SQLSERVER_AND_C_INTERFACE = 3;
    
    private ArrayList<BattData_RT> Data_Array = new ArrayList<BattData_RT>();
    private MysqlConnPool m_Conn_Pool;
    private int Sybase_query_count = 0;
    private Date m_SybaseServerDate = new Date();
    private AppParam m_Param;
    private AppConfig m_AppCfg;
    private ArrayList<String> al_stationid = new ArrayList<String>();
    
    public BattData_RT_Array(AppConfig cfg, AppParam param, MysqlConnPool pool)
    {
        m_AppCfg = cfg;
        m_Param = param;
        m_Conn_Pool = pool;
    }
    
    public Date getSybaseServerDateTime()
    {
        return m_SybaseServerDate;
    }
    
    public int getSybaseQueryCount()
    {
        return Sybase_query_count;
    }
    
    public int getItemCount()
    {
        return Data_Array.size();
    }
    
    public BattData_RT getItem(int index)
    {
        return Data_Array.get(index);
    }
    public ArrayList<BattData_RT> getRtData()
    {
        return Data_Array;
    }
    public void addItem(BattData_RT data)
    {
        Data_Array.add(data);
    }
    /******************************************************************************************/
    /********************************* initBattDataRT_Inf *************************************/
    public void initBattDataRT_Inf(double ser_ver)
    {
        Data_Array.clear();
        initBattDataRT_Inf_FromSQL();        
        new BattData_RT_RamDB_Thread(m_Conn_Pool, Data_Array, ser_ver).start();        
    }
    /******************************************************************************************/
    private void initBattDataRT_Inf_FromSQL()
    {
        Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
        ResultSet res;
        String sql_str;
        try {
            sql.sqlMysqlUseDB(Sql_Mysql.DB_BATT_INF);
            
            sql_str = "SELECT DISTINCT StationId,StationName,StationIp, "
                    + " FBSDeviceId,FBSDeviceIp,FBSDeviceName,GroupIndexInFBSDevice,"
                    + " BattGroupId,BattGroupNum,MonCount,BattFloatCurrent,FloatVolLevel,MonCapStd,MonVolStd,PublicKeyY"
                    + " FROM " + Sql_Mysql.BattInf_Table
                    //+ " WHERE FBSDeviceId like '6185%%%%%' "61850 = FBSDeviceId/10000
                    + " ORDER BY BattGroupId ASC";
            
            res = sql.sqlMysqlQuery(sql_str);
            while(res.next())
            {
                BattData_RT rtdata = new BattData_RT(m_AppCfg, m_Param, m_Conn_Pool);
                
                rtdata.StationId = res.getInt("StationId");
                rtdata.StationName = res.getString("StationName");
                Com.getIPFromStr(res.getString("StationIp").trim(), rtdata.StationIp);
                
                rtdata.FBSDeviceId = res.getInt("FBSDeviceId");
                rtdata.FBSDeviceIp = res.getString("FBSDeviceIp").trim();
                rtdata.FBSDeviceName = res.getString("FBSDeviceName");
                //System.err.println("rtdata.FBSDeviceName:"+rtdata.FBSDeviceName);
                rtdata.GroupIndexInFBSDevice = res.getInt("GroupIndexInFBSDevice");
                
                rtdata.BattGroupId = res.getInt("BattGroupId");
                rtdata.BattGroupNum = res.getInt("BattGroupNum");
                
                rtdata.MonCount = res.getInt("MonCount");
                if(rtdata.MonCount >= 500)
                    rtdata.MonCount = 500;
                if(rtdata.MonCount < 0)
                    rtdata.MonCount = 0;
                
                rtdata.PublicKeyY = res.getString("PublicKeyY");
                rtdata.MonStdCap = res.getFloat("MonCapStd");
                rtdata.MonStdVol = res.getFloat("MonVolStd");
                rtdata.setBattFloatVolCurrLevel(res.getFloat("FloatVolLevel"), res.getFloat("BattFloatCurrent"));
                Data_Array.add(rtdata);
            }
            
            int auto_cid = 1000;
            for(int n=0; n<Data_Array.size(); n++)
            {
                BattData_RT rtdata = Data_Array.get(n);
                
                boolean mon_data_ready = false;
                //-------------------------------------------------------------//
                if(false == mon_data_ready) {
                    for(int mn=0; mn<rtdata.MonCount; mn++) {
                        MonVolData data = new MonVolData(0, 0, auto_cid++);
                        rtdata.al_MonVol.add(data);
                        //System.out.println(data.monVol+"################");
                        rtdata.al_MonVol_RtOld.add(data.clone());
                        rtdata.al_MonVol_History.add(data.clone());
                    }
                }
                //-------------------------------------------------------------//
            }
            res.close();
            
            /**********************************************************************************/
            sql.sqlMysqlUseDB(Sql_Mysql.DB_BATT_INF);
            al_stationid.clear();
            sql_str = "SELECT DISTINCT StationId FROM " + Sql_Mysql.BattInf_Table;
            res = sql.sqlMysqlQuery(sql_str);
            while(res.next())
            {
                al_stationid.add(res.getString("StationId"));
            }
            /**********************************************************************************/
            
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /******************************************************************************************/
}