明树Git Lab

Commit 16654dff authored by zengfanpei's avatar zengfanpei

update

parent e467eeee
......@@ -37,7 +37,7 @@
"getDeviceList": false,
"getAllDevice": false,
"collectDeviceInfo": false,
"collectDeviceInfo4": false,
"collectDeviceInfo4": true,
"excel": false
}
}
\ No newline at end of file
......@@ -39,17 +39,17 @@ async function collectDeviceInfo1({ deviceHQType }) {
// 2. 入库
let check = await collectSMCModule.insertHQData(obj);
// 3. 处理阈值报警通知
if(!check) { // 只有新创建的 需要走一遍阈值检测。
if (!check) { // 只有新创建的 需要走一遍阈值检测。
handleDeviceThreshold(obj);
}
// 4. 处理设备在线状态
handleDeviceOnLine({deviceNumber: obj.deviceNumber, online: obj.onLineState}); //onLineState 1在线0离线
handleDeviceOnLine({ deviceNumber: obj.deviceNumber, online: obj.onLineState }); //onLineState 1在线0离线
} else {
//出错
// handleDeviceOnLine({deviceNumber: obj.deviceNumber, online: 0}); //onLineState 1在线0离线
}
} else {
handleDeviceOnLine({deviceNumber: dev.deviceNumber, online: 0}); //onLineState 1在线0离线
handleDeviceOnLine({ deviceNumber: dev.deviceNumber, online: 0 }); //onLineState 1在线0离线
}
}
......@@ -72,7 +72,7 @@ async function collectDeviceInfo1({ deviceHQType }) {
async function handleCJData(colInfo, deviceHQType) {
let handleData = {}, attrExistMap = {};
//1. 先获取到attr配置
let attrs = await DB.CollectAttribute.find({del: 0, enable: true, deviceHQType: {$in: [0, deviceHQType]}});
let attrs = await DB.CollectAttribute.find({ del: 0, enable: true, deviceHQType: { $in: [0, deviceHQType] } });
console.log(attrs)
let types = colInfo.type.split('/');
let data = colInfo.data.split('|');
......@@ -80,13 +80,13 @@ async function handleCJData(colInfo, deviceHQType) {
const col = types[i];
for (let j = 0; j < attrs.length; j++) {
const attr = attrs[j];
if(col.includes(attr.deviceKey)) {
if(['errorCode', 'version'].includes(attr.dbKey)) {
if (col.includes(attr.deviceKey)) {
if (['errorCode', 'version'].includes(attr.dbKey)) {
handleData[attr.dbKey] = data[i].trim();
} else {
const dataArr = data[i].trim().split(' ');
handleData[`${attr.dbKey}Arr`] = handleData[`${attr.dbKey}Arr`] || [];
if(attrExistMap[attr.dbKey]) {
handleData[`${attr.dbKey}Arr`] = handleData[`${attr.dbKey}Arr`] || [];
if (attrExistMap[attr.dbKey]) {
handleData[`${attr.dbKey}Arr`].push(Number(String(dataArr[0]).trim()));
} else {
handleData[attr.dbKey] = Number(String(dataArr[0]).trim());
......@@ -101,22 +101,22 @@ async function handleCJData(colInfo, deviceHQType) {
console.log(handleData, "======1")
for (let index = 0; index < attrs.length; index++) {
const attr = attrs[index];
if(handleData[`${attr.dbKey}Arr`] && handleData[`${attr.dbKey}Arr`].length) {
if (handleData[`${attr.dbKey}Arr`] && handleData[`${attr.dbKey}Arr`].length) {
handleData[attr.dbKey] = Number((_.sum(handleData[`${attr.dbKey}Arr`]) / handleData[`${attr.dbKey}Arr`].length).toFixed(2));
}
}
return handleData;
}
async function handleDeviceOnLine({deviceNumber, online}) {
async function handleDeviceOnLine({ deviceNumber, online }) {
// 虫情 online = 0;//在线状态 0false/1true
// 土壤 onLineState 1在线0离线
if(!deviceNumber) {
if (!deviceNumber) {
return;
}
//该方式待定
let key = `device_online`;
if(online == 0) {
if (online == 0) {
await ioRedis.hdel(key, deviceNumber);
} else {
let obj = {};
......@@ -126,33 +126,59 @@ async function handleDeviceOnLine({deviceNumber, online}) {
}
async function handleDeviceThreshold(obj) {
let ths = await DB.CollectThreshold.find({del: 0, enable: true, deviceNumber: obj.deviceNumber}).populate({path: "attrId"}).lean().exec();
let ths = await DB.CollectThreshold.find({ del: 0, enable: true, deviceNumber: obj.deviceNumber }).populate({ path: "attrId" }).lean().exec();
let exceeds = [];
for (let i = 0; i < ths.length; i++) {
const element = ths[i];
// console.log(element, "====", obj[element.dbKey], _.isNumber(obj[element.dbKey]), _.gt(obj[element.dbKey], element.max), _.isNumber(element.max))
if(_.isNumber(obj[element.dbKey])) {
if(_.isNumber(element.max) && _.gt(obj[element.dbKey], element.max)) {
if (_.isNumber(obj[element.dbKey])) {
if (_.isNumber(element.max) && _.gt(obj[element.dbKey], element.max)) {
// 采集值 > 最大设置值
// exceeds.push({...element, collectValue: obj[element.dbKey], deviceNumber: obj.deviceNumber});
exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值:${obj[element.dbKey]}超出了最大阈值:${element.max}`);
exceeds.push({
deviceName: obj.name,
deviceNumber: obj.deviceNumber,
name: element.name,
dbKey: element.dbKey,
value: obj[element.dbKey],
max: element.max,
min: element.min,
description: "当前温度已超过最大域值"
});
// exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值:${obj[element.dbKey]}超出了最大阈值:${element.max}`);
}
if(_.isNumber(element.min) && _.lt(obj[element.dbKey], element.min)) {
// exceeds.push({...element, collectValue: obj[element.dbKey], deviceNumber: obj.deviceNumber});
exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值: ${obj[element.dbKey]}超出了最小阈值:${element.min}`);
if (_.isNumber(element.min) && _.lt(obj[element.dbKey], element.min)) {
exceeds.push({
deviceName: obj.deviceName,
deviceNumber: obj.deviceNumber,
name: element.name,
dbKey: element.dbKey,
value: obj[element.dbKey],
max: element.max,
min: element.min,
description: "当前温度已超过最小域值"
});
// exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值: ${obj[element.dbKey]}超出了最小阈值:${element.min}`);
}
}
}
console.log(exceeds);
// 处理通知模板
if(exceeds.length) {
await DB.Notice.create({
sendUser: "66d6c4099f8480c6db53ce13",
receiveUser: "66d6c4099f8480c6db53ce13",
content: exceeds.join("\\n"),
title: "土壤墒情采集数据预警通知"
});
if (exceeds.length) {
let role = await DB.Role.findOne({ key: "notice_role" });
if (role && role._id) {
let users = await DB.User.find({ roles: role._id }).select('_id');
for (let index = 0; index < users.length; index++) {
const element = users[index];
await DB.Notice.create({
sendUser: "66d6c4099f8480c6db53ce13",
receiveUser: element._id,
content: "",
exceeds,
title: "土壤墒情采集数据预警通知"
});
}
}
}
}
......
......@@ -110,33 +110,59 @@ async function handleDeviceOnLine({deviceNumber, online}) {
}
async function handleDeviceThreshold(obj) {
let ths = await DB.CollectThreshold.find({del: 0, enable: true, deviceNumber: obj.deviceNumber}).populate({path: "attrId"}).lean().exec();
let ths = await DB.CollectThreshold.find({ del: 0, enable: true, deviceNumber: obj.deviceNumber }).populate({ path: "attrId" }).lean().exec();
let exceeds = [];
for (let i = 0; i < ths.length; i++) {
const element = ths[i];
// console.log(element, "====", obj[element.dbKey], _.isNumber(obj[element.dbKey]), _.gt(obj[element.dbKey], element.max), _.isNumber(element.max))
if(_.isNumber(obj[element.dbKey])) {
if(_.isNumber(element.max) && _.gt(obj[element.dbKey], element.max)) {
if (_.isNumber(obj[element.dbKey])) {
if (_.isNumber(element.max) && _.gt(obj[element.dbKey], element.max)) {
// 采集值 > 最大设置值
// exceeds.push({...element, collectValue: obj[element.dbKey], deviceNumber: obj.deviceNumber});
exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值:${obj[element.dbKey]}超出了最大阈值:${element.max}`);
exceeds.push({
deviceName: obj.name,
deviceNumber: obj.deviceNumber,
name: element.name,
dbKey: element.dbKey,
value: obj[element.dbKey],
max: element.max,
min: element.min,
description: "当前温度已超过最大域值"
});
// exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值:${obj[element.dbKey]}超出了最大阈值:${element.max}`);
}
if(_.isNumber(element.min) && _.lt(obj[element.dbKey], element.min)) {
// exceeds.push({...element, collectValue: obj[element.dbKey], deviceNumber: obj.deviceNumber});
exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值: ${obj[element.dbKey]}超出了最小阈值:${element.min}`);
if (_.isNumber(element.min) && _.lt(obj[element.dbKey], element.min)) {
exceeds.push({
deviceName: obj.deviceName,
deviceNumber: obj.deviceNumber,
name: element.name,
dbKey: element.dbKey,
value: obj[element.dbKey],
max: element.max,
min: element.min,
description: "当前温度已超过最小域值"
});
// exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值: ${obj[element.dbKey]}超出了最小阈值:${element.min}`);
}
}
}
console.log(exceeds);
// 处理通知模板
if(exceeds.length) {
await DB.Notice.create({
sendUser: "66d6c4099f8480c6db53ce13",
receiveUser: "66d6c4099f8480c6db53ce13",
content: exceeds.join("\\n"),
title: "气象站采集数据预警通知"
});
if (exceeds.length) {
let role = await DB.Role.findOne({ key: "notice_role" });
if (role && role._id) {
let users = await DB.User.find({ roles: role._id }).select('_id');
for (let index = 0; index < users.length; index++) {
const element = users[index];
await DB.Notice.create({
sendUser: "66d6c4099f8480c6db53ce13",
receiveUser: element._id,
content: "",
exceeds,
title: "气象站采集数据预警通知"
});
}
}
}
}
......
......@@ -31,7 +31,7 @@ const Noticechema = new Schema({
type: Number,
comment: "通知类型 3. 采集数据预警通知。",
},
exceeds:[],
createdAt: {
type: Date,
default: Date.now,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment