Skip to content
basi-check.component.ts 13.2 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';
wangqinghua's avatar
wangqinghua committed
import {OverAllService} from '../../overAll/overAll.service';
wangqinghua's avatar
wangqinghua committed
import {
wangqinghua's avatar
wangqinghua committed
    FormBuilder, FormControl,
wangqinghua's avatar
wangqinghua committed
    FormGroup,
    Validators
} from '@angular/forms';
wangqinghua's avatar
wangqinghua committed
import {BasicKeyComponent} from '../basic-key/basic-key.component';
import {NzMessageService} from 'ng-zorro-antd';
import {NewTypeComponent} from '../new-type/new-type.component';
wangqinghua's avatar
wangqinghua committed

@Component({
wangqinghua's avatar
wangqinghua committed
    selector: 'smart-basi-check',
    templateUrl: './basi-check.component.html',
wangqinghua's avatar
wangqinghua committed
    styles: [
            `.tag-button[disabled],
        .tag-button {
            width: 80%;
            height: 30px;
            color: rgba(0, 0, 0, 0.65);
            background-color: #fff;
            border-color: #d9d9d9;
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed

        :host ::ng-deep .ant-tabs-nav .ant-tabs-tab-disabled {
            color: rgba(0, 0, 0, .65);
wangqinghua's avatar
wangqinghua committed
        }
        `
wangqinghua's avatar
wangqinghua committed
    ]
wangqinghua's avatar
wangqinghua committed
})
export class BasiCheckComponent implements OnInit {
wangqinghua's avatar
wangqinghua committed
    @ViewChild('basicKey') basicKey: BasicKeyComponent;
    @ViewChild('newType') newType: NewTypeComponent;
wangqinghua's avatar
wangqinghua committed
    @Output() done = new EventEmitter<any>();
wangqinghua's avatar
wangqinghua committed

    title;
wangqinghua's avatar
wangqinghua committed
    isCheck = false;
wangqinghua's avatar
wangqinghua committed
    nzSize = 'large';
wangqinghua's avatar
wangqinghua committed
    hostId;   //主机ID
wangqinghua's avatar
wangqinghua committed
    hostName;   //主机name
wangqinghua's avatar
wangqinghua committed
    itemId;  //监控项id
wangqinghua's avatar
wangqinghua committed
    interfaceList: any[];
wangqinghua's avatar
wangqinghua committed
    valueMapList = [];
wangqinghua's avatar
wangqinghua committed
    validateForm: FormGroup;
wangqinghua's avatar
wangqinghua committed
    checkList;  //监测点分类
    interval;    //间隔时长
wangqinghua's avatar
wangqinghua committed
    conditionType = 'commonly';
wangqinghua's avatar
wangqinghua committed
    faultConditionList = [
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    ];   //危险阀值list
    conditionList = [
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    ];    //故障list
wangqinghua's avatar
wangqinghua committed
    tabNum: number;
wangqinghua's avatar
wangqinghua committed
    triggerObj = {
wangqinghua's avatar
wangqinghua committed
        condition: '',
        faultCondition: '',
        itemName: ''
wangqinghua's avatar
wangqinghua committed
    };
wangqinghua's avatar
wangqinghua committed
    triggerConditionId;
    triggerFaultConditionId;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    constructor(private overAllSer: OverAllService, private fb: FormBuilder,
                private message: NzMessageService) {
    }

    ngOnInit() {
wangqinghua's avatar
wangqinghua committed
        this.initForm();
wangqinghua's avatar
wangqinghua committed
        this.getValuemap();
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    initForm() {
wangqinghua's avatar
wangqinghua committed
        this.tabNum = 0;
wangqinghua's avatar
wangqinghua committed
        this.validateForm = this.fb.group({
wangqinghua's avatar
wangqinghua committed
            hostid: [this.hostId],
            name: [null, [Validators.required]],
            interfaceid: [null, [Validators.required]],
            key_: [null, [Validators.required]],
            value_type: [null, [Validators.required]],
            type: [null, [Validators.required]],
            units: [null],
            formula: [null, [Validators.required]],
            history: ['3600'],
            trends: [null],
            valuemapid: ['0'],
            delay: [null, [Validators.required]],
            snmp_oid: [null],
            snmp_community: ['public'],
xiaowenjie's avatar
xiaowenjie committed
            applications: [null],
wangqinghua's avatar
wangqinghua committed
        });
        this.triggerObj = {
wangqinghua's avatar
wangqinghua committed
            condition: '',
            faultCondition: '',
            itemName: ''
wangqinghua's avatar
wangqinghua committed
        };
wangqinghua's avatar
wangqinghua committed
    }

    //新增
wangqinghua's avatar
wangqinghua committed
    showAddModal(hostId, hostName) {
wangqinghua's avatar
wangqinghua committed
        this.title = '添加监测点';
        this.isCheck = true;
        this.hostId = hostId;
wangqinghua's avatar
wangqinghua committed
        this.hostName = hostName;
wangqinghua's avatar
wangqinghua committed
        //主机接口
        this.overAllSer.findDetailed(this.hostId).subscribe(
            (res) => {
                this.interfaceList = res.data[0].interfaces;
            }
        );
        this.getItemType();
    }

wangqinghua's avatar
wangqinghua committed
    //映射值
wangqinghua's avatar
wangqinghua committed
    getValuemap() {
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.findValuemap().subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.valueMapList = res.data;
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
    //编辑
wangqinghua's avatar
wangqinghua committed
    showEditModal(hostId, id, hostName) {
        this.title = '编辑监测点';
wangqinghua's avatar
wangqinghua committed
        this.hostId = hostId;
        this.isCheck = true;
wangqinghua's avatar
wangqinghua committed
        this.itemId = id;
wangqinghua's avatar
wangqinghua committed
        this.hostName = hostName;
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.findItemDetail(id).subscribe(
            (res) => {
wangqinghua's avatar
wangqinghua committed
                const data = res.data[0];
                data.type += '';
wangqinghua's avatar
wangqinghua committed
                data.interfaceid += '';
                data.value_type += '';
wangqinghua's avatar
wangqinghua committed
                this.validateForm.patchValue(data);
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
                data.triggers.forEach((value) => {
wangqinghua's avatar
wangqinghua committed
                    let str = value.expression;
                    let equal = [];
                    let arr = [];
wangqinghua's avatar
wangqinghua committed
                    let con = '';
                    let a = str.split(' ');
                    a.forEach((e) => {   // 符号数组
                        let index1 = e.indexOf('}');
                        if (e == 'and' || e == 'or') {
wangqinghua's avatar
wangqinghua committed
                            equal.push(e);
                        }
wangqinghua's avatar
wangqinghua committed
                        if (index1 > -1) {
                            let f = e.substring(index1 + 1, e.length);
                            con += '{' + this.hostName + ':' + this.validateForm.value.key_ + '.last()}' + f + ' ';
                        } else {
                            con += e + ' ';
wangqinghua's avatar
wangqinghua committed
                        }
                    });
wangqinghua's avatar
wangqinghua committed
                    let c = str.replace(/and/g, '').replace(/or/g, '').split('  ');
                    c.forEach((val, index) => {
                        let index1 = val.indexOf('}');
                        let d = val.substring(index1 + 1, val.length);
wangqinghua's avatar
wangqinghua committed
                        let data;
wangqinghua's avatar
wangqinghua committed
                        if (index > 0) {
wangqinghua's avatar
wangqinghua committed
                            data = {
wangqinghua's avatar
wangqinghua committed
                                and: ' ' + equal[index - 1] + ' ',
wangqinghua's avatar
wangqinghua committed
                                equal: d[0],
wangqinghua's avatar
wangqinghua committed
                                value: d.substring(1, c.length),
                            };
                        } else {
wangqinghua's avatar
wangqinghua committed
                            data = {
                                equal: d[0],
wangqinghua's avatar
wangqinghua committed
                                value: d.substring(1, c.length),
                            };
wangqinghua's avatar
wangqinghua committed
                        }
                        arr.push(data);
                    });
wangqinghua's avatar
wangqinghua committed
                    if (value.priority == 2 || value.priority == 3) {     //危险
wangqinghua's avatar
wangqinghua committed
                        this.faultConditionList = arr;
                        this.triggerObj.condition = con;
wangqinghua's avatar
wangqinghua committed
                        this.triggerConditionId = value.triggerid;
wangqinghua's avatar
wangqinghua committed
                    }
wangqinghua's avatar
wangqinghua committed
                    if (value.priority == 4 || value.priority == 5) {     //故障
wangqinghua's avatar
wangqinghua committed
                        this.conditionList = arr;
                        this.triggerObj.faultCondition = con;
wangqinghua's avatar
wangqinghua committed
                        this.triggerFaultConditionId = value.triggerid;
wangqinghua's avatar
wangqinghua committed
                    }
                });

wangqinghua's avatar
wangqinghua committed
            }
        );
wangqinghua's avatar
wangqinghua committed

        //主机接口
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.findDetailed(this.hostId).subscribe(
            (res) => {
                this.interfaceList = res.data[0].interfaces;
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
        this.getItemType();
    }

    //获取监测点分类
wangqinghua's avatar
wangqinghua committed
    getItemType() {
wangqinghua's avatar
wangqinghua committed
        //监测点分类
        const data = {
wangqinghua's avatar
wangqinghua committed
            'hostids': [this.hostId]
wangqinghua's avatar
wangqinghua committed
        };
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.findItemType(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed
                this.checkList = res.data;
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

    //添加
wangqinghua's avatar
wangqinghua committed
    handleCheckOk() {
wangqinghua's avatar
wangqinghua committed
        for (let i in this.validateForm.controls) {
            this.validateForm.controls[i].markAsDirty();
            this.validateForm.controls[i].updateValueAndValidity();
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
        if (this.validateForm.invalid) {
            this.message.error('请输入必填信息');
wangqinghua's avatar
wangqinghua committed
            return false;
        }
xiaowenjie's avatar
xiaowenjie committed
        this.validateForm.value.applications = [this.validateForm.value.applications];
wangqinghua's avatar
wangqinghua committed
        this.validateForm.value.hostid = this.hostId;
wangqinghua's avatar
wangqinghua committed
        if (this.title == '添加监测点') {
wangqinghua's avatar
wangqinghua committed
            this.create();
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
        if (this.title == '编辑监测点') {
wangqinghua's avatar
wangqinghua committed
            this.update();
wangqinghua's avatar
wangqinghua committed
        }
    }

wangqinghua's avatar
wangqinghua committed
    create() {
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.create(this.validateForm.value).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.message.success('创建监测点成功');
wangqinghua's avatar
wangqinghua committed
                    this.done.emit();
wangqinghua's avatar
wangqinghua committed
                    this.tabNum = 1;
wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.message.error(res.errMsg);
wangqinghua's avatar
wangqinghua committed
                }
            },
            (err) => {
wangqinghua's avatar
wangqinghua committed
                this.message.error('系统错误');
wangqinghua's avatar
wangqinghua committed
            }
        );
    }

wangqinghua's avatar
wangqinghua committed
    //修改监控项
wangqinghua's avatar
wangqinghua committed
    update() {
        this.validateForm.addControl('itemid', new FormControl(this.itemId));
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.itemUpdata(this.validateForm.value).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.message.success('修改监测点成功');
wangqinghua's avatar
wangqinghua committed
                    this.done.emit();
wangqinghua's avatar
wangqinghua committed
                    this.tabNum = 1;
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
            (err) => {
wangqinghua's avatar
wangqinghua committed
                this.message.error('系统错误');
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

    handleCheckCancel(): void {
        this.isCheck = false;
wangqinghua's avatar
wangqinghua committed
        this.initForm();
wangqinghua's avatar
wangqinghua committed
    }

    //键值查询
wangqinghua's avatar
wangqinghua committed
    showKeymodal() {
wangqinghua's avatar
wangqinghua committed
        this.basicKey.showKeyModal();
    }

    //新增分类
wangqinghua's avatar
wangqinghua committed
    showTypeModal() {
        this.newType.showModal('新建分类');
wangqinghua's avatar
wangqinghua committed
    }

    //添加分类
wangqinghua's avatar
wangqinghua committed
    addItemType(data) {
wangqinghua's avatar
wangqinghua committed
        const obj = {
wangqinghua's avatar
wangqinghua committed
            hostid: this.hostId,
            name: data
        };
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.createItemType(obj).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.message.success('添加成功');
wangqinghua's avatar
wangqinghua committed
                    this.getItemType();
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
    }

    //危险add
wangqinghua's avatar
wangqinghua committed
    addFault() {
        const demo = {
wangqinghua's avatar
wangqinghua committed
            and: ' and ',
wangqinghua's avatar
wangqinghua committed
            equal: '=',
            value: '',
wangqinghua's avatar
wangqinghua committed
        };
        this.faultConditionList.push(demo);
wangqinghua's avatar
wangqinghua committed
    }

    //故障add
wangqinghua's avatar
wangqinghua committed
    addcondition() {
wangqinghua's avatar
wangqinghua committed
        const demo = {
wangqinghua's avatar
wangqinghua committed
            and: ' and ',
wangqinghua's avatar
wangqinghua committed
            equal: '=',
            value: '',
wangqinghua's avatar
wangqinghua committed
        };
wangqinghua's avatar
wangqinghua committed
        this.conditionList.push(demo);
    }

    //危险delete
wangqinghua's avatar
wangqinghua committed
    deleteFault(index) {
        this.faultConditionList.splice(index, 1);
wangqinghua's avatar
wangqinghua committed
    }

    //故障delete
wangqinghua's avatar
wangqinghua committed
    deleteCondition(index) {
        this.conditionList.splice(index, 1);
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    getKey(keyValue): void {
wangqinghua's avatar
wangqinghua committed
        const d = {
wangqinghua's avatar
wangqinghua committed
            key_: keyValue
        };
wangqinghua's avatar
wangqinghua committed
        this.validateForm.patchValue(d);
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

    //阈值--start
wangqinghua's avatar
wangqinghua committed
    saveTrigger() {
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            condition: '',
            faultCondition: ''
wangqinghua's avatar
wangqinghua committed
        };
        if (this.conditionType == 'commonly') {   //常规
            this.conditionList.forEach(res => {
wangqinghua's avatar
wangqinghua committed
                if(!res.and){
                    res.and = "";
                }
                data.condition +=  res.and + '{' + this.hostName + ':' + this.validateForm.value.key_ + '.last()}' + res.equal + '' + res.value ;
            });
wangqinghua's avatar
wangqinghua committed
            this.faultConditionList.forEach(res => {
wangqinghua's avatar
wangqinghua committed
                if(!res.and){
                    res.and = "";
                }
                data.faultCondition +=  res.and + '{' + this.hostName + ':' + this.validateForm.value.key_ + '.last()}' + res.equal + '' + res.value ;
wangqinghua's avatar
wangqinghua committed
            });
        } else {           //高级
wangqinghua's avatar
wangqinghua committed
            data.condition = this.triggerObj.condition;
            data.faultCondition = this.triggerObj.faultCondition;
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
        if(!this.checkFun()){
            this.message.error("请输入阈值");
            return false;
        }
        if(this.conditionList.length == 0 && this.faultConditionList.length == 0){
            this.isCheck = false;
            this.initForm();
            return false;
        }
wangqinghua's avatar
wangqinghua committed
        if (this.title == '添加监测点') {
wangqinghua's avatar
wangqinghua committed
            this.createTrigger(data);
        }
wangqinghua's avatar
wangqinghua committed
        if (this.title == '编辑监测点') {
wangqinghua's avatar
wangqinghua committed
            this.updateTrigger(data);
        }
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //校验是否填值
    checkFun(){
        let error = true;
        this.conditionList.map(e=>{
            if(e.value.length > 0){
                console.log(e.value)
            }else{
                error = false;
            }
        });
        this.faultConditionList.map(e=>{
            if(e.value.length > 0){
                console.log(e.value)
            }else{
                error = false;
            }
        });

        return error;
    }

wangqinghua's avatar
wangqinghua committed
    //1.创建阈值
wangqinghua's avatar
wangqinghua committed
    createTrigger(data) {
wangqinghua's avatar
wangqinghua committed
        const res = {
wangqinghua's avatar
wangqinghua committed
            itemName: this.validateForm.value.name,
            faultCondition: data.faultCondition,
            condition: data.condition
wangqinghua's avatar
wangqinghua committed
        };
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.createTrigger(res).subscribe(
wangqinghua's avatar
wangqinghua committed
            (response) => {
                if (response.errCode == 10000) {
                    this.message.success('创建阈值成功');
wangqinghua's avatar
wangqinghua committed
                    this.initForm();
                    this.isCheck = false;
wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.message.error(response.errMsg);
                }
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

    //2.修改阈值
wangqinghua's avatar
wangqinghua committed
    updateTrigger(data) {
wangqinghua's avatar
wangqinghua committed
        const res = {
wangqinghua's avatar
wangqinghua committed
            faultCondition: {
                itemName: this.validateForm.value.name,
                faultCondition: data.faultCondition,
                triggerid: this.triggerFaultConditionId
            },
            condition: {
                itemName: this.validateForm.value.name,
                condition: data.condition,
                triggerid: this.triggerConditionId
            }
wangqinghua's avatar
wangqinghua committed
        };
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.updateTrigger(res).subscribe(res => {
            if (res.errCode == 10000) {
                this.message.success('修改阈值成功');
wangqinghua's avatar
wangqinghua committed
                this.initForm();
                this.isCheck = false;
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

wangqinghua's avatar
wangqinghua committed
    //阈值--end

wangqinghua's avatar
wangqinghua committed
}