Диплом: Автоматизация обработки заявок Пенсионным Фондом РФ

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
96
Построена и изображена модель базы данных. Дополнительно рассмотрена
архитектура проектного приложение, дано объяснение эффективности,
представлены UML диаграммы модулей вместе с описанием. Проиллюстрирована
схема взаимодействия модулей между друг другом. Большое внимание уделено
взаимодействию ядер модуля и их фасадом. Произведен обзор системы
построение форм заявлений. В заключении части произведен контрольный
пример, на регистрацию заявления от вымышленного гражданина РФ.
Произведен обзор и сделаны выводы.
В третьем разделе была выбрана методика расчета экономической
эффективности. Представлены формулы расчета и произведен расчет.
Отображено экономическое обоснование проекта. Сделаны выводы выгодности
по расчету трудоемкости, стоимостных затрат и затрат на заработную плату.
Данные были представлены в виде таблиц и графиков. Сделано заключение о
выгодности внедрения проектного решения.
97
Список использованной литературы
1. Постановление ВС РСФСР от 22.12.1990 N 442-1 "Об организации
Пенсионного фонда РСФСР"
2. Постановление ВС РФ от 27.12.1991 N 2122-1 (ред. от 05.08.2000) "Вопросы
Пенсионного фонда Российской Федерации (России)"
3. Федеральный закон "О банках и банковской деятельности" от 02.12.1990 N
395-1
4. Федеральный закон от 05.04.2013 N 44-ФЗ (ред. от 31.12.2017) "О контрактной
системе в сфере закупок товаров, работ, услуг для обеспечения
государственных и муниципальных нужд" (с изм. и доп., вступ. в силу с
11.01.2018)
5. Избачков Ю.С., Петров В.Н., Васильев А.А., Телина И.С. Информационные
системы: Учебник для вузов. 3-е изд. – СПб: Питер, 2011. – 544 с.:ил.
6. Айвалиотис Д. Администрирование сервера NGINX. – М.: ДМК Пресс, 2015.
– 288 с.:ил. ISBN 978-5-94074-162-4
7. Язык SQL. Базовый курс: учебно-практическое. пособие / Е. П. Моргунов; под
ред. Е. В. Рогова, П. В. Лузанова; Postgres Professional. — М., 2017. — 257 с
Моргунов Е.П.
8. Эрик Редмонд, Джим Р.Уилсон. Семь баз данных за семь недель. Введение в
современные базы данных и идеологию NoSQL. Под редакцией Жаклин
Картер / Пер. с англ. Слинкин А.А. – М: ДМК Пресс, 2013 – 384с.:ил
9. Публичный отчет Пенсионного фонда Российской федерации за 2016г.,
Печатное издание / ПФР 2017г. – 89 стр.
10. Roy Thomas Fielding. Architectural Styles and the Design of Network-based
Software Architectures. Диссертация 162 стр. 2000
11. Tejaswini Mandar Jog. Learning Spring 5.0 - Packt Publishing 2017 – 422 стр.
12. Greg L. Turnquist. Learning Spring Boot 2.0, 2-е издание. – Published by Packt
Publishing Ltd 2017. ISBN: 178646378 460 стр.
13. Mohamed Alibi, Bhaskarjyoti Roy. Mastering CentOS 7 (ISBN 978-1-78528-239-
3). Издательство PACKT Publisher, 2016 год. – 271 стр.:ил;
14. Spring Microservices by Rajesh RV, Publisher: Packt Publishing 2016, ISBN:
9781786466686
98
15. Ari Lerner, Felipe Coury, Nate Murray, Carlos Taborda. The Complete Book on
Angular 5 - Fullstack 2017 – 682 стр.
16. DB2 Версии 9.7 для Linux, UNIX и Windows [Электронный ресурс] // IBM
[Офиц. сайт].
URL:https://www.ibm.com/support/knowledgecenter/ru/SSEPGG_9.7.0/com.ibm.
db2.luw.licensing.doc/doc/r0053238.html (дата обращения: 10.03.2018).
17. Postgres NoSQL лучше, чем MongoDB [Электронный ресурс] // TechMedia,
сайт Хабрахабр [Офиц. сайт]. URL: https://habrahabr.ru/post/272735/ (дата
обращения: 12.03.2018).
18. Usage of web servers broken down by ranking [Электронный ресурс] // W3 Techs
[Офиц. сайт]. URL: https://w3techs.com/technologies/cross/web_server/ranking
(дата обращения: 14.03.2018).
19. Документация Postgres: Секционирование таблиц [Электронный ресурс] //
Postgres Professional [Офиц. сайт]. URL:
https://postgrespro.ru/docs/postgresql/10/ddl-partitioning (дата обращения:
12.03.2018).
20. ЗАКУПКА №0273100000117000269 [Электронный ресурс] // Официальный
сайт Единой Информационной системы в сфере закупок. [Офиц. сайт].
URL:http://zakupki.gov.ru/epz/order/notice/ok44/view/common-
info.html?regNumber=0273100000117000269)
21. Индиго-ИТ провела сравнительное тестирование производительности СУБД
[Электронный ресурс] // Servernews [Офиц. сайт].
URL:https://servernews.ru/914244 (дата обращения: 10.03.2018).
22. Информационные технологии. Учебное пособие. Алешин Л.И., Максимов Н.В.
[Электронный ресурс] // Электронная библиотека. Университет Синергия
URL:http://e-biblio.ru/?page=about&about=424 (дата обращения 9.04.2018
23. Список версий IBM WebSphere Application Server [Электронный ресурс] //
Wikimedia Foundation, Inc. [Офиц. сайт].
URL:https://ru.wikipedia.org/wiki/Список_версий_IBM_WebSphere_Application
_Server (дата обращения: 10.03.2018).
99
Приложение
Фрагменты исходных кодов проектной системы «Фронт-Офис»
Приложение написано на JAVA. Для упрощения наглядности кода, а так же для
избавления от рутины, будет использоваться Spring Framework. Все рутинные
задачи помечаются аннотациями(@). Для избавления пользователя знать о
зависимостях приложения, используется автоматизированный сборщик Gradle.
Скрипт сборки представлен ниже:
buildscript {
ext {
springBootVersion = '2.0.0.M7'}
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-
plugin:${springBootVersion}")
}}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'ru.pfrf'
version = '0.9.18-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('org.springframework.boot:spring-boot-starter-cache')
compile('org.springframework.boot:spring-boot-starter-data-elasticsearch')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-data-rest')
compile('org.springframework.data:spring-data-rest-hal-browser')
compile('org.springframework.boot:spring-boot-starter-hateoas')
compile('org.springframework.boot:spring-boot-starter-web')
compileOnly('org.projectlombok:lombok')
compileOnly('org.springframework.boot:spring-boot-configuration-processor')
runtime('org.springframework.boot:spring-boot-devtools')
runtime('org.postgresql:postgresql')
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile('org.springframework.restdocs:spring-restdocs-mockmvc')
}
В скрипте определяются требуемые зависимости, для корректной сборки
приложения.
100
Точка входа находится в файле FoApplication.java. Spring Framework позволяет
запускать сервер приложений автоматически. Для этого в файле с методом main.
Мы выполняем метод run, главного класса.
package ru.pfrf.cs.fo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RsApplication {
public static void main(String[] args) {
SpringApplication.run(RsApplication.class, args);
}
}
Все rest-сервисы находятся в пакете ru/pfrf/cs/fo
Пример, класса-фасада - контроллера связанного с регистрационным модулем:
package ru.pfrf.cs.fo.rest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import ru.pfrf.cs.fo.core.register.RegistrationModule;
import ru.pfrf.cs.fo.core.register.db.entity.Registration;
import ru.pfrf.cs.fo.core.register.IRegistration;
@RestController
@RequestMapping("/rest/v1/registration")
public class RegisterController {
private final RegistrationModule module; // Здесь будет находиться реализация ядра
@Autowired
public RegisterController(RegistrationModule module) {
this.module = module;
}
/**
* Создание новой регистрации
* @return 201, 401, 403
*/
@RequestMapping(value = "/", method = RequestMethod.POST)
public String postRegistration(@RequestBody Registration registration) {
return module.createRegistration(registration); //Контролер вызывает функцию ядра
}
/**
* Получение данных по регистрации
* @param regId идентификационный номер обращения
* @return 200, 401, 403, 404
*/
@RequestMapping(value = "/{regId}", method = RequestMethod.GET)
public IRegistration getRegistration(@PathVariable long regId) {
return module.getRegistration(regId);
}
/**
* Обновление данных по регистрации
* @param regId идентификационный номер обращения
* @param registration регистрационные данные
* @return 200, 401, 403, 404
*/
@RequestMapping(value = "/{regId}", method = RequestMethod.PUT)
public IRegistration saveRegistration(
@PathVariable long regId,
@RequestBody Registration registration)
{
101
return module.saveRegistration(regId, registration);
}
}
Контроллер связан с интерфейсом модуля регистрации:
RegistrationModule.java
package ru.pfrf.cs.fo.core.register;
import ru.pfrf.cs.fo.core.AppResult;
/**
* Интерфейс модуля регистраций
* Модуль осуществляет операциии CRUD регистраций и
* дополнительные специфичные оперцации по регистрациям
* соответствующие бизнес требованиям
*/
public interface RegistrationModule {
/**
* Получение данных по регистрации
* (C<b>R</b>UD)
* @param regId - идентификатор регистрации
* @return объект регистрации
*/
IRegistration getRegistration(long regId);
//Registration getRegistration(String regNum);
/**
* Создание новой регистрации
* (<b>C</b>RUD)
* @param IRegistration - рег. данные
* @return идентификатор регистрации
*/
long createRegistration(IRegistration IRegistration);
/**
* Сохранение данных по регистрации
* (CR<b>U</b>D)
* @param regId - рег. данные
* @param IRegistration - рег. данные
* @return ответ системы
*/
IRegistration saveRegistration(Long regId, IRegistration IRegistration);
/**
* Удаление регистрации
* (CRU<b>D</b>)
* @param regId
* @return ответ системы
*/
AppResult deleteRegistration(long regId);
/**
* Управление состоянием регистрации: аннулировано/не аннулировано
* @param regId - ID регистрации
* @param isAnnulled - true установить регистрации regId аннулированное
* состояние, false - регистрация не аннулирована
* @return
*/
IRegistration annulledStateRegistration(long regId, boolean isAnnulled);
}
RegistrationService.java – реализация интерфейса модуля
package ru.pfrf.cs.fo.core.register;
102
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.pfrf.cs.fo.core.AppResult;
import ru.pfrf.cs.fo.core.exception.RegistrationNotFoundException;
import ru.pfrf.cs.fo.core.register.db.RegisterRepository;
import ru.pfrf.cs.fo.core.register.db.entity.Registration;
import java.util.Date;
import java.util.Optional;
@Service
public class RegistrationService implements RegistrationModule {
private RegisterRepository repository;
@Autowired
public RegistrationService(RegisterRepository repository) {
this.repository = repository;
}
/**
* Получение регистрации по идентификатору
* @param regId - идентификатор регистрации
* @return объект-регистрация с заданным id
* @throws RegistrationNotFoundException
*/
@Override
public IRegistration getRegistration(long regId)
throws RegistrationNotFoundException
{
Optional result = repository.findById(regId);
if (!result.isPresent()) throw new RegistrationNotFoundException();
return result.get();
}
/**
* Создание новой регистрации
* @param registration - рег. данные
* @return
*/
@Override
public long createRegistration(IRegistration registration) {
registration.setRegId(null);
registration = saveRegistration(registration);
return registration.getRegId();
}
/**
* Сохранение регистрации с указанным идентификатором и регистрационными
* данными
* @param regId - идентификатор регистрации
* @param registration - рег. данные
* @return рег.данные
*/
@Override
@Deprecated
public IRegistration saveRegistration(Long regId, IRegistration registration) {
registration.setRegId(regId);
repository.existsById(registration.getRegId());
return saveRegistration(registration);
}
/**
* Осуществляет фактическое сохранение в БД
* @param iRegistration - рег.данные
* @return сохраненные регистрационные данные
*/
private IRegistration saveRegistration(IRegistration iRegistration){
iRegistration = repository.save((Registration) iRegistration);
return iRegistration;
103
}
@Override
public AppResult deleteRegistration(long regId) {
return null;
}
@Override
public IRegistration annulledStateRegistration(long regId, boolean isAnnulled)
throws RegistrationNotFoundException
{
IRegistration iRegistration = getRegistration(regId);
if(iRegistration != null){
iRegistration.setActive(isAnnulled);
return saveRegistration(iRegistration);
}
return null;
}
}
iRegistration.java – интерфейс сущности регистрации
package ru.pfrf.cs.fo.core.register;
import java.util.Date;
import java.util.HashMap;
public interface IRegistration {
Long getRegId();
void setRegId(Long regId);
String getPersnum();
void setPersnum(String persnum);
String getName();
void setName(String name);
String getFamily();
void setFamily(String family);
String getPatronymic();
void setPatronymic(String patronymic);
Date getCreateDate();
void setCreateDate(Date createDate);
Date getRegisterDate();
void setRegisterDate(Date registerDate);
Date getEditDate();
void setEditDate(Date editDate);
Date getReceiveDate();
void setReceiveDate(Date receiveDate);
String getCreateOperator();
void setCreateOperator(String createOperator);
String getEditOperator();
104
void setEditOperator(String editOperator);
Long getCreateAreaId();
void setCreateAreaId(Long createAreaId);
Long getEditAreaId();
void setEditAreaId(Long editAreaId);
String getCreateArea();
void setCreateArea(String createArea);
String getEditArea();
void setEditArea(String editArea);
Date getEndDate();
void setEndDate(Date endDate);
Integer getStatus();
void setStatus(Integer status);
String getCorpNum();
void setCorpNum(String corpNum);
Boolean isActive();
void setActive(Boolean active);
HashMap getValues();
void setValues(HashMap values);
Long getFormId();
void setFormId(Long formId);
}
RegisterRepository:
package ru.pfrf.cs.fo.core.register.db;
import org.springframework.data.repository.CrudRepository;
import ru.pfrf.cs.fo.core.register.db.entity.Registration;
public interface RegisterRepository extends CrudRepository<Registration, Long> {}
Registration.java:
package ru.pfrf.cs.fo.core.register.db.entity;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import ru.pfrf.cs.fo.core.register.db.types.JSONValues;
import ru.pfrf.cs.fo.core.register.IRegistration;
import javax.persistence.*;
import java.util.Date;
import java.util.HashMap;
@Entity
105
@Table(schema = "register", name = "register")
@TypeDef(name = "JSONValues", typeClass = JSONValues.class)
public class Registration implements IRegistration {
@Id
@SequenceGenerator( name = "registrationSeq",
sequenceName = "register.register_id_seq",
allocationSize = 1)
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "registrationSeq")
@Column(name = "id")
private Long regId;
private String persnum;
private String name;
private String family;
private String patronymic;
@Column(name = "create_date")
private Date createDate;
@Column(name = "register_date")
private Date registerDate;
@Column(name = "edit_date")
private Date editDate;
@Column(name = "receive_date")
private Date receiveDate;
@Column(name = "create_operator")
private String createOperator;
@Column(name = "edit_operator")
private String editOperator;
@Column(name = "create_area_id")
private Long createAreaId;
@Column(name = "edit_area_id")
private Long editAreaId;
@Column(name = "create_area")
private String createArea;
@Column(name = "edit_area")
private String editArea;
@Column(name = "end_date")
private Date endDate;
private Integer status;
@Column(name = "corp_num")
private String corpNum;
@Column(name = "is_active")
private Boolean active;
@Type(type = "JSONValues")
private HashMap values;
@Column(name = "theme_id")
private Long formId;
public Registration() {
}
public Long getRegId() {
return regId;
}
public void setRegId(Long regId) {
this.regId = regId;
}
public String getPersnum() {
return persnum;
}
public void setPersnum(String persnum) {
this.persnum = persnum;
}
public String getName() {
return name;
}

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

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