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<FboData> 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<String> al_sql_str = new ArrayList<String>();
|
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;
|
}
|
}
|