package com.whyc.service;
|
|
import com.whyc.dto.BattCapFactory;
|
import com.whyc.mapper.BattTestDataStopMapper;
|
import com.whyc.pojo.BattTestDataStop;
|
import com.whyc.pojo.BatttestdataInf;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@Service
|
public class BattTestDataStopService {
|
|
@Resource
|
private BattTestDataStopMapper mapper;
|
|
/**计算落后信息
|
* @param battTestDataInf*/
|
public BatttestdataInf calcBehindInfo(BatttestdataInf battTestDataInf) {
|
//筛选落后单体,计算总电压
|
List<BattTestDataStop> stopList = mapper.getList(battTestDataInf.getBattGroupId(), battTestDataInf.getTestRecordCount());
|
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<BattTestDataStop> listBehind = new ArrayList<>();//存放落后单体
|
if (stopList != null && stopList.size() > 0) {
|
for (int i = 0; i < stopList.size(); i++) {
|
STDAH = battTestDataInf.getBattInf().getMonCapStd();//标称电容
|
MonomerVolType = battTestDataInf.getBattInf().getMonVolStd();//电压类型
|
current = stopList.get(i).getTestCurr();
|
SumAH = stopList.get(i).getTestCap();
|
MaxMonomerVol = battTestDataInf.getMaxMonvol();//最大电压
|
MonomerVol = stopList.get(i).getMonVol();
|
sumVol += MonomerVol;//总电压值
|
hourRate = BattCapFactory.GetHourRate(STDAH, current);
|
realCap = BattCapFactory.GetMonomerCap(STDAH, hourRate, SumAH, MaxMonomerVol, MonomerVol, MonomerVolType, BattCapFactory.CapType_Real);
|
flag = BattCapFactory.JudgeAlarm(realCap, battTestDataInf.getAlarmLowCoe4CapAlarm(), battTestDataInf.getAlarmLowCoe4CapChange(), STDAH);
|
if (flag != 1) {
|
stopList.get(i).setGroupVol(sumVol);
|
listBehind.add(stopList.get(i));
|
} else {
|
continue;
|
}
|
flag = 1;
|
}
|
}
|
//查询平均截止电压值
|
Float avgVol = mapper.calcAvgVol(battTestDataInf.getBattGroupId(), battTestDataInf.getTestRecordCount());
|
if(avgVol!=null){
|
avgVol = BigDecimal.valueOf(avgVol).setScale(3, BigDecimal.ROUND_HALF_UP).floatValue();
|
battTestDataInf.setAvgVol(avgVol);
|
}
|
|
//整理编号和电压
|
if (listBehind != null && listBehind.size() > 0) {
|
//落后单体编号
|
String numStrN = "";
|
//落后单体电压
|
String numStrV = "";
|
//落后单体数
|
Integer monSum = listBehind.size();
|
|
for (int i = 0; i < listBehind.size(); i++) {
|
numStrN += ",";
|
numStrN += listBehind.get(i).getMonNum().toString();
|
numStrV += ",";
|
Float mon_vol = (float) Math.round(listBehind.get(i).getMonVol() * 1000) / 1000;
|
numStrV += mon_vol.toString();
|
|
}
|
numStrN = numStrN.substring(1, numStrN.length());
|
numStrV = numStrV.substring(1, numStrV.length());
|
battTestDataInf.setCapBehindMonVol(numStrV);
|
battTestDataInf.setCapBehindMonCode(numStrN);
|
battTestDataInf.setCapBehindMonNum(monSum);
|
}
|
|
return battTestDataInf;
|
}
|
}
|