package com.fgkj.dao.impl; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.Vector; import com.fgkj.actions.ActionUtil; import com.fgkj.dao.BattTestData; import com.fgkj.dao.DAOHelper; import com.fgkj.db.DBUtil; import com.fgkj.db.IDatabaseName; import com.fgkj.db.Upload; import com.fgkj.dto.Com; import com.fgkj.dto.User_inf; import com.fgkj.fbo.FboData; import com.fgkj.fbo.FboDataInf; import java.sql.Connection; import javax.servlet.http.HttpSession; public class FboDataUploadImpl { public static boolean uploadFboData(User_inf uinf, int bg_id, FboDataInf data_inf, ArrayList al_fbo_data, String[] row_data, Boolean bl) { boolean upload_res = false; Connection conn=DBUtil.getConn(); int testRecordCount = Upload.getBattTestRecordCountNew(bg_id, "db_batt_testdata.tb_batttestdata_inf", conn); Calendar ald = Calendar.getInstance(); ald.set(Calendar.YEAR, 2000 + data_inf.TestStartTime.year); ald.set(Calendar.MONTH, data_inf.TestStartTime.month); ald.set(Calendar.DATE, data_inf.TestStartTime.day); ald.set(Calendar.HOUR_OF_DAY, data_inf.TestStartTime.hour); ald.set(Calendar.MINUTE, data_inf.TestStartTime.minute); ald.set(Calendar.SECOND, data_inf.TestStartTime.second); int data_type = BattTestData.BATTSTATE_DISCHARGE; if (0xFD != data_inf.DataType) { data_type = BattTestData.BATTSTATE_CHARGE; } String tb_name = "`db_batt_testdata`.`tb_BattTestData_" + bg_id + "` "; String tb_stop_name = "`db_batt_testdata`.`tb_BattTestDataStop_" + bg_id + "` "; String tmp_tb_name = "`db_batt_testdata`.`tb_BattTestData_FBO` "; try { String sql_str = "CREATE TABLE IF NOT EXISTS " + tb_name + "( `num` BIGINT NOT NULL AUTO_INCREMENT, " + "`BattGroupId` INT NOT NULL DEFAULT 0, " + "`test_record_count` INT NOT NULL DEFAULT 0, " + "`test_type` INT NOT NULL DEFAULT 0, " + "`data_new` BOOLEAN NOT NULL DEFAULT false, " + "`data_available` BOOLEAN NOT NULL DEFAULT false, " + "`record_num` INT NOT NULL DEFAULT 0, " + "`test_starttime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', " + "`record_time` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', " + "`test_timelong` INT NOT NULL DEFAULT 0, " + "`group_vol` FLOAT NOT NULL DEFAULT 0, " + "`test_curr` FLOAT NOT NULL DEFAULT 0, " + "`test_cap` FLOAT NOT NULL DEFAULT 0, " + "`mon_num` INT NOT NULL DEFAULT 0, " + "`mon_vol` FLOAT NOT NULL DEFAULT 0, " + "INDEX index_test_record_count (`test_record_count`), " + "PRIMARY KEY (`num`));"; // sql.sqlMysqlExecute(sql_str); DAOHelper.executeCreateTable(conn, sql_str); sql_str = "CREATE TABLE IF NOT EXISTS " + tb_stop_name + "( `num` BIGINT NOT NULL AUTO_INCREMENT, " + "`BattGroupId` INT NOT NULL DEFAULT 0, " + "`test_record_count` INT NOT NULL DEFAULT 0, " + "`test_type` INT NOT NULL DEFAULT 0, " + "`data_new` BOOLEAN NOT NULL DEFAULT false, " + "`data_available` BOOLEAN NOT NULL DEFAULT false, " + "`record_num` INT NOT NULL DEFAULT 0, " + "`test_starttime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', " + "`record_time` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', " + "`test_timelong` INT NOT NULL DEFAULT 0, " + "`group_vol` FLOAT NOT NULL DEFAULT 0, " + "`test_curr` FLOAT NOT NULL DEFAULT 0, " + "`test_cap` FLOAT NOT NULL DEFAULT 0, " + "`mon_num` INT NOT NULL DEFAULT 0, " + "`mon_vol` FLOAT NOT NULL DEFAULT 0, " + "INDEX index_test_record_count (`test_record_count`), " + "PRIMARY KEY (`num`));"; // sql.sqlMysqlExecute(sql_str); DAOHelper.executeCreateTable(conn, sql_str); //System.out.println("***************************"); sql_str = "DROP TABLE IF EXISTS " + tmp_tb_name; //sql.sqlMysqlExecute(sql_str); DAOHelper.executeCreateTable( conn, sql_str); //System.out.println("***************************"); sql_str = "CREATE TEMPORARY TABLE IF NOT EXISTS " + tmp_tb_name + "( `num` BIGINT NOT NULL AUTO_INCREMENT, " + "`BattGroupId` INT NOT NULL DEFAULT 0, " + "`test_record_count` INT NOT NULL DEFAULT 0, " + "`test_type` INT NOT NULL DEFAULT 0, " + "`data_new` BOOLEAN NOT NULL DEFAULT false, " + "`data_available` BOOLEAN NOT NULL DEFAULT false, " + "`record_num` INT NOT NULL DEFAULT 0, " + "`test_starttime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', " + "`record_time` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', " + "`test_timelong` INT NOT NULL DEFAULT 0, " + "`group_vol` FLOAT NOT NULL DEFAULT 0, " + "`test_curr` FLOAT NOT NULL DEFAULT 0, " + "`test_cap` FLOAT NOT NULL DEFAULT 0, " + "`mon_num` INT NOT NULL DEFAULT 0, " + "`mon_vol` FLOAT NOT NULL DEFAULT 0, " + "INDEX index_test_record_count (`test_record_count`), " + "PRIMARY KEY (`num`));"; // sql.sqlMysqlExecute(sql_str); DAOHelper.executeCreateTable( conn, sql_str); int test_time_long = 0; FboData tmp_data = null; for (int cnt = 0; cnt < al_fbo_data.size(); cnt++) { if (false == bl) { break; } tmp_data = al_fbo_data.get(cnt); //System.out.println(al_fbo_data); test_time_long = tmp_data.m_TestTime.hour; test_time_long = test_time_long * 60 + tmp_data.m_TestTime.minute; test_time_long = test_time_long * 60 + tmp_data.m_TestTime.second; if (cnt > 0) { for (int sn = 0; sn < data_inf.BattSum; sn++) { if (tmp_data.SingleVol[sn] < 0.1) { tmp_data.SingleVol[sn] = al_fbo_data.get(cnt - 1).SingleVol[sn]; } } } sql_str = "INSERT INTO " + tmp_tb_name + " " + "(BattGroupId, " + "test_record_count, " + "test_type, " + "data_new, " + "data_available, " + "record_num, " + "test_starttime, " + "record_time, " + "test_timelong, " + "group_vol, " + "test_curr, " + "test_cap, " + "mon_num, " + "mon_vol)" + " VALUES "; for (int n = 0; n < data_inf.BattSum; n++) { if (n > 0) sql_str += ", "; sql_str += "(" + bg_id + ", " + testRecordCount + ", " + data_type + ", " + true + ", " + true + ", " + (cnt + 1) + ", " + "'" + Com.get_DTF(ald.getTime(), Com.DTF_YMDhms) + "', " + "'" + Com.get_DTF(new Date(), Com.DTF_YMDhms) + "', " + test_time_long + ", " + tmp_data.SumVoltage + ", " + tmp_data.SubCurrent[0] + ", " + tmp_data.SubCap[0] + ", " + (n + 1) + ", " + tmp_data.SingleVol[n] + ")"; } // System.out.println(sql_str); //upload_res = sql.sqlMysqlExecute(sql_str); upload_res = DAOHelper .executeCreateTable( conn, sql_str); if (al_fbo_data.size() > 0) { row_data[5]=((cnt + 1) * 100) / al_fbo_data.size()+""; } } if ((true == bl) && (al_fbo_data.size() > 0) && (true == upload_res)) { // -----------------------------------------------------------------// upload_res=false; double test_ah = tmp_data.SubCap[0]; test_ah = (test_ah * 3600) / test_time_long; // 平均测试电流 tmp_data.SubCurrent[0] = (float) test_ah; // -----------------------------------------------------------------// ArrayList al_sql_str = new ArrayList(); sql_str = "INSERT INTO " + tb_stop_name + " (BattGroupId, " + "test_record_count, " + "test_type, " + "data_new, " + "data_available, " + "record_num, " + "test_starttime, " + "record_time, " + "test_timelong, " + "group_vol, " + "test_curr, " + "test_cap, " + "mon_num, " + "mon_vol)" + " VALUES "; for (int n = 0; n < data_inf.BattSum; n++) { if (n > 0) sql_str += ", "; sql_str = sql_str + "(" + bg_id + ", " + testRecordCount + ", " + data_type + ", " + true + ", " + true + ", " + al_fbo_data.size() + ", " + "'" + Com.get_DTF(ald.getTime(), Com.DTF_YMDhms) + "', " + "'" + Com.get_DTF(new Date(), Com.DTF_YMDhms) + "', " + test_time_long + ", " + tmp_data.SumVoltage + ", " + tmp_data.SubCurrent[0] + ", " + tmp_data.SubCap[0] + ", " + (n + 1) + ", " + tmp_data.SingleVol[n] + ")"; } al_sql_str.add(sql_str); String sql_str1 = "INSERT INTO TB_BattTestData_Inf " + " (BattGroupId, " + "test_record_count, " + "test_type, " + "record_time_interval, " + "data_new, " + "data_available, " + "record_num, " + "test_starttime, " + "test_starttype, " + "record_time, " + "test_timelong, " + "test_stoptype," + "group_vol, " + "test_curr, " + "test_cap, " + "max_monnum, " + "max_monvol, " + "min_monnum, " + "min_monvol, " + "upload_usr_id) " + " VALUES " + "(" + bg_id + ", " + testRecordCount + ", " + data_type + ", " + data_inf.SaveInterval * 60 + ", " + true + ", " + true + ", " + al_fbo_data.size() + ", " + "'" + Com.get_DTF(ald.getTime(), Com.DTF_YMDhms) + "', " + data_inf.Device + ", " + "'" + Com.get_DTF(new Date(), Com.DTF_YMDhms) + "', " + test_time_long + ", " + data_inf.StopType + ", " + tmp_data.SumVoltage + ", " + tmp_data.SubCurrent[0] + ", " + tmp_data.SubCap[0] + ", " + (data_inf.SMaxIndex[0] + 1) + ", " + data_inf.SMaxVol[0] + ", " + (data_inf.SMinIndex[0] + 1) + ", " + data_inf.SMinVol[0] + ", " + uinf.getUId() + ") "; if (1 == testRecordCount) { sql_str1 = "UPDATE TB_BattTestData_Inf SET " + "test_type=" + data_type + ", " + "record_time_interval=" + data_inf.SaveInterval * 60 + ", " + "data_new=" + true + ", " + "data_available=" + true + ", " + "record_num=" + al_fbo_data.size() + ", " + "test_starttime='" + Com.get_DTF(ald.getTime(), Com.DTF_YMDhms) + "', " + "test_starttype=" + data_inf.Device + ", " + "record_time='" + Com.get_DTF(new Date(), Com.DTF_YMDhms) + "', " + "test_timelong=" + test_time_long + ", " + "test_stoptype=" + data_inf.StopType + ", " + "group_vol=" + tmp_data.SumVoltage + ", " + "test_curr=" + tmp_data.SubCurrent[0] + ", " + "test_cap=" + tmp_data.SubCap[0] + ", " + "max_monnum=" + (data_inf.SMaxIndex[0] + 1) + ", " + "max_monvol=" + data_inf.SMaxVol[0] + ", " + "min_monnum=" + (data_inf.SMinIndex[0] + 1) + ", " + "min_monvol=" + data_inf.SMinVol[0] + ", " + "upload_usr_id=" + uinf.getUId() + " " + " WHERE BattGroupId=" + bg_id + " AND test_record_count=" + testRecordCount; } al_sql_str.add(sql_str1); String sql_str2 = "INSERT INTO " + tb_name + " " + " (BattGroupId, " + "test_record_count, " + "test_type, " + "data_new, " + "data_available, " + "record_num, " + "test_starttime, " + "record_time, " + "test_timelong, " + "group_vol, " + "test_curr, " + "test_cap, " + "mon_num, " + "mon_vol) " + " SELECT " + " BattGroupId, " + "test_record_count, " + "test_type, " + "data_new, " + "data_available, " + "record_num, " + "test_starttime, " + "record_time, " + "test_timelong, " + "group_vol, " + "test_curr, " + "test_cap, " + "mon_num, " + "mon_vol " + " FROM " + tmp_tb_name; al_sql_str.add(sql_str2); upload_res = DAOHelper.makeManualCommit(conn,al_sql_str); } } catch (Exception e) { e.printStackTrace(); upload_res = false; } finally { // sql.close_con(); DBUtil.close(null, null,conn); } return upload_res; } }