|
|
ru:local:remoteapi1504:codesamples:reports [20/05/2014 11:49] |
ru:local:remoteapi1504:codesamples:reports [20/05/2014 11:49] (текущий) |
| {{indexmenu_n>8}} |
| ====== Отчеты ====== |
| Существует определенная специфика работы с отчетами. Все команды из раздела [[../apiref/report/report]] кроме [[../apiref/report/update_report|report/update_report]] могут быть выполнены только если сессия содержит результат выполнения отчета. Одновременно в сессии может быть выполнен только один отчет, поэтому если в ней содержатся результаты выполнения предыдущего отчета, перед выполнением следующего их следует удалить командой [[../apiref/report/cleanup_result|report/cleanup_result]]. |
| |
| |
| //:!: Внимание!// Для запуска данного примера на Wialon Kit во всех запросах следует заменить **<nowiki>https://hst-api.wialon.com</nowiki>** на **<nowiki>https://kit-api.wialon.com</nowiki>**, а для входа в систему использовать логин и пароль своей учетной записи или логин и пароль демо-пользователя: //**kitdemo kitdemo**//. |
| |
| ===== Выполнение отчета ===== |
| В качестве примера выполним отчет "_Поездки,топливо (1)" для объекта Bavarian Tractor за интервал с 01.01.2013 00:00 по 20.01.2013 23:59. Для выполнения используется запрос [[../apiref/report/exec_report|exec_report]]: |
| |
| <code> |
| 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> |
| </code> |
| Результат выполнения: |
| <code javascript> |
| { |
| "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 |
| } |
| </code> |
| Выводы, которые можно сделать на основании полученного ответа: |
| * "msgsRendered" равен 1, следовательно при выполнении отчета был создан слой с сообщениями; |
| * отчет содержит одну таблицу статистики; |
| * отчет содержит 2 таблицы, первая из которых многоуровневая, и максимальный уровень вложенности у нее 2; |
| * отчет содержит одно приложение - график; |
| * при построении слоя сообщений было использовано 6585 сообщений. |
| |
| ===== Получение данных из таблиц ===== |
| Получить значения из таблиц отчета можно двумя способами. При первом используется запрос [[../apiref/report/get_result_rows|report/get_result_rows]], который возвращает строки только верхнего уровня указанной таблицы. Если отчет многоуровневый, то строки более низкого уровня можно получить используя дополнительный запрос [[../apiref/report/get_result_subrows|report/get_result_subrows]]. Во втором способе используется запрос [[../apiref/report/select_result_rows|report/select_result_rows]], в результате выполнения которого возвращаемый JSON уже содержит вложенные строки. |
| |
| **Способ 1:** |
| |
| Получим первую строку таблицы "Поездки без остановок", которая идет под индексом 0 в массиве "tables". |
| <code> |
| https://hst-api.wialon.com/wialon/ajax.html?svc=report/get_result_rows& |
| params={ |
| "tableIndex":0, |
| "indexFrom":0, |
| "indexTo":0 |
| }&sid=<your_sid> |
| </code> |
| Результат выполнения: |
| <code javascript> |
| [{ |
| "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 л"] |
| }] |
| </code> |
| |
| Параметр **"d"** равен 3, что говорит о том, что данная строка содержит три подстроки. Чтобы их получить нужно выполнить запрос вида: |
| <code> |
| https://hst-api.wialon.com/wialon/ajax.html?svc=report/get_result_subrows& |
| params={ |
| "tableIndex":0, |
| "rowIndex":0 |
| }&sid=<your_sid> |
| </code> |
| Результат выполнения: |
| <code javascript> |
| [{ |
| "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 л"] |
| }] |
| </code> |
| |
| **Способ 2:** |
| |
| После выполнения отчета стало известно, что максимальный уровень вложенности у таблицы "Поездки без остановок" равен 2. Следовательно выполним запрос, который вернет первую строку со всеми подстроками, уровень вложенности которых будет меньше либо равен 2: |
| <code> |
| 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> |
| </code> |
| Результат выполнения: |
| <code javascript> |
| [{ |
| "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 л"] |
| }] |
| }] |
| </code> |
| |
| ===== Получение графических данных ===== |
| При выполнении отчета "_Поездки,топливо (1)" был сгенерирован слой, отражающий поездки и остановки объекта. Изображение в котором будет отображен данный слой наложенный на карту можно получить запросом [[../apiref/report/get_result_map|get_result_map]]: |
| <code> |
| https://hst-api.wialon.com/wialon/ajax.html?svc=report/get_result_map& |
| params={ |
| "width":600, |
| "height":600 |
| }&sid=<your_sid> |
| </code> |
| |
| Результат выполнения: |
| {{ /remote_ex/map.png?nolink }} |
| |
| Также данный отчет содержит график скорости и пробега. Его можно получить используя запрос [[../apiref/report/get_result_chart|get_result_chart]]. Для того, чтобы заголовок был над графиком мы указываем флаг 0×01, а легенда была под графиком - 0x200. |
| <code> |
| 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> |
| </code> |
| |
| Результат выполнения: |
| {{ /remote_ex/chart_ru.png?nolink }} |