package com.fgkj.services;
|
|
import com.fgkj.util.*;
|
import com.fgkj.dto.*;
|
import com.fgkj.mapper.BattCapFactory;
|
import com.fgkj.mapper.impl.Batt_param_lowMapper;
|
import com.fgkj.mapper.impl.Battalarm_dataMapper;
|
import com.fgkj.mapper.impl.Batttestdata_infMapper;
|
import com.fgkj.mapper.impl.BatttestdatastopMapper;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
@Service
|
public class BatttestdatastopService {
|
|
ServiceModel model = new ServiceModel();
|
|
@Resource
|
private BatttestdatastopMapper mapper;
|
@Resource
|
private Battalarm_dataMapper battAlarmDataMapper;
|
@Resource
|
private Batttestdata_infMapper battTestDataInfMapper;
|
@Resource
|
private Batt_param_lowMapper battParamLowMapper;
|
|
public ServiceModel serchByCondition(Object obj){
|
Batttestdatastop btds=(Batttestdatastop)obj;
|
if(btds.getBattGroupId()!=null && btds.getTest_record_count()!=null){
|
List list=mapper.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=mapper.serchByLowNew(bstop);
|
List<Batttestdatastop> listType=mapper.serchByType(bstop);
|
//TODO perry
|
/*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);
|
//TODO perry
|
// 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);
|
//TODO perry
|
// 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);
|
//TODO perry
|
// model.setMsgV(numStrV);
|
}else {
|
model.setCode(0);
|
//TODO perry
|
// 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=mapper.serchByLow(bstop);
|
//截止平均电压值
|
List<Batttestdatastop> list=mapper.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);
|
//TODO perry
|
// 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;
|
//TODO perry
|
// model.setLowRH(mon_avg);//平均截至电压
|
}
|
//TODO perry
|
// 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;
|
//TODO perry
|
// 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=mapper.serchByMonNum(obj);
|
//System.out.println(((Batttestdatastop)obj).getBattGroupId());
|
/*List<Batttestdatastop> listType=mapper.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=mapper.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=battTestDataInfMapper.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=battParamLowMapper.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= mapper.serchBadBatt((listE).get(j));
|
System.out.println(listE.get(j).getTdata().getBattGroupId()+" "+listB.size());
|
|
//将容量落后的信息插入到告警表中
|
Boolean bl=battAlarmDataMapper.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));;
|
}
|
}
|