Kaynağa Gözat

环控添加报警修改

wwh 1 yıl önce
ebeveyn
işleme
e96af2ac4f

+ 0 - 1
src/main/java/com/huimv/admin/controller/EnvWaterController.java

@@ -7,7 +7,6 @@ import com.huimv.admin.common.utils.Result;
 import com.huimv.admin.common.utils.ResultCode;
 import com.huimv.admin.entity.EnvWater;
 import com.huimv.admin.service.IEnvWaterService;
-import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 

+ 20 - 0
src/main/java/com/huimv/admin/controller/RawDataController.java

@@ -0,0 +1,20 @@
+package com.huimv.admin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-08-31
+ */
+@RestController
+@RequestMapping("/raw-data")
+public class RawDataController {
+
+}

+ 38 - 0
src/main/java/com/huimv/admin/entity/RawData.java

@@ -0,0 +1,38 @@
+package com.huimv.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-08-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("raw_data")
+public class RawData implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String deviceCode;
+
+    private String data;
+
+    private LocalDateTime createTime;
+
+
+}

+ 16 - 0
src/main/java/com/huimv/admin/mapper/RawDataMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.mapper;
+
+import com.huimv.admin.entity.RawData;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-08-31
+ */
+public interface RawDataMapper extends BaseMapper<RawData> {
+
+}

+ 16 - 0
src/main/java/com/huimv/admin/service/IRawDataService.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.service;
+
+import com.huimv.admin.entity.RawData;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-08-31
+ */
+public interface IRawDataService extends IService<RawData> {
+
+}

+ 20 - 0
src/main/java/com/huimv/admin/service/impl/RawDataServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.admin.service.impl;
+
+import com.huimv.admin.entity.RawData;
+import com.huimv.admin.mapper.RawDataMapper;
+import com.huimv.admin.service.IRawDataService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-08-31
+ */
+@Service
+public class RawDataServiceImpl extends ServiceImpl<RawDataMapper, RawData> implements IRawDataService {
+
+}

+ 65 - 21
src/main/java/com/huimv/admin/timer/DeviceLive.java

@@ -1,12 +1,15 @@
 package com.huimv.admin.timer;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.admin.entity.EnvDevice;
 import com.huimv.admin.entity.EnvDeviceOnline;
 import com.huimv.admin.entity.EnvWarning;
+import com.huimv.admin.entity.RawData;
 import com.huimv.admin.service.IEnvDeviceOnlineService;
 import com.huimv.admin.service.IEnvDeviceService;
 import com.huimv.admin.service.IEnvWarningService;
+import com.huimv.admin.service.IRawDataService;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -14,7 +17,10 @@ import org.springframework.scheduling.annotation.Scheduled;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 @Configuration
@@ -25,41 +31,79 @@ public class DeviceLive {
     private IEnvDeviceService envDeviceService;
     @Resource
     private IEnvWarningService warningService;
+    @Resource
+    private IRawDataService rawDataService;
+
 
     @Scheduled(cron = "0 0/30 * * * ?")
 //    @Scheduled(cron = "*/5 * * * * ?")
     private void saveOnlineDevice(){
         List<EnvDevice> devices = envDeviceService.list(null);
         for (EnvDevice device : devices) {
-            EnvWarning warning = new EnvWarning();
-            if (device.getDeviceStatus() == 0) {
-                warning.setWarningContent(device.getDeviceName() + "离线");
-                warning.setUnitId(device.getUnitId());
-                warning.setUpdateTime(LocalDateTime.now());
-                warning.setWarningType(1);
-                warning.setWarningAct(1);
-                warning.setFarmId(device.getFarmId());
-                device.setDeviceStatus(1);
-            }
-            if (device.getDeviceStatus() == 1) {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
+            //(1)获取当前日历时间
+            Date now = new Date();
+            //(2)根据时间获取指定的时间格式
+            String startTime = sdf.format(now);
+            System.out.println("现在时间:" + startTime);
+            Calendar calendar = Calendar.getInstance();
+            //(3)计算推前n小时的时间,3为推前3小时
+            calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 1);
+            String endTime = sdf.format(calendar.getTime());
+            System.out.println("往前推一个小时" + endTime);
+            QueryWrapper<RawData> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("device_code", device.getDeviceSortCode()).ge("create_time", endTime);
+            List<RawData> rawDatas = rawDataService.list(queryWrapper);
+
+            if (rawDatas.size() == 0) { //无数据
+                QueryWrapper<EnvWarning> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("farm_id", device.getFarmId()).eq("device_code", device.getDeviceSortCode()).orderByDesc("id").last(" limit 1");
+                EnvWarning envWarning = warningService.getOne(queryWrapper1);
+                if (device.getDeviceStatus() == 0) {
+                    EnvWarning warning = new EnvWarning();
+                    warning.setWarningContent(device.getDeviceName() + "离线");
+                    warning.setUnitId(device.getUnitId());
+                    warning.setUpdateTime(LocalDateTime.now());
+                    warning.setWarningType(1);
+                    warning.setWarningAct(1);
+                    warning.setDeviceCode(device.getDeviceSortCode());
+                    warning.setFarmId(device.getFarmId());
+                    if (ObjectUtil.isEmpty(envWarning)||(!envWarning.getWarningContent().equals(device.getDeviceName() + "离线"))) {
+                        warningService.save(warning);
+                    }
+                }
+                if (device.getDeviceStatus() == 2) {
+                    EnvWarning warning = new EnvWarning();
+                    warning.setWarningContent(device.getDeviceName() + "断电");
+                    warning.setUnitId(device.getUnitId());
+                    warning.setUpdateTime(LocalDateTime.now());
+                    warning.setWarningType(1);
+                    warning.setWarningAct(1);
+                    warning.setFarmId(device.getFarmId());
+                    warning.setDeviceCode(device.getDeviceSortCode());
+                    if  (ObjectUtil.isEmpty(envWarning)||(!envWarning.getWarningContent().equals(device.getDeviceName() + "断电"))) {
+                        warningService.save(warning);
+                    }
+                }
+            }else {
+                QueryWrapper<EnvWarning> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("farm_id", device.getFarmId()).eq("device_code", device.getDeviceSortCode()).orderByDesc("id").last(" limit 1");
+                EnvWarning envWarning = warningService.getOne(queryWrapper1);
+                EnvWarning warning = new EnvWarning();
                 warning.setWarningContent(device.getDeviceName() + "恢复正常");
                 warning.setUnitId(device.getUnitId());
                 warning.setUpdateTime(LocalDateTime.now());
                 warning.setWarningType(1);
                 warning.setWarningAct(2);
                 warning.setFarmId(device.getFarmId());
-            }
-            if (device.getDeviceStatus() == 2) {
-                warning.setWarningContent(device.getDeviceName() + "断电");
-                warning.setUnitId(device.getUnitId());
-                warning.setUpdateTime(LocalDateTime.now());
-                warning.setWarningType(1);
-                warning.setWarningAct(1);
-                warning.setFarmId(device.getFarmId());
+                warning.setDeviceCode(device.getDeviceSortCode());
                 device.setDeviceStatus(1);
+                envDeviceService.updateById(device);
+                if  (ObjectUtil.isEmpty(envWarning)||(!envWarning.getWarningContent().equals(device.getDeviceName() + "恢复正常"))){
+                    warningService.save(warning);
+                }
             }
-            warningService.save(warning);
-            envDeviceService.updateById(device);
+
         }
     }
 }

+ 5 - 0
src/main/resources/mapper/RawDataMapper.xml

@@ -0,0 +1,5 @@
+<?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="com.huimv.admin.mapper.RawDataMapper">
+
+</mapper>