package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.whyc.dto.AlarmDaoFactory;
|
import com.whyc.dto.Response;
|
import com.whyc.mapper.PwrdevAlarmMapper;
|
import com.whyc.mapper.PwrdevAlarmParamMapper;
|
import com.whyc.pojo.PwrdevAlarm;
|
import com.whyc.pojo.PwrdevAlarmParam;
|
import com.whyc.pojo.UserInf;
|
import com.whyc.util.ActionUtil;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.ListIterator;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
@Service
|
public class PwrdevAlarmService {
|
|
@Resource
|
private PwrdevAlarmMapper mapper;
|
|
@Resource
|
private PwrdevAlarmParamMapper paramMapper;
|
|
//电源实时告警查询
|
public Response getAllPage(PwrdevAlarm pwrdevAlarm){
|
//分页信息
|
PageHelper.startPage(pwrdevAlarm.getPage().getPageCurr(), pwrdevAlarm.getPage().getPageSize());
|
pwrdevAlarm.setUsrId(ActionUtil.getUser().getUId().intValue());
|
List<PwrdevAlarm> list=mapper.getAllPage(pwrdevAlarm);
|
for (PwrdevAlarm p:list) {
|
p.setAlarmName(AlarmDaoFactory.getAllAlarmName(p.getAlmType()));
|
if(p.getAlmIndex()!=0){
|
p.setAlarmName(p.getAlarmName().replace("N","第"+p.getAlmIndex()+"路"));
|
}
|
}
|
PageInfo pageInfo=new PageInfo(list);
|
return new Response().set(1,pageInfo);
|
}
|
//电源实时告警查询-webSocket
|
public Response getAllPageOfWebSocket(PwrdevAlarm pwrdevAlarm){
|
//分页信息
|
PageHelper.startPage(pwrdevAlarm.getPage().getPageCurr(), pwrdevAlarm.getPage().getPageSize());
|
List<PwrdevAlarm> list=mapper.getAllPage(pwrdevAlarm);
|
for (PwrdevAlarm p:list) {
|
p.setAlarmName(AlarmDaoFactory.getAllAlarmName(p.getAlmType()));
|
if(p.getAlmIndex()!=0){
|
p.setAlarmName(p.getAlarmName().replace("N","第"+p.getAlmIndex()+"路"));
|
}
|
}
|
PageInfo pageInfo=new PageInfo(list);
|
return new Response().set(1,pageInfo);
|
}
|
|
//电源实时告警查询-webSocket
|
@Transactional
|
public Response getSendPwrAlarmOfWebSocket(Integer uId){
|
List<PwrdevAlarm> list=mapper.getSendPwrdevAlarm(uId);
|
Date now = new Date();
|
ListIterator<PwrdevAlarm> it = list.listIterator();
|
while (it.hasNext()){
|
PwrdevAlarm adata = it.next();
|
if(adata.getAlmLevel()==1 && adata.getRecordTime()!=null && now.getTime()-adata.getRecordTime().getTime()<24*3600000){
|
it.remove();
|
}
|
if(adata.getAlmLevel()==2 && adata.getRecordTime()!=null && now.getTime()-adata.getRecordTime().getTime()<7*24*3600000){
|
it.remove();
|
}
|
if(adata.getAlmLevel()==3 && adata.getRecordTime()!=null && now.getTime()-adata.getRecordTime().getTime()<30*7*24*3600000){
|
it.remove();
|
}
|
adata.setAlarmName(AlarmDaoFactory.getAllAlarmName(adata.getAlmType()));
|
if(adata.getAlmIndex()!=0){
|
adata.setAlarmName(adata.getAlarmName().replace("N","第"+adata.getAlmIndex()+"路"));
|
}
|
}
|
return new Response().set(1,list);
|
|
}
|
//电源实时确认告警
|
public Response confirm(int num) {
|
UpdateWrapper wrapper=new UpdateWrapper();
|
wrapper.set("alm_is_confirmed",1);
|
wrapper.set("alm_confirmed_time",new SimpleDateFormat(ActionUtil.time_yyyyMMddHHmmss).format(new Date()));
|
wrapper.eq("num",num);
|
int flag=mapper.update(null,wrapper);
|
return new Response().set(flag);
|
}
|
//电源实时取消告警
|
public Response cancle(int num) {
|
UpdateWrapper wrapper=new UpdateWrapper();
|
wrapper.set("alm_is_confirmed",2);
|
wrapper.set("alm_confirmed_time",new SimpleDateFormat(ActionUtil.time_yyyyMMddHHmmss).format(new Date()));
|
wrapper.eq("num",num);
|
int flag=mapper.update(null,wrapper);
|
return new Response().set(flag);
|
}
|
|
//电源实时删除告警
|
public Response delete(int num) {
|
UpdateWrapper wrapper=new UpdateWrapper();
|
wrapper.eq("num",num);
|
int flag=mapper.delete(wrapper);
|
return new Response().set(flag);
|
}
|
//电源实时删除告警批量
|
@Transactional
|
public Response deletepro(List<Integer> list) {
|
int flag=0;
|
for (Integer num:list) {
|
UpdateWrapper wrapper = new UpdateWrapper<>();
|
// 通过num删除
|
wrapper.eq("num",num);
|
flag=mapper.delete(wrapper);
|
}
|
return new Response().set(flag);
|
}
|
//电源告警个数
|
public Response getAlarmNum() {
|
UserInf uinf= ActionUtil.getUser();
|
int powerAlarmNum=mapper.getAlarmNum(uinf.getUId().intValue());
|
return new Response().set(1,powerAlarmNum);
|
}
|
//通信电源告警--认证送检-配电柜专用
|
public Response getAllPage2(PwrdevAlarm pwrdevAlarm) {
|
//分页信息
|
PageHelper.startPage(pwrdevAlarm.getPage().getPageCurr(), pwrdevAlarm.getPage().getPageSize());
|
pwrdevAlarm.setUsrId(ActionUtil.getUser().getUId().intValue());
|
List<PwrdevAlarm> list=mapper.getAllPage2(pwrdevAlarm);
|
List<String> tableList = paramMapper.getParamList();
|
//取第一条记录,即param表
|
String alarmParamTableName = tableList.get(0);
|
List<PwrdevAlarmParam> paramList=paramMapper.searchAll(alarmParamTableName);
|
for (PwrdevAlarm p:list) {
|
int almType = p.getAlmType();
|
AtomicBoolean matchFlag = new AtomicBoolean(false);
|
paramList.stream().forEach(param->{
|
if(param.getAlarmId() == almType){
|
p.setAlarmName(param.getAlarmName());
|
matchFlag.set(true);
|
return;
|
}
|
});
|
if(!matchFlag.get()){
|
p.setAlarmName("未知告警类型");
|
}
|
int alarmIndex = p.getAlmIndex();
|
if(alarmIndex!=0){
|
p.setAlmIndex(alarmIndex);
|
p.setAlarmName(p.getAlarmName().replace("N","第"+alarmIndex+"路"));
|
}
|
}
|
PageInfo pageInfo=new PageInfo(list);
|
return new Response().set(1,pageInfo);
|
}
|
//通信电源告警--认证送检-配电柜专用-webSocket
|
public Response getAllPage2OfWebSocket(PwrdevAlarm pwrdevAlarm) {
|
//分页信息
|
PageHelper.startPage(pwrdevAlarm.getPage().getPageCurr(), pwrdevAlarm.getPage().getPageSize());
|
List<PwrdevAlarm> list=mapper.getAllPage2(pwrdevAlarm);
|
List<String> tableList = paramMapper.getParamList();
|
//取第一条记录,即param表
|
String alarmParamTableName = tableList.get(0);
|
List<PwrdevAlarmParam> paramList=paramMapper.searchAll(alarmParamTableName);
|
for (PwrdevAlarm p:list) {
|
int almType = p.getAlmType();
|
AtomicBoolean matchFlag = new AtomicBoolean(false);
|
paramList.stream().forEach(param->{
|
if(param.getAlarmId() == almType){
|
p.setAlarmName(param.getAlarmName());
|
matchFlag.set(true);
|
return;
|
}
|
});
|
if (!matchFlag.get()) {
|
p.setAlarmName("未知告警类型");
|
}
|
int alarmIndex = p.getAlmIndex();
|
if (alarmIndex != 0) {
|
p.setAlmIndex(alarmIndex);
|
p.setAlarmName(p.getAlarmName().replace("N", "第" + alarmIndex + "路"));
|
}
|
}
|
PageInfo pageInfo = new PageInfo(list);
|
return new Response().set(1, pageInfo);
|
}
|
|
public List<PwrdevAlarm> getList(Long userId) {
|
return mapper.getList(userId);
|
}
|
|
//查询分级告警的个数
|
public Response serchByLevel(Integer uId) {
|
List list = new ArrayList();
|
//分四级查询个数
|
for (int i = 1; i <= 4; i++) {
|
int countLevel = mapper.serchByLevel(i, uId);
|
list.add(countLevel);
|
}
|
return new Response().setII(1, list.size() > 0, list, "分级告警数");
|
}
|
}
|