明树Git Lab

Commit 16654dff authored by zengfanpei's avatar zengfanpei

update

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