maochaoying 2 years ago
parent
commit
9299347bba
  1. 7
      src/controller/environment.controller.js
  2. 4
      src/mock/index.js
  3. 3
      src/router/environment.route.js
  4. 27
      src/service/environment.service.js
  5. 4
      src/utils/message.js

7
src/controller/environment.controller.js

@ -2,6 +2,7 @@ const {
getEnvironmentByCoopId, getEnvironmentByCoopId,
addNewLog, addNewLog,
getEnvironmentHistoryList, getEnvironmentHistoryList,
getRealTimeData,
} = require("../service/environment.service"); } = require("../service/environment.service");
const Response = require("../utils/response"); const Response = require("../utils/response");
@ -48,6 +49,12 @@ class EnvironmentController {
); );
ctx.body = Response(0, "获取环境监测历史数据成功", res); ctx.body = Response(0, "获取环境监测历史数据成功", res);
} }
async realtime(ctx, next) {
const { plies_number } = ctx.request.body;
const res = await getRealTimeData(plies_number);
ctx.body = Response(0, "获取环境监测实时数据成功", res);
}
} }
module.exports = new EnvironmentController(); module.exports = new EnvironmentController();

4
src/mock/index.js

@ -1,8 +1,10 @@
const sensor_data = { const sensor_data = {
command: "envDataReport", command: "envDataReport",
messageId: "xxxxx-xxxxx-xxxxx-xxxxx", messageId: "xxxxx-xxxxx-xxxxx-xxxxx",
timestamp: "2023-04-17 16:22:11", //unix时间戳ms
timestamp: "2023-04-16 16:22:11", //unix时间戳ms
positionM: 50, //横向距离 positionM: 50, //横向距离
henhouseId: "2",
farmId: "15",
env: [ env: [
{ {
mac: "00:28:f8:6f:a3:92", mac: "00:28:f8:6f:a3:92",

3
src/router/environment.route.js

@ -7,6 +7,7 @@ const {
detail, detail,
addLog, addLog,
statistics, statistics,
realtime,
} = require("../controller/environment.controller"); } = require("../controller/environment.controller");
// 获取某个鸡舍的环境数据 // 获取某个鸡舍的环境数据
@ -18,4 +19,6 @@ router.post("/log", auth, addLog);
// 获取环境监测历史数据,用来渲染统计图表 // 获取环境监测历史数据,用来渲染统计图表
router.post("/statistics", auth, statistics); router.post("/statistics", auth, statistics);
router.post("/realtime", auth, realtime);
module.exports = router; module.exports = router;

27
src/service/environment.service.js

@ -6,11 +6,11 @@ class EnvironmentService {
async getEnvironmentByCoopId(house_id, coop_id) { async getEnvironmentByCoopId(house_id, coop_id) {
// 目前没有栋舍概念 暂且注释,取平均值 // 目前没有栋舍概念 暂且注释,取平均值
const res = await Environment.findAll({ const res = await Environment.findAll({
// where: {
// coop_id,
// house_id,
// },
// order: [["log_time", "DESC"]],
where: {
coop_id,
house_id,
},
order: [["log_time", "DESC"]],
}); });
const arr = res.map((item) => item.dataValues); const arr = res.map((item) => item.dataValues);
if (arr && arr.length > 0) { if (arr && arr.length > 0) {
@ -66,8 +66,8 @@ class EnvironmentService {
async getEnvironmentHistoryList(house_id, coop_id, time_id, indicator_id) { async getEnvironmentHistoryList(house_id, coop_id, time_id, indicator_id) {
let whereObj = { let whereObj = {
// house_id,
// coop_id,
house_id,
coop_id,
}; };
// 需要根据id进行筛选 7天、全部、24小时 // 需要根据id进行筛选 7天、全部、24小时
if (time_id == "1") { if (time_id == "1") {
@ -249,15 +249,15 @@ class EnvironmentService {
} }
// 因为目前设备并没有鸡场、鸡舍相关概念 默认为0,没有的数据默认为0 // 因为目前设备并没有鸡场、鸡舍相关概念 默认为0,没有的数据默认为0
async reportEnvironmentData(env, positionM, log_time) {
async reportEnvironmentData(env, positionM, log_time, coop_id, house_id) {
// position_index, positionM, log_time; // position_index, positionM, log_time;
if (!env) { if (!env) {
return; return;
} }
const p = env.map(async (item) => { const p = env.map(async (item) => {
const res = await Environment.create({ const res = await Environment.create({
house_id: 0,
coop_id: 0,
coop_id: parseInt(coop_id),
house_id: parseInt(house_id),
temperature: item.temperature, temperature: item.temperature,
humidity: item.humidity, humidity: item.humidity,
co2: item.co2, co2: item.co2,
@ -274,6 +274,13 @@ class EnvironmentService {
const real = await Promise.all(p); const real = await Promise.all(p);
return real; return real;
} }
// 获取环境实时监测数据
async getRealTimeData(plies_number) {
const res = await Environment.findAll();
const arr = res?.map((item) => item.dataValues);
return arr;
}
} }
module.exports = new EnvironmentService(); module.exports = new EnvironmentService();

4
src/utils/message.js

@ -11,8 +11,10 @@ const handleSensorMessage = (message) => {
// 每到一个笼位记录一次 // 每到一个笼位记录一次
if (positionM % 50 == 0) { if (positionM % 50 == 0) {
const env = message?.env || []; const env = message?.env || [];
const coop_id = message?.henhouseId;
const house_id = message?.farmId;
const log_time = moment(message?.timestamp).format("YYYY-MM-DD HH:mm:ss"); const log_time = moment(message?.timestamp).format("YYYY-MM-DD HH:mm:ss");
reportEnvironmentData(env, positionM, log_time);
reportEnvironmentData(env, positionM, log_time, coop_id, house_id);
} }
}; };
const handleFeedMessage = async (message) => { const handleFeedMessage = async (message) => {

Loading…
Cancel
Save