gateway-module
Version:
for GW ,one of node-red module
58 lines (55 loc) • 1.88 kB
JavaScript
const dbconfig={
user : process.env.DB_USER || '',
password : process.env.DB_PASS || '',
server : process.env.DB_HOST || '',
database : process.env.DB_NAME || '',
port : parseInt(process.env.DB_PORT) || 1433,
showSql : process.env.SHOW_SQL || false,
}
const mssql = require('littlemssql');
const mssqlConn = mssql(dbconfig);
const isMockData = process.env.ENABLE_MockData=='true'?true:false ;
// const fs =require('fs');
//定义一个缓存,用来对比数据值判断
function cacheHandle() {
//默认预设metric计数缓存对象
const cache = new Map();
const metric = {
total: 0,
filter: 0
};
cache.set('metric', metric);
return cache;
}
async function getDevicesByType(cache,...deviceTypeIds) {
let result;
if (isMockData === true) {
result = require('../config/mockData.json');
}else{
result = await mssqlConn.queryData(`
select point.deviceId, point.monitor, point.monitorTypeId, point.isNumber, info.deviceTypeId, info.deviceNo, info.tenantId
from ts_deviceInfo as info INNER JOIN ts_devicepoint as point
on info.deviceId=point.deviceId
where info.deviceTypeId in (${deviceTypeIds.join()})
`);
result = result.recordset;
}
//缓存设备数据
// fs.writeFileSync('./config/mockData.json',JSON.stringify(result),{encoding:'utf-8'});
for (const device of result) {
if (cache.has(device.deviceNo)) {
cache.get(device.deviceNo).push(device);
}else{
cache.set(device.deviceNo,new Array(device));
}
}
console.log("cache done");
}
module.exports = {
config: {
sendTopic : process.env.WALLE_FILTERED_TOPIC || 'gate',
deviceTypeIds : process.env.CACHE_DEVICETYP
},
cache: cacheHandle,
data: getDevicesByType
};