package com.fgkj.dao.impl; import java.math.BigDecimal; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.text.ParseException; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.poi.ss.formula.ptg.TblPtg; import com.fgkj.dao.BaseDAO; 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.Batttestdata; import com.fgkj.dto.Batttestdata_inf; import com.fgkj.dto.Batttestdatastop; import com.fgkj.test.Mon_vols; public class BatttestdataDAOImpl implements BaseDAO{ public boolean add(Object obj) { List list=(List) obj; ArrayList 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_batttestdata_"+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 update(Object obj) { Mon_vols ms=(Mon_vols) obj; String sql="update db_batt_testdata.tb_batttestdata_"+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; } public boolean updatenew(Object obj) { Batttestdata b=(Batttestdata) obj; float mon_tmp=(float) (Math.random()+20); BigDecimal bd = new BigDecimal((double)mon_tmp); bd = bd.setScale(1,4); mon_tmp = bd.floatValue(); String sql="update db_batt_testdata.tb_batttestdata_"+b.getBattGroupId()+" set mon_tmp=? where num=?"; boolean bl=DAOHelper.executeUpdate(DBUtil.getConn(), sql, new Object[]{mon_tmp,b.getNum()}); return bl; } public boolean updatePro(Object obj) { List list= (List) obj; ArrayList sql_str=new ArrayList(); if(list!=null&&list.size()>0){ for (int i = 0; i < list.size(); i++) { Batttestdata b=list.get(i); float mon_tmp=(float) (Math.random()+20); BigDecimal bd = new BigDecimal((double)mon_tmp); bd = bd.setScale(1,4); mon_tmp = bd.floatValue(); String sql="update db_batt_testdata.tb_batttestdata_"+b.getBattGroupId()+" set mon_tmp="+mon_tmp+" where num="+b.getNum(); sql_str.add(sql); System.out.println(mon_tmp+" "+i); } } boolean bl=DAOHelper.makeManualCommit(DBUtil.getConn(), sql_str); return bl; } //6.1电池充放电管理删除操作 public boolean del(Object obj) { Batttestdata test = (Batttestdata) obj; String sql = "delete from db_batt_testdata.tb_batttestdata_" + test.getBattGroupId() + " where battgroupid=? and test_record_count=? "; Boolean bl = DAOHelper.executeUpdate( DBUtil.getConn(), sql, new Object[] { test.getBattGroupId(),test.getTest_record_count() }); return bl; } //电池充/放电数据管理删除 public String delPro(Object obj) { Batttestdata bd=(Batttestdata) obj; String sql="delete from db_batt_testdata.tb_batttestdata_"+bd.getBattGroupId()+" where test_record_count="+bd.getTest_record_count(); return sql; } public List searchAll() { return null; } /** * * @param obj 是当前实现类的对象并设置了BattGroupId的值 * @return */ public List searchAll(Object obj) { return null; } //历史监测 public List serchByCondition(Object obj) { Batttestdata btd=(Batttestdata)obj; int number=btd.getRecord_num();//总数 int roteN=0; int endN=BattTestData.RC_NUM_PARAM;//总笔数 if(number<=endN){ roteN=1; }else{ if(number%endN==0){ roteN=number/endN; }else{ roteN=number/endN+1; } } //System.out.println(number+" "+roteN); String sql="select num,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 " + " from db_batt_testdata.tb_batttestdata_"+btd.getBattGroupId()+"" + " where test_record_count=? and (record_num%"+roteN+"=0 or test_timelong>=? or test_timelong<= ?) " + " and db_batt_testdata.tb_batttestdata_"+btd.getBattGroupId()+".data_available=1 "; //System.out.println(sql); List list=DAOHelper.executeQuery(sql, DBUtil.getConn(),new Object[]{btd.getTest_record_count(),btd.getNum(),btd.getTest_type()}, new CallBack() { public List getResults(ResultSet rs) { List list=new ArrayList(); try { while(rs.next()){ Batttestdata b=new Batttestdata(); b.setNum(rs.getInt("num")); b.setBattGroupId(rs.getInt("BattGroupId")); b.setTest_record_count(rs.getInt("test_record_count")); b.setTest_type(rs.getInt("test_type")); b.setData_new(rs.getInt("data_new")); b.setData_available(rs.getInt("data_available")); b.setRecord_num(rs.getInt("record_num")); b.setTest_starttime(rs.getTimestamp("test_starttime")); b.setRecord_time(rs.getTimestamp("record_time")); b.setTest_timelong(rs.getInt("test_timelong")); b.setOnline_vol(rs.getFloat("online_vol")); b.setGroup_vol(rs.getFloat("group_vol")); b.setTest_curr(rs.getFloat("test_curr")); b.setTest_cap(rs.getFloat("test_cap")); b.setMon_num(rs.getInt("mon_num")); b.setMon_vol(rs.getFloat("mon_vol")); b.setMon_tmp(rs.getFloat("mon_tmp")); list.add(b); } }catch (SQLException e) { e.printStackTrace(); } return list; } }); return list; } //查询某一次测试中的最大一次的测试时长和最短时长<历史监测> public List serchMaxAndMintime(Object obj){ Batttestdata btb=(Batttestdata) obj; String sql=" SELECT MAX(record_num) number,MAX(test_timelong) as maxtime,MIN(test_timelong) as mintime FROM db_batt_testdata.tb_batttestdata_"+btb.getBattGroupId()+ " WHERE test_record_count=? and db_batt_testdata.tb_batttestdata_"+btb.getBattGroupId()+".data_available=1 LIMIT 1"; List list=DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{btb.getTest_record_count()}, new CallBack() { public List getResults(ResultSet rs) { List list=new ArrayList(); try { while(rs.next()){ Batttestdata btb=new Batttestdata(); btb.setNum(rs.getInt("maxtime")); btb.setTest_type(rs.getInt("mintime")); btb.setRecord_num(rs.getInt("number")); list.add(btb); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } }); return list; } //7.1落后单体筛选中当单体电<标存电压*0.9时的测试电容就是实际电容 public float serchRealCap(Object obj){ Batttestdatastop sdata=(Batttestdatastop) obj; String sql="select test_cap from db_batt_testdata.tb_batttestdata_"+sdata.getBattGroupId()+" "+ " WHERE test_record_count=? and mon_vol>? and mon_num=? " + " and db_batt_testdata.tb_batttestdata_"+sdata.getBattGroupId()+".data_available=1 " + " order by record_time DESC " + " LIMIT 1 "; List list=DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{sdata.getTest_record_count(),sdata.getMon_vol(),sdata.getMon_num()}, new CallBack() { public List getResults(ResultSet rs) { List list=new ArrayList(); try { while(rs.next()){ float test_cap=rs.getFloat("test_cap"); list.add(Math.abs(test_cap)); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } }); float test_cap=0f; if(list!=null&&list.size()>0){ test_cap=(Float) list.get(list.size()-1); } return test_cap; } public List serchByInfo(Object obj) { return null; } public static void main(String[] args) { Batttestdata b=new Batttestdata(); b.setBattGroupId(1000010); b.setTest_record_count(1); Date d1 = new Date(); List list=new BatttestdataDAOImpl().serchByCondition(b); System.out.println(new Date().getTime() - d1.getTime()); System.out.println(list.size()+"*********"); } }