diff --git a/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/controllers/BuildingController.java b/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/controllers/BuildingController.java new file mode 100644 index 0000000..3759065 --- /dev/null +++ b/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/controllers/BuildingController.java @@ -0,0 +1,117 @@ +package ru.molokoin.clientserviceteachers.controllers; + +import java.time.Duration; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.reactive.function.client.WebClient; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; + +import reactor.core.publisher.Mono; +import ru.molokoin.clientserviceteachers.entities.Building; +import ru.molokoin.clientserviceteachers.entities.Teacher; + +@Controller +@RequestMapping(path = "/") +public class BuildingController { + @Autowired + private WebClient client; + + @GetMapping("/buildings") + public String buildingList(Model model) throws JsonMappingException, JsonProcessingException{ + List buildings = client.method(HttpMethod.GET) + .uri("/building/list") + .retrieve() + .bodyToMono(new ParameterizedTypeReference >(){}) + .block(); + + model.addAttribute("building_list", buildings); + model.addAttribute("b", new Building()); + System.out.println("BUILDINGS:" + buildings.toString()); + return "buildings"; + } + + @GetMapping("/building-edit/{id}") + public String buildingById(Model model, @PathVariable Long id) { + Building b = client.get() + .uri("/building/" + id) + .retrieve() + .bodyToMono(Building.class) + .timeout(Duration.ofSeconds(1)) + .block(); + model.addAttribute("building", b); + return "building-edit"; + } + + @PostMapping( + path = "/building/add", + consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, + produces = { + MediaType.APPLICATION_JSON_VALUE + }) + public String addBuilding(@ModelAttribute("b") @Validated Building building) throws JsonMappingException, JsonProcessingException{ + client.post() + .uri("/building/create") + .body(Mono.just(building), Building.class) + .retrieve() + .toBodilessEntity() + .timeout(Duration.ofSeconds(1)) + .block(); + return "redirect:/buildings"; + } + + @GetMapping( + path = "/building/add" + ) + public String addBuildingFrame(Model model){ + Building building = new Building(); + model.addAttribute("newBuilding", building); + return "building-add"; + } + + @GetMapping(path = "/building/delete/{id}") + public String deleteBuilding(@PathVariable Long id) throws JsonMappingException, JsonProcessingException{ + client.delete() + .uri("/building/delete/" + id) + .retrieve() + .bodyToMono(String.class) + .timeout(Duration.ofSeconds(1)) + .block(); + return "redirect:/buildings"; + } + + @PostMapping( + path = "/building/update/{id}", + consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, + produces = { + MediaType.APPLICATION_JSON_VALUE + }) + public String updateTeacher(@PathVariable Long id + , @ModelAttribute("b") @Validated Building building) throws JsonMappingException, JsonProcessingException{ + System.out.println(">>>>>>>>>>>>>> ####################### <<<<<<<<<<<<<<<<<<<<"); + System.out.println(">>>>>>>>>>>>>> ####################### <<<<<<<<<<<<<<<<<<<<"); + System.out.println(">>>>>>>>>>>>>>" + building.toString()); + client.post() + .uri("/building/update/" + building.getId()) + .body(Mono.just(building), Building.class) + .retrieve() + .toBodilessEntity() + .timeout(Duration.ofSeconds(1)) + .block(); + return "redirect:/buildings"; + } + +} diff --git a/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/entities/Building.java b/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/entities/Building.java new file mode 100644 index 0000000..d1deeb3 --- /dev/null +++ b/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/entities/Building.java @@ -0,0 +1,30 @@ +package ru.molokoin.clientserviceteachers.entities; + +import java.io.Serializable; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * Сущность объекта строительства + */ +@NoArgsConstructor +@AllArgsConstructor +@Data +public class Building implements Serializable{ + private long id; + private String name_short;//Сокращенное наименование + private String name_full;//Полное наименование + private String code_short;//Краткий код + private String code_full;//Полный код + + // подготовить конструкторы на все варианты внесения информации о преподавателях + public Building(String name_short, String name_full, String code_short, String code_full){ + this.name_short = name_short; + this.name_full = name_full; + this.code_short = code_short; + this.code_full = code_full; + } + +} diff --git a/client-service-teachers/src/main/resources/templates/building-add.html b/client-service-teachers/src/main/resources/templates/building-add.html new file mode 100644 index 0000000..89212ba --- /dev/null +++ b/client-service-teachers/src/main/resources/templates/building-add.html @@ -0,0 +1,46 @@ + + + + + Building + + + + +
+ edit : building +
+
+

Добавление нового объекта строительства:

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+
+
+ +
+
+ \ No newline at end of file diff --git a/client-service-teachers/src/main/resources/templates/building-edit.html b/client-service-teachers/src/main/resources/templates/building-edit.html new file mode 100644 index 0000000..8f1fedb --- /dev/null +++ b/client-service-teachers/src/main/resources/templates/building-edit.html @@ -0,0 +1,45 @@ + + + + + Buildings + + + + +
+ edit : building +
+
+

Редактирование сведений об объекте строительства:

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+ +
+
+ \ No newline at end of file diff --git a/client-service-teachers/src/main/resources/templates/buildings.html b/client-service-teachers/src/main/resources/templates/buildings.html new file mode 100644 index 0000000..150c46a --- /dev/null +++ b/client-service-teachers/src/main/resources/templates/buildings.html @@ -0,0 +1,71 @@ + + + + + Buildings + + + + +
+

BUILDINGS

+ menu : auth : buildings +
+
+
+
+ + + +

Перечень объектов строительства:

+
+ + + + + + + + + + + + + + + + + + + + + +
idname_shortname_fullcode_shortcode_full +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+ + diff --git a/out/resource-service-api/src/main/docs/erd/ERD.png b/out/resource-service-api/src/main/docs/erd/ERD.png deleted file mode 100644 index d5a29c1..0000000 Binary files a/out/resource-service-api/src/main/docs/erd/ERD.png and /dev/null differ diff --git a/out/resource-service-api/src/main/docs/erd/ERD.svg b/out/resource-service-api/src/main/docs/erd/ERD.svg deleted file mode 100644 index 0090803..0000000 --- a/out/resource-service-api/src/main/docs/erd/ERD.svg +++ /dev/null @@ -1 +0,0 @@ -Entity Relationship Diagram (ERD): education-records (учет обучений)Программы обученияid: SERIAL >>"Идентификатор"name: VARCHAR[200] >>"Наименование программы"lenght: TIME >>"Продолжительность программы обучения"study_direction: VARCHAR[80] >>"Обязательное или производственное обучения"price: VARCHAR[80] >>"Стоимость обучения"cretarea_id: INTEGER >>"Идентификатор направления обучения"program_cretareasid: SERIAL >>"Идентификатор"name: VARCHAR[200] >>"Наименование направления обучения"name_short: VARCHAR[200] >>"Сокращенное наименование направления обучения"Преподавателиid: SERIAL >>"Идентификатор"first_name: VARCHAR[80] >>"Имя"second_name: VARCHAR[80] >>"Отчество"last_name: VARCHAR[80] >>"Фамилия"tabel_number: INTEGER >>"Табельный номер"snils: VARCHAR[80] >>"СНИЛС"Курсid: SERIAL >>"Идентификатор"place: VARCHAR[10] >>"Место проведения занятий"start_date: DATE >>"Дата начала обучения"protocol_date: DATE >>"Дата протокола"protocol_number: VARCHAR[80] >>"Номер протокола"report_period: VARCHAR[80] >>"Отчетный период"teacher_id: VARCHAR[80] >>"Идентификатор преподавателя"programm_id: INTEGER >>"Идентификатор программы обучения"building_object_id: INTEGER >>"Идентификатор объекта строительства"Объекты строительстваid: SERIAL >>"Идентификатор"name_short: VARCHAR[80] >>"Сокращенное наименование"name_full: VARCHAR[80] >>"Полное наименование"code_full: VARCHAR[80] >>"Код проекта"code_short: VARCHAR[80] >>"Сокращенный код проекта"ПСКid: SERIAL >>"Идентификатор"ownership: VARCHAR[10] >>"Форма собственности ПСК"name_full: VARCHAR[120] >>"Наименование ПСК полное"name_short: VARCHAR[60] >>"Наименование ПСК сокращенное"type: VARCHAR[60] >>"Вид ПСК"inn: VARCHAR[60] >>"ИНН ПСК"Студентыid: SERIAL >>"Идентификатор"first_name: VARCHAR[80] >>"Имя обучающегося"second_name: VARCHAR[80] >>"Отчество обучающегося"last_name: VARCHAR[80] >>"Фамилия обучающегося"profession: VARCHAR[80] >>"Профессия обучающегося"category: VARCHAR[80] >>"Категория обучающегося"direction: VARCHAR[80] >>"Структурное подразделение"snils: VARCHAR[20] >>"СНИЛС"berth: DATE >>"Дата рождения"sitezenship: VARCHAR[30] >>"Гражданство"sex: VARCHAR[30] >>"Пол"psk_id: INTEGER >>"Данные о ПСК"aside_reestrdocument_type: VARCHAR[20] >>"Наименование документа о образовании"document_sery: VARCHAR[20] >>"Серия документа о образовании"document_number: VARCHAR[20] >>"Номер документа о образовании"document_reg_number: VARCHAR[20]>>"Регистрационный номер документа о образовании"document_date: DATE >>"Дата выдачи документа о образовании"first_name: VARCHAR[80] >>"Имя по докумету об образовании"second_name: VARCHAR[80] >>"Отчество по докумету об образовании"last_name: VARCHAR[80] >>"Фамилия по докумету об образовании"profession: VARCHAR[80] >>"Профессия докумету об образовании"student_id: INTEGER >>"Идентификатор студента"Реестр обученныхid: LONGSERIAL >>"Идентификатор"certificate_number: VARCHAR[80] >>"Номер удостоверения"frdo_number: VARCHAR[80] >>"Номер по ФРДО"eisot_number: VARCHAR[80] >>"Номер по ЕИСОТ"ones: INTEGER >>"Единички"courses_id: INTEGER >>"Данные о Курсе"student_id: INTEGER >>"Данные о студенте" \ No newline at end of file diff --git a/resource-service-api/src/main/docs/erd/erd.puml b/resource-service-api/src/main/docs/erd/erd.puml index a84a4b3..0482142 100644 --- a/resource-service-api/src/main/docs/erd/erd.puml +++ b/resource-service-api/src/main/docs/erd/erd.puml @@ -23,7 +23,7 @@ title "Entity Relationship Diagram (ERD): education-records (учет обуче entity "Реестр обученных" as repository ' Реестр обученных -table(repository){ +table(repository) #eaa{ primary_key(id): LONGSERIAL >>"Идентификатор" ' column(psk_type): VARCHAR[40] >>"Вид ПСК" ' column(psk_name): VARCHAR[40] >>"Наименование ПСК" @@ -52,7 +52,7 @@ table(repository){ foreign_key(student_id): INTEGER >>"Данные о студенте" } -courses }-- repository -students }-- repository +courses -up-{ repository +students --{ repository @enduml \ No newline at end of file diff --git a/resource-service-api/src/main/resources/static/content/images/ERD.png b/resource-service-api/src/main/resources/static/content/images/ERD.png deleted file mode 100644 index d5a29c1..0000000 Binary files a/resource-service-api/src/main/resources/static/content/images/ERD.png and /dev/null differ diff --git a/resource-service-api/src/main/resources/static/content/images/ERD.svg b/resource-service-api/src/main/resources/static/content/images/ERD.svg index 0090803..af57630 100644 --- a/resource-service-api/src/main/resources/static/content/images/ERD.svg +++ b/resource-service-api/src/main/resources/static/content/images/ERD.svg @@ -1 +1 @@ -Entity Relationship Diagram (ERD): education-records (учет обучений)Программы обученияid: SERIAL >>"Идентификатор"name: VARCHAR[200] >>"Наименование программы"lenght: TIME >>"Продолжительность программы обучения"study_direction: VARCHAR[80] >>"Обязательное или производственное обучения"price: VARCHAR[80] >>"Стоимость обучения"cretarea_id: INTEGER >>"Идентификатор направления обучения"program_cretareasid: SERIAL >>"Идентификатор"name: VARCHAR[200] >>"Наименование направления обучения"name_short: VARCHAR[200] >>"Сокращенное наименование направления обучения"Преподавателиid: SERIAL >>"Идентификатор"first_name: VARCHAR[80] >>"Имя"second_name: VARCHAR[80] >>"Отчество"last_name: VARCHAR[80] >>"Фамилия"tabel_number: INTEGER >>"Табельный номер"snils: VARCHAR[80] >>"СНИЛС"Курсid: SERIAL >>"Идентификатор"place: VARCHAR[10] >>"Место проведения занятий"start_date: DATE >>"Дата начала обучения"protocol_date: DATE >>"Дата протокола"protocol_number: VARCHAR[80] >>"Номер протокола"report_period: VARCHAR[80] >>"Отчетный период"teacher_id: VARCHAR[80] >>"Идентификатор преподавателя"programm_id: INTEGER >>"Идентификатор программы обучения"building_object_id: INTEGER >>"Идентификатор объекта строительства"Объекты строительстваid: SERIAL >>"Идентификатор"name_short: VARCHAR[80] >>"Сокращенное наименование"name_full: VARCHAR[80] >>"Полное наименование"code_full: VARCHAR[80] >>"Код проекта"code_short: VARCHAR[80] >>"Сокращенный код проекта"ПСКid: SERIAL >>"Идентификатор"ownership: VARCHAR[10] >>"Форма собственности ПСК"name_full: VARCHAR[120] >>"Наименование ПСК полное"name_short: VARCHAR[60] >>"Наименование ПСК сокращенное"type: VARCHAR[60] >>"Вид ПСК"inn: VARCHAR[60] >>"ИНН ПСК"Студентыid: SERIAL >>"Идентификатор"first_name: VARCHAR[80] >>"Имя обучающегося"second_name: VARCHAR[80] >>"Отчество обучающегося"last_name: VARCHAR[80] >>"Фамилия обучающегося"profession: VARCHAR[80] >>"Профессия обучающегося"category: VARCHAR[80] >>"Категория обучающегося"direction: VARCHAR[80] >>"Структурное подразделение"snils: VARCHAR[20] >>"СНИЛС"berth: DATE >>"Дата рождения"sitezenship: VARCHAR[30] >>"Гражданство"sex: VARCHAR[30] >>"Пол"psk_id: INTEGER >>"Данные о ПСК"aside_reestrdocument_type: VARCHAR[20] >>"Наименование документа о образовании"document_sery: VARCHAR[20] >>"Серия документа о образовании"document_number: VARCHAR[20] >>"Номер документа о образовании"document_reg_number: VARCHAR[20]>>"Регистрационный номер документа о образовании"document_date: DATE >>"Дата выдачи документа о образовании"first_name: VARCHAR[80] >>"Имя по докумету об образовании"second_name: VARCHAR[80] >>"Отчество по докумету об образовании"last_name: VARCHAR[80] >>"Фамилия по докумету об образовании"profession: VARCHAR[80] >>"Профессия докумету об образовании"student_id: INTEGER >>"Идентификатор студента"Реестр обученныхid: LONGSERIAL >>"Идентификатор"certificate_number: VARCHAR[80] >>"Номер удостоверения"frdo_number: VARCHAR[80] >>"Номер по ФРДО"eisot_number: VARCHAR[80] >>"Номер по ЕИСОТ"ones: INTEGER >>"Единички"courses_id: INTEGER >>"Данные о Курсе"student_id: INTEGER >>"Данные о студенте" \ No newline at end of file +Entity Relationship Diagram (ERD): education-records (учет обучений)Программы обученияid: SERIAL >>"Идентификатор"name: VARCHAR[200] >>"Наименование программы"lenght: TIME >>"Продолжительность программы обучения"study_direction: VARCHAR[80] >>"Обязательное или производственное обучения"price: VARCHAR[80] >>"Стоимость обучения"cretarea_id: INTEGER >>"Идентификатор направления обучения"program_cretareasid: SERIAL >>"Идентификатор"name: VARCHAR[200] >>"Наименование направления обучения"name_short: VARCHAR[200] >>"Сокращенное наименование направления обучения"Преподавателиid: SERIAL >>"Идентификатор"first_name: VARCHAR[80] >>"Имя"second_name: VARCHAR[80] >>"Отчество"last_name: VARCHAR[80] >>"Фамилия"tabel_number: INTEGER >>"Табельный номер"snils: VARCHAR[80] >>"СНИЛС"ОграниченияКурсid: SERIAL >>"Идентификатор"place: VARCHAR[10] >>"Место проведения занятий"start_date: DATE >>"Дата начала обучения"protocol_date: DATE >>"Дата протокола"protocol_number: VARCHAR[80] >>"Номер протокола"report_period: VARCHAR[80] >>"Отчетный период"teacher_id: VARCHAR[80] >>"Идентификатор преподавателя"programm_id: INTEGER >>"Идентификатор программы обучения"building_object_id: INTEGER >>"Идентификатор объекта строительства"Объекты строительстваid: SERIAL >>"Идентификатор"name_short: VARCHAR[80] >>"Сокращенное наименование"name_full: VARCHAR[80] >>"Полное наименование"code_full: VARCHAR[80] >>"Код проекта"code_short: VARCHAR[80] >>"Сокращенный код проекта"ПСКid: SERIAL >>"Идентификатор"ownership: VARCHAR[10] >>"Форма собственности ПСК"name_full: VARCHAR[120] >>"Наименование ПСК полное"name_short: VARCHAR[60] >>"Наименование ПСК сокращенное"type: VARCHAR[60] >>"Вид ПСК"inn: VARCHAR[60] >>"ИНН ПСК"Студентыid: SERIAL >>"Идентификатор"first_name: VARCHAR[80] >>"Имя обучающегося"second_name: VARCHAR[80] >>"Отчество обучающегося"last_name: VARCHAR[80] >>"Фамилия обучающегося"profession: VARCHAR[80] >>"Профессия обучающегося"category: VARCHAR[80] >>"Категория обучающегося"direction: VARCHAR[80] >>"Структурное подразделение"snils: VARCHAR[20] >>"СНИЛС"berth: DATE >>"Дата рождения"sitezenship: VARCHAR[30] >>"Гражданство"sex: VARCHAR[30] >>"Пол"psk_id: INTEGER >>"Данные о ПСК"aside_reestrdocument_type: VARCHAR[20] >>"Наименование документа о образовании"document_sery: VARCHAR[20] >>"Серия документа о образовании"document_number: VARCHAR[20] >>"Номер документа о образовании"document_reg_number: VARCHAR[20]>>"Регистрационный номер документа о образовании"document_date: DATE >>"Дата выдачи документа о образовании"first_name: VARCHAR[80] >>"Имя по докумету об образовании"second_name: VARCHAR[80] >>"Отчество по докумету об образовании"last_name: VARCHAR[80] >>"Фамилия по докумету об образовании"profession: VARCHAR[80] >>"Профессия докумету об образовании"student_id: INTEGER >>"Идентификатор студента"Реестр обученныхid: LONGSERIAL >>"Идентификатор"certificate_number: VARCHAR[80] >>"Номер удостоверения"frdo_number: VARCHAR[80] >>"Номер по ФРДО"eisot_number: VARCHAR[80] >>"Номер по ЕИСОТ"ones: INTEGER >>"Единички"courses_id: INTEGER >>"Данные о Курсе"student_id: INTEGER >>"Данные о студенте" \ No newline at end of file diff --git a/resource-service-api/src/main/resources/static/content/md/hello.md b/resource-service-api/src/main/resources/static/content/md/hello.md index efa7961..059e11a 100644 --- a/resource-service-api/src/main/resources/static/content/md/hello.md +++ b/resource-service-api/src/main/resources/static/content/md/hello.md @@ -72,6 +72,22 @@ ### DELETE:domain:port/program/delete/{id} Удаление сведений о программе +## 2.6. Объекты строительтва +### GET:domain:port/building/list + Получение сведений обо всех объектах строительства в json-формате + +### GET:domain:port/building/{id} + Получение сведений об объекте строительства в json-формате + +### POST:domain:port/building/create + Создание записи о новом объекте строительства + +### PUT:domain:port/building/update/{id} + Обновление сведений об объекте строительства + +### DELETE:domain:port/building/delete/{id} + Удаление сведений об объекте строительства + # 3. Структура базы данных сервиса : SCHEME ![image entity relationship diagram](content/images/ERD.svg "entity relationship diagram")