From b8a6f1231a649cbc930e19acffbd8f51eeffc16e Mon Sep 17 00:00:00 2001 From: maochaoying <925670706@qq.com> Date: Thu, 30 Mar 2023 17:36:35 +0800 Subject: [PATCH] 123 --- src/controller/environment.controller.js | 7 +++ src/router/environment.route.js | 11 ++++- src/service/environment.service.js | 85 ++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 1 deletion(-) diff --git a/src/controller/environment.controller.js b/src/controller/environment.controller.js index 4a347f1..eb660f9 100644 --- a/src/controller/environment.controller.js +++ b/src/controller/environment.controller.js @@ -1,6 +1,7 @@ const { getEnvironmentByCoopId, addNewLog, + getEnvironmentHistoryList, } = require("../service/environment.service"); const Response = require("../utils/response"); @@ -34,6 +35,12 @@ class EnvironmentController { ); ctx.body = Response(0, "新增环境检测数据成功", res); } + + async statistics(ctx, next) { + const { coop_id, time_id, indicator_id } = ctx.request.body; + const res = await getEnvironmentHistoryList(coop_id, time_id, indicator_id); + ctx.body = Response(0, "获取环境监测历史数据成功", res); + } } module.exports = new EnvironmentController(); diff --git a/src/router/environment.route.js b/src/router/environment.route.js index 85f826a..83e55fa 100644 --- a/src/router/environment.route.js +++ b/src/router/environment.route.js @@ -3,10 +3,19 @@ const Router = require("koa-router"); const router = new Router({ prefix: "/environment" }); const { auth } = require("../middleware/auth.middleware"); -const { detail, addLog } = require("../controller/environment.controller"); +const { + detail, + addLog, + statistics, +} = require("../controller/environment.controller"); +// 获取某个鸡舍的环境数据 router.get("/detail", auth, detail); +// 添加监测数据 router.post("/log", auth, addLog); +// 获取环境监测历史数据,用来渲染统计图表 +router.post("/statistics", auth, statistics); + module.exports = router; diff --git a/src/service/environment.service.js b/src/service/environment.service.js index d1944ed..b558338 100644 --- a/src/service/environment.service.js +++ b/src/service/environment.service.js @@ -1,6 +1,7 @@ const Environment = require("../model/environment.model"); const { isIntTime } = require("../utils/common"); const moment = require("moment"); +const { Op } = require("sequelize"); class EnvironmentService { async getEnvironmentByCoopId(coop_id) { const res = await Environment.findOne({ @@ -37,6 +38,90 @@ class EnvironmentService { } return null; } + + async getEnvironmentHistoryList(coop_id, time_id, indicator_id) { + let whereObj = { + coop_id, + }; + // 需要根据id进行筛选 7天、全部、24小时 + if (time_id == "1") { + // 24小时 + Object.assign(whereObj, { + log_time: { + [Op.lt]: new Date(), + [Op.gt]: new Date(new Date() - 24 * 60 * 60 * 1000), + }, + }); + } + if (time_id == "2") { + Object.assign(whereObj, { + log_time: { + [Op.lt]: new Date(), + [Op.gt]: new Date(new Date() - 7 * 24 * 60 * 60 * 1000), + }, + }); + } + const res = await Environment.findAll({ + where: whereObj, + }); + const arr = res.map((item) => item.dataValues); + // 根据传来的indicator_id 筛选出对应的数据 + console.log(arr); + const temperatureList = arr.map((item) => item.temperature); + const humidityList = arr.map((item) => item.humidity); + const co2List = arr.map((item) => item.co2); + const nh3List = arr.map((item) => item.nh3); + const illuminationList = arr.map((item) => item.illumination); + const windSpeedList = arr.map((item) => item.wind_speed); + const h2sList = arr.map((item) => item.h2s); + const timeList = arr.map((item) => + moment(item.log_time).format("YYYY-MM-DD HH:mm:ss") + ); + // 根据所选监测数据进行筛选 + if (indicator_id == "1") { + return { + xData: temperatureList, + yData: timeList, + }; + } + if (indicator_id == "2") { + return { + xData: nh3List, + yData: timeList, + }; + } + if (indicator_id == "3") { + return { + xData: humidityList, + yData: timeList, + }; + } + if (indicator_id == "4") { + return { + xData: co2List, + yData: timeList, + }; + } + if (indicator_id == "5") { + return { + xData: illuminationList, + yData: timeList, + }; + } + if (indicator_id == "6") { + return { + xData: windSpeedList, + yData: timeList, + }; + } + if (indicator_id == "7") { + return { + xData: h2sList, + yData: timeList, + }; + } + return null; + } } module.exports = new EnvironmentService();