LKDS
8 800 100 8421
звонок бесплатный

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V « < 2 3 4  
Ответить в эту темуОткрыть новую тему
> Система обработки заявок, Стыковка со сторонним/своим ПО
Андрей Ефименко
сообщение 13.1.2022, 8:32
Сообщение #61


Активист
****

Группа: Администраторы
Сообщений: 2 716
Регистрация: 8.2.2006
Пользователь №: 4



Цитата(anatoliy @ 12.1.2022, 22:21) *

Скорее установки организации. Что бы можно было с нескольких установок SPult отправлять заявки в одну базу . И что бы можно было однозначно понять что это данные именно наши, а не кто-то пытается подсунуть левый XML, и если ключ не соответствует, то просто игнорируем данные и выдаем 404 ошибку.


Тогда это следующий параметр:

POST /lkds HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: 372
Connection: keep-alive
Cache-Control: no-cache

<?xml version="1.0"?>
<PULT ContentType="request" Name="Test" GUID="E91AF61B9F2E47AA82A23310ECB01D85" IdDB="1">
<DISP Name="Диспетчерская" IdDB="1">
<STREET Name="ул. Pro" IdDB="3">
<HOME Name="д. Pro" IdDB="3">
<LIFT Name="п. 1" ID="3" GUID="C3AE5B687D17410FB52953E84D793F2B" IDPro="1" IdDB="5" Note="Не работает"
<ListStatus>
<Status Name="Открыто МП"/>
<Status Name="Кабина стоит"/>
</ListStatus>
</LIFT>
</HOME>
</STREET>
</DISP>
</PULT>

Данный параметр однозначно определяет одну организацию в LKDSCloud и LKDSDomain
И одну установку LKDSDisp
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
anatoliy
сообщение 14.1.2022, 1:21
Сообщение #62


Участник
**

Группа: Пользователи
Сообщений: 70
Регистрация: 9.4.2010
Из: Ростов-на-Дону
Пользователь №: 4 610



Цитата(Андрей Ефименко @ 13.1.2022, 8:32) *

Тогда это следующий параметр:

...
<?xml version="1.0"?>
<PULT ContentType="request" Name="Test" GUID="E91AF61B9F2E47AA82A23310ECB01D85" IdDB="1">
.....
Данный параметр однозначно определяет одну организацию в LKDSCloud и LKDSDomain
И одну установку LKDSDisp

Т.е. это не идентификатор установки SPult? И он останется неизменным, даже если установлю SPult на другой компьютер? Естественно подключение будет к тому-же lkdsdisp или Domain!

А что по поводу выбора ответственного из формы формирования заявки, возможно такое ?


--------------------
Если ты ненавидишь – значит тебя победили.
На самом деле, жизнь проста, но мы настойчиво её усложняем.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Андрей Ефименко
сообщение 14.1.2022, 15:51
Сообщение #63


Активист
****

Группа: Администраторы
Сообщений: 2 716
Регистрация: 8.2.2006
Пользователь №: 4



Цитата(anatoliy @ 14.1.2022, 2:21) *

Т.е. это не идентификатор установки SPult? И он останется неизменным, даже если установлю SPult на другой компьютер? Естественно подключение будет к тому-же lkdsdisp или Domain!

Да так.

В базе данных LKDSDISP это поле Прикрепленное изображение
В базе данных LKDSDOMAIN это поле Прикрепленное изображение

Цитата(anatoliy @ 14.1.2022, 2:21) *

А что по поводу выбора ответственного из формы формирования заявки, возможно такое ?

Технически, конечно, можно в форме сделать выбор из выпадающего списка обладателя сервисного ключа с номером сервисного ключа и передать эту информацию в POST запросе.
Сделать только это нужно так, что бы не сильно напрячь других пользователей изменением формы заявки.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
anatoliy
сообщение 14.1.2022, 22:37
Сообщение #64


Участник
**

Группа: Пользователи
Сообщений: 70
Регистрация: 9.4.2010
Из: Ростов-на-Дону
Пользователь №: 4 610



Цитата(Андрей Ефименко @ 14.1.2022, 15:51) *

Да так.

Ну тогда это то что надо!
Цитата(Андрей Ефименко @ 14.1.2022, 15:51) *


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

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


--------------------
Если ты ненавидишь – значит тебя победили.
На самом деле, жизнь проста, но мы настойчиво её усложняем.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Nikolaj76
сообщение 12.2.2022, 20:49
Сообщение #65


Участник
**

Группа: Пользователи
Сообщений: 70
Регистрация: 28.9.2021
Пользователь №: 8 603



Цитата(Андрей Ефименко @ 14.1.2022, 12:51) *

Да так.

В базе данных LKDSDISP это поле Прикрепленное изображение
В базе данных LKDSDOMAIN это поле Прикрепленное изображение
Технически, конечно, можно в форме сделать выбор из выпадающего списка обладателя сервисного ключа с номером сервисного ключа и передать эту информацию в POST запросе.
Сделать только это нужно так, что бы не сильно напрячь других пользователей изменением формы заявки.

Лично мое скромное мнение ни на что не претендующие: в запросе есть вся необходимая информация для выполнения заявки. Более детальная и подробная информация есть в основной базе SQL Spult. Единственное пожелание диспетчеров на которых сейчас мы это обкатываем, увеличить количество вводимых символов в форме Spult . Им приходится часто прибегать к сокращениям слов.
По поводу XML - не хотелось бы чтобы он поменял свою структуру внезапно. Т.К в нашем случае данные из него автоматом обрабатываются, записываются в базу и уже от туда формируется заявка, после чего диспетчеру остается только закрыть заявку написав комментарий и время пуска, когда механик доложит о выполнении.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Андрей Ефименко
сообщение 13.2.2022, 9:44
Сообщение #66


Активист
****

Группа: Администраторы
Сообщений: 2 716
Регистрация: 8.2.2006
Пользователь №: 4



Цитата(Nikolaj76 @ 12.2.2022, 21:49) *

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

Имеется в виду увеличить ширину поля Прикрепленное изображение?

Цитата(Nikolaj76 @ 12.2.2022, 21:49) *

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

Сама структура XML строки заявки и не будет никогда меняться.
Добавление новых параметров и ветвей в XML строку не должно влиять на ПО, разбирающее эту строку.
Обычно, и это правильно, для разбора XML строки используют готовые разборщики (процедуры), что позволяет пропускать новые параметры и ветви.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Nikolaj76
сообщение 13.2.2022, 12:31
Сообщение #67


Участник
**

Группа: Пользователи
Сообщений: 70
Регистрация: 28.9.2021
Пользователь №: 8 603



Цитата(Андрей Ефименко @ 13.2.2022, 6:44) *

Имеется в виду увеличить ширину поля Прикрепленное изображение?

Сам размер поля устраивает, количество вводимых символов не хватает. Сейчас можно ввести не более 61 символ.
Цитата(Андрей Ефименко @ 13.2.2022, 6:44) *

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

У нас данные из SPult обрабатываются с помощью PHP на сервере. Преобразуются в многомерный массив и от туда нужные данные раскладываются в базу SQL. Например имя диспетчерской выглядит так - ["DISP"]["@attributes"]["Name"] Сделано это потому что данный файлик Spult не на чистом XML. Его структура отличается от классического построения. При изменении структуры файла (изменении количества либо наименования тегов) массив тоже измениться. По этой же причине сейчас проблематично для меня обработать неисправности переданные в данном файле. Дело в том что они идут под одним и тем же тегом:
<ListStatus>
<Status Name="Пожарная опасность"/>
<Status Name="Кабина стоит"/>
</ListStatus>

и их количество меняется постоянно ( от 1 и до бесконечности). Можно конечно к ним обратиться с помощью функции foreach, но на мой взгляд удобнее было бы если данная информация шла под одним тегом
<Status> Name="Пожарная опасность. Кабина стоит" </Status>
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Андрей Ефименко
сообщение 13.2.2022, 15:25
Сообщение #68


Активист
****

Группа: Администраторы
Сообщений: 2 716
Регистрация: 8.2.2006
Пользователь №: 4



Цитата(Nikolaj76 @ 13.2.2022, 13:31) *

Сделано это потому что данный файлик Spult не на чистом XML. Его структура отличается от классического построения.

Хотелось бы узнать подробнее в чем "нечистость" и отличие от классического построения строки XML, которую SPult передаёт в качестве заявки на обслуживание.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Nikolaj76
сообщение 13.2.2022, 21:06
Сообщение #69


Участник
**

Группа: Пользователи
Сообщений: 70
Регистрация: 28.9.2021
Пользователь №: 8 603



В моем понимании( возможно не совпадающем с Вашим)
пример XML:
<?xml version="1.0"?>
<CAT>
<NAME>Izzy</NAME>
<BREED>Siamese</BREED>
<AGE>6</AGE>
<ALTERED>yes</ALTERED>
<DECLAWED>no</DECLAWED>
<LICENSE>Izz138bod</LICENSE>
<OWNER>Colin Wilcox</OWNER>
</CAT>

И Ваш код:
<?xml version="1.0"?>
<PULT ContentType="request" Name="Test" GUID="E91AF61B9F2E47AA82A23310ECB01D85" IdDB="1">
<DISP Name="Диспетчерская" IdDB="1">
<STREET Name="ул. Pro" IdDB="3">
<HOME Name="д. Pro" IdDB="3">
<LIFT Name="п. 1" ID="3" GUID="C3AE5B687D17410FB52953E84D793F2B" IDPro="1" IdDB="5" Note="Не работает"
<ListStatus>
<Status Name="Открыто МП"/>
<Status Name="Кабина стоит"/>
</ListStatus>
</LIFT>
</HOME>
</STREET>
</DISP>
</PULT>
Вопрос (Без каких либо упреков, недовольства либо сарказма в Ваш адрес): Как обработать данный файл тег <Status> если он не один, его количество неизвестно и в каждом запросе отличается? цель обработки- формирование таблички в базе данных где каждый тег это своя ячейка.

P/S: еще раз не воспринимайте это как критику. Вы проделали огромный фронт работ и система Обь востребована в сфере лифтового хозяйства. Вы разработчик и мы в любом случае можем лишь подстраиваться под Ваше программное обеспечение. Но человек по своей натуре лентяй ( и я не исключение) поэтому хотелось бы при взаимодействие с Вашим оборудованием и программным обеспечением совершать как можно меньше лишних телодвижений rolleyes.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Андрей Ефименко
сообщение 14.2.2022, 8:23
Сообщение #70


Активист
****

Группа: Администраторы
Сообщений: 2 716
Регистрация: 8.2.2006
Пользователь №: 4



Цитата(Nikolaj76 @ 13.2.2022, 22:06) *

В моем понимании( возможно не совпадающем с Вашим)
пример XML:
<?xml version="1.0"?>
<CAT>
<NAME>Izzy</NAME>
<BREED>Siamese</BREED>
<AGE>6</AGE>
<ALTERED>yes</ALTERED>
<DECLAWED>no</DECLAWED>
<LICENSE>Izz138bod</LICENSE>
<OWNER>Colin Wilcox</OWNER>
</CAT>

И Ваш код:
<?xml version="1.0"?>
<PULT ContentType="request" Name="Test" GUID="E91AF61B9F2E47AA82A23310ECB01D85" IdDB="1">
<DISP Name="Диспетчерская" IdDB="1">
<STREET Name="ул. Pro" IdDB="3">
<HOME Name="д. Pro" IdDB="3">
<LIFT Name="п. 1" ID="3" GUID="C3AE5B687D17410FB52953E84D793F2B" IDPro="1" IdDB="5" Note="Не работает"
<ListStatus>
<Status Name="Открыто МП"/>
<Status Name="Кабина стоит"/>
</ListStatus>
</LIFT>
</HOME>
</STREET>
</DISP>
</PULT>
Вопрос (Без каких либо упреков, недовольства либо сарказма в Ваш адрес): Как обработать данный файл тег <Status> если он не один, его количество неизвестно и в каждом запросе отличается? цель обработки- формирование таблички в базе данных где каждый тег это своя ячейка.

P/S: еще раз не воспринимайте это как критику. Вы проделали огромный фронт работ и система Обь востребована в сфере лифтового хозяйства. Вы разработчик и мы в любом случае можем лишь подстраиваться под Ваше программное обеспечение. Но человек по своей натуре лентяй ( и я не исключение) поэтому хотелось бы при взаимодействие с Вашим оборудованием и программным обеспечением совершать как можно меньше лишних телодвижений rolleyes.gif

Язык XML стандартизирован
И важно понять соответствует ли XML строка заявки стандарту на язык.
Если есть какие-то сомнения, то хотел бы их получить со ссылками на стандарт.

Почему это важно - использование XML делает описание каких-то параметров расширяемым, т.е. в описание можно добавлять новые параметры и этот не нарушит работу существующего ПО, если это ПО при чтении XML учитывает стандарт.

Конфигурационные файлы ДК "Обь" используют XML. Большие массивы данных передаются между модулями в виде XML.

В наших XML структурах используются атрибуты для большей компактности и читаемости, т.к. и человек может смотреть XML, а компактность важна для сетевой передачи.

Формируются и читаются XML данных штатными процедурами C++, C#, Java, Swift

Вот пример реального XML описания экранной формы универсального приложения Microsoft:

<Page
x:Class="WSPult.BatteryPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:WSPult"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" SizeChanged="Page_SizeChanged">

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock x:Name="Address" Margin="0,0,0,0" Grid.Row="0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" FontSize="18" FontStyle="Italic"/>
<StackPanel Grid.Row="1" Orientation="Horizontal">
<TextBlock x:Uid="BatteryPageStatus" FontSize="18" />
<TextBlock x:Name="Status" x:Uid="BatteryPageStatusGood" Margin="10,0,0,0" FontSize="18" />
</StackPanel>
<StackPanel Grid.Row="2" Orientation="Horizontal">
<TextBlock x:Uid="BatteryPageNextTest" FontSize="18" />
<TextBlock x:Name="Next" x:Uid="BatteryPageTimeTest" Margin="10,0,0,0" FontSize="18" />
</StackPanel>
<StackPanel Grid.Row="3" Orientation="Horizontal">
<TextBlock Text="Uzar:" FontSize="18" />
<TextBlock x:Name="UZar" Text="UZar" Margin="10,0,0,0" FontSize="18" />
<TextBlock Text="Ustart:" Margin="10,0,0,0" FontSize="18" />
<TextBlock x:Name="Ustart" Text="Ustart" Margin="10,0,0,0" FontSize="18" />
<TextBlock Text="Ufinish:" Margin="10,0,0,0" FontSize="18" />
<TextBlock x:Name="Ufinish" Text="Ufinish" Margin="10,0,0,0" FontSize="18" />
</StackPanel>
<Canvas x:Name="PanelGraph" Grid.Row="4">
<Line x:Name="BegVert" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="2"/>
<TextBlock x:Name="BegVertNum" Text="" FontSize="18" />
<Line x:Name="BegGoriz" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="2"/>
<TextBlock x:Name="BegGorizNum" Text="" FontSize="18" />
<Line x:Name="Line1" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num1" Text="" FontSize="18" />
<Line x:Name="Line2" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num2" Text="" FontSize="18" />
<Line x:Name="Line3" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num3" Text="" FontSize="18" />
<Line x:Name="Line4" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num4" Text="" FontSize="18" />
<Line x:Name="Line5" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num5" Text="" FontSize="18" />
<Line x:Name="Line6" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num6" Text="" FontSize="18" />
<Line x:Name="Line7" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num7" Text="" FontSize="18" />
<Line x:Name="Line8" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num8" Text="" FontSize="18" />
<Line x:Name="Line9" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num9" Text="" FontSize="18" />
<Line x:Name="Line10" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num10" Text="" FontSize="18" />
<Line x:Name="Line11" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num11" Text="" FontSize="18" />
<Line x:Name="Line12" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num12" Text="" FontSize="18" />
<Line x:Name="Line13" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num13" Text="" FontSize="18" />
<Line x:Name="Line14" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num14" Text="" FontSize="18" />
<Line x:Name="Line15" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num15" Text="" FontSize="18" />
<Path Stroke="Blue" StrokeThickness="4" >
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigure x:Name="Graph">
</PathFigure>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
<TextBlock x:Name="CurU" Text="" FontSize="18" />
<TextBlock x:Name="TimEnd" Text="" FontSize="18" />
<Line x:Name="EndTestLine" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="2"/>
<TextBlock x:Name="EndTestTime" Text="" FontSize="18" />
</Canvas>
</Grid>
</Page>







Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
anatoliy
сообщение 30.3.2022, 20:22
Сообщение #71


Участник
**

Группа: Пользователи
Сообщений: 70
Регистрация: 9.4.2010
Из: Ростов-на-Дону
Пользователь №: 4 610



Цитата
Сделано это потому что данный файлик Spult не на чистом XML. Его структура отличается от классического построения. При изменении структуры файла (изменении количества либо наименования тегов) массив тоже измениться. По этой же причине сейчас проблематично для меня обработать неисправности переданные в данном файле. Дело в том что они идут под одним и тем же тегом:
<ListStatus>
<Status Name="Пожарная опасность"/>
<Status Name="Кабина стоит"/>
</ListStatus>

и их количество меняется постоянно ( от 1 и до бесконечности). Можно конечно к ним обратиться с помощью функции foreach, но на мой взгляд удобнее было бы если данная информация шла под одним тегом
<Status> Name="Пожарная опасность. Кабина стоит" </Status>

Вы возможно путаете с JSON? там немного другая структура. У ЛКДС XML вроде соответствует требованиям Мелкософта.
И я лично не совсем понимаю зачем каждую Status Name раскидывать в массив. Я их собираю в одну строку и кладу в ячейку базы с описанием неисправности.


--------------------
Если ты ненавидишь – значит тебя победили.
На самом деле, жизнь проста, но мы настойчиво её усложняем.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

4 страниц V « < 2 3 4
Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29.3.2024, 5:35