Merge remote-tracking branch 'origin/feature-frontend-dishedit' into feature-frontend-dishedit-kato

feature-frontend-dishedit-kato
Masaharu.Kato 4 months ago
commit b8e7a4ed1d
  1. 129
      backend/src/main/java/com/example/todoapp/config/InitTables.java
  2. 3
      backend/src/main/java/com/example/todoapp/model/Recipes.java
  3. 3
      backend/src/main/java/com/example/todoapp/repository/RecipeStuffsRepository.java
  4. 10
      backend/src/main/java/com/example/todoapp/repository/RecipesRepository.java
  5. 18
      backend/src/main/java/com/example/todoapp/service/RecipeService.java

@ -36,98 +36,101 @@ public class InitTables {
@Autowired
private RecipesRepository recipesRepository;
@Autowired
private RecipeStuffsRepository RecipeStuffsRepository;
private RecipeStuffsRepository recipeStuffsRepository;
@Autowired
private StuffsRepository stuffsRepository;
@PostConstruct
public void initTables() {
// tobuysRepository.deleteAll(); //データを残す場合はコメントアウト
// stocksRepository.deleteAll(); //データを残す場合はコメントアウト
// recipeStuffsRepository.deleteAll(); //データを残す場合はコメントアウト
// recipesRepository.deleteAll(); //データを残す場合はコメントアウト
// stuffsRepository.deleteAll(); //データを残す場合はコメントアウト
tobuysRepository.deleteAll(); //データを残す場合はコメントアウト
stocksRepository.deleteAll(); //データを残す場合はコメントアウト
recipeStuffsRepository.deleteAll(); //データを残す場合はコメントアウト
recipesRepository.deleteAll(); //データを残す場合はコメントアウト
stuffsRepository.deleteAll(); //データを残す場合はコメントアウト
if (stuffsRepository.count() > 0) {
return; // すでにデータが存在する場合は何もしない
// すでにデータが存在する場合は何もしない
} else {
setNewStuff(1L, "牛乳", null, "乳製品");
setNewStuff(2L, "ヨーグルト", null, "乳製品");
setNewStuff(3L, "チーズ", null, "乳製品");
setNewStuff(4L, "バター", null, "乳製品");
setNewStuff(5L, "生クリーム", null, "乳製品");
setNewStuff(6L, "鮭", null, "魚・肉");
setNewStuff(7L, "鶏むね肉", null, "魚・肉");
setNewStuff(8L, "豚バラ肉", null, "魚・肉");
setNewStuff(9L, "牛ひき肉", null, "魚・肉");
setNewStuff(10L, "まぐろ", null, "魚・肉");
setNewStuff(11L, "にんじん", null, "野菜");
setNewStuff(12L, "キャベツ", null, "野菜");
setNewStuff(13L, "ほうれん草", null, "野菜");
setNewStuff(14L, "玉ねぎ", null, "野菜");
setNewStuff(15L, "ピーマン", null, "野菜");
setNewStuff(16L, "じゃがいも", null, "野菜");
setNewStuff("牛乳", null, "乳製品");
setNewStuff("ヨーグルト", null, "乳製品");
setNewStuff("チーズ", null, "乳製品");
setNewStuff("バター", null, "乳製品");
setNewStuff("生クリーム", null, "乳製品");
setNewStuff("鮭", null, "魚・肉");
setNewStuff("鶏むね肉", null, "魚・肉");
setNewStuff("豚バラ肉", null, "魚・肉");
setNewStuff("牛ひき肉", null, "魚・肉");
setNewStuff("まぐろ", null, "魚・肉");
setNewStuff("にんじん", null, "野菜");
setNewStuff("キャベツ", null, "野菜");
setNewStuff("ほうれん草", null, "野菜");
setNewStuff("玉ねぎ", null, "野菜");
setNewStuff("ピーマン", null, "野菜");
setNewStuff("じゃがいも", null, "野菜");
setNewStuff(17L, "醤油", null, "調味料");
setNewStuff(18L, "味噌", null, "調味料");
setNewStuff(19L, "塩", null, "調味料");
setNewStuff(20L, "砂糖", null, "調味料");
setNewStuff(21L, "酢", null, "調味料");
setNewStuff(22L, "米", null, "その他");
setNewStuff(23L, "パスタ", null, "その他");
setNewStuff(24L, "小麦粉", null, "その他");
setNewStuff(25L, "卵", null, "その他");
setNewStuff(26L, "豆腐", null, "その他");
setNewStuff("醤油", null, "調味料");
setNewStuff("味噌", null, "調味料");
setNewStuff("塩", null, "調味料");
setNewStuff("砂糖", null, "調味料");
setNewStuff("酢", null, "調味料");
setNewStuff("米", null, "その他");
setNewStuff("パスタ", null, "その他");
setNewStuff("小麦粉", null, "その他");
setNewStuff("卵", null, "その他");
setNewStuff("豆腐", null, "その他");
}
if (stuffsRepository.count() > 0) {
return; // すでにデータが存在する場合は何もしない
if (recipeStuffsRepository.count() > 0) {
// すでにデータが存在する場合は何もしない
} else {
setNewRecipe(1L, "鮭のムニエル", "鮭を小麦粉で焼いた料理");
setNewRecipe(2L, "カレー", "野菜と肉を煮込んだカレー");
}
if (recipesRepository.count() > 0) {
return; // すでにデータが存在する場合は何もしない
} else {
setNewRecipeStuffs(1L, recipesRepository.findById(1L).orElse(null), 6L, 1); // 鮭
setNewRecipeStuffs(3L, recipesRepository.findById(1L).orElse(null), 17L, 10); // 醤油
setNewRecipeStuffs(2L, recipesRepository.findById(1L).orElse(null), 24L, 50); // 小麦粉
setNewRecipeStuffs(4L, recipesRepository.findById(2L).orElse(null), 11L, 1); // にんじん
setNewRecipeStuffs(5L, recipesRepository.findById(2L).orElse(null), 16L, 1); // じゃがいも
setNewRecipeStuffs(6L, recipesRepository.findById(2L).orElse(null), 9L, 100); // 牛ひき肉
Recipes recipe1 = new Recipes();
// recipe1.setRecipeId(1L);
recipe1.setRecipeName("鮭のムニエル");
recipe1.setSummary("鮭を小麦粉で焼いた料理");
recipesRepository.save(recipe1);
Recipes recipe2 = new Recipes();
recipe2.setRecipeName("カレー");
recipe2.setSummary("野菜と肉を煮込んだカレー");
recipesRepository.save(recipe2);
setNewRecipeStuffs(recipe1, stuffsRepository.findByStuffName("鮭").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: 鮭")), 1); // 鮭
setNewRecipeStuffs(recipe1, stuffsRepository.findByStuffName("小麦粉").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: 小麦粉")), 50); // 小麦粉
setNewRecipeStuffs(recipe1, stuffsRepository.findByStuffName("バター").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: バター")), 10); // バター
setNewRecipeStuffs(recipe2, stuffsRepository.findByStuffName("にんじん").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: にんじん")), 1); // にんじん
setNewRecipeStuffs(recipe2, stuffsRepository.findByStuffName("じゃがいも").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: じゃがいも")), 1); // じゃがいも
setNewRecipeStuffs(recipe2, stuffsRepository.findByStuffName("牛ひき肉").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: 牛ひき肉")), 100); // 牛ひき肉
}
}
private void setNewStuff(Long stuffId, String stuffName, String summary, String category) {
private void setNewStuff(String stuffName, String summary, String category) {
Stuffs stuff = new Stuffs();
stuff.setStuffId(stuffId);
stuff.setStuffName(stuffName);
stuff.setSummary(summary);
stuff.setCategory(category);
stuffsRepository.save(stuff);
}
private void setNewRecipe(Long recipeId, String recipeName, String summary) {
Recipes recipe = new Recipes();
recipe.setRecipeId(recipeId);
recipe.setRecipeName(recipeName);
recipe.setSummary(summary);
}
// private void setNewRecipe(Long recipeId, String recipeName, String summary) {
// Recipes recipe = new Recipes();
// recipe.setRecipeId(recipeId);
// recipe.setRecipeName(recipeName);
// recipe.setSummary(summary);
// recipesRepository.save(recipe);
// }
private void setNewRecipeStuffs(Long recipeStuffsId, Recipes recipe, Long stuffId, int amount) {
private void setNewRecipeStuffs(Recipes recipe, Stuffs stuff, int amount) {
RecipeStuffs recipeStuff = new RecipeStuffs();
recipeStuff.setRecipeStuffsId(recipeStuffsId);
recipeStuff.setRecipes(recipe);
recipeStuff.setRecipeStuffsId(stuffId);
recipeStuff.setStuff(stuff);
recipeStuff.setAmount(amount);
RecipeStuffsRepository.save(recipeStuff);
recipeStuffsRepository.save(recipeStuff);
}
}

@ -36,7 +36,7 @@ public class Recipes {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="recipeId")
private Long recipeId ;
private Long recipeId;
/**
* カテゴリ名
@ -51,4 +51,5 @@ public class Recipes {
@Column (columnDefinition = "TEXT")
private String summary;
}

@ -32,6 +32,3 @@ public interface RecipeStuffsRepository extends JpaRepository<RecipeStuffs, Long
*/
Optional<RecipeStuffs> findByRecipesRecipeIdAndStuffStuffId(Long recipeId, Long stuffId);
}

@ -3,6 +3,7 @@ package com.example.todoapp.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.example.todoapp.model.Recipes;
import java.util.Optional;
/**
* レシピエンティティのリポジトリインターフェース
@ -11,4 +12,11 @@ import com.example.todoapp.model.Recipes;
* Spring Data JPAによって自動的に実装されます
* </p>
*/
public interface RecipesRepository extends JpaRepository<Recipes, Long> {}
public interface RecipesRepository extends JpaRepository<Recipes, Long> {
/**
* レシピIDでレシピを検索する
* @param recipeId
* @return Recipes オブジェクトのOptional
*/
Optional<Recipes> findByRecipeId(Long recipeId);
}

@ -47,7 +47,7 @@ public class RecipeService {
private StuffsRepository stuffsRepository;
@Autowired
private RecipeStuffsRepository RecipeStuffsRepository;
private RecipeStuffsRepository recipeStuffsRepository;
/**
* レシピを新規登録する
@ -89,7 +89,7 @@ public class RecipeService {
recipeStuffsList.add(recipeStuffs);
}
RecipeStuffsRepository.saveAll(recipeStuffsList);
recipeStuffsRepository.saveAll(recipeStuffsList);
return recipe;
}
@ -113,7 +113,7 @@ public class RecipeService {
Recipes recipe = recipesRepository.findById(recipeId)
.orElseThrow(() -> new RuntimeException("レシピが見つかりません"));
List<RecipeStuffs> recipeStuffsList = RecipeStuffsRepository.findByRecipesRecipeId(recipeId);
List<RecipeStuffs> recipeStuffsList = recipeStuffsRepository.findByRecipesRecipeId(recipeId);
List<StuffDetailDTO> stuffList = recipeStuffsList.stream()
.map(rs -> {
@ -170,19 +170,19 @@ public class RecipeService {
rs.setRecipes(recipe);
rs.setStuff(newStuff);
rs.setAmount(stuffDTO.getAmount());
RecipeStuffsRepository.save(rs);
recipeStuffsRepository.save(rs);
incomingStuffIds.add(newStuff.getStuffId());
} else {
// 材料IDが提供されている場合、既存のRecipeStuffsエントリを検索
Optional<RecipeStuffs> optionalRs = RecipeStuffsRepository
Optional<RecipeStuffs> optionalRs = recipeStuffsRepository
.findByRecipesRecipeIdAndStuffStuffId(dto.getRecipeId(), stuffDTO.getStuffId());
if (optionalRs.isPresent()) {
// RecipeStuffsエントリが存在する場合、数量を更新
RecipeStuffs rs = optionalRs.get();
rs.setAmount(stuffDTO.getAmount());
RecipeStuffsRepository.save(rs);
recipeStuffsRepository.save(rs);
incomingStuffIds.add(rs.getStuff().getStuffId());
} else {
// オプション:見つからない場合、新しいRecipeStuffsエントリを作成
@ -193,17 +193,17 @@ public class RecipeService {
rs.setRecipes(recipe);
rs.setStuff(existingStuff);
rs.setAmount(stuffDTO.getAmount());
RecipeStuffsRepository.save(rs);
recipeStuffsRepository.save(rs);
incomingStuffIds.add(existingStuff.getStuffId());
}
}
}
// 入ってきたリストにないRecipeStuffsエントリを削除
List<RecipeStuffs> existingStuffs = RecipeStuffsRepository.findByRecipesRecipeId(dto.getRecipeId());
List<RecipeStuffs> existingStuffs = recipeStuffsRepository.findByRecipesRecipeId(dto.getRecipeId());
for (RecipeStuffs rs : existingStuffs) {
if (!incomingStuffIds.contains(rs.getStuff().getStuffId())) {
RecipeStuffsRepository.delete(rs);
recipeStuffsRepository.delete(rs);
}
}

Loading…
Cancel
Save