Commit baa4449d by lixinming

no message

parent 787061ff
......@@ -7,4 +7,5 @@
*test*
*.log
*.zip
*.xlsx
\ No newline at end of file
*.xlsx
/public
\ No newline at end of file
......@@ -14,4 +14,5 @@
<hqmdzmytgl>https://openapi-cn.growatt.com/v1/plant/power</hqmdzmytgl>
<hqdzsblb>https://openapi-cn.growatt.com/v1/device/list</hqdzsblb>
</dataCenterInterface>
<xcxInterface>http://101.89.111.202:13281/zjnt/xcx/dataout/zzzmj</xcxInterface>
</config>
import { systemConfig } from '../config/serverConfig';
import { dataCenterInterfaceConfig, systemConfig } from '../config/serverConfig';
import { cyszhglTableData, zzqkTableData } from '../data/table/cyszhglData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, rankPackage, tablePackage } from '../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getTableOut } from '../dataPackage/out';
import { post } from '../util/request';
/* 产业数字化管理 */
......@@ -225,61 +226,105 @@ export function zzfb(req, res) {
* @param req
* @param res
*/
export function zzqk(req, res) {
export async function zzqk(req, res) {
let type = req.body.type || "全部"; //表格暂时无法切换下拉数据
let ret:any = {};
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);
let zzzwPackageData = keyValuePackage(excelData['种植作物'].dataList);
let zzzwPackageData = keyValuePackage(interfaceDataInfo.zhongZhiZuoWuList);
ret['zzzw'] = getKeyValueOut('种植作物', zzzwPackageData);
let nzqkPackageData = keyValuePackage(excelData['农资情况'].dataList);
let nzqkPackageData = keyValuePackage(interfaceDataInfo.nongZiList);
ret['nzqk'] = getKeyValueOut('农资情况', nzqkPackageData);
let flyyqkPackageData = onceYBarChartPackage(excelData['肥料用药情况'], '', '' );
let flyyqkPackageData = onceYBarChartPackage(interfaceDataInfo.feiliaoyongyaoqingkuang, '', '' );
ret['flyyqk'] = getOnceYBarChartOut('肥料用药情况', flyyqkPackageData);
let nscz = excelData['农事操作'];
let allnscz = getAllChart(excelData['农事操作']);
nscz.unshift(allnscz);
let nsczPackageData = onceYBarChartPackage(nscz, '', '' );
let nsczPackageData = onceYBarChartPackage([{name:"操作记录", data:interfaceDataInfo.nongShiList}], '', '' );
ret['nscz'] = getOnceYBarChartOut('农事操作', nsczPackageData);
ret['nscz']["chartList"][0].total = interfaceDataInfo.nongShiCount;
let zwcljn = excelData['作物产量(今年)'];
let allzwcljn = getAllChart(excelData['作物产量(今年)']);
zwcljn.unshift(allzwcljn);
let zwcljnPackageData = onceYBarChartPackage(zwcljn, '', '' );
// let zwcljn = excelData['作物产量(今年)'];
// let allzwcljn = getAllChart(excelData['作物产量(今年)']);
// zwcljn.unshift(allzwcljn);
// let zwcljnPackageData2 = onceYBarChartPackage(zwcljn, '', '' );
// ret['zwcljn2'] = getOnceYBarChartOut('作物产量(今年)', zwcljnPackageData2);
let zwcljnPackageData = onceYBarChartPackage(interfaceDataInfo.chanLiangList, '', '' );
ret['zwcljn'] = getOnceYBarChartOut('作物产量(今年)', zwcljnPackageData);
ret['zwcljn']["chartList"][0].total = interfaceDataInfo.chanLiangStatisList[0].value;
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) + "%";
// let zwclqnPackageData = onceYBarChartPackage([interfaceDataInfo.chanLiangList[1]], '', '' );
// ret['zwclqn'] = getOnceYBarChartOut('作物产量(去年)', zwclqnPackageData);
// ret['zwclqn']["chartList"][0].total = 0;
let tongbi = interfaceDataInfo.chanLiangStatisList[1].value;
ret["zwcltb"] = {title:"作物产量同比", dataList:tongbi};
let zwxs = excelData['作物销售'];
let allzwxs = getAllChart(excelData['作物销售']);
zwxs.unshift(allzwxs);
let zwxsPackageData = onceYBarChartPackage(zwxs, '', '' );
let zwxsPackageData = onceYBarChartPackage([{name:"作物销售", data:interfaceDataInfo.lastMonthXiaoShouList}], '', '' );
ret['zwxs'] = getOnceYBarChartOut('作物销售', zwxsPackageData);
ret['zwxs']["chartList"][0].total = interfaceDataInfo.lastMonthXiaoShou;
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 @@
*/
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 { get } from "../util/request";
......@@ -152,11 +152,13 @@ let guangfuData = {
],
},
};
/**
* 初始化接口数据
*/
export async function guangfuInit() {
await getGuangFu();
await get2();
console.log();
}
......
......@@ -17,6 +17,7 @@ export let dataCenterInterfaceConfig = {
hqmdzmytgl: "", //获取某电站某一天功率数据
hqmdzjbxx: "", //获取某电站基本信息
hqdzsblb:"",//获取电站设备列表
xcxzzcq:"",//小程序种植情况
}
......@@ -35,7 +36,7 @@ export async function initConfig() {
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.imgPath = imgPath[0];
......@@ -51,6 +52,7 @@ export async function initConfig() {
dataCenterInterfaceConfig.hqmdzmytgl = dataCenterInterface[0].hqmdzmytgl[0];
dataCenterInterfaceConfig.hqmdzjbxx = dataCenterInterface[0].hqmdzjbxx[0];
dataCenterInterfaceConfig.hqdzsblb = dataCenterInterface[0].hqdzsblb[0];
dataCenterInterfaceConfig.xcxzzcq = xcxInterface[0];
// console.log(dataCenterInterfaceConfig.hqmdzsjgl);
}
......
......@@ -4,12 +4,106 @@ import { get } from "../../util/request";
import { BizError } from "../../util/bizError";
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
*/
export async function getGuangFu() {
return
let result = {
jbqk:[], //基本情况
nhfx:{count:[], charData:[], dayData:[]}, //能耗分析
......
......@@ -4,7 +4,7 @@ import { httpServer } from "./net/http_server";
import { initConfig, systemConfig } from "./config/serverConfig";
import { guangfuInit } from "./biz/getData";
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";
async function lanuch() {
......@@ -17,6 +17,7 @@ async function lanuch() {
}
//缓存数据
async function systemTask() {
/**溢佳 设备token */
......@@ -26,7 +27,10 @@ async function systemTask() {
// await 温湿度变化趋势变化趋势("A2", "温度");
// await 土壤温度变化趋势();
// await guangfuInit();
await initCGQData();
console.log("数据初始化成功");
}
lanuch();
......@@ -8,7 +8,7 @@ import * as path from "path";
export class httpServer {
static createServer(port:number) {
static createServer(port:number) {
var httpServer = express();
httpServer.all('*',function (req, res, next) {
......
......@@ -31,47 +31,31 @@ export function setRouter(httpServer){
//======post
httpServer.post('/weather', asyncHandler(leftBiz.getData));
httpServer.get('/weather', asyncHandler(leftBiz.getData));
httpServer.post('/cyszhgl', asyncHandler(cyszhglBiz.getData));
httpServer.post('/zzqk', asyncHandler(cyszhglBiz.zzqk));
// httpServer.post('/cyszhgl/zzzl', asyncHandler(cyszhglBiz.zzzl));
// httpServer.post('/cyszhgl/zzfb', asyncHandler(cyszhglBiz.zzfb));
httpServer.post('/gfny', asyncHandler(gfnyBiz.getData));
httpServer.post('/yzdqxdnyzl', asyncHandler(yzdqxdnyzlBiz.getData));
httpServer.post('/jscxpop', asyncHandler(yzdqxdnyzlBiz.getJscxPop));
httpServer.post('/hjszzl', asyncHandler(hjszzlBiz.getData));
httpServer.post('/nyjqr', asyncHandler(nyjqrBiz.getData));
httpServer.post('/jdaqgl', asyncHandler(jdaqglBiz.getData));
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));
httpServer.get('/zzqk', asyncHandler(cyszhglBiz.zzqk));
// httpServer.get('/cyszhgl/zzzl', asyncHandler(cyszhglBiz.zzzl));
// httpServer.get('/cyszhgl/zzfb', asyncHandler(cyszhglBiz.zzfb));
httpServer.get('/gfny', asyncHandler(gfnyBiz.getData));
httpServer.get('/yzdqxdnyzl', asyncHandler(yzdqxdnyzlBiz.getData));
httpServer.get('/jscxpop', asyncHandler(yzdqxdnyzlBiz.getJscxPop));
httpServer.get('/hjszzl', asyncHandler(hjszzlBiz.getData));
httpServer.get('/nyjqr', asyncHandler(nyjqrBiz.getData));
httpServer.get('/jdaqgl', asyncHandler(jdaqglBiz.getData));
httpServer.get('/gbzscbgjdAq', asyncHandler(gbzscbgjdAqBiz.getData));
httpServer.get('/gbzscbgjdBq', asyncHandler(gbzscbgjdBqBiz.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