明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
L
letian_backend
Project
Project
Details
Activity
Releases
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
zengfanpei
letian_backend
Commits
16654dff
Commit
16654dff
authored
Oct 25, 2024
by
zengfanpei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
e467eeee
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
98 additions
and
46 deletions
+98
-46
local.json
config/local.json
+1
-1
smcCron.js
cron/smcCron.js
+54
-28
wsCron.js
cron/wsCron.js
+42
-16
systemNotice.js
db/models/systemNotice.js
+1
-1
No files found.
config/local.json
View file @
16654dff
...
...
@@ -37,7 +37,7 @@
"getDeviceList"
:
false
,
"getAllDevice"
:
false
,
"collectDeviceInfo"
:
false
,
"collectDeviceInfo4"
:
fals
e
,
"collectDeviceInfo4"
:
tru
e
,
"excel"
:
false
}
}
\ No newline at end of file
cron/smcCron.js
View file @
16654dff
...
...
@@ -39,17 +39,17 @@ async function collectDeviceInfo1({ deviceHQType }) {
// 2. 入库
let
check
=
await
collectSMCModule
.
insertHQData
(
obj
);
// 3. 处理阈值报警通知
if
(
!
check
)
{
// 只有新创建的 需要走一遍阈值检测。
if
(
!
check
)
{
// 只有新创建的 需要走一遍阈值检测。
handleDeviceThreshold
(
obj
);
}
// 4. 处理设备在线状态
handleDeviceOnLine
({
deviceNumber
:
obj
.
deviceNumber
,
online
:
obj
.
onLineState
});
//onLineState 1在线0离线
handleDeviceOnLine
({
deviceNumber
:
obj
.
deviceNumber
,
online
:
obj
.
onLineState
});
//onLineState 1在线0离线
}
else
{
//出错
// handleDeviceOnLine({deviceNumber: obj.deviceNumber, online: 0}); //onLineState 1在线0离线
}
}
else
{
handleDeviceOnLine
({
deviceNumber
:
dev
.
deviceNumber
,
online
:
0
});
//onLineState 1在线0离线
handleDeviceOnLine
({
deviceNumber
:
dev
.
deviceNumber
,
online
:
0
});
//onLineState 1在线0离线
}
}
...
...
@@ -72,7 +72,7 @@ async function collectDeviceInfo1({ deviceHQType }) {
async
function
handleCJData
(
colInfo
,
deviceHQType
)
{
let
handleData
=
{},
attrExistMap
=
{};
//1. 先获取到attr配置
let
attrs
=
await
DB
.
CollectAttribute
.
find
({
del
:
0
,
enable
:
true
,
deviceHQType
:
{
$in
:
[
0
,
deviceHQType
]}
});
let
attrs
=
await
DB
.
CollectAttribute
.
find
({
del
:
0
,
enable
:
true
,
deviceHQType
:
{
$in
:
[
0
,
deviceHQType
]
}
});
console
.
log
(
attrs
)
let
types
=
colInfo
.
type
.
split
(
'/'
);
let
data
=
colInfo
.
data
.
split
(
'|'
);
...
...
@@ -80,13 +80,13 @@ async function handleCJData(colInfo, deviceHQType) {
const
col
=
types
[
i
];
for
(
let
j
=
0
;
j
<
attrs
.
length
;
j
++
)
{
const
attr
=
attrs
[
j
];
if
(
col
.
includes
(
attr
.
deviceKey
))
{
if
([
'errorCode'
,
'version'
].
includes
(
attr
.
dbKey
))
{
if
(
col
.
includes
(
attr
.
deviceKey
))
{
if
([
'errorCode'
,
'version'
].
includes
(
attr
.
dbKey
))
{
handleData
[
attr
.
dbKey
]
=
data
[
i
].
trim
();
}
else
{
const
dataArr
=
data
[
i
].
trim
().
split
(
' '
);
handleData
[
`
${
attr
.
dbKey
}
Arr`
]
=
handleData
[
`
${
attr
.
dbKey
}
Arr`
]
||
[];
if
(
attrExistMap
[
attr
.
dbKey
])
{
handleData
[
`
${
attr
.
dbKey
}
Arr`
]
=
handleData
[
`
${
attr
.
dbKey
}
Arr`
]
||
[];
if
(
attrExistMap
[
attr
.
dbKey
])
{
handleData
[
`
${
attr
.
dbKey
}
Arr`
].
push
(
Number
(
String
(
dataArr
[
0
]).
trim
()));
}
else
{
handleData
[
attr
.
dbKey
]
=
Number
(
String
(
dataArr
[
0
]).
trim
());
...
...
@@ -101,22 +101,22 @@ async function handleCJData(colInfo, deviceHQType) {
console
.
log
(
handleData
,
"======1"
)
for
(
let
index
=
0
;
index
<
attrs
.
length
;
index
++
)
{
const
attr
=
attrs
[
index
];
if
(
handleData
[
`
${
attr
.
dbKey
}
Arr`
]
&&
handleData
[
`
${
attr
.
dbKey
}
Arr`
].
length
)
{
if
(
handleData
[
`
${
attr
.
dbKey
}
Arr`
]
&&
handleData
[
`
${
attr
.
dbKey
}
Arr`
].
length
)
{
handleData
[
attr
.
dbKey
]
=
Number
((
_
.
sum
(
handleData
[
`
${
attr
.
dbKey
}
Arr`
])
/
handleData
[
`
${
attr
.
dbKey
}
Arr`
].
length
).
toFixed
(
2
));
}
}
return
handleData
;
}
async
function
handleDeviceOnLine
({
deviceNumber
,
online
})
{
async
function
handleDeviceOnLine
({
deviceNumber
,
online
})
{
// 虫情 online = 0;//在线状态 0false/1true
// 土壤 onLineState 1在线0离线
if
(
!
deviceNumber
)
{
if
(
!
deviceNumber
)
{
return
;
}
//该方式待定
let
key
=
`device_online`
;
if
(
online
==
0
)
{
if
(
online
==
0
)
{
await
ioRedis
.
hdel
(
key
,
deviceNumber
);
}
else
{
let
obj
=
{};
...
...
@@ -126,33 +126,59 @@ async function handleDeviceOnLine({deviceNumber, online}) {
}
async
function
handleDeviceThreshold
(
obj
)
{
let
ths
=
await
DB
.
CollectThreshold
.
find
({
del
:
0
,
enable
:
true
,
deviceNumber
:
obj
.
deviceNumber
}).
populate
({
path
:
"attrId"
}).
lean
().
exec
();
let
ths
=
await
DB
.
CollectThreshold
.
find
({
del
:
0
,
enable
:
true
,
deviceNumber
:
obj
.
deviceNumber
}).
populate
({
path
:
"attrId"
}).
lean
().
exec
();
let
exceeds
=
[];
for
(
let
i
=
0
;
i
<
ths
.
length
;
i
++
)
{
const
element
=
ths
[
i
];
// console.log(element, "====", obj[element.dbKey], _.isNumber(obj[element.dbKey]), _.gt(obj[element.dbKey], element.max), _.isNumber(element.max))
if
(
_
.
isNumber
(
obj
[
element
.
dbKey
]))
{
if
(
_
.
isNumber
(
element
.
max
)
&&
_
.
gt
(
obj
[
element
.
dbKey
],
element
.
max
))
{
if
(
_
.
isNumber
(
obj
[
element
.
dbKey
]))
{
if
(
_
.
isNumber
(
element
.
max
)
&&
_
.
gt
(
obj
[
element
.
dbKey
],
element
.
max
))
{
// 采集值 > 最大设置值
// exceeds.push({...element, collectValue: obj[element.dbKey], deviceNumber: obj.deviceNumber});
exceeds
.
push
(
`设备
${
obj
.
deviceNumber
}
, 采集参数名称:
${
element
.
name
}
, 采集参数KEY:
${
element
.
dbKey
}
, 采集值:
${
obj
[
element
.
dbKey
]}
超出了最大阈值:
${
element
.
max
}
`
);
exceeds
.
push
({
deviceName
:
obj
.
name
,
deviceNumber
:
obj
.
deviceNumber
,
name
:
element
.
name
,
dbKey
:
element
.
dbKey
,
value
:
obj
[
element
.
dbKey
],
max
:
element
.
max
,
min
:
element
.
min
,
description
:
"当前温度已超过最大域值"
});
// exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值:${obj[element.dbKey]}超出了最大阈值:${element.max}`);
}
if
(
_
.
isNumber
(
element
.
min
)
&&
_
.
lt
(
obj
[
element
.
dbKey
],
element
.
min
))
{
// exceeds.push({...element, collectValue: obj[element.dbKey], deviceNumber: obj.deviceNumber});
exceeds
.
push
(
`设备
${
obj
.
deviceNumber
}
, 采集参数名称:
${
element
.
name
}
, 采集参数KEY:
${
element
.
dbKey
}
, 采集值:
${
obj
[
element
.
dbKey
]}
超出了最小阈值:
${
element
.
min
}
`
);
if
(
_
.
isNumber
(
element
.
min
)
&&
_
.
lt
(
obj
[
element
.
dbKey
],
element
.
min
))
{
exceeds
.
push
({
deviceName
:
obj
.
deviceName
,
deviceNumber
:
obj
.
deviceNumber
,
name
:
element
.
name
,
dbKey
:
element
.
dbKey
,
value
:
obj
[
element
.
dbKey
],
max
:
element
.
max
,
min
:
element
.
min
,
description
:
"当前温度已超过最小域值"
});
// exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值: ${obj[element.dbKey]}超出了最小阈值:${element.min}`);
}
}
}
console
.
log
(
exceeds
);
// 处理通知模板
if
(
exceeds
.
length
)
{
await
DB
.
Notice
.
create
({
sendUser
:
"66d6c4099f8480c6db53ce13"
,
receiveUser
:
"66d6c4099f8480c6db53ce13"
,
content
:
exceeds
.
join
(
"
\
\n
"
),
title
:
"土壤墒情采集数据预警通知"
});
if
(
exceeds
.
length
)
{
let
role
=
await
DB
.
Role
.
findOne
({
key
:
"notice_role"
});
if
(
role
&&
role
.
_id
)
{
let
users
=
await
DB
.
User
.
find
({
roles
:
role
.
_id
}).
select
(
'_id'
);
for
(
let
index
=
0
;
index
<
users
.
length
;
index
++
)
{
const
element
=
users
[
index
];
await
DB
.
Notice
.
create
({
sendUser
:
"66d6c4099f8480c6db53ce13"
,
receiveUser
:
element
.
_id
,
content
:
""
,
exceeds
,
title
:
"土壤墒情采集数据预警通知"
});
}
}
}
}
...
...
cron/wsCron.js
View file @
16654dff
...
...
@@ -110,33 +110,59 @@ async function handleDeviceOnLine({deviceNumber, online}) {
}
async
function
handleDeviceThreshold
(
obj
)
{
let
ths
=
await
DB
.
CollectThreshold
.
find
({
del
:
0
,
enable
:
true
,
deviceNumber
:
obj
.
deviceNumber
}).
populate
({
path
:
"attrId"
}).
lean
().
exec
();
let
ths
=
await
DB
.
CollectThreshold
.
find
({
del
:
0
,
enable
:
true
,
deviceNumber
:
obj
.
deviceNumber
}).
populate
({
path
:
"attrId"
}).
lean
().
exec
();
let
exceeds
=
[];
for
(
let
i
=
0
;
i
<
ths
.
length
;
i
++
)
{
const
element
=
ths
[
i
];
// console.log(element, "====", obj[element.dbKey], _.isNumber(obj[element.dbKey]), _.gt(obj[element.dbKey], element.max), _.isNumber(element.max))
if
(
_
.
isNumber
(
obj
[
element
.
dbKey
]))
{
if
(
_
.
isNumber
(
element
.
max
)
&&
_
.
gt
(
obj
[
element
.
dbKey
],
element
.
max
))
{
if
(
_
.
isNumber
(
obj
[
element
.
dbKey
]))
{
if
(
_
.
isNumber
(
element
.
max
)
&&
_
.
gt
(
obj
[
element
.
dbKey
],
element
.
max
))
{
// 采集值 > 最大设置值
// exceeds.push({...element, collectValue: obj[element.dbKey], deviceNumber: obj.deviceNumber});
exceeds
.
push
(
`设备
${
obj
.
deviceNumber
}
, 采集参数名称:
${
element
.
name
}
, 采集参数KEY:
${
element
.
dbKey
}
, 采集值:
${
obj
[
element
.
dbKey
]}
超出了最大阈值:
${
element
.
max
}
`
);
exceeds
.
push
({
deviceName
:
obj
.
name
,
deviceNumber
:
obj
.
deviceNumber
,
name
:
element
.
name
,
dbKey
:
element
.
dbKey
,
value
:
obj
[
element
.
dbKey
],
max
:
element
.
max
,
min
:
element
.
min
,
description
:
"当前温度已超过最大域值"
});
// exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值:${obj[element.dbKey]}超出了最大阈值:${element.max}`);
}
if
(
_
.
isNumber
(
element
.
min
)
&&
_
.
lt
(
obj
[
element
.
dbKey
],
element
.
min
))
{
// exceeds.push({...element, collectValue: obj[element.dbKey], deviceNumber: obj.deviceNumber});
exceeds
.
push
(
`设备
${
obj
.
deviceNumber
}
, 采集参数名称:
${
element
.
name
}
, 采集参数KEY:
${
element
.
dbKey
}
, 采集值:
${
obj
[
element
.
dbKey
]}
超出了最小阈值:
${
element
.
min
}
`
);
if
(
_
.
isNumber
(
element
.
min
)
&&
_
.
lt
(
obj
[
element
.
dbKey
],
element
.
min
))
{
exceeds
.
push
({
deviceName
:
obj
.
deviceName
,
deviceNumber
:
obj
.
deviceNumber
,
name
:
element
.
name
,
dbKey
:
element
.
dbKey
,
value
:
obj
[
element
.
dbKey
],
max
:
element
.
max
,
min
:
element
.
min
,
description
:
"当前温度已超过最小域值"
});
// exceeds.push(`设备${obj.deviceNumber}, 采集参数名称:${element.name}, 采集参数KEY: ${element.dbKey}, 采集值: ${obj[element.dbKey]}超出了最小阈值:${element.min}`);
}
}
}
console
.
log
(
exceeds
);
// 处理通知模板
if
(
exceeds
.
length
)
{
await
DB
.
Notice
.
create
({
sendUser
:
"66d6c4099f8480c6db53ce13"
,
receiveUser
:
"66d6c4099f8480c6db53ce13"
,
content
:
exceeds
.
join
(
"
\
\n
"
),
title
:
"气象站采集数据预警通知"
});
if
(
exceeds
.
length
)
{
let
role
=
await
DB
.
Role
.
findOne
({
key
:
"notice_role"
});
if
(
role
&&
role
.
_id
)
{
let
users
=
await
DB
.
User
.
find
({
roles
:
role
.
_id
}).
select
(
'_id'
);
for
(
let
index
=
0
;
index
<
users
.
length
;
index
++
)
{
const
element
=
users
[
index
];
await
DB
.
Notice
.
create
({
sendUser
:
"66d6c4099f8480c6db53ce13"
,
receiveUser
:
element
.
_id
,
content
:
""
,
exceeds
,
title
:
"气象站采集数据预警通知"
});
}
}
}
}
...
...
db/models/systemNotice.js
View file @
16654dff
...
...
@@ -31,7 +31,7 @@ const Noticechema = new Schema({
type
:
Number
,
comment
:
"通知类型 3. 采集数据预警通知。"
,
},
exceeds
:[],
createdAt
:
{
type
:
Date
,
default
:
Date
.
now
,
...
...
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