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; + } }