Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
zjntServer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
node_server
zjntServer
Commits
787061ff
Commit
787061ff
authored
Mar 07, 2025
by
lixinming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
64136d11
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
265 additions
and
122 deletions
+265
-122
serverConfig.xml
serverConfig.xml
+1
-0
cgq.ts
src/biz/chuanGanQi/cgq.ts
+78
-19
guiYu.ts
src/biz/guiYu.ts
+51
-57
hjszzl.ts
src/biz/hjszzl.ts
+10
-13
serverConfig.ts
src/config/serverConfig.ts
+4
-1
chuanGanqi.ts
src/data/interface/chuanGanqi.ts
+23
-20
dataInterface.ts
src/data/interface/dataInterface.ts
+90
-0
guiyu.ts
src/data/interface/guiyu.ts
+0
-0
main.ts
src/main.ts
+1
-5
router.ts
src/routers/router.ts
+5
-5
request.ts
src/util/request.ts
+2
-2
No files found.
serverConfig.xml
View file @
787061ff
...
@@ -12,5 +12,6 @@
...
@@ -12,5 +12,6 @@
<hqmdzlsfdl>
https://openapi-cn.growatt.com/v1/plant/energy
</hqmdzlsfdl>
<hqmdzlsfdl>
https://openapi-cn.growatt.com/v1/plant/energy
</hqmdzlsfdl>
<hqmdzjbxx>
https://openapi-cn.growatt.com/v1/plant/details
</hqmdzjbxx>
<hqmdzjbxx>
https://openapi-cn.growatt.com/v1/plant/details
</hqmdzjbxx>
<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>
</dataCenterInterface>
</dataCenterInterface>
</config>
</config>
src/biz/chuanGanQi/cgq.ts
View file @
787061ff
import
moment
=
require
(
"moment"
);
import
moment
=
require
(
"moment"
);
import
{
getYJApiData
,
YiJiaInterficeConfig
}
from
"../../data/interface/chuanGanqi"
;
import
{
getYJApiData
,
YiJiaInterficeConfig
}
from
"../../data/interface/chuanGanqi"
;
import
{
get
}
from
"../../util/request"
;
/**
/**
...
@@ -64,10 +65,33 @@ export async function 获取传感器设备类型分布() {
...
@@ -64,10 +65,33 @@ export async function 获取传感器设备类型分布() {
}
}
export
async
function
温湿度变化趋势变化趋势
(
chartArea
,
chartType
)
{
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
=
""
;
let
key
=
""
;
if
(
chartType
==
"温度"
)
key
=
"airT"
;
if
(
chartType
==
"温度"
)
key
=
"airT"
;
else
if
(
chartType
==
"湿度"
)
key
=
"airH"
;
else
if
(
chartType
==
"湿度"
)
key
=
"airH"
;
else
if
(
chartType
==
"降雨量"
)
key
=
"rain"
;
else
if
(
chartType
==
"降雨量"
)
key
=
"rain"
;
else
if
(
chartType
==
"室外温度"
)
key
=
"airT-1"
if
(
key
==
"rain"
)
{
if
(
key
==
"rain"
)
{
chartArea
=
"气象站"
;
chartArea
=
"气象站"
;
...
@@ -153,25 +177,20 @@ export async function 光照变化() {
...
@@ -153,25 +177,20 @@ export async function 光照变化() {
}
}
export
async
function
土壤检测
()
{
export
async
function
土壤检测
()
{
}
export
async
function
土壤温度变化趋势
()
{
let
keyList
=
[
let
keyList
=
[
{
keyStr
:
"soilT"
,
keyName
:
"土壤温度"
},
{
unit
:
"℃"
,
keyStr
:
"soilT"
,
keyName
:
"土壤温度"
},
{
keyStr
:
"soilH"
,
keyName
:
"土壤湿度"
},
{
unit
:
"RH"
,
keyStr
:
"soilH"
,
keyName
:
"土壤湿度"
},
{
keyStr
:
"dPH"
,
keyName
:
"土壤PH值"
},
{
unit
:
"PH"
,
keyStr
:
"dPH"
,
keyName
:
"土壤PH值"
},
{
keyStr
:
"doilC"
,
keyName
:
"土壤电导率"
}
{
unit
:
"us/cm"
,
keyStr
:
"doilC"
,
keyName
:
"土壤电导率"
}
];
];
let
dataMap
=
{};
let
dataMap
=
{};
//土壤检测数据
for
(
let
key
in
DeviceListMap
)
{
for
(
let
key
in
DeviceListMap
)
{
let
data
=
await
getYJApiData
(
YiJiaInterficeConfig
[
"遥测数据"
],
{
deviceId
:
key
});
let
data
=
await
getYJApiData
(
YiJiaInterficeConfig
[
"遥测数据"
],
{
deviceId
:
key
});
let
body
=
data
.
body
||
{};
let
body
=
data
.
body
||
{};
keyList
.
forEach
(
info
=>
{
keyList
.
forEach
(
info
=>
{
let
{
keyStr
,
keyName
}
=
info
;
let
{
keyStr
,
keyName
,
unit
}
=
info
;
let
value
;
let
value
;
if
(
body
[
keyStr
]
&&
body
[
keyStr
][
0
])
{
if
(
body
[
keyStr
]
&&
body
[
keyStr
][
0
])
{
...
@@ -179,25 +198,65 @@ export async function 土壤温度变化趋势() {
...
@@ -179,25 +198,65 @@ export async function 土壤温度变化趋势() {
}
}
if
(
!
dataMap
[
keyName
])
{
if
(
!
dataMap
[
keyName
])
{
dataMap
[
keyName
]
=
{
count
:
0
,
num
:
0
};
dataMap
[
keyName
]
=
{
count
:
0
,
num
:
0
,
unit
};
}
}
dataMap
[
keyName
].
count
+=
1
;
dataMap
[
keyName
].
count
+=
1
;
dataMap
[
keyName
].
num
+=
parseFloat
(
value
)
||
0
;
dataMap
[
keyName
].
num
+=
parseFloat
(
value
||
0
)
;
console
.
log
()
console
.
log
()
});
});
console
.
log
();
console
.
log
();
}
}
let
dataList
=
[];
let
dataList
=
[];
for
(
let
key
in
dataMap
)
{
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
({
dataList
.
push
({
key
,
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
;
}
}
src/biz/guiYu.ts
View file @
787061ff
...
@@ -2,61 +2,54 @@
...
@@ -2,61 +2,54 @@
* 鳜鱼
* 鳜鱼
*/
*/
import
{
keyValuePackage
}
from
"../dataPackage/inFrontOut"
;
import
{
getGuiYuLeftData
}
from
"../data/interface/guiyu"
;
import
{
keyValuePackage
,
onceYBarChartPackage
}
from
"../dataPackage/inFrontOut"
;
import
{
getKeyValueOut
,
getOnceYBarChartOut
}
from
"../dataPackage/out"
;
export
function
getData
(
req
,
res
)
{
// let excelData = hjszzlTableData();
export
async
function
getData
(
req
,
res
)
{
// let ret:any = {};
let
ret
:
any
=
{};
// let qwqsPackageData = onceYBarChartPackage( excelData['气温趋势'], '','');
// ret['qwqs'] = getOnceYBarChartOut('气温趋势', qwqsPackageData);
let
guiYuDataInfo
=
await
getGuiYuLeftData
();
// let trwlysjcPackageData = onceYBarChartPackage( excelData['土壤微量元素监测'], '','');
ret
[
'sbjr'
]
=
getKeyValueOut
(
'设备接入'
,
[]);
// ret['trwlysjc'] = getOnceYBarChartOut('土壤微量元素监测', trwlysjcPackageData);
ret
[
'sbjr'
].
dataList
=
guiYuDataInfo
.
sheBeiJieRu
;
// let zdqsbhPackageData = onceYBarChartPackage( excelData['浊度趋势变化'], '','');
let
jyzsbzxqkData
=
onceYBarChartPackage
(
[{
name
:
"近一周设备在线率"
,
data
:
guiYuDataInfo
[
"设备在线情况"
]
}],
''
,
''
);
// ret['zdqsbh'] = getOnceYBarChartOut('浊度趋势变化', zdqsbhPackageData);
ret
[
'jyzsbzxqk'
]
=
getOnceYBarChartOut
(
'近一周设备在线率'
,
jyzsbzxqkData
);
let
txcgkData
=
keyValuePackage
(
guiYuDataInfo
[
"原始数据Map"
][
"条形池"
][
"统计结果"
]);
// let chzlcxPackageData = onceYBarChartPackage( excelData['虫害治理成效'], '','');
ret
[
'txcgk'
]
=
getKeyValueOut
(
'条形池概况'
,
txcgkData
);
// ret['chzlcx'] = getOnceYBarChartOut('虫害治理成效', chzlcxPackageData);
let
yxcgkData
=
keyValuePackage
(
guiYuDataInfo
[
"原始数据Map"
][
"圆形池"
][
"统计结果"
]);
ret
[
'yxcgk'
]
=
getKeyValueOut
(
'条形池概况'
,
yxcgkData
);
// // let tqjcPackageData = keyValuePackage(excelData['天气检测'].dataList);
let
fxcgkData
=
keyValuePackage
(
guiYuDataInfo
[
"原始数据Map"
][
"方形池"
][
"统计结果"
]);
// // ret['tqjc'] = getKeyValueOut('天气检测', tqjcPackageData);
ret
[
'txcgk'
]
=
getKeyValueOut
(
'条形池概况'
,
fxcgkData
);
// let trjcPackageData = keyValuePackage(excelData['土壤检测'].dataList);
let
txcswqsData
=
onceYBarChartPackage
(
[{
name
:
"水温"
,
data
:
guiYuDataInfo
[
"原始数据Map"
][
"条形池"
][
"水温"
]
}],
''
,
''
);
// ret['trjc'] = getKeyValueOut('土壤检测', trjcPackageData);
let
txcswqsChartData
=
getOnceYBarChartOut
(
'水温'
,
txcswqsData
);
let
txcphqsData
=
onceYBarChartPackage
(
[{
name
:
"PH"
,
data
:
guiYuDataInfo
[
"原始数据Map"
][
"条形池"
][
"PH"
]
}],
''
,
''
);
// let szjcPackageData = keyValuePackage(excelData['水质检测'].dataList);
let
txcphqsChartData
=
getOnceYBarChartOut
(
'PH'
,
txcphqsData
);
// ret['szjc'] = getKeyValueOut('水质检测', szjcPackageData);
let
txcdoqsData
=
onceYBarChartPackage
(
[{
name
:
"溶氧量"
,
data
:
guiYuDataInfo
[
"原始数据Map"
][
"条形池"
][
"水温"
]
}],
''
,
''
);
let
txcdoqsChartData
=
getOnceYBarChartOut
(
'溶氧量'
,
txcdoqsData
);
// let hjjcfxPackageData = keyValuePackage(excelData['环境基础分析'].dataList);
ret
[
"txcqs"
]
=
{
name
:
"条形池水质变化趋势"
,
data
:[
txcswqsChartData
,
txcphqsChartData
,
txcdoqsChartData
]};
// ret['hjjcfx'] = getKeyValueOut('环境基础分析', hjjcfxPackageData);
let
fxcswqsData
=
onceYBarChartPackage
(
[{
name
:
"水温"
,
data
:
guiYuDataInfo
[
"原始数据Map"
][
"方形池"
][
"水温"
]
}],
''
,
''
);
// let bhczlPackageData = stringListPackage(excelData["病害虫治理"].dataList);
let
fxcswqsChartData
=
getOnceYBarChartOut
(
'水温'
,
fxcswqsData
);
// let bhczl = [];
let
fxcphqsData
=
onceYBarChartPackage
(
[{
name
:
"PH"
,
data
:
guiYuDataInfo
[
"原始数据Map"
][
"方形池"
][
"PH"
]
}],
''
,
''
);
// for(let i = 0; i < bhczlPackageData.length; i++) {
let
fxcphqsChartData
=
getOnceYBarChartOut
(
'PH'
,
fxcphqsData
);
// let img = `${systemConfig.imgPath}/${bhczlPackageData[i]}`;
let
fxcdoqsData
=
onceYBarChartPackage
(
[{
name
:
"溶氧量"
,
data
:
guiYuDataInfo
[
"原始数据Map"
][
"方形池"
][
"水温"
]
}],
''
,
''
);
// bhczl.push(img);
let
fxcdoqsChartData
=
getOnceYBarChartOut
(
'溶氧量'
,
fxcdoqsData
);
// }
ret
[
"txcqs"
]
=
{
name
:
"方形池水质变化趋势"
,
data
:[
fxcswqsChartData
,
fxcphqsChartData
,
fxcdoqsChartData
]};
// ret['bhczl'] = getStringOut('病害虫治理', bhczl);
let
yxcswqsData
=
onceYBarChartPackage
(
[{
name
:
"水温"
,
data
:
guiYuDataInfo
[
"原始数据Map"
][
"圆形池"
][
"水温"
]
}],
''
,
''
);
// let chjcdyjPackageData = keyValuePackage(excelData['虫害检测灯预警'].dataList);
let
yxcswqsChartData
=
getOnceYBarChartOut
(
'水温'
,
yxcswqsData
);
// ret['chjcdyj'] = getKeyValueOut('虫害检测灯预警', chjcdyjPackageData);
let
yxcphqsData
=
onceYBarChartPackage
(
[{
name
:
"PH"
,
data
:
guiYuDataInfo
[
"原始数据Map"
][
"圆形池"
][
"PH"
]
}],
''
,
''
);
let
yxcphqsChartData
=
getOnceYBarChartOut
(
'PH'
,
yxcphqsData
);
// let zlqkPackageData = keyValuePackage(excelData['治理情况'].dataList);
let
yxcdoqsData
=
onceYBarChartPackage
(
[{
name
:
"溶氧量"
,
data
:
guiYuDataInfo
[
"原始数据Map"
][
"圆形池"
][
"水温"
]
}],
''
,
''
);
// ret['zlqk'] = getKeyValueOut('治理情况', zlqkPackageData);
let
yxcdoqsChartData
=
getOnceYBarChartOut
(
'溶氧量'
,
yxcdoqsData
);
ret
[
"txcqs"
]
=
{
name
:
"圆形池水质变化趋势"
,
data
:[
yxcswqsChartData
,
yxcphqsChartData
,
yxcdoqsChartData
]};
// let tqjcbTableData = tablePackage(excelData["天气检测表"].headerList[0], excelData["天气检测表"].bodyList);
// ret['tqjcb'] = getTableOut( '天气检测表', tqjcbTableData);
ret
[
"renwu"
]
=
guiYuDataInfo
.
任务列表
;
res
.
send
(
ret
);
// let zhxyjglPackageData = keyValuePackage(excelData['灾害性应急管理'].dataList);
// ret['zhxyjgl'] = getKeyValueOut('灾害性应急管理', zhxyjglPackageData);
// let qxzhlbPackageData = keyValuePackage(excelData['气象灾害列表'].dataList);
// ret['qxzhlb'] = getKeyValueOut('气象灾害列表', qxzhlbPackageData);
// res.send(ret);
}
}
\ No newline at end of file
src/biz/hjszzl.ts
View file @
787061ff
...
@@ -4,12 +4,9 @@ import { hjszzlTableData } from '../data/table/hjszzlData';
...
@@ -4,12 +4,9 @@ import { hjszzlTableData } from '../data/table/hjszzlData';
import
{
separateDataAndUint
}
from
"../dataPackage/tool"
;
import
{
separateDataAndUint
}
from
"../dataPackage/tool"
;
import
{
doubleYBarCharPackage
,
keyValuePackage
,
onceYBarChartPackage
,
rankPackage
,
stringListPackage
,
tablePackage
}
from
'../dataPackage/inFrontOut'
;
import
{
doubleYBarCharPackage
,
keyValuePackage
,
onceYBarChartPackage
,
rankPackage
,
stringListPackage
,
tablePackage
}
from
'../dataPackage/inFrontOut'
;
import
{
getDoubleYBarChartOut
,
getKeyValueOut
,
getOnceYBarChartOut
,
getStringOut
,
getTableOut
}
from
'../dataPackage/out'
;
import
{
getDoubleYBarChartOut
,
getKeyValueOut
,
getOnceYBarChartOut
,
getStringOut
,
getTableOut
}
from
'../dataPackage/out'
;
import
{
光照变化
,
温湿度变化趋势变化趋势
}
from
'./chuanGanQi/cgq'
;
import
{
光照变化
,
土壤检测
,
土壤温度变化趋势
,
温湿度变化趋势变化趋势
}
from
'./chuanGanQi/cgq'
;
/* 环境数字治理 */
/* 环境数字治理 */
export
async
function
getData
(
req
,
res
)
{
export
async
function
getData
(
req
,
res
)
{
let
excelData
=
hjszzlTableData
();
let
excelData
=
hjszzlTableData
();
...
@@ -32,18 +29,14 @@ export async function getData(req, res) {
...
@@ -32,18 +29,14 @@ export async function getData(req, res) {
let
温度变化趋势
=
{};
let
温度变化趋势
=
{};
let
wd
=
0
;
let
wd
=
0
;
let
wdCount
=
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
++
)
{
for
(
let
i
=
0
;
i
<
keyList
.
length
;
i
++
)
{
let
{
dataList
,
now
}
=
await
温湿度变化趋势变化趋势
(
keyList
[
i
],
"温度"
);
let
{
dataList
,
now
}
=
await
温湿度变化趋势变化趋势
(
keyList
[
i
],
"温度"
);
if
(
!
now
)
continue
;
if
(
!
now
)
continue
;
dataList
.
sort
((
a
,
b
)
=>
{
return
parseFloat
(
a
.
key
)
-
parseFloat
(
b
.
key
)})
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
]]
=
[
温度变化趋势
[
keyList
[
i
]]
=
[
{
name
:
"棚内温度"
,
data
:
dataList
},
{
name
:
"棚内温度"
,
data
:
dataList
},
{
name
:
"室外温度"
,
data
:
xnDataList
}
{
name
:
"室外温度"
,
data
:
xnDataList
}
...
@@ -108,10 +101,14 @@ export async function getData(req, res) {
...
@@ -108,10 +101,14 @@ export async function getData(req, res) {
let
gzbhqsPackageData
=
onceYBarChartPackage
(
excelData
[
'光照变化趋势'
],
''
,
''
);
let
gzbhqsPackageData
=
onceYBarChartPackage
(
excelData
[
'光照变化趋势'
],
''
,
''
);
ret
[
'gzbhqs'
]
=
getOnceYBarChartOut
(
'光照变化趋势'
,
gzbhqsPackageData
);
ret
[
'gzbhqs'
]
=
getOnceYBarChartOut
(
'光照变化趋势'
,
gzbhqsPackageData
);
let
trjcPackageData
=
keyValuePackage
(
excelData
[
'土壤监测'
].
dataList
);
let
土壤检测数据
=
await
土壤检测
();
// let trjcPackageData = keyValuePackage(excelData['土壤监测'].dataList);
let
trjcPackageData
=
keyValuePackage
(
土壤检测数据
);
ret
[
'trjc'
]
=
getKeyValueOut
(
'土壤监测'
,
trjcPackageData
);
ret
[
'trjc'
]
=
getKeyValueOut
(
'土壤监测'
,
trjcPackageData
);
let
土壤温度变化趋势数据
=
await
土壤温度变化趋势
();
let
trwdbhqsPackageData
=
onceYBarChartPackage
(
excelData
[
'土壤温度变化趋势'
],
''
,
''
);
let
trwdbhqsPackageData
=
onceYBarChartPackage
(
excelData
[
'土壤温度变化趋势'
],
''
,
''
);
trwdbhqsPackageData
.
dataInfo
=
土壤温度变化趋势数据
;
ret
[
'trwdbhqs'
]
=
getOnceYBarChartOut
(
'土壤温度变化趋势'
,
trwdbhqsPackageData
);
ret
[
'trwdbhqs'
]
=
getOnceYBarChartOut
(
'土壤温度变化趋势'
,
trwdbhqsPackageData
);
let
trsdbhqsPackageData
=
onceYBarChartPackage
(
excelData
[
'土壤湿度变化趋势'
],
''
,
''
);
let
trsdbhqsPackageData
=
onceYBarChartPackage
(
excelData
[
'土壤湿度变化趋势'
],
''
,
''
);
...
...
src/config/serverConfig.ts
View file @
787061ff
...
@@ -13,9 +13,10 @@ export let dataCenterInterfaceConfig = {
...
@@ -13,9 +13,10 @@ export let dataCenterInterfaceConfig = {
hqmdzsjgl
:
""
,
//获取某电站数据概览
hqmdzsjgl
:
""
,
//获取某电站数据概览
// hqsyyhdz: "", //获取所有用户电站列表
// hqsyyhdz: "", //获取所有用户电站列表
hqmgyhddzlb
:
""
,
//获取某个用户的电站列表
hqmgyhddzlb
:
""
,
//获取某个用户的电站列表
hqmdzlsfdl
:
""
,
//获取某电站历史发电量
hqmdzlsfdl
:
""
,
//获取某电站历史发电量
有频率限制
hqmdzmytgl
:
""
,
//获取某电站某一天功率数据
hqmdzmytgl
:
""
,
//获取某电站某一天功率数据
hqmdzjbxx
:
""
,
//获取某电站基本信息
hqmdzjbxx
:
""
,
//获取某电站基本信息
hqdzsblb
:
""
,
//获取电站设备列表
}
}
...
@@ -41,6 +42,7 @@ export async function initConfig() {
...
@@ -41,6 +42,7 @@ export async function initConfig() {
systemConfig
.
token
=
token
[
0
];
systemConfig
.
token
=
token
[
0
];
systemConfig
.
userName
=
userName
[
0
];
systemConfig
.
userName
=
userName
[
0
];
systemConfig
.
plantId
=
parseInt
(
plantId
[
0
]);
systemConfig
.
plantId
=
parseInt
(
plantId
[
0
]);
//API数据接口
//API数据接口
dataCenterInterfaceConfig
.
hqmdzsjgl
=
dataCenterInterface
[
0
].
hqmdzsjgl
[
0
];
dataCenterInterfaceConfig
.
hqmdzsjgl
=
dataCenterInterface
[
0
].
hqmdzsjgl
[
0
];
// dataCenterInterfaceConfig.hqsyyhdz = dataCenterInterface[0].hqsyyhdz[0];
// dataCenterInterfaceConfig.hqsyyhdz = dataCenterInterface[0].hqsyyhdz[0];
...
@@ -48,6 +50,7 @@ export async function initConfig() {
...
@@ -48,6 +50,7 @@ export async function initConfig() {
dataCenterInterfaceConfig
.
hqmdzlsfdl
=
dataCenterInterface
[
0
].
hqmdzlsfdl
[
0
];
dataCenterInterfaceConfig
.
hqmdzlsfdl
=
dataCenterInterface
[
0
].
hqmdzlsfdl
[
0
];
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
];
// console.log(dataCenterInterfaceConfig.hqmdzsjgl);
// console.log(dataCenterInterfaceConfig.hqmdzsjgl);
}
}
...
...
src/data/interface/chuanGanqi.ts
View file @
787061ff
...
@@ -41,24 +41,24 @@ export async function getToken() {
...
@@ -41,24 +41,24 @@ export async function getToken() {
/**
/**
* 定时刷新token
* 定时刷新token
*/
*/
export
async
function
refToken
()
{
//
export async function refToken() {
let
body
=
{
//
let body = {
"refreshToken"
:
tokenQueue
.
refreshToken
.
refreshToken
//
"refreshToken":tokenQueue.refreshToken.refreshToken
};
//
};
let
header
=
{
//
let header = {
"Content-Type"
:
"application/json;charset=ISO-8859-1"
//
"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
)
{
//
if (!data || data.message != 200 || ! data.body) {
throw
new
BizError
(
ERRORENUM
.
溢佳传感器
TOKEN
调用失败
);
//
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() {
...
@@ -67,15 +67,18 @@ export async function refToken() {
export
async
function
tokenTask
()
{
export
async
function
tokenTask
()
{
setInterval
(
async
()
=>
{
setInterval
(
async
()
=>
{
let
nowMs
=
new
Date
().
valueOf
();
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
if
(
tokenQueue
.
tokenInfo
.
tokenMs
+
(
3600
*
2.4
*
1000
)
<=
nowMs
)
{
//设定2.4小时刷新token
let
itemTokenInfo
=
await
ref
Token
();
let
itemTokenInfo
=
await
get
Token
();
tokenQueue
.
tokenInfo
=
{
token
:
itemTokenInfo
.
token
,
tokenMs
:
new
Date
().
valueOf
()};
tokenQueue
.
tokenInfo
=
{
token
:
itemTokenInfo
.
token
,
tokenMs
:
new
Date
().
valueOf
()};
}
}
if
(
tokenQueue
.
tokenInfo
.
tokenMs
+
(
3600
*
24
*
1000
*
6.5
)
<=
nowMs
)
{
//设定6.5t天小时刷新token
//
if (tokenQueue.tokenInfo.tokenMs+(3600 * 24 * 1000 * 6.5 ) <= nowMs ) {//设定6.5t天小时刷新token
let
tokenInfo
=
await
getToken
();
//
let tokenInfo = await getToken();
tokenQueue
.
tokenInfo
=
{
token
:
tokenInfo
.
token
,
tokenMs
:
new
Date
().
valueOf
()};
//
tokenQueue.tokenInfo = {token:tokenInfo.token, tokenMs:new Date().valueOf()};
tokenQueue
.
refreshToken
=
{
refreshToken
:
tokenInfo
.
token
,
refreshTokenMs
:
new
Date
().
valueOf
()};
//
tokenQueue.refreshToken = {refreshToken:tokenInfo.token, refreshTokenMs:new Date().valueOf()};
}
//
}
},
1000
*
10
);
},
1000
*
10
);
}
}
...
...
src/data/interface/dataInterface.ts
View file @
787061ff
...
@@ -261,4 +261,94 @@ export async function getGuangFu() {
...
@@ -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;
});
}
*/
src/data/interface/guiyu.ts
View file @
787061ff
This diff is collapsed.
Click to expand it.
src/main.ts
View file @
787061ff
...
@@ -6,7 +6,6 @@ import { guangfuInit } from "./biz/getData";
...
@@ -6,7 +6,6 @@ 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
,
温湿度变化趋势变化趋势
,
光照变化
,
土壤温度变化趋势
}
from
"./biz/chuanGanQi/cgq"
;
import
{
getGuangFu
}
from
"./data/interface/dataInterface"
;
import
{
getGuangFu
}
from
"./data/interface/dataInterface"
;
import
{
getGuiYuLeftData
,
test
}
from
"./data/interface/guiyu"
;
async
function
lanuch
()
{
async
function
lanuch
()
{
await
initConfig
();
await
initConfig
();
...
@@ -20,15 +19,12 @@ async function lanuch() {
...
@@ -20,15 +19,12 @@ async function lanuch() {
async
function
systemTask
()
{
async
function
systemTask
()
{
/**鳜鱼测试 */
// await getGuiYuLeftData(null, null);
// return
/**溢佳 设备token */
/**溢佳 设备token */
await
initToken
();
await
initToken
();
await
tokenTask
();
await
tokenTask
();
await
initDeviceMap
();
await
initDeviceMap
();
// await 温湿度变化趋势变化趋势("A2", "温度");
// await 温湿度变化趋势变化趋势("A2", "温度");
await
土壤温度变化趋势
();
//
await 土壤温度变化趋势();
// await guangfuInit();
// await guangfuInit();
}
}
...
...
src/routers/router.ts
View file @
787061ff
...
@@ -8,7 +8,7 @@ import * as cyszhglBiz from '../biz/cyszhgl';
...
@@ -8,7 +8,7 @@ import * as cyszhglBiz from '../biz/cyszhgl';
import
*
as
gfnyBiz
from
'../biz/gfny'
;
import
*
as
gfnyBiz
from
'../biz/gfny'
;
import
*
as
sdt1hgfbBiz
from
'../biz/sdt1hgfb
'
;
import
*
as
guiYuBiz
from
'../biz/guiYu
'
;
import
*
as
yzdqxdnyzlBiz
from
'../biz/yzdqxdnyzl'
;
import
*
as
yzdqxdnyzlBiz
from
'../biz/yzdqxdnyzl'
;
...
@@ -23,7 +23,7 @@ import * as gbzscbgjdAqBiz from '../biz/gbzscbgjdAq';
...
@@ -23,7 +23,7 @@ import * as gbzscbgjdAqBiz from '../biz/gbzscbgjdAq';
import
*
as
gbzscbgjdBqBiz
from
'../biz/gbzscbgjdBq'
;
import
*
as
gbzscbgjdBqBiz
from
'../biz/gbzscbgjdBq'
;
export
function
setRouter
(
httpServer
){
export
function
setRouter
(
httpServer
){
/**
竖屏
*/
/**
光伏
*/
httpServer
.
get
(
'/left'
,
asyncHandler
(
leftBiz
.
getLeft
));
httpServer
.
get
(
'/left'
,
asyncHandler
(
leftBiz
.
getLeft
));
httpServer
.
get
(
'/data'
,
asyncHandler
(
leftBiz
.
getData
));
httpServer
.
get
(
'/data'
,
asyncHandler
(
leftBiz
.
getData
));
httpServer
.
get
(
'/right'
,
asyncHandler
(
leftBiz
.
getRight
));
httpServer
.
get
(
'/right'
,
asyncHandler
(
leftBiz
.
getRight
));
...
@@ -51,7 +51,7 @@ export function setRouter(httpServer){
...
@@ -51,7 +51,7 @@ export function setRouter(httpServer){
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
));
//======get
//======get
httpServer
.
get
(
'/cyszhgl'
,
asyncHandler
(
cyszhglBiz
.
getData
));
httpServer
.
get
(
'/cyszhgl'
,
asyncHandler
(
cyszhglBiz
.
getData
));
...
@@ -73,7 +73,6 @@ export function setRouter(httpServer){
...
@@ -73,7 +73,6 @@ export function setRouter(httpServer){
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
));
}
}
\ No newline at end of file
src/util/request.ts
View file @
787061ff
...
@@ -33,7 +33,7 @@ export function getYJ(url:string, query?, headers?, timeOut?) {
...
@@ -33,7 +33,7 @@ export function getYJ(url:string, query?, headers?, timeOut?) {
}
}
export
function
post
(
url
,
body
,
headers
)
{
export
function
post
(
url
,
req
body
,
headers
)
{
if
(
!
url
||
(
url
.
search
(
/http:/
)
&&
url
.
search
(
/https:/
))
)
throw
new
BizError
(
!
url
?
"请求地址为空"
:
"请求地址错误"
);
if
(
!
url
||
(
url
.
search
(
/http:/
)
&&
url
.
search
(
/https:/
))
)
throw
new
BizError
(
!
url
?
"请求地址为空"
:
"请求地址错误"
);
let
header
=
{
"content-type"
:
"application/json"
};
let
header
=
{
"content-type"
:
"application/json"
};
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
...
@@ -42,7 +42,7 @@ export function post(url, body, headers) {
...
@@ -42,7 +42,7 @@ export function post(url, body, headers) {
method
:
"POST"
,
method
:
"POST"
,
json
:
true
,
json
:
true
,
headers
:
Object
.
assign
(
header
,
headers
),
headers
:
Object
.
assign
(
header
,
headers
),
body
:
body
body
:
req
body
},
function
(
err
,
res
,
body
)
{
},
function
(
err
,
res
,
body
)
{
const
success
=
!
err
&&
res
&&
res
==
200
;
const
success
=
!
err
&&
res
&&
res
==
200
;
let
message
=
err
||
res
.
statusCode
||
""
;
let
message
=
err
||
res
.
statusCode
||
""
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment