24.04.2024
Эффективная Навигация М2М
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум (скрипты, вопросы...) » CyberFleet » Скрипты для CyberFleet, CrossPoint » ХП FLEET_FuelOperationsRepor (Написание приблуд)
ХП FLEET_FuelOperationsRepor
vadДата: Четверг, 05.07.2012, 06:37 | Сообщение # 1
Барнаул
Группа: Проверенные
Сообщений: 223
Репутация: 17
Статус: Offline
Начал писать на делфях приблуду для CF. Задумка была в упрощении алгоритма настройки параметров порогов,времени З/С. (Все в одном окне и отчет и настройки). Задумка потом перевалила в приблуду для собственных отчетов с функцией сохранения в PDF, ODT, etc. Т.к. За частую в ТЗ клиенты хотят разные форматы.

Я хотел поинтересоваться о ХП FLEET_FuelOperationsReport_1_17_1_5(3). У нее есть куча входных параметров, и она на входе дает таблицу с заправками/сливами + выходные переменные с параметрами типа пробег и т.д. В свете того что (видимо) обработка данных либо входных, либо выходных происходит клиентом CF*. Или видимо в клиенте идет "усреднение" данных от дуж. Или нет. Вообщем интересно кто мне может что-нибудь подсказать или вообще отговорить от идеи написания костылей.

Во вложении есть *.exe которая получает список групп, по выбранной группе выбирает технику и по выбранному времени запускает FLEET_FuelOperationsReport_1_17_1_3 для каждого из выбранных ТС и выводит результат. Пока все. Ей для работы требуется наличие файла connect.udl либо в папке с *.exe липо по стандартным путям CFclient.

Там пока много касяков, всерьез еще не дебажил. И я пока еще не закончил до тех пор пока идея окончательно не сформируется или не угаснет в рутине работы.
Кому нужны исходники, обращайтесь - скину.

Ссыль на *.exe. ( и так как я не могу загружать файлы ссылка на ifolder)

*
Quote
(как mr, Logoff совершенно верно указал на то что я пропустил мимо
1.17.2.6
Клиент
9) Доработан алгоритм определения объёма заправки в тех случаях, когда после
окончания заправки происходит временное отключение прибора
эти случаи неоднократно показывал абонентской службе - говорили, что исправлено в 1.17.2.8
)


Сообщение отредактировал vad - Четверг, 05.07.2012, 11:09
 
vadДата: Четверг, 05.07.2012, 11:16 | Сообщение # 2
Барнаул
Группа: Проверенные
Сообщений: 223
Репутация: 17
Статус: Offline
Update приложения. ХП возвращает Lat,Long заправки. Добавил окно браузера с местом заправки на openstreetmap. Теперь нажимая в таблице на ячейку "Заправка:" или "Слив:" в окне внизу будет видно место.
Ссыль
Скрины:

Прикрепления: 6459315.png (74.6 Kb) · 1020631.png (13.9 Kb)
 
logoffДата: Пятница, 06.07.2012, 08:51 | Сообщение # 3
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
Подобное я делал вот тут http://bnc.ucoz.net/load....-1-0-27
Там как раз есть основа для настройки части переменных (в частности можно указать свои нормы расхода на пробег).
Хотел еще туда добавить "галку".
Мысль с отображением на карте места заправки интересна - у меня это реализовано через запрос зон (координаты не очень показательны, смотреть каждый раз место на карте для многих ТС не целесообразно).
Есть наработки по созданию зоны из данных о пробеге ТС за период.

Кстати, а почему используете именно "FLEET_FuelOperationsReport_1_17_1_5"
а не "FLEET_FuelOperationsReport"? Если посмотреть другие процедуры (например [dbo].[REPORT_EquipmentSynchronize], [dbo].[REPORT_DateConsumptionSynchronize] из BN_FLEET_ATP то там идет использование именно FLEET_FuelOperationsReport, а не FLEET_FuelOperationsReport_1_17_1_5, т.е. в данном случае имеем ситуацию сохранения старой версии процедуры для каких-то нужд, но в основном коде используется именно FLEET_FuelOperationsReport - имхо )

Если анализировать ее код, то видно, что данные для обработки (расчет среднего) подготавливаются через dbo.FLEET_GetAnalogSensorSpline

По поводу "костылей"... не знаю - пока все мои "костыли" позволяли быстро получать "прибыль" от их применения (ну, например много что для клиента я анализирую не ручками, а теми же скриптами для sql - это экономить время подчас в 10-ки раз) - ждать нужного результата от М2М можно долго.
Да и как программисту (в прошлом) такой подход меня вполне устраивает - взял код, сделал тебе нужное. Вопрос только во времени анализа исходных данных - вот как раз это и побудило меня создать данный сайт.
 
vadДата: Пятница, 06.07.2012, 09:15 | Сообщение # 4
Барнаул
Группа: Проверенные
Сообщений: 223
Репутация: 17
Статус: Offline
Выбор процедуры - В офисе стоит флит Version 1.17.1.5, а в нем процедуры от 1.17.1.5 нету. Если надо, то могу добавить принадлежность к зоне.
Сейчас пока работаю над кнопкой выгрузки в ексель. А вот в pdf будет тяжело сделать, начинаю читать спецификацию формата.
Звучит конечно грандиозно, но хочу со временем хочу подумать над своим алгоритмом обсчета топлива.

Добавлено (06.07.2012, 09:15)
---------------------------------------------
Вопрос только в том - а нужен ли pdf?

 
logoffДата: Пятница, 06.07.2012, 17:42 | Сообщение # 5
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
кстати, в 1.17.2.8 изменилась передача параметра @CheckSpeed в процедуру FLEET_FuelOperationsReport
там теперь три значения
@CheckSpeed tinyint , --0-не учитывать скорость, 1-удалять только сливы на скорости, 2- удалять толкьо заправки, 3 все удалять
это как я понимаю в плане изменений в 1.17.2.6
Quote
2) В сводных и топливных отчётах добавлена возможность раздельно
устанавливать опции игнорирования на скорости сливов и заправок


а в FLEET_FuelOperationsReport_1_17_1_5 - нет
это как раз довод за мое предположение, что FLEET_FuelOperationsReport_1_17_1_5 архивная процедура для каких-то нужд
 
vadДата: Понедельник, 09.07.2012, 06:59 | Сообщение # 6
Барнаул
Группа: Проверенные
Сообщений: 223
Репутация: 17
Статус: Offline
Upd Добавил кнопку "Открыть в Excel". Реализовано через OLE, поэтому считается не кошерным. (Смысл в том что без MSExcel строится не будет, собственно также как и во флите). Аналогично можно прикрутить OOcalc. + Поменял ХП на FuelOperationsRepor.

Хотелось бы поговорить о том как лучше сделать гибкую настройку входных параметров(может кто-нибудь и подскажет что-то дельное). Как я вижу:
-Аналогично выбираю несколько ТС
-Нажимаю другую кнопку(не туда где отчеты)
-На новой форме я должен щелкать по заправкам и видеть место заправки/слива на карте, График уровня топлива и скорости аналогичный CF за период заправки +/- 5-10 минут.

Я предвижу сложности в реализации графика. Потому как 5-10 минут в случае заправки с отключением массы ничего не дадут, надо не по времени выгружать, а по количеству данных. Но думаю что "аппетит придет во время еды", т.е. начну реализовывать и все станет ясно.

Добавлено (09.07.2012, 06:59)
---------------------------------------------
Есть процедура FLEET_GetAnalogSensorsTarValues наверно буду ее использовать
Правда есть там параметр
@CurrentMinutesCount int = 0-- количество минут для понятия "Текущие" (если @StartDateTime и @EndDateTime не заданы), если 0, то 1440 - сутки
И я еще до конца не въехал это что.

 
logoffДата: Понедельник, 09.07.2012, 09:40 | Сообщение # 7
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
ну смысл, если не передано @StartDateTime и @EndDateTime то период берется как сколько-там минут назад от текущего времени (getdate()) не помню точно чего
По поводу графика - время заправки достаточно не плохо определяется в отчете, так что показывай график +-10 минут думаю достаточно.

А место заправки определяется как что - точка на начало-конец заправки? - хочу попросить функционал создания зоны в этом месте с определенным радиусом для окружности...

А вот со средней будет сложно на графике, если нет слева/справа +-7 минут...
 
vadДата: Понедельник, 09.07.2012, 10:24 | Сообщение # 8
Барнаул
Группа: Проверенные
Сообщений: 223
Репутация: 17
Статус: Offline
>>хочу попросить функционал создания зоны в этом месте с определенным радиусом для окружности...
Должна создаваться зона в месте заправки определенным радиусом, что то типа правой кнопкой мыши по заправке в таблице и создать зону во флите? Если так то нужно действительно доработать метку на карте. Сейчас это время начала заправки из отчета. А должно быть время точки минимума реальных значений(более-менее фактическое начало заправки).

Добавлено (09.07.2012, 10:24)
---------------------------------------------
Какие настройки должны быть кроме радиуса(цвет, комментарий и т.п.)

 
logoffДата: Понедельник, 09.07.2012, 21:55 | Сообщение # 9
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
ну, как опыт показывает, вообще момент начала заправки - координаты в нем не совсем могут быть достоверны... бывает такое. наблюдал с зонами - не попадает заправка в зону по archive_Data... да и координаты во время заправки могут несколько "плясать"... я думал делать прямоугольную область по мин/макс координат за время заправки + отступ от этой коробочки по всем сторонам в метрах...
типа вот коробка с координатами заправки, и от нее отступим во все стороны 20 метров.

из параметров - название, можно цвет. комментарий (примечание - не помню название поля). это механизм быстрого создания таких зон - хочется потом = пусть правят. смысл в действии - создать зону, и дать возможность по ней пересчитать места заправок - найти новые зоны заправок (места, которые не попали в зоны), опять создать зоны и так по кругу...
а вот для сливов в движении часто бывает нужно выделить коридор по времени слива - так как многие сливы в движении приходятся на один и тот же участок дороги... и там нужно создание коридора.
Так что я бы предложил создавать все три типа зоны... и окружность, и прямоугольник, и корридор

не надо искать минимумы - пусть информация будет соответствовать отчету - так проще пользователю что-то объяснять - поиск заправок и так базируется на экстремумах... пусть оно с данными отчета совпадает. а вот добавить инфо об объеме бака (макс из тарировки для бака) и данных об уровнях топлива до/после заправки (момент начала/окончания)- очень желательно. тут уже вопрос такой, что некоторые ДУТ стоят ниже горловины... и достоверные данные от них лишь до определенного уровня - а выше своего уровня установки они топливо не покажут - и такие моменты хочется видеть, что бы сразу отсекать их в плане недостоверных жалоб о расхождении показаний уровней заправки от ДУТ и "по чекам"
 
vadДата: Вторник, 10.07.2012, 13:47 | Сообщение # 10
Барнаул
Группа: Проверенные
Сообщений: 223
Репутация: 17
Статус: Offline
Вот пока так. Щелкаешь правой кнопкой по заправке, выбираешь Добавить зону. Появляется окно где можно задавать радиус зоны, название, цвет(пока не разгадал как именно там цвета индексируются,поэтому всего черный шпарит). Пока только окружность ставит и на карте не отображает(не придумал как сделать). Во она появляется, но нужно обновить редактор зон и точек после добавления. Завтра начну делать так чтобы рядом с картой из браузера отображался график с топливом в месте заправки.



На скрине название зоны я ввел сам.
Прикрепления: 0419342.png (80.0 Kb)


Сообщение отредактировал vad - Вторник, 10.07.2012, 13:55
 
logoffДата: Вторник, 10.07.2012, 16:03 | Сообщение # 11
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
https://developers.google.com/kml....orstyle
только нет "aa=альфа (от 00 до ff)" т.е. bbggrr

вот такую процедуру писал для преоразования цвера под kml

Code

USE [bn_patp_dob]
GO
/****** Объект:  UserDefinedFunction [dbo].[get_GE_color]    Дата сценария: 07/10/2012 16:00:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER function [dbo].[get_GE_color]
(@alfa float, @color_cb float)
returns bigint
as
begin
-- возвращает код цвета по шкале зеленый-красный (512 оттенков) в кодировке google kml
-- http://code.google.com/intl/ru-RU/apis/kml/documentation/kmlreference.html#colorstyle
declare @r float
declare @G float
declare @B float
set @b=0.0000

return @alfa*16777216+@color_cb
--return @alfa*16777216+@B*65536+@g*256+@r

end
 
vadДата: Пятница, 13.07.2012, 10:33 | Сообщение # 12
Барнаул
Группа: Проверенные
Сообщений: 223
Репутация: 17
Статус: Offline
Вот пока сделал так. Тыкая по заправке/сливу на графики выгружается значения топлива -20 минут от начала до + 20 мин от конца. Это не правильно т.к. значений то может и не быть и логичнее загружать N точек до и после заправки. Но пока так, т.к. так работает ХП FLEET_GetAnalogSensorsTarValues, потом переделаю(думаю это решит проблему номер 2).
Если щелкнуть в область ТС(з/с или госномер) то выгружаются настройки по 3/С из БД. Тут же их можно поменять,записать в БД и построить заново отчет.(Warning тут поканет проверки на ввод,не доделал).
По графику нужно водить мышкой влево-вправо, перекрестие привязано к точкам графика и будет по ним скакать.(Иногда не очень удобно, но лучше чем в CF).
Известные мне проблемы:
-Данные по топливу выгружаются по времени.
-На графиках не удобно читать и определять сливы(скрин 3).
-На графиках нет зажигания(а надо бы).
-Графики никак не маштабируются(а надо бы).
-Не вынесены явно входные настройки ХП отчета и поэтому пока не ясно отчего заправка в отчете есть, а в моей штуке нет.
-Не хватает кнопки "Назад" из последней формы.
-Если открыть отчет в excel, а потом закрыть приложение, то и excel закроется(считаем багом или фичей?)




Дальнейшие планы:
-Попытаться Исправить известные мне проблемы;
-Думается мне заюзать Яндекс.карты API, на них можно и треки экспортировать и метки ставить и рисовать чего-то. Думаю что в месте заправки имеет смысл на карте и треки рисовать.
-Добавить экспорт в odt,pdf.
-Подумать над работай с зонами.
И,в принципе, то для чего я эту штуку задумывал будет готово, а именно облегчить настройки з/с у приборов во флите. Большая просьба к жителям форума поискать какие-нить касяки(куда без них) и если что ни так или есть разумные предложения, то пишите,звоните, шлите бандерольки.

PS.: Начиная анализировать результаты работы Отчета полученного из флита и результаты через мою штуку нарисовывается вывод что ХП все-таки выдает результаты по реальным значениям, а в отче находятся значения со сглаженных. Но почему?Для чего разработчики решили сделать сглаженные значения топлива вообще? А быть может мои результаты из-за входного параметра ' @SplineStep = NULL, '+//ширина окна сглаживания, мин, null=сглаживания нет . Если так то видеть показания с реальных значений показания гораздо лучше чем обманываться усреднением (на самом деле 2 раза2 раза). В общем пока не ясно, а на подробный анализ кода процедуры пока времени нет.
PSS.: Ухожу в отпуск на 2 недели. + у нас в фирме какие-то перестановки на верху, поэтому судьба наша(тех.службы) не очень ясна. Может так получится что некогда будет доделывать, а может так что и некому. В общем жду что кто-нибудь скачает, поюзает и напишет что-нибудь дельное.
Прикрепления: 0893618.png (76.7 Kb) · 4761269.png (76.2 Kb) · 2735847.png (75.6 Kb)


Сообщение отредактировал vad - Пятница, 13.07.2012, 10:34
 
logoffДата: Пятница, 13.07.2012, 12:52 | Сообщение # 13
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
Поюзал! Версии до этой не смотрел - впечатления хорошие. Но сразу хочется предложить:
1. В колонке начало и данных в правом углу под картой перепутаны местами месяц и дата...
показано 2012-11-07... это 07 ноября, а нужно 2012-07-11... возможно это проблема региональных установок - разница у нас с тобой... хотя нет, у тебя на картинке тоже 2012-12-07
см


2. Несколько раз валился с ошибкой - при заполнении таблицу, т.е. после нажатия кнопки Запустить.

После закрытия ошибки при нажатии на любую строку валится еще одна ошибка

3. Надпись о состоянии "Выполняется ..." периодически просто перестает отвечать... крутятся "часики", реакции на мушку нет

4. Объедини зрительно настройку порогов/фильтов/времени и кнопку Записать в БД.
5. Не видно данные по зонам... ни на карте, ни в отчете...
6. При фильтрации сделай возможность или выбора или ввода названия организации - у меня ТС поделены например по организациям.
7. В таблице закрепи так же колонку "Гаражный номер", а вот первая колонка с номером по порядку не очень нужна.
8. В фильтре ТС сортировка по алфавиту очень нужна, желательно еще фильтр по части номера

По поводу @SplineStep = NULL
да, в видно в процедуру передается параметр =7 для 1.17.2.5
почему нужно гладить - покажу вот тут

смысл - очень много мелких скачков почти на 20 литров... а ведь 20 литров это канистра - без самого малого фильтра тут ни как


при этом отчет выдает

т.е. достаточно красиво их "гладит"...
Прикрепления: 9392780.png (77.8 Kb) · 4634297.png (12.5 Kb) · 2693393.png (28.3 Kb) · 0015440.png (118.8 Kb) · 3403914.png (117.0 Kb)
 
logoffДата: Пятница, 13.07.2012, 13:23 | Сообщение # 14
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
График конечно мелоковат бывает - при большой частоте точки слишком близко друг от друга. Нужно думать с масштабированием. Автомасштаб по max бак не всегда удобен. лучше я думаю по уровню заправки +- какой-то запас.

Очень удобно выделение времени на графике заправки/слива, но хочется видеть такие же вертикальные линии и на графике скорости.
Вообще задумка с таким именно поведением графика очень удачна!!!

Возможно, есть смысл сделать заправки/сливы упорядоченными по времени... может через какую-то настройку предварительную, и дать возможность работать отдельно с заправками, и отдельно со сливами (тем более что в 1,17,2,8 появилось разделение фильтров). И да, не хватает кнопка "назад", или "настройка" на последней форме.

А с какими настройками отчета производится поиск?
я вот про это...
Прикрепления: 8668113.png (7.6 Kb)
 
logoffДата: Пятница, 13.07.2012, 13:30 | Сообщение # 15
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
При щелчке на последнюю запись в таблице лкм - таблица проматывается вверх на две строки, и курсор оказывается ниже, чем целился.
При открытии в Excel данные об объеме передаются не как число... sad - сложно быстро получить общие данные, делать еще какой-то анализ
Время/дата в Excel тоже передается с ошибкой см рисунок
Прикрепления: 4971470.png (7.4 Kb)
 
Форум (скрипты, вопросы...) » CyberFleet » Скрипты для CyberFleet, CrossPoint » ХП FLEET_FuelOperationsRepor (Написание приблуд)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

LogOff © 2024
Сайт создан в системе uCoz Рейтинг GPS Клуба. GPS навигаторы. GPS мониториг. GPS трекеры. ГЛОНАСС