package com.fgkj.dao.impl;
|
|
import java.math.BigDecimal;
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.text.ParseException;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import com.fgkj.dao.AlarmDaoFactory;
|
import com.fgkj.dao.BaseDAO;
|
import com.fgkj.dao.BattCapFactory;
|
import com.fgkj.dao.BattTestData;
|
import com.fgkj.dao.CallBack;
|
import com.fgkj.dao.DAOHelper;
|
import com.fgkj.db.DBUtil;
|
import com.fgkj.db.IDatabaseName;
|
import com.fgkj.dto.Alarm_param;
|
import com.fgkj.dto.BattInf;
|
import com.fgkj.dto.BattInf_Rebuild;
|
import com.fgkj.dto.Batt_Maint_Dealarm;
|
import com.fgkj.dto.Batttestdata;
|
import com.fgkj.dto.Batttestdata_inf;
|
import com.fgkj.dto.Batttestdatastop;
|
import com.fgkj.test.Mon_vols;
|
|
public class BatttestdatastopDAOImpl implements BaseDAO,CallBack{
|
|
public boolean add(Object obj) {
|
List<Batttestdata> list=(List<Batttestdata>) obj;
|
ArrayList<String> sql_str=new ArrayList();
|
if(list!=null&&list.size()>0){
|
for (int i = 0; i < list.size(); i++) {
|
Batttestdata b=list.get(i);
|
String sql="insert into db_batt_testdata.tb_batttestdatastop_"+b.getBattGroupId()+"(BattGroupId,test_record_count,test_type,data_new,data_available,record_num,test_starttime,record_time,test_timelong,online_vol,group_vol,test_curr,test_cap,mon_num,mon_vol,mon_tmp) " +
|
" values("+b.getBattGroupId()+","+b.getTest_record_count()+","+b.getTest_type()+","+b.getData_new()+","+b.getData_available()+","+b.getRecord_num()+",'"+DAOHelper.sdf.format(b.getTest_starttime())+"','"+DAOHelper.sdf.format(b.getRecord_time())+"',"+b.getTest_timelong()+","+b.getOnline_vol()+","+b.getGroup_vol()+","+b.getTest_curr()+","+b.getTest_cap()+","+b.getMon_num()+","+b.getMon_vol()+","+b.getMon_tmp()+")";
|
sql_str.add(sql);
|
}
|
}
|
boolean bl=DAOHelper.makeManualCommit(DBUtil.getConn(), sql_str);
|
return bl;
|
}
|
public boolean updatenew(Object obj) {
|
Batttestdata b=(Batttestdata) obj;
|
String sql="update db_batt_testdata.tb_batttestdatastop_"+b.getBattGroupId()+" set mon_tmp=? where mon_num=? and record_num=?";
|
boolean bl=DAOHelper.executeUpdate(DBUtil.getConn(), sql, new Object[]{b.getMon_tmp(),b.getMon_num(),b.getRecord_num()});
|
return bl;
|
}
|
|
public boolean update(Object obj) {
|
Mon_vols ms=(Mon_vols) obj;
|
String sql="update db_batt_testdata.tb_batttestdatastop_"+ms.getBattggroupid()+" set online_vol=? ,group_vol=? where record_num=?";
|
boolean bl=DAOHelper.executeUpdate(DBUtil.getConn(), sql, new Object[]{ms.getMon_vols(),ms.getMon_vols(),ms.getRecord_num()});
|
return bl;
|
}
|
|
//6.1电池充放电管理删除操作
|
public boolean del(Object obj) {
|
Batttestdatastop tstop = (Batttestdatastop) obj;
|
String sql = "delete from db_batt_testdata.tb_batttestdatastop_" + tstop.getBattGroupId()
|
+ " where battgroupid=? and test_record_count=? ";
|
Boolean bl = DAOHelper.executeUpdate(
|
DBUtil.getConn(), sql,
|
new Object[] { tstop.getBattGroupId(),tstop.getTest_record_count() });
|
return bl;
|
}
|
|
|
public List searchAll() {
|
return null;
|
}
|
//历史监测单体电压折线图
|
public List serchByCondition(Object obj) {
|
Batttestdatastop btd=(Batttestdatastop)obj;
|
//System.out.println(btd);
|
String sql="select num,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 db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+"" +
|
" where test_record_count=?";
|
//System.out.println(sql);
|
return DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{btd.getTest_record_count()}, new BatttestdatastopDAOImpl());
|
}
|
|
public List serchByInfo(Object obj) {
|
return null;
|
}
|
|
public List getResults(ResultSet rs) {
|
List list=new ArrayList();
|
try {
|
while(rs.next()){
|
Batttestdatastop bs=new Batttestdatastop();
|
bs.setNum(rs.getInt("num"));
|
bs.setBattGroupId(rs.getInt("BattGroupId"));
|
bs.setTest_record_count(rs.getInt("test_record_count"));
|
bs.setTest_type(rs.getInt("test_type"));
|
bs.setData_new(rs.getInt("data_new"));
|
bs.setData_available(rs.getInt("data_available"));
|
bs.setRecord_num(rs.getInt("record_num"));
|
bs.setTest_starttime(rs.getTimestamp("test_starttime"));
|
bs.setRecord_time(rs.getTimestamp("record_time"));
|
bs.setTest_timelong(rs.getInt("test_timelong"));
|
bs.setGroup_vol(rs.getFloat("group_vol"));
|
bs.setTest_curr(rs.getFloat("test_curr"));
|
bs.setTest_cap(rs.getFloat("test_cap"));
|
bs.setMon_num(rs.getInt("mon_num"));
|
bs.setMon_vol(rs.getFloat("mon_vol"));
|
list.add(bs);
|
//System.out.println(b);
|
}
|
} catch (SQLException e) {
|
e.printStackTrace();
|
}
|
return list;
|
}
|
|
//3根据battgroupid和mon_num(电池编号)查测试信息
|
public List serchByMonNum(Object obj) {
|
Batttestdatastop btd=(Batttestdatastop)obj;
|
String sql=null;
|
List list=new ArrayList();
|
if(btd.getMon_num()==0){
|
sql="select num,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 db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+"" +
|
" where battgroupid=? and mon_num!=? and test_record_count=? " +
|
" and db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+".data_available=1 ";
|
|
}else{
|
sql="select num,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 db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+"" +
|
" where battgroupid=? and mon_num=? and test_record_count=? " +
|
" and db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+".data_available=1 ";
|
}
|
list=DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{btd.getBattGroupId(),btd.getMon_num(),btd.getTest_record_count()}, new BatttestdatastopDAOImpl());
|
return list;
|
}
|
|
//1根据与阈值比较得到最新落后信息
|
public List serchByLowNew(Object obj) {
|
Batttestdatastop btd=(Batttestdatastop)obj;
|
// System.out.println(btd);
|
String sql="select battgroupid,mon_num,mon_vol from db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+" where mon_vol<=? *(select avg(mon_vol) from db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+" where battgroupid=?) and data_new=1 " +
|
" and db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+".data_available=1 and test_cap<? order by battgroupid ";
|
//System.out.println(sql);
|
return DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{btd.getLowV(),btd.getBattGroupId(),btd.getLowC()}, new CallBack() {
|
public List getResults(ResultSet rs) {
|
List list=new ArrayList();
|
try {
|
while(rs.next()){
|
Batttestdatastop bs=new Batttestdatastop();
|
bs.setBattGroupId(rs.getInt("BattGroupId"));
|
bs.setMon_num(rs.getInt("mon_num"));
|
bs.setMon_vol(rs.getFloat("mon_vol"));
|
list.add(bs);
|
//System.out.println(b);
|
}
|
} catch (SQLException e) {
|
e.printStackTrace();
|
}
|
return list;
|
}
|
});
|
}
|
|
//根据与电容阈值比较得到数据是否有效
|
public List serchByType(Object obj) {
|
Batttestdatastop btd=(Batttestdatastop)obj;
|
// System.out.println(btd.getBattGroupId()+" "+btd.getLowC());
|
String sql="select battgroupid,mon_num,mon_vol from db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+" where test_cap>? " +
|
" and db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+".data_available=1 order by battgroupid";
|
//System.out.println(sql);
|
return DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{btd.getLowC()}, new CallBack() {
|
public List getResults(ResultSet rs) {
|
List list=new ArrayList();
|
try {
|
while(rs.next()){
|
Batttestdatastop bs=new Batttestdatastop();
|
bs.setBattGroupId(rs.getInt("BattGroupId"));
|
bs.setMon_num(rs.getInt("mon_num"));
|
bs.setMon_vol(rs.getFloat("mon_vol"));
|
list.add(bs);
|
//System.out.println(b);
|
}
|
} catch (SQLException e) {
|
e.printStackTrace();
|
}
|
return list;
|
}
|
});
|
}
|
//2根据落后的数据(数量,编号,电压)
|
public List serchByLow(Object obj){
|
Batttestdatastop btd=(Batttestdatastop)obj;
|
String sql="select distinct battGroupId,test_curr,test_cap,mon_num,mon_vol " +
|
"from db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+" where test_record_count=? " +
|
" and db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+".data_available=1 ";
|
List<Batttestdatastop> list=DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{btd.getTest_record_count()}, new CallBack() {
|
public List getResults(ResultSet rs) {
|
List list=new ArrayList();
|
try {
|
while(rs.next()){
|
Batttestdatastop bstop=new Batttestdatastop();
|
bstop.setTest_curr(rs.getFloat("test_curr"));
|
bstop.setTest_cap(rs.getFloat("test_cap"));
|
bstop.setBattGroupId(rs.getInt("battGroupId"));
|
bstop.setMon_vol(rs.getFloat("mon_vol"));
|
bstop.setMon_num(rs.getInt("mon_num"));
|
list.add(bstop);
|
}
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
return list;
|
}
|
});
|
double realCap=0;//实际容量
|
double STDAH=0;//标存容量
|
int hourRate=0;//小时率
|
double current=0;//当前电流
|
double SumAH=0;//测试容量
|
double MaxMonomerVol=0;//最大电压
|
double MonomerVol=0; //最小电压
|
double MonomerVolType=0;//电池电压类型
|
int flag=1;//电池单体告警标识
|
float sumVol=0;//一组电池电压总值
|
List listB=new ArrayList();//存放落后单体
|
if(list!=null && list.size()>0){
|
for(int i=0;i<list.size();i++){
|
STDAH = btd.getTest_curr();//标称电容
|
MonomerVolType=btd.getTest_cap();//电压类型
|
current=list.get(i).getTest_curr();
|
SumAH=list.get(i).getTest_cap();
|
MaxMonomerVol=btd.getMon_max();//最大电压
|
MonomerVol=list.get(i).getMon_vol();
|
sumVol+=MonomerVol;//总电压值
|
hourRate=BattCapFactory.GetHourRate(STDAH, current);
|
realCap=BattCapFactory.GetMonomerCap(STDAH, hourRate, SumAH, MaxMonomerVol, MonomerVol, MonomerVolType, BattCapFactory.CapType_Real);
|
flag=BattCapFactory.JudgeAlarm(realCap, btd.getLowC(),btd.getLowV(), STDAH);
|
if(flag!=1){
|
list.get(i).setGroup_vol(sumVol);
|
listB.add(list.get(i));
|
}else{
|
continue;
|
}
|
flag=1;
|
}
|
}
|
return listB;
|
}
|
//根据截止平均电压值
|
public List serch(Object obj){
|
Batttestdatastop btd=(Batttestdatastop)obj;
|
// System.out.println(btd.getBattGroupId()+" "+btd.getLowC());
|
String sql="select avg(binary mon_vol) as mon_avg from db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+" where test_record_count=? " +
|
" and db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+".data_available=1 " +
|
"order by battgroupid";
|
|
return DAOHelper.executeQuery(sql, DBUtil.getConn(),new Object[]{btd.getTest_record_count()}, new CallBack() {
|
public List getResults(ResultSet rs) {
|
List list=new ArrayList();
|
try {
|
while(rs.next()){
|
Batttestdatastop bs=new Batttestdatastop();
|
bs.setMon_avg(rs.getFloat("mon_avg"));
|
list.add(bs);
|
//System.out.println(b);
|
}
|
} catch (SQLException e) {
|
e.printStackTrace();
|
}
|
return list;
|
}
|
});
|
}
|
|
//1.4得到历史最高电容/平均电容/最低电容/
|
public List serchByCap(Object obj){
|
Batttestdatastop btd=(Batttestdatastop)obj;
|
String sql="select battgroupid,max(test_cap) as max,min(test_cap) as min,avg(test_cap) as avg,test_cap from db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+" " +
|
" where db_batt_testdata.tb_batttestdatastop_"+btd.getBattGroupId()+".data_available=1" +
|
" order by test_starttime desc" ;
|
List list=DAOHelper.executeQuery(sql, DBUtil.getConn(), null, new CallBack() {
|
|
public List getResults(ResultSet rs){
|
List list=new ArrayList();
|
try {
|
while(rs.next()){
|
Batttestdatastop bs=new Batttestdatastop();
|
bs.setBattGroupId(rs.getInt("battGroupId"));
|
bs.setMon_avg(rs.getFloat("avg"));
|
bs.setMon_min(rs.getFloat("min"));
|
bs.setMon_max(rs.getFloat("max"));
|
bs.setTest_cap(rs.getFloat("test_cap"));
|
list.add(bs);
|
//System.out.println(b);
|
}
|
} catch (SQLException e) {
|
e.printStackTrace();
|
}
|
return list;
|
}
|
});
|
return list;
|
}
|
|
//7.1选出落后单体
|
public List serchBadBatt(Object obj){
|
Batt_Maint_Dealarm bmd=(Batt_Maint_Dealarm) obj;
|
BattInf binf=bmd.getBinf();
|
Batttestdata_inf tdata=bmd.getTdata();
|
//System.out.println("binf:"+binf+" tdata: "+tdata);
|
Batttestdatastop sdata=new Batttestdatastop();
|
String sql="select num,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 db_batt_testdata.tb_batttestdatastop_"+tdata.getBattGroupId()+" " +
|
" where " +
|
"test_record_count=? and record_time=? " +
|
" and db_batt_testdata.tb_batttestdatastop_"+tdata.getBattGroupId()+".data_available=1 ";//tb_batttestdatastop_id表中筛选出实际电压>标存电压*0.9的时的那笔数据,new Object[]{tdata.getTest_record_count(),tdata.getRecord_time()}
|
//System.out.println(sql);
|
|
List<Batt_Maint_Dealarm> list=DAOHelper.executeQuery(sql, DBUtil.getConn(),new Object[]{tdata.getTest_record_count(),tdata.getRecord_time()}, new CallBack() {
|
|
public List getResults(ResultSet rs) {
|
List<Batt_Maint_Dealarm> list=new ArrayList<Batt_Maint_Dealarm>();
|
try {
|
while(rs.next()){
|
Batt_Maint_Dealarm bmd=new Batt_Maint_Dealarm();
|
BattInf binf=new BattInf();
|
Batttestdatastop sdata=new Batttestdatastop();
|
sdata.setNum(rs.getInt("num"));
|
sdata.setBattGroupId(rs.getInt("BattGroupId"));
|
sdata.setTest_record_count(rs.getInt("test_record_count"));
|
sdata.setTest_type(rs.getInt("test_type"));
|
sdata.setData_new(rs.getInt("data_new"));
|
sdata.setData_available(rs.getInt("data_available"));
|
sdata.setRecord_num(rs.getInt("record_num"));
|
sdata.setTest_starttime(rs.getTimestamp("test_starttime"));
|
sdata.setRecord_time(rs.getTimestamp("record_time"));
|
sdata.setTest_timelong(rs.getInt("test_timelong"));
|
sdata.setGroup_vol(rs.getFloat("group_vol"));
|
sdata.setTest_curr(rs.getFloat("test_curr"));
|
sdata.setTest_cap(rs.getFloat("test_cap"));
|
sdata.setMon_num(rs.getInt("mon_num"));
|
sdata.setMon_vol(rs.getFloat("mon_vol"));
|
bmd.setBinf(binf);
|
bmd.setSdata(sdata);
|
list.add(bmd);
|
|
}
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
return list;
|
}
|
});
|
//System.out.println(list.size());
|
|
double realCap=0;//实际容量
|
float param=0;//容量告警参数
|
int Caplevel=0;
|
int Changelevel=0;//告警等级
|
Alarm_param aparam=new Alarm_param();
|
aparam.setAlm_id(AlarmDaoFactory.Alarm_CapAlarm);
|
List<Alarm_param> listA=(new Alarm_paramImpl()).serchByCondition(aparam);
|
if(listA!=null&&listA.size()>0){
|
param=listA.get(listA.size()-1).getAlm_low_coe();
|
Caplevel=listA.get(listA.size()-1).getAlm_low_level();
|
}
|
float Cparam=0;//容量更换告警参数
|
aparam.setAlm_id(AlarmDaoFactory.Alarm_CapChange);
|
List<Alarm_param> listC=(new Alarm_paramImpl()).serchByCondition(aparam);
|
if(listC!=null&&listA.size()>0){
|
Cparam=listC.get(listC.size()-1).getAlm_low_coe();
|
Changelevel=listC.get(listC.size()-1).getAlm_low_level();
|
}
|
//System.out.println("param:"+param);
|
double STDAH=0;//标存容量
|
int hourRate=0;//小时率
|
double current=0;//当前电流
|
double SumAH=0;//测试容量
|
double MaxMonomerVol=0;//最大电压
|
double MonomerVol=0; //最小电压
|
double MonomerVolType=0;//电池电压类型
|
int flag=1;//电池单体告警标识
|
List listB=new ArrayList();//存放落后单体
|
if(list!=null&&list.size()>0){
|
for(int i=0;i<list.size();i++){
|
STDAH=binf.getMonCapStd();
|
MonomerVolType=binf.getMonVolStd();
|
|
current=list.get(i).getSdata().getTest_curr();
|
SumAH=list.get(i).getSdata().getTest_cap();
|
MaxMonomerVol=tdata.getMax_monvol();
|
MonomerVol=list.get(i).getSdata().getMon_vol();
|
hourRate=BattCapFactory.GetHourRate(STDAH, current);
|
if(list.get(i).getSdata().getMon_vol()>binf.getMonVolStd()*BattTestData.test_stop){
|
realCap=BattCapFactory.GetMonomerCap(STDAH, hourRate, SumAH, MaxMonomerVol, MonomerVol, MonomerVolType, BattCapFactory.CapType_Real);
|
}else{
|
list.get(i).getSdata().setMon_vol(binf.getMonVolStd()*BattTestData.test_stop);
|
realCap=(new BatttestdataDAOImpl()).serchRealCap(list.get(i).getSdata());
|
}
|
flag=BattCapFactory.JudgeAlarm(realCap, param,Cparam, STDAH);
|
if(flag!=1){
|
list.get(i).getSdata().setNum(flag);
|
list.get(i).setBinf(binf); //将电池组信息设置进去
|
if(flag==AlarmDaoFactory.Alarm_CapAlarm){
|
list.get(i).getSdata().setData_available(Caplevel);//存放告警等级
|
list.get(i).getSdata().setTest_type(AlarmDaoFactory.Alarm_IGNAL_ID_CapAlarmLow);//存放alm_signal_id
|
list.get(i).getSdata().setTest_cap(Float.parseFloat(String.valueOf(realCap)));
|
}else if(flag==AlarmDaoFactory.Alarm_CapChange){
|
list.get(i).getSdata().setData_available(Changelevel);//存放告警等级
|
list.get(i).getSdata().setTest_type(AlarmDaoFactory.Alarm_IGNAL_ID_CapChangeLow);//存放alm_signal_id
|
list.get(i).getSdata().setTest_cap(Float.parseFloat(String.valueOf(realCap)));
|
}
|
listB.add(list.get(i));
|
}else{
|
continue;
|
}
|
flag=1;
|
}
|
}
|
return listB;
|
}
|
//电池配组管理(重要)
|
public List serchMakeGroup(Object obj1,Object obj2){
|
BattInf binf=(BattInf) obj1;
|
List listr=(List) binf.getObj();
|
Batttestdata_inf tinf=(Batttestdata_inf) obj2;
|
String sql="select num,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 db_batt_testdata.tb_batttestdatastop_"+tinf.getBattGroupId()+" " +
|
" where " +
|
"test_record_count=? and record_time=? " +
|
" and db_batt_testdata.tb_batttestdatastop_"+tinf.getBattGroupId()+".data_available=1 ";//tb_batttestdatastop_id表中筛选出实际电压>标存电压*0.9的时的那笔数据,new Object[]{tdata.getTest_record_count(),tdata.getRecord_time()}
|
|
List<Batttestdatastop> list=DAOHelper.executeQuery(sql, DBUtil.getConn(),new Object[]{tinf.getTest_record_count(),tinf.getRecord_time()}, new CallBack() {
|
|
public List getResults(ResultSet rs) {
|
List<Batttestdatastop> list=new ArrayList<Batttestdatastop>();
|
try {
|
while(rs.next()){
|
Batttestdatastop sdata=new Batttestdatastop();
|
sdata.setNum(rs.getInt("num"));
|
sdata.setBattGroupId(rs.getInt("BattGroupId"));
|
sdata.setTest_record_count(rs.getInt("test_record_count"));
|
sdata.setTest_type(rs.getInt("test_type"));
|
sdata.setData_new(rs.getInt("data_new"));
|
sdata.setData_available(rs.getInt("data_available"));
|
sdata.setRecord_num(rs.getInt("record_num"));
|
sdata.setTest_starttime(rs.getTimestamp("test_starttime"));
|
sdata.setRecord_time(rs.getTimestamp("record_time"));
|
sdata.setTest_timelong(rs.getInt("test_timelong"));
|
sdata.setGroup_vol(rs.getFloat("group_vol"));
|
sdata.setTest_curr(rs.getFloat("test_curr"));
|
sdata.setTest_cap(rs.getFloat("test_cap"));
|
sdata.setMon_num(rs.getInt("mon_num"));
|
sdata.setMon_vol(rs.getFloat("mon_vol"));
|
list.add(sdata);
|
|
}
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
return list;
|
}
|
});
|
double realCap=0;//实际容量
|
double STDAH=0;//标存容量
|
int hourRate=0;//小时率
|
double current=0;//当前电流
|
double SumAH=0;//测试容量
|
double MaxMonomerVol=0;//最大电压
|
double MonomerVol=0; //最小电压
|
double MonomerVolType=0;//电池电压类型
|
int flag=1;//电池单体告警标识
|
if(list!=null&&list.size()>0){
|
for(int i=0;i<list.size();i++){
|
Batttestdatastop sdata=list.get(i);
|
sdata.setNote(binf.getBattProducer());
|
for (int j = 0; j < listr.size(); j++) {
|
BattInf_Rebuild brinf=(BattInf_Rebuild) listr.get(j);
|
if(sdata.getMon_num()==brinf.getOld_monum()&&sdata.getBattGroupId()==brinf.getOld_battgroupid()){
|
sdata.setMon_num(-1);
|
break;
|
}
|
if(sdata.getMon_num()==brinf.getNew_monum()&&sdata.getBattGroupId()==brinf.getNew_battgroupid()){
|
sdata.setNote(brinf.getOld_battproducer());
|
break;
|
}
|
}
|
STDAH=binf.getMonCapStd();
|
MonomerVolType=binf.getMonVolStd();
|
|
current=sdata.getTest_curr();
|
SumAH=sdata.getTest_cap();
|
MaxMonomerVol=tinf.getMax_monvol();
|
MonomerVol=sdata.getMon_vol();
|
hourRate=BattCapFactory.GetHourRate(STDAH, current);
|
if(sdata.getMon_vol()>binf.getMonVolStd()*BattTestData.test_stop){
|
realCap=BattCapFactory.GetMonomerCap(STDAH, hourRate, SumAH, MaxMonomerVol, MonomerVol, MonomerVolType, BattCapFactory.CapType_Real);
|
}else{
|
sdata.setMon_vol(binf.getMonVolStd()*BattTestData.test_stop);
|
realCap=(new BatttestdataDAOImpl()).serchRealCap(sdata);
|
}
|
sdata.setTest_cap((float)realCap);
|
sdata.setPercent((float)(realCap/STDAH));
|
}
|
}
|
return list;
|
}
|
//查询指定电池组指定单体的实际容量
|
public double serchRealCapByMon_num(Object obj) {
|
BattInf binf=(BattInf) obj;
|
String sql="select " +
|
" db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+".battgroupid" +
|
",db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+".test_curr" +
|
",db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+".test_cap" +
|
",db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+".mon_vol" +
|
",db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+".test_record_count " +
|
",db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+".mon_num" +
|
",db_batt_testdata.tb_batttestdata_inf.max_monvol " +
|
" from db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+",db_batt_testdata.tb_batttestdata_inf " +
|
" where db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+".BattGroupId=db_batt_testdata.tb_batttestdata_inf.BattGroupId" +
|
" and db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+".test_starttime=db_batt_testdata.tb_batttestdata_inf.test_starttime" +
|
" and db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+".mon_num=? " +
|
" and db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+".data_available=1 " +
|
" and db_batt_testdata.tb_batttestdata_inf.test_type=3 " +
|
" order by db_batt_testdata.tb_batttestdatastop_"+binf.getBattGroupId()+".test_starttime desc " +
|
" limit 1 ";
|
//System.out.println("sql:"+sql);
|
List<Batttestdatastop> list=DAOHelper.executeQuery(sql, DBUtil.getConn(),new Object[]{binf.getMonNum()} , new CallBack() {
|
|
public List getResults(ResultSet rs) {
|
List<Batttestdatastop> list=new ArrayList<Batttestdatastop>();
|
try {
|
while(rs.next()){
|
Batttestdatastop sdata=new Batttestdatastop();
|
sdata.setBattGroupId(rs.getInt("battGroupId"));
|
sdata.setTest_record_count(rs.getInt("test_record_count"));
|
sdata.setMon_num(rs.getInt("mon_num"));
|
sdata.setTest_curr(rs.getFloat("test_curr"));
|
sdata.setTest_cap(rs.getFloat("test_cap"));
|
sdata.setMon_vol(rs.getFloat("mon_vol"));
|
sdata.setGroup_vol(rs.getFloat("max_monvol"));
|
list.add(sdata);
|
}
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
return list;
|
}
|
});
|
|
double realCap=0f;//实际容量
|
double STDAH=0;//标存容量
|
int hourRate=0;//小时率
|
double current=0;//当前电流
|
double SumAH=0;//测试容量
|
double MaxMonomerVol=0;//最大电压
|
double MonomerVol=0; //最小电压
|
double MonomerVolType=0;//电池电压类型(标存电压)
|
int flag=1;//电池单体告警标识
|
if(list!=null&&list.size()>0){
|
for(int i=0;i<list.size();i++){
|
STDAH=binf.getMonCapStd();
|
MonomerVolType=binf.getMonVolStd();
|
|
current=list.get(i).getTest_curr();
|
SumAH=list.get(i).getTest_cap();
|
MaxMonomerVol=list.get(i).getGroup_vol();
|
MonomerVol=list.get(i).getMon_vol();
|
hourRate=BattCapFactory.GetHourRate(STDAH, current);
|
if(list.get(i).getMon_vol()>binf.getMonVolStd()*BattTestData.test_stop){
|
realCap=BattCapFactory.GetMonomerCap(STDAH, hourRate, SumAH, MaxMonomerVol, MonomerVol, MonomerVolType, BattCapFactory.CapType_Real);
|
}else{
|
list.get(i).setMon_vol(binf.getMonVolStd()*BattTestData.test_stop);
|
realCap=(new BatttestdataDAOImpl()).serchRealCap(list.get(i));
|
}
|
}
|
}
|
return realCap;
|
}
|
|
public static void main(String[] args) {
|
Batttestdatastop btds=new Batttestdatastop();
|
btds.setBattGroupId(1000001);
|
btds.setTest_record_count(1);
|
BatttestdatastopDAOImpl bi=new BatttestdatastopDAOImpl();
|
//List<Batttestdatastop> list=bi.serch(btds);
|
List<Batttestdatastop> list=bi.serchByCap(btds);
|
for(Batttestdatastop b:list){
|
System.out.println(b);
|
}
|
//System.out.println(new BatttestdatastopDAOImpl().serchByCondition(btds));
|
}
|
}
|