From 26d8b67ef661e2ad6e4d38264555afacd25a9cce Mon Sep 17 00:00:00 2001 From: "Masaharu.Kato" Date: Wed, 18 Jun 2025 10:40:13 +0900 Subject: [PATCH] =?UTF-8?q?StockService=E3=81=ABcalcAmountByStuffId?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/todoapp/controller/StocksController.java | 8 ++++++++ .../example/todoapp/repository/StocksRepository.java | 10 ++++++++++ .../com/example/todoapp/service/StocksService.java | 5 +++++ 3 files changed, 23 insertions(+) diff --git a/backend/src/main/java/com/example/todoapp/controller/StocksController.java b/backend/src/main/java/com/example/todoapp/controller/StocksController.java index 4ca9713..643473a 100644 --- a/backend/src/main/java/com/example/todoapp/controller/StocksController.java +++ b/backend/src/main/java/com/example/todoapp/controller/StocksController.java @@ -55,6 +55,14 @@ public class StocksController { List stockDTOs = stocks.stream() .map(StockResponseDTO::fromEntity) .collect(Collectors.toList()); + + // // Debug of calcAmountByStuffId + // var user = userRepository.findByUsername(authentication.getName()).get(); + // for (var stock : stockDTOs) { + // var amount = stockService.calcAmountByStuffId(user.getId(), stock.getStuffId()); + // System.out.println("\tAmount of " + stock.getStuffName() + ": " + amount); + // } + return ResponseEntity.ok(stockDTOs); } diff --git a/backend/src/main/java/com/example/todoapp/repository/StocksRepository.java b/backend/src/main/java/com/example/todoapp/repository/StocksRepository.java index 87d2cdd..e887b3e 100644 --- a/backend/src/main/java/com/example/todoapp/repository/StocksRepository.java +++ b/backend/src/main/java/com/example/todoapp/repository/StocksRepository.java @@ -94,4 +94,14 @@ public interface StocksRepository extends JpaRepository { */ List findStocksByUserIdAndStuff_StuffIdOrderByBuyDateDescStockIdDesc(Long userId, Long stuffId); + /** + * userId, stuffId を指定して,材料の総在庫数量を取得 + * + * @param userId 検索するユーザーID + * @param stuffId 検索する材料ID + * @return 総在庫数量 + */ + @Query("SELECT SUM(s.amount) FROM Stocks s WHERE s.user.id = :userId AND s.stuff.stuffId = :stuffId") + Integer findAmountByStuffId(Long userId, Long stuffId); + } \ No newline at end of file diff --git a/backend/src/main/java/com/example/todoapp/service/StocksService.java b/backend/src/main/java/com/example/todoapp/service/StocksService.java index 1be09d1..e97941f 100644 --- a/backend/src/main/java/com/example/todoapp/service/StocksService.java +++ b/backend/src/main/java/com/example/todoapp/service/StocksService.java @@ -146,5 +146,10 @@ public class StocksService { return userRepository.findByUsername(username) .orElseThrow(() -> new UsernameNotFoundException(messageUtils.getMessage("error.auth.user.not.found.with.name", new Object[]{username}))); } + + public int calcAmountByStuffId(Long userId, Long stuffId) { + Integer amount = stocksRepository.findAmountByStuffId(userId, stuffId); + return amount == null ? 0 : amount; + } }