Commit baa4449d by lixinming

no message

parent 787061ff
...@@ -7,4 +7,5 @@ ...@@ -7,4 +7,5 @@
*test* *test*
*.log *.log
*.zip *.zip
*.xlsx *.xlsx
\ No newline at end of file /public
\ No newline at end of file
...@@ -14,4 +14,5 @@ ...@@ -14,4 +14,5 @@
<hqmdzmytgl>https://openapi-cn.growatt.com/v1/plant/power</hqmdzmytgl> <hqmdzmytgl>https://openapi-cn.growatt.com/v1/plant/power</hqmdzmytgl>
<hqdzsblb>https://openapi-cn.growatt.com/v1/device/list</hqdzsblb> <hqdzsblb>https://openapi-cn.growatt.com/v1/device/list</hqdzsblb>
</dataCenterInterface> </dataCenterInterface>
<xcxInterface>http://101.89.111.202:13281/zjnt/xcx/dataout/zzzmj</xcxInterface>
</config> </config>
...@@ -38,7 +38,6 @@ const DeviceListMap = { ...@@ -38,7 +38,6 @@ const DeviceListMap = {
"63432ea0-e378-11eb-90c2-a9af4fda413b":{id:"63432ea0-e378-11eb-90c2-a9af4fda413b",name:"ST-366513",area:"溢佳C3",type:"传感器"}, "63432ea0-e378-11eb-90c2-a9af4fda413b":{id:"63432ea0-e378-11eb-90c2-a9af4fda413b",name:"ST-366513",area:"溢佳C3",type:"传感器"},
"1e1a9700-7a55-11eb-b843-47b4ce12fe03":{id:"1e1a9700-7a55-11eb-b843-47b4ce12fe03",name:"ST-633039",area:"溢佳C4",type:"传感器"}, "1e1a9700-7a55-11eb-b843-47b4ce12fe03":{id:"1e1a9700-7a55-11eb-b843-47b4ce12fe03",name:"ST-633039",area:"溢佳C4",type:"传感器"},
"6d961e80-53dc-11ef-a337-492e02a5a1b5":{id:"6d961e80-53dc-11ef-a337-492e02a5a1b5",name:"ST-C01511",area:"气象站",type:"传感器"}, "6d961e80-53dc-11ef-a337-492e02a5a1b5":{id:"6d961e80-53dc-11ef-a337-492e02a5a1b5",name:"ST-C01511",area:"气象站",type:"传感器"},
}; };
initDeviceMap(); initDeviceMap();
...@@ -52,7 +51,9 @@ export async function initDeviceMap() { ...@@ -52,7 +51,9 @@ export async function initDeviceMap() {
} }
export async function 获取传感器设备类型分布() { let queue = {};
async function 加载传感器设备类型分布() {
let map = {}; let map = {};
for (let key in DeviceListMap) { for (let key in DeviceListMap) {
let {type} = DeviceListMap[key]; let {type} = DeviceListMap[key];
...@@ -61,32 +62,234 @@ export async function 获取传感器设备类型分布() { ...@@ -61,32 +62,234 @@ export async function 获取传感器设备类型分布() {
} }
let dataList = Object.values(map); let dataList = Object.values(map);
return {dataList, count:dataList.length}; // return {dataList, count:dataList.length};
queue["cgqsbf"] = {dataList, count:dataList.length};
} }
export async function 温湿度变化趋势变化趋势(chartArea, chartType) { async function 加载温湿度变化趋势变化趋势(chartArea, chartType) {
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 = "气象站";
}
let checkList = [];
for (let mapKey in DeviceListMap) {
let {area} = DeviceListMap[mapKey];
if (area == chartArea) {
checkList.push(mapKey);
}
}
// //测试 let startMs = moment().subtract(7, 'hours').valueOf();
// let startMss = moment().subtract(7, 'hours').valueOf(); let endMs = moment().valueOf();
// let endMss = moment().valueOf(); let datamMp = {};
// let tttParam = {
// deviceId:"6d961e80-53dc-11ef-a337-492e02a5a1b5", for (let i = 0; i < checkList.length; i++) {
// startTs:startMss, let deviceId = checkList[i];
// endTs:endMss, let param = {deviceId, startTs:startMs, endTs:endMs, keys:key};
// keys:'airT-1' let data = await getYJApiData(YiJiaInterficeConfig["获取历史遥测的接口"], param);
// } let list = [];
// let tttt = await getYJApiData(YiJiaInterficeConfig["获取历史遥测的接口"], tttParam); if ( data.body && data.body[key]) list = data.body[key];
// let query = { list.forEach(info => {
// source: "pc", let time = moment(info.ts).format("HH.MM");
// weather_type: "observe", if (!datamMp[time]) datamMp[time] = {count:0, num:0};
// province: "上海", datamMp[time].count += 1;
// city: "上海", datamMp[time].num += parseFloat(info.value);
// county: "浦东新区" });
// } }
// let weatherData: any = await get("https://wis.qq.com/weather/common", query);
let dataList = [];
for (let mapKey in datamMp) {
let {count, num} = datamMp[mapKey];
dataList.push({
key:mapKey,
value: Math.round(num / count * 100)/100
});
}
let now = !dataList[0] ? 0 : dataList[0].value;
return {dataList, now};
}
async function 加载光照变化() {
const Key = "ill";
let startMs = moment().subtract(7, 'hours').valueOf();
let endMs = moment().valueOf();
let dataMap = {};
for (let deviceId in DeviceListMap) {
let param = {deviceId, startTs:startMs, endTs:endMs, keys:Key};
let data = await getYJApiData(YiJiaInterficeConfig["获取历史遥测的接口"], param);
let list = [];
if ( data.body && data.body[Key]) list = data.body[Key];
list.forEach(info => {
let time = moment(info.ts).format("HH.MM");
if (!dataMap[time]) dataMap[time] = {count:0, num:0};
dataMap[time].count += 1;
dataMap[time].num = parseFloat(info.value);
});
}
let dataList = [];
let max = 0;
let min = 999999;
for (let mapKey in dataMap) {
let {count, num} = dataMap[mapKey];
let value = Math.round(num / count * 100)/100;
dataList.push({
key:mapKey,
value
});
if (value > max){max = value;}
if (value < min){min = value;}
}
return {dataList, max, min};
}
async function 加载土壤检测() {
let keyList = [
{unit:"℃", keyStr:"soilT", keyName:"土壤温度"},
{unit:"RH", keyStr:"soilH", keyName:"土壤湿度"},
{unit:"PH", keyStr:"dPH", keyName:"土壤PH值"},
{unit:"us/cm", keyStr:"doilC", keyName:"土壤电导率"}
];
let dataMap = {};//土壤检测数据
for (let key in DeviceListMap) {
let data = await getYJApiData(YiJiaInterficeConfig["遥测数据"], {deviceId:key});
let body = data.body || {};
keyList.forEach(info => {
let {keyStr, keyName, unit} = info;
let value;
if (body[keyStr] && body[keyStr][0]) {
value = body[keyStr][0].value || 0;
}
if (!dataMap[keyName]) {
dataMap[keyName] = {count:0, num:0, unit};
}
dataMap[keyName].count += 1;
dataMap[keyName].num += parseFloat(value || 0);
console.log()
});
console.log();
}
let dataList = [];
for (let key in dataMap) {
let {num, count, unit} = dataMap[key];
let value = !count || !num ? "-" : Math.round(num / count * 100)/100;
dataList.push({
key,
value:value+unit
});
}
return dataList
}
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;
}
//初始化传感器数据/定时任务
export async function initCGQData() {
await 加载传感器设备类型分布();
let keyList =[
"A2","A1","A3","A4","A6","D1","D2","B1","溢佳日光温室","溢佳A2","溢佳A3","溢佳B1","溢佳B2","溢佳B3","溢佳C1","溢佳C2","溢佳C3","溢佳C4"
];
queue["wsdbhqs"] = {};
queue["wsdbhqs"]["气象站"] = {};
queue["wsdbhqs"]["气象站"]["室外温度"] = await 加载温湿度变化趋势变化趋势("气象站", "室外温度");
for (let i = 0; i < keyList.length; i++) {
let chartArea = keyList[i];
let 温度 = await 加载温湿度变化趋势变化趋势(chartArea, "温度");
let 湿度 = await 加载温湿度变化趋势变化趋势(chartArea, "湿度");
queue["wsdbhqs"][chartArea] = {"温度":温度, "湿度":湿度};
}
queue["gzbh"] = 加载光照变化();
queue["trjc"] = 加载土壤检测();
queue["trwdbhqs"] = 加载土壤温度变化趋势();
setInterval(async () => {
await 加载传感器设备类型分布();
let keyList =[
"A2","A1","A3","A4","A6","D1","D2","B1","溢佳日光温室","溢佳A2","溢佳A3","溢佳B1","溢佳B2","溢佳B3","溢佳C1","溢佳C2","溢佳C3","溢佳C4"
];
queue["wsdbhqs"] = {};
queue["wsdbhqs"]["气象站"] = {};
queue["wsdbhqs"]["气象站"]["室外温度"] = await 加载温湿度变化趋势变化趋势("气象站", "室外温度");
for (let i = 0; i < keyList.length; i++) {
let chartArea = keyList[i];
let 温度 = await 加载温湿度变化趋势变化趋势(chartArea, "温度");
let 湿度 = await 加载温湿度变化趋势变化趋势(chartArea, "湿度");
queue["wsdbhqs"][chartArea] = {"温度":温度, "湿度":湿度};
}
queue["gzbh"] = 加载光照变化();
queue["trjc"] = 加载土壤检测();
queue["trwdbhqs"] = 加载土壤温度变化趋势();
}, 3600 * 1000);
}
export async function 获取传感器设备类型分布() {
return queue["cgqsbf"];
}
export async function 温湿度变化趋势变化趋势(chartArea, chartType) {
return queue["wsdbhqs"][chartArea][chartType];
let key = ""; let key = "";
if (chartType=="温度") key = "airT"; if (chartType=="温度") key = "airT";
else if (chartType =="湿度") key = "airH"; else if (chartType =="湿度") key = "airH";
...@@ -140,6 +343,7 @@ export async function 温湿度变化趋势变化趋势(chartArea, chartType) { ...@@ -140,6 +343,7 @@ export async function 温湿度变化趋势变化趋势(chartArea, chartType) {
export async function 光照变化() { export async function 光照变化() {
return queue["gzbh"];
const Key = "ill"; const Key = "ill";
let startMs = moment().subtract(7, 'hours').valueOf(); let startMs = moment().subtract(7, 'hours').valueOf();
let endMs = moment().valueOf(); let endMs = moment().valueOf();
...@@ -177,6 +381,7 @@ export async function 光照变化() { ...@@ -177,6 +381,7 @@ export async function 光照变化() {
} }
export async function 土壤检测() { export async function 土壤检测() {
return queue["trjc"];
let keyList = [ let keyList = [
{unit:"℃", keyStr:"soilT", keyName:"土壤温度"}, {unit:"℃", keyStr:"soilT", keyName:"土壤温度"},
{unit:"RH", keyStr:"soilH", keyName:"土壤湿度"}, {unit:"RH", keyStr:"soilH", keyName:"土壤湿度"},
...@@ -222,6 +427,7 @@ export async function 土壤检测() { ...@@ -222,6 +427,7 @@ export async function 土壤检测() {
export async function 土壤温度变化趋势() { export async function 土壤温度变化趋势() {
return queue["trwdbhqs"];
let startMs = moment().subtract(7, 'hours').valueOf(); let startMs = moment().subtract(7, 'hours').valueOf();
let endMs = moment().valueOf(); let endMs = moment().valueOf();
...@@ -258,5 +464,4 @@ export async function 土壤温度变化趋势() { ...@@ -258,5 +464,4 @@ export async function 土壤温度变化趋势() {
} }
return resultMap; return resultMap;
} }
import { systemConfig } from '../config/serverConfig'; import { dataCenterInterfaceConfig, systemConfig } from '../config/serverConfig';
import { cyszhglTableData, zzqkTableData } from '../data/table/cyszhglData'; import { cyszhglTableData, zzqkTableData } from '../data/table/cyszhglData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, rankPackage, tablePackage } from '../dataPackage/inFrontOut'; import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, rankPackage, tablePackage } from '../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getTableOut } from '../dataPackage/out'; import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getTableOut } from '../dataPackage/out';
import { post } from '../util/request';
/* 产业数字化管理 */ /* 产业数字化管理 */
...@@ -225,61 +226,105 @@ export function zzfb(req, res) { ...@@ -225,61 +226,105 @@ export function zzfb(req, res) {
* @param req * @param req
* @param res * @param res
*/ */
export function zzqk(req, res) { export async function zzqk(req, res) {
let type = req.body.type || "全部"; //表格暂时无法切换下拉数据 let type = req.body.type || "全部"; //表格暂时无法切换下拉数据
let ret:any = {}; let ret:any = {};
let excelData = zzqkTableData(); let excelData = zzqkTableData();
let zzzljbqkPackageData = keyValuePackage(excelData['种植种类基本情况'].dataList); let interfaceDataInfoRes:any = await post(dataCenterInterfaceConfig.xcxzzcq, {}, {});
let interfaceDataInfo = interfaceDataInfoRes.body.data;
let zzzljbqkPackageData = keyValuePackage(interfaceDataInfo.zhongZhiTypeList);
ret['zzzljbqk'] = getKeyValueOut('种植种类基本情况', zzzljbqkPackageData); ret['zzzljbqk'] = getKeyValueOut('种植种类基本情况', zzzljbqkPackageData);
let zzzwPackageData = keyValuePackage(excelData['种植作物'].dataList); let zzzwPackageData = keyValuePackage(interfaceDataInfo.zhongZhiZuoWuList);
ret['zzzw'] = getKeyValueOut('种植作物', zzzwPackageData); ret['zzzw'] = getKeyValueOut('种植作物', zzzwPackageData);
let nzqkPackageData = keyValuePackage(excelData['农资情况'].dataList); let nzqkPackageData = keyValuePackage(interfaceDataInfo.nongZiList);
ret['nzqk'] = getKeyValueOut('农资情况', nzqkPackageData); ret['nzqk'] = getKeyValueOut('农资情况', nzqkPackageData);
let flyyqkPackageData = onceYBarChartPackage(excelData['肥料用药情况'], '', '' ); let flyyqkPackageData = onceYBarChartPackage(interfaceDataInfo.feiliaoyongyaoqingkuang, '', '' );
ret['flyyqk'] = getOnceYBarChartOut('肥料用药情况', flyyqkPackageData); ret['flyyqk'] = getOnceYBarChartOut('肥料用药情况', flyyqkPackageData);
let nscz = excelData['农事操作']; let nsczPackageData = onceYBarChartPackage([{name:"操作记录", data:interfaceDataInfo.nongShiList}], '', '' );
let allnscz = getAllChart(excelData['农事操作']);
nscz.unshift(allnscz);
let nsczPackageData = onceYBarChartPackage(nscz, '', '' );
ret['nscz'] = getOnceYBarChartOut('农事操作', nsczPackageData); ret['nscz'] = getOnceYBarChartOut('农事操作', nsczPackageData);
ret['nscz']["chartList"][0].total = interfaceDataInfo.nongShiCount;
let zwcljn = excelData['作物产量(今年)'];
let allzwcljn = getAllChart(excelData['作物产量(今年)']); // let zwcljn = excelData['作物产量(今年)'];
zwcljn.unshift(allzwcljn); // let allzwcljn = getAllChart(excelData['作物产量(今年)']);
let zwcljnPackageData = onceYBarChartPackage(zwcljn, '', '' ); // zwcljn.unshift(allzwcljn);
// let zwcljnPackageData2 = onceYBarChartPackage(zwcljn, '', '' );
// ret['zwcljn2'] = getOnceYBarChartOut('作物产量(今年)', zwcljnPackageData2);
let zwcljnPackageData = onceYBarChartPackage(interfaceDataInfo.chanLiangList, '', '' );
ret['zwcljn'] = getOnceYBarChartOut('作物产量(今年)', zwcljnPackageData); ret['zwcljn'] = getOnceYBarChartOut('作物产量(今年)', zwcljnPackageData);
ret['zwcljn']["chartList"][0].total = interfaceDataInfo.chanLiangStatisList[0].value;
let zwclqn = excelData['作物产量(去年)']; // let zwclqnPackageData = onceYBarChartPackage([interfaceDataInfo.chanLiangList[1]], '', '' );
let allzwclqn = getAllChart(excelData['作物产量(去年)']); // ret['zwclqn'] = getOnceYBarChartOut('作物产量(去年)', zwclqnPackageData);
zwclqn.unshift(allzwclqn); // ret['zwclqn']["chartList"][0].total = 0;
let zwclqnPackageData = onceYBarChartPackage(zwclqn, '', '' );
ret['zwclqn'] = getOnceYBarChartOut('作物产量(去年)', zwclqnPackageData); let tongbi = interfaceDataInfo.chanLiangStatisList[1].value;
let thisYear = 0;
let lastYear = 0;
ret['zwcljn'].chartList.forEach( info => {
let {thisChartTitle, total} = info;
if (thisChartTitle == type) thisYear = total;
})
ret['zwclqn'].chartList.forEach( info => {
let {thisChartTitle, total} = info;
if (thisChartTitle == type) lastYear = total;
})
let tongbi = (((thisYear - lastYear) / lastYear) * 100 / 100).toFixed(2) + "%";
ret["zwcltb"] = {title:"作物产量同比", dataList:tongbi}; ret["zwcltb"] = {title:"作物产量同比", dataList:tongbi};
let zwxs = excelData['作物销售']; let zwxsPackageData = onceYBarChartPackage([{name:"作物销售", data:interfaceDataInfo.lastMonthXiaoShouList}], '', '' );
let allzwxs = getAllChart(excelData['作物销售']);
zwxs.unshift(allzwxs);
let zwxsPackageData = onceYBarChartPackage(zwxs, '', '' );
ret['zwxs'] = getOnceYBarChartOut('作物销售', zwxsPackageData); ret['zwxs'] = getOnceYBarChartOut('作物销售', zwxsPackageData);
ret['zwxs']["chartList"][0].total = interfaceDataInfo.lastMonthXiaoShou;
res.send(ret); res.send(ret);
// let zzzljbqkPackageData = keyValuePackage(excelData['种植种类基本情况'].dataList);
// ret['zzzljbqk'] = getKeyValueOut('种植种类基本情况', zzzljbqkPackageData);
// let zzzwPackageData = keyValuePackage(excelData['种植作物'].dataList);
// ret['zzzw'] = getKeyValueOut('种植作物', zzzwPackageData);
// let nzqkPackageData = keyValuePackage(excelData['农资情况'].dataList);
// ret['nzqk'] = getKeyValueOut('农资情况', nzqkPackageData);
// let flyyqkPackageData = onceYBarChartPackage(excelData['肥料用药情况'], '', '' );
// ret['flyyqk'] = getOnceYBarChartOut('肥料用药情况', flyyqkPackageData);
// let nscz = excelData['农事操作'];
// let allnscz = getAllChart(excelData['农事操作']);
// nscz.unshift(allnscz);
// let nsczPackageData = onceYBarChartPackage(nscz, '', '' );
// ret['nscz'] = getOnceYBarChartOut('农事操作', nsczPackageData);
// let zwcljn = excelData['作物产量(今年)'];
// let allzwcljn = getAllChart(excelData['作物产量(今年)']);
// zwcljn.unshift(allzwcljn);
// let zwcljnPackageData = onceYBarChartPackage(zwcljn, '', '' );
// ret['zwcljn'] = getOnceYBarChartOut('作物产量(今年)', zwcljnPackageData);
// let zwclqn = excelData['作物产量(去年)'];
// let allzwclqn = getAllChart(excelData['作物产量(去年)']);
// zwclqn.unshift(allzwclqn);
// let zwclqnPackageData = onceYBarChartPackage(zwclqn, '', '' );
// ret['zwclqn'] = getOnceYBarChartOut('作物产量(去年)', zwclqnPackageData);
// let thisYear = 0;
// let lastYear = 0;
// ret['zwcljn'].chartList.forEach( info => {
// let {thisChartTitle, total} = info;
// if (thisChartTitle == type) thisYear = total;
// })
// ret['zwclqn'].chartList.forEach( info => {
// let {thisChartTitle, total} = info;
// if (thisChartTitle == type) lastYear = total;
// })
// let tongbi = (((thisYear - lastYear) / lastYear) * 100 / 100).toFixed(2) + "%";
// ret["zwcltb"] = {title:"作物产量同比", dataList:tongbi};
// let zwxs = excelData['作物销售'];
// let allzwxs = getAllChart(excelData['作物销售']);
// zwxs.unshift(allzwxs);
// let zwxsPackageData = onceYBarChartPackage(zwxs, '', '' );
// ret['zwxs'] = getOnceYBarChartOut('作物销售', zwxsPackageData);
// res.send(ret);
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
*/ */
import { systemConfig } from "../config/serverConfig"; import { systemConfig } from "../config/serverConfig";
import { getGuangFu } from "../data/interface/dataInterface"; import { get2, getGuangFu } from "../data/interface/dataInterface";
import { getKeyValueOut, getOnceYBarChartOut } from "../dataPackage/out"; import { getKeyValueOut, getOnceYBarChartOut } from "../dataPackage/out";
import { get } from "../util/request"; import { get } from "../util/request";
...@@ -152,11 +152,13 @@ let guangfuData = { ...@@ -152,11 +152,13 @@ let guangfuData = {
], ],
}, },
}; };
/** /**
* 初始化接口数据 * 初始化接口数据
*/ */
export async function guangfuInit() { export async function guangfuInit() {
await getGuangFu(); await getGuangFu();
await get2();
console.log(); console.log();
} }
......
...@@ -17,6 +17,7 @@ export let dataCenterInterfaceConfig = { ...@@ -17,6 +17,7 @@ export let dataCenterInterfaceConfig = {
hqmdzmytgl: "", //获取某电站某一天功率数据 hqmdzmytgl: "", //获取某电站某一天功率数据
hqmdzjbxx: "", //获取某电站基本信息 hqmdzjbxx: "", //获取某电站基本信息
hqdzsblb:"",//获取电站设备列表 hqdzsblb:"",//获取电站设备列表
xcxzzcq:"",//小程序种植情况
} }
...@@ -35,7 +36,7 @@ export async function initConfig() { ...@@ -35,7 +36,7 @@ export async function initConfig() {
checkConfig(integralConfig, configInfo.config); checkConfig(integralConfig, configInfo.config);
let {port, imgPath, token, userName, plantId, dataCenterInterface} = configInfo.config; let {port, imgPath, token, userName, plantId, dataCenterInterface, xcxInterface} = configInfo.config;
systemConfig.port = parseInt(port[0]); systemConfig.port = parseInt(port[0]);
systemConfig.imgPath = imgPath[0]; systemConfig.imgPath = imgPath[0];
...@@ -51,6 +52,7 @@ export async function initConfig() { ...@@ -51,6 +52,7 @@ export async function initConfig() {
dataCenterInterfaceConfig.hqmdzmytgl = dataCenterInterface[0].hqmdzmytgl[0]; dataCenterInterfaceConfig.hqmdzmytgl = dataCenterInterface[0].hqmdzmytgl[0];
dataCenterInterfaceConfig.hqmdzjbxx = dataCenterInterface[0].hqmdzjbxx[0]; dataCenterInterfaceConfig.hqmdzjbxx = dataCenterInterface[0].hqmdzjbxx[0];
dataCenterInterfaceConfig.hqdzsblb = dataCenterInterface[0].hqdzsblb[0]; dataCenterInterfaceConfig.hqdzsblb = dataCenterInterface[0].hqdzsblb[0];
dataCenterInterfaceConfig.xcxzzcq = xcxInterface[0];
// console.log(dataCenterInterfaceConfig.hqmdzsjgl); // console.log(dataCenterInterfaceConfig.hqmdzsjgl);
} }
......
...@@ -4,12 +4,106 @@ import { get } from "../../util/request"; ...@@ -4,12 +4,106 @@ import { get } from "../../util/request";
import { BizError } from "../../util/bizError"; import { BizError } from "../../util/bizError";
import { guangfuTableData } from "../table/tableData"; import { guangfuTableData } from "../table/tableData";
export async function get2() {
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 t = await get("https://openapi-cn.growatt.com/v1/plant/data", {plant_id}, header)
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;
});
}
console.log();
}
/** /**
* 光伏 * 光伏
* @returns * @returns
*/ */
export async function getGuangFu() { export async function getGuangFu() {
return
let result = { let result = {
jbqk:[], //基本情况 jbqk:[], //基本情况
nhfx:{count:[], charData:[], dayData:[]}, //能耗分析 nhfx:{count:[], charData:[], dayData:[]}, //能耗分析
......
...@@ -4,7 +4,7 @@ import { httpServer } from "./net/http_server"; ...@@ -4,7 +4,7 @@ import { httpServer } from "./net/http_server";
import { initConfig, systemConfig } from "./config/serverConfig"; import { initConfig, systemConfig } from "./config/serverConfig";
import { guangfuInit } from "./biz/getData"; import { guangfuInit } from "./biz/getData";
import { initToken, tokenTask } from "./data/interface/chuanGanqi"; import { initToken, tokenTask } from "./data/interface/chuanGanqi";
import { initDeviceMap, 温湿度变化趋势变化趋势,光照变化, 土壤温度变化趋势 } from "./biz/chuanGanQi/cgq"; import { initDeviceMap, 温湿度变化趋势变化趋势,光照变化, 土壤温度变化趋势, initCGQData } from "./biz/chuanGanQi/cgq";
import { getGuangFu } from "./data/interface/dataInterface"; import { getGuangFu } from "./data/interface/dataInterface";
async function lanuch() { async function lanuch() {
...@@ -17,6 +17,7 @@ async function lanuch() { ...@@ -17,6 +17,7 @@ async function lanuch() {
} }
//缓存数据
async function systemTask() { async function systemTask() {
/**溢佳 设备token */ /**溢佳 设备token */
...@@ -26,7 +27,10 @@ async function systemTask() { ...@@ -26,7 +27,10 @@ async function systemTask() {
// await 温湿度变化趋势变化趋势("A2", "温度"); // await 温湿度变化趋势变化趋势("A2", "温度");
// await 土壤温度变化趋势(); // await 土壤温度变化趋势();
// await guangfuInit(); // await guangfuInit();
await initCGQData();
console.log("数据初始化成功");
} }
lanuch(); lanuch();
...@@ -8,7 +8,7 @@ import * as path from "path"; ...@@ -8,7 +8,7 @@ import * as path from "path";
export class httpServer { export class httpServer {
static createServer(port:number) { static createServer(port:number) {
var httpServer = express(); var httpServer = express();
httpServer.all('*',function (req, res, next) { httpServer.all('*',function (req, res, next) {
......
...@@ -31,47 +31,31 @@ export function setRouter(httpServer){ ...@@ -31,47 +31,31 @@ export function setRouter(httpServer){
//======post //======post
httpServer.post('/weather', asyncHandler(leftBiz.getData)); httpServer.post('/weather', asyncHandler(leftBiz.getData));
httpServer.get('/weather', asyncHandler(leftBiz.getData)); httpServer.get('/weather', asyncHandler(leftBiz.getData));
httpServer.post('/cyszhgl', asyncHandler(cyszhglBiz.getData)); httpServer.post('/cyszhgl', asyncHandler(cyszhglBiz.getData));
httpServer.post('/zzqk', asyncHandler(cyszhglBiz.zzqk)); httpServer.post('/zzqk', asyncHandler(cyszhglBiz.zzqk));
// httpServer.post('/cyszhgl/zzzl', asyncHandler(cyszhglBiz.zzzl)); // httpServer.post('/cyszhgl/zzzl', asyncHandler(cyszhglBiz.zzzl));
// httpServer.post('/cyszhgl/zzfb', asyncHandler(cyszhglBiz.zzfb)); // httpServer.post('/cyszhgl/zzfb', asyncHandler(cyszhglBiz.zzfb));
httpServer.post('/gfny', asyncHandler(gfnyBiz.getData)); httpServer.post('/gfny', asyncHandler(gfnyBiz.getData));
httpServer.post('/yzdqxdnyzl', asyncHandler(yzdqxdnyzlBiz.getData)); httpServer.post('/yzdqxdnyzl', asyncHandler(yzdqxdnyzlBiz.getData));
httpServer.post('/jscxpop', asyncHandler(yzdqxdnyzlBiz.getJscxPop)); httpServer.post('/jscxpop', asyncHandler(yzdqxdnyzlBiz.getJscxPop));
httpServer.post('/hjszzl', asyncHandler(hjszzlBiz.getData)); httpServer.post('/hjszzl', asyncHandler(hjszzlBiz.getData));
httpServer.post('/nyjqr', asyncHandler(nyjqrBiz.getData)); httpServer.post('/nyjqr', asyncHandler(nyjqrBiz.getData));
httpServer.post('/jdaqgl', asyncHandler(jdaqglBiz.getData)); httpServer.post('/jdaqgl', asyncHandler(jdaqglBiz.getData));
httpServer.post('/gbzscbgjdAq', asyncHandler(gbzscbgjdAqBiz.getData)); httpServer.post('/gbzscbgjdAq', asyncHandler(gbzscbgjdAqBiz.getData));
httpServer.post('/gbzscbgjdBq', asyncHandler(gbzscbgjdBqBiz.getData)); httpServer.post('/gbzscbgjdBq', asyncHandler(gbzscbgjdBqBiz.getData));
httpServer.post('/guiyu', asyncHandler(guiYuBiz.getData)); httpServer.post('/guiyu', asyncHandler(guiYuBiz.getData));
//======get //======get
httpServer.get('/cyszhgl', asyncHandler(cyszhglBiz.getData)); httpServer.get('/cyszhgl', asyncHandler(cyszhglBiz.getData));
httpServer.get('/zzqk', asyncHandler(cyszhglBiz.zzqk)); httpServer.get('/zzqk', asyncHandler(cyszhglBiz.zzqk));
// httpServer.get('/cyszhgl/zzzl', asyncHandler(cyszhglBiz.zzzl)); // httpServer.get('/cyszhgl/zzzl', asyncHandler(cyszhglBiz.zzzl));
// httpServer.get('/cyszhgl/zzfb', asyncHandler(cyszhglBiz.zzfb)); // httpServer.get('/cyszhgl/zzfb', asyncHandler(cyszhglBiz.zzfb));
httpServer.get('/gfny', asyncHandler(gfnyBiz.getData)); httpServer.get('/gfny', asyncHandler(gfnyBiz.getData));
httpServer.get('/yzdqxdnyzl', asyncHandler(yzdqxdnyzlBiz.getData)); httpServer.get('/yzdqxdnyzl', asyncHandler(yzdqxdnyzlBiz.getData));
httpServer.get('/jscxpop', asyncHandler(yzdqxdnyzlBiz.getJscxPop)); httpServer.get('/jscxpop', asyncHandler(yzdqxdnyzlBiz.getJscxPop));
httpServer.get('/hjszzl', asyncHandler(hjszzlBiz.getData)); httpServer.get('/hjszzl', asyncHandler(hjszzlBiz.getData));
httpServer.get('/nyjqr', asyncHandler(nyjqrBiz.getData)); httpServer.get('/nyjqr', asyncHandler(nyjqrBiz.getData));
httpServer.get('/jdaqgl', asyncHandler(jdaqglBiz.getData)); httpServer.get('/jdaqgl', asyncHandler(jdaqglBiz.getData));
httpServer.get('/gbzscbgjdAq', asyncHandler(gbzscbgjdAqBiz.getData)); httpServer.get('/gbzscbgjdAq', asyncHandler(gbzscbgjdAqBiz.getData));
httpServer.get('/gbzscbgjdBq', asyncHandler(gbzscbgjdBqBiz.getData)); httpServer.get('/gbzscbgjdBq', asyncHandler(gbzscbgjdBqBiz.getData));
httpServer.get('/guiyu', asyncHandler(guiYuBiz.getData)); httpServer.get('/guiyu', asyncHandler(guiYuBiz.getData));
} }
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