ソースを参照

检查预警值,如果实时数据超出预警值范围,插入预警数据

Wang Zi Wen 3 年 前
コミット
6416b59078

+ 63 - 5
src/main/java/io/renren/modules/aspen/controller/TElecdashboardRealtimeController.java

@@ -1,15 +1,20 @@
 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.Date;
 
 /**
  * 电厂大屏实时数据
@@ -26,23 +31,78 @@ 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.getExcelData(new TElecdashboardRealtimeEntity());
         TElecdashboardRealtimeEntity tElecdashboardRealtimeEntity = (TElecdashboardRealtimeEntity) tElecdashboard;
+        // 存入数据库
         tElecdashboardRealtimeService.insertTElecdashboardRealtime(tElecdashboardRealtimeEntity);
         // 检查预警值
-        this.checkAlarmValue();
+        this.checkAlarmValue(tElecdashboardRealtimeEntity);
     }
 
     /**
-     * 检查预警值
+     * 检查预警值,如果实时数据超出预警值范围,插入预警数据
+     *
+     * @param tElecdashboardRealtimeEntity 电厂大屏实时数据
      */
-    private void checkAlarmValue() {
+    private void checkAlarmValue(TElecdashboardRealtimeEntity tElecdashboardRealtimeEntity) {
+        // 清空电厂大屏预警表
+        tElecdashboardAlarmService.deleteTElecdashboardAlarm();
+        // 预警值
+        ArrayList<String> alarmValueList = new ArrayList();
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt61001());
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt61002());
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt61003());
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt61004());
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt61005());
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt61101());
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt61102());
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt61103());
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt61104());
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt61105());
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt76001());
+        alarmValueList.add(tElecdashboardRealtimeEntity.getQt76002());
+        // 位号
+        ArrayList<String> codeList = new ArrayList();
+        alarmValueList.add("QT61001");
+        alarmValueList.add("QT61002");
+        alarmValueList.add("QT61003");
+        alarmValueList.add("QT61004");
+        alarmValueList.add("QT61005");
+        alarmValueList.add("QT61101");
+        alarmValueList.add("QT61102");
+        alarmValueList.add("QT61103");
+        alarmValueList.add("QT61104");
+        alarmValueList.add("QT61105");
+        alarmValueList.add("QT76001");
+        alarmValueList.add("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()
+                ));
+            }
+        }
     }
 
     /**
@@ -50,9 +110,7 @@ public class TElecdashboardRealtimeController {
      */
     @Scheduled(cron = "0 0 8 * * ?")
     public void clearTElecdashboardRealtimeEveryHour() {
-        System.out.println("clearTElecdashboardRealtimeEveryHour is running...");
         tElecdashboardRealtimeService.deleteTElecdashboardRealtime();
-        System.out.println("clearTElecdashboardRealtimeEveryHour finished!");
     }
 
 }

+ 14 - 0
src/main/java/io/renren/modules/aspen/dao/TElecdashboardAlarmDao.java

@@ -0,0 +1,14 @@
+package io.renren.modules.aspen.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import io.renren.modules.aspen.entity.TElecdashboardAlarmEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface TElecdashboardAlarmDao extends BaseMapper<TElecdashboardAlarmEntity> {
+
+    public void insertTElecdashboardAlarm(TElecdashboardAlarmEntity elecdashboardAlarm);
+
+    public void deleteTElecdashboardAlarm();
+
+}

+ 82 - 0
src/main/java/io/renren/modules/aspen/entity/TElecdashboardAlarmEntity.java

@@ -0,0 +1,82 @@
+package io.renren.modules.aspen.entity;
+
+import java.util.Date;
+
+/**
+ * 电厂大屏预警数据
+ *
+ * @author Wang Zi Wen
+ * @email wangggziwen@163.com
+ * @date 2022/09/20 14:14:06
+ */
+public class TElecdashboardAlarmEntity {
+
+    /** 主键id */
+    private Long id;
+
+    /** 值 */
+    private String alarmValue;
+
+    /** 预警时间 */
+    private Date alarmTime;
+
+    /** 位号 */
+    private String code;
+
+    /** 内容 */
+    private String description;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setAlarmValue(String alarmValue)
+    {
+        this.alarmValue = alarmValue;
+    }
+
+    public String getAlarmValue()
+    {
+        return alarmValue;
+    }
+    public void setCode(String code)
+    {
+        this.code = code;
+    }
+
+    public String getCode()
+    {
+        return code;
+    }
+    public void setDescription(String description)
+    {
+        this.description = description;
+    }
+
+    public String getDescription()
+    {
+        return description;
+    }
+
+    public Date getAlarmTime() {
+        return alarmTime;
+    }
+
+    public void setAlarmTime(Date alarmTime) {
+        this.alarmTime = alarmTime;
+    }
+
+    public TElecdashboardAlarmEntity() { }
+
+    public TElecdashboardAlarmEntity(String alarmValue, Date alarmTime, String code, String description) {
+        this.alarmValue = alarmValue;
+        this.alarmTime = alarmTime;
+        this.code = code;
+        this.description = description;
+    }
+}

+ 0 - 13
src/main/java/io/renren/modules/aspen/entity/TElecdashboradDayEntity.java

@@ -1,13 +0,0 @@
-package io.renren.modules.aspen.entity;
-
-import io.renren.modules.aspen.entity.base.TElecdashboard;
-
-/**
- * 电厂大屏每日数据
- *
- * @author Wang Zi Wen
- * @email wangggziwen@163.com
- * @date 2022/09/01 10:01:20
- */
-public class TElecdashboradDayEntity extends TElecdashboard {
-}

+ 12 - 0
src/main/java/io/renren/modules/aspen/service/TElecdashboardAlarmService.java

@@ -0,0 +1,12 @@
+package io.renren.modules.aspen.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import io.renren.modules.aspen.entity.TElecdashboardAlarmEntity;
+
+public interface TElecdashboardAlarmService extends IService<TElecdashboardAlarmEntity> {
+
+    public void insertTElecdashboardAlarm(TElecdashboardAlarmEntity elecDashboardDataAlarm);
+
+    public void deleteTElecdashboardAlarm();
+
+}

+ 34 - 0
src/main/java/io/renren/modules/aspen/service/impl/TElecdashboardAlarmServiceImpl.java

@@ -0,0 +1,34 @@
+package io.renren.modules.aspen.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.renren.modules.aspen.dao.TElecdashboardAlarmDao;
+import io.renren.modules.aspen.entity.TElecdashboardAlarmEntity;
+import io.renren.modules.aspen.service.TElecdashboardAlarmService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @author Wang Zi Wen
+ * @email wangggziwen@163.com
+ * @date 2022/09/20 14:19:26
+ */
+@Service("elecDashboardDataAlarmService")
+public class TElecdashboardAlarmServiceImpl
+        extends ServiceImpl<TElecdashboardAlarmDao, TElecdashboardAlarmEntity>
+        implements TElecdashboardAlarmService {
+
+    @Resource
+    private TElecdashboardAlarmDao tElecdashboardAlarmDao;
+
+    @Override
+    public void insertTElecdashboardAlarm(TElecdashboardAlarmEntity elecDashboardDataAlarm) {
+        tElecdashboardAlarmDao.insertTElecdashboardAlarm(elecDashboardDataAlarm);
+    }
+
+    @Override
+    public void deleteTElecdashboardAlarm() {
+        tElecdashboardAlarmDao.deleteTElecdashboardAlarm();
+    }
+
+}

+ 30 - 0
src/main/resources/mapper/aspen/TElecdashboardRealtimeDao.xml.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="io.renren.modules.aspen.dao.TElecdashboardAlarmDao">
+
+    <insert id="insertTElecdashboardAlarm" parameterType="io.renren.modules.aspen.entity.TElecdashboardAlarmEntity">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT SEQ_T_ELECDASHBOARD_ALARM.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_elecdashboard_alarm
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="alarmValue != null">alarm_value,</if>
+            <if test="alarmTime != null">alarm_time,</if>
+            <if test="code != null">code,</if>
+            <if test="description != null">description,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="alarmValue != null">#{alarmValue},</if>
+            <if test="alarmTime != null">#{alarmTime},</if>
+            <if test="code != null">#{code},</if>
+            <if test="description != null">#{description},</if>
+        </trim>
+    </insert>
+
+    <!-- 清空电厂大屏预警数据表 -->
+    <delete id="deleteTElecdashboardAlarm">
+        delete from t_elecdashboard_alarm
+    </delete>
+
+</mapper>