StockServiceにcalcAmountByStuffIdを追加

feature-backend-tobuy-amount-fix
Masaharu.Kato 4 months ago
parent 6fe89f8023
commit 26d8b67ef6
  1. 8
      backend/src/main/java/com/example/todoapp/controller/StocksController.java
  2. 10
      backend/src/main/java/com/example/todoapp/repository/StocksRepository.java
  3. 5
      backend/src/main/java/com/example/todoapp/service/StocksService.java

@ -55,6 +55,14 @@ public class StocksController {
List<StockResponseDTO> 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);
}

@ -94,4 +94,14 @@ public interface StocksRepository extends JpaRepository<Stocks, Long> {
*/
List<Stocks> 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);
}

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

Loading…
Cancel
Save