Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
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
项目统一框架
amos-boot-biz
Commits
33480e11
Commit
33480e11
authored
Oct 16, 2023
by
zhangsen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
生成预警
parent
6d9852d0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
119 additions
and
0 deletions
+119
-0
HealthStatusIndicatorServiceImpl.java
...op/biz/service/impl/HealthStatusIndicatorServiceImpl.java
+119
-0
No files found.
amos-boot-system-jxiop/amos-boot-module-jxiop-analyse-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/service/impl/HealthStatusIndicatorServiceImpl.java
View file @
33480e11
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jxiop
.
biz
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisUtils
;
import
com.yeejoin.amos.boot.module.jxiop.api.dto.BizMessage
;
import
com.yeejoin.amos.boot.module.jxiop.api.dto.RiskBizInfoVo
;
import
com.yeejoin.amos.boot.module.jxiop.api.dto.RiskDynamicDetailsVo
;
import
com.yeejoin.amos.boot.module.jxiop.api.entity.StationBasic
;
import
com.yeejoin.amos.boot.module.jxiop.api.mapper.StationBasicMapper
;
import
com.yeejoin.amos.boot.module.jxiop.biz.Enum.WarningNameEnum
;
import
com.yeejoin.amos.boot.module.jxiop.biz.entity.*
;
import
com.yeejoin.amos.boot.module.jxiop.biz.mapper2.*
;
import
org.eclipse.paho.client.mqttv3.MqttException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.scheduling.annotation.Async
;
...
...
@@ -13,7 +20,9 @@ import org.springframework.scheduling.annotation.EnableScheduling;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
java.nio.charset.StandardCharsets
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -67,6 +76,28 @@ public class HealthStatusIndicatorServiceImpl {
@Autowired
IdxBizPvWarningRecordMapper
idxBizPvWarningRecordMapper
;
@Autowired
StationBasicMapper
stationBasicMapper
;
@Autowired
EmqKeeper
emqKeeper
;
/**
* 夏造风电分析index_key
*/
public
static
final
String
INDEX_KEY_FAN
=
"XZFX#FX%s#ZNFX"
;
/**
* 泰和光伏分析 index_key
*/
public
static
final
String
INDEX_KEY_PV
=
"THFX#FXGF#ZNFX"
;
/**
* 智能分析触发预警系统标识
*/
public
static
final
String
SMART_ANALYSE
=
"smartAnalyse"
;
/***
* 每一小时获取一次最大粒度内的指数异常数据
* 判断一小时内数据是否符合预警规则 符合则报警并在redis中缓存 同一级别的预警记录下次不生成
...
...
@@ -186,6 +217,8 @@ public class HealthStatusIndicatorServiceImpl {
idxBizPvWarningRecord
.
setHealthIndexSeq
(
idxBizPvHealthIndices
.
get
(
0
).
getHealthIndex
().
toString
());
idxBizPvWarningRecord
.
setHealthLevel
(
idxBizPvHealthIndices
.
get
(
0
).
getHealthLevel
());
idxBizPvWarningRecordList
.
add
(
idxBizPvWarningRecord
);
// 触发风险模型生成预警处置模块的预警记录
fetchDataPv
(
idxBizPvWarningRecord
);
// idxBizPvWarningRecordMapper.insert(idxBizPvWarningRecord);
}
}
...
...
@@ -316,6 +349,8 @@ public class HealthStatusIndicatorServiceImpl {
idxBizPvWarningRecord
.
setHealthIndexSeq
(
idxBizPvHealthIndices
.
get
(
0
).
getHealthIndex
().
toString
());
idxBizPvWarningRecord
.
setHealthLevel
(
idxBizPvHealthIndices
.
get
(
0
).
getHealthLevel
());
idxBizPvWarningRecordList
.
add
(
idxBizPvWarningRecord
);
// 触发风险模型生成预警处置模块的预警记录
fetchDataPv
(
idxBizPvWarningRecord
);
//idxBizPvWarningRecordMapper.insert(idxBizPvWarningRecord);
}
}
...
...
@@ -442,6 +477,8 @@ public class HealthStatusIndicatorServiceImpl {
idxBizPvWarningRecord
.
setHealthIndexSeq
(
idxBizPvHealthIndices
.
get
(
0
).
getHealthIndex
().
toString
());
idxBizPvWarningRecord
.
setHealthLevel
(
idxBizPvHealthIndices
.
get
(
0
).
getHealthLevel
());
idxBizPvWarningRecordList
.
add
(
idxBizPvWarningRecord
);
// 触发风险模型生成预警处置模块的预警记录
fetchDataPv
(
idxBizPvWarningRecord
);
//idxBizPvWarningRecordMapper.insert(idxBizPvWarningRecord);
}
}
...
...
@@ -572,6 +609,8 @@ public class HealthStatusIndicatorServiceImpl {
idxBizFanWarningRecord
.
setHealthIndexSeq
(
idxBizFanHealthIndices
.
get
(
0
).
getHealthIndex
().
toString
());
idxBizFanWarningRecord
.
setHealthLevel
(
idxBizFanHealthIndices
.
get
(
0
).
getHealthLevel
());
idxBizFanWarningRecordList
.
add
(
idxBizFanWarningRecord
);
// 触发风险模型生成预警处置模块的预警记录
fetchDataFan
(
idxBizFanWarningRecord
);
//idxBizFanWarningRecordMapper.insert(idxBizFanWarningRecord);
}
}
...
...
@@ -699,6 +738,8 @@ public class HealthStatusIndicatorServiceImpl {
idxBizFanWarningRecord
.
setHealthLevel
(
idxBizFanHealthIndices
.
get
(
0
).
getHealthLevel
());
idxBizFanWarningRecord
.
setPointName
(
idxBizFanHealthIndices
.
get
(
0
).
getPointName
());
idxBizFanWarningRecordList
.
add
(
idxBizFanWarningRecord
);
// 触发风险模型生成预警处置模块的预警记录
fetchDataFan
(
idxBizFanWarningRecord
);
}
}
...
...
@@ -829,6 +870,8 @@ public class HealthStatusIndicatorServiceImpl {
idxBizFanWarningRecord
.
setHealthLevel
(
idxBizFanHealthIndices
.
get
(
0
).
getHealthLevel
());
idxBizFanWarningRecord
.
setPointName
(
idxBizFanHealthIndices
.
get
(
0
).
getPointName
());
idxBizFanWarningRecordList
.
add
(
idxBizFanWarningRecord
);
// 触发风险模型生成预警处置模块的预警记录
fetchDataFan
(
idxBizFanWarningRecord
);
}
}
}
...
...
@@ -836,4 +879,80 @@ public class HealthStatusIndicatorServiceImpl {
idxBizFanWarningRecordService
.
saveBatch
(
idxBizFanWarningRecordList
);
}
/**
* 光伏 - 触发预控模型生成预警
* @param idxBizPvWarningRecord
* @return
*/
@Async
public
void
fetchDataPv
(
IdxBizPvWarningRecord
idxBizPvWarningRecord
)
{
BizMessage
bizMessage
=
new
BizMessage
();
bizMessage
.
setIndexKey
(
INDEX_KEY_PV
);
bizMessage
.
setIndexValue
(
idxBizPvWarningRecord
.
getPointName
());
bizMessage
.
setTraceId
(
idxBizPvWarningRecord
.
getSequenceNbr
());
RiskBizInfoVo
riskBizInfoVo
=
new
RiskBizInfoVo
();
riskBizInfoVo
.
setWarningObjectName
(
idxBizPvWarningRecord
.
getEquipmentName
());
riskBizInfoVo
.
setWarningObjectCode
(
idxBizPvWarningRecord
.
getSequenceNbr
());
LambdaQueryWrapper
<
StationBasic
>
basicLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
basicLambdaQueryWrapper
.
eq
(
StationBasic:
:
getFanGatewayId
,
idxBizPvWarningRecord
.
getGatewayId
());
basicLambdaQueryWrapper
.
last
(
"limit 1"
);
StationBasic
stationBasic
=
stationBasicMapper
.
selectOne
(
basicLambdaQueryWrapper
);
riskBizInfoVo
.
setSourceAttribution
(
stationBasic
.
getProjectOrgCode
());
riskBizInfoVo
.
setSourceAttributionDesc
(
idxBizPvWarningRecord
.
getStation
());
riskBizInfoVo
.
setWarningObjectType
(
"pv"
);
List
<
RiskDynamicDetailsVo
>
detailsVos
=
new
ArrayList
<>();
RiskDynamicDetailsVo
dynamicDetailsVo
=
new
RiskDynamicDetailsVo
();
dynamicDetailsVo
.
setTabName
(
"预警详情"
);
detailsVos
.
add
(
dynamicDetailsVo
);
riskBizInfoVo
.
setDynamicDetails
(
detailsVos
);
bizMessage
.
setBizInfo
(
riskBizInfoVo
);
try
{
emqKeeper
.
getMqttClient
().
publish
(
SMART_ANALYSE
+
"/data/analysis"
,
JSON
.
toJSONString
(
bizMessage
).
getBytes
(
StandardCharsets
.
UTF_8
),
2
,
false
);
}
catch
(
MqttException
e
)
{
e
.
printStackTrace
();
}
}
/**
* 风电 - 触发预控模型生成预警
* @param idxBizFanWarningRecord
* @return
*/
@Async
public
void
fetchDataFan
(
IdxBizFanWarningRecord
idxBizFanWarningRecord
)
{
BizMessage
bizMessage
=
new
BizMessage
();
bizMessage
.
setIndexKey
(
String
.
format
(
INDEX_KEY_FAN
,
idxBizFanWarningRecord
.
getNumber
()));
bizMessage
.
setIndexValue
(
idxBizFanWarningRecord
.
getPointName
());
bizMessage
.
setTraceId
(
idxBizFanWarningRecord
.
getSequenceNbr
());
RiskBizInfoVo
riskBizInfoVo
=
new
RiskBizInfoVo
();
riskBizInfoVo
.
setWarningObjectName
(
idxBizFanWarningRecord
.
getEquipmentName
());
riskBizInfoVo
.
setWarningObjectCode
(
idxBizFanWarningRecord
.
getSequenceNbr
());
LambdaQueryWrapper
<
StationBasic
>
basicLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
basicLambdaQueryWrapper
.
eq
(
StationBasic:
:
getFanGatewayId
,
idxBizFanWarningRecord
.
getGatewayId
());
basicLambdaQueryWrapper
.
last
(
"limit 1"
);
StationBasic
stationBasic
=
stationBasicMapper
.
selectOne
(
basicLambdaQueryWrapper
);
riskBizInfoVo
.
setSourceAttribution
(
stationBasic
.
getProjectOrgCode
());
riskBizInfoVo
.
setSourceAttributionDesc
(
idxBizFanWarningRecord
.
getStation
());
riskBizInfoVo
.
setWarningObjectType
(
"fan"
);
List
<
RiskDynamicDetailsVo
>
detailsVos
=
new
ArrayList
<>();
RiskDynamicDetailsVo
dynamicDetailsVo
=
new
RiskDynamicDetailsVo
();
dynamicDetailsVo
.
setTabName
(
"预警详情"
);
detailsVos
.
add
(
dynamicDetailsVo
);
riskBizInfoVo
.
setDynamicDetails
(
detailsVos
);
bizMessage
.
setBizInfo
(
riskBizInfoVo
);
try
{
emqKeeper
.
getMqttClient
().
publish
(
SMART_ANALYSE
+
"/data/analysis"
,
JSON
.
toJSONString
(
bizMessage
).
getBytes
(
StandardCharsets
.
UTF_8
),
2
,
false
);
}
catch
(
MqttException
e
)
{
e
.
printStackTrace
();
}
}
}
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