Главная страница

Вкр. ВКР_Мехаев_И. Анализ предметной области и постановка задачи 8 1 Анализ предметной области 8 1 Органы дознания умвд россии по Вологод


Скачать 4.27 Mb.
НазваниеАнализ предметной области и постановка задачи 8 1 Анализ предметной области 8 1 Органы дознания умвд россии по Вологод
Дата07.03.2022
Размер4.27 Mb.
Формат файлаdocx
Имя файлаВКР_Мехаев_И.docx
ТипРеферат
#385938
страница7 из 8
1   2   3   4   5   6   7   8

3.3 Разработка модуля формирующего печатные документы


Формирование печатных документов будет реализовано с использованием библиотеки PhpWord. Установка библиотеки происходит при помощи команды copmoser’a «composer require phpoffice/phpword».

После установки библиотеки, создадим классы в которых будет содержаться код, генерирующий документ и функции скачивания в контроллерах допросов и обвинительных актов. Дальше создаются функции получения данных из баз данных, что изображено на рисунке 3.12.



Рисунок 3.12 – Код функций получения данных из базы данных

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

Функция генерации документа и создания раздела показаны на рисунке 3.13.



Рисунок 3.13 – Функция генерации документа

Все размеры отступов задаются во внутренних единицах – графических твипах. Твип равен одной двадцатой пункта или одна пятьсот шестьдесят седьмая сантиметра.

Помимо параметров шрифта, в документе необходимо задать параметры абзаца, такие как выравнивание, отступы, отступ красной строки и так далее.

Текст добавляется при помощи функции addtext в которую первым параметром передается строка текста, вторым параметры шрифта и третьим параметры абзаца – «$section->addText('ПРОТОКОЛ', array('bold'=>true), 'topP');»

Отступы создаются функцией addTextBreak, в которую можно передать такие же параметры как и в addText, но первым параметром будет идти число отступов, которые необходимо сделать – «$section->addTextBreak(1, null, null);»

Для добавления разрыва страниц – «$section->addPageBreak();»

Показания по делу, сведения о личности и другие занесенные в формы и сохраненные в базу сведения могут состоять из нескольких абзацев, но при подстановке этих сведений в формируемый документ при помощи команды вида «$section->addText($values['indications']);» переносы строк не сохранятся и в документ попадет весь текст одним абзацем. Чтобы этого избежать, воспользуемся следующей конструкцией:

«$textOfIndications = explode("\n", $values['indications']);

foreach($textOfIndications as $text) { $section->addText($text);}»

Для оформления верхней части документа и строк подписей участников допроса используем таблицы. Для таблиц установим нулевую толщину границ и в зависимости от того, что создаем – верхнюю часть документа или блок подписи участника, зададим выравнивание текста в ячейках в середине или по краям. Подобные блоки подписи появляются в документе довольно часто, поэтому было принято решение создать отдельную функцию вставки подобного блока, код отображен на рисунке 3.14.



Рисунок 3.14 – Функция вставки блока подписи в документ

После добавления всех необходимых строк будущего документа, определим имя сохраняемого документа и сохраним его на жесткий диск при помощи функции save, код которой показан на рисунке 3.15.



Рисунок 3.15 – Код сохраняющий документ на жесткий диск

После того, как класс формирующий печатный документ готов, в представления добавляются кнопки скачивания этого документа.

3.4 Разработка интерфейса


Создаваемая в рамках ВКР система, должна обладать простым, удобным и интуитивно понятным пользователю интерфейсом. Благодаря использованию фреймворка yii, так называемые виды (view), уже обладают необходимыми графическими элементами. Кнопки, поля ввода, виджеты для вывода информации из базы данных имеют встроенные в фреймворк классы, а также имеется поддержка шаблонов bootstrap. Однако сейчас, для пользователя, проект представляет собой набор страниц в браузере, поскольку в системе нет навигации и переходы между страницами отсутствуют. Пользователь может открыть форму «Создать дело», но после этого ничего не сможет сделать, он будет видеть только созданные им дела, а протоколы допроса и обвинительные акты останутся недоступны.

Необходимо отразить последовательность действий, выполняемых при производстве дознания по уголовному делу в системе:

  1. заводится уголовное дело

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

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

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

После перехода на веб-страницу системы, пользователь должен пройти аутентификацию в системе использовав кнопку «Вход». Вид страницы аутентификации представлен на рисунке 3.16.



Рисунок 3.16 – Страница входа в систему

После аутентификации пользователь попадает на главную страницу, где будет размещены инструкции по работе с системой, а также контакты для связи с сотрудниками, ответственными за работу системы. Вид главной страницы представлен на рисунке 3.17.



Рисунок 3.17 – Главная страница АРМ-Д после аутентификации пользователя

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

Для отображения только дел, созданных текущим пользователем или созданных в том же территориальным органе внутренних дел в классе CasesSearch, обеспечивающем поиск и фильтрацию определим id пользователя в функции search. Подобным образом настраивается отображение дел, для разных ролей.

Данные об авторе и территориальном органе внутренних дел в котором заведено дело, хранятся в таблице cases в виде ключей, то есть хранятся только цифры, связывающие дело с таблицей user и служебной таблицей tovd. Для отображения и фильтрации не цифр, а имен и полных названий ТОВД, в виджете находящемся в представлении открытых дел необходимо заменить название отображаемой колонки на конструкцию, обращающуюся к функции getUser, связывающую модели case и user. Код представления показан на рисунке 3.18, а результат на рисунке 3.19.



Рисунок 3.18 – Код представления поиска уголовных дел



Рисунок 3.19 – Окно отображения уголовных дел
По нажатию кнопки «Создать дело» откроется форма ввода первичных данных, данные об авторе и ТОВД заносится в таблицу cases автоматически. Пользователю необходимо только ввести номер дела и дату открытия.

Затем открывается окно работы с делом. Здесь при помощи встроенного в yii виджета detailView отображается только что введенная информация о деле, а также кнопка для редактирования данной информации.

Для отображения полного имени и ТОВД, заменим названия отображаемых аттрибутов, на конструкцию использующую класс ArrayHelper, позволяющую получить элементы из массива получаемого при использовании уже описанной функции getUser.

Внешний вид страницы конкретного уголовного дела представлен на рисунке 3.20.



Рисунок 3.20 – Внешний вид страницы с открытым делом

Также, в этом представлении добавим отображение всех лиц, участвующих деле при помощи виджета GridView. Для вывода только тех лиц, которые фигурируют в данном деле, необходима настройка провайдера данных. В виджет, отображающих пользователей, добавили колонку Action, а в ней кнопку «Протоколы» с передачей данных POST методом.
Так как при заполнении формы участника уголовного дела и протокола его допроса нет необходимости видеть все поля, например поле «В чем обвиняется» для свидетелей, потерпевших, специалистов и экспертов, настроим отображение полей в зависимости от выбранной роли. Для этого определим на какие группы можно разделить все поля. В нашем случае это:

  • personal_data – личные данные

  • incriminate – поля необходимые для допроса подозреваемых и обвиняемых

  • kids – поля необходимые для допроса несовершеннолетних

  • specialist - поля необходимые для допроса специалистов и экспертов

  • adults – поля необходимые для допроса совершеннолетних

Теперь в представлении persons и inquest создадим html-блоки div с определенными нами классами и внутрь этих блоков поместим соответствующие поля. Дальше создаем скрипт на языке JavaScript скрывающий все поля ввода на странице, до момента выбора роли допрашиваемого:

$this->registerJS('

$(".personal_data").hide();

$(".incriminate").hide();

$(".kids").hide();

$(".adults").hide();

$(".specialist").hide();

$(".duty").hide();

При выборе роли из списка срабатывает следующая часть кода, определяющая, какая роль выбрана и при помощи операторов else if будет выбрано, какие группы отображать, а какие скрыть:

let $roleInput = $("#persons-role")

$roleInput.on("change", function(){

let role = $(this).find("option:checked").val();

if(role ==="подозреваемый"){

$(".personal_data").show();

$(".incriminate").show();

$(".kids").hide();

$(".adults").show();

$(".specialist").hide();

$(".duty").show();

}

else if (role ==="потерпевший"){

$(".personal_data").show();

$(".incriminate").hide();

Но эта часть кода скрипта будет срабатывать лишь в случае выбора роли из списка, а при открытии созданной ранее записи все поля будут скрыты, поэтому необходимо дополнить скрипт так, чтобы вначале он определял, не выбрана ли уже какая-либо роль:

let role = $("#persons-roleinthis").find("option:checked").val();

if(role ==="подозреваемый"){

$(".personal_data").show();

$(".incriminate").show();

Кнопка «Протоколы» в строке с допрашиваемым откроет все протоколы допроса данного созданные в данном уголовном деле с участием определенного участника. В заголовке страницы и над виджетом, отображающим протоколы допроса добавлены подписи содержащие имя допрашиваемого и номер уголовного дела. Для этого на страницу передаются POST параметры о номере дела и id допрашиваемого, затем по id допрашиваемого определяется его Ф.И.О и при помощи подключенной библиотеки morphos проводится склонение имени:

morphos\Russian\inflectName($suspect['name'], 'родительный');

Внешний вид веб-страницы отображающей протоколы допроса конкретного участника уголовного дела представлен на рисунке 3.21.



Рисунок 3.21 – Окно просмотра и добавления протоколов допроса

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

Код представления сформированного обвинительного акта представлен на рисунке 3.22, а внешний вид веб-страницы на рисунке 3.23.



Рисунок 3.22 – Код представления обвинительного акта



Рисунок 3.23 – Отображение сформированного обвинительного акта

Под виджетом, отображающим первичную информацию сформированного обвинительного акта, располагается блок который позволяет ввести доказательства по делу и о том, что было установлено дознавателем по каждому подозреваемому. Информация по каждому подозреваемому извлекается из базы в массив, а затем выводится при помощи цикла foreach.

После того, как учтены все нюансы работы сотрудников в системе при проведении дознания по уголовному делу, осталось убрать лишние автоматически созданные системой элементы навигации.

1   2   3   4   5   6   7   8


написать администратору сайта