From 07fcbce47bf904da8652277355f7d108f8bc1330 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Wed, 2 Apr 2025 23:58:23 +0400 Subject: [PATCH] #21 -- Add save report period --- .../controller/ReportPeriodController.java | 47 ++++++++++++++++++ .../ru/ulstu/report/model/ReportPeriod.java | 3 ++ .../repository/ReportPeriodRepository.java | 3 ++ .../report/service/ReportPeriodService.java | 42 ++++++++++++++++ .../templates/admin/editReportPeriod.html | 49 +++++++++++++++++++ .../templates/admin/reportPeriodList.html | 31 ++++++++++++ src/main/resources/templates/default.html | 3 +- 7 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ru/ulstu/report/controller/ReportPeriodController.java create mode 100644 src/main/java/ru/ulstu/report/service/ReportPeriodService.java create mode 100644 src/main/resources/templates/admin/editReportPeriod.html create mode 100644 src/main/resources/templates/admin/reportPeriodList.html diff --git a/src/main/java/ru/ulstu/report/controller/ReportPeriodController.java b/src/main/java/ru/ulstu/report/controller/ReportPeriodController.java new file mode 100644 index 0000000..9737c7b --- /dev/null +++ b/src/main/java/ru/ulstu/report/controller/ReportPeriodController.java @@ -0,0 +1,47 @@ +package ru.ulstu.report.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import ru.ulstu.report.model.ReportPeriod; +import ru.ulstu.report.service.ReportPeriodService; + +@Controller +@RequestMapping("admin") +public class ReportPeriodController { + private final ReportPeriodService reportPeriodService; + + public ReportPeriodController(ReportPeriodService reportPeriodService) { + this.reportPeriodService = reportPeriodService; + } + + @GetMapping("reportPeriodList") + public String getReportPeriods(Model model) { + model.addAttribute("reportPeriods", reportPeriodService.getReportPeriods()); + return "admin/reportPeriodList"; + } + + @GetMapping("editReportPeriod/{reportPeriodId}") + public String getReportPeriods(@PathVariable(value = "reportPeriodId") Integer reportPeriodId, Model model) { + model.addAttribute("reportPeriod", + reportPeriodId == 0 + ? new ReportPeriod() + : reportPeriodService.getById(reportPeriodId)); + return "admin/editReportPeriod"; + } + + @PostMapping(value = "saveReportPeriod", params = "save") + public String saveReportPeriods(ReportPeriod reportPeriod) { + reportPeriodService.save(reportPeriod); + return "redirect: admin/reportPeriodList"; + } + + @PostMapping(value = "saveReportPeriod", params = "delete") + public String delete(ReportPeriod reportPeriod) { + reportPeriodService.save(reportPeriod); + return "redirect: admin/reportPeriodList"; + } +} diff --git a/src/main/java/ru/ulstu/report/model/ReportPeriod.java b/src/main/java/ru/ulstu/report/model/ReportPeriod.java index 44e4c94..a34161d 100644 --- a/src/main/java/ru/ulstu/report/model/ReportPeriod.java +++ b/src/main/java/ru/ulstu/report/model/ReportPeriod.java @@ -3,6 +3,7 @@ package ru.ulstu.report.model; import jakarta.persistence.Entity; import jakarta.persistence.Temporal; import jakarta.persistence.TemporalType; +import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.model.BaseEntity; import java.util.Date; @@ -10,9 +11,11 @@ import java.util.Date; @Entity public class ReportPeriod extends BaseEntity { @Temporal(TemporalType.DATE) + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date startDate; @Temporal(TemporalType.DATE) + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date endDate; public Date getStartDate() { diff --git a/src/main/java/ru/ulstu/report/repository/ReportPeriodRepository.java b/src/main/java/ru/ulstu/report/repository/ReportPeriodRepository.java index 4c8b660..ef989e4 100644 --- a/src/main/java/ru/ulstu/report/repository/ReportPeriodRepository.java +++ b/src/main/java/ru/ulstu/report/repository/ReportPeriodRepository.java @@ -3,5 +3,8 @@ package ru.ulstu.report.repository; import org.springframework.data.jpa.repository.JpaRepository; import ru.ulstu.report.model.ReportPeriod; +import java.util.List; + public interface ReportPeriodRepository extends JpaRepository { + List findAllByOrderByStartDateDesc(); } diff --git a/src/main/java/ru/ulstu/report/service/ReportPeriodService.java b/src/main/java/ru/ulstu/report/service/ReportPeriodService.java new file mode 100644 index 0000000..9669a17 --- /dev/null +++ b/src/main/java/ru/ulstu/report/service/ReportPeriodService.java @@ -0,0 +1,42 @@ +package ru.ulstu.report.service; + +import org.springframework.stereotype.Service; +import ru.ulstu.report.model.ReportPeriod; +import ru.ulstu.report.repository.ReportPeriodRepository; + +import java.util.List; + +@Service +public class ReportPeriodService { + private final ReportPeriodRepository reportPeriodRepository; + + public ReportPeriodService(ReportPeriodRepository reportPeriodRepository) { + this.reportPeriodRepository = reportPeriodRepository; + } + + public List getReportPeriods() { + return reportPeriodRepository.findAllByOrderByStartDateDesc(); + } + + public ReportPeriod save(ReportPeriod reportPeriod) { + ReportPeriod dbReportPeriod; + if (reportPeriod.getId() != null) { + dbReportPeriod = getById(reportPeriod.getId()); + dbReportPeriod.setStartDate(reportPeriod.getStartDate()); + dbReportPeriod.setEndDate(reportPeriod.getEndDate()); + } else { + dbReportPeriod = reportPeriod; + } + return reportPeriodRepository.save(dbReportPeriod); + } + + public void delete(ReportPeriod reportPeriod) { + reportPeriodRepository.delete(reportPeriod); + } + + public ReportPeriod getById(Integer reportPeriodId) { + return reportPeriodRepository + .findById(reportPeriodId) + .orElseThrow(() -> new RuntimeException("Report period not found by id")); + } +} diff --git a/src/main/resources/templates/admin/editReportPeriod.html b/src/main/resources/templates/admin/editReportPeriod.html new file mode 100644 index 0000000..d5f4916 --- /dev/null +++ b/src/main/resources/templates/admin/editReportPeriod.html @@ -0,0 +1,49 @@ + + +
+

Редактирование отчетного периода:

+
+ +
+ + +

+ Ошибка +

+
+ +
+ + +

+ Ошибка +

+
+ + + + Отмена +
+ + +
+ diff --git a/src/main/resources/templates/admin/reportPeriodList.html b/src/main/resources/templates/admin/reportPeriodList.html new file mode 100644 index 0000000..61e6817 --- /dev/null +++ b/src/main/resources/templates/admin/reportPeriodList.html @@ -0,0 +1,31 @@ + + +
+ + + + + + + + + + + + + + + + + + + +
Дата началаДата окончания
+ + + Редактировать + +
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/default.html b/src/main/resources/templates/default.html index a1240ff..7f1ae87 100644 --- a/src/main/resources/templates/default.html +++ b/src/main/resources/templates/default.html @@ -63,11 +63,12 @@ Список показателей Список научных руководителей Список аспирантов - Новости и заседания + Список периодов отчетности Отчетность аспирантов Правила БРС Подтверждение БРС Статистика по баллам + Новости и заседания