| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.alarm.config.constants.AlarmConstants; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.alarm.config.constants.AlarmConstants; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.alarm.config.entity.AlarmDefaultConfigEntity; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.alarm.config.entity.AlarmDefaultConfigEntity; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.alarm.config.entity.AlarmEntity; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.alarm.config.entity.AlarmEntity; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.alarm.config.vo.SystemAlarmVo; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.business.interruption.constants.InterruptionConstants; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.business.interruption.constants.InterruptionConstants; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.business.interruption.entity.InterruptionEntity; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.business.interruption.entity.InterruptionEntity; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.operational.main.constant.HomePageConstant; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.operational.main.constant.HomePageConstant; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -21,10 +22,12 @@ import com.hnac.hzinfo.sdk.core.response.HzPage; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzinfo.sdk.core.response.Result; | 
					 | 
					 | 
					 | 
					import com.hnac.hzinfo.sdk.core.response.Result; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import lombok.AllArgsConstructor; | 
					 | 
					 | 
					 | 
					import lombok.AllArgsConstructor; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import lombok.extern.slf4j.Slf4j; | 
					 | 
					 | 
					 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					import org.springblade.core.tool.jackson.JsonUtil; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.CollectionUtil; | 
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.CollectionUtil; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.DateUtil; | 
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.DateUtil; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.Func; | 
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.Func; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.ObjectUtil; | 
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.ObjectUtil; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					import org.springblade.mqtt.producer.IMqttSender; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springframework.data.redis.core.RedisTemplate; | 
					 | 
					 | 
					 | 
					import org.springframework.data.redis.core.RedisTemplate; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springframework.stereotype.Service; | 
					 | 
					 | 
					 | 
					import org.springframework.stereotype.Service; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -52,6 +55,8 @@ public class AlarmServiceImpl implements AlarmService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private final RedisTemplate redisTemplate; | 
					 | 
					 | 
					 | 
					    private final RedisTemplate redisTemplate; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    private final IMqttSender mqttSender; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private final static String start_stop_cache_final = "hzims:operation:start:stop:key"; | 
					 | 
					 | 
					 | 
					    private final static String start_stop_cache_final = "hzims:operation:start:stop:key"; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private final static String load_hydropower_unit_real_key = "hzims:operation:loadhydropowerunit:real:key"; | 
					 | 
					 | 
					 | 
					    private final static String load_hydropower_unit_real_key = "hzims:operation:loadhydropowerunit:real:key"; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -151,12 +156,12 @@ public class AlarmServiceImpl implements AlarmService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        alarm.setDeviceCode(real.getDeviceCode()); | 
					 | 
					 | 
					 | 
					        alarm.setDeviceCode(real.getDeviceCode()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        alarm.setDeviceName(real.getDeviceName()); | 
					 | 
					 | 
					 | 
					        alarm.setDeviceName(real.getDeviceName()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        alarm.setAlarmId(station.getCode() + "_" + Func.randomUUID()); | 
					 | 
					 | 
					 | 
					        alarm.setAlarmId(station.getCode() + "_" + Func.randomUUID()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        alarm.setAlarmContext(station.getName() + "_" + real.getDeviceName() + "_关机"); | 
					 | 
					 | 
					 | 
					        alarm.setAlarmContext(station.getName() + "." + real.getDeviceName() + "_关机"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        alarm.setAlarmSource(AlarmConstants.START_STOP_WARNING); | 
					 | 
					 | 
					 | 
					        alarm.setAlarmSource(AlarmConstants.START_STOP_WARNING); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        alarm.setAlarmType(AlarmConstants.STOP); | 
					 | 
					 | 
					 | 
					        alarm.setAlarmType(AlarmConstants.STOP); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if(state == 1){ | 
					 | 
					 | 
					 | 
					        if(state == 1){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            alarm.setAlarmType(AlarmConstants.START); | 
					 | 
					 | 
					 | 
					            alarm.setAlarmType(AlarmConstants.START); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            alarm.setAlarmContext(station.getName() + "_" + real.getDeviceName() + "_开机"); | 
					 | 
					 | 
					 | 
					            alarm.setAlarmContext(station.getName() + "." + real.getDeviceName() + "_开机"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        alarm.setStatus(0); | 
					 | 
					 | 
					 | 
					        alarm.setStatus(0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        alarm.setAlarmTime(new Date()); | 
					 | 
					 | 
					 | 
					        alarm.setAlarmTime(new Date()); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -221,8 +226,7 @@ public class AlarmServiceImpl implements AlarmService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        List<SoeData> soes = result.getData().getRecords(); | 
					 | 
					 | 
					 | 
					        List<SoeData> soes = result.getData().getRecords(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // 查询当天数据中断告警记录
 | 
					 | 
					 | 
					 | 
					        // 查询当天数据中断告警记录
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        List<InterruptionEntity> saves = this.saveInterruptions(stations.stream().map(StationEntity::getCode).collect(Collectors.toList())); | 
					 | 
					 | 
					 | 
					        List<InterruptionEntity> saves = this.saveInterruptions(stations.stream().map(StationEntity::getCode).collect(Collectors.toList())); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // 批量保存中断告警数据
 | 
					 | 
					 | 
					 | 
					        List<InterruptionEntity> entities = soes.stream().filter(o-> CollectionUtil.isEmpty(saves) || !saves.stream().map(InterruptionEntity::getAlarmId).collect(Collectors.toList()).contains(o.getId())).map(soe->{ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        this.interruptionAlarmService.saveBatch(soes.stream().filter(o-> CollectionUtil.isEmpty(saves) || !saves.stream().map(InterruptionEntity::getAlarmId).collect(Collectors.toList()).contains(o.getId())).map(soe->{ | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            InterruptionEntity entity = new InterruptionEntity(); | 
					 | 
					 | 
					 | 
					            InterruptionEntity entity = new InterruptionEntity(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            List<StationEntity> soeStations = stations.stream().filter(o->o.getCode().equals(soe.getStation())).collect(Collectors.toList()); | 
					 | 
					 | 
					 | 
					            List<StationEntity> soeStations = stations.stream().filter(o->o.getCode().equals(soe.getStation())).collect(Collectors.toList()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if(!CollectionUtil.isEmpty(soeStations)){ | 
					 | 
					 | 
					 | 
					            if(!CollectionUtil.isEmpty(soeStations)){ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -243,7 +247,37 @@ public class AlarmServiceImpl implements AlarmService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                entity.setStatus(1); | 
					 | 
					 | 
					 | 
					                entity.setStatus(1); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            return entity; | 
					 | 
					 | 
					 | 
					            return entity; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }).collect(Collectors.toList())); | 
					 | 
					 | 
					 | 
					        }).collect(Collectors.toList()); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        if(CollectionUtil.isEmpty(entities)){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        // 批量保存中断告警数据
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        this.interruptionAlarmService.saveBatch(entities); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        // FIXME 发送HZ3000中通讯告警
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        this.sendInterruptionMsg(entities); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    /** | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					     * 发送HZ3000中通讯告警 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					     * @param entities | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					     */ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    private void sendInterruptionMsg(List<InterruptionEntity> entities) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        entities.forEach(entity->{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            SystemAlarmVo alarm = new SystemAlarmVo(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            if(ObjectUtil.isEmpty(entity.getId())){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                alarm.setId(DateUtil.format(new Date(),DateUtil.PATTERN_DATETIME_MINI)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                alarm.setId(String.valueOf(entity.getId())); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            alarm.setTs(entity.getAlarmTime().getTime()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            alarm.setType(Integer.parseInt(entity.getType())); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            alarm.setStation(entity.getStationId()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            alarm.setRealId(entity.getRealId()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            alarm.setContext(entity.getSoeExplain()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            alarm.setState(entity.getStatus()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            log.error("send_interruption_msg : {}",JsonUtil.toJson(alarm)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            mqttSender.sendToMqtt(InterruptionConstants.HZ3000_TOPIC_PREFIX + entity.getStationId(), JsonUtil.toJson(alarm)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        }); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |