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
d75ae272
Commit
d75ae272
authored
Jun 29, 2023
by
刘林
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop_dl' into develop_dl
parents
205c2a31
5eacc9be
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
870 additions
and
3 deletions
+870
-3
pom.xml
amos-boot-data/amos-boot-data-alarm/pom.xml
+7
-0
AlarmApplication.java
...larm/src/main/java/com/yeejoin/amos/AlarmApplication.java
+1
-1
EquipExecutorConfig.java
...om/yeejoin/amos/api/alarm/config/EquipExecutorConfig.java
+40
-0
KafkaInitialConfiguration.java
...join/amos/api/alarm/config/KafkaInitialConfiguration.java
+51
-0
BizInfo.java
...src/main/java/com/yeejoin/amos/api/alarm/dto/BizInfo.java
+36
-0
DynamicDetails.java
...n/java/com/yeejoin/amos/api/alarm/dto/DynamicDetails.java
+22
-0
TabContent.java
.../main/java/com/yeejoin/amos/api/alarm/dto/TabContent.java
+23
-0
WarningDto.java
.../main/java/com/yeejoin/amos/api/alarm/dto/WarningDto.java
+33
-0
BaseEntity.java
...in/java/com/yeejoin/amos/api/alarm/entity/BaseEntity.java
+37
-0
PointSystem.java
...n/java/com/yeejoin/amos/api/alarm/entity/PointSystem.java
+51
-0
PointSystemMapper.java
.../com/yeejoin/amos/api/alarm/mapper/PointSystemMapper.java
+16
-0
IPointSystemService.java
...m/yeejoin/amos/api/alarm/service/IPointSystemService.java
+14
-0
AlarmKafkaConsumer.java
...ejoin/amos/api/alarm/service/impl/AlarmKafkaConsumer.java
+76
-0
PointSystemServiceImpl.java
...n/amos/api/alarm/service/impl/PointSystemServiceImpl.java
+144
-0
producerServers.java
.../yeejoin/amos/api/alarm/service/impl/producerServers.java
+80
-0
HttpContentTypeUtil.java
...com/yeejoin/amos/api/alarm/utils/HttpContentTypeUtil.java
+0
-0
application.properties
...boot-data-alarm/src/main/resources/application.properties
+49
-0
EquipQrcodeRecord.java
.../yeejoin/equipmanage/common/entity/EquipQrcodeRecord.java
+4
-0
EquipInformationCardController.java
...quipmanage/controller/EquipInformationCardController.java
+133
-0
EquipmentSpecificController.java
...n/equipmanage/controller/EquipmentSpecificController.java
+3
-0
McbFeign.java
...src/main/java/com/yeejoin/equipmanage/fegin/McbFeign.java
+35
-0
MqttReceiveServiceImpl.java
...join/equipmanage/service/impl/MqttReceiveServiceImpl.java
+4
-2
wl-3.6.0.xml
...ot-system-equip/src/main/resources/changelog/wl-3.6.0.xml
+11
-0
No files found.
amos-boot-data/amos-boot-data-alarm/pom.xml
View file @
d75ae272
...
...
@@ -52,6 +52,13 @@
</exclusion>
</exclusions>
</dependency>
<!--kafka依赖-->
<dependency>
<groupId>
org.springframework.kafka
</groupId>
<artifactId>
spring-kafka
</artifactId>
</dependency>
<dependency>
<groupId>
org.typroject
</groupId>
<artifactId>
tyboot-component-emq
</artifactId>
...
...
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/AlarmApplication.java
View file @
d75ae272
...
...
@@ -39,7 +39,7 @@ import java.net.InetAddress;
@EnableEurekaClient
@EnableScheduling
@MapperScan
(
value
=
{
"org.typroject.tyboot.*.*.face.orm.dao"
,
"com.yeejoin.amos.api.*.face.orm.dao"
,
"org.typroject.tyboot.face.*.orm.dao*"
,
"com.yeejoin.amos.boot.biz.common.dao.mapper"
})
"com.yeejoin.amos.api.*.mapper"
,
"com.yeejoin.amos.boot.biz.common.dao.mapper"
})
@ComponentScan
({
"org.typroject"
,
"com.yeejoin.amos"
})
public
class
AlarmApplication
{
...
...
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/config/EquipExecutorConfig.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
amos
.
api
.
alarm
.
config
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.ThreadPoolExecutor
;
@Slf4j
@Configuration
@EnableAsync
public
class
EquipExecutorConfig
{
@Bean
(
name
=
"equipAsyncExecutor"
)
public
Executor
asyncServiceExecutor
()
{
ThreadPoolTaskExecutor
executor
=
new
ThreadPoolTaskExecutor
();
//配置核心线程数
executor
.
setCorePoolSize
(
10
);
//配置最大线程数
executor
.
setMaxPoolSize
(
500
);
//配置队列大小
executor
.
setQueueCapacity
(
2000
);
//配置线程池中的线程的名称前缀
executor
.
setThreadNamePrefix
(
"namePrefix"
);
//线程池维护线程所允许的空闲时间
executor
.
setKeepAliveSeconds
(
30
);
// rejection-policy:当pool已经达到max size的时候,如何处理新任务
// CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行--拒绝策略
executor
.
setRejectedExecutionHandler
(
new
ThreadPoolExecutor
.
CallerRunsPolicy
());
//执行初始化
executor
.
initialize
();
//等待所有任务结束后再关闭线程池
executor
.
setWaitForTasksToCompleteOnShutdown
(
true
);
return
executor
;
}
}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/config/KafkaInitialConfiguration.java
0 → 100644
View file @
d75ae272
//package com.yeejoin.amos.api.alarm.config;
//
//import org.apache.kafka.clients.admin.AdminClient;
//import org.apache.kafka.clients.admin.AdminClientConfig;
//import org.apache.kafka.clients.admin.NewTopic;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.kafka.core.KafkaAdmin;
//
//import java.util.HashMap;
//import java.util.Map;
//
//import static org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.md5;
//
//@Configuration
//public class KafkaInitialConfiguration {
//
//
//
//
// /***
// * 创建top 10个分区1个副本
// * 通过bean创建(bean的名字为initialTopic)
// * @return
// */
//
// @Bean
// public NewTopic initialTopic1() {
//
// return new NewTopic("jf1",3, (short) 1 );
// }
//
//
// @Bean
// public KafkaAdmin kafkaAdmin() {
// Map<String, Object> props = new HashMap<>();
// //配置Kafka实例的连接地址
// props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "121.199.39.218:9092");
// KafkaAdmin admin = new KafkaAdmin(props);
// return admin;
// }
//
// @Bean
// public AdminClient adminClient() {
// return AdminClient.create(kafkaAdmin().getConfig());
// }
//
//
//
//}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/dto/BizInfo.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
amos
.
api
.
alarm
.
dto
;
import
lombok.Data
;
import
java.util.List
;
/**
* @description:
* @author: tw
* @createDate: 2023/6/19
*/
@Data
public
class
BizInfo
{
private
String
sourceAttributionDesc
;
private
String
sourceAttribution
;
private
List
<
DynamicDetails
>
dynamicDetails
;
private
String
warningObjectCode
;
private
String
warningTime
;
private
String
warningObjectName
;
public
BizInfo
(
String
sourceAttributionDesc
,
String
sourceAttribution
,
List
<
DynamicDetails
>
dynamicDetails
,
String
warningObjectCode
,
String
warningTime
,
String
warningObjectName
)
{
this
.
sourceAttributionDesc
=
sourceAttributionDesc
;
this
.
sourceAttribution
=
sourceAttribution
;
this
.
dynamicDetails
=
dynamicDetails
;
this
.
warningObjectCode
=
warningObjectCode
;
this
.
warningTime
=
warningTime
;
this
.
warningObjectName
=
warningObjectName
;
}
}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/dto/DynamicDetails.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
amos
.
api
.
alarm
.
dto
;
import
lombok.Data
;
import
java.util.List
;
/**
* @description:
* @author: tw
* @createDate: 2023/6/19
*/
@Data
public
class
DynamicDetails
{
private
String
tabName
;
private
List
<
TabContent
>
tabContent
;
public
DynamicDetails
(
String
tabName
,
List
<
TabContent
>
tabContent
)
{
this
.
tabName
=
tabName
;
this
.
tabContent
=
tabContent
;
}
}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/dto/TabContent.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
amos
.
api
.
alarm
.
dto
;
import
lombok.Data
;
/**
* @description:
* @author: tw
* @createDate: 2023/6/19
*/
@Data
public
class
TabContent
{
private
String
label
;
private
String
type
;
private
Object
value
;
private
String
key
;
public
TabContent
(
String
label
,
String
type
,
Object
value
,
String
key
)
{
this
.
label
=
label
;
this
.
type
=
type
;
this
.
value
=
value
;
this
.
key
=
key
;
}
}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/dto/WarningDto.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
amos
.
api
.
alarm
.
dto
;
import
lombok.Data
;
import
java.util.List
;
/**
* @description:
* @author: tw
* @createDate: 2023/6/19
*/
@Data
public
class
WarningDto
{
private
BizInfo
bizInfo
;
private
String
indexKey
;
private
String
indexValue
;
private
String
traceId
;
public
WarningDto
(
String
indexKey
,
String
indexValue
,
String
traceId
,
String
sourceAttributionDesc
,
String
sourceAttribution
,
List
<
DynamicDetails
>
dynamicDetails
,
String
warningObjectCode
,
String
warningTime
,
String
warningObjectName
)
{
this
.
bizInfo
=
new
BizInfo
(
sourceAttributionDesc
,
sourceAttribution
,
dynamicDetails
,
warningObjectCode
,
warningTime
,
warningObjectName
);
this
.
indexKey
=
indexKey
;
this
.
indexValue
=
indexValue
;
this
.
traceId
=
traceId
;
}
}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/entity/BaseEntity.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
amos
.
api
.
alarm
.
entity
;
import
com.baomidou.mybatisplus.annotation.FieldFill
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @description: 公共实体
* @author: duanwei
**/
@Data
@Accessors
(
chain
=
true
)
public
class
BaseEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
5464322936854328207L
;
@TableId
(
type
=
IdType
.
ID_WORKER
)
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
private
Long
id
;
/**
* 新增和更新执行
*/
@TableField
(
value
=
"create_date"
,
fill
=
FieldFill
.
INSERT
)
private
Date
createDate
;
}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/entity/PointSystem.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
amos
.
api
.
alarm
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* @description:
* @author: tw
* @createDate: 2023/6/19
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
@TableName
(
"dz_point_system"
)
@ApiModel
(
value
=
"PointSystem对象"
,
description
=
""
)
public
class
PointSystem
extends
BaseEntity
{
@ApiModelProperty
(
value
=
"场站"
)
@TableField
(
"station"
)
private
String
station
;
@ApiModelProperty
(
value
=
"二维码"
)
@TableField
(
"number"
)
private
String
number
;
@ApiModelProperty
(
value
=
"类型"
)
@TableField
(
"type"
)
private
String
type
;
@ApiModelProperty
(
value
=
"'地址'"
)
@TableField
(
"address"
)
private
String
address
;
@ApiModelProperty
(
value
=
"测点类型"
)
@TableField
(
"point_type"
)
private
String
pointType
;
@ApiModelProperty
(
value
=
"测点值"
)
@TableField
(
"value"
)
private
String
value
;
@ApiModelProperty
(
value
=
"功能码"
)
@TableField
(
"function_num"
)
private
String
functionNum
;
@ApiModelProperty
(
value
=
"kks码"
)
@TableField
(
"kks"
)
private
String
kks
;
@ApiModelProperty
(
value
=
"網管地址"
)
@TableField
(
"gateway_id"
)
private
String
gatewayId
;
}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/mapper/PointSystemMapper.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
amos
.
api
.
alarm
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yeejoin.amos.api.alarm.entity.PointSystem
;
/**
* @description:
* @author: tw
* @createDate: 2023/6/19
*/
public
interface
PointSystemMapper
extends
BaseMapper
<
PointSystem
>
{
//推送预警
public
void
sendWarning
();
}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/service/IPointSystemService.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
amos
.
api
.
alarm
.
service
;
/**
* @description:
* @author: tw
* @createDate: 2023/6/19
*/
public
interface
IPointSystemService
{
//触发风险预警
public
void
sendWarning
(
String
address
,
String
value
,
String
valueLabe
,
String
gatewayId
);
}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/service/impl/AlarmKafkaConsumer.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
amos
.
api
.
alarm
.
service
.
impl
;
import
org.apache.kafka.clients.consumer.ConsumerRecord
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.kafka.annotation.KafkaListener
;
import
org.springframework.kafka.annotation.TopicPartition
;
import
org.springframework.kafka.support.Acknowledgment
;
import
org.springframework.stereotype.Service
;
/**
* @description: 监听设备告警信息
* @author: tw
* @createDate: 2023/6/27
*/
@Service
public
class
AlarmKafkaConsumer
{
@Autowired
PointSystemServiceImpl
pointSystemServiceImpl
;
//消费者来处理消息
@KafkaListener
(
id
=
"user1"
,
topics
={
"${kafka.equipment.alarm}"
})
public
void
message1
(
String
record
,
Acknowledgment
ack
){
// 处理业务
String
date
=
record
;
//异步触发预警
pointSystemServiceImpl
.
sendWarningAsync
(
date
);
//手动提交
ack
.
acknowledge
();
}
// public void message1( ConsumerRecord<?, ?> record, Acknowledgment ack){
// // 消费的哪个topic、partition的消息,打印出消息内容
//
// StringBuffer sb = new StringBuffer();
// // 主题
// sb.append(record.topic() + "-");
// // 分区
// sb.append(record.partition() + "-");
// // 需要消费的值
// sb.append(record.value() + "-");
// // 位移
// sb.append(record.offset());
//
// System.out.println( "消费者进行消费:"+ sb);
// ack.acknowledge();
//
// }
// // 简单消费者,groupId可以任意起
// @KafkaListener(id = "Consumer0", groupId = "jf0-group", topics = "jf1", topicPartitions = {
// @TopicPartition(topic = "jf1", partitions = {"0"}),
// }, containerFactory = "kafkaListenerContainerFactory")
// public void consumer0(ConsumerRecord<String, String> records, Acknowledgment ack) {
// this.message1(records,ack);
// }
//
// @KafkaListener(id = "Consumer1", groupId = "jf1-group", topics = "jf1", topicPartitions = {
// @TopicPartition(topic = "jf1", partitions = {"1"}),
// }, containerFactory = "kafkaListenerContainerFactory")
// public void consumer1(ConsumerRecord<String, String> records, Acknowledgment ack) {
// this.message1(records,ack);
// }
//
// @KafkaListener(id = "Consumer2", groupId = "jf2-group", topics = "jf1", topicPartitions = {
// @TopicPartition(topic = "jf1", partitions = {"2"}),
// }, containerFactory = "kafkaListenerContainerFactory")
// public void consumer3(ConsumerRecord<String, String> records, Acknowledgment ack) {
// this.message1(records,ack);
// }
}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/service/impl/PointSystemServiceImpl.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
amos
.
api
.
alarm
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yeejoin.amos.api.alarm.dto.DynamicDetails
;
import
com.yeejoin.amos.api.alarm.dto.TabContent
;
import
com.yeejoin.amos.api.alarm.dto.WarningDto
;
import
com.yeejoin.amos.api.alarm.entity.PointSystem
;
import
com.yeejoin.amos.api.alarm.mapper.PointSystemMapper
;
import
com.yeejoin.amos.api.alarm.service.IPointSystemService
;
import
com.yeejoin.amos.api.alarm.utils.HttpContentTypeUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
/**
* @description:
* @author: tw
* @createDate: 2023/6/19
*/
@Service
public
class
PointSystemServiceImpl
extends
ServiceImpl
<
PointSystemMapper
,
PointSystem
>
implements
IPointSystemService
{
private
static
final
Logger
logger
=
LogManager
.
getLogger
(
PointSystemServiceImpl
.
class
);
@Autowired
PointSystemMapper
pointSystemMapper
;
@Value
(
"${power.station.url}"
)
private
String
powerStationUrl
;
private
final
String
TABNAME
=
"预警问题"
;
private
final
String
TEXT
=
"text"
;
@Value
(
"${power.station.warning:104/data/analysis}"
)
private
String
STATIONWARNING
;
@Autowired
protected
EmqKeeper
emqKeeper
;
@Async
(
"equipAsyncExecutor"
)
public
void
sendWarningAsync
(
String
date
){
try
{
logger
.
info
(
"收到告警信息"
+
date
);
com
.
alibaba
.
fastjson
.
JSONObject
messageObj
=
JSON
.
parseObject
(
date
);
String
address
=
messageObj
.
get
(
"address"
).
toString
();
String
value
=
messageObj
.
get
(
"value"
).
toString
();
String
valueLabe
=
messageObj
.
get
(
"valueLabel"
).
toString
();
String
gatewayId
=
messageObj
.
get
(
"gatewayId"
).
toString
();
this
.
sendWarning
(
address
,
value
,
valueLabe
,
gatewayId
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
@Override
public
void
sendWarning
(
String
address
,
String
value
,
String
valueLabe
,
String
gatewayId
)
{
try
{
//通过测点地址获取,和对应值 获取kks
QueryWrapper
<
PointSystem
>
pointSystemWrapper
=
new
QueryWrapper
<>();
pointSystemWrapper
.
lambda
().
eq
(
PointSystem:
:
getAddress
,
address
);
pointSystemWrapper
.
lambda
().
eq
(
PointSystem:
:
getValue
,
value
);
pointSystemWrapper
.
lambda
().
eq
(
PointSystem:
:
getGatewayId
,
gatewayId
);
PointSystem
pointSystem
=
pointSystemMapper
.
selectOne
(
pointSystemWrapper
);
if
(
pointSystem
==
null
)
{
throw
new
RuntimeException
(
"获取kks码失败!"
);
}
//调用获取设备相关信息
Map
<
String
,
String
>
maps
=
new
HashMap
<>();
maps
.
put
(
"type"
,
"equipinfo"
);
maps
.
put
(
"kksbm"
,
pointSystem
.
getKks
());
String
data
=
HttpContentTypeUtil
.
sendHttpPost
(
powerStationUrl
,
maps
);
if
(
StringUtils
.
isEmpty
(
data
)
||
!(
Boolean
)
JSON
.
parseObject
(
data
).
get
(
"success"
))
{
throw
new
RuntimeException
(
"获取设备信息失败!"
);
}
JSONObject
json
=
JSON
.
parseObject
(
data
);
JSONObject
jsond
=
(
JSONObject
)
json
.
get
(
"dataset"
);
JSONArray
list
=
(
JSONArray
)
jsond
.
get
(
"datas"
);
JSONObject
eqdata
=
null
;
if
(
list
==
null
||
list
.
isEmpty
())
{
throw
new
RuntimeException
(
"获取设备信息失败!"
);
}
eqdata
=
(
JSONObject
)
list
.
get
(
0
);
//组装数据,发送预警
WarningDto
warningDto
=
setWarningDto
(
pointSystem
,
eqdata
,
valueLabe
);
emqKeeper
.
getMqttClient
().
publish
(
STATIONWARNING
,
JSON
.
toJSONString
(
warningDto
).
getBytes
(),
0
,
false
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
RuntimeException
(
"预警消息发送失败!"
);
}
}
public
WarningDto
setWarningDto
(
PointSystem
pointSystem
,
JSONObject
eqdata
,
String
valueLabe
){
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
String
time
=
sdf
.
format
(
new
Date
());
String
warningObjectCode
=
pointSystem
.
getKks
();
List
<
TabContent
>
tabContent
=
new
ArrayList
<>();
tabContent
.
add
(
new
TabContent
(
"KKS编码"
,
TEXT
,
warningObjectCode
,
"key1"
));
tabContent
.
add
(
new
TabContent
(
"设备名称"
,
TEXT
,
eqdata
.
get
(
"kksms"
),
"key2"
));
tabContent
.
add
(
new
TabContent
(
"告警原因"
,
TEXT
,
valueLabe
,
"key3"
));
tabContent
.
add
(
new
TabContent
(
"发生时间"
,
TEXT
,
time
,
"key4"
));
DynamicDetails
dynamicDetails
=
new
DynamicDetails
(
TABNAME
,
tabContent
);
List
<
DynamicDetails
>
dynamicDetailsList
=
new
ArrayList
<>();
dynamicDetailsList
.
add
(
dynamicDetails
);
StringBuilder
indexKey
=
new
StringBuilder
(
pointSystem
.
getStation
())
.
append
(
"#"
)
.
append
(
pointSystem
.
getNumber
())
.
append
(
"#"
)
.
append
(
pointSystem
.
getFunctionNum
());
String
indexValue
=
valueLabe
;
WarningDto
WarningDto
=
new
WarningDto
(
indexKey
.
toString
(),
indexValue
,
null
,
(
String
)
eqdata
.
get
(
"sourceAttributionDesc"
),
(
String
)
eqdata
.
get
(
"sourceAttribution"
),
dynamicDetailsList
,
warningObjectCode
,
time
,
(
String
)
eqdata
.
get
(
"kksms"
)
);
return
WarningDto
;
}
}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/service/impl/producerServers.java
0 → 100644
View file @
d75ae272
//package com.yeejoin.amos.api.alarm.service.impl;
//
//import com.alibaba.fastjson.JSON;
//import org.apache.kafka.clients.admin.NewTopic;
//import org.apache.kafka.clients.producer.ProducerRecord;
//import org.checkerframework.checker.units.qual.K;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.kafka.core.KafkaTemplate;
//import org.springframework.kafka.support.SendResult;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Service;
//import org.springframework.util.concurrent.ListenableFuture;
//import org.springframework.util.concurrent.ListenableFutureCallback;
//
//import javax.annotation.PostConstruct;
//import javax.annotation.Resource;
//
///**
// * @description:
// * @author: tw
// * @createDate: 2023/6/28
// */
//@Service
//public class producerServers {
//
//
// @Autowired
// private KafkaTemplate<String, String> kafkaTemplate;
//
//@Scheduled(fixedRate = 60000)
// public void send(){
// String gg1="1668801435891929089@18873";
// String gg2="1668801435891929089@18874";
// String gg3="1668801435891929089@18875";
// String gg4="1668801435891929089@18876";
// String gg5="1668801435891929089@18877";
// String gg6="1668801435891929089@18878";
// String gg7="1668801435891929089@18879";
// String gg8="1668801435891929089@18880";
//
//
// String topic="jf1";
//
// ProducerRecord<String, String> producerRecord1 = new ProducerRecord<String, String>( topic, gg1.hashCode()%3, gg1.hashCode()%3+"", gg1+"==============="+gg1.hashCode()%5);
// ProducerRecord<String, String> producerRecord2 = new ProducerRecord<String, String>( topic, gg2.hashCode()%3,gg2.hashCode()%3+"", gg2+"==============="+gg2.hashCode()%5);
// ProducerRecord<String, String> producerRecord3 = new ProducerRecord<String, String>( topic, gg3.hashCode()%3,gg3.hashCode()%3+"", gg3+"==============="+gg3.hashCode()%5);
// ProducerRecord<String, String> producerRecord4 = new ProducerRecord<String, String>( topic, gg4.hashCode()%3,gg4.hashCode()%3+"", gg4+"==============="+gg4.hashCode()%5);
// ProducerRecord<String, String> producerRecord5 = new ProducerRecord<String, String>( topic, gg5.hashCode()%3,gg5.hashCode()%3+"", gg5+"==============="+gg5.hashCode()%5);
// ProducerRecord<String, String> producerRecord6 = new ProducerRecord<String, String>( topic, gg6.hashCode()%3,gg6.hashCode()%3+"", gg6+"==============="+gg6.hashCode()%5);
// ProducerRecord<String, String> producerRecord7 = new ProducerRecord<String, String>( topic, gg7.hashCode()%3,gg7.hashCode()%3+"", gg7+"==============="+gg7.hashCode()%5);
// ProducerRecord<String, String> producerRecord8 = new ProducerRecord<String, String>( topic, gg8.hashCode()%3,gg8.hashCode()%3+"", gg8+"==============="+gg8.hashCode()%5);
//
// System.out.println(gg1.hashCode()%3);
// System.out.println(gg2.hashCode()%3);
// System.out.println(gg3.hashCode()%3);
// System.out.println(gg4.hashCode()%3);
// System.out.println(gg5.hashCode()%3);
// System.out.println(gg6.hashCode()%3);
// System.out.println(gg7.hashCode()%3);
// System.out.println(gg8.hashCode()%3);
//
// kafkaTemplate.send(producerRecord1);
// kafkaTemplate.send(producerRecord2);
// kafkaTemplate.send(producerRecord3);
// kafkaTemplate.send(producerRecord4);
// kafkaTemplate.send(producerRecord5);
// kafkaTemplate.send(producerRecord6);
// kafkaTemplate.send(producerRecord7);
// kafkaTemplate.send(producerRecord8);
//
//
//
//
// }
//
//
//
//
//
//}
amos-boot-data/amos-boot-data-alarm/src/main/java/com/yeejoin/amos/api/alarm/utils/HttpContentTypeUtil.java
0 → 100644
View file @
d75ae272
This diff is collapsed.
Click to expand it.
amos-boot-data/amos-boot-data-alarm/src/main/resources/application.properties
View file @
d75ae272
...
...
@@ -11,3 +11,51 @@ redis.cache.failure.time=10800
# mybatis-plus
mybatis-plus.mapper-locations
=
classpath:mapper/*Mapper.xml
#消费者所在组的名称
#消费者 的broker地址
spring.kafka.consumer.bootstrap-servers
=
121.199.39.218:9092
# 是否自动提交
spring.kafka.consumer.enable-auto-commit
=
false
#offset的消费位置
spring.kafka.consumer.auto-offset-reset
=
earliest
# 配置序列化
spring.kafka.consumer.key-deserializer
=
org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer
=
org.apache.kafka.common.serialization.StringDeserializer
#手动提交方式
spring.kafka.listener.ack-mode
=
manual_immediate
#监听类型
spring.kafka.listener.type
=
single
# 并发
#spring.kafka.listener.concurrency=5
# 发生错误后,消息重发的次数。
spring.kafka.producer.retries
=
1
#配置kafak produce的broker地址
spring.kafka.producer.bootstrap-servers
=
121.199.39.218:9092
#默认批处理大小(以字节为单位)
spring.kafka.producer.batch-size
=
16384
#生产者可以用来缓冲等待发送到服务器的记录的内存总字节数
spring.kafka.producer.buffer-memory
=
33554432
# producer配置序列化
spring.kafka.producer.key-serializer
=
org.apache.kafka.common.serialization.StringSerializer
# kafka默认的String序列化器
spring.kafka.producer.value-serializer
=
org.apache.kafka.common.serialization.StringSerializer
kafka.equipment.alarm
=
EQUIPMENT_ALARM88
#电站对接第三方查询设备kks码
power.station.url
=
http://139.9.169.123:5024/prod-api/fdgl/process/DataInterface
#电站104采集预警
power.station.warning
=
104/data/analysis
\ No newline at end of file
amos-boot-module/amos-boot-module-api/amos-boot-module-equip-api/src/main/java/com/yeejoin/equipmanage/common/entity/EquipQrcodeRecord.java
View file @
d75ae272
...
...
@@ -48,4 +48,8 @@ public class EquipQrcodeRecord extends BaseEntity {
@ApiModelProperty
(
value
=
"状态(0:绿码,1:黄码,2:红码)"
)
@TableField
(
"system_code"
)
private
String
systemCode
;
@ApiModelProperty
(
value
=
"状态(0:绿码,1:黄码,2:红码)"
)
@TableField
(
"clean_reason"
)
private
String
cleanReason
;
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/controller/EquipInformationCardController.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
equipmanage
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.aspose.words.SaveOutputParameters
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.equipmanage.common.entity.EquipQrcodeRecord
;
import
com.yeejoin.equipmanage.common.enums.CheckStatusEnum
;
import
com.yeejoin.equipmanage.common.utils.CommonResponseUtil
;
import
com.yeejoin.equipmanage.fegin.IdxFeign
;
import
com.yeejoin.equipmanage.fegin.McbFeign
;
import
com.yeejoin.equipmanage.mapper.EquipQrcodeRecordMapper
;
import
com.yeejoin.equipmanage.mapper.EquipmentSpecificAlarmLogMapper
;
import
com.yeejoin.equipmanage.mapper.EquipmentSpecificMapper
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.checkerframework.checker.units.qual.A
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
@RestController
@Api
(
tags
=
"设备信息卡Api"
)
@RequestMapping
(
value
=
"/equipInformationCard"
)
public
class
EquipInformationCardController
{
@Autowired
EquipmentSpecificAlarmLogMapper
equipmentSpecificAlarmLogMapper
;
@Autowired
EquipmentSpecificMapper
equipmentSpecificMapper
;
@Autowired
EquipQrcodeRecordMapper
equipQrcodeRecordMapper
;
@Autowired
IdxFeign
idxFeign
;
@Autowired
McbFeign
mcbFeign
;
@RequestMapping
(
value
=
"/equipOrPatrol"
,
method
=
RequestMethod
.
GET
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"运维信息-设备告警/巡检"
,
notes
=
"运维信息-设备告警/巡检"
)
public
ResponseModel
getEquipAlarmList
(
String
equipmentId
,
String
type
)
{
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<>();
List
<
String
>
idList
=
new
ArrayList
<>();
if
(
type
.
equals
(
"alarm"
)){
list
=
equipmentSpecificAlarmLogMapper
.
getEquipAlarmList
(
equipmentId
);
idList
=
equipmentSpecificAlarmLogMapper
.
getEquipAlarmIdList
(
equipmentId
);
}
else
if
(
type
.
equals
(
"check"
)){
list
=
equipmentSpecificMapper
.
selectListByPatrolCheck
(
equipmentId
);
list
.
stream
().
forEach
(
e
->
e
.
put
(
"is_ok"
,
CheckStatusEnum
.
getNameByCode
(
e
.
get
(
"is_ok"
).
toString
())));
idList
=
equipmentSpecificMapper
.
selectIdsByPatrolCheck
(
equipmentId
);
}
String
ids
=
String
.
join
(
","
,
idList
);
JSONObject
obj
=
idxFeign
.
queryDefectByCodes
(
idList
,
ids
);
List
<
JSONObject
>
jsonObjects
=
JSONArray
.
parseArray
(
JSON
.
toJSONString
(
obj
.
get
(
"result"
)),
JSONObject
.
class
);
//缺陷对应记录 是否存在上报问题
if
(!
ValidationUtil
.
isEmpty
(
jsonObjects
)){
list
.
forEach
(
e
->{
jsonObjects
.
forEach
(
j
->{
if
(
e
.
get
(
"id"
).
toString
().
equals
(
j
.
getString
(
"checkId"
))){
e
.
put
(
"reportProblem"
,
j
.
getString
(
"defectDescribe"
));
e
.
put
(
"defectId"
,
j
.
getString
(
"id"
));
e
.
put
(
"defectStatus"
,
j
.
getString
(
"defectStatus"
).
equals
(
"0"
)?
"未处理"
:
"已处理"
);
}
});
});
}
map
.
put
(
"data"
,
list
);
map
.
put
(
"total"
,
list
.
size
());
return
CommonResponseUtil
.
success
(
map
);
}
@RequestMapping
(
value
=
"/mcb"
,
method
=
RequestMethod
.
GET
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"预警记录"
,
notes
=
"预警记录"
)
public
ResponseModel
getMcbDataList
(
String
equipmentId
,
int
current
,
int
size
)
{
JSONObject
result
=
mcbFeign
.
list
(
current
,
size
,
equipmentId
);
JSONObject
jsonObject
=
result
.
getJSONObject
(
"result"
);
List
<
JSONObject
>
records
=
JSONArray
.
parseArray
(
JSON
.
toJSONString
(
jsonObject
.
get
(
"records"
)),
JSONObject
.
class
);
LambdaQueryWrapper
<
EquipQrcodeRecord
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
EquipQrcodeRecord:
:
getEquipid
,
equipmentId
);
List
<
EquipQrcodeRecord
>
qrList
=
equipQrcodeRecordMapper
.
selectList
(
wrapper
);
records
.
forEach
(
record
->{
qrList
.
forEach
(
q
->{
if
(
q
.
getSourceId
().
equals
(
record
.
getString
(
"traceId"
))){
record
.
put
(
"cleanStatus"
,
q
.
getCleanTime
()
==
null
?
"未消除"
:
"已消除"
);
record
.
put
(
"cleanTime"
,
q
.
getCleanTime
());
record
.
put
(
"cleanReason"
,
q
.
getCleanReason
());
}
});
String
cs
=
""
;
JSONArray
list
=
record
.
getJSONArray
(
"rectificationProposal"
);
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
if
(
i
!=
(
list
.
size
()
-
1
)){
cs
+=
list
.
getJSONObject
(
i
).
getString
(
"measuresDesc"
)+
","
;
}
else
{
cs
+=
list
.
getJSONObject
(
i
).
getString
(
"measuresDesc"
);
}
}
record
.
put
(
"measure"
,
cs
);
});
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"data"
,
records
);
map
.
put
(
"total"
,
jsonObject
.
get
(
"total"
));
return
CommonResponseUtil
.
success
(
map
);
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/controller/EquipmentSpecificController.java
View file @
d75ae272
...
...
@@ -461,6 +461,9 @@ public class EquipmentSpecificController extends AbstractBaseController {
one
.
isNull
(
EquipQrcodeRecord:
:
getCleanTime
);
EquipQrcodeRecord
equipQrcodeRecord
=
equipQrcodeRecordMapper
.
selectOne
(
one
);
equipQrcodeRecord
.
setCleanTime
(
new
Date
());
if
(
equipQrcodeRecord
.
getSource
().
equals
(
"patrol"
)){
equipQrcodeRecord
.
setCleanReason
(
"设备再次巡查正常"
);
}
equipQrcodeRecordMapper
.
updateById
(
equipQrcodeRecord
);
if
(
equipQrcodeRecords
.
size
()
==
0
)
{
//如果记录表中此装备无未消除的故障等 则恢复绿码
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/fegin/McbFeign.java
0 → 100644
View file @
d75ae272
package
com
.
yeejoin
.
equipmanage
.
fegin
;
import
com.alibaba.fastjson.JSONObject
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.*
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
java.util.List
;
/**
* @author DELL
*/
@FeignClient
(
name
=
"${mcb.feign.name}"
,
path
=
"warning"
,
configuration
=
{
FeignConfiguration
.
class
})
public
interface
McbFeign
{
/***
* <pre>
* @Description: 根据告警id查询缺陷治理情况
* </pre>
*
* @MethodName:
* @Param:
* @Return: null
* @Throws
* @Author keyong
* @Date 2022/9/27 17:46
*/
@RequestMapping
(
value
=
"/warning-warning-info/page"
,
method
=
RequestMethod
.
GET
)
JSONObject
list
(
@RequestParam
(
value
=
"current"
)
int
current
,
@RequestParam
(
value
=
"size"
)
int
size
,
@RequestParam
(
value
=
"objectId"
,
required
=
false
)
String
objectId
);
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/service/impl/MqttReceiveServiceImpl.java
View file @
d75ae272
...
...
@@ -937,7 +937,8 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
equipmentSpecificAlarms
.
forEach
(
action
->
{
EquipmentSpecific
specific
=
equipmentSpecificMapper
.
selectById
(
action
.
getEquipmentSpecificId
());
if
(
AlarmStatusEnum
.
BJ
.
getCode
()
==
action
.
getStatus
())
{
alarmLogs
.
add
(
addEquipAlarmLogRecord
(
action
));
EquipmentSpecificAlarmLog
equipmentSpecificAlarmLog
=
addEquipAlarmLogRecord
(
action
);
alarmLogs
.
add
(
equipmentSpecificAlarmLog
);
if
(
ValidationUtil
.
isEmpty
(
action
.
getAlamContent
()))
{
action
.
setAlamContent
(
action
.
getEquipmentSpecificName
()
+
action
.
getEquipmentSpecificIndexName
());
}
...
...
@@ -949,7 +950,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
equipQrcodeRecord
.
setSource
(
"equip"
);
equipQrcodeRecord
.
setAlarmTime
(
new
Date
());
equipQrcodeRecord
.
setStatus
(
EquipQrcodeColorEnum
.
RED
.
getCode
());
equipQrcodeRecord
.
setSourceId
(
action
.
getId
().
toString
());
equipQrcodeRecord
.
setSourceId
(
equipmentSpecificAlarmLog
.
getId
().
toString
());
equipQrcodeRecord
.
setBizOrgCode
(
action
.
getBizOrgCode
());
equipQrcodeRecord
.
setBizOrgName
(
action
.
getBizOrgName
());
equipQrcodeRecord
.
setSystemCode
(
action
.
getSystemIds
());
...
...
@@ -965,6 +966,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
wrapper
.
eq
(
EquipQrcodeRecord:
:
getSourceId
,
action
.
getId
());
EquipQrcodeRecord
equipQrcodeRecord
=
equipQrcodeRecordMapper
.
selectOne
(
wrapper
);
equipQrcodeRecord
.
setCleanTime
(
new
Date
());
equipQrcodeRecord
.
setCleanReason
(
"设备上报复归信息"
);
equipQrcodeRecordMapper
.
updateById
(
equipQrcodeRecord
);
specific
.
setEquipStatus
(
EquipQrcodeColorEnum
.
GREEN
.
getCode
());
...
...
amos-boot-system-equip/src/main/resources/changelog/wl-3.6.0.xml
View file @
d75ae272
...
...
@@ -937,6 +937,17 @@
</sql>
</changeSet>
<changeSet
author=
"20230629"
id=
"20230629-1"
>
<preConditions
onFail=
"MARK_RAN"
>
<not>
<columnExists
tableName=
"dz_point_system"
columnName=
"gateway_id"
/>
</not>
</preConditions>
<comment>
新增属性字段 gateway_id
</comment>
<sql>
alter table `dz_point_system` add column `gateway_id` varchar(50) COMMENT '网关标识ID';
</sql>
</changeSet>
...
...
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