Commit baa4449d by lixinming

no message

parent 787061ff
...@@ -8,3 +8,4 @@ ...@@ -8,3 +8,4 @@
*.log *.log
*.zip *.zip
*.xlsx *.xlsx
/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>
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();
...@@ -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