Skip to content
resource-alarm.component.ts 10.9 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, OnInit} from '@angular/core';
wangqinghua's avatar
wangqinghua committed
import {AnalysisService} from '../analysis.service';
import {NzMessageService} from 'ng-zorro-antd';
import {DatePipe} from '@angular/common';
wangqinghua's avatar
wangqinghua committed
import {color, pageSize} from '../../app.constants';
wangqinghua's avatar
wangqinghua committed
import {OverAllService} from '../../overAll/overAll.service';
wangqinghua's avatar
wangqinghua committed
import {WorkService} from '../../work/work.service';
import {CommonService} from '../../shared/common/common.service';
wangqinghua's avatar
log
wangqinghua committed

@Component({
wangqinghua's avatar
wangqinghua committed
    selector: 'smart-resource-alarm',
    templateUrl: './resource-alarm.component.html',
    styles: []
wangqinghua's avatar
log
wangqinghua committed
})
export class ResourceAlarmComponent implements OnInit {

wangqinghua's avatar
wangqinghua committed
    timeType = '4';
wangqinghua's avatar
wangqinghua committed
    color = color;
wangqinghua's avatar
wangqinghua committed
    startTime;
    endTime;
    groupList;
wangqinghua's avatar
wangqinghua committed
    title;
    isVisiable = false;
wangqinghua's avatar
wangqinghua committed
    isLoading = false;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //显示无数据图片
    data = {
wangqinghua's avatar
wangqinghua committed
        left: false,
        right: false,
wangqinghua's avatar
wangqinghua committed
    };

wangqinghua's avatar
wangqinghua committed
    obj = {
wangqinghua's avatar
wangqinghua committed
        priorityName: null,
wangqinghua's avatar
wangqinghua committed
        groupid: null,
        startTime: '',
        endTime: '',
wangqinghua's avatar
wangqinghua committed
    };
wangqinghua's avatar
wangqinghua committed
    chartTopOption;
    charTrendOption;

wangqinghua's avatar
wangqinghua committed
    commonList;
wangqinghua's avatar
wangqinghua committed
    reportList;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //统计报告分页
wangqinghua's avatar
wangqinghua committed
    pageCount = pageSize;
    pageNum = 1;
wangqinghua's avatar
wangqinghua committed
    totalNum;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //告警明细
    pageCount1 = 10;
    pageNum1 = 1;
    totalNum1;

wangqinghua's avatar
wangqinghua committed
    modalList = [];
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //下载
    isDownload1 = false;
    isDownload2 = false;

wangqinghua's avatar
wangqinghua committed
    constructor(private analysisSer: AnalysisService, private message: NzMessageService, private commonSer: CommonService,
                private datePipe: DatePipe, private overAllSer: OverAllService, private workSer: WorkService) {
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
log
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    ngOnInit() {
wangqinghua's avatar
wangqinghua committed
        this.obj.startTime = this.commonSer.getTimeByType('4').startTime;
        this.obj.endTime = this.commonSer.getTimeByType('4').endTime;
wangqinghua's avatar
wangqinghua committed
        this.getGroup();
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    getData() {
wangqinghua's avatar
wangqinghua committed
        this.isLoading = true;
wangqinghua's avatar
wangqinghua committed
        this.getAlarmTopEchart();
        this.getAlarmTrend();
        this.getCommonTop();
        this.getAnalysis();
    }
wangqinghua's avatar
log
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //获取分组
    getGroup() {
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.findGroup().subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
                    this.groupList = res.data;
wangqinghua's avatar
wangqinghua committed
                    this.obj.groupid = this.groupList[0].groupid;
                    this.getData();
wangqinghua's avatar
wangqinghua committed
                }
            }
        );
    }

wangqinghua's avatar
wangqinghua committed
    //告警总数TOP10
    getAlarmTopEchart() {
        const data = {
            groupid: this.obj.groupid,
            startTime: this.obj.startTime,
            endTime: this.obj.endTime,
wangqinghua's avatar
wangqinghua committed
            priorityName: this.obj.priorityName,
wangqinghua's avatar
wangqinghua committed
        };
        this.analysisSer.waringCountTop(data).subscribe(
            (res) => {
wangqinghua's avatar
wangqinghua committed
                if (res.errCode == 10000) {
                    if (res.data.length > 0) {
wangqinghua's avatar
wangqinghua committed
                        this.data.left = false;
wangqinghua's avatar
wangqinghua committed
                        const response = res.data;
                        this.setTopEcharts(response);
wangqinghua's avatar
wangqinghua committed
                    } else {
wangqinghua's avatar
wangqinghua committed
                        this.data.left = true;
                    }
wangqinghua's avatar
wangqinghua committed
                }
wangqinghua's avatar
wangqinghua committed
            }
        );
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //设置告警总数TOP10 echarts
wangqinghua's avatar
wangqinghua committed
    setTopEcharts(data) {
wangqinghua's avatar
wangqinghua committed
        this.chartTopOption = {
wangqinghua's avatar
wangqinghua committed
            title: {
                text: '告警总数TOP 10'
            },
wangqinghua's avatar
wangqinghua committed
            tooltip: {
wangqinghua's avatar
wangqinghua committed
                trigger: 'axis',
wangqinghua's avatar
wangqinghua committed
                axisPointer: {            // 坐标轴指示器,坐标轴触发有效
                    type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
wangqinghua's avatar
wangqinghua committed
                },
wangqinghua's avatar
wangqinghua committed
            },
wangqinghua's avatar
wangqinghua committed
            xAxis: {
                type: 'category',
wangqinghua's avatar
wangqinghua committed
                data: data.map(e => {
wangqinghua's avatar
wangqinghua committed
                    return e.name;
                })
            },
            yAxis: {
wangqinghua's avatar
wangqinghua committed
                type: 'value',
wangqinghua's avatar
wangqinghua committed
                minInterval: 1,
wangqinghua's avatar
wangqinghua committed
                axisLabel: {
                    show: true,
                    interval: 'auto',
                    formatter: '{value} 个'
                },
wangqinghua's avatar
wangqinghua committed
                boundaryGap: [0, 0.1],
wangqinghua's avatar
wangqinghua committed
            },
            series: [{
wangqinghua's avatar
wangqinghua committed
                name: '告警总数TOP10',
wangqinghua's avatar
wangqinghua committed
                data: data.map(e => {
wangqinghua's avatar
wangqinghua committed
                    return e.size;
                }),
wangqinghua's avatar
wangqinghua committed
                color: [this.color.yellow],
wangqinghua's avatar
wangqinghua committed
                type: 'bar'
            }]
        };
    }

    //告警总数趋势
    getAlarmTrend() {
        const data = {
            groupid: this.obj.groupid,
            startTime: this.obj.startTime,
            endTime: this.obj.endTime,
wangqinghua's avatar
wangqinghua committed
            priorityName: this.obj.priorityName,
wangqinghua's avatar
wangqinghua committed
        };
        this.analysisSer.waringTrend(data).subscribe(
            (res) => {
wangqinghua's avatar
wangqinghua committed
                if (res.errCode == 10000) {
                    if (res.data.length > 0) {
wangqinghua's avatar
wangqinghua committed
                        this.data.right = false;
wangqinghua's avatar
wangqinghua committed
                        const response = res.data;
                        this.setAlarmTrend(response);
wangqinghua's avatar
wangqinghua committed
                    } else {
wangqinghua's avatar
wangqinghua committed
                        this.isLoading = false;
                        this.data.right = true;
                    }
wangqinghua's avatar
wangqinghua committed
                }

wangqinghua's avatar
wangqinghua committed
            }
        );
    }

    //设置告警趋势echarts图表
    setAlarmTrend(data) {
        this.charTrendOption = {
wangqinghua's avatar
wangqinghua committed
            title: {
                text: '告警总数趋势'
            },
wangqinghua's avatar
wangqinghua committed
            tooltip: {
                trigger: 'axis',
                axisPointer: {            // 坐标轴指示器,坐标轴触发有效
                    type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
wangqinghua's avatar
wangqinghua committed
                },
wangqinghua's avatar
wangqinghua committed
            },
            legend: {
wangqinghua's avatar
wangqinghua committed
                data: ['严重', '告警']
wangqinghua's avatar
wangqinghua committed
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
            },
            xAxis: [
                {
                    type: 'category',
                    data: data.map((e) => {
                        return e.date;
                    })
                }
            ],
            yAxis: [
                {
wangqinghua's avatar
wangqinghua committed
                    type: 'value',
wangqinghua's avatar
wangqinghua committed
                    minInterval: 1,
wangqinghua's avatar
wangqinghua committed
                    axisLabel: {
                        show: true,
                        interval: 'auto',
                        formatter: '{value} 个'
                    },
wangqinghua's avatar
wangqinghua committed
                    boundaryGap: [0, 0.1],
wangqinghua's avatar
wangqinghua committed
                }
            ],
            series: [

                {
                    name: '严重',
                    type: 'bar',
                    stack: '严重',
wangqinghua's avatar
wangqinghua committed
                    data: data.map(e => {
wangqinghua's avatar
wangqinghua committed
                        return e.errorcount;
                    })
                },
                {
                    name: '告警',
                    type: 'bar',
                    stack: '告警',
wangqinghua's avatar
wangqinghua committed
                    data: data.map(e => {
wangqinghua's avatar
wangqinghua committed
                        return e.waringcount;
                    })
                }
            ]
        };
wangqinghua's avatar
wangqinghua committed

        this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //常发问题TOP10
wangqinghua's avatar
wangqinghua committed
    getCommonTop() {
        const data = {
            groupid: this.obj.groupid,
            startTime: this.obj.startTime,
            endTime: this.obj.endTime,
wangqinghua's avatar
wangqinghua committed
            priorityName: this.obj.priorityName,
wangqinghua's avatar
wangqinghua committed
        };
        this.analysisSer.commonProblemTop(data).subscribe(
            (res) => {
wangqinghua's avatar
wangqinghua committed
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.commonList = res.data;
                }

wangqinghua's avatar
wangqinghua committed
            }
        );
    }

    //统计报告
    getAnalysis() {
        const data = {
            pageCount: this.pageCount,
            pageNum: this.pageNum,
            obj: {
                startTime: this.obj.startTime,
                endTime: this.obj.endTime,
wangqinghua's avatar
wangqinghua committed
                priorityName: this.obj.priorityName,
xiaowenjie's avatar
xiaowenjie committed
                groupid: this.obj.groupid,
wangqinghua's avatar
wangqinghua committed
            }
        };
        this.analysisSer.statisticalReport(data).subscribe(
            (res) => {
wangqinghua's avatar
wangqinghua committed
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.reportList = res.data.data;
wangqinghua's avatar
wangqinghua committed
                    this.totalNum = res.data.totalNum;
wangqinghua's avatar
wangqinghua committed
                }
wangqinghua's avatar
wangqinghua committed
            }
        );
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //翻页
wangqinghua's avatar
wangqinghua committed
    change(e) {
        if (e > 0) {
            this.pageNum = e;
            this.getAnalysis();
        }
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //时间改变
wangqinghua's avatar
wangqinghua committed
    changeType() {
wangqinghua's avatar
wangqinghua committed
        if(this.timeType =='99') return ;
        this.obj.startTime = this.commonSer.getTimeByType(this.timeType).startTime;
        this.obj.endTime = this.commonSer.getTimeByType(this.timeType).endTime;
wangqinghua's avatar
wangqinghua committed
    }

    //搜索
wangqinghua's avatar
wangqinghua committed
    search() {
wangqinghua's avatar
wangqinghua committed
        if (this.timeType == '99') {
wangqinghua's avatar
wangqinghua committed
            this.obj.startTime = this.datePipe.transform(this.startTime, 'yyyy-MM-dd HH:mm:ss');
            this.obj.endTime = this.datePipe.transform(this.endTime, 'yyyy-MM-dd HH:mm:ss');
wangqinghua's avatar
wangqinghua committed
        }
        this.getData();
    }

wangqinghua's avatar
wangqinghua committed
    //告警弹窗
wangqinghua's avatar
wangqinghua committed
    showWarnModal(item) {
wangqinghua's avatar
wangqinghua committed
        this.title = '告警明细';
        this.isVisiable = true;
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            triggerids: item.waringid
        };
wangqinghua's avatar
wangqinghua committed
        this.analysisSer.reportCount(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed
                this.modalList = res.data;
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

    //严重弹窗
wangqinghua's avatar
wangqinghua committed
    showErrorModal(item) {
wangqinghua's avatar
wangqinghua committed
        this.title = '严重告警明细';
        this.isVisiable = true;
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            triggerids: item.errorid
        };
wangqinghua's avatar
wangqinghua committed
        this.analysisSer.reportCount(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed
                this.modalList = res.data;
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    handleCancel() {
wangqinghua's avatar
wangqinghua committed
        this.modalList = [];
wangqinghua's avatar
wangqinghua committed
        this.isVisiable = false;
    }
wangqinghua's avatar
wangqinghua committed

    //导出 常见问题top 10
wangqinghua's avatar
wangqinghua committed
    downLoadCommon() {
wangqinghua's avatar
wangqinghua committed
        this.isDownload1 = true;
        const data = {
            groupid: this.obj.groupid,
            startTime: this.obj.startTime,
            endTime: this.obj.endTime,
            priorityName: this.obj.priorityName,
        };
        this.analysisSer.commonProblemTopImport(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
                    this.workSer.downloadTemplate('commonProblemTop', res.data).subscribe(
                        (data) => {
wangqinghua's avatar
wangqinghua committed
                            this.isDownload1 = false;
wangqinghua's avatar
wangqinghua committed
                            this.commonSer.downloadFile('常见问题top10.xlsx', data);
wangqinghua's avatar
wangqinghua committed
                        }
wangqinghua's avatar
wangqinghua committed
                    );
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.isDownload1 = false;
                }
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

    // 导出 统计报告
wangqinghua's avatar
wangqinghua committed
    downLoadReport() {
wangqinghua's avatar
wangqinghua committed
        this.isDownload2 = true;
        const data = {
            pageCount: this.pageCount,
            pageNum: this.pageNum,
            obj: {
                startTime: this.obj.startTime,
                endTime: this.obj.endTime,
                priorityName: this.obj.priorityName,
                groupid: this.obj.groupid,
            }
        };
        this.analysisSer.statisticalReportImport(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
                    this.workSer.downloadTemplate('statisticalReport', res.data).subscribe(
                        (data) => {
wangqinghua's avatar
wangqinghua committed
                            this.isDownload2 = false;
wangqinghua's avatar
wangqinghua committed
                            this.commonSer.downloadFile('统计报告.xlsx', data);
wangqinghua's avatar
wangqinghua committed
                        }
wangqinghua's avatar
wangqinghua committed
                    );
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.isDownload2 = false;
                }
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
log
wangqinghua committed
}