package com.fgkj.services; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.fgkj.actions.ActionUtil; import com.fgkj.dao.BaseDAO; import com.fgkj.dao.BaseDAOFactory; import com.fgkj.dao.BattCapFactory; import com.fgkj.dao.impl.Batt_param_lowImpl; import com.fgkj.dao.impl.Battalarm_dataDAOImpl; import com.fgkj.dao.impl.Batttestdata_infDAOImpl; import com.fgkj.dao.impl.BatttestdatastopDAOImpl; import com.fgkj.dto.BattInf; import com.fgkj.dto.Batt_Maint_Dealarm; import com.fgkj.dto.Batt_param_low; import com.fgkj.dto.Batttestdata_inf; import com.fgkj.dto.Batttestdatastop; import com.fgkj.dto.ServiceModel; import com.mysql.fabric.xmlrpc.base.Array; public class BatttestdatastopService { private ServiceModel model; private BaseDAO dao; private BaseDAO daoA; private BaseDAO daoT; public BatttestdatastopService() { model = new ServiceModel(); dao = BaseDAOFactory.getBaseDAO(BaseDAO.BATTTESTDATASTOP); daoA = BaseDAOFactory.getBaseDAO(BaseDAO.BATTALARM_DATA); daoT = BaseDAOFactory.getBaseDAO(BaseDAO.BATTTESTDATA_INF); } public ServiceModel serchByCondition(Object obj){ Batttestdatastop btds=(Batttestdatastop)obj; if(btds.getBattGroupId()!=null && btds.getTest_record_count()!=null){ List list=dao.serchByCondition(obj); if(list !=null && list.size()>0){ model.setCode(1); model.setData(list); } } return model; } //1查询最新落后单体 public ServiceModel serchByLowNew(Object obj){ Batttestdatastop bstop=(Batttestdatastop) obj; //System.out.println("bstop: "+bstop); List listLow=((BatttestdatastopDAOImpl)dao).serchByLowNew(bstop); List listType=((BatttestdatastopDAOImpl)dao).serchByType(bstop); if(listType!=null&& listType.size()>0){ model.setNewsum(1); }else{ model.setNewsum(0); } if(listLow!=null && listLow.size()>0){ model.setCode(1); model.setData(listLow); model.setSum(listLow.size());//最新落后单体数 //落后最新单体编号 String numStrN=""; for(int i=0;i listLow=((BatttestdatastopDAOImpl)dao).serchByLow(bstop); //截止平均电压值 List list=((BatttestdatastopDAOImpl)dao).serch(bstop); if(listLow!=null && listLow.size()>0){ //落后单体编号 String numStrN=""; //落后单体电压 String numStrV=""; for(int i=0;i0){ Float mon_avg=(float)Math.round(list.get(list.size()-1).getMon_avg()*1000)/1000; model.setLowRH(mon_avg);//平均截至电压 } model.setSum(listLow.size());//落后单体数 model.setNewsum(listLow.get(listLow.size()-1).getBattGroupId()); }else { model.setCode(0); //model.setSum(0); if(list!=null&&list.size()>0){ Float mon_avg=(float)Math.round(list.get(list.size()-1).getMon_avg()*1000)/1000; model.setLowRH(mon_avg);//平均截至电压 } } //System.out.println(model.getNewsum()+" "+model.getLowRH()); return model; } //3.得到测试信息 public ServiceModel serchByMonNum(Object obj){ model=new ServiceModel(); List list=((BatttestdatastopDAOImpl)dao).serchByMonNum(obj); //System.out.println(((Batttestdatastop)obj).getBattGroupId()); /*List listType=((BatttestdatastopDAOImpl)dao).serchByType(obj); if(listType!=null&& listType.size()>0){ model.setNewsum(1); }else{ model.setNewsum(0); }*/ if(list!=null && list.size()>0){ model.setCode(1); model.setData(list);//根据battgroupid和mon_num的值查出电池单体信息 }else{ model.setCode(0); } // for(Batttestdatastop b:list){ // System.out.println(b); // } // System.out.println(list); return model; } //1.4得到历史最高电容/平均电容/最低电容/最新测试电容 public ServiceModel serchByCap(Object obj) { model=new ServiceModel(); List list=((BatttestdatastopDAOImpl)dao).serchByCap(obj); if(list!=null&&list.size()>0){ model.setCode(0); model.setData(list); }else{ model.setCode(0); model.setMsg("查询失败!"); } return model; } //7.1电池放电落后单体筛选,并将电容告警的电池组加到告警表中 public ServiceModel serchBadBatt(Object obj){ List list=((Batttestdata_infDAOImpl)daoT).serchBadBatt(obj); //System.out.println("list.size(): "+list.size()); float param=0;//容量有效参数 double STDAH=0;//标存容量 Batt_param_low capLow=new Batt_param_low(); capLow.setLow_type(BattCapFactory.CapType_type);; capLow.setLow_nametype(BattCapFactory.CapType_name); capLow.setLow_method(BattCapFactory.CapType_method); List listC=(new Batt_param_lowImpl().serchByLow(capLow)); //System.out.println("listC:"+listC.size()); if(listC!=null&&listC.size()>0){ param=listC.get(listC.size()-1).getLow_value(); } int flag=0;//该次放电是否有效判断 List listE=new ArrayList();//存放放电有效的测试 if(list!=null&&list.size()>0){ for(int i=0;i0){ int tdata_battgroupid=list.get(i).getTdata().getBattGroupId(); int e_battgroupid=listE.get(listE.size()-1).getTdata().getBattGroupId(); if(tdata_battgroupid!=e_battgroupid){ listE.add(list.get(i)); }else{ continue; } }else{ listE.add(list.get(i)); } flag=0; } } } List listAll=new ArrayList();//存放最后查询出来的所有落后电池组的落后单体 for (int j = 0; j < listE.size(); j++) { List listB= ((BatttestdatastopDAOImpl)dao).serchBadBatt((listE).get(j)); System.out.println(listE.get(j).getTdata().getBattGroupId()+" "+listB.size()); //将容量落后的信息插入到告警表中 Boolean bl=((Battalarm_dataDAOImpl)daoA).addPro(listB); // System.out.println(bl); if(listB!=null&&listB.size()>0){ listAll.add(listB); } } if(listAll!=null&&listAll.size()>0){ model.setData(listAll); model.setCode(1); model.setMsg("查询成功!"); }else{ model.setCode(0); model.setMsg("查询失败!"); } System.out.println(listAll.size()); return model; } public static void main(String[] args) throws ParseException { // Batttestdatastop btds=new Batttestdatastop(); // btds.setBattGroupId(1002563); // //btds.setTest_record_count(1); // btds.setMon_num(0); BatttestdatastopService bs=new BatttestdatastopService(); // bs.serchByMonNum(btds); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse("2000-01-01"); Date date2 = sdf.parse("2020-01-01"); Batt_Maint_Dealarm bmd=new Batt_Maint_Dealarm(); BattInf binf=new BattInf(); Batttestdata_inf tdata=new Batttestdata_inf(); binf.setBattInUseDate(ActionUtil.getSimpDate(date1)); binf.setBattInUseDate1(ActionUtil.getSimpDate(date2)); binf.setStationName1(""); binf.setStationName(""); binf.setBattProducer(""); binf.setBattGroupId(0); bmd.setBinf(binf); tdata.setTest_starttime(ActionUtil.getSimpDate(date1)); tdata.setTest_starttime_ex(ActionUtil.getSimpDate(date2)); bmd.setTdata(tdata); bs.serchBadBatt(bmd); //System.out.println(new BatttestdatastopService().serchByCondition(btds));; } }