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> page = battStationTempAlarmService.getPage(1, 10, 1); PageInfo data = page.getData(); List 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 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(); } } } } }