Не пятничная задача
Сегодня случайно появилась задача которая производству не требуется, но делать приходится всё вручную. Что в долгосрочной перспективе не хочется.
Хочется софт. Идеи конечно есть по реализации, но так как область не моя, хочется услышать другие мнения.
Итак, на складе есть некие пакеты со скан кодом, номером и соответственно названием, можно еще дополнительные атрибуты добавить. Каждый день многие сотрудники фирмы выбирают один или несколько пакетов и записывают взятые номера в общий список под своим именем. Пакеты расходуются.
Затем со списком проделываются некие операции и заказываются новые пакеты.
Что хочется:
Иметь "персональный сканер", пришел на склад, отсканировал пакет - данные записались в базу. В дополнение хочется еще и комментировать "свои" пакеты по названию после какого-то времени. Ну может и статистику какую получить.
Кто то должен иметь полный доступ к базе по всем сотрудникам, проводить требуемые операции и получать отчеты.
Вроде совершенно стандартная задача. Наверняка кто то и клепает подобное на "конвейере"
Не хочется иметь спец. устройство /дополнительный комп на складе, пока ориентируюсь на то, что все имеют андроид смартфоны. Кто персональный, кто от фирмы.
Все сотрудники имеют виндовс ПС. Всё может крутится в интранет сети.
одно бесплатное нашел, но что то там сильно дофига функций и исходников нет
https://www.vario-software.de/blog/vario-for-free-kostenfr...
хорошо бы опен соуре для xamarin и винды/веб
Хотя меня пока интересовала просто подходящая архитектура.
Я в одом таком проекте пролётом был)) причём очень много лет назад, поэтому ничего посоветовать не могу.
Если очень надо, попытаюсь связаться с бывшими коллегами, но гарантировать ничего не могу.
Не хочется иметь спец. устройство /дополнительный комп на складе, пока ориентируюсь на то, что все имеют андроид смартфоны.
------
Хммм... для ПРЕДПРИЯТИЯ совершенно не критично наличие дополнительного сканера и станции с софтом.
Тем более, что все расположено стационарно. Носимые сканеры тоже в наличии.
Так что Я бы не заморачивался на смарты, если не найдется устраивающее опенсоурсе решение.
Вторая часть - не забудь туда же поставить небольший принтер лэйблочек - кладовщик будет сильно недоволен в начале, но благодарен потом...
И, да!, на предприятиях чаще будут именно зебры - их достаточно для большинства задач.
Наверняка кто то и клепает подобное на "конвейере"
------
Угу... правда до сих пор так и не свели интерфейсы сканеров к одному типу.
Мелкомягкие вроде что-то делали в этом плане, но у меня руки не дошли поковырять - есть самописка для нескольких типов сканеров- мне хватаеt...
попытаюсь связаться с бывшими коллегами
Спасибо огромное , но подвигов не требуется. Просто не хочется изобретать велосипед. Да и особые подробности не требуются.
А что то типа этого:
Я лично для себя, для других целей, сделал Десктоп приложение для одного готового ПХП решения. Но там я пользую прямой доступ к MySQL базе через SSH. Но пароли для доступа к базе не хочется раздавать всем. Да и MySQL на андроид еще найти надо. Как лучше поступить в этом случае, например?
Сделать для ПС ASP.NET приложение и виндовый сервис с API?
для ПРЕДПРИЯТИЯ совершенно не критично наличие дополнительного сканера и станции с софтом.
ты не с той стороны смотришь. Я специально описал задачу как можно абстрактнее и поближе к общим потребностям.
Задача не для предприятия, а для сотрудников, как личная инициатива. Склад - это всего лишь большой напольный морозильник из фильмов ужасов про трупы в американских подвалах.
А пакеты - еда на обед. Да и с одним сканером нужно будет сканировать вначале код сотрудника, что не есть удобно.
на предприятиях чаще будут именно зебры
нескромный вопрос - а хто такие "зебры"?
есть самописка для нескольких типов сканеров
Да я тоже писал модули для некоторых промышленных сканеров, только дизель мотор на велосипед, как то не хочется.
нескромный вопрос - а хто такие "зебры"?
https://www.zebra.com/de/de/products/scanners.html
если не найдется устраивающее опенсоурсе решение
Похоже только енто есть.
в американских подвалах
------
Где? Ну если только в кино... но даже там они с трудом понимают что такое подвал...
А пакеты - еда на обед.
-----
Если такое - т.е. неизвестное количество неизвестных сканеров и сильно распределенное место хранения - надо искать что-то уже готовое для веба.
Можно порыться на предмет аппов с QR-сканнингом. Я не занимался - какие есть не знаю.
На вскидку:
https://play.google.com/store/apps/details?id=com.techresort.qrscanner&hl=ru
Там есть еще...
http://fire-monkey.ru/topic/2786-чтение-qr-кода-нужен-компонент-или-тулза/
Пара ссылок дополнительно на странице.
Ну если только в кино
не только
http://www.diasporanews.com/2016/06/02/zhenshhina-nashla-t...
А как они называют то помещение где обычно стоят морозильные камеры?
сильно распределенное место хранения
что значит сильно распределенное?
Ты вот как раз с базами и вебом маешся. Имеет ли смысл делать ASP.NET приложение с MsSQL express для ПС? И как лучше делать запросы к базе из другого приложения?
Инсайдеровский слив от бывшего "программиста сканеров": то, что вы сейчас пытаетесь сделать в Германии никому не нужно.
Многие ЕРП конторы покрывали эти направления т.к. ни сканеры, ни ПО к нему никто не хочет покупать.
Более того на рынке можно нарваться на нае..лово: тебе продадут голое железо, а работающие драйвера и ПО - нет. И фирма смеется с рынка. Смотри историю фирмы CipherLab в ОСД.
Очень много клиентов пострадало. Чтобы избежать судебных исков, фирма закрылась.
зы. В России ситуация совершенно иная.
то, что вы сейчас пытаетесь сделать в Германии никому не нужно.
Вы хоть больше чем пару слов читали из написанного? Тогда было бы ясно что это нужно прежде всего лично мне, ну и еще коллегам.
Нужно ли это еще кому то мне абсолютно безразлично.
Вы бы лучше написали ваши идеи по реализации данной системы, как человек хоть немного знающий данное направление.
Вот например по сканеру, может быть два решения: один сканер на всех и у каждого индивидуальный сканер. Для первого решения возникает вопрос удобной и "безопасной" идентификации пользователя (хотя вот только что нашел вроде вариант...)
А как они называют то помещение где обычно стоят морозильные камеры?
-----
А причем тут ПОДВАЛ? На картинке - не подвал, а ГАРАЖ.
Гараж - это они понимают - место хранения всякой хрени... ну типа морозильной камеры с трупом... или тряпки на куче собачьего дерьма, которое никак нельзя убрать...
А подвалов у них просто нет - дома стоят на бетонной плите... в лучшем случае...
что значит сильно распределенное?
-----
Ну ты же сам задачу определяешь - у тебя не точечное хранение - при нем нет проблемы иметь на точке пусть и портативный, но сканнер...
Т.е. - места, куда лениво тащить сканнер от входа или места где лениво идти до места где брать сканнер...
Имеет ли смысл делать ASP.NET приложение с MsSQL express для
ПС?
-----
Иногда - имеет.
Например, когда команда имеет много опыта написания на АСП.НЕТ и нефига не знает об вин-формах.
Плюс, от десктопа, обычно, требуют всяких бантиков и плюшек, для которых нужно глубокое знание системы.
И как лучше делать запросы к базе из другого приложения?
-----
Ну первым требованием будет - голая база не должна торчать наружу.
Отсюда - будет прокладка. Либо что-то самоизобретенное, либо что-то более-менее стандартизованное...
Получается - веб-сервис...
А подвалов у них просто нет
не знаю как там на самом деле, но я не нашел подтверждения данной информации
https://www.usafotki.com/index.php/2012/03/kak-ispolzuyut-...
https://www.doctorvlad.com/russkieamerikancy/index.php/201...
https://zen.yandex.ru/media/newyorkboston/10-otlichii-amer...
у тебя не точечное хранение - при нем нет проблемы иметь на точке пусть и портативный, но сканнер
одни морозильник не точечное хранение? Главная проблема с одним сканером - нужно сканировать дважды: код работника и код продукта. А после еще и информацию со сканера сливать.
Например, когда команда имеет много опыта написания на АСП.НЕТ и нефига не знает об вин-формах.
вообще то в данном случае скорее наоборот. Да и команды особой нет. Но если ты знаешь вариант, когда десктопное приложение не нужно устанавливать локально - тоже подойдет.
Получается - веб-сервис
С этим вообще не сталкивался. На что вначале обращать внимание?
А с MSSQL Express проблемы есть для малых баз?
ПС: У нас сегодня выходной народа не будет...
но я не нашел подтверждения данной информации
-----
Ну не нашел так не нашел...
А Я вот в Лаке Форесте, КА подвалов не нашел... может где-то в центральной части Лос Ангелеса и найдется подвал, но это "единичный случай"...
одни морозильник не точечное хранение?
-----
У отца на работе морозильник был несколько больше показанного на картинке...
Туда, в морозильник, заежали машины на погрузку продукции...
А после еще и информацию со сканера сливать.
------
Это авторматом.
нужно сканировать дважды: код работника и код продукта
-----
Ну и?
вариант, когда десктопное приложение не нужно устанавливать локально
------
А так бывает?
У меня только автоапдейты. Остальное - веб.
С этим вообще не сталкивался. На что вначале обращать внимание?
-----
Сложно сказать.
Тут больше надо показывать и пояснять когда и что надо апдейтить.
Просто не вполне очевидное - класс пересылается, а потом - перестает...
Сразу и не понятно почему, но надо обновить генерацию клиента.
Базово - описываешь функциональность сервиса и Студия строит клиента.
Понимать надо - транспорт - хттп-басед со всеми бенефитами и проблемами.
Начинай курить доки и обязательно - пробуй все что описано - там много...
Не надо сложное - класс-другой переслать, подредактировать и т.п.
Если хочешь с пользой - могу дать задачку...
А с MSSQL Express проблемы есть для малых баз?
------
Даже со средними нету. Исключая то, что там нет энт-фич... Хотя - может и добавли...
Там, насколько Я помню, только ограничение на размер базы - много больших блобов не пойдет...
Но по базам лучше Пелода помучай - он должен побольше знать... а Я - так - пользователь...
А после еще и информацию со сканера сливать.------Это авторматом.
Как это? Ладно может подключен как сетевое беспроводное устройство, но кто будет заливать данные в мою базу?
нужно сканировать дважды: код работника и код продукта
-----Ну и?
Ну и ломит, зачем два раза когда можно один
вариант, когда десктопное приложение не нужно устанавливать локально
------А так бывает?У меня только автоапдейты. Остальное - веб.
Ну так поэтому и было ASP.NET
Если хочешь с пользой - могу дать задачку..
Пока не надо, на этой неделе командировка. А еще хочу учет рабочего времени на WPF переписать, а то syncfusion задолбал уже своими ошибками.
Этот проект пока на "далекое" будущее. Должен еще "повариться".
кто будет заливать данные в мою базу?
------
А чего там "заливать". ЕФ6 и поехали - все пишется и читается... даже бины генерятся на автомате... чуток связку подрихтуешь и готово...
зачем два раза когда можно один
-----
Чтоб меня это парило...
Меня годиков 5 назад попросили сделать импорт чужих документов.
Если бы Я там заморачивался с "зачем дава когда можно один" - писал бы до сих пор.
А так - оно уже 5 лет как работает, раширяется, пусть с матюками, но и опять работает...
Тут миграция намечается - поменяется формат импортируемого документа - надо будет еще переделывать...
А лишний раз просканить свое ИД - да фигня полная - навел, нажал и... все...
ЕФ6 и поехали - все пишется и читается
Ой как я матюкался пока это Г. ставил для SQLite.
Вначале нужно было найти правильные бинарники для SQLite, затем в проект загрузить правильные пакеты.
Как просто динамически загрузить имя файла базы данных так и не нашел.
Как написать что то подобное, тоже надо искать
public void TestPrint2() { var ret = from classProperty in mDb.LabelingClassProperties join labelingClass in mDb.LabelingClasses on classProperty.LabelingClassGuid equals labelingClass.LabelingClassGuid select new { classProperty.LabelingClassGuid, classProperty.Value, labelingClass.Name }; foreach (var result in ret) { Console.WriteLine("{0},{1} - {2}", result.LabelingClassGuid, result.Name, result.Value); } }
Насколько DevArt удобнее.
А лишний раз просканить свое ИД - да фигня полная
Ага, только еще карточку с собой таскать и печать её до того.
Потом из кармана вытащить, отсканить, положить обратно в карман и пр. Не, не хочу - просто неудобно. Для дяди еще можно сделать как проще, а для себя уж как удобнее будет.
Не, не хочу
-----
Ну с этим спорить невозможно - не хочу - значит - не хочу.
Ой как я матюкался пока это Г. ставил для SQLite.
-----
Представляю, и представляю ОЧЕНЬ хорошо - совсем недавно тоже самое делал для ПпостгрееСкл.
А еще чуток ранее пытался скастить до Оракле 10...
Как просто динамически загрузить имя файла базы данных так и не нашел.
------
Не знаю как для СкЛите, но для МС СКЛ довольно просто:
public class TTranslationDB : DbContext{public static string ConnectionString = String.Empty;
public TTranslationDB()
: base(ConnectionString) //, DbCompiledModel.{}public DbSet<TTranslation> Translations { get; set; }
}
Строку подключеня строишь любым подходящим способом и присваиваешь до вызова конструктора.
Да, плохо, но извлекать динамичаски довольно долго по времени.
У меня - читается из отдельной секции конфига, при этом автоматику Я не освоил - читаю как обычный ХМЛ...
public class TTranslationDB : DbContext{public TTranslationDB()
: base(ConnectionString)
Тут есть маленький ньюанс, то что можно править находится в сгенерированном файле. И после следующей генерации всё будет как и до того.
Данный способ я посчитал неприемлемым. Пришлось извращаться c App.Config. Но время подключения для меня некритично.
А что там с LINQ вместе с FK, как оно тама делается?
Не понял - зачем надо генерировать? Один раз написал - достаточно...
поле в таблицу добавилось, что делать?
??? - поясни вопрос.
Как такую же функцию с EF написать? Времени пока не было разбираться. Обычный лоокап хотя бы с LINQ тока.
https://foren.germany.ru/showmessage.pl?Number=35299769&Bo...
Перегенеришь бины. Рукописная часть - остается.
Так исходники же генерятся по новой. Нужно еще раз глянуть что точно генерится, уже не помню какие были проблемы. Помню только что есть конструктор без параметров с вызовом базового с именем строки соединения в конфиге.
JOIN ?
ну да так и делал с Devart-ом
var ret = from classProperty in mDb.LabelingClassProperties
join labelingClass in mDb.LabelingClasses on classProperty.LabelingClassGuid equals labelingClass.LabelingClassGuid
select new { classProperty.LabelingClassGuid, classProperty.Value, labelingClass.Name };
а с EF так не получается отчего-то
Так исходники же генерятся по новой.
-----
Ну так не все же.
Если ты парвишь генерируемый файл - его, понятное дело, затрут при генерации нового.
Но ты же не глупый - напишешь другой файл с нужной тебе часть класса.
Если нужно - положишь вне папки генерируемых файлов.
Нужно еще раз глянуть что точно генерится
-----
У меня вот тоже есть желание поковырятся на этом уровне в DSL.
Только вот пары недель свободного времени никак не найду...
Помню только что есть конструктор без параметров с вызовом базового с именем строки соединения в конфиге.
------
Возмпжно, что придется и шаблоны править...
а с EF так не получается отчего-то
------
Так ЕФ это не делает.
ЕФ - генерит СКЛ под собой. Соответственно - может сгенерить выборку из двух джойнутых таблиц.
Сам этим пока не пользовался - не было нужно.
-----
Почти всегда можно из ЛИНКа получить нужный запрос в СКЛ. Я, правда, настолько глубоко не влазил - там где не было понятного пути получения нужного кода дописал метод его генерации и успокоился.
Ну хорошо хоть не нужно больше пробовать.
-----
Пробовать - толку мало - там изменения от версии к версии... часто - существенные.