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
package com.dev.lock.history;
 
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
 
import com.dev.lock.data.ElectLock_Inf;
import com.dev.lock.data.ElectLock_RecordState;
import com.dev.lock.data.ElectLock_Report;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
 
public class InsertDataToMysql_Task implements Runnable{
    private ElectLock_Inf m_lock_rt = null;
    private MysqlConnPool m_Conn_Pool;
    
    
    public InsertDataToMysql_Task() 
    {
    }
    
    public InsertDataToMysql_Task(ElectLock_Inf rt_dat, MysqlConnPool pool) {
        m_lock_rt = rt_dat;
        m_Conn_Pool = pool;
        
    }
    @Override
    public void run() {
        Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
        try {
            
            inserTestDataToDB(sql);
        } catch (Exception e) {
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
            m_lock_rt.clearStoreDataBusyTag();
        }
    }
    
    
    private void inserTestDataToDB(Sql_Mysql sql_v) {
        boolean result = true;
        for(int c=0; c<3; c++) {
            try {
                sql_v.mysql_con.setAutoCommit(false);
                //--------------------------------------------------------------//
                if(m_lock_rt.lockRecordState.lock_state == ElectLock_RecordState.Lock_State_Open) {
                    //当前为开锁事件
                    m_lock_rt.lockReport.calNewOpenEvent(m_lock_rt.lockRecordState.record_time);
                    
                    String sql_str = InsertDataToMysql_Task_SQL.getInsertLock_Report_TableDataStr(m_lock_rt.getLock_id(),m_lock_rt.lockReport);
                    
                    sql_v.sqlMysqlExecute(sql_str);
                }
                
            
                String sql_str = InsertDataToMysql_Task_SQL.getInsertLock_His_TableDataStr(m_lock_rt.getLock_id(), m_lock_rt.lockRecordState);
                //------------------------------------------------------------//
 
                sql_v.sqlMysqlExecute(sql_str);
                //------------------------------------------------------------//
                sql_v.mysql_con.commit();
                
            } catch (SQLException e) {
                try {
                    sql_v.mysql_con.rollback();
                } catch (SQLException e1) {
                    sql_v.logger.error("InsertDataToMysql_Task.inserTestDataToDB():" + e1.toString(), e1);
                }
                sql_v.logger.error("InsertDataToMysql_Task.-inserTestDataToDB():" + e.toString(), e);
                result = false;
            } finally {
                 
                if(true == result) {
                    m_lock_rt.lockRecordState.RecordHisOK();
                    break;   
                } else {
                    try {
                        Thread.sleep(1000);
                    } catch (Exception e) {
                        sql_v.logger.error("InsertDataToMysql_Task.inserTestDataToDB():" + e.toString(), e);
                    }
                }
            }
        }
    }
}