Существует определенная специфика работы с отчетами. Все команды из раздела Отчеты кроме report/update_report могут быть выполнены только если сессия содержит результат выполнения отчета. Одновременно в сессии может быть выполнен только один отчет, поэтому если в ней содержатся результаты выполнения предыдущего отчета, перед выполнением следующего их следует удалить командой report/cleanup_result.
Внимание! Для запуска данного примера на Wialon Kit во всех запросах следует заменить https://hst-api.wialon.com на https://kit-api.wialon.com, а для входа в систему использовать логин и пароль своей учетной записи или логин и пароль демо-пользователя: kitdemo kitdemo.
В качестве примера выполним отчет «_Поездки,топливо (1)» для объекта Bavarian Tractor за интервал с 01.01.2013 00:00 по 20.01.2013 23:59. Для выполнения используется запрос exec_report:
https://hst-api.wialon.com/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 }
Выводы, которые можно сделать на основании полученного ответа:
Получить значения из таблиц отчета можно двумя способами. При первом используется запрос report/get_result_rows, который возвращает строки только верхнего уровня указанной таблицы. Если отчет многоуровневый, то строки более низкого уровня можно получить используя дополнительный запрос report/get_result_subrows. Во втором способе используется запрос report/select_result_rows, в результате выполнения которого возвращаемый JSON уже содержит вложенные строки.
Способ 1:
Получим первую строку таблицы «Поездки без остановок», которая идет под индексом 0 в массиве «tables».
https://hst-api.wialon.com/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.com/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.com/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.com/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.com/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>
Результат выполнения: