stock-add backend fixed

feature-frontend-dishedit-kato
Amagasu 4 months ago
parent 48ed1c67dc
commit ea6d738028
  1. 3
      backend/src/main/java/com/example/todoapp/controller/StocksController.java
  2. 57
      backend/src/main/java/com/example/todoapp/dto/AddStocksDTO.java
  3. 39
      backend/src/main/java/com/example/todoapp/service/StocksService.java

@ -1,5 +1,6 @@
package com.example.todoapp.controller;
import com.example.todoapp.dto.AddStocksDTO;
import com.example.todoapp.dto.DeleteStockRequest;
import com.example.todoapp.dto.ResponseStockDTO;
import com.example.todoapp.dto.StockDTO;
@ -75,7 +76,7 @@ public class StocksController {
@PostMapping("/add")
public ResponseEntity<StockDTO> createStock(
Authentication authentication,
@Valid @RequestBody Stocks stock) {
@Valid @RequestBody AddStocksDTO stock) {
Stocks createdStock = stockService.createStock(authentication.getName(), stock);
return ResponseEntity.ok(StockDTO.fromEntity(createdStock));
}

@ -0,0 +1,57 @@
//--------------------------------
// AddStocksDTO.java
//
//
// 更新履歴:2025/06/12 新規作成
// Copyright(c) 2025 IVIS All rights reserved.
//--------------------------------------------
package com.example.todoapp.dto;
import com.example.todoapp.model.Stocks;
import lombok.Data;
import java.time.LocalDate;
/**
* 在庫のデータ転送オブジェクトDTO
* <p>
* このクラスはクライアントとサーバー間で在庫情報をやり取りするために使用されます
* エンティティとは異なり必要な情報のみを含み関連エンティティへの参照ではなくIDのみを保持します
* </p>
*/
@Data
public class AddStocksDTO {
private Long stockId;
private Long stuffId;
private Long userId;
private String stuffName;
private String category;
private String summary;
private int amount;
private int price;
private LocalDate buyDate;
private LocalDate lastUpdate;
private LocalDate expDate;
/**
* 在庫エンティティからDTOを作成する
*
* @param stock 変換元の在庫エンティティ
* @return 変換されたAddStocksDTOオブジェクト
*/
public static AddStocksDTO fromEntity(Stocks stock) {
AddStocksDTO dto = new AddStocksDTO();
dto.setStockId(stock.getStockId());
dto.setStuffId(stock.getStuff().getStuffId());
dto.setUserId(stock.getUser().getId());
dto.setStuffName(stock.getStuff().getStuffName());
dto.setCategory(stock.getStuff().getCategory());
dto.setSummary(stock.getStuff().getSummary());
dto.setAmount(stock.getAmount());
dto.setPrice(stock.getPrice());
dto.setBuyDate(stock.getBuyDate());
dto.setLastUpdate(stock.getLastUpdate());
dto.setExpDate(stock.getExpDate());
return dto;
}
}

@ -1,16 +1,21 @@
package com.example.todoapp.service;
import com.example.todoapp.dto.StockDTO;
import com.example.todoapp.dto.AddStocksDTO;
import com.example.todoapp.dto.UpdateStockRequest;
import com.example.todoapp.model.Stocks;
import com.example.todoapp.model.Stuffs;
import com.example.todoapp.util.MessageUtils;
import com.example.todoapp.model.User;
import com.example.todoapp.repository.StocksRepository;
import com.example.todoapp.repository.StuffsRepository;
import com.example.todoapp.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
/**
* Stocksテーブルのサービスクラス
@ -23,6 +28,9 @@ public class StocksService {
@Autowired
private StocksRepository stocksRepository;
@Autowired
private StuffsRepository stuffsRepository;
@Autowired
private UserRepository userRepository;
@ -36,10 +44,35 @@ public class StocksService {
* @param stock 追加する在庫情報
* @return 保存された在庫エンティティ
*/
public Stocks createStock(String username, Stocks stock) {
public Stocks createStock(String username, AddStocksDTO stock) {
User user = getUserByUsername(username);
stock.setUser(user);
return stocksRepository.save(stock);
Stocks stockEntity = new Stocks();
Stuffs stuffs;
if (stock.getStuffId() == null) {
// 新しい材料を作成
Stuffs newStuff = new Stuffs();
newStuff.setStuffName(stock.getStuffName());
newStuff.setSummary(stock.getSummary());
newStuff.setCategory(stock.getCategory());
stuffs = stuffsRepository.save(newStuff);
} else {
// 材料情報を取得
Optional<Stuffs> existstuffs = stuffsRepository.findById(stock.getStuffId());
if (existstuffs == null) {
throw new RuntimeException("材料がありません");
}
stuffs = existstuffs.get();
}
stockEntity.setStockId(stock.getStockId());
stockEntity.setStuff(stuffs);
stockEntity.setUser(user);
stockEntity.setAmount(stock.getAmount());
stockEntity.setPrice(stock.getPrice());
stockEntity.setBuyDate(stock.getBuyDate());
// stockEntity.setLastUpdate(stock.getLastUpdate());
stockEntity.setExpDate(stock.getExpDate());
return stocksRepository.save(stockEntity);
}

Loading…
Cancel
Save