Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

ru:local:remoteapi1504:codesamples:reports [20/05/2014 11:49]
ru:local:remoteapi1504:codesamples:reports [20/05/2014 11:49] (текущий)
Строка 1: Строка 1:
 +{{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 }}
Follow us on Facebook Gurtam Wialon Twitter Gurtam Wialon info@gurtam.com   |   Copyright © 2002-2019 Gurtam