Ver código fonte

feat(environment): 新增环境实时数据实体及接口

- 添加环境实时数据实体类 ERealTimeData,包含设备、节点、温湿度等字段
- 创建 ERealTimeDataController 提供查询最新数据、按天统计、趋势分析和报警数据接口
- 实现 ERealTimeDataMapper 及 XML 映射文件,支持基础数据库操作
- 定义 ERealTimeDataService 接口,提供数据查询与统计功能
林仔 7 meses atrás
pai
commit
711771ec35

+ 64 - 0
pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/base/environment/ERealTimeDataController.java

@@ -0,0 +1,64 @@
+package com.zksy.web.controller.base.environment;
+
+import com.zksy.base.environment.domain.ERealTimeData;
+import com.zksy.base.environment.service.ERealTimeDataService;
+import com.zksy.common.core.domain.AjaxResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+@RestController
+@RequestMapping("/api/env")
+public class ERealTimeDataController {
+
+    @Autowired
+    private ERealTimeDataService dataService;
+
+    private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+    private static final DateTimeFormatter DATETIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+    @GetMapping("/latest")
+    @ApiOperation("查询最新数据")
+    public AjaxResult getLatest(@RequestParam Integer deviceId,
+                                   @RequestParam Integer nodeId) {
+        return AjaxResult.success(dataService.getLatestByDeviceNode(deviceId, nodeId));
+    }
+
+    @GetMapping("/daily-stats")
+    @ApiOperation("按天统计(均值、最大值、最小值)")
+    public AjaxResult getDailyStats(@RequestParam Integer deviceId,
+                                             @RequestParam Integer nodeId,
+                                             @RequestParam String date) {
+        LocalDate localDate = LocalDate.parse(date, DATE_FORMAT);
+        return AjaxResult.success(dataService.getDailyStats(deviceId, nodeId, localDate));
+    }
+
+    @GetMapping("/trend")
+    @ApiOperation("设备趋势分析")
+    public AjaxResult getTrend(@RequestParam Integer deviceId,
+                                              @RequestParam Integer nodeId,
+                                              @RequestParam String start,
+                                              @RequestParam String end) {
+        LocalDateTime startTime = LocalDateTime.parse(start, DATETIME_FORMAT);
+        LocalDateTime endTime = LocalDateTime.parse(end, DATETIME_FORMAT);
+        return AjaxResult.success(dataService.getTrend(deviceId, nodeId, startTime, endTime));
+    }
+
+    @GetMapping("/alarms")
+    @ApiOperation("查询报警数据")
+    public AjaxResult getAlarms(@RequestParam Integer deviceId,
+                                @RequestParam Integer nodeId,
+                                @RequestParam String start,
+                                @RequestParam String end,
+                                @RequestParam(required = false) Double threshold) {
+        LocalDateTime startTime = LocalDateTime.parse(start, DATETIME_FORMAT);
+        LocalDateTime endTime = LocalDateTime.parse(end, DATETIME_FORMAT);
+        return AjaxResult.success(dataService.getAlarms(deviceId, nodeId, startTime, endTime, threshold));
+    }
+
+}

+ 87 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/environment/domain/ERealTimeData.java

@@ -0,0 +1,87 @@
+package com.zksy.base.environment.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 环境实时数据
+ * @TableName e_real_time_data
+ */
+@TableName(value ="e_real_time_data")
+@Data
+public class ERealTimeData implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 设备编号
+     */
+    @TableField(value = "device_id")
+    private Integer deviceId;
+
+    /**
+     * 节点
+     */
+    @TableField(value = "node_id")
+    private Integer nodeId;
+
+    /**
+     * 温度
+     */
+    @TableField(value = "tem")
+    private Float tem;
+
+    /**
+     * 湿度(若节点是1 不取温度数值,使用悬浮物字段。若节点是2 取湿度是COD。若节点是3 取湿度是氨氮。若节点是4 取湿度是电导率。若节点是5 取湿度是PH)
+     */
+    @TableField(value = "hum")
+    private Float hum;
+
+    /**
+     * 经度
+     */
+    @TableField(value = "lng")
+    private Double lng;
+
+    /**
+     * 纬度
+     */
+    @TableField(value = "lat")
+    private Double lat;
+
+    /**
+     * 坐标类型
+     */
+    @TableField(value = "coordinate_type")
+    private String coordinateType;
+
+    /**
+     * 继电器状态
+     */
+    @TableField(value = "relay_status")
+    private String relayStatus;
+
+    /**
+     * 悬浮物
+     */
+    @TableField(value = "float_value")
+    private String floatValue;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private LocalDateTime createTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 18 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/environment/mapper/ERealTimeDataMapper.java

@@ -0,0 +1,18 @@
+package com.zksy.base.environment.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zksy.base.environment.domain.ERealTimeData;
+
+/**
+* @author Administrator
+* @description 针对表【e_real_time_data(环境实时数据)】的数据库操作Mapper
+* @createDate 2025-08-27 10:30:48
+* @Entity com.zksy.environment.domain.ERealTimeData
+*/
+public interface ERealTimeDataMapper extends BaseMapper<ERealTimeData> {
+
+}
+
+
+
+

+ 26 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/environment/service/ERealTimeDataService.java

@@ -0,0 +1,26 @@
+package com.zksy.base.environment.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.base.environment.domain.ERealTimeData;
+
+/**
+* @author Administrator
+* @description 针对表【e_real_time_data(环境实时数据)】的数据库操作Service
+* @createDate 2025-08-27 10:30:48
+*/
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+public interface ERealTimeDataService extends IService<ERealTimeData> {
+
+    ERealTimeData getLatestByDeviceNode(Integer deviceId, Integer nodeId);
+
+    Map<String, Object> getDailyStats(Integer deviceId, Integer nodeId, LocalDate date);
+
+    List<Map<String, Object>> getTrend(Integer deviceId, Integer nodeId, LocalDateTime start, LocalDateTime end);
+
+    List<Map<String, Object>> getAlarms(Integer deviceId, Integer nodeId, LocalDateTime start, LocalDateTime end, Double threshold);
+}

+ 27 - 0
pipe-network-service/zksy-system/src/main/resources/mapper/base/environment/ERealTimeDataMapper.xml

@@ -0,0 +1,27 @@
+<?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.zksy.base.environment.mapper.ERealTimeDataMapper">
+
+    <resultMap id="BaseResultMap" type="com.zksy.base.environment.domain.ERealTimeData">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="deviceId" column="device_id" jdbcType="INTEGER"/>
+            <result property="nodeId" column="node_id" jdbcType="INTEGER"/>
+            <result property="tem" column="tem" jdbcType="FLOAT"/>
+            <result property="hum" column="hum" jdbcType="FLOAT"/>
+            <result property="lng" column="lng" jdbcType="DOUBLE"/>
+            <result property="lat" column="lat" jdbcType="DOUBLE"/>
+            <result property="coordinateType" column="coordinate_type" jdbcType="VARCHAR"/>
+            <result property="relayStatus" column="relay_status" jdbcType="VARCHAR"/>
+            <result property="floatValue" column="float_value" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,device_id,node_id,
+        tem,hum,lng,
+        lat,coordinate_type,relay_status,
+        float_value,create_time
+    </sql>
+</mapper>