feat:新增RAW数据
This commit is contained in:
parent
3166c937ee
commit
16f49a47e9
@ -249,3 +249,56 @@ func (dao *SensorDAO) GetLatestSensorData() (*model.SensorData, error) {
|
||||
|
||||
return &data, nil
|
||||
}
|
||||
|
||||
// GetRawData 获取指定时间范围内的原始传感器数据
|
||||
func (dao *SensorDAO) GetRawData(start, end time.Time) ([]model.AggregatedData, error) {
|
||||
query := `
|
||||
SELECT
|
||||
timestamp,
|
||||
temperature/10 AS temperature,
|
||||
rainfall,
|
||||
humidity/10 AS humidity,
|
||||
wind_speed/100 AS wind_speed,
|
||||
atm_pressure/10 AS atm_pressure,
|
||||
solar_radiation
|
||||
FROM sensor_data
|
||||
WHERE timestamp BETWEEN ? AND ?
|
||||
ORDER BY timestamp DESC
|
||||
`
|
||||
|
||||
// 执行查询
|
||||
rows, err := dao.db.Query(query, start, end)
|
||||
if err != nil {
|
||||
logger.Logger.Printf("查询原始数据失败: %v (开始=%s, 结束=%s)",
|
||||
err, start.Format(time.RFC3339), end.Format(time.RFC3339))
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var result []model.AggregatedData
|
||||
for rows.Next() {
|
||||
var data model.AggregatedData
|
||||
err := rows.Scan(
|
||||
&data.Timestamp,
|
||||
&data.AvgTemperature,
|
||||
&data.Rainfall,
|
||||
&data.AvgHumidity,
|
||||
&data.AvgWindSpeed,
|
||||
&data.AvgAtmPressure,
|
||||
&data.AvgSolarRadiation)
|
||||
if err != nil {
|
||||
logger.Logger.Printf("扫描数据行失败: %v", err)
|
||||
continue
|
||||
}
|
||||
result = append(result, data)
|
||||
}
|
||||
|
||||
// 检查是否有游标错误
|
||||
if err = rows.Err(); err != nil {
|
||||
logger.Logger.Printf("查询游标错误: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
logger.Logger.Printf("原始数据查询成功: 返回%d条记录", len(result))
|
||||
return result, nil
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import (
|
||||
"time"
|
||||
|
||||
"go_rain_dtu/internal/dao"
|
||||
"go_rain_dtu/internal/model"
|
||||
"go_rain_dtu/internal/tcp"
|
||||
"go_rain_dtu/pkg/logger"
|
||||
)
|
||||
@ -39,9 +40,18 @@ func (h *SensorHandler) GetAggregatedData(w http.ResponseWriter, r *http.Request
|
||||
}
|
||||
}
|
||||
|
||||
data, err := h.dao.GetAggregatedData(startTime, endTime, interval)
|
||||
var data []model.AggregatedData
|
||||
var err error
|
||||
|
||||
// 判断是否获取原始数据
|
||||
if interval == "raw" {
|
||||
data, err = h.dao.GetRawData(startTime, endTime)
|
||||
} else {
|
||||
data, err = h.dao.GetAggregatedData(startTime, endTime, interval)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
logger.Logger.Printf("获取聚合数据失败: %v", err)
|
||||
logger.Logger.Printf("获取数据失败: %v", err)
|
||||
http.Error(w, "服务器内部错误", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
@ -112,10 +122,19 @@ func (h *SensorHandler) GetLatestData(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
// 查询数据库获取最新数据
|
||||
data, err := h.dao.GetAggregatedData(startTime, endTime, interval)
|
||||
// 查询数据库获取数据
|
||||
var data []model.AggregatedData
|
||||
var err error
|
||||
|
||||
// 判断是否获取原始数据
|
||||
if interval == "raw" {
|
||||
data, err = h.dao.GetRawData(startTime, endTime)
|
||||
} else {
|
||||
data, err = h.dao.GetAggregatedData(startTime, endTime, interval)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
logger.Logger.Printf("获取最新聚合数据失败: %v", err)
|
||||
logger.Logger.Printf("获取数据失败: %v", err)
|
||||
http.Error(w, "服务器内部错误", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
1369
static/index.html
1369
static/index.html
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user