17 changed files with 498 additions and 49 deletions
			
			
		@ -0,0 +1,53 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.alarm.config.entity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.annotation.TableName; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModel; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					import lombok.EqualsAndHashCode; | 
				
			||||||
 | 
					import org.springblade.core.tenant.mp.TenantEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					@TableName("hzims_alarm_defaul_config") | 
				
			||||||
 | 
					@EqualsAndHashCode(callSuper = true) | 
				
			||||||
 | 
					@ApiModel(value = "站点告警配置详情对象", description = "站点告警配置详情对象") | 
				
			||||||
 | 
					public class AlarmDefaultConfigEntity extends TenantEntity { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static final long serialVersionUID = 1L; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty(value = "告警源类型") | 
				
			||||||
 | 
						private Integer source; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty(value = "告警子类") | 
				
			||||||
 | 
						private Integer alarmChiledType; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty(value = "是否集中监控右侧列表展示 : 0-展示 1-不展示") | 
				
			||||||
 | 
						private Integer isRightTabulation; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty(value = "是否集中监控弹窗展示 : 0-展示 1-不展示") | 
				
			||||||
 | 
						private Integer isShowAlert; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty(value = "是否集中监控铃铛展示 : 0-展示 1-不展示") | 
				
			||||||
 | 
						private Integer isSmallBell; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty(value = "是否集中监控遮罩展示 : 0-展示 1-不展示") | 
				
			||||||
 | 
						private Integer isMask; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty(value = "是否语音播报 : 0-播报 1-不播报") | 
				
			||||||
 | 
						private Integer isBroadcast; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty(value = "是否进行平台消息推送 : 0-推送  1-不推送") | 
				
			||||||
 | 
						private Integer isPlatformMessage; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty(value = "是否短信推送 :0-推送 1-不推送") | 
				
			||||||
 | 
						private Integer isShortMessage; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty(value = "是否微信公众号消息推送 :0-推送 1-不推送") | 
				
			||||||
 | 
						private Integer isWxMessage; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,42 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.alarm.config.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModel; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ty | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					@ApiModel(value = "规则预警对象", description = "规则预警对象") | 
				
			||||||
 | 
					public class DroolsAlarmVo { | 
				
			||||||
 | 
						private static final long serialVersionUID = 1L; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String excitationvoltage; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String deviceCode; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String level; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String type; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String deviceName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String tenantId; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String name; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String context; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String guideopening; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String signage; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String projectId; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String currentValue; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private Date ts; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,36 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.alarm.config.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModel; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ty | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					@ApiModel(value = "规则预警对象", description = "规则预警对象") | 
				
			||||||
 | 
					public class SoeAlarmVo { | 
				
			||||||
 | 
						private static final long serialVersionUID = 1L; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String ts; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String station; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String sid; | 
				
			||||||
 | 
						private String id; | 
				
			||||||
 | 
						private String realId; | 
				
			||||||
 | 
						private String type; | 
				
			||||||
 | 
						private String kind; | 
				
			||||||
 | 
						private String level; | 
				
			||||||
 | 
						private String state; | 
				
			||||||
 | 
						private String stateLabel; | 
				
			||||||
 | 
						private String context; | 
				
			||||||
 | 
						private String opvalue; | 
				
			||||||
 | 
						private String trace; | 
				
			||||||
 | 
						private String duration; | 
				
			||||||
 | 
						private String traceCount; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.risk.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.risk.entity.HazardWork; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModel; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					import lombok.EqualsAndHashCode; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2024-04-09 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					@EqualsAndHashCode(callSuper = true) | 
				
			||||||
 | 
					@ApiModel(value = "作业区域管理页面VO类") | 
				
			||||||
 | 
					public class HazardWorkVO extends HazardWork { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("负责人名称") | 
				
			||||||
 | 
					    private String headName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("分管领导名称") | 
				
			||||||
 | 
					    private String managerName; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,10 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.alarm.config.mapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.config.entity.AlarmDefaultConfigEntity; | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface AlarmDefaultConfigMapper extends BaseMapper<AlarmDefaultConfigEntity> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,5 @@ | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||||
 | 
					<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
				
			||||||
 | 
					<mapper namespace="com.hnac.hzims.alarm.config.mapper.AlarmDefaultConfigMapper"> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</mapper> | 
				
			||||||
@ -0,0 +1,42 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.alarm.mqtt; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.alibaba.fastjson.JSONObject; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.config.entity.AlarmEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.monitor.service.AlarmSaveService; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.source.service.DroolsAlarmService; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.source.service.SoeAlarmService; | 
				
			||||||
 | 
					import com.hnac.hzinfo.subscribe.SubscribeCallBack; | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired; | 
				
			||||||
 | 
					import org.springframework.stereotype.Service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					import java.util.Map; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @Author: ty | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Service | 
				
			||||||
 | 
					@Slf4j | 
				
			||||||
 | 
					public class SoeMqttConsumer implements SubscribeCallBack { | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    private SoeAlarmService soeAlarmService; | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    private AlarmSaveService alarmSaveService; | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public void onMessage(Map<String, Object> data) { | 
				
			||||||
 | 
					        System.out.println("监听到消息"+data.toString()); | 
				
			||||||
 | 
					        String s = JSONObject.toJSONString(data); | 
				
			||||||
 | 
					        //消费代码
 | 
				
			||||||
 | 
					        List<AlarmEntity> alarmEntities = soeAlarmService.receiveMessage(s); | 
				
			||||||
 | 
					        //统一数据处理
 | 
				
			||||||
 | 
					        try { | 
				
			||||||
 | 
					            alarmSaveService.save(alarmEntities); | 
				
			||||||
 | 
					        }catch (Exception e){ | 
				
			||||||
 | 
					            log.error("条件告警数据处理报错(SoeAlarm):"+e); | 
				
			||||||
 | 
					            System.out.println("规则引擎告警数据处理报错(SoeAlarm):"+e); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,14 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.alarm.source.service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.config.entity.AlarmEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 等级处理接口 | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface SoeAlarmService { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    List<AlarmEntity> receiveMessage(String message); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,88 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.alarm.source.service.impl; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.alibaba.fastjson.JSONObject; | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.config.entity.AlarmEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.config.vo.DroolsAlarmVo; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.config.vo.SoeAlarmVo; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.show.service.AlarmService; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.source.service.DroolsAlarmService; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.source.service.MessageService; | 
				
			||||||
 | 
					import com.hnac.hzims.alarm.source.service.SoeAlarmService; | 
				
			||||||
 | 
					import com.hnac.hzims.common.utils.DateUtil; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.station.entity.StationEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.station.feign.IStationClient; | 
				
			||||||
 | 
					import lombok.RequiredArgsConstructor; | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.R; | 
				
			||||||
 | 
					import org.springblade.core.tool.utils.CollectionUtil; | 
				
			||||||
 | 
					import org.springframework.data.redis.core.RedisTemplate; | 
				
			||||||
 | 
					import org.springframework.stereotype.Service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList; | 
				
			||||||
 | 
					import java.util.Arrays; | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					import java.util.stream.Collectors; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static com.hnac.hzims.alarm.config.constants.AlarmConstants.*; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 等级告警实现类 | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Slf4j | 
				
			||||||
 | 
					@Service | 
				
			||||||
 | 
					@RequiredArgsConstructor | 
				
			||||||
 | 
					public class SoeAlarmServiceImpl implements SoeAlarmService { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final AlarmService alarmService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final MessageService messageService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final RedisTemplate redisTemplate; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final IStationClient stationClient; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 转换接收服务推送消息 | 
				
			||||||
 | 
					     * @param message | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public List<AlarmEntity> receiveMessage(String message) { | 
				
			||||||
 | 
					        // 对象转换
 | 
				
			||||||
 | 
					        SoeAlarmVo parseObject = JSONObject.parseObject(message, SoeAlarmVo.class); | 
				
			||||||
 | 
					        List<SoeAlarmVo> alarms = Arrays.asList(parseObject); | 
				
			||||||
 | 
					        if (CollectionUtil.isEmpty(alarms)) { | 
				
			||||||
 | 
					            return new ArrayList<>(); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        List<AlarmEntity> res = alarms.stream().map(s -> { | 
				
			||||||
 | 
					            AlarmEntity entity = getAlarmEntity(s); | 
				
			||||||
 | 
					            return entity; | 
				
			||||||
 | 
					        }).collect(Collectors.toList()); | 
				
			||||||
 | 
					        return res; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private AlarmEntity getAlarmEntity(SoeAlarmVo item) { | 
				
			||||||
 | 
					        AlarmEntity entity = new AlarmEntity(); | 
				
			||||||
 | 
					        entity.setAlarmSource(LEVEL_ALARM); | 
				
			||||||
 | 
					        entity.setAlarmType(ONE_LEVEL); | 
				
			||||||
 | 
					        entity.setAlarmContext(item.getContext()); | 
				
			||||||
 | 
					        Date date = new Date(Long.valueOf(item.getTs())); | 
				
			||||||
 | 
					        entity.setAlarmTime(date); | 
				
			||||||
 | 
					        entity.setAlarmValue(item.getOpvalue()); | 
				
			||||||
 | 
					        entity.setAlarmSignage(item.getSid()); | 
				
			||||||
 | 
					        entity.setAlarmLevel(Integer.valueOf(item.getLevel())); | 
				
			||||||
 | 
					        entity.setAlarmCount(Integer.valueOf(item.getTraceCount())); | 
				
			||||||
 | 
					        entity.setAlarmStatus(1); | 
				
			||||||
 | 
					        entity.setDeviceCode(item.getRealId()); | 
				
			||||||
 | 
					        entity.setTenantId("200000"); | 
				
			||||||
 | 
					        R<StationEntity> stationByCode = stationClient.getStationByCode(item.getStation()); | 
				
			||||||
 | 
					        if (stationByCode.isSuccess()&& ObjectUtils.isNotEmpty(stationByCode.getData())){ | 
				
			||||||
 | 
					            entity.setCreateDept(stationByCode.getData().getCreateDept()); | 
				
			||||||
 | 
					            entity.setStationName(stationByCode.getData().getName()); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return entity; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,25 @@ | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					DROP TABLE IF EXISTS `BLADE_MODULE_VERSION`; | 
				
			||||||
 | 
					CREATE TABLE `hzims_alarm_defaul_config` ( | 
				
			||||||
 | 
					                                             `ID` bigint(20) NOT NULL COMMENT '主键ID', | 
				
			||||||
 | 
					                                             `SOURCE` bigint(4) DEFAULT NULL COMMENT '告警来源', | 
				
			||||||
 | 
					                                             `ALARM_CHILED_TYPE` bigint(4) DEFAULT NULL COMMENT '告警子类', | 
				
			||||||
 | 
					                                             `IS_RIGHT_TABULATION` tinyint(4) DEFAULT NULL COMMENT '是否集中监控右侧列表展示 : 0-展示 1-不展示', | 
				
			||||||
 | 
					                                             `IS_SHOW_ALERT` tinyint(4) DEFAULT NULL COMMENT '是否集中监控弹窗展示 : 0-展示 1-不展示', | 
				
			||||||
 | 
					                                             `IS_SMALL_BELL` tinyint(4) DEFAULT NULL COMMENT '是否集中监控铃铛展示 : 0-展示 1-不展示', | 
				
			||||||
 | 
					                                             `IS_MASK` tinyint(4) DEFAULT NULL COMMENT '是否集中监控遮罩展示 : 0-展示 1-不展示', | 
				
			||||||
 | 
					                                             `IS_BROADCAST` tinyint(4) DEFAULT NULL COMMENT '是否语音播报 : 0-播报 1-不播报', | 
				
			||||||
 | 
					                                             `IS_PLATFORM_MESSAGE` tinyint(4) DEFAULT NULL COMMENT '是否进行平台消息推送 : 0-推送  1-不推送', | 
				
			||||||
 | 
					                                             `IS_SHORT_MESSAGE` tinyint(4) DEFAULT NULL COMMENT '是否短信推送 :0-推送 1-不推送', | 
				
			||||||
 | 
					                                             `IS_WX_MESSAGE` tinyint(4) DEFAULT NULL COMMENT '是否微信公众号消息推送 :0-推送 1-不推送', | 
				
			||||||
 | 
					                                             `TENANT_ID` varchar(12) NOT NULL COMMENT '租户ID', | 
				
			||||||
 | 
					                                             `CREATE_DEPT` bigint(20) DEFAULT NULL COMMENT '创建部门ID', | 
				
			||||||
 | 
					                                             `CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间', | 
				
			||||||
 | 
					                                             `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新时间', | 
				
			||||||
 | 
					                                             `CREATE_USER` bigint(20) DEFAULT NULL COMMENT '创建人', | 
				
			||||||
 | 
					                                             `UPDATE_USER` bigint(20) DEFAULT NULL COMMENT '更新人', | 
				
			||||||
 | 
					                                             `IS_DELETED` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除', | 
				
			||||||
 | 
					                                             `STATUS` tinyint(4) DEFAULT NULL COMMENT '状态', | 
				
			||||||
 | 
					                                             PRIMARY KEY (`ID`) USING BTREE | 
				
			||||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; | 
				
			||||||
 | 
					
 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue