whyclxw
2025-05-28 e16302f9d475c7cc4dd18c5abf1a23cb5502e362
src/main/java/com/whyc/service/PwrdevAlarmHistoryService.java
@@ -1,34 +1,212 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.AlarmDaoFactory;
import com.whyc.dto.Response;
import com.whyc.mapper.PwrdevAlarmHistoryMapper;
import com.whyc.mapper.PwrdevAlarmParamMapper;
import com.whyc.pojo.PwrDevAlarmVerify;
import com.whyc.pojo.PwrdevAlarmHistory;
import com.whyc.pojo.PwrdevAlarmParam;
import com.whyc.pojo.UserLog;
import com.whyc.util.ActionUtil;
import com.whyc.util.SubTablePageInfoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
@Service
public class PwrdevAlarmHistoryService {
    @Resource
    private PwrdevAlarmHistoryMapper mapper;
    //查询所有的实时历史告警信息
    public Response getHistoryAllPage(PwrdevAlarmHistory pwrH){
        PageHelper.startPage(pwrH.getPage().getPageCurr(),pwrH.getPage().getPageSize());
        List<PwrdevAlarmHistory> list= mapper.getHistoryAllPage(pwrH);
        for (PwrdevAlarmHistory p:list) {
    @Resource
    private PwrdevAlarmParamMapper paramMapper;
    @Resource
    private SubTablePageInfoUtils subTablePageInfoUtils;
    @Autowired
    private SubTablePageInfoService subService;
    //查询所有的电源历史告警信息
    public Response getHistoryAllPage(PwrdevAlarmHistory pwrH) {
        PageHelper.startPage(pwrH.getPage().getPageCurr(), pwrH.getPage().getPageSize());
        pwrH.setUsrId(ActionUtil.getUser().getUId().intValue());
        List<PwrdevAlarmHistory> list = mapper.getHistoryAllPage(pwrH);
        for (PwrdevAlarmHistory p : list) {
            p.setAlarmName(AlarmDaoFactory.getAllAlarmName(p.getAlmType()));
        }
        PageInfo pageInfo = new PageInfo(list);
        List levelList = serchByLevel(ActionUtil.getUser().getUId().intValue(), pwrH.getAlmTypes());
        return new Response<>().setII(1, pageInfo, levelList, "返回结果");
    }
    public Response getPageInfo(PwrdevAlarmHistory param) throws ParseException {
        Integer pageNum = param.getPage().getPageCurr();
        Integer pageSize = param.getPage().getPageSize();
        Date almStartTime = param.getAlmStartTime();
        Date almEndTime = param.getAlmStartTime1();
        //recordId = 1 普通电源
        param.setRecordId(1L);
        int uId = ActionUtil.getUser().getUId().intValue();
        param.setUsrId(uId);
        PageInfo<Object> pageInfo = subTablePageInfoUtils.getPageInfo(pageNum, pageSize, almStartTime, almEndTime,
                "db_pwrdev_alarm", "tb_pwrdev_alarm_history", param);
        List<Object> list = pageInfo.getList();
        for (Object temp : list) {
            PwrdevAlarmHistory p = (PwrdevAlarmHistory) temp;
            p.setAlarmName(AlarmDaoFactory.getAllAlarmName(p.getAlmType()));
        }
        return new Response<>().setII(1, pageInfo, null, "返回结果");
    }
    public Response getPageInfoForTX(PwrdevAlarmHistory param) throws ParseException {
        Integer pageNum = param.getPage().getPageCurr();
        Integer pageSize = param.getPage().getPageSize();
        Date almStartTime = param.getAlmStartTime();
        Date almEndTime = param.getAlmStartTime1();
        //2代表通讯电源
        param.setRecordId(2L);
        param.setUsrId(ActionUtil.getUser().getUId().intValue());
        PageInfo<Object> pageInfo = subTablePageInfoUtils.getPageInfo(pageNum, pageSize, almStartTime, almEndTime,
                "db_pwrdev_alarm", "tb_pwrdev_alarm_history", param);
        List<Object> list = pageInfo.getList();
        List<String> tableList = paramMapper.getParamList();
        //取第一条记录,即param表
        String alarmParamTableName = tableList.get(0);
        //List<PwrdevAlarmParam>  paramList=paramMapper.searchAll(alarmParamTableName);
        List<PwrdevAlarmParam>  paramList=subService.searchAll(alarmParamTableName);
        for (Object obj:list) {
            PwrdevAlarmHistory p = (PwrdevAlarmHistory) obj;
            int almType = p.getAlmType();
            AtomicBoolean matchFlag = new AtomicBoolean(false);
            paramList.stream().forEach(temp->{
                if(temp.getAlarmId()  == almType ){
                    if (p.getAlmIndex() != 0) {
                        p.setAlarmName(temp.getAlarmName().replace("N", p.getAlmIndex() + ""));
                    }else{
                        p.setAlarmName(temp.getAlarmName());
                    }
                    matchFlag.set(true);
                    return;
                }
            });
            if(!matchFlag.get()){
                p.setAlarmName("未知告警类型");
            }
        }
        return  new Response<>().set(1,pageInfo);
    }
    //查询分级告警的个数
    public List serchByLevel(int uId, List<Integer> almTypes) {
        List list = new ArrayList();
        //分四级查询个数
        for (int i = 1; i <= 4; i++) {
            int countLevel = mapper.serchByLevel(i, uId, almTypes);
            list.add(countLevel);
        }
        return list;
    }
    //电源历史告警删除
    public Response delete(int num) {
        int flag = mapper.deleteById(num);
        return new Response().set(flag);
    }
    //电源历史告警删除批量
    @Transactional
    public Response deletepro(List<Integer> list) {
        int flag = 0;
        for (Integer num : list) {
            flag = mapper.deleteById(num);
        }
        return new Response().set(flag);
    }
    //查询所有的通讯电源历史告警信息
    public Response getHistoryAllPage2(PwrdevAlarmHistory pwrH) {
        PageHelper.startPage(pwrH.getPage().getPageCurr(),pwrH.getPage().getPageSize());
        pwrH.setUsrId(ActionUtil.getUser().getUId().intValue());
        List<PwrdevAlarmHistory> list= mapper.getHistoryAllPage2(pwrH);
        List<String> tableList = paramMapper.getParamList();
        //取第一条记录,即param表
        String alarmParamTableName = tableList.get(0);
        //List<PwrdevAlarmParam>  paramList=paramMapper.searchAll(alarmParamTableName);
        List<PwrdevAlarmParam>  paramList=subService.searchAll(alarmParamTableName);
        for (PwrdevAlarmHistory 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("未知告警类型");
            }
        }
        PageInfo pageInfo=new PageInfo(list);
        return  new Response<>().set(1,pageInfo);
    }
    //电池历史告警删除
    public Response delete(int num) {
        int flag=mapper.deleteById(num);
        return new Response().set(flag);
    public List<PwrdevAlarmHistory> getDataBeforeRetentionMonth(Date retentionTime) {
        return mapper.getDataBeforeRetentionMonth(retentionTime);
    }
    public void deleteBeforeRetentionMonth(Date retentionTime) {
        UpdateWrapper<PwrdevAlarmHistory> update = Wrappers.update();
        update.lt("alm_start_time",retentionTime);
        mapper.delete(update);
    }
    public void add(PwrDevAlarmVerify data) {
        PwrdevAlarmHistory dataHistory = new PwrdevAlarmHistory();
        dataHistory.setAlmClearedType(data.getAlmClearedType());
        dataHistory.setAlmConfirmedTime(data.getAlmConfirmedTime());
        dataHistory.setAlmEndTime(data.getAlmEndTime());
        dataHistory.setAlmIndex(data.getAlmIndex());
        dataHistory.setAlmIsConfirmed(data.getAlmIsConfirmed());
        dataHistory.setAlmLevel(data.getAlmLevel());
        dataHistory.setAlmSeverity(data.getAlmSeverity());
        dataHistory.setAlmSource(data.getAlmSource());
        dataHistory.setAlmStartTime(data.getAlmStartTime());
        dataHistory.setAlmType(data.getAlmType());
        dataHistory.setAlmValue(data.getAlmValue());
        dataHistory.setPowerDeviceId(data.getPowerDeviceId());
        dataHistory.setRecordId(data.getRecordId());
        dataHistory.setUsrId(data.getUsrId());
        dataHistory.setAlmTrigger(data.getAlmTrigger());
        mapper.insert(dataHistory);
    }
    public List<PwrdevAlarmHistory> getListByStationId(Date startTime, Date endTime, String stationId,String tableName) {
        //List list=mapper.getListByStationId(startTime,endTime,stationId,tableName);
        List list=subService.getListByStationId_pwr(startTime,endTime,stationId,tableName);
        return list;
    }
    public Response getLevelList(List<Integer> almTypes) {
        int uId = ActionUtil.getUser().getUId().intValue();
        List<Integer> levelList = subTablePageInfoUtils.getLevelList(uId,"db_pwrdev_alarm", "tb_pwrdev_alarm_history", "tb_pwrdev_alarm_history_?[0-9]*",almTypes);
        return new Response().set(1,levelList);
    }
}