Страница 1 из 1

Моя программа "ГТД-Уведомитель"

Добавлено: Пт сен 20, 2013 11:09
warner
Как я обещал в данном топике выкладываю свою программу.

Для начала скажу - Я НЕ ПРОГРАММИСТ.
Это вообще моя первая программа на C#. Возникла необходимость, я самостоятельно изучил разные статьи, и написал. Да, это заняло много времени, в ней нет никаких модных фишек типа паттернов и т.п. :) настоящие программисты наверняка укажут, что в куче мест можно сделать быстрее и лучше (если что, я с радостью выслушаю замечания и исправления, потому что мне самому интересно).
Но эта программа решает мою проблему, и решает неплохо.

Сначала проблема. Как вы знаете, в процессе декларирования приходится ждать запросы из таможни. По закону подлости именно в тот момент, когда отходишь от компа - приходит важный запрос (например нужно внести какое-либо исправление, или скинуть в таможню КТС), поэтому покидая рабочее место появляется неприятное ощущение тревоги.
В альте есть звуковое оповещение о новых сообщениях, но, во-первых многие сообщения не важны (к примеру какой смысл идти к компу из-за сообщения "Документ успешно принят"), а во-вторых у меня нет колонок на рабочем компе.

Поэтому я решил сделать себе уведомитель о важных эд-2 сообщениях.

Первоначально я сделал две программы, одну на C#, которая общается с базой альты-гтд и формирует уведомления, а вторую на Java, для ОС Android (тоже сам изучил различные уроки и написал). Общались они между собой по протоколу MQTT (Message Queue Telemetry Transport), что очень минимизировало трафик и т.п.

Но через какое-то время я решил не плодить сущностей и переложить проблемы энергопотребления и нестабильности мобильного интернета на чужие, более опытные плечи. Поэтому переделал программу для работы по протоколу XMPP (Jabber). Тем самым и обладатели других ОС на телефонах смогут ей пользоваться, благо jabber клиентов очень много.

Вкратце, как пользоваться:
1. Зарегистрировать 2 jabber аккаунта (гугловские не подойдут, они отошли в сторону своего протокола, отослать уведомление в Hangout я так и не смог). Я использую сервер jabber.ru
2. С десктопного клиента залогиниться в эти аккаунты и добавить друг друга в контакт-лист (дать друг другу авторизацию), иначе не будет видно статуса - онлайн/оффлайн, неудобно, а в свою программу я обработку запросов авторизации не встраивал.
3.Запускаем программу. Если в директории с ней нет файла config.conf, то создастся так сказать "стандартный".
Далее см. картинку.

Изображение

под цифрой 1 - здесь заполняем настройки MSSQL сервера (адрес, логин, пароль). Я создал отдельного пользователя на MSSQL сервере, который может только читать данные из БД, но не записывать.
ПАРОЛЬ ОТ SQL ЗАПИСЫВАЕТСЯ В ФАЙЛ config.conf И НИКАК НЕ ШИФРУЕТСЯ! (вдруг кому критично).
"Название фирмы" будет отображаться в главном окне программы и в сообщениях, поэтому пишите понятно для себя.
Галочка "Отслеживать" - если стоит, то при включении программы эта БД будет сразу выбрана для проверки, иначе можно после ткнуть мышкой и активировать.
Кого уведомлять - кому слать сообщения о новых событиях по этой фирме.

Затем нужно нажать кнопку "2", чтобы информация сохранилась, и добавить следующую базу.

У меня для каждой отдельной фирмы своя БД (я не использую режим альты "Много фирм в одной базе", потому что начинают путаться документы с одинаковыми номерами, сложнее искать нужное и т.п.)
Так что я добавляю сюда все свои БД.

Указываем настройки jabber-сервера.
и справа отмечаем, какие типы ЭД-2 сообщений нам нужно отслеживать.

Внимание. Все настройки можно делать также открыв config.conf в любом текстовом редакторе, это обычный файл.
Там-же можно добавить дополнительные ЭД-2 сообщения, или удалить ненужные. В общем настроить под себя.
Закрываем, сохраняем.
Изображение

Программа после запуска. В заголовке отображается путь к папке с программой (это для удобства, если запускать несколько копий программы из разных папок (например уведомлять разных людей о разных сообщениях))
Чтобы указать программе, какие базы проверять - кликаем мышкой по названию фирмы. Поле станет зелёным.
Затем выбираем интервал проверки, и нажимаем "Старт"

Изображение
Когда программа работает, она показывает, сколько деклараций, поданных по эд-2 и ещё не выпущенных, есть в этой базе.

Когда приходит новое эд-2 сообщение, через jabber скидывается уведомление, на телефоне это выглядит так

Изображение

Я использую клиент Xabber (https://play.google.com/store/apps/deta ... er.android).
Вы можете использовать любой, НО убедитесь, что он поддерживает уведомления о доставке сообщений
(XEP-0184: Message Delivery Receipts)
Для чего это нужно.
Когда моя программа отсылает сообщение, она ждёт от клиента на телефоне уведомление о получении. Если уведомления нет, она считает, что сообщение потерялось по каким-либо причинам (сбой сервера, сбой мобильной связи и т.п.) и через 10 минут отсылает сообщение ещё раз.
Если ваш клиент не поддерживает отсылку уведомления о получении, то вы будете получать одни и те-же сообщения постоянно до тех пор, пока не выключите программу.
Я лично не встречал jabber клиент без данного функционала, но на всякий случай предупреждаю.

Раньше у меня дома стояла Альта для опытов (правда не обновлялась больше года, т.к. лицензия просроченная была), но недавно пришлось переустановить систему, а заново привязать прогу не могу, у меня нет лицензии). Поэтому видеоролик о том как это всё работает снять не получится.
На всех скриншотах данные с работы, поэтому названия фирм и номера ГТД я замазал, на всякий случай, а то ещё нагоняй получу))

Программу и исходный код можно скачать тут -> https://bitbucket.org/dmitry_warner/uvedomitel


Можете делать с ним, что хотите. Буду признателен за указания моих косяков, и советы как сделать лучше (ещё раз скажу - я не программист, так что пишите попроще, пожалуйста ;)
Если вам что-то непонятно в исходниках, зачем я делал так, или иначе, или вообще как оно работает, тоже пишите, в меру своих сил постараюсь ответить.
Моя почта wwarne@gmail.com
Программа поставляется "как есть". у меня она уже больше месяца работает в режиме 24/7 и всё в порядке. Но гарантировать я ничего не могу, добавления новых "фич" и какого-либо развития программы не обещаю. Мои задачи она выполняет, а допиливать её под других некогда.

В программе используется библиотека agsXMPP (http://www.ag-software.net/agsxmpp-sdk/)


PS только написал о безпроблемной работе 24/7 и получил вылет. :))) Это происходит когда отслеживалась одна декларация в базе, и её выпустили, соответственно в базе стало 0 деклараций в работе. И я там где-то при обработке такого забыл соединение с sql закрыть, программа затем пытается открыть уже открытое соединение и в итоге вылетает. Поправлю попозже этот косяк.

Re: Моя программа "ГТД-Уведомитель"

Добавлено: Вс сен 22, 2013 08:11
Iskin
warner писал(а):В альте есть звуковое оповещение о новых сообщениях, но, во-первых многие сообщения не важны (к примеру какой смысл идти к компу из-за сообщения "Документ успешно принят"), а во-вторых у меня нет колонок на рабочем компе.
Было бы не плохо реализовать возможность настройки уведомлений и по трею и по звуку.

Re: Моя программа "ГТД-Уведомитель"

Добавлено: Пн сен 23, 2013 08:31
aiki
Iskin писал(а):
warner писал(а):В альте есть звуковое оповещение о новых сообщениях, но, во-первых многие сообщения не важны (к примеру какой смысл идти к компу из-за сообщения "Документ успешно принят"), а во-вторых у меня нет колонок на рабочем компе.
Было бы не плохо реализовать возможность настройки уведомлений и по трею и по звуку.
На счет звука, настроить можно. В настройках ЭД, закладка дополнительно, кнопка "настройка звуковых оповещений для ЭД сообщений". Там можно выбрать и режим проигрывания, и отметить какие сообщения проигрывать, каким звуком.

Re: Моя программа "ГТД-Уведомитель"

Добавлено: Пт сен 27, 2013 11:39
Игорь Екб
Наверное это все интересно для самосовершенствования - только зачем?))) Операторы ЭД2 давно предоставляют услугу смс информирования с этой информацией.

Re: Моя программа "ГТД-Уведомитель"

Добавлено: Пн сен 30, 2013 15:43
Koteneff
Титанический труд )

Re: Моя программа "ГТД-Уведомитель"

Добавлено: Вт окт 01, 2013 11:25
warner
Игорь Екб писал(а):Наверное это все интересно для самосовершенствования - только зачем?))) Операторы ЭД2 давно предоставляют услугу смс информирования с этой информацией.
Когда начинал делать этого ещё не было) И смс информирование вроде за отдельную плату, нет?

Re: Моя программа "ГТД-Уведомитель"

Добавлено: Вт окт 01, 2013 14:39
Игорь Екб
это надо у операторов уточнять.. есть платно - есть бесплатно )