Диплом: Автоматизация учета предоставленных услуг в комплексном центре социального обслуживания населения и анализа данных на примере СПБ ГБУСОН "КЦСОН Адмиралтейского района Санкт-Петербурга"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
71
Рисунок 10 — Таблица работников и связанные с ней таблицы
Также на некоторых должностях можно оказывать только определенные
услуги (см. рисунок 10).
На рисунке 11 показаны вспомогательные таблицы, в которых хранятся
сведения о прожиточном минимуме (live_min), общие настройки ИС (setting),
праздничные дни (holiday) доступные всем пользователям. И таблица
журнала аудита (доступная лишь администратору) и логов изменения архивных
данных.
На рисунке 12 представлены таблицы учета выписанных квитанции
(invoice) и пришедших денежных средств (payment).
72
Рисунок 11 — Вспомогательные таблицы
Рисунок 12 — Таблицы квитанций и оплаты
На рисунке 13 представлены таблицы договоров (contracts),
получателей СУ (ufio) и их льготных категорий (category). Для каждого
73
создается набор положенных по ИППСУ услуг в таблице (contracts_has_serv),
где также указывается сколько и каких услуг уже было оказано, информация о
полученных услугах обновляется автоматически с помощью триггеров в таблице
main.
Рисунок 13 — Таблицы контрактов и категорий людей
Таблицы отчетов представленные на рисунке 14 это таблице с
результативной информацией, они заполняются с помощью групповых запросов.
Их основная функция — сократить объем информации необходимой для
обработки при подготовке отчетов.
На рисунке 15 представлены таблица отделений, РИПСО по которым
обслуживает отделение. Показаны связи между отделением и получателями СУ
обслуживаемыми на отделении, а также связь со списком услуг которые могут
быть оказаны на отделении.
74
Рисунок 14 — Таблицы отчетов
Рисунок 15 — Таблицы отделений и РИПСО по которым обслуживает
отделение
75
2.3.3. Структурная схема пакета (дерево вызова программных
модулей)
Модули и основные классы АИС ТриУСОН приведены в таблице 88.
Листинг программы клиента АИС ТриУСОН приведен в приложении Б.
Таблица 8
Модули и классы АИС ТриУСОН
п/п
Наименование модуля
или класса
Функции
1.
Главный модуль
(main_pyqt_frontend)
Содержит класс(MyApp) главного окна
приложения, экземпляр данного класса
создается при старте программы. Он
выводит диалог авторизации и главное
окно программы, а также содержит
большое число функций обработки
событий. Управляет внешним видом окна
программы. Содержит подклассы
управляющие группами вкладок.
2.
Класс данных (TsonData)
Хранит текущие данные, такие как:
настройки, параметры подключения к
базе данных, список моделей данных.
Содержит функции для загрузки и
сохранения данных.
3.
Модуль производных
классов custumQWidgets
Содержит классы производные от классов
фреймворка Qt: валидаторы, модели,
делегаты, представления, прочие
виджеты...
4.
Модули графического
интерфейса пользователя
(login_dialog.ui и
MainWindow.ui)
Файлы содержат описание графического
интерфейса пользователя
подготовленного с помощью программы
Qt Designer, в них используются классы
описанные в модуле custumQWidgets.
5.
Модуль console_frontend
Содержит классы автоматизирующие
тестирования программы.
6.
Модуль AIS-3USON.spec
Содержит настройки необходимые для
подготовки установочного пакета
программы-клиента с помощью утилиты
pyinstaller[25].
7.
Модуль kcson.mwb
Содержит схему базы данных, на ее
основе создается файл kcson.sql.
76
п/п
Наименование модуля
или класса
Функции
8.
Модуль
conv_mysql_to_mariadb
Небольшой скрипт который удаляет из
файла kcson.sql операторы специфичные
для MySQL, делая его пригодным к
использованию в СУБД mariadb.
9.
Модуль fill_templates
Содержит классы генерации отчетов,
актов, квитанций, договоров и прочих
документов на основе шаблонов.
2.3.4. Описание программных модулей
Рисунок 16 — Блок-схема алгоритма подготовки документов по
получателям СУ
77
Рисунок 17 — Блок-схема алгоритма печати модели данных для отладки
Листинг функции печати модели данных для отладки:
def print_model_data(model, rcount=None, ccount=None):
"""print rcount Rows and ccount Columns from model"""
78
#############################
# init
# ---------------------------
mdl: QSqlTableModel = model
if not rcount:
rcount = mdl.rowCount()
if not ccount:
ccount = mdl.columnCount()
#############################
# check bound of model
# ---------------------------
if rcount > mdl.rowCount(): rcount = mdl.rowCount()
if ccount > mdl.columnCount():
ccount = mdl.columnCount()
#############################
# print model head
# ---------------------------
res = ""
for c in range(ccount):
res = res + " | " + str(c) + " " \
+ mdl.headerData(c,
Qt.Horizontal,
Qt.DisplayRole)
#.encode('raw_unicode_escape').decode('utf-8')
print(res)
#############################
# print model data
# ---------------------------
for r in range(rcount):
res = ""
for c in range(ccount):
ind = mdl.index(r, c)
res = res + " " + str(ind.data(
Qt.DisplayRole))
print(res)
79
Фрагмент листинга основного класса хранения и обработки данных
TsonData:
class TsonData(QObject):
"""Manage and store Data"""
def __init__(self):
"""Constructor for 3sonData"""
super().__init__()
debug("TsonData init")
self.user = None
self.password = None
self.dep = None
self.server = None
self.port = None
#############################
# load local config file
# ---------------------------
try:
config = configparser.ConfigParser()
conf_path = os.path.join(home_dir, "3uson.conf")
if not os.path.exists(conf_path):
conf_path = "3uson.conf"
config.read(conf_path)
self.config = config
debug(config.sections())
self.user = self.config['DEFAULT']['lastuser']
self.server = self.config['DEFAULT']['server']
self.port = self.config['DEFAULT']['port']
except:
error("config read error")
#############################
# init _sql_column_replace
# ---------------------------
tr = self.tr
self._sql_column_replace = {
80
"id": tr("№"),
"serv_name": tr("Наименование услуги"),
"serv_tnum": tr("№ по ведомственному перечню"),
"year": tr("Год"),
"price": tr("Стоимость для обслуживаемого"),
"2ndprice": tr("Стоимость"),
"3rdprice": tr("Оплата для работника"),
"sub_serv": tr("№ категории"),
"sub_serv_str": tr("Категория услуги"),
"active": tr("Используется"),
"archive": tr("Архивный"),
"serv_id": tr("Услуга"),
"ripso_id": tr("Рипсо"),
"dep_id": tr("Отделение"),
"contracts_id": tr("Договор"),
"serv": tr("Услуга "),
"ripso": tr("Рипсо "),
"dep": tr("Отделение "),
"contracts": tr("Договор"),
"uslnum": tr("Кол-во услуг"),
"note": tr("Примечание"),
"prim": tr("Примечание "),
"worker": tr("Работник "),
"worker_id": tr("Работник"),
"ufio_id": tr("ФИО"),
"ufio": tr("ФИО "),
"vdate": tr("Дата оказания"),
"create": tr("Создана"),
"ts": tr("Изменена"),
"cr_by": tr("Кем создана"),
"overdid": tr("Переполнение"),
"ufiobirth": tr("Дата рождения"),
"ufioDeath": tr("Переполнение"),
"upd_by": tr("Кем изменена")
}

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)