package com.whyc.schedule;
|
|
import com.github.pagehelper.PageInfo;
|
import com.whyc.dto.Response;
|
import com.whyc.pojo.db_alarm.BattStationTempAlarm;
|
import com.whyc.pojo.db_batt.BattMonsLocation;
|
import com.whyc.pojo.db_param.BattAlarmParam;
|
import com.whyc.pojo.db_real_batt.RtData;
|
import com.whyc.service.BattAlarmParamService;
|
import com.whyc.service.BattStationTempAlarmService;
|
import com.whyc.service.BattStationTempService;
|
import com.whyc.service.RtDataService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.util.List;
|
|
@EnableScheduling
|
@Component
|
@Slf4j
|
public class FireRobotSchedule {
|
|
@Autowired
|
private BattStationTempAlarmService battStationTempAlarmService;
|
|
@Autowired
|
private RtDataService rtDataService;
|
|
@Autowired
|
private BattAlarmParamService battAlarmParamService;
|
|
//查询电池站点温度告警并校验是否存在电池单体温度高. 存在的情况下,给电池单体温度高的电池单体.进行消防机器人灭火处理
|
@Scheduled(fixedRate = 4000,initialDelay = 2000)
|
public void checkAndStopFire() {
|
//查询正在发生一级告警的电池单体有哪些
|
Response<PageInfo<BattStationTempAlarm>> page = battStationTempAlarmService.getPage(1, 10, 1);
|
PageInfo<BattStationTempAlarm> data = page.getData();
|
List<BattStationTempAlarm> alarmList = data.getList();
|
|
for (int i = 0; i < alarmList.size(); i++) {
|
//查询温度告警的阈值
|
BattAlarmParam param = battAlarmParamService.getTempAlarmParam();
|
|
BattStationTempAlarm tempAlarm = alarmList.get(i);
|
BattMonsLocation battMonsLocation = tempAlarm.getBattMonsLocation();
|
String battMons = battMonsLocation.getBattMons();
|
Integer battGroupId = battMonsLocation.getBattGroupId();
|
String[] battMonsArray = battMons.split(",");
|
//转为int类型数组
|
Integer[] battMonsArrayInt = new Integer[battMonsArray.length];
|
for (int j = 0; j < battMonsArray.length; j++) {
|
battMonsArrayInt[j] = Integer.parseInt(battMonsArray[j]);
|
}
|
//查询对应的电池组和电池单体的温度数据
|
List<RtData> rtDataList = rtDataService.getList(battGroupId, battMonsArrayInt);
|
for (int j = 0; j < rtDataList.size(); j++) {
|
RtData rtData = rtDataList.get(j);
|
//温度基准值固定为25度
|
int tempBase = 25;
|
if (rtData.getMonTmp() > tempBase*param.getAlmHighCoe()) { //单体温度高于温度阈值
|
//TODO 单体灭火指令没给,在电池站点温度告警表中设计增加列-是否发送了灭火指令,默认为否,暂没追加!!!!!!!!!! 追加后,上面的要查询并判断是否发送了灭火指令,如果发送了,则不进行下述的灭火流程
|
//给电池单体温度高的电池单体.进行消防机器人灭火处理
|
Integer monNum = rtData.getMonNum();
|
}
|
}
|
}
|
|
|
}
|
|
}
|