function addzero(num) { return num < 10 ? '0' + num : num; } /** * 取得異常資料 by baja * @param {any} startDate_millisecond * @param {any} endDate_millisecond * @param {any} isRecover * @param {any} isAck * @param {any} alarmClass * @param {any} callback */ function getAlarmByBaja(startDate_millisecond, endDate_millisecond, isRecover, isAck, alarmClass, callback) { let _sourceTmp; var _result = ""; var _ss = ""; var _bfName = ""; var _sourceName = ""; var _index = 0; var _recoverState = isRecover ? "!= null" : "= null" var _ackState = isAck ? "= 1" : "!= 1"; require(['baja!'], function (baja) { baja.Ord.make("local:|foxs:|alarm:|bql:select timestamp, ackState, alarmClass, alarmClassDisplayName, alarmValue, alarmData, alarmData.sourceName, uuid, alarmData.msgText, alarmData.numericValue, alarmData.presentValue, alarmData.status, alarmData.toState, normalTime from openAlarms where alarmClass = '" + alarmClass + "' and timestamp.millis > " + startDate_millisecond + " and timestamp.millis < " + endDate_millisecond + " and normalTime " + _recoverState + " order by timestamp asc").get() .then(function (table) { return table.cursor({ each: function (record) { _sourceTmp = (record.get('alarmData').get('sourceName')).toString().split('_'); _bfName = _sourceTmp[1] + "-" + _sourceTmp[4]; _sourceName = _sourceTmp[7] + "-" + _sourceTmp[8]; if (_index == 0) _ss += '{"buildingFloorName_zh":"' + _bfName + '", "uuid":"' + record.get('uuid') + '", "timestamp":"' + record.get('timestamp') + '", "alarmClass":"' + record.get('alarmClass') + '", "sourceName_zh":"' + _sourceName + '", "msgText":"' + record.get('alarmData').get('msgText') + '", "ackState":"' + record.get('ackState') + '", "normalTime":"' + record.get('normalTime') + '"}'; else _ss += ',{"buildingFloorName_zh":"' + _bfName + '", "uuid":"' + record.get('uuid') + '", "timestamp":"' + record.get('timestamp') + '", "alarmClass":"' + record.get('alarmClass') + '", "sourceName_zh":"' + _sourceName + '", "msgText":"' + record.get('alarmData').get('msgText') + '", "ackState":"' + record.get('ackState') + '", "normalTime":"' + record.get('normalTime') + '"}'; _index++; }, after: function () { _result += '{' + '"count": ' + _index + ', "data":['; _result += _ss; _result += ']}'; if (typeof callback === 'function') { callback(_result); } } }); }); }); } /** * 取得單一設備最新10筆異常資料 by baja * @param {any} devicePath * @param {any} callback */ function getOneDeviceAlarmTop10ByBaja(devicePath, callback) { var _result = ""; var _ss = ""; var _occurrenceTime = ""; var _normalTime = ""; var _index = 0; //{ "count":2,"data": [{ "time": "2022/11/14 15:00:00", "errId": "0001", "ackCheck": "未確認", "errReason": "燈泡故障" }, { "time": "2022/11/14 15:00:00", "errId": "0002", "ackCheck": "未確認", "errReason": "燈泡故障" }]} require(['baja!'], function (baja) { baja.Ord.make("local:|foxs:|alarm:|bql:select top 10 timestamp, ackState, alarmData, alarmData.sourceName, sourceState, uuid, alarmData.msgText, normalTime where alarmData.sourceName like '%" + devicePath + "%' order by timestamp desc").get() .then(function (table) { return table.cursor({ each: function (record) { _occurrenceTime = ""; _normalTime = ""; var _resultUuid = record.get('uuid').toString().split("-");//43dc7846-bd96-4be2-ab35-f11aec729c60 var _timestampTemp = new Date(record.get('timestamp').toString()); _occurrenceTime += _timestampTemp.getFullYear().toString() + "-" + addzero(_timestampTemp.getMonth() + 1).toString() + "-" + addzero(_timestampTemp.getDate()).toString() + " " + addzero(_timestampTemp.getHours()).toString() + ":" + addzero(_timestampTemp.getMinutes()).toString() + ":" + addzero(_timestampTemp.getSeconds()).toString(); //var _occurrenceTime = _timestamp.format("yyyy-MM-dd hh:mm:ss");//.toLocaleString(); var _normaltime = new Date(record.get('normalTime').toString()); _normalTime += _normaltime.getFullYear().toString() + "-" + addzero(_normaltime.getMonth() + 1).toString() + "-" + addzero(_normaltime.getDate()).toString() + " " + addzero(_normaltime.getHours()).toString() + ":" + addzero(_normaltime.getMinutes()).toString() + ":" + addzero(_normaltime.getSeconds()).toString(); var _msgText = record.get('alarmData').get('msgText') == 1 ? _occurrenceTime : "未確認"; if (_index == 0) _ss += '{"uuid":"' + _resultUuid[0] + '", "msgText":"' + _msgText + '", "ackState":"' + record.get('ackState') + '", "timestamp":"' + _occurrenceTime + '", "normalTime":"' + _normalTime + '"}'; else _ss += ',{"uuid":"' + _resultUuid[0] + '", "msgText":"' + _msgText + '", "ackState":"' + record.get('ackState') + '", "timestamp":"' + _occurrenceTime + '", "normalTime":"' + _normalTime + '"}'; _index++; }, after: function () { _result += '{' + '"count": ' + _index + ', "data":['; _result += _ss + ']'; _result += '}'; if (typeof callback === 'function') { callback(_result); } } }); }); }); } /** * 在單一系統下,取得各個設備的異常狀態 * @param {any} systemPath * @param {any} callback */ function getOneSystemAlarmStateByBaja(systemPath, callback) { var _result = ""; var _ss = ""; var _index = 0; require(['baja!'], function (baja) { baja.Ord.make("local:|foxs:|alarm:|bql:select alarmData, alarmData.sourceName, sourceState, uuid where alarmData.sourceName like '%" + systemPath + "%' order by timestamp desc").get() .then(function (table) { return table.cursor({ each: function (record) { if (_index == 0) _ss += '{"uuid":"' + record.get('uuid') + '", "sourceName":"' + record.get('alarmData').get('sourceName') + '", "sourceState":"' + record.get('sourceState') + '"}'; else _ss += ',{"uuid":"' + record.get('uuid') + '", "sourceName":"' + record.get('alarmData').get('sourceName') + '", "sourceState":"' + record.get('sourceState') + '"}'; _index++; }, after: function () { _result += '{' + '"count": ' + _index + ', "data":['; _result += _ss; _result += ']}'; if (typeof callback === 'function') { callback(_result); } } }); }); }); }