|
|
@ -1,17 +1,25 @@ |
|
|
|
package com.hnac.hzims.scheduled.service.alarm.impl; |
|
|
|
package com.hnac.hzims.scheduled.service.alarm.impl; |
|
|
|
|
|
|
|
|
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS; |
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
import com.hnac.hzims.alarm.constants.AlarmConstants; |
|
|
|
import com.hnac.hzims.alarm.constants.AlarmConstants; |
|
|
|
import com.hnac.hzims.alarm.entity.AlarmEntity; |
|
|
|
import com.hnac.hzims.alarm.entity.AlarmEntity; |
|
|
|
|
|
|
|
import com.hnac.hzims.operational.main.constant.HomePageConstant; |
|
|
|
|
|
|
|
import com.hnac.hzims.operational.main.vo.HydropowerUnitRealVo; |
|
|
|
|
|
|
|
import com.hnac.hzims.operational.station.entity.StationEntity; |
|
|
|
import com.hnac.hzims.scheduled.mapper.alarm.AlarmQueryMapper; |
|
|
|
import com.hnac.hzims.scheduled.mapper.alarm.AlarmQueryMapper; |
|
|
|
import com.hnac.hzims.scheduled.service.alarm.AlarmQueryService; |
|
|
|
import com.hnac.hzims.scheduled.service.alarm.AlarmQueryService; |
|
|
|
|
|
|
|
import com.hnac.hzims.scheduled.service.operation.station.StationService; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
|
|
|
import org.apache.commons.collections4.MapUtils; |
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
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.StringUtil; |
|
|
|
import org.springblade.core.tool.utils.StringUtil; |
|
|
|
|
|
|
|
import org.springframework.data.redis.core.RedisTemplate; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
|
|
import java.util.*; |
|
|
|
import java.util.*; |
|
|
@ -26,13 +34,116 @@ import java.util.stream.Collectors; |
|
|
|
@DS("alarm") |
|
|
|
@DS("alarm") |
|
|
|
public class AlarmQueryServiceImpl extends BaseServiceImpl<AlarmQueryMapper, AlarmEntity> implements AlarmQueryService { |
|
|
|
public class AlarmQueryServiceImpl extends BaseServiceImpl<AlarmQueryMapper, AlarmEntity> implements AlarmQueryService { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final StationService stationService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final RedisTemplate redisTemplate; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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"; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 开停机告警 |
|
|
|
* 开停机告警 |
|
|
|
* @param param |
|
|
|
* @param param |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void startStopAlarm(String param) { |
|
|
|
public void startStopAlarm(String param) { |
|
|
|
|
|
|
|
// 获取站点开关机状态
|
|
|
|
|
|
|
|
Map<String,Integer> startStopMap = (HashMap<String, Integer>) redisTemplate.opsForValue().get(start_stop_cache_final);; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 查询接入水电站点
|
|
|
|
|
|
|
|
List<StationEntity> stations = stationService.list(new LambdaQueryWrapper<StationEntity>() |
|
|
|
|
|
|
|
.eq(StationEntity::getDataOrigin,0) |
|
|
|
|
|
|
|
.eq(StationEntity::getType, HomePageConstant.HYDROPOWER) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
if(CollectionUtil.isEmpty(stations)){ |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取站点设备实时数据
|
|
|
|
|
|
|
|
List<HydropowerUnitRealVo> reals = (List<HydropowerUnitRealVo>) redisTemplate.opsForValue().get(load_hydropower_unit_real_key); |
|
|
|
|
|
|
|
if(CollectionUtil.isEmpty(reals)){ |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String,Integer> refresh = new HashMap<>(); |
|
|
|
|
|
|
|
// 实时设备遍历
|
|
|
|
|
|
|
|
reals.forEach(real->{ |
|
|
|
|
|
|
|
// 过滤站点
|
|
|
|
|
|
|
|
List<StationEntity> list = stations.stream().filter(item -> item.getRefDept().equals(real.getDeptId())).collect(Collectors.toList()); |
|
|
|
|
|
|
|
if(CollectionUtil.isEmpty(list)){ |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 确定站点
|
|
|
|
|
|
|
|
StationEntity station = list.get(0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 数据初始化记录
|
|
|
|
|
|
|
|
if(CollectionUtil.isEmpty(startStopMap)){ |
|
|
|
|
|
|
|
if(Math.abs(real.getActivePower()) > 0){ |
|
|
|
|
|
|
|
refresh.put(real.getDeviceCode(),1); |
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
refresh.put(real.getDeviceCode(),0); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 比对开机状态
|
|
|
|
|
|
|
|
if(Math.abs(real.getActivePower()) > 0){ |
|
|
|
|
|
|
|
if(startStopMap.get(real.getDeviceCode()) == 0){ |
|
|
|
|
|
|
|
refresh.put(real.getDeviceCode(),1); |
|
|
|
|
|
|
|
// 记录开机告警
|
|
|
|
|
|
|
|
this.saveStartStopAlarm(station,real,1); |
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
refresh.put(real.getDeviceCode(),0); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
if(startStopMap.get(real.getDeviceCode()) == 1){ |
|
|
|
|
|
|
|
refresh.put(real.getDeviceCode(),0); |
|
|
|
|
|
|
|
// 记录关机告警
|
|
|
|
|
|
|
|
this.saveStartStopAlarm(station,real,0); |
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
refresh.put(real.getDeviceCode(),1); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
redisTemplate.opsForValue().set(start_stop_cache_final,refresh); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* 保存站点设备开关机告警 |
|
|
|
|
|
|
|
* @param station |
|
|
|
|
|
|
|
* @param real |
|
|
|
|
|
|
|
* @param state |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private void saveStartStopAlarm(StationEntity station, HydropowerUnitRealVo real, int state) { |
|
|
|
|
|
|
|
AlarmEntity alarm = new AlarmEntity(); |
|
|
|
|
|
|
|
alarm.setStationId(station.getCode()); |
|
|
|
|
|
|
|
alarm.setStationName(station.getName()); |
|
|
|
|
|
|
|
alarm.setDeviceCode(real.getDeviceCode()); |
|
|
|
|
|
|
|
alarm.setDeviceName(real.getDeviceName()); |
|
|
|
|
|
|
|
alarm.setAlarmId(station.getCode() + "_" + Func.randomUUID()); |
|
|
|
|
|
|
|
alarm.setAlarmContext(station.getName() + "_" + real.getDeviceName() + "_关机"); |
|
|
|
|
|
|
|
alarm.setAlarmSource(AlarmConstants.START_STOP_WARNING); |
|
|
|
|
|
|
|
alarm.setAlarmType(AlarmConstants.STOP); |
|
|
|
|
|
|
|
if(state == 1){ |
|
|
|
|
|
|
|
alarm.setAlarmType(AlarmConstants.START); |
|
|
|
|
|
|
|
alarm.setAlarmContext(station.getName() + "_" + real.getDeviceName() + "_开机"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
alarm.setStatus(0); |
|
|
|
|
|
|
|
alarm.setAlarmTime(new Date()); |
|
|
|
|
|
|
|
alarm.setIsRightTabulation(0); |
|
|
|
|
|
|
|
alarm.setIsShowAlert(1); |
|
|
|
|
|
|
|
alarm.setIsSmallBell(1); |
|
|
|
|
|
|
|
alarm.setIsMask(1); |
|
|
|
|
|
|
|
alarm.setIsBroadcast(0); |
|
|
|
|
|
|
|
alarm.setIsPlatformMessage(1); |
|
|
|
|
|
|
|
alarm.setIsShortMessage(1); |
|
|
|
|
|
|
|
alarm.setIsWxMessage(1); |
|
|
|
|
|
|
|
alarm.setTenantId(station.getTenantId()); |
|
|
|
|
|
|
|
alarm.setCreateDept(station.getRefDept()); |
|
|
|
|
|
|
|
alarm.setCreateUser(station.getCreateUser()); |
|
|
|
|
|
|
|
alarm.setUpdateUser(station.getUpdateUser()); |
|
|
|
|
|
|
|
alarm.setUpdateTime(station.getUpdateTime()); |
|
|
|
|
|
|
|
this.save(alarm); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|