Отчеты

Существует определенная специфика работы с отчетами. Все команды из раздела Отчеты кроме report/update_report могут быть выполнены только если сессия содержит результат выполнения отчета. Одновременно в сессии может быть выполнен только один отчет, поэтому если в ней содержатся результаты выполнения предыдущего отчета, перед выполнением следующего их следует удалить командой report/cleanup_result.

:!: Внимание! Для запуска данного примера на Wialon Kit во всех запросах следует заменить https://hst-api.wialon.host на https://kit-api.wialon.host, а для входа в систему использовать логин и пароль своей учетной записи или логин и пароль демо-пользователя: kitdemo kitdemo.

Выполнение отчета

В качестве примера выполним отчет «_Поездки,топливо (1)» для объекта Bavarian Tractor за интервал с 01.01.2013 00:00 по 20.01.2013 23:59. Для выполнения используется запрос exec_report:

https://hst-api.wialon.host/wialon/ajax.html?svc=report/exec_report&
	params={
		"reportResourceId":163266,
		"reportTemplateId":10,
		"reportObjectId":34868,
		"reportObjectSecId":0,
		"interval":{
			"from":1356984000,
			"to":1358711999,
			"flags":0
		}
	}&sid=<your_sid>

Результат выполнения:

{
    "reportResult": {
        "msgsRendered": 1,
        "stats": [
            ["Время в движении", "7:09:23"],
            ["Кол-во поездок", "120"],
            ["Количество остановок", "0"],
            ["Продолжительность стоянок", "19 дней 16:34:20"],
            ["Количество стоянок", "121"]
        ],
        "tables": [{
            "name": "unit_trips",
            "label": "Поездки без остановок",
            "flags": 4497,
            "rows": 16,
            "level": 2,
            "columns": 16,
            "header": ["№", "Дата", "Начало", "Нач. положение", "Конец", "Конеч. положение", "Водитель", "Длительность", "Моточасы", "Пробег", "Пробег (скорректированный)", "Ср. скорость", "Макс. скорость", "Кол-во поездок", "Нач. уровень", "Конеч. уровень"],
            "total": ["", "", "2013-01-01 17:36:58", "", "2013-01-20 18:26:50", "", "", "7:09:23", "0:00:00", "0.00 км", "0.00 км", "0 км\/ч", "118 км\/ч", "120", "0 л", "0 л"]
        }, {
            "name": "unit_stays",
            "label": "Стоянки",
            "flags": 272,
            "rows": 74,
            "level": 0,
            "columns": 5,
            "header": ["Начало", "Конец", "Длительность", "Положение", "Кол-во"],
            "total": ["2013-01-01 00:07:56", "2013-01-20 23:51:39", "19 дней 13:50:40", "", "74"]
        }],
        "attachments": [{
            "name": "График скорости и пробега",
            "type": "chart",
            "datasets": ["Скорость, км\/ч", "Абсолютный пробег", "Пробег в поездках"]
        }]
    },
    "reportLayer": {
        "name": "report unit_msgs",
        "bounds": [53.8326976, 27.2796096, 53.9644416, 27.6123168],
        "units": [{
            "id": 34868,
            "msgs": {
                "count": 6585,
                "first": {
                    "time": 1356984476,
                    "lat": 53.9077377319,
                    "lon": 27.5011463165
                },
                "last": {
                    "time": 1358711499,
                    "lat": 53.839679718,
                    "lon": 27.5609111786
                }
            },
            "mileage": 770003.067396,
            "max_speed": 118
        }]
    },
    "layerCount": 2
}

Выводы, которые можно сделать на основании полученного ответа:

  • «msgsRendered» равен 1, следовательно при выполнении отчета был создан слой с сообщениями;
  • отчет содержит одну таблицу статистики;
  • отчет содержит 2 таблицы, первая из которых многоуровневая, и максимальный уровень вложенности у нее 2;
  • отчет содержит одно приложение - график;
  • при построении слоя сообщений было использовано 6585 сообщений.

Получение данных из таблиц

Получить значения из таблиц отчета можно двумя способами. При первом используется запрос report/get_result_rows, который возвращает строки только верхнего уровня указанной таблицы. Если отчет многоуровневый, то строки более низкого уровня можно получить используя дополнительный запрос report/get_result_subrows. Во втором способе используется запрос report/select_result_rows, в результате выполнения которого возвращаемый JSON уже содержит вложенные строки.

Способ 1:

Получим первую строку таблицы «Поездки без остановок», которая идет под индексом 0 в массиве «tables».

https://hst-api.wialon.host/wialon/ajax.html?svc=report/get_result_rows&
	params={
		"tableIndex":0,
		"indexFrom":0,
		"indexTo":0
	}&sid=<your_sid>

Результат выполнения:

[{
    "n": 0,
    "i1": 108,
    "i2": 214,
    "t1": 1357047418,
    "t2": 1357056357,
    "d": 3,
    "c": ["1", "2013-01-01", {
        "t": "17:36:58",
        "y": 53.9097984,
        "x": 27.4998528
    }, {
        "t": "Берута ул., Минск",
        "y": 53.9097984,
        "x": 27.4998528
    }, {
        "t": "20:05:57",
        "y": 53.8847872,
        "x": 27.5675072
    }, {
        "t": "Маяковского ул., Минск",
        "y": 53.8847872,
        "x": 27.5675072
    }, "", "0:11:15", "0:00:00", "0.00 км", "0.00 км", "0 км\/ч", {
        "t": "72 км\/ч",
        "y": 53.9070656,
        "x": 27.5216608
    }, "3", "0 л", "0 л"]
}]

Параметр «d» равен 3, что говорит о том, что данная строка содержит три подстроки. Чтобы их получить нужно выполнить запрос вида:

https://hst-api.wialon.host/wialon/ajax.html?svc=report/get_result_subrows&
	params={
		"tableIndex":0,
		"rowIndex":0
	}&sid=<your_sid>

Результат выполнения:

[{
    "n": 0,
    "i1": 108,
    "i2": 118,
    "t1": 1357047418,
    "t2": 1357047581,
    "d": 0,
    "c": ["1.1", "", {
        "t": "17:36:58",
        "y": 53.9097984,
        "x": 27.4998528
    }, {
        "t": "Берута ул., Минск",
        "y": 53.9097984,
        "x": 27.4998528
    }, {
        "t": "17:39:41",
        "y": 53.9152448,
        "x": 27.4865568
    }, {
        "t": "Матусевича ул., Минск",
        "y": 53.9152448,
        "x": 27.4865568
    }, "", "0:02:43", "0:00:00", "0.00 км", "0.00 км", "0 км\/ч", {
        "t": "34 км\/ч",
        "y": 53.910112,
        "x": 27.495648
    }, "1", "0 л", "0 л"]
}, {
    "n": 1,
    "i1": 151,
    "i2": 169,
    "t1": 1357053985,
    "t2": 1357054222,
    "d": 0,
    "c": ["1.2", "", {
        "t": "19:26:25",
        "y": 53.9205888,
        "x": 27.492064
    }, {
        "t": "Данилы Сердича ул., 68, Минск",
        "y": 53.9205888,
        "x": 27.492064
    }, {
        "t": "19:30:22",
        "y": 53.9094592,
        "x": 27.4950912
    }, {
        "t": "ул. Притыцкого, Ратомка",
        "y": 53.9094592,
        "x": 27.4950912
    }, "", "0:03:57", "0:00:00", "0.00 км", "0.00 км", "0 км\/ч", {
        "t": "41 км\/ч",
        "y": 53.9177472,
        "x": 27.4873152
    }, "1", "0 л", "0 л"]
}, {
    "n": 2,
    "i1": 200,
    "i2": 214,
    "t1": 1357056082,
    "t2": 1357056357,
    "d": 0,
    "c": ["1.3", "", {
        "t": "20:01:22",
        "y": 53.8974912,
        "x": 27.5369984
    }, {
        "t": "Клары Цеткин ул., Минск",
        "y": 53.8974912,
        "x": 27.5369984
    }, {
        "t": "20:05:57",
        "y": 53.8847872,
        "x": 27.5675072
    }, {
        "t": "Маяковского ул., Минск",
        "y": 53.8847872,
        "x": 27.5675072
    }, "", "0:04:35", "0:00:00", "0.00 км", "0.00 км", "0 км\/ч", {
        "t": "62 км\/ч",
        "y": 53.8868928,
        "x": 27.5656
    }, "1", "0 л", "0 л"]
}]

Способ 2:

После выполнения отчета стало известно, что максимальный уровень вложенности у таблицы «Поездки без остановок» равен 2. Следовательно выполним запрос, который вернет первую строку со всеми подстроками, уровень вложенности которых будет меньше либо равен 2:

https://hst-api.wialon.host/wialon/ajax.html?svc=report/select_result_rows&
	params={
		"tableIndex":0,
		"config":{
			"type":"range",
			"data":{
				"from":0,
				"to":0,
				"level":2
			}
		}
	}&sid=<your_sid>

Результат выполнения:

[{
    "n": 0,
    "i1": 108,
    "i2": 214,
    "t1": 1357047418,
    "t2": 1357056357,
    "d": 3,
    "c": ["1", "2013-01-01", {
        "t": "17:36:58",
        "y": 53.9097984,
        "x": 27.4998528
    }, {
        "t": "Берута ул., Минск",
        "y": 53.9097984,
        "x": 27.4998528
    }, {
        "t": "20:05:57",
        "y": 53.8847872,
        "x": 27.5675072
    }, {
        "t": "Маяковского ул., Минск",
        "y": 53.8847872,
        "x": 27.5675072
    }, "", "0:11:15", "0:00:00", "0.00 км", "0.00 км", "0 км\/ч", {
        "t": "72 км\/ч",
        "y": 53.9070656,
        "x": 27.5216608
    }, "3", "0 л", "0 л"],
    "r": [{
        "n": 0,
        "i1": 108,
        "i2": 118,
        "t1": 1357047418,
        "t2": 1357047581,
        "d": 0,
        "c": ["1.1", "", {
            "t": "17:36:58",
            "y": 53.9097984,
            "x": 27.4998528
        }, {
            "t": "Берута ул., Минск",
            "y": 53.9097984,
            "x": 27.4998528
        }, {
            "t": "17:39:41",
            "y": 53.9152448,
            "x": 27.4865568
        }, {
            "t": "Матусевича ул., Минск",
            "y": 53.9152448,
            "x": 27.4865568
        }, "", "0:02:43", "0:00:00", "0.00 км", "0.00 км", "0 км\/ч", {
            "t": "34 км\/ч",
            "y": 53.910112,
            "x": 27.495648
        }, "1", "0 л", "0 л"]
    }, {
        "n": 1,
        "i1": 151,
        "i2": 169,
        "t1": 1357053985,
        "t2": 1357054222,
        "d": 0,
        "c": ["1.2", "", {
            "t": "19:26:25",
            "y": 53.9205888,
            "x": 27.492064
        }, {
            "t": "Данилы Сердича ул., 68, Минск",
            "y": 53.9205888,
            "x": 27.492064
        }, {
            "t": "19:30:22",
            "y": 53.9094592,
            "x": 27.4950912
        }, {
            "t": "ул. Притыцкого, Ратомка",
            "y": 53.9094592,
            "x": 27.4950912
        }, "", "0:03:57", "0:00:00", "0.00 км", "0.00 км", "0 км\/ч", {
            "t": "41 км\/ч",
            "y": 53.9177472,
            "x": 27.4873152
        }, "1", "0 л", "0 л"]
    }, {
        "n": 2,
        "i1": 200,
        "i2": 214,
        "t1": 1357056082,
        "t2": 1357056357,
        "d": 0,
        "c": ["1.3", "", {
            "t": "20:01:22",
            "y": 53.8974912,
            "x": 27.5369984
        }, {
            "t": "Клары Цеткин ул., Минск",
            "y": 53.8974912,
            "x": 27.5369984
        }, {
            "t": "20:05:57",
            "y": 53.8847872,
            "x": 27.5675072
        }, {
            "t": "Маяковского ул., Минск",
            "y": 53.8847872,
            "x": 27.5675072
        }, "", "0:04:35", "0:00:00", "0.00 км", "0.00 км", "0 км\/ч", {
            "t": "62 км\/ч",
            "y": 53.8868928,
            "x": 27.5656
        }, "1", "0 л", "0 л"]
    }]
}]

Получение графических данных

При выполнении отчета «_Поездки,топливо (1)» был сгенерирован слой, отражающий поездки и остановки объекта. Изображение в котором будет отображен данный слой наложенный на карту можно получить запросом get_result_map:

https://hst-api.wialon.host/wialon/ajax.html?svc=report/get_result_map&
	params={
		"width":600,
		"height":600
	}&sid=<your_sid>

Результат выполнения:

Также данный отчет содержит график скорости и пробега. Его можно получить используя запрос get_result_chart. Для того, чтобы заголовок был над графиком мы указываем флаг 0×01, а легенда была под графиком - 0x200 (512).

https://hst-api.wialon.host/wialon/ajax.html?svc=report/get_result_chart&
	params={
		"attachmentIndex":0,
		"action":0,
		"width":600,
		"height":300,
		"autoScaleY":0,
		"pixelFrom":0,
		"pixelTo":300,
		"flags":513
	}&sid=<your_sid>

Результат выполнения:

Follow us on Facebook Gurtam Wialon Twitter Gurtam Wialon info@gurtam.com   |   Copyright © 2002-2024 Gurtam