1

Генерация не повторяющейся id геозоны (без присваивания свободной id)

Тема: Генерация не повторяющейся id геозоны (без присваивания свободной id)

Добрый день! Возникла такая проблема. Выполнили синхронизацию геозон между Wialon и своей системой учёта через API Wialon. Для сопоставления берем id геозоны как уникальный идентификатор, то есть одной геозоне принадлежит один уникальный id и всегда за ним закрепленный даже после удаления геозоны. Но как выявлялось в Wialon генерация id происходит не по принципу каждой созданной геозоне присваивается новая id, и новой созданной геозоне подставляется свободный id (если такая есть). В результате у нас теряется смысл взятия геозон по id (ломается синхронизация).
Так как в Wialon геозоны удаляют их уже может не существовать и создают новые геозоны, и предполагается что будет присваиватся для
нее новый уникальный номер для сопоставления с 1С, а этого не происходит из за присвоение старой id.
При такой логике синхронизация не возможна (происходит путаница) мы не можем понять какая это геозона так как геозона с такой id была удалена, а она при создании опять появилась.Возможно можно добавить отдельное поле при котором геозона имеет уникальный код и не присваивается.

Будем благодарны если сможете взять в доработку. Нам очень важно чтобы это было именно так. Так как у нас теряется вся логика. Спасибо.

2

Генерация не повторяющейся id геозоны (без присваивания свободной id)

Re: Генерация не повторяющейся id геозоны (без присваивания свободной id)

Добрый день

Используйте свзязку id + ct (creation_time)

3

Генерация не повторяющейся id геозоны (без присваивания свободной id)

Re: Генерация не повторяющейся id геозоны (без присваивания свободной id)

В структуре геозон присутствует элемет json параметр jp, который системой не используеться. Судя по всему туда можно сохранить произвольную информацию. Работоспособность этого элимента я не тестировал.
https://sdk.wialon.com/wiki/ru/sidebar/ … _zone_data

FFA0-0BBB-8911-15BB

https://www.reg.ru
4

Генерация не повторяющейся id геозоны (без присваивания свободной id)

Re: Генерация не повторяющейся id геозоны (без присваивания свободной id)

Добрый день. Вариант был бы возможен. В контексте синхронизации. Но мы так же берем отчёты по стоянкам, заправкам, геозонам по api, где выводится id геозоны, и сопоставляемым данные со своей системой, но к сожалению по этим отчётам creation_time не выводится. Возможно можно добавить поле в отчётах по стоянкам, заправкам, геозонам данное поле.

shmi пишет:

Добрый день

Используйте свзязку id + ct (creation_time)

5

Генерация не повторяющейся id геозоны (без присваивания свободной id)

Re: Генерация не повторяющейся id геозоны (без присваивания свободной id)

Maxsimo

Wialon всегда выполняет отчёт по актуальным геозонам (тем, которые сейчас созданы). Добавление ct в отчёты ничего не даст, для Wialon id геозоны её однозначно идентифицирует wink  Перед выполнением отчёта в любом случае надо запросить геозоны, чтобы знать их актуальное состояние.

Логика такая
- у вас в базе "старая" геозона с id:5, в Wialon пересоздаётся геозона с id:5
- в 1С вы получаете геозоны, пробегаетесь сравнивая id+ct
- т.к у геозоны id:5 сt поменялось - создаёте новую геозону (нужна ли старая - зависит от вашей логики)
- выполняете отчёт, приходит id:5 - и это будет "новая" геозона, о старых Wialon ничего не знает

Конечно, возможен кейс, что геозона будет изменена между её получением и выполнением отчёта. Чтобы минимизировать этот риск, можно  отправлять search_item и execute_report в одном батче или подписаться на измения и слушать изменение геозон через /avl_evts

Очень многое зависит от частоты изменения геозон и выполнения отчёта