博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

亚控KingFusion工业库查询数据处理

Posted on 2021-12-22 11:45  XXLINF  阅读(123)  评论(0)    收藏  举报

亚控KingFusion工业库查询数据处理

//时间分段
function dtArr(DT) {
    let st = (new Date(DT[0])).getTime(),
        et = (new Date(DT[1])).getTime();
    let re = [];
    let i = 0;
    while (st + i * DT[2] < et) {
        re.push(st + i * DT[2]);
        // re.push($Function.dateFormat('YYYY-mm-dd HH:MM:SS', new Date(st + i * DT[2])));
        i++;
    }
    re.push(et);
    // re.push($Function.dateFormat('YYYY-mm-dd HH:MM:SS', new Date(et)));

    console.log('时间分段:', re);
    return re;
}

// 分段查询
// ghdkSubsection
var ghdkSubsection = function() {
    let DT = $Function.DateTimeCalculation('', "CD");
    DT.push(3600000 * 24); //查询时间间隔ms
    let par = {
        dataSourceName: 'KH',
        tagNames: ['SSYJN_COD1', 'SSYJN_COD2', 'SSYJN_NH3', 'SSYJN_SumP', 'SSYJN_SumN', 'SSYJN_PH'],
        startTime: DT[0],
        endTime: DT[1],
        queryType: 1,
        samplingInterval: DT[2],
    };

    GetHistoryDatasKH351(
        par.dataSourceName,
        par.tagNames,
        par.startTime,
        par.endTime,
        par.queryType,
        function(data) {
            // optionRadar(dataStatistics(data, DT));
            console.log('分组结果:', dataStatistics(data, DT));
        },
        par.samplingInterval
    );
};

//数据统计
//返回查询结果集的最大值、最小值、平均值
var dataStatistics = function(data, DT) {
    console.log('data:', data);
    let spitTime = dtArr(DT);
    let ret = {};
    let tagCount = data.Body.length;
    for (let i = 0; i < tagCount; i++) {
        let val = [];
        let items = data.Body[i].records[4];
        let itemsLen = items.length;
        let flag = [];

        for (let j = 0; j < itemsLen; j++) {
            let tp = (new Date(items[j][2])).getTime();
            let index;
            for (let k = 1; k < spitTime.length; k++) {
                if (tp < spitTime[k]) {
                    index = k - 1;
                    break;
                }
            }

            if (items[j][1] === 'Good') {
                if (flag[index] === undefined) {
                    val[index] = {
                        max: items[j][0],
                        min: items[j][0],
                        sum: items[j][0],
                        avg: items[j][0],
                        startTime: $Function.dateFormat('YYYY-mm-dd HH:MM:SS', new Date(spitTime[index])),
                        endTime: $Function.dateFormat('YYYY-mm-dd HH:MM:SS', new Date(spitTime[index + 1])),
                        count: 1
                    };
                    flag[index] = true;
                } else {
                    val[index].max = val[index].max > items[j][0] ? val[index].max : items[j][0];
                    val[index].min = val[index].min < items[j][0] ? val[index].min : items[j][0];
                    val[index].sum += items[j][0];
                    val[index].count++;
                    val[index].avg = val[index].sum / val[index].count;
                }
            }
        }
        if (val.length > 0) {
            ret[data.Body[i].records[0]] = val;
        }
    }
    console.log('ret:', ret);
    return ret;
};



ghdkSubsection();