逆变和假负载设备通讯程序[兼容常规BTS加密和非加密版]
Administrator
2021-08-07 e64eded3dcffb628171ea5c28b830dd291956d02
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
package com.battmonitor.data_store;
 
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
 
import com.battmonitor.data.BattData_RT;
import com.battmonitor.data.BattStatData;
import com.battmonitor.sql.MysqlConnPool;
import com.battmonitor.sql.Sql_Mysql;
import com.dev.btse.data.FBS9100_ComBase;
 
public class InsertDataToMysql_Task implements Runnable {
    
    private BattData_RT m_batt_rt = null;
    private MysqlConnPool m_Conn_Pool;
    
    public InsertDataToMysql_Task() 
    {
    }
    
    public InsertDataToMysql_Task(BattData_RT rt_dat, MysqlConnPool pool) {
        m_batt_rt = rt_dat;
        m_Conn_Pool = pool;
    }
    
    public int getBattGroupID() {
        return m_batt_rt.BattGroupId;
    }
    
    private void inserTestDataToDB(Sql_Mysql sql_v, int test_stoptype_t) {
        boolean result = true;
        for(int c=0; c<3; c++) {
            try {
                sql_v.mysql_con.setAutoCommit(false);
                //------------------------------------------------------------//
                String sql_str = InsertDataToMysql_Task_SQL.getInsertBattTestDataStr(m_batt_rt);
                sql_v.sqlMysqlExecute(sql_str);
                //------------------------------------------------------------//
                ArrayList<String> al_sql_str = InsertDataToMysql_Task_SQL.getInsertOrUpdateBattTestDataStopStr(m_batt_rt);
                for(int n=0; n<al_sql_str.size(); n++) {
                    sql_v.sqlMysqlExecute(al_sql_str.get(n));
                }
                //------------------------------------------------------------//
                /*
                if(1 == m_batt_rt.mTestData.testRecordCount) {
                    m_batt_rt.MysqlRecordInf_Exist = true;
                }
                //------------------------------------------------------------//
                ResultSet rest_t = sql_v.sqlMysqlQuery("SELECT COUNT(*) FROM " + Sql_Mysql.BattTestDataInf_Table
                                    + " WHERE BattGroupId=" + m_batt_rt.BattGroupId
                                    + " AND test_record_count=" + m_batt_rt.mTestData.testRecordCount);
                if(rest_t.next()) {
                    if(rest_t.getInt(1) < 1) {
                        m_batt_rt.MysqlRecordInf_Exist = false;
                    }
                }
                */
                ResultSet rest_t = sql_v.sqlMysqlQuery("SELECT BattGroupId FROM " + Sql_Mysql.BattTestDataInf_Table
                                    + " WHERE BattGroupId=" + m_batt_rt.BattGroupId
                                    + " AND test_starttime='" + m_batt_rt.mTestData.getStartTestTimeString() + "'");
                if(rest_t.next()) {
                    m_batt_rt.MysqlRecordInf_Exist = true;
                } else {
                    m_batt_rt.MysqlRecordInf_Exist = false;
                }
                sql_v.logger.trace("BattGroupId:" + m_batt_rt.BattGroupId 
                                 + ", testRecordCount:" + m_batt_rt.mTestData.testRecordCount
                                 + ", test_starttime:" + m_batt_rt.mTestData.getStartTestTimeString()
                                 + " m_batt_rt.MysqlRecordInf_Exist:" + m_batt_rt.MysqlRecordInf_Exist
                                 + " test_stoptype_t:" + test_stoptype_t);
                //------------------------------------------------------------//
                sql_str = InsertDataToMysql_Task_SQL.getInsertOrUpdateBattTestDataInfStr(m_batt_rt, test_stoptype_t);
                sql_v.sqlMysqlExecute(sql_str);
                //------------------------------------------------------------//
                sql_v.mysql_con.commit();
                
                m_batt_rt.mTestData.recordNum += 1;
                m_batt_rt.clear_al_MonVol_History_New();
                
                m_batt_rt.MysqlDataResInfTable_Exist = true;
                m_batt_rt.MysqlRecordInf_Exist = true;
            } catch (SQLException e) {
                try {
                    sql_v.mysql_con.rollback();
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    sql_v.logger.error("InsertDataToMysql_Task.inserTestDataToDB():" + e1.toString(), e1);
                }
                sql_v.logger.error("InsertDataToMysql_Task.inserTestDataToDB():" + e.toString(), e);
                result = false;
            } finally {
                try {
                    sql_v.mysql_con.setAutoCommit(true);
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    sql_v.logger.error("InsertDataToMysql_Task.inserTestDataToDB():" + e1.toString(), e1);
                }
                if(true == result) {
                    break;
                } else {
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        sql_v.logger.error("InsertDataToMysql_Task.inserTestDataToDB():" + e.toString(), e);
                    }
                }
            }
        }
    }
    
    @Override
    public void run() {
        Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
        String sql_str = null;
        try {
            //----------------- get rtdata from db for not bts or FBS9100 dev -----------------------//
            /*
            if(((m_batt_rt.FBSDeviceId/1000000) != 910) 
                    && ((m_batt_rt.FBSDeviceId/1000000) != 91)
                    && ((m_batt_rt.FBSDeviceId/10000) != 9600)
                    && ((m_batt_rt.FBSDeviceId/10000) != 9610)
                    && ((m_batt_rt.FBSDeviceId/100000) != 9616)) {
                InsertDataToMysql_Task_SQL.get_MonData_From_BattData_RT_RamDB_Table(m_Conn_Pool, m_batt_rt);
            }
            */
            //----------------- get rtdata from db for not bts or FBS9100 dev -----------------------//
            
            sql.sqlMysqlUseDB(Sql_Mysql.DB_BATT_TESTDATA);
            
            if(false == m_batt_rt.MysqlDataTable_Exist) {
                sql_str = InsertDataToMysql_Task_SQL.getCreateBattTestDataStr("`tb_BattTestDataStop_" + m_batt_rt.BattGroupId + "` ");
                sql.sqlMysqlExecute(sql_str);
                m_batt_rt.MysqlDataTable_Exist = sql.sqlMysqlCheckIfTableExist("tb_BattTestData_" + m_batt_rt.BattGroupId);
            }
            
            if(false == m_batt_rt.MysqlDataTable_Exist) {
                sql.logger.warn("tb_BattTestData_" + m_batt_rt.BattGroupId + " is not exist, create it now...");
                sql_str = InsertDataToMysql_Task_SQL.getCreateBattTestDataStr("`tb_BattTestData_" + m_batt_rt.BattGroupId + "` ");
                sql.sqlMysqlExecute(sql_str);
            }
            
            if(/*(BattStatData.BATTSTATE_FLOAT != m_batt_rt.mTestData.TestState_RT) 
                &&*/ (BattStatData.BATTSTATE_FLOAT != m_batt_rt.mTestData.battTestState)) {
                inserTestDataToDB(sql, -1);
            } else {
                int st_type = m_batt_rt.mTestData.test_stoptype;
                if((BattStatData.TEST_LOADER_FBS9100S == m_batt_rt.mTestData.getLoaderType()) 
                    || ((FBS9100_ComBase.ALARM_POWERRESUMESTOP_HELUQI<=st_type) 
                    //&& (st_type<=FBS9100_ComBase.ALARM_SVLLSTOP_HELUQI))) {
                    && (st_type<=FBS9100_ComBase.ALARM_UNKOWN))) {
                    m_batt_rt.set_al_MonVol_History_New();
                    inserTestDataToDB(sql, m_batt_rt.mTestData.test_stoptype);
                }
                if(m_batt_rt.mTestData.testTimeLong < m_batt_rt.mTestTimeLongMin) {
                    try {
                        sql.mysql_con.setAutoCommit(false);
                        ArrayList<String> al_str = InsertDataToMysql_Task_SQL.getDeleteBattTestDataStr(m_batt_rt);
                        for(int n=0; n<al_str.size(); n++) {
                            sql.sqlMysqlExecute(al_str.get(n));
                            if(0 == n) {
                                sql.logger.trace("InsertDataToMysql_Task.run():" + al_str.get(n));
                            }
                        }
                        sql.mysql_con.commit();
                        
                    } catch (SQLException e) {
                        sql.mysql_con.rollback();
                        sql.logger.error("InsertDataToMysql_Task.run():" + e.toString(), e);
                    } finally {
                        sql.mysql_con.setAutoCommit(true);
                    }
                }
            }
        } catch (SQLException e) {
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
            m_batt_rt.clearStoreDataBusyTag();
        }
    }
}