Skip to content
resource-usabil.component.ts 8.36 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, OnInit} from '@angular/core';
import {AnalysisService} from '../analysis.service';
import {NzMessageService} from 'ng-zorro-antd';
import {DatePipe} from '@angular/common';
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-usabil',
    templateUrl: './resource-usabil.component.html',
    styles: []
wangqinghua's avatar
log
wangqinghua committed
})
export class ResourceUsabilComponent implements OnInit {

wangqinghua's avatar
wangqinghua committed
    startTime;
    endTime;
wangqinghua's avatar
wangqinghua committed
    timeType = '1';
wangqinghua's avatar
wangqinghua committed
    isLoading = false;
wangqinghua's avatar
log
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    chartTopOption;
    topList;
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

    chartLastOption;
    lastList;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    obj = {
wangqinghua's avatar
wangqinghua committed
        timeType:this.timeType,
wangqinghua's avatar
wangqinghua committed
        type: '',
        groupid: '',
        startTime: '',
        endTime: ''
    }
    ;
    groupid;
    groupList;

wangqinghua's avatar
wangqinghua committed
    isDownload = false;

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

    ngOnInit() {
        const today = new Date().getTime();
        this.obj.startTime = this.datePipe.transform(today, 'yyyy-MM-dd') + ' 00:00:00';
        this.obj.endTime = this.datePipe.transform(today, 'yyyy-MM-dd') + ' 23:59:59';
        this.getGroup();
    }

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

wangqinghua's avatar
wangqinghua committed
    //获取Top图表
    getTopEcharts() {
wangqinghua's avatar
wangqinghua committed
        this.obj.type = 'top';
        this.analysisSer.findFailureRate(this.obj).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;
                        this.topList = res.data;
                        this.setTopEcharts();
wangqinghua's avatar
wangqinghua committed
                    } else {
wangqinghua's avatar
wangqinghua committed
                        this.data.left = true;
                        this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
                        this.message.warning('可用性TOP暂无数据');
wangqinghua's avatar
wangqinghua committed
                    }
wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.message.error(res.errMsg);
wangqinghua's avatar
wangqinghua committed
                }
wangqinghua's avatar
wangqinghua committed
            }
        );
    }

wangqinghua's avatar
wangqinghua committed
    //设置top图表
wangqinghua's avatar
wangqinghua committed
    setTopEcharts() {
wangqinghua's avatar
wangqinghua committed
        this.chartTopOption = {
wangqinghua's avatar
wangqinghua committed
            title: {
                text: '可用性TOP 10'
wangqinghua's avatar
wangqinghua committed
            },
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
                formatter: '{b} : {c}%'
wangqinghua's avatar
wangqinghua committed
            },
wangqinghua's avatar
wangqinghua committed
            xAxis: {
                type: 'category',
wangqinghua's avatar
wangqinghua committed
                data: this.topList.map(e => {
wangqinghua's avatar
wangqinghua committed
                    return e.name;
wangqinghua's avatar
wangqinghua committed
                }),

wangqinghua's avatar
wangqinghua committed
            },
            yAxis: {
wangqinghua's avatar
wangqinghua committed
                type: 'value',
                axisLabel: {
                    show: true,
                    interval: 'auto',
                    formatter: '{value} %'
wangqinghua's avatar
wangqinghua committed
                },
wangqinghua's avatar
wangqinghua committed
            },
            series: [{
wangqinghua's avatar
wangqinghua committed
                name: '可用性TOP 10',
wangqinghua's avatar
wangqinghua committed
                data: this.topList.map(e => {
wangqinghua's avatar
wangqinghua committed
                    let m = Math.pow(10, 2);
                    const num = Math.round(e.value * m) / m;
                    return num *100;
wangqinghua's avatar
wangqinghua committed
                }),
                type: 'bar'
            }]
        };
wangqinghua's avatar
wangqinghua committed
        this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
    }

    //获取last图表
    getLastEcharts() {
        this.obj.type = 'last';
        this.analysisSer.findFailureRate(this.obj).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;
                        this.lastList = res.data;
                        this.setLastEcharts();
wangqinghua's avatar
wangqinghua committed
                    } else {
wangqinghua's avatar
wangqinghua committed
                        this.data.right = true;
                        this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
                        this.message.warning('可用性Last暂无数据');
wangqinghua's avatar
wangqinghua committed
                    }

wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.message.error(res.errMsg);
wangqinghua's avatar
wangqinghua committed
                }
            }
        );
    }

    //设置last图表
wangqinghua's avatar
wangqinghua committed
    setLastEcharts() {
wangqinghua's avatar
wangqinghua committed
        this.chartLastOption = {
wangqinghua's avatar
wangqinghua committed
            title: {
                text: '可用性LAST 10'
wangqinghua's avatar
wangqinghua committed
            },
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
                formatter: '{b} : {c}%'
wangqinghua's avatar
wangqinghua committed
            },
wangqinghua's avatar
wangqinghua committed
            xAxis: {
                type: 'category',
wangqinghua's avatar
wangqinghua committed
                data: this.lastList.map(e => {
wangqinghua's avatar
wangqinghua committed
                    return e.name;
wangqinghua's avatar
wangqinghua committed
            },
            yAxis: {
wangqinghua's avatar
wangqinghua committed
                type: 'value',
                axisLabel: {
                    show: true,
                    interval: 'auto',
                    formatter: '{value} %'
wangqinghua's avatar
wangqinghua committed
                },
wangqinghua's avatar
wangqinghua committed
            },
            series: [{
wangqinghua's avatar
wangqinghua committed
                name: '可用性LAST 10',
wangqinghua's avatar
wangqinghua committed
                data: this.lastList.map(e => {
wangqinghua's avatar
wangqinghua committed
                    let m = Math.pow(10, 2);
                    const num = Math.round(e.value * m) / m;
                    return num *100;
wangqinghua's avatar
wangqinghua committed
                }),
                type: 'bar'
            }]
        };
wangqinghua's avatar
wangqinghua committed
        this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //时间改变
    changeType() {
        const nowDate = new Date().getTime();
        let day1, day2;
        switch (this.timeType) {
            case'1': {
                this.obj.startTime = this.datePipe.transform(nowDate, 'yyyy-MM-dd') + ' 00:00:00';
                this.obj.endTime = this.datePipe.transform(nowDate, 'yyyy-MM-dd') + ' 23:59:59';
                break;
            }
            case'2': {
                day1 = nowDate - 1 * 24 * 60 * 60 * 1000;
                this.obj.startTime = this.datePipe.transform(day1, 'yyyy-MM-dd') + ' 00:00:00';
                this.obj.endTime = this.datePipe.transform(day1, 'yyyy-MM-dd') + ' 23:59:59';
                break;
            }
            case'3': {
                day1 = nowDate - 3 * 24 * 60 * 60 * 1000;
wangqinghua's avatar
wangqinghua committed
                day2 = nowDate;
wangqinghua's avatar
wangqinghua committed
                this.obj.startTime = this.datePipe.transform(day1, 'yyyy-MM-dd') + ' 00:00:00';
                this.obj.endTime = this.datePipe.transform(day2, 'yyyy-MM-dd') + ' 23:59:59';
                break;
            }
            case'4': {
                day1 = nowDate - 7 * 24 * 60 * 60 * 1000;
wangqinghua's avatar
wangqinghua committed
                day2 = nowDate;
wangqinghua's avatar
wangqinghua committed
                this.obj.startTime = this.datePipe.transform(day1, 'yyyy-MM-dd') + ' 00:00:00';
                this.obj.endTime = this.datePipe.transform(day2, 'yyyy-MM-dd') + ' 23:59:59';
                break;
            }
            case'5': {
                break;
            }
        }
    }

    //搜索
    search() {
wangqinghua's avatar
wangqinghua committed
        this.isLoading = true;
wangqinghua's avatar
wangqinghua committed
        if (this.timeType == '5') {
            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.getLastEcharts();
        this.getTopEcharts();
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
log
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //导出 可用性
wangqinghua's avatar
wangqinghua committed
    downLoadCommon() {
wangqinghua's avatar
wangqinghua committed
        this.isDownload = true;
        const data = {
            groupid: this.obj.groupid,
            startTime: this.obj.startTime,
            endTime: this.obj.endTime,
        };
        this.analysisSer.findFailureRateImport(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
                    this.workSer.downloadTemplate('failureRate', res.data).subscribe(
                        (data) => {
wangqinghua's avatar
wangqinghua committed
                            this.isDownload = 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.isDownload = false;
                    this.message.error(res.errMsg);
                }
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
log
wangqinghua committed
}