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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
111
FormController.java
package ru.pfrf.cs.fo.rest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import ru.pfrf.cs.fo.module.form.FormModule;
import ru.pfrf.cs.fo.module.form.RegistrationForm;
@RestController
@RequestMapping("/rest/v1/form/")
public class FormController {
private final FormModule module;
@Autowired
public FormController(FormModule module) {
this.module = module;
}
/**
* Параметры формы регистрации
* @return 200, 401, 403
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public RegistrationForm getStart() {
//получение параметров
return null;
}
/**
* Форма новой регистрации
* @param formId
* @return 200, 401, 403, 404
*/
@RequestMapping(value = "/{formId}", method = RequestMethod.GET)
public RegistrationForm getFormNewRegistration(@PathVariable long formId) {
//получить форму регистрации
return module.getForm(formId);
}
/**
* Форма новой регистрации с заполненными полями по предыдущей регистрации
* @param formId
* @param regId
* @return 200, 401, 403, 404
*/
@RequestMapping(value = "/{formId}", method = RequestMethod.POST)
public RegistrationForm postFormRegistration(@PathVariable long formId,
@RequestBody long regId){
//получить форму регистрации и регистрацию
return module.getForm(formId, regId);
}
/**
* Форма редактирования регистрации
* @param formId
* @param regId
* @return 200, 401, 403, 404
*/
@RequestMapping(value = "/{formId}", method = RequestMethod.PUT)
public RegistrationForm putFormRegistration(@PathVariable long formId,
@RequestBody long regId){
//Получить форму регистрации и регистрацию
return module.getForm(formId, regId);
}
/**
* Форма просмотра регистрации
* @param regId
* @return 200, 401, 403, 404
*/
112
@RequestMapping(value = "/registration/{regId}", method = RequestMethod.GET)
public RegistrationForm getFormRegistration(@PathVariable long regId){
//Получить форму регистрации и регистрацию
return null;
}
/**
* Форма редактирования результатов рассмотрения
* @param formId
* @param regId
* @return 200, 401, 403, 404
*/
@RequestMapping(value = "/{formId}/result", method = RequestMethod.POST)
public RegistrationForm postFormRegistrationResult(@PathVariable long formId,
@RequestBody long regId) {
return null;
}
}
FormModule.java
package ru.pfrf.cs.fo.module.form;
public interface FormModule {
RegistrationForm getForm(long formId);
RegistrationForm getForm(long formId, long regId);
RegistrationForm getFormResult(long formId, long regId);
}
FormService.java
package ru.pfrf.cs.fo.module.form;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.stereotype.Service;
import ru.pfrf.cs.fo.module.form.manager.FormManager;
@Service
@EnableConfigurationProperties(FormsProperties.class)
public class FormService implements FormModule {
private final FormManager manager;
@Autowired
public FormService(FormManager manager) {
this.manager = manager;
}
public RegistrationForm getForm(long formId){
return manager.getForm(formId);
}
public RegistrationForm getForm(long formId, long regId){
return manager.getForm(formId, regId);
}
@Override
public RegistrationForm getFormResult(long formId, long regId) {
return manager.getFormResult(formIs, regId);
}
}
113
SearchController.java
package ru.pfrf.cs.fo.rest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import ru.pfrf.cs.fo.core.register.db.entity.Registration;
import ru.pfrf.cs.fo.module.form.RegistrationForm;
import ru.pfrf.cs.fo.module.search.SearchModule;
import java.util.List;
@RestController
@RequestMapping("/rest/v1/search/")
public class SearchController {
private final SearchModule module;
@Autowired
public SearchController(SearchModule module) {
this.module = module;
}
/**
* Поиск регистрации по образцу(анкетные данные)
* В теле принимает объект типа{@link
ru.pfrf.cs.fo.core.register.db.entity.Registration} с предзаполнеными полями в
качестве критерия для поиска(образец)
* @return 200, 403
*/
@RequestMapping(value = "/", method = RequestMethod.POST)
public List<Registration> getFormNewRegistration(@RequestBody Registration
registration) {
return module.searchByRegistrationExample(registration);
}
/**
* Поиск регистрации по образцу(документы)
* В теле принимает объект типа{@link
ru.pfrf.cs.fo.core.register.db.entity.Registration} с предзаполнеными полями в
качестве критерия для поиска(образец)
* и параметр - номер страницы
* @return 200, 403
*/
@RequestMapping(value = "/{pageNumber}", method = RequestMethod.POST)
public Page<Registration> getRegistrationExamplesOnPage(@RequestBody
Registration registration, @PathVariable int pageNumber) {
return module.searchByRegistrationExamplePagination(registration,
pageNumber);
}
}
SearchModule.java
package ru.pfrf.cs.fo.module.search;
import org.springframework.data.domain.Page;
import ru.pfrf.cs.fo.core.register.db.entity.Registration;
import java.util.List;
/**
* Интерфейс модуля поиска регистраций
*/
public interface SearchModule {
/**
* Поиск регистраций по регистрационному образцу
114
* @param registration предзаполненный образец
*/
List<Registration> searchByRegistrationExample(Registration registration);
/**
* Поиск регистраций по регистрационному образцу
* @param registration предзаполненный образец
* @param pageNum номер страницы
*/
Page<Registration> searchByRegistrationExamplePagination(Registration
registration, int pageNum);
}
SearchService.java
package ru.pfrf.cs.fo.module.search;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Example;
import ru.pfrf.cs.fo.core.register.db.entity.Registration;
import ru.pfrf.cs.fo.module.search.db.SearchRepository;
import java.util.List;
@Service
public class SearchService implements SearchModule {
private SearchRepository repository;
private final int REGISTRATION_ON_PAGE = 10;
public SearchService(SearchRepository repository) {
this.repository = repository;
}
public List<Registration> searchByRegistrationExample(Registration
registration) {
Example<Registration> registrationExample = Example.of(registration);
return repository.findAll(registrationExample);
}
public Page<Registration> searchByRegistrationExamplePagination(Registration
registration, int pageNum) {
Example<Registration> registrationExample = Example.of(registration);
return repository.findAll(registrationExample, PageRequest.of(pageNum,
REGISTRATION_ON_PAGE));
}
}
Источник: https://baza.diplomsite.ru/previewfile/1902