whycxzp
2025-04-30 a089e8a00e2b71b9bf06946bf945bd9daa267ce8
自动灭火更新
1个文件已添加
74 ■■■■■ 已修改文件
src/main/java/com/whyc/schedule/FireRobotSchedule.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/schedule/FireRobotSchedule.java
New file
@@ -0,0 +1,74 @@
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();
                }
            }
        }
    }
}