From 8f3ea4cd26e01015abcdb4383908d1c5d6ecf43c Mon Sep 17 00:00:00 2001 From: s-choi Date: Fri, 18 Sep 2026 11:09:25 +0900 Subject: [PATCH 01/18] =?UTF-8?q?[ADD]=20=E6=94=AF=E5=87=BA=E3=83=BB?= =?UTF-8?q?=E5=8F=8E=E5=85=A5=E3=81=AE=E3=82=AF=E3=83=A9=E3=82=B9=E3=82=92?= =?UTF-8?q?=E4=BD=9C=E6=88=90=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/app/presentation/form/Expense.java | 17 +++++++++++++++++ .../demo/app/presentation/form/Income.java | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/main/java/com/example/demo/app/presentation/form/Expense.java create mode 100644 src/main/java/com/example/demo/app/presentation/form/Income.java diff --git a/src/main/java/com/example/demo/app/presentation/form/Expense.java b/src/main/java/com/example/demo/app/presentation/form/Expense.java new file mode 100644 index 0000000..aab7015 --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/form/Expense.java @@ -0,0 +1,17 @@ +package com.example.demo.app.presentation.form; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Expense { + + private LocalDate date; + private Long amount; + +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/app/presentation/form/Income.java b/src/main/java/com/example/demo/app/presentation/form/Income.java new file mode 100644 index 0000000..9a682a6 --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/form/Income.java @@ -0,0 +1,17 @@ +package com.example.demo.app.presentation.form; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Income { + + private LocalDate date; + private Long amount; + +} From b48b3ae0bd6ae6ab87be62f4e874e3efdd46247c Mon Sep 17 00:00:00 2001 From: s-morimoto Date: Fri, 18 Sep 2026 11:10:45 +0900 Subject: [PATCH 02/18] =?UTF-8?q?[ADD]profile=E3=81=AE=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/app/domain/model/ProfileModel.java | 18 ++++++++++ .../app/domain/service/ProfileService.java | 7 ++++ .../service/impl/ProfileServiceImpl.java | 34 +++++++++++++++++++ .../controller/ProfileController.java | 32 +++++++++++++++++ .../app/presentation/form/ProfileForm.java | 33 ++++++++++++++++++ 5 files changed, 124 insertions(+) create mode 100644 src/main/java/com/example/demo/app/domain/model/ProfileModel.java create mode 100644 src/main/java/com/example/demo/app/domain/service/ProfileService.java create mode 100644 src/main/java/com/example/demo/app/domain/service/impl/ProfileServiceImpl.java create mode 100644 src/main/java/com/example/demo/app/presentation/controller/ProfileController.java create mode 100644 src/main/java/com/example/demo/app/presentation/form/ProfileForm.java diff --git a/src/main/java/com/example/demo/app/domain/model/ProfileModel.java b/src/main/java/com/example/demo/app/domain/model/ProfileModel.java new file mode 100644 index 0000000..64ede94 --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/model/ProfileModel.java @@ -0,0 +1,18 @@ +package com.example.demo.app.domain.model; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class ProfileModel { + private Long userId; + private String userName; + private String emailAddress; + private LocalDate brithDate; + private Integer saving; + private Integer annualIncome; + private Integer monthlyBudget; +} diff --git a/src/main/java/com/example/demo/app/domain/service/ProfileService.java b/src/main/java/com/example/demo/app/domain/service/ProfileService.java new file mode 100644 index 0000000..6dd2b8c --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/service/ProfileService.java @@ -0,0 +1,7 @@ +package com.example.demo.app.domain.service; + +import com.example.demo.app.domain.model.ProfileModel; + +public interface ProfileService { + ProfileModel findOne(Long userId); +} diff --git a/src/main/java/com/example/demo/app/domain/service/impl/ProfileServiceImpl.java b/src/main/java/com/example/demo/app/domain/service/impl/ProfileServiceImpl.java new file mode 100644 index 0000000..7df882c --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/service/impl/ProfileServiceImpl.java @@ -0,0 +1,34 @@ +package com.example.demo.app.domain.service.impl; + +import org.springframework.stereotype.Service; + +import com.example.demo.app.domain.model.ProfileModel; +import com.example.demo.app.domain.service.ProfileService; +import com.example.demo.app.infra.entity.UserEntity; +import com.example.demo.app.infra.repository.UserRepository; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class ProfileServiceImpl implements ProfileService{ + private final UserRepository userRepository; + + @Override + public ProfileModel findOne(Long userId) { + UserEntity userEntity = userRepository.findById(userId).orElse(null); + + if(userEntity == null) { + return null; + } + + return new ProfileModel( + userEntity.getUserId(), + userEntity.getUserName(), + userEntity.getMailAddress(), + userEntity.getBirthDate(), + userEntity.getSaving(), + userEntity.getAnnualIncome(), + userEntity.getMonthlyBudget()); + } +} diff --git a/src/main/java/com/example/demo/app/presentation/controller/ProfileController.java b/src/main/java/com/example/demo/app/presentation/controller/ProfileController.java new file mode 100644 index 0000000..f9a3f81 --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/controller/ProfileController.java @@ -0,0 +1,32 @@ +package com.example.demo.app.presentation.controller; + +import jakarta.servlet.http.HttpSession; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +import com.example.demo.app.domain.model.LoginModel; +import com.example.demo.app.domain.model.ProfileModel; +import com.example.demo.app.domain.service.ProfileService; +import com.example.demo.app.presentation.form.ProfileForm; + +import lombok.RequiredArgsConstructor; + +@Controller +@RequiredArgsConstructor +public class ProfileController { + private final ProfileService profileService; + + @GetMapping("/profile") + public String profile(Model model, HttpSession session) { + LoginModel loginUser = (LoginModel) session.getAttribute("loginUser"); + + ProfileModel profileModel = profileService.findOne(loginUser.getUserId()); + + ProfileForm profileForm = ProfileForm.convertForm(profileModel); + + model.addAttribute("profileForm", profileForm); + return "profile"; + } +} diff --git a/src/main/java/com/example/demo/app/presentation/form/ProfileForm.java b/src/main/java/com/example/demo/app/presentation/form/ProfileForm.java new file mode 100644 index 0000000..2cdfc20 --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/form/ProfileForm.java @@ -0,0 +1,33 @@ +package com.example.demo.app.presentation.form; + +import java.time.LocalDate; + +import com.example.demo.app.domain.model.ProfileModel; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ProfileForm { + private Long userId; + private String userName; + private String emailAddress; + private LocalDate brithDate; + private Integer saving; + private Integer annualIncome; + private Integer monthlyBudget; + + public static ProfileForm convertForm(ProfileModel profileModel) { + return new ProfileForm( + profileModel.getUserId(), + profileModel.getUserName(), + profileModel.getEmailAddress(), + profileModel.getBrithDate(), + profileModel.getSaving(), + profileModel.getAnnualIncome(), + profileModel.getMonthlyBudget()); + } +} From ed8e97136886da9f1f8063c90b520d335c5582fa Mon Sep 17 00:00:00 2001 From: s-choi Date: Fri, 18 Sep 2026 11:11:02 +0900 Subject: [PATCH 03/18] =?UTF-8?q?[EDIT]=20=E5=8F=8E=E5=85=A5=E3=83=BB?= =?UTF-8?q?=E6=94=AF=E5=87=BA=E3=81=AE=E4=B8=80=E8=A6=A7=E3=82=92=E5=8F=96?= =?UTF-8?q?=E5=BE=97=E3=81=99=E3=82=8B=E6=A9=9F=E8=83=BD=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/service/TransactionService.java | 10 +++- .../service/impl/TransactionServiceImpl.java | 54 ++++++++++++++++--- .../repository/TransactionRepository.java | 18 +++++-- 3 files changed, 69 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/example/demo/app/domain/service/TransactionService.java b/src/main/java/com/example/demo/app/domain/service/TransactionService.java index 84edc52..ab4aa12 100644 --- a/src/main/java/com/example/demo/app/domain/service/TransactionService.java +++ b/src/main/java/com/example/demo/app/domain/service/TransactionService.java @@ -5,6 +5,8 @@ import java.util.List; import java.util.Map; import com.example.demo.app.domain.model.TransactionModel; +import com.example.demo.app.presentation.form.Expense; +import com.example.demo.app.presentation.form.Income; public interface TransactionService { @@ -14,10 +16,16 @@ public interface TransactionService { public int findTotalIncome(LocalDate startDate, LocalDate endDate, Long userId); - public int findTotalexpense(LocalDate startDate, LocalDate endDate, Long userId); + public int findTotalExpense(LocalDate startDate, LocalDate endDate, Long userId); public int createTransaction(TransactionModel transactionModel); public int updateTransaction(TransactionModel transactionModel); + public void deleteTransaction(Long transactionId); + + public List findTotalIncomeList(LocalDate startDate, LocalDate endDate, Long userId); + + public List findTotalExpenseList(LocalDate startDate, LocalDate endDate, Long userId); + } diff --git a/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java b/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java index d33dc25..9467f9c 100644 --- a/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java +++ b/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java @@ -16,6 +16,8 @@ import com.example.demo.app.infra.entity.UserEntity; import com.example.demo.app.infra.repository.CategoryRepository; import com.example.demo.app.infra.repository.TransactionRepository; import com.example.demo.app.infra.repository.UserRepository; +import com.example.demo.app.presentation.form.Expense; +import com.example.demo.app.presentation.form.Income; import lombok.RequiredArgsConstructor; @@ -27,19 +29,38 @@ public class TransactionServiceImpl implements TransactionService { private final UserRepository userRepository; private final CategoryRepository categoryRepository; - public Map> findAllByDate(LocalDate startDate, LocalDate endDate, Long userId) { + public Map> findAllByDate( + LocalDate startDate, + LocalDate endDate, + Long userId) { + + System.out.println("========== findAllByDate =========="); + System.out.println("startDate = " + startDate); + System.out.println("endDate = " + endDate); + System.out.println("userId = " + userId); List transactionEntityList = transactionRepository.findAllByDateAndUserId(startDate, endDate, userId); - List transactionModelList = TransactionModel - .convertFrom(transactionEntityList); + System.out.println("Entity count = " + transactionEntityList.size()); + + transactionEntityList.forEach(t -> { + System.out.println( + "date = " + t.getTransactionDate() + + ", amount = " + t.getAmount()); + }); + + List transactionModelList = TransactionModel.convertFrom(transactionEntityList); + + System.out.println("Model count = " + transactionModelList.size()); Map> transactionModelMap = transactionModelList.stream() - .collect(Collectors.groupingBy(TransactionModel::getTransactionDate)); + .collect(Collectors.groupingBy( + TransactionModel::getTransactionDate)); + + System.out.println("Map = " + transactionModelMap); return transactionModelMap; - } public int findTotalIncome(LocalDate startDate, LocalDate endDate, Long userId) { @@ -48,9 +69,21 @@ public class TransactionServiceImpl implements TransactionService { } - public int findTotalexpense(LocalDate startDate, LocalDate endDate, Long userId) { + public int findTotalExpense(LocalDate startDate, LocalDate endDate, Long userId) { - return transactionRepository.findTotalIncome(startDate, endDate, userId); + return transactionRepository.findTotalExpense(startDate, endDate, userId); + + } + + public List findTotalIncomeList(LocalDate startDate, LocalDate endDate, Long userId) { + + return transactionRepository.findTotalIncomeList(startDate, endDate, userId); + + } + + public List findTotalExpenseList(LocalDate startDate, LocalDate endDate, Long userId) { + + return transactionRepository.findTotalExpenseList(startDate, endDate, userId); } @@ -91,7 +124,7 @@ public class TransactionServiceImpl implements TransactionService { if (!transactionRepository.existsById(transactionModel.getTransactionId())) { return -1; } - + Optional userEntityOptional = userRepository.findById(transactionModel.getUserId()); if (userEntityOptional.isEmpty()) { @@ -115,4 +148,9 @@ public class TransactionServiceImpl implements TransactionService { } } + + public void deleteTransaction(Long transactionId) { + transactionRepository.deleteById(transactionId); + } + } diff --git a/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java b/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java index 5fe10a1..e68e169 100644 --- a/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java +++ b/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java @@ -7,21 +7,31 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import com.example.demo.app.infra.entity.TransactionEntity; +import com.example.demo.app.presentation.form.Expense; +import com.example.demo.app.presentation.form.Income; public interface TransactionRepository extends JpaRepository { - @Query("select t from TransactionEntity t where t.userEntity.userId = :userId and t.transactionDate = :transactionDate") + @Query("select t from TransactionEntity t where t.userEntity.userId = :userId and t.transactionDate = :todayDate") public List findByUserIdAndDate(LocalDate todayDate, Long userId); @Query("select t from TransactionEntity t where (t.transactionDate between :startDate and :endDate) and (t.userEntity.userId = :userId) order by t.transactionDate asc") public List findAllByDateAndUserId(LocalDate startDate, LocalDate endDate, Long userId); - @Query("select sum(t.amount) from TransactionEntity t inner join CategoryEntity c on t.categoryEntity.categoryId = c.categoryId where (t.userEntity.userId = :userId and t.transactionDate between :startDate and :endDate) and c.transactionType = 0") + @Query("select coalesce(sum(t.amount), 0) from TransactionEntity t inner join CategoryEntity c on t.categoryEntity.categoryId = c.categoryId where (t.userEntity.userId = :userId and t.transactionDate between :startDate and :endDate) and c.transactionType = 0") public Integer findTotalExpense(LocalDate startDate, LocalDate endDate, Long userId); - @Query("select sum(t.amount) from TransactionEntity t inner join CategoryEntity c on t.categoryEntity.categoryId = c.categoryId where (t.userEntity.userId = :userId and t.transactionDate between :startDate and :endDate) and c.transactionType = 1") + @Query("select coalesce(sum(t.amount), 0) from TransactionEntity t inner join CategoryEntity c on t.categoryEntity.categoryId = c.categoryId where (t.userEntity.userId = :userId and t.transactionDate between :startDate and :endDate) and c.transactionType = 1") public Integer findTotalIncome(LocalDate startDate, LocalDate endDate, Long userId); - @Query("select sum(t.amount) from TransactionEntity t where t.userEntity.userId = :userId and t.categoryEntity.categoryId = :categoryId and t.transactionDate between :startDate and :endDate") + @Query("select coalesce(sum(t.amount), 0) from TransactionEntity t where t.userEntity.userId = :userId and t.categoryEntity.categoryId = :categoryId and t.transactionDate between :startDate and :endDate") public Integer findCategoryExpense(LocalDate startDate, LocalDate endDate, Long userId, Long categoryId); + + @Query("select new com.example.demo.app.presentation.form.Expense(t.transactionDate, coalesce(sum(t.amount), 0)) from TransactionEntity t inner join CategoryEntity c on t.categoryEntity.categoryId = c.categoryId where (t.userEntity.userId = :userId and t.transactionDate between :startDate and :endDate) and c.transactionType = 0 group by t.transactionDate order by t.transactionDate asc") + public List findTotalExpenseList(LocalDate startDate, LocalDate endDate, Long userId); + + @Query("select new com.example.demo.app.presentation.form.Income(t.transactionDate, coalesce(sum(t.amount), 0)) from TransactionEntity t inner join CategoryEntity c on t.categoryEntity.categoryId = c.categoryId where (t.userEntity.userId = :userId and t.transactionDate between :startDate and :endDate) and c.transactionType = 1 group by t.transactionDate order by t.transactionDate asc") + public List findTotalIncomeList(LocalDate startDate, LocalDate endDate, Long userId); + + } From 039f416f49d9723c8f09835b8ef4c188348613de Mon Sep 17 00:00:00 2001 From: s-choi Date: Fri, 18 Sep 2026 11:11:28 +0900 Subject: [PATCH 04/18] =?UTF-8?q?[EDIT]=20=E3=83=AD=E3=82=B0=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E5=BE=8C=E3=81=AE=E9=81=B7=E7=A7=BB=E5=85=88=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/presentation/controller/LoginController.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/demo/app/presentation/controller/LoginController.java b/src/main/java/com/example/demo/app/presentation/controller/LoginController.java index 20ac8c5..53cf92f 100644 --- a/src/main/java/com/example/demo/app/presentation/controller/LoginController.java +++ b/src/main/java/com/example/demo/app/presentation/controller/LoginController.java @@ -21,11 +21,7 @@ public class LoginController { private final LoginService loginService; @GetMapping("/login") - public String showLogin(Model model) { - - model.addAttribute( - "loginForm", - new LoginForm()); + public String showLogin(@ModelAttribute LoginForm loginForm) { return "login"; } @@ -50,6 +46,7 @@ public class LoginController { session.setAttribute("loginUser", loginModel); - return "menu"; + return "redirect:/menu"; } + } From 52f2559cf7e462b56f95fa6711d31fdefb917328 Mon Sep 17 00:00:00 2001 From: s-choi Date: Fri, 18 Sep 2026 11:13:20 +0900 Subject: [PATCH 05/18] =?UTF-8?q?[ADD]=20=E5=8F=8E=E6=94=AF=E3=81=AE?= =?UTF-8?q?=E4=BD=9C=E6=88=90=E3=83=BB=E5=89=8A=E9=99=A4=E3=83=BB=E4=B8=80?= =?UTF-8?q?=E8=A6=A7=E6=A4=9C=E7=B4=A2=E3=83=BB=E5=8D=98=E4=BD=93=E6=A4=9C?= =?UTF-8?q?=E7=B4=A2=E6=A9=9F=E8=83=BD=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97?= =?UTF-8?q?=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82menu=E7=94=BB=E9=9D=A2?= =?UTF-8?q?=E3=81=AE=E8=BF=BD=E5=8A=A0=E5=8F=8A=E3=81=B3=E3=82=AB=E3=83=AC?= =?UTF-8?q?=E3=83=B3=E3=83=80=E3=83=BC=E6=A9=9F=E8=83=BD=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/static/css/menu.css | 15 ++++ src/main/resources/templates/menu.html | 72 +++++++++++++++++++ .../templates/transaction_create.html | 68 ++++++++++++++++++ .../templates/transaction_detail.html | 38 ++++++++++ .../resources/templates/transaction_list.html | 29 ++++++++ 5 files changed, 222 insertions(+) create mode 100644 src/main/resources/static/css/menu.css create mode 100644 src/main/resources/templates/menu.html create mode 100644 src/main/resources/templates/transaction_create.html create mode 100644 src/main/resources/templates/transaction_detail.html create mode 100644 src/main/resources/templates/transaction_list.html diff --git a/src/main/resources/static/css/menu.css b/src/main/resources/static/css/menu.css new file mode 100644 index 0000000..5195e7c --- /dev/null +++ b/src/main/resources/static/css/menu.css @@ -0,0 +1,15 @@ +table, th, td {border: 1px solid black; border-collapse: collapse;} + +td:hover{background-color: lightblue;} + +th{font-weight: bold; height: 50px;} + +td{text-align: left; vertical-align: text-top; width: 200px; height: 100px; padding: 10px} + +.holiday{color: red;} + +#today{font-weight: bold; background-color: bisque;} + +.year{font-size: 30px;} + +.month{font-size: 50px; font-weight: bold;} \ No newline at end of file diff --git a/src/main/resources/templates/menu.html b/src/main/resources/templates/menu.html new file mode 100644 index 0000000..15365cf --- /dev/null +++ b/src/main/resources/templates/menu.html @@ -0,0 +1,72 @@ + + + + + + Calendar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
日月火水木金土
+ +
+ +
+
+ +
+
+ +
+
+ +
+ +
+ +
+

+ + +

+
+ + + + diff --git a/src/main/resources/templates/transaction_create.html b/src/main/resources/templates/transaction_create.html new file mode 100644 index 0000000..01abaae --- /dev/null +++ b/src/main/resources/templates/transaction_create.html @@ -0,0 +1,68 @@ + + + + + + Insert title here + + + +

取引登録

+ +
+ +
+ + +
+ +
+ +
+ + + +
+ +
+ +
+ + + +
+ +
+ +
+ + + +
+ +
+ + + + +
+ + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/transaction_detail.html b/src/main/resources/templates/transaction_detail.html new file mode 100644 index 0000000..d96d00b --- /dev/null +++ b/src/main/resources/templates/transaction_detail.html @@ -0,0 +1,38 @@ + + + + + + 収支詳細 + + + +

+ +
+
    +
  • +

    カテゴリ名: +
    金額: +

    +
    + + + + +
    +
    +
  • +
+
+ + +
+ + + +
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/transaction_list.html b/src/main/resources/templates/transaction_list.html new file mode 100644 index 0000000..a6a4707 --- /dev/null +++ b/src/main/resources/templates/transaction_list.html @@ -0,0 +1,29 @@ + + + + + + 一覧 + + + + +
+ + +

+
+
    +
  • +

    カテゴリ名: +
    金額: +

    +
    +
  • +
+ +
+ + + + \ No newline at end of file From 7ddebf7a4aa6d688cd319252116f5652e9e72824 Mon Sep 17 00:00:00 2001 From: s-morimoto Date: Fri, 18 Sep 2026 11:13:27 +0900 Subject: [PATCH 06/18] =?UTF-8?q?[RENAME]A=E2=86=92a=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/{Authentication.html => authentication.html} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/templates/{Authentication.html => authentication.html} (100%) diff --git a/src/main/resources/templates/Authentication.html b/src/main/resources/templates/authentication.html similarity index 100% rename from src/main/resources/templates/Authentication.html rename to src/main/resources/templates/authentication.html From 594f09553a4c7db196f647ab10a71985367373ac Mon Sep 17 00:00:00 2001 From: s-choi Date: Fri, 18 Sep 2026 11:13:50 +0900 Subject: [PATCH 07/18] =?UTF-8?q?[FIX]=20parameter=E5=90=8D=E3=82=92?= =?UTF-8?q?=E6=AD=A3=E3=81=97=E3=81=8F=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/templates/login.html | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 7050ca1..d75741a 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -16,8 +16,7 @@ @@ -25,8 +24,7 @@ From ff65d8c045589b68e48bdb187e88054bcf1a7062 Mon Sep 17 00:00:00 2001 From: s-choi Date: Fri, 18 Sep 2026 11:14:23 +0900 Subject: [PATCH 08/18] =?UTF-8?q?[EDIT]=20menu=E7=94=BB=E9=9D=A2=E3=81=AE?= =?UTF-8?q?=E3=81=9F=E3=82=81=E3=81=AE=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?UTF-8?q?=E3=82=92=E4=BD=9C=E6=88=90=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TransactionController.java | 94 +++++++++++++++++-- 1 file changed, 84 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java b/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java index fed0ca7..053cbd5 100644 --- a/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java +++ b/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java @@ -1,6 +1,7 @@ package com.example.demo.app.presentation.controller; import java.time.LocalDate; +import java.time.YearMonth; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -19,6 +20,8 @@ import com.example.demo.app.domain.model.LoginModel; import com.example.demo.app.domain.service.CategoryService; import com.example.demo.app.domain.service.TransactionService; import com.example.demo.app.presentation.form.CategoryForm; +import com.example.demo.app.presentation.form.Expense; +import com.example.demo.app.presentation.form.Income; import com.example.demo.app.presentation.form.TransactionForm; import lombok.RequiredArgsConstructor; @@ -29,8 +32,8 @@ public class TransactionController { private final TransactionService transactionService; private final CategoryService categoryService; - // 一覧画面 + // 一覧画面 @GetMapping("/transaction/list") public String transactionList(@RequestParam(required = false) LocalDate startDates, @RequestParam(required = false) LocalDate endDates, Model model, @@ -47,19 +50,24 @@ public class TransactionController { transactionService.findAllByDate(startDate, endDate, loginUser.getUserId()).forEach((date, list) -> { List transactionFormList = list.stream().map(transaction -> { + System.out.println(transaction.getTransactionDate()); TransactionForm transactionForm = TransactionForm.convertFrom( transaction, CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())) .getCategoryName(), - transactionService.findTotalexpense(startDate, endDate, loginUser.getUserId()), + transactionService.findTotalExpense(startDate, endDate, loginUser.getUserId()), transactionService.findTotalIncome(startDate, endDate, loginUser.getUserId()), CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())) .getTransactionType()); + System.out.println("startDate = " + startDate); + System.out.println("endDate = " + endDate); return transactionForm; }).collect(Collectors.toList()); transactionFormMap.put(date, transactionFormList); }); - + + + model.addAttribute("transactionFormMap", transactionFormMap); return "transaction_list"; @@ -81,32 +89,40 @@ public class TransactionController { transaction, CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())) .getCategoryName(), - transactionService.findTotalexpense(todayDate, todayDate, loginUser.getUserId()), + transactionService.findTotalExpense(todayDate, todayDate, loginUser.getUserId()), transactionService.findTotalIncome(todayDate, todayDate, loginUser.getUserId()), CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())) .getTransactionType()); return transactionForm; }).collect(Collectors.toList()); + model.addAttribute("today", todayDate); model.addAttribute("transactionFormList", transactionFormList); - return ""; + return "transaction_detail"; } @GetMapping("/transaction/create") - public String createOneGet(@ModelAttribute TransactionForm transactionForm) { + public String createOneGet(@ModelAttribute TransactionForm transactionForm, @RequestParam LocalDate today, Model model) { - return ""; + List categoryFormList = CategoryForm.convertFrom(categoryService.findAll()); + + model.addAttribute("categoryFormList", categoryFormList); + model.addAttribute("today", today); + + return "transaction_create"; } @PostMapping("/transaction/create") - public String createOnePost(@ModelAttribute TransactionForm transactionForm, Model model) { - + public String createOnePost(@ModelAttribute TransactionForm transactionForm, @RequestParam LocalDate today, Model model, HttpSession session) { + LoginModel loginUser = (LoginModel) session.getAttribute("loginUser"); + transactionForm.setUserId(loginUser.getUserId()); + transactionForm.setTransactionDate(today); if (transactionService.createTransaction(TransactionForm.convertTo(transactionForm)) != 0) { return "error"; } - return ""; + return "redirect:/transaction/detail?todayDates=" + today; } @@ -127,4 +143,62 @@ public class TransactionController { } + @PostMapping("/transaction/delete") + public String deleteOne(@RequestParam Long transactionId, @RequestParam LocalDate today) { + + transactionService.deleteTransaction(transactionId); + return "redirect:/transaction/detail?todayDates=" + today; + } + + @GetMapping("/menu") + public String menu(HttpSession session, Model model, @RequestParam(required = false, defaultValue = "0") String years, @RequestParam(required = false, defaultValue = "0") String months) { + + LoginModel loginUser = (LoginModel) session.getAttribute("loginUser"); + + LocalDate today = LocalDate.now(); + + int year = (years.equals("0")) ? today.getYear() : Integer.parseInt(years); + int month = (months.equals("0")) ? today.getMonthValue() : Integer.parseInt(months); + + System.out.println("year : " + year + "month : " + month); + + YearMonth yearMonth = YearMonth.of(year, month); + + int lastDay = yearMonth.lengthOfMonth(); + + int firstDayOfWeek = + yearMonth.atDay(1).getDayOfWeek().getValue() % 7; + + model.addAttribute("year", year); + model.addAttribute("month", month); + model.addAttribute("day", today.getDayOfMonth()); + + model.addAttribute("lastDay", lastDay); + model.addAttribute("firstDayOfWeek", firstDayOfWeek); + + LocalDate startDate = LocalDate.now().withDayOfMonth(1); + + LocalDate endDate = LocalDate.now().withDayOfMonth(LocalDate.now().lengthOfMonth()); + + + List incomeList = transactionService.findTotalIncomeList(startDate, endDate, loginUser.getUserId()); + List expenseList = transactionService.findTotalExpenseList(startDate, endDate, loginUser.getUserId()); + + model.addAttribute("incomeList", incomeList); + + model.addAttribute("expenseList", expenseList); + + + int totalIncome = transactionService.findTotalIncome(startDate, endDate, loginUser.getUserId()); + + int totalExpense= transactionService.findTotalExpense(startDate, endDate, loginUser.getUserId()); + + model.addAttribute("totalIncome", totalIncome); + model.addAttribute("totalExpense", totalExpense); + + + return "menu"; + } + + } From 055855531558beb3d8bd2df50aa034621ca2cbd0 Mon Sep 17 00:00:00 2001 From: n-kawahito Date: Fri, 18 Sep 2026 11:18:48 +0900 Subject: [PATCH 09/18] =?UTF-8?q?[ADD]=E3=83=98=E3=83=83=E3=83=80=E3=83=BC?= =?UTF-8?q?=E3=81=AE=E6=A9=9F=E8=83=BD=E7=94=BB=E9=9D=A2=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/templates/header.html | 29 ++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/resources/templates/header.html diff --git a/src/main/resources/templates/header.html b/src/main/resources/templates/header.html new file mode 100644 index 0000000..29aac43 --- /dev/null +++ b/src/main/resources/templates/header.html @@ -0,0 +1,29 @@ + + + + +ヘッダー + + + + +
+ + + +
+ + + \ No newline at end of file From 2e427c8189d70b646efda6c6a22953e352aa6627 Mon Sep 17 00:00:00 2001 From: n-kawahito Date: Fri, 18 Sep 2026 11:19:11 +0900 Subject: [PATCH 10/18] =?UTF-8?q?[EDIT]=E3=83=98=E3=83=83=E3=83=80?= =?UTF-8?q?=E3=83=BC=E3=81=AE=E8=AA=AD=E3=81=BF=E8=BE=BC=E3=81=BF=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/templates/analysis.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/resources/templates/analysis.html b/src/main/resources/templates/analysis.html index 87fbc0f..22b1075 100644 --- a/src/main/resources/templates/analysis.html +++ b/src/main/resources/templates/analysis.html @@ -1,12 +1,15 @@ - + 分析画面 +
+
+

支出分析

From 938574654fbdbfed2dce9c2d561f92c5498577c5 Mon Sep 17 00:00:00 2001 From: s-morimoto Date: Fri, 18 Sep 2026 11:28:40 +0900 Subject: [PATCH 11/18] =?UTF-8?q?[EDIT]Login=E3=81=AB=E9=96=A2=E3=81=99?= =?UTF-8?q?=E3=82=8B=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/templates/login.html | 2 +- src/main/resources/templates/password_reset.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 3a8e8ac..80fbdec 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -40,7 +40,7 @@ diff --git a/src/main/resources/templates/password_reset.html b/src/main/resources/templates/password_reset.html index 522fd4b..fdde450 100644 --- a/src/main/resources/templates/password_reset.html +++ b/src/main/resources/templates/password_reset.html @@ -10,7 +10,7 @@

パスワード再設定

-
+
Date: Fri, 18 Sep 2026 11:30:50 +0900 Subject: [PATCH 12/18] =?UTF-8?q?[EDIT]=E7=94=BB=E9=9D=A2=E9=81=B7?= =?UTF-8?q?=E7=A7=BB=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/templates/login.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 80fbdec..75298d0 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -40,7 +40,7 @@
From 8884a74625abcd3b48bfe75f45541de69193f4bc Mon Sep 17 00:00:00 2001 From: n-kawahito Date: Fri, 18 Sep 2026 12:46:14 +0900 Subject: [PATCH 13/18] =?UTF-8?q?[ADD]=E3=82=A8=E3=83=A9=E3=83=BC=E7=94=BB?= =?UTF-8?q?=E9=9D=A2=E5=87=A6=E7=90=86=E3=82=92=E5=AE=9F=E8=A3=85=E3=81=97?= =?UTF-8?q?=E3=81=BE=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ErrorController.java | 12 +++++++ src/main/resources/templates/error.html | 32 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 src/main/java/com/example/demo/app/presentation/controller/ErrorController.java create mode 100644 src/main/resources/templates/error.html diff --git a/src/main/java/com/example/demo/app/presentation/controller/ErrorController.java b/src/main/java/com/example/demo/app/presentation/controller/ErrorController.java new file mode 100644 index 0000000..973d396 --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/controller/ErrorController.java @@ -0,0 +1,12 @@ +package com.example.demo.app.presentation.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class ErrorController { + @GetMapping("/error") + public String showError() { + return "error"; + } +} diff --git a/src/main/resources/templates/error.html b/src/main/resources/templates/error.html new file mode 100644 index 0000000..2bf0229 --- /dev/null +++ b/src/main/resources/templates/error.html @@ -0,0 +1,32 @@ + + + + +エラー + + + + + + + +
+
+ +
+ +

+ エラーが発生しました +

+ +

+ + + ログイン画面へ + + +
+ + + + \ No newline at end of file From 7719c002ff85a81761acb35f8a593f1a4003e193 Mon Sep 17 00:00:00 2001 From: n-kawahito Date: Fri, 18 Sep 2026 12:46:43 +0900 Subject: [PATCH 14/18] =?UTF-8?q?[ADD]=E5=85=B1=E9=80=9A=E4=BE=8B=E5=A4=96?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=82=92=E5=AE=9F=E8=A3=85=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/GlobalExceptionHandler.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/com/example/demo/exception/GlobalExceptionHandler.java diff --git a/src/main/java/com/example/demo/exception/GlobalExceptionHandler.java b/src/main/java/com/example/demo/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..17c1c7f --- /dev/null +++ b/src/main/java/com/example/demo/exception/GlobalExceptionHandler.java @@ -0,0 +1,22 @@ +package com.example.demo.exception; + +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; + +@ControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(Exception.class) + public String handleException( + Exception e, + Model model) { + + model.addAttribute( + "errorMessage", + "システムエラーが発生しました。" + + "初めからやり直してください。"); + + return "error"; + } +} From 43740691b53371cdc991235a277f996f9fa0174a Mon Sep 17 00:00:00 2001 From: s-morimoto Date: Fri, 18 Sep 2026 13:07:23 +0900 Subject: [PATCH 15/18] =?UTF-8?q?[EDIT]Login=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/templates/login.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index d75741a..75298d0 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -13,9 +13,10 @@
- +
@@ -24,6 +25,7 @@ @@ -34,11 +36,11 @@ From 603d0d083a7b8dc328d889c9ba2ba8c9f2d913e3 Mon Sep 17 00:00:00 2001 From: s-morimoto Date: Fri, 18 Sep 2026 13:20:59 +0900 Subject: [PATCH 16/18] =?UTF-8?q?[ADD]=E6=B6=88=E3=81=88=E3=81=9F=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/service/PasswordResetService.java | 7 ++++ .../demo/app/domain/service/UserService.java | 7 ++++ .../presentation/form/PasswordResetForm.java | 13 ++++++ .../demo/app/presentation/form/UserForm.java | 24 +++++++++++ .../resources/templates/password_reset.html | 42 +++++++++++++++++++ 5 files changed, 93 insertions(+) create mode 100644 src/main/java/com/example/demo/app/domain/service/PasswordResetService.java create mode 100644 src/main/java/com/example/demo/app/domain/service/UserService.java create mode 100644 src/main/java/com/example/demo/app/presentation/form/PasswordResetForm.java create mode 100644 src/main/java/com/example/demo/app/presentation/form/UserForm.java create mode 100644 src/main/resources/templates/password_reset.html diff --git a/src/main/java/com/example/demo/app/domain/service/PasswordResetService.java b/src/main/java/com/example/demo/app/domain/service/PasswordResetService.java new file mode 100644 index 0000000..99a3100 --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/service/PasswordResetService.java @@ -0,0 +1,7 @@ +package com.example.demo.app.domain.service; + +import com.example.demo.app.presentation.form.PasswordResetForm; + +public interface PasswordResetService { + boolean resetPassword(Long userId, PasswordResetForm passwordResetForm); +} diff --git a/src/main/java/com/example/demo/app/domain/service/UserService.java b/src/main/java/com/example/demo/app/domain/service/UserService.java new file mode 100644 index 0000000..6dfecaa --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/service/UserService.java @@ -0,0 +1,7 @@ +package com.example.demo.app.domain.service; + +import com.example.demo.app.presentation.form.UserForm; + +public interface UserService { + void register(UserForm userForm); +} diff --git a/src/main/java/com/example/demo/app/presentation/form/PasswordResetForm.java b/src/main/java/com/example/demo/app/presentation/form/PasswordResetForm.java new file mode 100644 index 0000000..8118b62 --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/form/PasswordResetForm.java @@ -0,0 +1,13 @@ +package com.example.demo.app.presentation.form; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PasswordResetForm{ + private String password; + private String passwordConfirm; +} diff --git a/src/main/java/com/example/demo/app/presentation/form/UserForm.java b/src/main/java/com/example/demo/app/presentation/form/UserForm.java new file mode 100644 index 0000000..dd8f655 --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/form/UserForm.java @@ -0,0 +1,24 @@ +package com.example.demo.app.presentation.form; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserForm { + private String userName; + private String mailAddress; + private String password; + private Long secretQuestionId; + private String SecretAnswer; + private LocalDate birthDate; + private Integer saving; + private Integer annualIncome; + private Integer monthlyBudget; + private Long goalId; + private Long courseId; +} diff --git a/src/main/resources/templates/password_reset.html b/src/main/resources/templates/password_reset.html new file mode 100644 index 0000000..fdde450 --- /dev/null +++ b/src/main/resources/templates/password_reset.html @@ -0,0 +1,42 @@ + + + + +パスワード再設定 + + +
+ +
+

パスワード再設定

+ +
+
+ + +
+ +
+ + +
+ + + + +
+

+
+
+ + \ No newline at end of file From 066d76148b075ad455510c2c3ad0f25fe8c1ff3c Mon Sep 17 00:00:00 2001 From: n-kawahito Date: Fri, 18 Sep 2026 13:26:12 +0900 Subject: [PATCH 17/18] =?UTF-8?q?[ADD]=E3=83=95=E3=83=83=E3=82=BF=E3=83=BC?= =?UTF-8?q?=E7=94=BB=E9=9D=A2=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/templates/footer.html | 42 ++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/main/resources/templates/footer.html diff --git a/src/main/resources/templates/footer.html b/src/main/resources/templates/footer.html new file mode 100644 index 0000000..2274cd3 --- /dev/null +++ b/src/main/resources/templates/footer.html @@ -0,0 +1,42 @@ + + + + +フッター + + + + + + + + \ No newline at end of file From d696d8f3760ed684a13e8ee176a5a0ee689843cc Mon Sep 17 00:00:00 2001 From: n-kawahito Date: Fri, 18 Sep 2026 13:26:49 +0900 Subject: [PATCH 18/18] =?UTF-8?q?[EDIT]=E3=83=95=E3=83=83=E3=82=BF?= =?UTF-8?q?=E3=83=BC=E3=81=AE=E8=AA=AD=E3=81=BF=E8=BE=BC=E3=81=BF=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/templates/analysis.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/resources/templates/analysis.html b/src/main/resources/templates/analysis.html index 22b1075..02535b6 100644 --- a/src/main/resources/templates/analysis.html +++ b/src/main/resources/templates/analysis.html @@ -81,6 +81,9 @@
+
+
+ \ No newline at end of file