package io.renren.modules.aspen.controller; import io.renren.modules.aspen.entity.TElecdashboardAlarmEntity; import io.renren.modules.aspen.entity.TElecdashboardRealtimeEntity; import io.renren.modules.aspen.entity.base.TElecdashboard; import io.renren.modules.aspen.service.TElecdashboardAlarmService; import io.renren.modules.aspen.service.TElecdashboardRealtimeService; import io.renren.modules.aspen.core.utils.DashboardDataPullUtils; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import io.renren.modules.aspen.core.constant.AlarmValue; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; /** * 电厂大屏实时数据 * * @author Wang Zi Wen * @email wangggziwen@163.com * @date 2022/09/01 10:58:53 */ @Component @Configuration @EnableScheduling public class TElecdashboardRealtimeController { @Resource private TElecdashboardRealtimeService tElecdashboardRealtimeService; @Resource private TElecdashboardAlarmService tElecdashboardAlarmService; /** * 每5秒抓取实时数据,存入数据库 */ @Scheduled(cron = "*/5 * * * * ?" ) public void getExcelDataEvery5Seconds(){ DashboardDataPullUtils dashboardDataPullUtils = new DashboardDataPullUtils(); // 抓取实时数据 TElecdashboard tElecdashboard = dashboardDataPullUtils.getCsvData(new TElecdashboardRealtimeEntity()); TElecdashboardRealtimeEntity tElecdashboardRealtimeEntity = (TElecdashboardRealtimeEntity) tElecdashboard; // 存入数据库 tElecdashboardRealtimeService.insertTElecdashboardRealtime(tElecdashboardRealtimeEntity); // 检查预警值 this.checkAlarmValue(tElecdashboardRealtimeEntity); } /** * 检查预警值,如果实时数据超出预警值范围,插入预警数据 * * @param tElecdashboardRealtimeEntity 电厂大屏实时数据 */ private void checkAlarmValue(TElecdashboardRealtimeEntity tElecdashboardRealtimeEntity) { // 清空电厂大屏预警表 tElecdashboardAlarmService.deleteTElecdashboardAlarm(); // 预警值list ArrayList alarmValueList = new ArrayList(Arrays.asList( tElecdashboardRealtimeEntity.getQt61001(), tElecdashboardRealtimeEntity.getQt61002(), tElecdashboardRealtimeEntity.getQt61003(), tElecdashboardRealtimeEntity.getQt61004(), tElecdashboardRealtimeEntity.getQt61005(), tElecdashboardRealtimeEntity.getQt61101(), tElecdashboardRealtimeEntity.getQt61102(), tElecdashboardRealtimeEntity.getQt61103(), tElecdashboardRealtimeEntity.getQt61104(), tElecdashboardRealtimeEntity.getQt61105(), tElecdashboardRealtimeEntity.getQt76001(), tElecdashboardRealtimeEntity.getQt76002() )); // 位号list ArrayList codeList = new ArrayList(Arrays.asList( "QT61001", "QT61002", "QT61003", "QT61004", "QT61005", "QT61101", "QT61102", "QT61103", "QT61104", "QT61105", "QT76001", "QT76002" )); for (int i = 0; i < alarmValueList.size(); i++) { // 空值或错误值,不处理 if ("".equals(alarmValueList.get(i)) || "#NAME?".equals(alarmValueList.get(i))) { continue; } // 小于最小值或大于最大值,插入预警数据 if ( AlarmValue.valueOf(codeList.get(i)).getMin() > Double.parseDouble(alarmValueList.get(i)) || AlarmValue.valueOf(codeList.get(i)).getMax() < Double.parseDouble(alarmValueList.get(i)) ) { tElecdashboardAlarmService.insertTElecdashboardAlarm(new TElecdashboardAlarmEntity( alarmValueList.get(i), new Date(), codeList.get(i), AlarmValue.valueOf(codeList.get(i)).getDesc() )); } } } /** * 每天8:00清空电厂大屏实时数据表 */ @Scheduled(cron = "0 0 8 * * ?") public void clearTElecdashboardRealtimeEveryHour() { tElecdashboardRealtimeService.deleteTElecdashboardRealtime(); } }