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<Batttestdatastop> listLow=((BatttestdatastopDAOImpl)dao).serchByLowNew(bstop);
|
List<Batttestdatastop> 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.size();i++){
|
numStrN+=",";
|
numStrN+=listLow.get(i).getMon_num().toString();
|
|
}
|
numStrN=numStrN.substring(1, numStrN.length());
|
//System.out.println(numStr);
|
model.setMsgN(numStrN);
|
//
|
//落后最新单体编号
|
String numStrV="";
|
for(int i=0;i<listLow.size();i++){
|
numStrV+=",";
|
numStrV+=listLow.get(i).getMon_vol().toString();
|
|
}
|
numStrV=numStrV.substring(1, numStrV.length());
|
//System.out.println(numStr);
|
model.setMsgV(numStrV);
|
}else {
|
model.setCode(0);
|
model.setSum(0);
|
model.setMsgN("");
|
}
|
|
//System.out.println(model);
|
return model;
|
}
|
|
//1.2得到落后的信息
|
public ServiceModel serchByLow(Object obj){
|
Batttestdatastop bstop=(Batttestdatastop) obj;
|
model=new ServiceModel();
|
//根据落后的数据(数量,编号,电压)
|
List<Batttestdatastop> listLow=((BatttestdatastopDAOImpl)dao).serchByLow(bstop);
|
//截止平均电压值
|
List<Batttestdatastop> list=((BatttestdatastopDAOImpl)dao).serch(bstop);
|
if(listLow!=null && listLow.size()>0){
|
//落后单体编号
|
String numStrN="";
|
//落后单体电压
|
String numStrV="";
|
for(int i=0;i<listLow.size();i++){
|
numStrN+=",";
|
numStrN+=listLow.get(i).getMon_num().toString();
|
numStrV+=",";
|
Float mon_vol=(float)Math.round(listLow.get(i).getMon_vol()*1000)/1000;
|
numStrV+=mon_vol.toString();
|
|
}
|
numStrN=numStrN.substring(1, numStrN.length());
|
numStrV=numStrV.substring(1, numStrV.length());
|
|
model.setCode(1);
|
model.setMsgN(numStrN);//落后单体编号
|
model.setMsgV(numStrV);//落户单体电压编号
|
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);//平均截至电压
|
}
|
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<Batttestdatastop> list=((BatttestdatastopDAOImpl)dao).serchByMonNum(obj);
|
//System.out.println(((Batttestdatastop)obj).getBattGroupId());
|
/*List<Batttestdatastop> 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<Batttestdatastop> 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<Batt_Maint_Dealarm> 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<Batt_param_low> 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<Batt_Maint_Dealarm> listE=new ArrayList();//存放放电有效的测试
|
if(list!=null&&list.size()>0){
|
for(int i=0;i<list.size();i++){
|
STDAH=list.get(i).getBinf().getMonCapStd();
|
float testCap=list.get(i).getTdata().getTest_cap();//此次放电量统计
|
//System.out.println(list.get(i).getTdata().getBattGroupId()+" "+list.get(i).getTdata().getTest_record_count()+" "+testCap+" "+param+" "+STDAH);
|
flag=BattCapFactory.Judge(testCap, param, STDAH);
|
if(flag==1){
|
if(listE.size()>0){
|
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<Batt_Maint_Dealarm> 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));;
|
}
|
}
|