|
|
@ -64,17 +64,17 @@ public class RecipeService { |
|
|
|
|
|
|
|
|
|
|
|
List<RecipeStuffs> recipeStuffsList = new ArrayList<>(); |
|
|
|
List<RecipeStuffs> recipeStuffsList = new ArrayList<>(); |
|
|
|
for (StuffRequestDTO stuffDTO : dto.getStuffAndAmountArray()) { |
|
|
|
for (StuffRequestDTO stuffDTO : dto.getStuffAndAmountArray()) { |
|
|
|
|
|
|
|
Optional<Stuffs> optStuff = stuffsRepository.findByStuffName(stuffDTO.getStuffName()); |
|
|
|
Stuffs stuff; |
|
|
|
Stuffs stuff; |
|
|
|
if (stuffDTO.getStuffId() != null && !stuffDTO.getStuffId().isEmpty()) { |
|
|
|
|
|
|
|
// stuffIdが存在する
|
|
|
|
if (optStuff.isEmpty()) { |
|
|
|
stuff = stuffsRepository.findById(Long.valueOf(stuffDTO.getStuffId())) |
|
|
|
|
|
|
|
.orElseThrow(() -> new RuntimeException("材料がありません")); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
// stuffIdが存在しない
|
|
|
|
// stuffIdが存在しない
|
|
|
|
stuff = new Stuffs(); |
|
|
|
stuff = new Stuffs(); |
|
|
|
stuff.setStuffName(stuffDTO.getStuffName()); |
|
|
|
stuff.setStuffName(stuffDTO.getStuffName()); |
|
|
|
stuff.setCategory(stuffDTO.getCategory()); |
|
|
|
stuff.setCategory(stuffDTO.getCategory()); |
|
|
|
stuff = stuffsRepository.save(stuff); |
|
|
|
stuff = stuffsRepository.save(stuff); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
stuff = optStuff.get(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
RecipeStuffs recipeStuffs = new RecipeStuffs(); |
|
|
|
RecipeStuffs recipeStuffs = new RecipeStuffs(); |
|
|
@ -158,11 +158,14 @@ public class RecipeService { |
|
|
|
|
|
|
|
|
|
|
|
// 提供された材料の詳細を繰り返し処理
|
|
|
|
// 提供された材料の詳細を繰り返し処理
|
|
|
|
for (StuffDetailDTO stuffDTO : dto.getStuffAndAmountArray()) { |
|
|
|
for (StuffDetailDTO stuffDTO : dto.getStuffAndAmountArray()) { |
|
|
|
if (stuffDTO.getStuffId() == null) { |
|
|
|
|
|
|
|
|
|
|
|
Optional<Stuffs> optStuff = stuffsRepository.findByStuffName(stuffDTO.getStuffName()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (optStuff.isEmpty()) { |
|
|
|
// 材料IDがnullの場合、新しい材料を作成
|
|
|
|
// 材料IDがnullの場合、新しい材料を作成
|
|
|
|
Stuffs newStuff = new Stuffs(); |
|
|
|
Stuffs newStuff = new Stuffs(); |
|
|
|
newStuff.setStuffName(stuffDTO.getStuffName()); |
|
|
|
newStuff.setStuffName(stuffDTO.getStuffName()); |
|
|
|
newStuff.setCategory("その他"); |
|
|
|
newStuff.setCategory(stuffDTO.getCategory()); |
|
|
|
newStuff = stuffsRepository.save(newStuff); |
|
|
|
newStuff = stuffsRepository.save(newStuff); |
|
|
|
|
|
|
|
|
|
|
|
// 新しいRecipeStuffsエントリを作成
|
|
|
|
// 新しいRecipeStuffsエントリを作成
|
|
|
@ -174,9 +177,11 @@ public class RecipeService { |
|
|
|
|
|
|
|
|
|
|
|
incomingStuffIds.add(newStuff.getStuffId()); |
|
|
|
incomingStuffIds.add(newStuff.getStuffId()); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
|
|
|
|
Long stuffId = optStuff.get().getStuffId(); |
|
|
|
|
|
|
|
|
|
|
|
// 材料IDが提供されている場合、既存のRecipeStuffsエントリを検索
|
|
|
|
// 材料IDが提供されている場合、既存のRecipeStuffsエントリを検索
|
|
|
|
Optional<RecipeStuffs> optionalRs = recipeStuffsRepository |
|
|
|
Optional<RecipeStuffs> optionalRs = recipeStuffsRepository |
|
|
|
.findByRecipesRecipeIdAndStuffStuffId(dto.getRecipeId(), stuffDTO.getStuffId()); |
|
|
|
.findByRecipesRecipeIdAndStuffStuffId(dto.getRecipeId(), stuffId); |
|
|
|
|
|
|
|
|
|
|
|
if (optionalRs.isPresent()) { |
|
|
|
if (optionalRs.isPresent()) { |
|
|
|
// RecipeStuffsエントリが存在する場合、数量を更新
|
|
|
|
// RecipeStuffsエントリが存在する場合、数量を更新
|
|
|
|