yangjingjing 5 سال پیش
والد
کامیت
89f9bf841d

+ 11 - 1
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/LiveDataMapper.java

@@ -21,8 +21,18 @@ public interface LiveDataMapper extends BaseMapper<LiveData> {
 
     int updateLiveData(@Param("data") LiveData data);
 
-    List<LiveDataVO> getLiveData( @Param("deviceId") String deviceId);
+    List<LiveDataVO> getLiveData(@Param("deviceId") String deviceId);
 
     int checkExist(@Param("deviceId") String deviceId, @Param("sensorId") String sensorId);
 
+    /**
+     * 获取实时数据 用于获取数据时判断
+     *
+     * @param deviceId 设备编号
+     * @param sensorId 传感器编号
+     * @return
+     */
+    LiveData getData(@Param("deviceId") String deviceId, @Param("sensorId") String sensorId);
+
+
 }

+ 8 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/ILiveDataService.java

@@ -57,4 +57,12 @@ public interface ILiveDataService extends IService<LiveData> {
     void acceptLiveData(LiveData liveData);
 
     List<LiveDataVO> getLiveData(String deviceId);
+
+    /**
+     * 获取实时数据,用于实时数据存储时判断
+     * @param deviceId
+     * @param sensorId
+     * @return
+     */
+    LiveData getData(String deviceId, String sensorId);
 }

+ 5 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/LiveDataServiceImpl.java

@@ -97,5 +97,10 @@ public class LiveDataServiceImpl extends ServiceImpl<LiveDataMapper, LiveData> i
         return this.baseMapper.getLiveData(deviceId);
     }
 
+    @Override
+    public LiveData getData(String deviceId, String sensorId) {
+        return this.baseMapper.getData(deviceId, sensorId);
+    }
+
 
 }

+ 58 - 70
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/task/LiveDataTask.java

@@ -52,6 +52,13 @@ public class LiveDataTask {
 
     //获取异步结果
     //处理安监平台数据
+
+    /**
+     * 8小时内只生成1条告警信息
+     * 实时数据和历史数据不需要全部记录,相同值只记录开始点和结束点
+     * @param liveData
+     * @return
+     */
     @Transactional(rollbackFor = Exception.class)
     public Future<String> alarmTask(String liveData) {
         try {
@@ -70,12 +77,12 @@ public class LiveDataTask {
 //                + oldData[9] + ":" + oldData[10];// 上报时间
             String deviceId = oldData[4];//设备编号
             int len = Integer.parseInt(oldData[11]);
-            //根据设备id获取设备信息
-            DeviceInfo deviceInfo = deviceInfoService.getDeviceInfoById(deviceId);
-            String startTime = deviceInfo.getWorkTimeFrom();
-            String endTime = deviceInfo.getWorkTimeTo();
-            SimpleDateFormat sf = new SimpleDateFormat("HH:mm:ss");
-            String now = sf.format(new Date());//获取当前时间
+//            //根据设备id获取设备信息
+//            DeviceInfo deviceInfo = deviceInfoService.getDeviceInfoById(deviceId);
+//            String startTime = deviceInfo.getWorkTimeFrom();
+//            String endTime = deviceInfo.getWorkTimeTo();
+//            SimpleDateFormat sf = new SimpleDateFormat("HH:mm:ss");
+//            String now = sf.format(new Date());//获取当前时间
             for (int i = 0; i < len; i++) {
                 String seq = oldData[12 + 6 * i] + oldData[13 + 6 * i];// 设备类型+编号(传感器编号)
                 String str = oldData[14 + 6 * i];// 03 第一位0正数 1负数;第二位表示有几位小数
@@ -98,35 +105,35 @@ public class LiveDataTask {
                 data1.setSensorId(seq);
                 data1.setDataValue(val);
                 //如果当前时间在工作范围内,判断异常以及推送。如果不在工作时间段,则标记数据
-                if (CommonUtils.isEffectiveDate(sf.parse(now), sf.parse(startTime), sf.parse(endTime))) {
-                    List<DeviceThreshold> thresholds = deviceThresholdService.getThresholdsBySensorID(seq);//根据传感器编号获取传感器阈值信息
-                    SensorInfo sensorInfo = sensorInfoService.getBySensorId(seq, deviceId);//获取传感器信息
-                    if (thresholds.size() > 0) {
-                        //code:0
-                        DeviceThreshold thresholds_0 = thresholds.get(0);
-                        double low_0 = thresholds_0.getLowValue();
-                        double high_0 = thresholds_0.getHighValue();
-                        //code:1
-                        DeviceThreshold thresholds_1 = thresholds.get(1);
-                        double low_1 = thresholds_1.getLowValue();
-                        double high_1 = thresholds_1.getHighValue();
-                        //code:2
-                        DeviceThreshold thresholds_2 = thresholds.get(2);
-                        double low_2 = thresholds_2.getLowValue();
-                        double high_2 = thresholds_2.getHighValue();
-                        //code:3
-                        DeviceThreshold thresholds_3 = thresholds.get(3);
-                        double low_3 = thresholds_3.getLowValue();
-                        double high_3 = thresholds_3.getHighValue();
-                        //code:4
-                        DeviceThreshold thresholds_4 = thresholds.get(4);
-                        double low_4 = thresholds_4.getLowValue();
-                        double high_4 = thresholds_4.getHighValue();
-                        if (val >= low_0 && val <= high_0) {//状态0
-                            data.setStatus(0);
-                            data1.setStatus(0);
-                        }
-                        if ((val < low_0 && val >= low_1) || (val > high_0 && val <= high_1)) {//状态1
+//                if (CommonUtils.isEffectiveDate(sf.parse(now), sf.parse(startTime), sf.parse(endTime))) {
+                List<DeviceThreshold> thresholds = deviceThresholdService.getThresholdsBySensorID(seq);//根据传感器编号获取传感器阈值信息
+                SensorInfo sensorInfo = sensorInfoService.getBySensorId(seq, deviceId);//获取传感器信息
+                if (thresholds.size() > 0) {
+                    //code:0
+                    DeviceThreshold thresholds_0 = thresholds.get(0);
+                    double low_0 = thresholds_0.getLowValue();
+                    double high_0 = thresholds_0.getHighValue();
+                    //code:1
+                    DeviceThreshold thresholds_1 = thresholds.get(1);
+                    double low_1 = thresholds_1.getLowValue();
+                    double high_1 = thresholds_1.getHighValue();
+                    //code:2
+                    DeviceThreshold thresholds_2 = thresholds.get(2);
+                    double low_2 = thresholds_2.getLowValue();
+                    double high_2 = thresholds_2.getHighValue();
+                    //code:3
+                    DeviceThreshold thresholds_3 = thresholds.get(3);
+                    double low_3 = thresholds_3.getLowValue();
+                    double high_3 = thresholds_3.getHighValue();
+                    //code:4
+                    DeviceThreshold thresholds_4 = thresholds.get(4);
+                    double low_4 = thresholds_4.getLowValue();
+                    double high_4 = thresholds_4.getHighValue();
+                    if (val >= low_0 && val <= high_0) {//状态0
+                        data.setStatus(0);
+                        data1.setStatus(0);
+                    }
+                    if ((val < low_0 && val >= low_1) || (val > high_0 && val <= high_1)) {//状态1
 //                            ServerAlarm alarm = new ServerAlarm();
 //                            alarm.setToken(token);
 //                            alarm.setCompanyId(deviceInfo.getCompanyId());
@@ -147,34 +154,15 @@ public class LiveDataTask {
 //                            event.setIsreport(1);
 //                            event.setThirdPartyId(thirdPartyId);
 //                            alarmEventService.save(event);
-                            data.setStatus(1);
-                            data1.setStatus(1);
-                        }
-                        if ((val < low_1 && val >= low_2) || (val > high_1 && val <= high_2)) {//状态2
-//                            ServerAlarm alarm = new ServerAlarm();
-//                            alarm.setToken(token);
-//                            alarm.setCompanyId(deviceInfo.getCompanyId());
-//                            alarm.setCompanyName(deviceInfo.getCompanyName());
-//                            alarm.setAlarmType(sensorInfo.getSensorName() + "超限");
-//                            alarm.setAlarmDevice(deviceInfo.getDeviceName());
-//                            alarm.setAlarmData(val + "");
-//                            alarm.setDataUnit(sensorInfo.getSensorUnit());
-//                            alarm.setDataLevel(2 + "");
-//                            alarm.setAlarmTime(reportTime);
-//                            String thirdPartyId = alarmPost(alarm);
-//                            AlarmEvent event = new AlarmEvent();
-//                            event.setDeviceId(deviceId);
-//                            event.setSensorId(seq);
-//                            event.setAlarmTime(nowDate);
-//                            event.setAlarmLevel(2 + "");
-//                            event.setEventStatus(1);
-//                            event.setIsreport(1);
-//                            event.setThirdPartyId(thirdPartyId);
-//                            alarmEventService.save(event);
-                            data.setStatus(2);
-                            data1.setStatus(2);
-                        }
-                        if ((val < low_2 && val >= low_3) || (val > high_2 && val <= high_3)) {//状态3
+                        data.setStatus(1);
+                        data1.setStatus(1);
+                    }
+                    if ((val < low_1 && val >= low_2) || (val > high_1 && val <= high_2)) {//状态2
+
+                        data.setStatus(2);
+                        data1.setStatus(2);
+                    }
+                    if ((val < low_2 && val >= low_3) || (val > high_2 && val <= high_3)) {//状态3
 //                            ServerAlarm alarm = new ServerAlarm();
 //                            alarm.setToken(token);
 //                            alarm.setCompanyId(deviceInfo.getCompanyId());
@@ -195,10 +183,10 @@ public class LiveDataTask {
 //                            event.setIsreport(1);
 //                            event.setThirdPartyId(thirdPartyId);
 //                            alarmEventService.save(event);
-                            data.setStatus(3);
-                            data1.setStatus(3);
-                        }
-                        if ((val < low_3 && val >= low_4) || (val > high_3 && val <= high_4)) {//状态4
+                        data.setStatus(3);
+                        data1.setStatus(3);
+                    }
+                    if ((val < low_3 && val >= low_4) || (val > high_3 && val <= high_4)) {//状态4
 //                            ServerAlarm alarm = new ServerAlarm();
 //                            alarm.setToken(token);
 //                            alarm.setCompanyId(deviceInfo.getCompanyId());
@@ -219,10 +207,10 @@ public class LiveDataTask {
 //                            event.setIsreport(1);
 //                            event.setThirdPartyId(thirdPartyId);
 //                            alarmEventService.save(event);
-                            data.setStatus(4);
-                            data1.setStatus(4);
-                        }
+                        data.setStatus(4);
+                        data1.setStatus(4);
                     }
+//                    }
                 } else {
                     data.setStatus(5);
                     data1.setStatus(5);

+ 0 - 1
febs-server/gbd-demp-data-exchange/src/main/resources/mapper/AlarmEventMapper.xml

@@ -20,7 +20,6 @@
         where device_id = #{deviceId}
           and sensor_id = #{sensorId}
           and alarm_time > NOW() - INTERVAL 8 HOUR
-          and event_status = 1
     </select>
 
     <update id="updateAlarm">

+ 7 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/mapper/LiveDataMapper.xml

@@ -53,6 +53,13 @@
     </select>
 
 
+    <select id="getData" resultType="com.gbd.demp.data.exchange.entity.LiveData">
+        select *
+        from t_live_data
+        where device_id = #{deviceId}
+          and sensor_id = #{sensorId}
+    </select>
+
     <select id="checkExist" resultType="java.lang.Integer">
         select count(*)
         from t_live_data

+ 6 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/SensorInfo.java

@@ -66,4 +66,10 @@ public class SensorInfo {
     @TableField(exist = false)
     private String companyId;
 
+    /**
+     * 是否可编辑
+     */
+    @TableField(exist = false)
+    private int editable;
+
 }

+ 20 - 8
febs-server/gbd-demp-info/src/main/resources/mapper/SensorInfoMapper.xml

@@ -11,23 +11,33 @@
         <result column="company_id" jdbcType="VARCHAR" property="companyId"/>
         <result column="sensor_name" jdbcType="VARCHAR" property="sensorName"/>
         <result column="sensor_unit" jdbcType="VARCHAR" property="sensorUnit"/>
+        <result column="editable" jdbcType="INTEGER" property="editable"/>
     </resultMap>
 
 
     <sql id="findSensorInfoSql">
         SELECT
-        id,
-        sensor_id,
+        t.id,
+        t.sensor_id,
         t.device_id,
         t1.device_name,
         t1.company_id,
         t1.company_name,
         sensor_name,
-        sensor_unit
+        sensor_unit,
+        t2.editable
         FROM
-        demp.t_sensor_info t
+        t_sensor_info t
         LEFT JOIN
         t_device_info t1 ON t.device_id = t1.device_id
+        LEFT JOIN
+        (SELECT
+        device_id, sensor_id, editable
+        FROM
+        demp.t_device_threshold
+        WHERE
+        code = 0) t2 ON t.device_id = t2.device_id
+        AND t.sensor_id = t2.sensor_id
         where 1=1
         <if test="sensorInfo.deviceName != null and sensorInfo.deviceName != ''">
             AND t1.device_name like CONCAT('%', #{sensorInfo.deviceName}, '%')
@@ -49,7 +59,8 @@
         t.sensor_id,
         t.device_id,
         t.sensor_name,
-        t.sensor_unit
+        t.sensor_unit,
+        t2.editable
     </sql>
 
     <select id="findAllSensorInfoPage" resultMap="sensorInfo">
@@ -58,9 +69,10 @@
 
 
     <delete id="deleteByDeviceId">
-        delete from t_sensor_info where device_id=#{id}
+        delete
+        from t_sensor_info
+        where device_id = #{id}
     </delete>
-    
-    
+
 
 </mapper>