package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.whyc.dto.AlarmDaoFactory;
|
import com.whyc.dto.BattMaintDealarm;
|
import com.whyc.dto.Response;
|
import com.whyc.dto.paramter.AlarmPar;
|
import com.whyc.dto.result.AlarmRes;
|
import com.whyc.dto.result.AlarmStaticRes;
|
import com.whyc.dto.result.AlarmNumberRes;
|
import com.whyc.mapper.BattalarmDataMapper;
|
import com.whyc.mapper.DevalarmDataMapper;
|
import com.whyc.pojo.*;
|
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.Calendar;
|
import java.util.Comparator;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service
|
@Transactional
|
public class BattalarmDataService {
|
|
@Resource
|
private BattalarmDataMapper mapper;
|
@Resource
|
private DevalarmDataMapper devalarmDataMapper;
|
|
|
//查询所有的告警
|
public Response<List<BattalarmData>> getAll() {
|
QueryWrapper<BattalarmData> wrapper = new QueryWrapper<>();
|
// 通过id进行排序
|
wrapper.orderByAsc("BattGroupId");
|
List<BattalarmData> list=mapper.selectList(wrapper);
|
return new Response<List<BattalarmData>>().set(1,list);
|
}
|
//分页查询所有的实时告警
|
public Response<List<BattalarmData>> getAllByPage(com.whyc.dto.Page p) {
|
Page page=new Page(p.getPageCurr(),p.getPageSize());
|
QueryWrapper<BattalarmData> wrapper = new QueryWrapper<>();
|
// 通过id进行排序
|
wrapper.orderByAsc("BattGroupId");
|
IPage iPage=mapper.selectPage(page,wrapper);
|
return new Response<List<BattalarmData>>().set(1,iPage.getRecords(),String.valueOf(iPage.getTotal()));
|
}
|
//测试:根据电池组id查询所有的告警
|
public Response<List<BattMaintDealarm>> test(BattalarmData balarm) {
|
//分页信息
|
PageHelper.startPage(1,20);
|
List<BattMaintDealarm> list=mapper.test(balarm);
|
PageInfo<BattMaintDealarm> pinfo=new PageInfo<BattMaintDealarm>(list);
|
return new Response<List<BattMaintDealarm>>().set(1,list,String.valueOf(pinfo.getPages()));
|
}
|
//电池告警实时查询
|
public Response serchByCondition(AlarmPar par) {
|
//分页信息
|
PageHelper.startPage(par.getPage().getPageCurr(), par.getPage().getPageSize());
|
UserInf uinf= ActionUtil.getUser();
|
par.setUId(uinf.getUId().intValue());
|
List<AlarmRes> list=mapper.serchByCondition(par);
|
for (AlarmRes a:list) {
|
List<BattalarmData> l=a.getAdatas();
|
for (BattalarmData adata:l) {
|
adata.setAlmSignalIdName(AlarmDaoFactory.getAlarmName(adata.getAlmSignalId()));
|
adata.setAlmLevelName(AlarmDaoFactory.getAlarmType(adata.getAlmLevel()));
|
}
|
}
|
PageInfo<AlarmRes> pinfo=new PageInfo<AlarmRes>(list);
|
return new Response().set(1,pinfo);
|
}
|
//电池告警实时查询-websocket使用
|
@Transactional
|
public Response serchByConditionOfWebSocket(AlarmPar par) {
|
//分页信息
|
PageHelper.startPage(par.getPage().getPageCurr(), par.getPage().getPageSize());
|
List<AlarmRes> list=mapper.serchByCondition(par);
|
for (AlarmRes a:list) {
|
List<BattalarmData> l=a.getAdatas();
|
for (BattalarmData adata:l) {
|
adata.setAlmSignalIdName(AlarmDaoFactory.getAlarmName(adata.getAlmSignalId()));
|
adata.setAlmLevelName(AlarmDaoFactory.getAlarmType(adata.getAlmLevel()));
|
}
|
}
|
PageInfo<AlarmRes> pinfo=new PageInfo<AlarmRes>(list);
|
return new Response().set(1,pinfo);
|
}
|
//根据电池组id查询所有的告警
|
public Response<List<AlarmRes>> serchByInfo(AlarmPar par) {
|
//分页信息
|
PageHelper.startPage(par.getPage().getPageCurr(), par.getPage().getPageSize());
|
UserInf uinf= ActionUtil.getUser();
|
par.setUId(uinf.getUId().intValue());
|
List<AlarmRes> list=mapper.serchByInfo(par);
|
PageInfo<AlarmRes> pinfo=new PageInfo<AlarmRes>(list);
|
return new Response<List<AlarmRes>>().set(1,list,String.valueOf(pinfo.getPages()));
|
}
|
//查询实时告警数
|
public Response<AlarmNumberRes> serchAlm(AlarmPar par) {
|
/*BattalarmData adata=new BattalarmData();
|
adata.setNum(0l);//实时告警总数
|
adata.setBattGroupId(0);//容量告警告警数
|
adata.setMonNum(0);//组端电压告警数
|
adata.setAlmId(0);//充电电流告警数
|
adata.setAlmSignalId(0);//放电电流告警数
|
adata.setAlmLevel(0);//单体电压告警数
|
adata.setAlmIsConfirmed(0);//单体温度告警数
|
adata.setAlmClearedType(0);//单体内阻告警数
|
adata.setUsrId(0);//连接条阻抗告警数
|
adata.setAlmValue(0f);//容量更换告警*/
|
AlarmNumberRes ares=new AlarmNumberRes();
|
//int numZ=0;//告警总数
|
List<AlarmStaticRes> list=mapper.serchAlm(par);//各类告警数
|
if(list!=null&&list.size()>0){
|
for(int i=0;i<list.size();i++){
|
if(list.get(i).getAlmId()== AlarmDaoFactory.Alarm_CapAlarm){
|
/*adata.setBattGroupId(list.get(i).getNumber());//容量告警告警数
|
numZ+=list.get(i).getNumber();*/
|
ares.setNumberCapAlm(list.get(i).getNumber());//容量告警告警数
|
ares.setNumberAll(ares.getNumberAll()+list.get(i).getNumber());
|
}
|
if(list.get(i).getAlmId()==AlarmDaoFactory.Alarm_vol_Group){
|
/*adata.setMonNum(list.get(i).getNumber());//组端电压告警数
|
numZ+=list.get(i).getNumber();*/
|
ares.setNumberGroupVol(list.get(i).getNumber());//组端电压告警数
|
ares.setNumberAll(ares.getNumberAll()+list.get(i).getNumber());
|
}
|
if(list.get(i).getAlmId()==AlarmDaoFactory.Alarm_curr_Charge){
|
/*adata.setAlmId(list.get(i).getNumber());//充电电流告警数
|
numZ+=list.get(i).getNumber();*/
|
ares.setNumberCharge(list.get(i).getNumber());//充电电流告警数
|
ares.setNumberAll(ares.getNumberAll()+list.get(i).getNumber());
|
}
|
if(list.get(i).getAlmId()==AlarmDaoFactory.Alarm_curr_Discharge){
|
/*adata.setAlmSignalId(list.get(i).getNumber());//放电电流告警数
|
numZ+=list.get(i).getNumber();*/
|
ares.setNumberDischarge(list.get(i).getNumber());//放电电流告警数
|
ares.setNumberAll(ares.getNumberAll()+list.get(i).getNumber());
|
}
|
if(list.get(i).getAlmId()==AlarmDaoFactory.Alarm_vol_Monomer){
|
/*adata.setAlmLevel(list.get(i).getNumber());//单体电压告警数
|
numZ+=list.get(i).getNumber();*/
|
ares.setNumberMonVol(list.get(i).getNumber());//单体电压告警数
|
ares.setNumberAll(ares.getNumberAll()+list.get(i).getNumber());
|
}
|
if(list.get(i).getAlmId()==AlarmDaoFactory.Alarm_tmp_Monomer){
|
/* adata.setAlmIsConfirmed(list.get(i).getNumber());//单体温度告警数
|
numZ+=list.get(i).getNumber();*/
|
ares.setNumberTmp(list.get(i).getNumber());//单体温度告警数
|
ares.setNumberAll(ares.getNumberAll()+list.get(i).getNumber());
|
}
|
if(list.get(i).getAlmId()==AlarmDaoFactory.Alarm_res_Monomer){
|
/* adata.setAlmClearedType(list.get(i).getNumber());//单体内阻告警数
|
numZ+=list.get(i).getNumber();*/
|
ares.setNumberRes(list.get(i).getNumber());//单体内阻告警数
|
ares.setNumberAll(ares.getNumberAll()+list.get(i).getNumber());
|
}
|
if(list.get(i).getAlmId()==AlarmDaoFactory.Alarm_res_Conn){
|
/* adata.setUsrId(list.get(i).getNumber());//连接条阻抗告警数
|
numZ+=list.get(i).getNumber();*/
|
ares.setNumberSer(list.get(i).getNumber());//连接条阻抗告警数
|
ares.setNumberAll(ares.getNumberAll()+list.get(i).getNumber());
|
}
|
if(list.get(i).getAlmId()==AlarmDaoFactory.Alarm_CapChange){
|
/* adata.setAlmValue((float)list.get(i).getNumber());//容量更换告警数
|
numZ+=list.get(i).getNumber();*/
|
ares.setNumberCapChange(list.get(i).getNumber());//容量更换告警数
|
ares.setNumberAll(ares.getNumberAll()+list.get(i).getNumber());
|
}
|
}
|
}
|
return new Response<AlarmNumberRes>().set(1,ares);
|
}
|
|
//根据num取消告警
|
public Response cancelalarm(int num) {
|
UpdateWrapper wrapper = new UpdateWrapper<>();
|
//修改的属性
|
//wrapper.set("record_id",adata.getRecordId());
|
wrapper.set("alm_end_time", new SimpleDateFormat(ActionUtil.time_yyyyMMddHHmmss).format(new Date()));
|
wrapper.set("alm_cleared_type",2);
|
// 通过num修改
|
wrapper.eq("num",num);
|
int flag=mapper.update(null,wrapper);
|
return new Response().set(flag);
|
}
|
|
//根据num取消告警(多条记录)
|
@Transactional
|
public Response cancelalarmPro(List<Integer> list) {
|
int flag=0;
|
for (Integer num:list) {
|
//修改的属性
|
UpdateWrapper wrapper = new UpdateWrapper<>();
|
//wrapper.set("record_id",adata.getRecordId());
|
wrapper.set("alm_end_time",new SimpleDateFormat(ActionUtil.time_yyyyMMddHHmmss).format(new Date()));
|
wrapper.set("alm_cleared_type",2);
|
// 通过num修改
|
wrapper.eq("num",num);
|
flag=mapper.update(null,wrapper);
|
}
|
return new Response().set(flag);
|
}
|
//实时告警记录总数查询
|
public Response serchRealTime(int uId) {
|
int number=mapper.serchRealTime(uId);
|
return new Response().set(number);
|
}
|
|
//电池告警实时查询(确认告警)
|
public Response update(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()));
|
// 通过num修改
|
wrapper.eq("num",num);
|
int flag=mapper.update(null,wrapper);
|
return new Response().set(flag);
|
}
|
//电池告警实时查询(批量确认告警)
|
@Transactional
|
public Response updatePro(List<Integer> list) {
|
int flag=0;
|
for (Integer num:list) {
|
//修改的属性
|
UpdateWrapper wrapper = new UpdateWrapper<>();
|
wrapper.set("alm_is_confirmed",1);
|
wrapper.set("alm_confirmed_time",new SimpleDateFormat(ActionUtil.time_yyyyMMddHHmmss).format(new Date()));
|
// 通过num修改
|
wrapper.eq("num",num);
|
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 serchGood(int uId) {
|
List list=mapper.serchGood(uId);
|
return new Response().set(1,list);
|
}
|
|
/**获取告警记录信息*/
|
public List<WorkflowAlarm> getAlarmList() {
|
return mapper.getAlarmList();
|
}
|
|
public void updateWorkFlag(List<WorkflowAlarm> battAlarmList) {
|
mapper.updateWorkFlag(battAlarmList);
|
}
|
|
//根据机房信息查询该机房实时告警已确认总数和未确认总数 search2ByStationId
|
public List<BattalarmData> getCountByStationId(String stationId){
|
int[] alarmParams = {AlarmDaoFactory.Alarm_CapAlarm,AlarmDaoFactory.Alarm_CapChange,AlarmDaoFactory.Alarm_res_Conn,AlarmDaoFactory.ALM_TYPE_DisChargeMonVol_ID};
|
List<BattalarmData> list = mapper.getCountByStationId(stationId,alarmParams);
|
return list;
|
}
|
public List<BattMapInformation> findAllStation(){
|
int[] alarmParams = {AlarmDaoFactory.Alarm_CapAlarm,AlarmDaoFactory.Alarm_CapChange,AlarmDaoFactory.Alarm_res_Conn,AlarmDaoFactory.ALM_TYPE_DisChargeMonVol_ID};
|
List<BattMapInformation> list = mapper.findAllStation(alarmParams);
|
return list;
|
}
|
|
|
//项目下方的滚动,查询最新电池告警(电池告警和设备告警筛选出最新的五条)
|
@Transactional
|
public Response getRealAlarm(int uId){
|
Calendar instance = Calendar.getInstance();
|
instance.add(Calendar.DAY_OF_MONTH,-1);
|
Date yesterday = instance.getTime();
|
int[] alarmParams = {AlarmDaoFactory.Alarm_CapAlarm,AlarmDaoFactory.Alarm_CapChange,AlarmDaoFactory.Alarm_res_Conn,AlarmDaoFactory.ALM_TYPE_DisChargeMonVol_ID};
|
List<BattalarmData> lista=mapper.getRealAlarm(yesterday,uId,alarmParams);
|
for (BattalarmData battAlarm:lista) {
|
battAlarm.setAlarmName(AlarmDaoFactory.getAlarmName(battAlarm.getAlmSignalId()));
|
}
|
List<DevalarmData> listd=devalarmDataMapper.getRealAlarm(yesterday,uId);
|
if(listd!=null&&listd.size()>0){
|
for (DevalarmData ddata : listd) {
|
BattalarmData data=new BattalarmData();
|
data.setAlarmType("1");//1表示设备告警
|
data.setAlmId(ddata.getAlmType());
|
data.setStationName(ddata.getStationName());
|
//data.setNote(ddata.getNote());
|
data.setNum(ddata.getNum());
|
data.setAlmStartTime(ddata.getAlmStartTime());
|
//data.setAlm_signal_id(ddata.getAlm_type());
|
data.setAlarmName(AlarmDaoFactory.getdevName(ddata.getAlmType()));
|
lista.add(data);
|
}
|
}
|
|
//排序,按照时间或者说是num
|
lista.sort(Comparator.comparing(BattalarmData::getAlmStartTime).reversed());
|
return new Response().set(1,lista,"查询成功");
|
|
}
|
|
}
|