Commit 787061ff by lixinming

no message

parent 64136d11
......@@ -12,5 +12,6 @@
<hqmdzlsfdl>https://openapi-cn.growatt.com/v1/plant/energy</hqmdzlsfdl>
<hqmdzjbxx>https://openapi-cn.growatt.com/v1/plant/details</hqmdzjbxx>
<hqmdzmytgl>https://openapi-cn.growatt.com/v1/plant/power</hqmdzmytgl>
<hqdzsblb>https://openapi-cn.growatt.com/v1/device/list</hqdzsblb>
</dataCenterInterface>
</config>
import moment = require("moment");
import { getYJApiData, YiJiaInterficeConfig } from "../../data/interface/chuanGanqi";
import { get } from "../../util/request";
/**
......@@ -64,10 +65,33 @@ export async function 获取传感器设备类型分布() {
}
export async function 温湿度变化趋势变化趋势(chartArea, chartType) {
// //测试
// let startMss = moment().subtract(7, 'hours').valueOf();
// let endMss = moment().valueOf();
// let tttParam = {
// deviceId:"6d961e80-53dc-11ef-a337-492e02a5a1b5",
// startTs:startMss,
// endTs:endMss,
// keys:'airT-1'
// }
// let tttt = await getYJApiData(YiJiaInterficeConfig["获取历史遥测的接口"], tttParam);
// let query = {
// source: "pc",
// weather_type: "observe",
// province: "上海",
// city: "上海",
// county: "浦东新区"
// }
// let weatherData: any = await get("https://wis.qq.com/weather/common", query);
let key = "";
if (chartType=="温度") key = "airT";
else if (chartType =="湿度") key = "airH";
else if (chartType == "降雨量") key = "rain";
else if (chartType == "室外温度") key = "airT-1"
if (key == "rain") {
chartArea = "气象站";
......@@ -153,25 +177,20 @@ export async function 光照变化() {
}
export async function 土壤检测() {
}
export async function 土壤温度变化趋势() {
let keyList = [
{keyStr:"soilT", keyName:"土壤温度"},
{keyStr:"soilH", keyName:"土壤湿度"},
{keyStr:"dPH", keyName:"土壤PH值"},
{keyStr:"doilC", keyName:"土壤电导率"}
{unit:"℃", keyStr:"soilT", keyName:"土壤温度"},
{unit:"RH", keyStr:"soilH", keyName:"土壤湿度"},
{unit:"PH", keyStr:"dPH", keyName:"土壤PH值"},
{unit:"us/cm", keyStr:"doilC", keyName:"土壤电导率"}
];
let dataMap = {};
let dataMap = {};//土壤检测数据
for (let key in DeviceListMap) {
let data = await getYJApiData(YiJiaInterficeConfig["遥测数据"], {deviceId:key});
let body = data.body || {};
keyList.forEach(info => {
let {keyStr, keyName} = info;
let {keyStr, keyName, unit} = info;
let value;
if (body[keyStr] && body[keyStr][0]) {
......@@ -179,25 +198,65 @@ export async function 土壤温度变化趋势() {
}
if (!dataMap[keyName]) {
dataMap[keyName] = {count:0, num:0};
dataMap[keyName] = {count:0, num:0, unit};
}
dataMap[keyName].count += 1;
dataMap[keyName].num += parseFloat(value) || 0;
dataMap[keyName].num += parseFloat(value || 0);
console.log()
});
console.log();
}
let dataList = [];
for (let key in dataMap) {
let {num, count} = dataMap[key];
let {num, count, unit} = dataMap[key];
let value = !count || !num ? "-" : Math.round(num / count * 100)/100;
dataList.push({
key,
value:Math.round(num / count * 100)/100
value:value+unit
});
}
console.log()
return dataList
}
export async function 土壤温度变化趋势() {
let startMs = moment().subtract(7, 'hours').valueOf();
let endMs = moment().valueOf();
let areaMap = {};//格式 {"区域":{"时间":{count:0, num:0}}}
for (let deviceId in DeviceListMap) {
let {area} = DeviceListMap[deviceId];
let param = {deviceId, startTs:startMs, endTs:endMs, keys:'soilT'};
let data = await getYJApiData(YiJiaInterficeConfig["获取历史遥测的接口"], param);
let list = [];
if ( data.body && data.body['soilT']) list = data.body['soilT'];
if (!areaMap[area]) areaMap[area] = {};
list.forEach(info => {
let time = moment(info.ts).format("HH.MM");
if (!areaMap[area][time]) areaMap[area][time] = {count:0, num:0};
areaMap[area][time].count += 1;
areaMap[area][time].num = parseFloat(info.value);
});
}
//返回结果 {"区域":[{key:"日期", value:count/num}]}
let resultMap = {};
for (let area in areaMap) {
if (!Object.values(areaMap[area]).length) continue;
resultMap[area] = [];
for (let subKey in areaMap[area]) {
let {count, num} = areaMap[area][subKey];
let value = Math.round(num / count * 10000)/100;
resultMap[area].push({key:subKey, value});
}
}
return resultMap;
}
......@@ -2,61 +2,54 @@
* 鳜鱼
*/
import { keyValuePackage } from "../dataPackage/inFrontOut";
export function getData(req, res) {
// let excelData = hjszzlTableData();
// let ret:any = {};
// let qwqsPackageData = onceYBarChartPackage( excelData['气温趋势'], '','');
// ret['qwqs'] = getOnceYBarChartOut('气温趋势', qwqsPackageData);
// let trwlysjcPackageData = onceYBarChartPackage( excelData['土壤微量元素监测'], '','');
// ret['trwlysjc'] = getOnceYBarChartOut('土壤微量元素监测', trwlysjcPackageData);
// let zdqsbhPackageData = onceYBarChartPackage( excelData['浊度趋势变化'], '','');
// ret['zdqsbh'] = getOnceYBarChartOut('浊度趋势变化', zdqsbhPackageData);
// let chzlcxPackageData = onceYBarChartPackage( excelData['虫害治理成效'], '','');
// ret['chzlcx'] = getOnceYBarChartOut('虫害治理成效', chzlcxPackageData);
// // let tqjcPackageData = keyValuePackage(excelData['天气检测'].dataList);
// // ret['tqjc'] = getKeyValueOut('天气检测', tqjcPackageData);
// let trjcPackageData = keyValuePackage(excelData['土壤检测'].dataList);
// ret['trjc'] = getKeyValueOut('土壤检测', trjcPackageData);
// let szjcPackageData = keyValuePackage(excelData['水质检测'].dataList);
// ret['szjc'] = getKeyValueOut('水质检测', szjcPackageData);
// let hjjcfxPackageData = keyValuePackage(excelData['环境基础分析'].dataList);
// ret['hjjcfx'] = getKeyValueOut('环境基础分析', hjjcfxPackageData);
// let bhczlPackageData = stringListPackage(excelData["病害虫治理"].dataList);
// let bhczl = [];
// for(let i = 0; i < bhczlPackageData.length; i++) {
// let img = `${systemConfig.imgPath}/${bhczlPackageData[i]}`;
// bhczl.push(img);
// }
// ret['bhczl'] = getStringOut('病害虫治理', bhczl);
// let chjcdyjPackageData = keyValuePackage(excelData['虫害检测灯预警'].dataList);
// ret['chjcdyj'] = getKeyValueOut('虫害检测灯预警', chjcdyjPackageData);
// let zlqkPackageData = keyValuePackage(excelData['治理情况'].dataList);
// ret['zlqk'] = getKeyValueOut('治理情况', zlqkPackageData);
// let tqjcbTableData = tablePackage(excelData["天气检测表"].headerList[0], excelData["天气检测表"].bodyList);
// ret['tqjcb'] = getTableOut( '天气检测表', tqjcbTableData);
// let zhxyjglPackageData = keyValuePackage(excelData['灾害性应急管理'].dataList);
// ret['zhxyjgl'] = getKeyValueOut('灾害性应急管理', zhxyjglPackageData);
// let qxzhlbPackageData = keyValuePackage(excelData['气象灾害列表'].dataList);
// ret['qxzhlb'] = getKeyValueOut('气象灾害列表', qxzhlbPackageData);
// res.send(ret);
import { getGuiYuLeftData } from "../data/interface/guiyu";
import { keyValuePackage, onceYBarChartPackage } from "../dataPackage/inFrontOut";
import { getKeyValueOut, getOnceYBarChartOut } from "../dataPackage/out";
export async function getData(req, res) {
let ret:any = {};
let guiYuDataInfo = await getGuiYuLeftData();
ret['sbjr'] = getKeyValueOut('设备接入', []);
ret['sbjr'].dataList = guiYuDataInfo.sheBeiJieRu;
let jyzsbzxqkData = onceYBarChartPackage( [{name:"近一周设备在线率", data:guiYuDataInfo["设备在线情况"] }], '','');
ret['jyzsbzxqk'] = getOnceYBarChartOut('近一周设备在线率', jyzsbzxqkData);
let txcgkData = keyValuePackage(guiYuDataInfo["原始数据Map"]["条形池"]["统计结果"]);
ret['txcgk'] = getKeyValueOut('条形池概况', txcgkData);
let yxcgkData = keyValuePackage(guiYuDataInfo["原始数据Map"]["圆形池"]["统计结果"]);
ret['yxcgk'] = getKeyValueOut('条形池概况', yxcgkData);
let fxcgkData = keyValuePackage(guiYuDataInfo["原始数据Map"]["方形池"]["统计结果"]);
ret['txcgk'] = getKeyValueOut('条形池概况', fxcgkData);
let txcswqsData = onceYBarChartPackage( [{name:"水温", data:guiYuDataInfo["原始数据Map"]["条形池"]["水温"] }], '','');
let txcswqsChartData = getOnceYBarChartOut('水温', txcswqsData);
let txcphqsData = onceYBarChartPackage( [{name:"PH", data:guiYuDataInfo["原始数据Map"]["条形池"]["PH"] }], '','');
let txcphqsChartData = getOnceYBarChartOut('PH', txcphqsData);
let txcdoqsData = onceYBarChartPackage( [{name:"溶氧量", data:guiYuDataInfo["原始数据Map"]["条形池"]["水温"] }], '','');
let txcdoqsChartData = getOnceYBarChartOut('溶氧量', txcdoqsData);
ret["txcqs"] = {name:"条形池水质变化趋势", data:[txcswqsChartData, txcphqsChartData, txcdoqsChartData]};
let fxcswqsData = onceYBarChartPackage( [{name:"水温", data:guiYuDataInfo["原始数据Map"]["方形池"]["水温"] }], '','');
let fxcswqsChartData = getOnceYBarChartOut('水温', fxcswqsData);
let fxcphqsData = onceYBarChartPackage( [{name:"PH", data:guiYuDataInfo["原始数据Map"]["方形池"]["PH"] }], '','');
let fxcphqsChartData = getOnceYBarChartOut('PH', fxcphqsData);
let fxcdoqsData = onceYBarChartPackage( [{name:"溶氧量", data:guiYuDataInfo["原始数据Map"]["方形池"]["水温"] }], '','');
let fxcdoqsChartData = getOnceYBarChartOut('溶氧量', fxcdoqsData);
ret["txcqs"] = {name:"方形池水质变化趋势", data:[fxcswqsChartData, fxcphqsChartData, fxcdoqsChartData]};
let yxcswqsData = onceYBarChartPackage( [{name:"水温", data:guiYuDataInfo["原始数据Map"]["圆形池"]["水温"] }], '','');
let yxcswqsChartData = getOnceYBarChartOut('水温', yxcswqsData);
let yxcphqsData = onceYBarChartPackage( [{name:"PH", data:guiYuDataInfo["原始数据Map"]["圆形池"]["PH"] }], '','');
let yxcphqsChartData = getOnceYBarChartOut('PH', yxcphqsData);
let yxcdoqsData = onceYBarChartPackage( [{name:"溶氧量", data:guiYuDataInfo["原始数据Map"]["圆形池"]["水温"] }], '','');
let yxcdoqsChartData = getOnceYBarChartOut('溶氧量', yxcdoqsData);
ret["txcqs"] = {name:"圆形池水质变化趋势", data:[yxcswqsChartData, yxcphqsChartData, yxcdoqsChartData]};
ret["renwu"] = guiYuDataInfo.任务列表;
res.send(ret);
}
\ No newline at end of file
......@@ -4,12 +4,9 @@ import { hjszzlTableData } from '../data/table/hjszzlData';
import { separateDataAndUint } from "../dataPackage/tool";
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, rankPackage, stringListPackage, tablePackage } from '../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getStringOut, getTableOut } from '../dataPackage/out';
import { 光照变化, 温湿度变化趋势变化趋势 } from './chuanGanQi/cgq';
import { 光照变化, 土壤检测, 土壤温度变化趋势, 温湿度变化趋势变化趋势 } from './chuanGanQi/cgq';
/* 环境数字治理 */
export async function getData(req, res) {
let excelData = hjszzlTableData();
......@@ -32,18 +29,14 @@ export async function getData(req, res) {
let 温度变化趋势 = {};
let wd = 0;
let wdCount = 0;
let 室外温度数据 = await 温湿度变化趋势变化趋势("气象站", "室外温度");
let xnDataList = 室外温度数据.dataList.sort((a, b) => {return parseFloat(a.key)-parseFloat(b.key)});
for (let i = 0; i < keyList.length; i++) {
let {dataList, now} = await 温湿度变化趋势变化趋势(keyList[i], "温度");
if (!now) continue;
dataList.sort((a, b) => {return parseFloat(a.key)-parseFloat(b.key)})
let xnList = [1,1,2,3,4,5,9,9,9,9,9];
let xnDataList = [];
dataList.forEach((info, itemIndex) => {
xnDataList.push({
key:info.key,
value:xnList[itemIndex]
})
});
温度变化趋势[keyList[i]] = [
{name:"棚内温度", data:dataList},
{name:"室外温度", data:xnDataList}
......@@ -108,10 +101,14 @@ export async function getData(req, res) {
let gzbhqsPackageData = onceYBarChartPackage( excelData['光照变化趋势'], '','');
ret['gzbhqs'] = getOnceYBarChartOut('光照变化趋势', gzbhqsPackageData);
let trjcPackageData = keyValuePackage(excelData['土壤监测'].dataList);
let 土壤检测数据 = await 土壤检测();
// let trjcPackageData = keyValuePackage(excelData['土壤监测'].dataList);
let trjcPackageData = keyValuePackage(土壤检测数据);
ret['trjc'] = getKeyValueOut('土壤监测', trjcPackageData);
let 土壤温度变化趋势数据 = await 土壤温度变化趋势();
let trwdbhqsPackageData = onceYBarChartPackage( excelData['土壤温度变化趋势'], '','');
trwdbhqsPackageData.dataInfo = 土壤温度变化趋势数据;
ret['trwdbhqs'] = getOnceYBarChartOut('土壤温度变化趋势', trwdbhqsPackageData);
let trsdbhqsPackageData = onceYBarChartPackage( excelData['土壤湿度变化趋势'], '','');
......
......@@ -13,9 +13,10 @@ export let dataCenterInterfaceConfig = {
hqmdzsjgl:"", //获取某电站数据概览
// hqsyyhdz: "", //获取所有用户电站列表
hqmgyhddzlb: "", //获取某个用户的电站列表
hqmdzlsfdl: "", //获取某电站历史发电量
hqmdzlsfdl: "", //获取某电站历史发电量 有频率限制
hqmdzmytgl: "", //获取某电站某一天功率数据
hqmdzjbxx: "", //获取某电站基本信息
hqdzsblb:"",//获取电站设备列表
}
......@@ -41,6 +42,7 @@ export async function initConfig() {
systemConfig.token = token[0];
systemConfig.userName = userName[0];
systemConfig.plantId = parseInt(plantId[0]);
//API数据接口
dataCenterInterfaceConfig.hqmdzsjgl = dataCenterInterface[0].hqmdzsjgl[0];
// dataCenterInterfaceConfig.hqsyyhdz = dataCenterInterface[0].hqsyyhdz[0];
......@@ -48,6 +50,7 @@ export async function initConfig() {
dataCenterInterfaceConfig.hqmdzlsfdl = dataCenterInterface[0].hqmdzlsfdl[0];
dataCenterInterfaceConfig.hqmdzmytgl = dataCenterInterface[0].hqmdzmytgl[0];
dataCenterInterfaceConfig.hqmdzjbxx = dataCenterInterface[0].hqmdzjbxx[0];
dataCenterInterfaceConfig.hqdzsblb = dataCenterInterface[0].hqdzsblb[0];
// console.log(dataCenterInterfaceConfig.hqmdzsjgl);
}
......
......@@ -41,24 +41,24 @@ export async function getToken() {
/**
* 定时刷新token
*/
export async function refToken() {
let body = {
"refreshToken":tokenQueue.refreshToken.refreshToken
};
let header = {
"Content-Type":"application/json;charset=ISO-8859-1"
};
// export async function refToken() {
// let body = {
// "refreshToken":tokenQueue.refreshToken.refreshToken
// };
// let header = {
// "Content-Type":"application/json;charset=ISO-8859-1"
// };
let data:any = await post("http://www.soilless.cn:80/api/auth/token", body, header);
// let data:any = await post("http://www.soilless.cn:80/api/auth/token", body, header);
if (!data || data.message != 200 || ! data.body) {
throw new BizError(ERRORENUM.溢佳传感器TOKEN调用失败);
}
// if (!data || data.message != 200 || ! data.body) {
// throw new BizError(ERRORENUM.溢佳传感器TOKEN调用失败);
// }
let {token, refreshToken} = data.body
// let {token, refreshToken} = data.body
return {token, refreshToken};
}
// return {token, refreshToken};
// }
/**
......@@ -67,15 +67,18 @@ export async function refToken() {
export async function tokenTask() {
setInterval(async () => {
let nowMs = new Date().valueOf();
let itemTokenInfo = await getToken();
tokenQueue.tokenInfo = {token:itemTokenInfo.token, tokenMs:new Date().valueOf()};
if (tokenQueue.tokenInfo.tokenMs+(3600 * 2.4 * 1000 ) <= nowMs ) {//设定2.4小时刷新token
let itemTokenInfo = await refToken();
let itemTokenInfo = await getToken();
tokenQueue.tokenInfo = {token:itemTokenInfo.token, tokenMs:new Date().valueOf()};
}
if (tokenQueue.tokenInfo.tokenMs+(3600 * 24 * 1000 * 6.5 ) <= nowMs ) {//设定6.5t天小时刷新token
let tokenInfo = await getToken();
tokenQueue.tokenInfo = {token:tokenInfo.token, tokenMs:new Date().valueOf()};
tokenQueue.refreshToken = {refreshToken:tokenInfo.token, refreshTokenMs:new Date().valueOf()};
}
// if (tokenQueue.tokenInfo.tokenMs+(3600 * 24 * 1000 * 6.5 ) <= nowMs ) {//设定6.5t天小时刷新token
// let tokenInfo = await getToken();
// tokenQueue.tokenInfo = {token:tokenInfo.token, tokenMs:new Date().valueOf()};
// tokenQueue.refreshToken = {refreshToken:tokenInfo.token, refreshTokenMs:new Date().valueOf()};
// }
}, 1000 * 10);
}
......
......@@ -261,4 +261,94 @@ export async function getGuangFu() {
/**
let nowTimeMs = new Date().valueOf();
let nowTime = moment().format("YYYY-MM-DD");
let result = {
jbqk:[], //基本情况
nhfx:{count:[], charData:[], dayData:[]}, //能耗分析
trsy:{count:[], charData:[]}, //投入使用
ztsj:[], //整体数据
xyfxfd:{count:[], chartData:[]}, //效益分析-发电
xyfx:{count:[], chartData:{}}, //效益分析
jnjp:{count:[], chartData:[]} //节能减排
};
// let userquery = {user_name:systemConfig.userName};
let header = {token:systemConfig.token};
//基本情况
let jbqkData = {
安全运行天数:0,
组件总功率:'1024kWp',//万雷提供的常量 1577号是 849kWp 2195号是 175kWp
设备总数:0
};
//能耗分析
let nhfxData = {
"年用电量":0,
"光伏发电量":0
}
//870225 //这个是卉绿的
//870209 //这个是农投的
let idList= [870225, 870209];
let 发电功率Map = {}; //{电站:{月份:1}}
for (let i = 0; i < idList.length; i++) {
let plant_id = idList[i];
发电功率Map[plant_id] = {};
//获取站点下的设备列表
let nthqdzsblb:any = await get(dataCenterInterfaceConfig.hqdzsblb, {plant_id, perpage:100}, header);
let deviceList = nthqdzsblb.body ? nthqdzsblb.body.devices || [] : [];
jbqkData.设备总数 = deviceList.length;
let hqmdzsjgl:any = await get(dataCenterInterfaceConfig.hqmdzsjgl, {plant_id}, header);
if (!hqmdzsjgl.body) {
console.log("接口请求失败-获取某电站数据概览:hqmdzsjgl");
hqmdzsjgl.body = {total_energy:0};
}
nhfxData["光伏发电量"] += hqmdzsjgl.body.total_energy;
let hqmdzjbxx:any = await get(dataCenterInterfaceConfig.hqmdzjbxx, {plant_id:systemConfig.plantId}, header);
if (!hqmdzjbxx.body) {
console.log("接口请求失败-获取某电站基本信息:hqmdzjbxx", hqmdzjbxx);
hqmdzjbxx = {body:{create_date:0}};
}
if (hqmdzjbxx.body.create_date) {
let diffDay = moment(hqmdzjbxx.body.create_date).diff(moment(), 'days');
jbqkData.安全运行天数 = Math.max(jbqkData.安全运行天数, diffDay);
}
let nhfxquery = {
plant_id:systemConfig.plantId,
// start_date:hqmdzjbxx.body.create_date || "2024-12-01",
start_date:"2024-12-01",
end_date:nowTime,
time_unit:"month",
page:1,
perpage:100
}
console.log();
let fdglData:any = await get(dataCenterInterfaceConfig.hqmdzlsfdl, nhfxquery, header);
if (!fdglData.body) {
console.log("接口请求失败-获取某电站历史发电量:hqmdzlsfdl", fdglData.body);
fdglData = {body:{energys:[]}};
}
fdglData.body.energys.forEach(item => {
let {date, energy} = item;
发电功率Map[plant_id][date] = energy;
});
}
*/
......@@ -2,6 +2,7 @@
* 鳜鱼数据
*/
import moment = require("moment");
import { get } from "../../util/request";
const crypto = require('crypto');
......@@ -43,18 +44,20 @@ async function makeApiRequest(path, body) {
export async function getGuiYuLeftData(req, res) {
export async function getGuiYuLeftData() {
let deviceData:any = await makeApiRequest("/openapi/sensor", {});
let 设备类型 = {};
let 设备类型相关列表 = {};
let 养殖池分类 = {};
let 智能开关 = 0;
let 智能开关List = [];
let 智能监测 = 0;
let 智能监测List = [];
let 原始数据Map = {
"条形池":{设备列表:[], 水温:[], PH:[], DO:[], 数据统计:{ ph:0, phCount:0, 氧容量:0, 氧容量Count:0, 水温:0, 水温Count:0 }},
"圆形池":{设备列表:[], 水温:[], PH:[], DO:[], 数据统计:{ ph:0, phCount:0, 氧容量:0, 氧容量Count:0, 水温:0, 水温Count:0 }},
"方形池":{设备列表:[], 水温:[], PH:[], DO:[], 数据统计:{ ph:0, phCount:0, 氧容量:0, 氧容量Count:0, 水温:0, 水温Count:0 }}
"条形池":{设备列表:[], 水温:[], PH:[], DO:[], 统计结果:[], 数据统计:{ ph:0, phCount:0, 氧容量:0, 氧容量Count:0, 水温:0, 水温Count:0 }},
"圆形池":{设备列表:[], 水温:[], PH:[], DO:[], 统计结果:[], 数据统计:{ ph:0, phCount:0, 氧容量:0, 氧容量Count:0, 水温:0, 水温Count:0 }},
"方形池":{设备列表:[], 水温:[], PH:[], DO:[], 统计结果:[], 数据统计:{ ph:0, phCount:0, 氧容量:0, 氧容量Count:0, 水温:0, 水温Count:0 }}
};
deviceData.body.forEach(info => {
......@@ -69,8 +72,10 @@ export async function getGuiYuLeftData(req, res) {
if (pond.name == "智能开关") {
智能开关 += 1;
智能开关List.push(id);
} else {
智能监测 += 1;
智能监测List.push(id);
}
if (pond.name.indexOf("条") > -1 ) {
......@@ -83,104 +88,143 @@ export async function getGuiYuLeftData(req, res) {
原始数据Map.圆形池.设备列表.push({propName:pond.name, name, id});
}
});
for (let chiType in 原始数据Map) {
let {设备列表} = 原始数据Map[chiType];
for (let i = 0; i < 设备列表.length; i++) {
let {propName, name, id} = 设备列表[i];
let itemData:any = await makeApiRequest(`/openapi/sensor/do/${id}`, {});
let {DO, PH, temperature } = itemData.body;
if (PH) {
原始数据Map[chiType].数据统计.ph += PH;
原始数据Map[chiType].数据统计.phCount += 1;
原始数据Map[chiType].PH.push({
key:propName,
value:PH
});
}
if (DO) {
原始数据Map[chiType].数据统计.氧容量 += DO;
原始数据Map[chiType].数据统计.氧容量Count += 1;
原始数据Map[chiType].DO.push({
key:propName,
value:DO
});
}
if (temperature) {
原始数据Map[chiType].数据统计.水温 += temperature;
原始数据Map[chiType].数据统计.水温Count += 1;
原始数据Map[chiType].水温.push({
key:propName,
value:temperature
});
}
}
}
// for (let i = 0; i < 条形池.length; i++) {
// let {id} = 条形池[i]
// let deviceData:any = await makeApiRequest(`/openapi/sensor/do/${id}`, {});
// let {DO, PH, temperature } = deviceData.body;
// if (PH) {
// 条形池数据统计.ph += PH;
// 条形池数据统计.phCount += 1;
// }
// if (DO) {
// 条形池数据统计.氧容量 += DO;
// 条形池数据统计.氧容量Count += 1;
// }
// if (temperature) {
// 条形池数据统计.水温 += temperature;
// 条形池数据统计.水温Count += 1;
// }
// }
// for (let i = 0; i < 方形池.length; i++) {
// let {id} = 方形池[i]
// let deviceData:any = await makeApiRequest(`/openapi/sensor/do/${id}`, {});
// let {DO, PH, temperature } = deviceData.body;
// if (PH) {
// 方形池数据统计.ph += PH;
// 方形池数据统计.phCount += 1;
// }
// if (DO) {
// 方形池数据统计.氧容量 += DO;
// 方形池数据统计.氧容量Count += 1;
// }
// if (temperature) {
// 方形池数据统计.水温 += temperature;
// 方形池数据统计.水温Count += 1;
// }
// }
// for (let i = 0; i < 圆形池.length; i++) {
// let {id} = 圆形池[i]
// let deviceData:any = await makeApiRequest(`/openapi/sensor/do/${id}`, {});
// let {DO, PH, temperature } = deviceData.body;
// if (PH) {
// 圆形池数据统计.ph += PH;
// 圆形池数据统计.phCount += 1;
// }
// if (DO) {
// 圆形池数据统计.氧容量 += DO;
// 圆形池数据统计.氧容量Count += 1;
// }
// if (temperature) {
// 圆形池数据统计.水温 += temperature;
// 圆形池数据统计.水温Count += 1;
// }
// }
// //设备接入
// let sheBeiJieRu = [
// {key:"设备总数", value:智能开关 + 智能监测},
// {key:"智能监测", value:智能监测},
// {key:"智能开关", value:智能开关},
// {key:"智能监控", value:""},
// ];
// let tiaoXingChi = {
// DO:Math.round((条形池数据统计.氧容量/条形池数据统计.氧容量Count)*100)/100,
// PH:Math.round((条形池数据统计.ph/条形池数据统计.phCount)*100)/100,
// temperature:Math.round((条形池数据统计.ph/条形池数据统计.phCount)*100)/100,
// };
let t = await makeApiRequest(`/openapi/task`, {});
console.log();
//
//设备在线
// for (let i = 0; i < 设备类型相关列表["氨氮传感器"].length; i++) {
// let id = 设备类型相关列表["氨氮传感器"][i];
// let deviceData:any = await makeApiRequest(`/openapi/sensor/nhn/${id}/history`, {past:"7d"});
// console.log();
// }
for (let chiType in 原始数据Map) {
let {数据统计} = 原始数据Map[chiType];
let PH = "-";
if (数据统计.phCount && 数据统计.ph) {
PH = ""+Math.round((原始数据Map[chiType].数据统计.ph/原始数据Map[chiType].数据统计.phCount)*100)/100;
}
原始数据Map[chiType]["统计结果"].push({
key:"PH",
value:PH
});
let 氧容量 = "-mg/L";
if (数据统计.氧容量Count && 数据统计.氧容量) {
氧容量 = Math.round((原始数据Map[chiType].数据统计.氧容量/原始数据Map[chiType].数据统计.氧容量Count)*100)/100 +"mg/L";
}
原始数据Map[chiType]["统计结果"].push({
key:"溶氧量",
value:氧容量
});
let 水温 = "-℃"
if (数据统计.水温Count && 数据统计.水温) {
水温 = Math.round((原始数据Map[chiType].数据统计.水温/原始数据Map[chiType].数据统计.水温Count)*100)/100+"℃";
}
原始数据Map[chiType]["统计结果"].push({
key:"水温",
value:水温
});
}
let count = 0;
let 在线情况 = {};
let 智能开关在线 = 0;
let 智能监测在线 = 0;
for (let key in 设备类型相关列表) {
let idList = 设备类型相关列表[key];
let url = "";
if (key == "氨氮传感器") {
url = `/openapi/sensor/nhn/`;
} else {
url = `/openapi/sensor/do/`;
}
for (let i = 0; i < idList.length; i++) {
let deviceId = idList[i];
let reqUrl = `${url}${deviceId}/history`;
count += 1;//有多少个设备
if (智能开关List.indexOf(deviceId) > -1) 智能开关在线 += 1;
if (智能监测List.indexOf(deviceId) > -1) 智能监测在线 += 1;
let itemData:any = await makeApiRequest(reqUrl, {past:"7d"});
let distinctMap = {};
itemData.body.forEach(element => {
let timeStr = moment(element.time).format("MM-DD");
distinctMap[timeStr] = 1;
});
for (let itemKey in distinctMap) {
if (!在线情况[itemKey]) 在线情况[itemKey] = 0;
在线情况[itemKey] += 1;
}
}
}
let 监控列表请求数据:any = await makeApiRequest(`/openapi/camera`, {});
let 监控列表 = 监控列表请求数据.data || [];
let 监控总数 = 0;
let 监控在线数 = 0;
监控列表.forEach(info => {
let {status} = info;
监控总数 += 1;
if (status == "USING") 监控在线数 += 1;
});
console.log()
//设备接入
let sheBeiJieRu = [
{key:"设备总数", online: 智能开关在线, notOnline:( 智能开关+ 智能监测)- 智能开关在线 },
{key:"智能监测", online: 智能开关在线, notOnline:智能监测-智能开关在线 },
{key:"智能开关", online: 智能开关在线, notOnline:智能开关-智能开关在线 },
{key:"智能监控", online:监控在线数, notOnline:监控总数 - 监控在线数},
];
let 设备在线情况 = [];
for (let key in 在线情况) {
let itemCount = 在线情况[key];
let value = itemCount && count ? Math.round(itemCount/count * 10000)/100 : 0;
设备在线情况.push({
key,
value
});
}
//今日任务
let taskData:any = await makeApiRequest(`/openapi/task`, {});
let taskDataList = taskData.data || [];
let 任务列表=[];
taskDataList.forEach(info => {
let {taskName, startTime, account} = info;
任务列表.push({taskName, startTime:moment(startTime).format("YYYY-MM-DD HH:MM"), name:account.name || ""});
})
return {任务列表, 设备在线情况, sheBeiJieRu, 原始数据Map}
}
......
......@@ -6,7 +6,6 @@ import { guangfuInit } from "./biz/getData";
import { initToken, tokenTask } from "./data/interface/chuanGanqi";
import { initDeviceMap, 温湿度变化趋势变化趋势,光照变化, 土壤温度变化趋势 } from "./biz/chuanGanQi/cgq";
import { getGuangFu } from "./data/interface/dataInterface";
import { getGuiYuLeftData, test } from "./data/interface/guiyu";
async function lanuch() {
await initConfig();
......@@ -20,15 +19,12 @@ async function lanuch() {
async function systemTask() {
/**鳜鱼测试 */
// await getGuiYuLeftData(null, null);
// return
/**溢佳 设备token */
await initToken();
await tokenTask();
await initDeviceMap();
// await 温湿度变化趋势变化趋势("A2", "温度");
await 土壤温度变化趋势();
// await 土壤温度变化趋势();
// await guangfuInit();
}
......
......@@ -8,7 +8,7 @@ import * as cyszhglBiz from '../biz/cyszhgl';
import * as gfnyBiz from '../biz/gfny';
import * as sdt1hgfbBiz from '../biz/sdt1hgfb';
import * as guiYuBiz from '../biz/guiYu';
import * as yzdqxdnyzlBiz from '../biz/yzdqxdnyzl';
......@@ -23,7 +23,7 @@ import * as gbzscbgjdAqBiz from '../biz/gbzscbgjdAq';
import * as gbzscbgjdBqBiz from '../biz/gbzscbgjdBq';
export function setRouter(httpServer){
/**竖屏 */
/**光伏 */
httpServer.get('/left', asyncHandler(leftBiz.getLeft));
httpServer.get('/data', asyncHandler(leftBiz.getData));
httpServer.get('/right', asyncHandler(leftBiz.getRight));
......@@ -51,7 +51,7 @@ export function setRouter(httpServer){
httpServer.post('/gbzscbgjdAq', asyncHandler(gbzscbgjdAqBiz.getData));
httpServer.post('/gbzscbgjdBq', asyncHandler(gbzscbgjdBqBiz.getData));
httpServer.post('/guiyu', asyncHandler(guiYuBiz.getData));
//======get
httpServer.get('/cyszhgl', asyncHandler(cyszhglBiz.getData));
......@@ -73,7 +73,6 @@ export function setRouter(httpServer){
httpServer.get('/gbzscbgjdAq', asyncHandler(gbzscbgjdAqBiz.getData));
httpServer.get('/gbzscbgjdBq', asyncHandler(gbzscbgjdBqBiz.getData));
httpServer.get('/guiyu', asyncHandler(guiYuBiz.getData));
}
\ No newline at end of file
......@@ -33,7 +33,7 @@ export function getYJ(url:string, query?, headers?, timeOut?) {
}
export function post(url, body, headers) {
export function post(url, reqbody, headers) {
if (!url || (url.search(/http:/) && url.search(/https:/)) ) throw new BizError(!url ? "请求地址为空" : "请求地址错误");
let header = {"content-type": "application/json"};
return new Promise((resolve, reject)=>{
......@@ -42,7 +42,7 @@ export function post(url, body, headers) {
method: "POST",
json: true,
headers: Object.assign(header, headers),
body: body
body: reqbody
}, function(err, res, body) {
const success = !err && res && res == 200;
let message = err || res.statusCode || "";
......
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