From 3e16bc22d6048c375bfab2f4305bbcf86f49f833 Mon Sep 17 00:00:00 2001 From: "Masaharu.Kato" Date: Wed, 18 Jun 2025 11:47:25 +0900 Subject: [PATCH] =?UTF-8?q?=E8=B3=BC=E5=85=A5=E5=87=A6=E7=90=86=E3=81=A7?= =?UTF-8?q?=E8=B3=BC=E5=85=A5=E6=95=B0=E9=87=8F=E3=81=8C=E4=BA=88=E5=AE=9A?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E3=81=AB=E6=BA=80=E3=81=9F=E3=81=AA=E3=81=84?= =?UTF-8?q?=E5=A0=B4=E5=90=88=EF=BC=8C=E6=AE=8B=E3=82=8A=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E3=82=92=E8=B2=B7=E3=81=86=E3=82=82=E3=81=AE=E3=83=AA=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=81=AB=E6=AE=8B=E3=81=99=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todoapp/repository/ToBuysRepository.java | 11 ++++++++++ .../todoapp/service/ToBuysService.java | 22 +++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java b/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java index 0778f5f..24d464f 100644 --- a/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java +++ b/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java @@ -47,6 +47,17 @@ public interface ToBuysRepository extends JpaRepository { */ @Query("SELECT t FROM ToBuys t WHERE t.user.id = :userId ORDER BY t.tobuyId ASC") List findByUserIdOrderByTobuyIdAsc(@Param("userId") Long userId); + + /** + * 指定された「買うもの」IDに基づいて「買うもの」での数量を更新 + * + * @param tobuyId 「買うもの」ID + * @param amount 「買うもの」数量 + * @return 更新された行数 + */ + @Modifying + @Query("UPDATE ToBuys t SET t.amount = :amount WHERE t.tobuyId = :tobuyId") + int updateAmountByTobuyId(Long tobuyId, int amount); /** * 指定された「買うもの」IDに基づいて「買うもの」リストを削除 diff --git a/backend/src/main/java/com/example/todoapp/service/ToBuysService.java b/backend/src/main/java/com/example/todoapp/service/ToBuysService.java index 2c0cc2a..323a447 100644 --- a/backend/src/main/java/com/example/todoapp/service/ToBuysService.java +++ b/backend/src/main/java/com/example/todoapp/service/ToBuysService.java @@ -171,6 +171,16 @@ public class ToBuysService { return toBuysRepository.findByUserIdOrderByTobuyIdAsc(user.getId()); } + /** + * 指定された購入リストIDに基づいて「数量」を変更する + * + * @param tobuyId 購入リストID + */ + @Transactional + public int updateToBuysAmountByTobuyId(Long tobuyId, int amount) { + return toBuysRepository.updateAmountByTobuyId(tobuyId, amount); + } + /** * 指定された購入リストIDに基づいて「買うもの」を削除する * @@ -207,9 +217,17 @@ public class ToBuysService { stock.setBuyDate(dto.getBuyDate()); stock.setExpDate(dto.getExpDate()); - // 買うものリストから削除 + // まだ買うべき数量を計算 + int remainAmount = Math.max(tobuy.getAmount() - dto.getAmount(), 0); + System.out.println("remainAmount=" + remainAmount); + + // 買うものリストから削除または数量変更 System.out.println("tobuy.getTobuyId()=" + tobuy.getTobuyId()); - deleteToBuysByTobuyId(tobuy.getTobuyId()); + if (remainAmount > 0) { + updateToBuysAmountByTobuyId(tobuy.getTobuyId(), remainAmount); + } else { + deleteToBuysByTobuyId(tobuy.getTobuyId()); + } // データベースに保存 return stocksRepository.save(stock);