Механика работы отчёта по весам

Базой для отчёта служат периоды срабатывания датчиков RFID. Периодом срабатывания в данном случае будет считаться весь период с первого определения и до его изменения. Даже если от датчика RFID не было данных, в расчёт возьмётся предыдущее валидное значение.


Далее периоды сработки распределяются по значениям в хронологическом порядке. Как пример:
Все периоды по журналу

rfid - период
111 - 12:00-12:10
111 - 12:20-12:30
333 - 12:40-12:50
111 - 12:50-13:00
333 - 13:00-13:10
222 - 13:20-13:30
111 - 13:30-13:40
333 - 13:50-14:00
333 - 14:10-14:20
222 - 14:40-14:50

Распределение по идентификациям

111 - 12:00-12:10
111 - 12:20-12:30
111 - 12:50-13:00
111 - 13:30-13:40

222 - 13:20-13:30
222 - 14:40-14:50

333 - 12:40-12:50
333 - 13:00-13:10
333 - 13:50-14:00
333 - 14:10-14:20


После того, как определены и распределены периоды, начинает работать один из двух алгоритмов - с использованием кнопок контроля первого/второго взвешивания или без учёта этих кнопок.
В обоих случаях периоды идентификации одного RFID выстраиваются в пары в хронологической последовательности. Если значения не были отброшены согласно выбранному алгоритму, то пары идентификаций будут иметь вид:
  • 111 - две пары идентификаций, 12:00-12:10/12:20-12:30 и 12:50-13:00/13:30-13:40
  • 222 - одна пара 13:20-13:30/14:40-14:50
  • 333 - две пары 12:40-12:50/13:00-13:10 и 13:50-14:00/14:10-14:20
После распределения значений по парам в них производится расчёт разности показаний, и в зависимости от разности результат попадает в столбцы "Выгружено" или "Загружено".

Алгоритм без учёта кнопок
В каждой отдельной идентификации ищется первое валидное значение веса.
  • Если вес за период идентификации не определён, он будет приравнен к нулю.


Алгоритм с использованием кнопок
В отдельном периоде идентификации ищется сработка кнопки контроля взвешивания, далее эти периоды выстраиваются в пары, эти пары попадают в строки отчёта.
  • Если в начале периода была сработка кнопки второго взвешивания, то этот период будет признан невалидным, построение пар идентификаций начнётся только с периода, когда было первое взвешивание.


  • Если в периоде была сработка обеих кнопок или не было кнопок вообще, то этот период будет признан невалидным и не войдёт в пару.


  • Если в одном периоде была нормальная сработка первой кнопки, и в следующем периоде так же будет первая кнопка, то первый период отбрасывается, и в расчёт берётся второй период. Если после периода с первой кнопкой идёт период с второй кнопкой, то пара периодов будет считаться завершённой, и новая пара будет строиться с первой кнопки.


  • Если в течение одного периода было несколько сработок одной кнопки контроля взвешивания, то для первого взвешивании возьмётся максимальный вес за период, для второго - минимальный за период. При этом, если сработка контроля не совпала с определением веса (значения контроля и веса не были в одном сообщении), то в расчёт возьмётся первое валидное значение датчика весов. По сути, расчёт будет вестись по алгоритму без кнопок, но порядок взвешивания будет учтён.