Commit 0fedc250 authored by KeYong's avatar KeYong

更新

parent d79b844d
package com.yeejoin.equipmanage.common.vo;
import lombok.Data;
import java.util.List;
/**
* @author keyong
* @title: RiskBizInfoVo
* <pre>
* @description: TODO
* </pre>
* @date 2023/5/17 11:22
*/
@Data
public class RiskBizInfoVo {
private String warningObjectName;
private String warningObjectCode;
private String warningTime;
private String sourceAttribution;
private String sourceAttributionDesc;
private List<RiskDynamicDetailsVo> dynamicDetails;
}
package com.yeejoin.equipmanage.common.vo;
import lombok.Data;
/**
* @author keyong
* @title: RiskDataVo
* <pre>
* @description: TODO
* </pre>
* @date 2023/5/17 11:19
*/
@Data
public class RiskDataVo {
private String indexKey;
private String indexValue;
private RiskBizInfoVo bizInfo;
}
package com.yeejoin.equipmanage.common.vo;
import lombok.Data;
import java.util.List;
/**
* @author keyong
* @title: RiskDynamicDetailsVo
* <pre>
* @description: TODO
* </pre>
* @date 2023/5/17 11:36
*/
@Data
public class RiskDynamicDetailsVo {
private String tabName;
private List<TableContentVo> tabContent;
}
package com.yeejoin.equipmanage.common.vo;
import lombok.Data;
/**
* @author keyong
* @title: SendToMsgRiskAlarmInfoVo
* <pre>
* @description: TODO
* </pre>
* @date 2023/5/22 15:24
*/
@Data
public class SendToMsgRiskAlarmInfoVo {
private String key;
private String value;
}
package com.yeejoin.equipmanage.common.vo;
import lombok.Data;
/**
* @author keyong
* @title: SendToMsgRiskDetailVo
* <pre>
* @description: TODO
* </pre>
* @date 2023/5/22 15:16
*/
@Data
public class SendToMsgRiskDetailVo {
private SendToMsgRiskEquipInfoVo equipInfo;
private SendToMsgRiskAlarmInfoVo alarmInfo;
}
package com.yeejoin.equipmanage.common.vo;
import lombok.Data;
/**
* @author keyong
* @title: SendToMsgRiskEquipInfoVo
* <pre>
* @description: TODO
* </pre>
* @date 2023/5/22 15:21
*/
@Data
public class SendToMsgRiskEquipInfoVo {
private String id;
private String name;
private String code;
private String bizOrgName;
private String bizOrgCode;
}
package com.yeejoin.equipmanage.common.vo;
import lombok.Data;
/**
* @author keyong
* @title: TableContentVo
* <pre>
* @description: TODO
* </pre>
* @date 2023/5/17 11:20
*/
@Data
public class TableContentVo {
private String key;
private String label;
private String value;
private String type;
}
......@@ -58,6 +58,11 @@ public class EquipmentIotMqttReceiveConfig {
@Value("${spring.mqtt.completionTimeout}")
private int completionTimeout;
@Value("${equip.center.risk.topic}")
private String riskMsgCenterEquipTopic;
@Value("${patrol.center.risk.topic}")
private String riskMsgCenterPatrolTopic;
private EquipmentSpecificMapper equipmentSpecificMapper;
......@@ -121,9 +126,11 @@ public class EquipmentIotMqttReceiveConfig {
if (equipAndCars.size() <= 0) {
list.add(defaultTopic);
}
list.addAll(ConfigPageTopicEnum.getEnumTopicList()); //大屏数据推送接口订阅
list.add("+/+/property"); // 添加iot車輛裝備數據上報事件监听
list.addAll(ConfigPageTopicEnum.getEnumTopicList()); // 大屏数据推送接口订阅
list.add("+/+/property"); // 添加iot车辆装备数据上报事件监听
list.add("+/+/event"); // 添加iot事件监听
list.add(riskMsgCenterEquipTopic);
list.add(riskMsgCenterPatrolTopic);
String[] arr = list.toArray(new String[list.size()]);
adapter = new MqttPahoMessageDrivenChannelAdapter(clientId + "_inbound", mqttPahoClientFactory(), arr);
adapter.setCompletionTimeout(completionTimeout);
......@@ -147,6 +154,8 @@ public class EquipmentIotMqttReceiveConfig {
mqttReceiveService.handlerMqttIncrementMessage(topic, msg);
} else if (dataType.equals("event") && StringUtil.isNotEmpty(msg)) {
mqttEventReceiveService.handlerMqttIncrementMessage(topic, msg);
} else if (dataType.equals("trigger") && StringUtil.isNotEmpty(msg)) {
mqttReceiveService.handleDataToRiskModel(topic, msg);
}
}
};
......
......@@ -17,4 +17,11 @@ public interface MqttReceiveService {
* @param message 消息内容
*/
void handlerMqttIncrementMessage(String topic, String message);
/**
* 中心级接收消息发送至消息服务
* @param topic
* @param message
*/
void handleDataToRiskModel(String topic, String message);
}
......@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.feign.systemctl.model.MessageModel;
import com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentDefectAlarm;
import com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentFaultAlarm;
......@@ -27,6 +28,7 @@ import com.yeejoin.equipmanage.quartz.QuartzManager;
import com.yeejoin.equipmanage.remote.RemoteSecurityService;
import com.yeejoin.equipmanage.service.*;
import com.yeejoin.equipmanage.utils.BeanUtil;
import javafx.scene.control.Tab;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.BeanUtils;
......@@ -48,6 +50,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
......@@ -213,6 +216,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
@Value("${mqtt.vehicle.topic}")
private String carTopic;
@Value("${equip.risk.model.topic}")
private String riskTopic;
private static String canvasTopic;
@Value("${equip.point.equipmentdata.topic}")
public void setCanvasTopic(String canvasTopic){
......@@ -254,6 +260,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
@Value("${emergency.disposal.indicators}")
private String emergencyDisposalIndicators;
@Value("${equip.message.create.topic}")
private String riskMsgCreateTopic;
private static Boolean bool = Boolean.FALSE;
@Autowired
......@@ -518,6 +527,10 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
// 四横八纵遥测信号信息列表刷新
publishNormalIndexValueToPage(equipmentSpecificIndexList);
// 触发风险---> 站端发送消息到Message服务
publishDataToMessage(equipmentSpecificIndexList);
if("zd".equals(system)){
System.out.println("站端系统----------------");
......@@ -541,7 +554,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
// 向其他系统推送报警
equipmentAlarmLogsToOtherSystems(alarmLogs);
if(vo.getEcode()!=null){
String ecode= vo.getEcode();
boolean flag=false;
......@@ -1433,6 +1446,66 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
log.info(String.format("四横八纵遥测指标消息发送:%s", JSON.toJSONString(equipmentSpecificIndexList)));
}
public void publishDataToMessage(List<EquipmentSpecificIndex> equipmentSpeIndexes) {
equipmentSpeIndexes.forEach(equipmentSpeIndex -> {
SendToMsgRiskDetailVo detailVo = new SendToMsgRiskDetailVo();
SendToMsgRiskEquipInfoVo equipInfoVo = new SendToMsgRiskEquipInfoVo();
SendToMsgRiskAlarmInfoVo alarmInfoVo = new SendToMsgRiskAlarmInfoVo();
equipInfoVo.setId(String.valueOf(equipmentSpeIndex.getEquipmentSpecificId()));
equipInfoVo.setName(equipmentSpeIndex.getEquipmentSpecificName());
equipInfoVo.setCode(equipmentSpeIndex.getEquipmentSpecificCode());
equipInfoVo.setBizOrgCode(equipmentSpeIndex.getBizOrgCode());
equipInfoVo.setBizOrgName(equipmentSpeIndex.getBizOrgName());
alarmInfoVo.setKey(equipmentSpeIndex.getEquipmentIndexKey());
alarmInfoVo.setValue(equipmentSpeIndex.getValue());
TopicEntityVo topicEntityVo = new TopicEntityVo();
topicEntityVo.setIotCode(equipmentSpeIndex.getIotCode());
topicEntityVo.setTopic(riskTopic);
topicEntityVo.setMessage(JSON.toJSONString(detailVo));
mqttSendGateway.sendToMqtt(riskTopic, JSON.toJSONString(topicEntityVo));
});
}
@Override
public void handleDataToRiskModel(String topic, String message) {
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(message));
TopicEntityVo entityVo = JSONObject.toJavaObject(jsonObject, TopicEntityVo.class);
JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(entityVo.getMessage()));
SendToMsgRiskDetailVo detailVo = JSONObject.toJavaObject(object, SendToMsgRiskDetailVo.class);
RiskDataVo dataVo = new RiskDataVo();
dataVo.setIndexKey(detailVo.getAlarmInfo().getKey());
dataVo.setIndexValue(detailVo.getAlarmInfo().getValue());
RiskBizInfoVo infoVo = new RiskBizInfoVo();
infoVo.setWarningObjectName(detailVo.getEquipInfo().getName());
infoVo.setWarningObjectCode(detailVo.getEquipInfo().getCode());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
infoVo.setWarningTime(sdf.format(new Date()));
infoVo.setSourceAttribution(detailVo.getEquipInfo().getBizOrgCode());
infoVo.setSourceAttributionDesc(detailVo.getEquipInfo().getBizOrgName());
List<RiskDynamicDetailsVo> detailsVos = new ArrayList<>();
RiskDynamicDetailsVo dynamicDetailsVo = new RiskDynamicDetailsVo();
dynamicDetailsVo.setTabName("装备指标联动数据");
List<TableContentVo> contentVos = new ArrayList<>();
TableContentVo contentVo = new TableContentVo();
contentVo.setKey("1");
contentVo.setLabel("文本名称");
contentVo.setValue("文本值");
contentVo.setType("text");
contentVos.add(contentVo);
dynamicDetailsVo.setTabContent(contentVos);
detailsVos.add(dynamicDetailsVo);
infoVo.setDynamicDetails(detailsVos);
dataVo.setBizInfo(infoVo);
TopicEntityVo topicEntityVo = new TopicEntityVo();
topicEntityVo.setIotCode(entityVo.getIotCode());
topicEntityVo.setTopic(riskTopic);
topicEntityVo.setMessage(JSON.toJSONString(dataVo));
mqttSendGateway.sendToMqtt(riskTopic, JSON.toJSONString(topicEntityVo));
}
/**
* 更新数据报表表
*
......
......@@ -15,22 +15,22 @@ mybatis.type-aliases-package=com.yeejoin.equipmanage.common.entity
spring.jackson.time-zone=GMT+8
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#分页
#\u5206\u9875
pagehelper.helper-dialect=mysql
pagehelper.params=count=countSql
pagehelper.reasonable=false
pagehelper.support-methods-arguments=true
#覆盖相同名称bean
#\u8986\u76D6\u76F8\u540C\u540D\u79F0bean
spring.main.allow-bean-definition-overriding=true
#liquibase
spring.liquibase.change-log=classpath:/changelog/changelog-master.xml
spring.liquibase.enabled=true
#上传文件设置
#\u4E0A\u4F20\u6587\u4EF6\u8BBE\u7F6E
spring.servlet.multipart.maxFileSize=100MB
spring.servlet.multipart.maxRequestSize=100MB
#fegin调用服务名称
#fegin\u8C03\u7528\u670D\u52A1\u540D\u79F0
patrol.fegin.name=AMOS-PATROL
maintenance.feign.name=AMOS-MAINTENANCE-API
precontrol.feign.name=JEPCC-PRECONTROL-SERVER
......@@ -45,21 +45,21 @@ iot.vehicle.track=AMOS-API-IOT
jcs.fegin.name=JCS
video.fegin.name=VIDEO
idx.feign.name=AMOS-IDX
#项目初始化画布id
#\u9879\u76EE\u521D\u59CB\u5316\u753B\u5E03id
morphic.projectSeq=1390314016458514433
#wl_equipment_category 表id (取火灾报警系统id)
#wl_equipment_category \u8868id \uFF08\u53D6\u706B\u707E\u62A5\u8B66\u7CFB\u7EDFid\uFF09
equipment.fire.systemid=1302870628873932802
equipment.type=2
equipment.hierarchy=1,2,4,6
#装备查询根据装备类型编码过滤,4为过滤掉车相关数据,多个的话,添加方式为4,5
#\u88C5\u5907\u67E5\u8BE2\u6839\u636E\u88C5\u5907\u7C7B\u578B\u7F16\u7801\u8FC7\u6EE4\uFF0C4\u4E3A\u8FC7\u6EE4\u6389\u8F66\u76F8\u5173\u6570\u636E\uFF0C\u591A\u4E2A\u7684\u8BDD\uFF0C\u6DFB\u52A0\u65B9\u5F0F\u4E3A4,5
equipment.filter.code=4
#wl_equipment_category 编码 92040000 为消防行业 火灾系统分类编码
#wl_equipment_category \u7F16\u7801 92040000 \u4E3A\u6D88\u9632\u884C\u4E1A \u706B\u707E\u7CFB\u7EDF\u5206\u7C7B\u7F16\u7801
equip.system.alarm.code=92040000
#wl_equipment_category 编码 50000000 为安防行业 摄像头分类编码
#wl_equipment_category \u7F16\u7801 50000000 \u4E3A\u5B89\u9632\u884C\u4E1A \u6444\u50CF\u5934\u5206\u7C7B\u7F16\u7801
equip.security.code=50000000
## redis失效时间
## redis\u5931\u6548\u65F6\u95F4
redis.cache.failure.time=10800
#平台字典配置项
#\u5E73\u53F0\u5B57\u5178\u914D\u7F6E\u9879
systemctl.dict.iot-core-param=IOT_CORE_PARAM
systemctl.dict.area-type=AREA_TYPE
systemctl.dict.allow-operation=ALLOW_OPERATION
......@@ -75,14 +75,22 @@ mqtt.vehicle.topic=${equipManage.name}.vehicle.state
equip.point.equipmentdata.topic=${equipManage.name}.equipment.state
equip.index.topic=${equipManage.name}.equipment.index.state
equip.iot.monitor.topic=team/station/monitor/matrix
# 接口地址
# \u7AD9\u7AEFmessage\u76D1\u542C\u4E3B\u9898
equip.message.create.topic=emq.risk.created
# \u4E2D\u5FC3\u7EA7\u76D1\u542C\u4E3B\u9898
equip.center.risk.topic=equip/risk/trigger
patrol.center.risk.topic=patrol/risk/trigger
# \u4E2D\u5FC3\u7EA7\u53D1\u9001\u81F3\u98CE\u9669\u670D\u52A1\u6D88\u606F\u683C\u5F0F
equip.risk.model.topic=equip/data/analysis
# \u63A5\u53E3\u5730\u5740
equip.scene.detail.url=${server.servlet.context-path}/scene/%s/detail/list
equip.point.equipmentdata.url=${server.servlet.context-path}/equipSpecific/getAll?id=
equip.point.speindex.url=${server.servlet.context-path}/fire-fighting-system/getSpeIndex?id=
equip.point.equipmentDetail.url=${server.servlet.context-path}/equipSpecific/getOneCard?id=
#组态获取系统详情接口地址
#\u7EC4\u6001\u83B7\u53D6\u7CFB\u7EDF\u8BE6\u60C5\u63A5\u53E3\u5730\u5740
firefightingsystem.detail.url=${server.servlet.context-path}/fire-fighting-system/getSystemById?id=
#组态获取分页接口地址
#\u7EC4\u6001\u83B7\u53D6\u5206\u9875\u63A5\u53E3\u5730\u5740
firefightingsystem.equip.alarms.url=${server.servlet.context-path}/fire-fighting-system/getEquipmentAlarmBySystemIdOrSourceIdVO
building.detail=${server.servlet.context-path}/building/findByInstanceId
building.floor.detail=${server.servlet.context-path}/building/getBuildDetaliByFloorId?instanceId=
......@@ -93,15 +101,15 @@ dcs.token-key=dcs_token_key
dcs.client.secret=fire_system
dcs.x.hw.id=NR_REST_APP
dcs.x.hw.appKey=s+YkvQhwilx91TRJHhNDmw==
# 故障告警/消防告警/跑马灯权限标识 true 机场 / false 电力
# \u6545\u969C\u544A\u8B66/\u6D88\u9632\u544A\u8B66/\u8DD1\u9A6C\u706F\u6743\u9650\u6807\u8BC6 true \u673A\u573A / false \u7535\u529B
equip.enabled =false
#es储存物联日志是否删除开关
#es\u50A8\u5B58\u7269\u8054\u65E5\u5FD7\u662F\u5426\u5220\u9664\u5F00\u5173
es.ESEquiplistSpecific.flag= true
#es储存数据时间年
#es\u50A8\u5B58\u6570\u636E\u65F6\u95F4\u5E74
es.ESEquiplistSpecific.year= 1
#es储存物联日志定时删除
#es\u50A8\u5B58\u7269\u8054\u65E5\u5FD7\u5B9A\u65F6\u5220\u9664
es.ESEquiplistSpecific.time= 0 0 2 1 * ?
## ES properties:
biz.elasticsearch.address=172.16.11.201
......@@ -114,21 +122,21 @@ elasticsearch.password= Yeejoin@2020
# 权限标识-物联区域
# \u6743\u9650\u6807\u8BC6-\u7269\u8054\u533A\u57DF
auth-key-area=area_info
# 权限标识-消防系统
# \u6743\u9650\u6807\u8BC6-\u6D88\u9632\u7CFB\u7EDF
auth-key-fire-system=fire_system_info
# 权限标识-消防系统和建筑
# \u6743\u9650\u6807\u8BC6-\u6D88\u9632\u7CFB\u7EDF\u548C\u5EFA\u7B51
auth-key-fire-system-build=fire_system_build_info
# 权限标识-消防装备
# \u6743\u9650\u6807\u8BC6-\u6D88\u9632\u88C5\u5907
auth-key-fire-equip=fire_equip_info
# 权限标识-消防视频
# \u6743\u9650\u6807\u8BC6-\u6D88\u9632\u89C6\u9891
auth-key-fire-video=fire_video_info
# 权限标识-消防建筑视频
# \u6743\u9650\u6807\u8BC6-\u6D88\u9632\u5EFA\u7B51\u89C6\u9891
auth-key-fire-build-video=fire_build_video_info
# 权限标识-消防车辆
# \u6743\u9650\u6807\u8BC6-\u6D88\u9632\u8F66\u8F86
auth-key-fire-car=fire_car_info
# 权限标识-消防建筑
# \u6743\u9650\u6807\u8BC6-\u6D88\u9632\u5EFA\u7B51
auth-key-fire-building=fire_building_info
redis_car_type_count = carTypeAndCount
......@@ -136,10 +144,10 @@ redis_car_type_count = carTypeAndCount
redis_equip_type_count = equipTypeAndCount
emergency.disposal.indicators=emergencyDisposalIndicators
# 权限标识-物联装备
# \u6743\u9650\u6807\u8BC6-\u7269\u8054\u88C5\u5907
auth-key-fire-iot-equip=fire_iot-equip_info
# app离线同步装备数据开关
# app\u79BB\u7EBF\u540C\u6B65\u88C5\u5907\u6570\u636E\u5F00\u5173
auth-open-fire-equip=false
fxkgtId=1522051112935387138
......@@ -148,7 +156,7 @@ management.security.enabled=true
management.endpoint.health.show-details=always
spring.security.user.name=admin
spring.security.user.password=a1234560
#每個站表示
#\u6BCF\u500B\u7AD9\u8868\u793A
stationCode=LSHLZ1bZAJU645Pgl7
##代码中有部分逻辑冲突需要处理 为区分机场和电力逻辑 增加开关 若为true 则为机场逻辑 为false 则为电力逻辑
##\u4EE3\u7801\u4E2D\u6709\u90E8\u5206\u903B\u8F91\u51B2\u7A81\u9700\u8981\u5904\u7406 \u4E3A\u533A\u5206\u673A\u573A\u548C\u7535\u529B\u903B\u8F91 \u589E\u52A0\u5F00\u5173 \u82E5\u4E3Atrue \u5219\u4E3A\u673A\u573A\u903B\u8F91 \u4E3Afalse \u5219\u4E3A\u7535\u529B\u903B\u8F91
logic=false
\ No newline at end of file
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