新增菜谱

This commit is contained in:
sxu 2025-05-26 07:53:32 +08:00
parent e2e0d6f41e
commit 2a74f41713
8 changed files with 317 additions and 10 deletions

View File

@ -2,6 +2,8 @@ package com.bonus.canteen.core.cook.controller;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.bonus.canteen.core.cook.dto.CookRecipeDTO;
import com.bonus.common.log.enums.OperaType; import com.bonus.common.log.enums.OperaType;
//import com.bonus.canteen.core.cook.common.annotation.PreventRepeatSubmit; //import com.bonus.canteen.core.cook.common.annotation.PreventRepeatSubmit;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -70,6 +72,12 @@ public class CookRecipeController extends BaseController {
//@RequiresPermissions("cook:recipe:query") //@RequiresPermissions("cook:recipe:query")
@GetMapping(value = "/{recipeId}") @GetMapping(value = "/{recipeId}")
public AjaxResult getInfo(@PathVariable("recipeId") Long recipeId) { public AjaxResult getInfo(@PathVariable("recipeId") Long recipeId) {
// 构造菜谱之菜品详情VO
// 狗仔菜谱之执行计划VO
// 狗仔菜谱VO
return success(cookRecipeService.selectCookRecipeByRecipeId(recipeId)); return success(cookRecipeService.selectCookRecipeByRecipeId(recipeId));
} }
@ -81,9 +89,9 @@ public class CookRecipeController extends BaseController {
//@RequiresPermissions("cook:recipe:add") //@RequiresPermissions("cook:recipe:add")
@SysLog(title = "菜品计划信息", businessType = OperaType.INSERT, logType = 1,module = "仓储管理->新增菜品计划信息") @SysLog(title = "菜品计划信息", businessType = OperaType.INSERT, logType = 1,module = "仓储管理->新增菜品计划信息")
@PostMapping @PostMapping
public AjaxResult add(@RequestBody CookRecipe cookRecipe) { public AjaxResult add(@RequestBody CookRecipeDTO cookRecipeDTO) {
try { try {
return toAjax(cookRecipeService.insertCookRecipe(cookRecipe)); return toAjax(cookRecipeService.insertCookRecipe(cookRecipeDTO));
} catch (Exception e) { } catch (Exception e) {
return error(e.getMessage()); return error(e.getMessage());
} }
@ -99,6 +107,11 @@ public class CookRecipeController extends BaseController {
@PostMapping("/edit") @PostMapping("/edit")
public AjaxResult edit(@RequestBody CookRecipe cookRecipe) { public AjaxResult edit(@RequestBody CookRecipe cookRecipe) {
try { try {
//TODO 删除菜谱之菜品详情
//TODO 删除菜谱之执行计划
//TODO 新增菜谱之执行计划
//TODO 新增菜谱之菜品详情
return toAjax(cookRecipeService.updateCookRecipe(cookRecipe)); return toAjax(cookRecipeService.updateCookRecipe(cookRecipe));
} catch (Exception e) { } catch (Exception e) {
return error(e.getMessage()); return error(e.getMessage());
@ -114,6 +127,8 @@ public class CookRecipeController extends BaseController {
@SysLog(title = "菜品计划信息", businessType = OperaType.DELETE, logType = 1,module = "仓储管理->删除菜品计划信息") @SysLog(title = "菜品计划信息", businessType = OperaType.DELETE, logType = 1,module = "仓储管理->删除菜品计划信息")
@PostMapping("/del/{recipeIds}") @PostMapping("/del/{recipeIds}")
public AjaxResult remove(@PathVariable Long[] recipeIds) { public AjaxResult remove(@PathVariable Long[] recipeIds) {
//TODO 删除菜谱之菜品详情
//TODO 删除菜谱之执行计划
return toAjax(cookRecipeService.deleteCookRecipeByRecipeIds(recipeIds)); return toAjax(cookRecipeService.deleteCookRecipeByRecipeIds(recipeIds));
} }
} }

View File

@ -0,0 +1,66 @@
package com.bonus.canteen.core.cook.dto;
import com.bonus.common.core.annotation.Excel;
import com.bonus.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import java.util.Date;
import java.util.List;
/**
* 菜品计划信息对象 cook_recipe
*
* @author xsheng
* @date 2025-05-25
*/
@Data
@ToString
public class CookRecipeDTO extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 菜谱id */
private Long recipeId;
/** 菜谱名称 */
@Excel(name = "菜谱名称")
@ApiModelProperty(value = "菜谱名称")
private String recipeName;
/** 菜谱类型(1默认,2按天,3按周,4按月) */
@Excel(name = "菜谱类型(1默认,2按天,3按周,4按月)")
@ApiModelProperty(value = "菜谱类型(1默认,2按天,3按周,4按月)")
private Long recipeType;
/** 档口id */
@Excel(name = "档口id")
@ApiModelProperty(value = "档口id")
private Long stallId;
/** 食堂id */
@Excel(name = "食堂id")
@ApiModelProperty(value = "食堂id")
private Long canteenId;
/** 菜品计划id(数据同步) */
@Excel(name = "菜品计划id(数据同步)")
@ApiModelProperty(value = "菜品计划id(数据同步)")
private String planId;
/** 生效时间 */
@ApiModelProperty(value = "生效时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "生效时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date effectDate;
/** 到期时间 */
@ApiModelProperty(value = "到期时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "到期时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date expireDate;
private List<CookRecipeDateDTO> recipeDateList;
}

View File

@ -0,0 +1,42 @@
package com.bonus.canteen.core.cook.dto;
import com.bonus.common.core.annotation.Excel;
import com.bonus.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import java.util.Date;
import java.util.List;
/**
* 菜品计划详情信息对象 cook_recipe_detail
*
* @author xsheng
* @date 2025-05-25
*/
@Data
@ToString
public class CookRecipeDateDTO extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 启用时间(天) */
@ApiModelProperty(value = "启用时间(天)")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "启用时间(天)", width = 30, dateFormat = "yyyy-MM-dd")
private Date applyDate;
/** 启用时间(周) */
@Excel(name = "启用时间(周)")
@ApiModelProperty(value = "启用时间(周)")
private Long applyWeek;
/** 启用时间(月) */
@Excel(name = "启用时间(月)")
@ApiModelProperty(value = "启用时间(月)")
private Long applyMonth;
List<CookRecipeDetailDTO> detailList;
}

View File

@ -0,0 +1,65 @@
package com.bonus.canteen.core.cook.dto;
import com.bonus.common.core.annotation.Excel;
import com.bonus.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import java.util.Date;
import java.util.List;
/**
* 菜品计划详情信息对象 cook_recipe_detail
*
* @author xsheng
* @date 2025-05-25
*/
@Data
@ToString
public class CookRecipeDetailDTO extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 菜谱详情id */
private Long recipeDetailId;
/** 菜品计划销售类别id(数据同步) */
@Excel(name = "菜品计划销售类别id(数据同步)")
@ApiModelProperty(value = "菜品计划销售类别id(数据同步)")
private String saleTypeId;
/** 菜谱id */
@Excel(name = "菜谱id")
@ApiModelProperty(value = "菜谱id")
private Long recipeId;
/** 启用时间(天) */
@ApiModelProperty(value = "启用时间(天)")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "启用时间(天)", width = 30, dateFormat = "yyyy-MM-dd")
private Date applyDate;
/** 启用时间(周) */
@Excel(name = "启用时间(周)")
@ApiModelProperty(value = "启用时间(周)")
private Long applyWeek;
/** 启用时间(月) */
@Excel(name = "启用时间(月)")
@ApiModelProperty(value = "启用时间(月)")
private Long applyMonth;
/** 餐次类型 */
@Excel(name = "餐次类型")
@ApiModelProperty(value = "餐次类型")
private Long mealtimeType;
/** 详情类型(1-模板,2-详情) */
@Excel(name = "详情类型(1-模板,2-详情)")
@ApiModelProperty(value = "详情类型(1-模板,2-详情)")
private Long detailType;
private List<CookRecipeDishesDTO> dishesList;
}

View File

@ -0,0 +1,81 @@
package com.bonus.canteen.core.cook.dto;
import com.bonus.common.core.annotation.Excel;
import com.bonus.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
/**
* 菜品计划菜品关联对象 cook_recipe_dishes
*
* @author xsheng
* @date 2025-05-25
*/
@Data
@ToString
public class CookRecipeDishesDTO extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 主键id */
private Long id;
/** 菜谱详情id */
@Excel(name = "菜谱详情id")
@ApiModelProperty(value = "菜谱详情id")
private Long recipeDetailId;
/** 菜品id */
@Excel(name = "菜品id")
@ApiModelProperty(value = "菜品id")
private Long dishesId;
/** 菜品单价 */
@Excel(name = "菜品单价")
@ApiModelProperty(value = "菜品单价")
private Long price;
/** 菜品售价(优惠价) */
@Excel(name = "菜品售价(优惠价)")
@ApiModelProperty(value = "菜品售价(优惠价)")
private Long salePrice;
/** 规格类型(1-标准,2-大份,3-小份,4-50g,5-100g) */
@Excel(name = "规格类型(1-标准,2-大份,3-小份,4-50g,5-100g)")
@ApiModelProperty(value = "规格类型(1-标准,2-大份,3-小份,4-50g,5-100g)")
private Long sizeType;
/** 供应数量 */
@Excel(name = "供应数量")
@ApiModelProperty(value = "供应数量")
private Long supplyNum;
/** 销售数量 */
@Excel(name = "销售数量")
@ApiModelProperty(value = "销售数量")
private Long saleNum;
/** 剩余数量 */
@Excel(name = "剩余数量")
@ApiModelProperty(value = "剩余数量")
private Integer remanentNum;
/** 个人限购数量 */
@Excel(name = "个人限购数量")
@ApiModelProperty(value = "个人限购数量")
private Long limitNum;
/** 厨师id */
@Excel(name = "厨师id")
@ApiModelProperty(value = "厨师id")
private Long chefId;
/** 是否推荐(1-推荐,2-不推荐) */
@Excel(name = "是否推荐(1-推荐,2-不推荐)")
@ApiModelProperty(value = "是否推荐(1-推荐,2-不推荐)")
private Long recommendFlag;
}

View File

@ -2,6 +2,7 @@ package com.bonus.canteen.core.cook.mapper;
import java.util.List; import java.util.List;
import com.bonus.canteen.core.cook.domain.CookRecipe; import com.bonus.canteen.core.cook.domain.CookRecipe;
import com.bonus.canteen.core.cook.dto.CookRecipeDTO;
/** /**
* 菜品计划信息Mapper接口 * 菜品计划信息Mapper接口
@ -29,10 +30,10 @@ public interface CookRecipeMapper {
/** /**
* 新增菜品计划信息 * 新增菜品计划信息
* *
* @param cookRecipe 菜品计划信息 * @param cookRecipeDTO 菜品计划信息
* @return 结果 * @return 结果
*/ */
public int insertCookRecipe(CookRecipe cookRecipe); public int insertCookRecipe(CookRecipeDTO cookRecipeDTO);
/** /**
* 修改菜品计划信息 * 修改菜品计划信息

View File

@ -2,6 +2,7 @@ package com.bonus.canteen.core.cook.service;
import java.util.List; import java.util.List;
import com.bonus.canteen.core.cook.domain.CookRecipe; import com.bonus.canteen.core.cook.domain.CookRecipe;
import com.bonus.canteen.core.cook.dto.CookRecipeDTO;
/** /**
* 菜品计划信息Service接口 * 菜品计划信息Service接口
@ -29,10 +30,10 @@ public interface ICookRecipeService {
/** /**
* 新增菜品计划信息 * 新增菜品计划信息
* *
* @param cookRecipe 菜品计划信息 * @param cookRecipeDTO 菜品计划信息
* @return 结果 * @return 结果
*/ */
public int insertCookRecipe(CookRecipe cookRecipe); public int insertCookRecipe(CookRecipeDTO cookRecipeDTO);
/** /**
* 修改菜品计划信息 * 修改菜品计划信息

View File

@ -1,13 +1,25 @@
package com.bonus.canteen.core.cook.service.impl; package com.bonus.canteen.core.cook.service.impl;
import java.util.List; import java.util.List;
import com.bonus.canteen.core.cook.domain.CookRecipeDetail;
import com.bonus.canteen.core.cook.domain.CookRecipeDishes;
import com.bonus.canteen.core.cook.dto.CookRecipeDTO;
import com.bonus.canteen.core.cook.dto.CookRecipeDateDTO;
import com.bonus.canteen.core.cook.dto.CookRecipeDetailDTO;
import com.bonus.canteen.core.cook.dto.CookRecipeDishesDTO;
import com.bonus.canteen.core.cook.mapper.CookRecipeDetailMapper;
import com.bonus.canteen.core.cook.mapper.CookRecipeDishesMapper;
import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.security.utils.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.bonus.canteen.core.cook.mapper.CookRecipeMapper; import com.bonus.canteen.core.cook.mapper.CookRecipeMapper;
import com.bonus.canteen.core.cook.domain.CookRecipe; import com.bonus.canteen.core.cook.domain.CookRecipe;
import com.bonus.canteen.core.cook.service.ICookRecipeService; import com.bonus.canteen.core.cook.service.ICookRecipeService;
import org.springframework.transaction.annotation.Transactional;
/** /**
* 菜品计划信息Service业务层处理 * 菜品计划信息Service业务层处理
@ -19,6 +31,10 @@ import com.bonus.canteen.core.cook.service.ICookRecipeService;
public class CookRecipeServiceImpl implements ICookRecipeService { public class CookRecipeServiceImpl implements ICookRecipeService {
@Autowired @Autowired
private CookRecipeMapper cookRecipeMapper; private CookRecipeMapper cookRecipeMapper;
@Autowired
private CookRecipeDetailMapper cookRecipeDetailMapper;
@Autowired
private CookRecipeDishesMapper cookRecipeDishesMapper;
/** /**
* 查询菜品计划信息 * 查询菜品计划信息
@ -45,14 +61,34 @@ public class CookRecipeServiceImpl implements ICookRecipeService {
/** /**
* 新增菜品计划信息 * 新增菜品计划信息
* *
* @param cookRecipe 菜品计划信息 * @param cookRecipeDTO 菜品计划信息
* @return 结果 * @return 结果
*/ */
@Override @Override
public int insertCookRecipe(CookRecipe cookRecipe) { @Transactional(rollbackFor = Exception.class)
cookRecipe.setCreateTime(DateUtils.getNowDate()); public int insertCookRecipe(CookRecipeDTO cookRecipeDTO) {
cookRecipeDTO.setCreateTime(DateUtils.getNowDate());
cookRecipeDTO.setCreateBy(SecurityUtils.getUsername());
try { try {
return cookRecipeMapper.insertCookRecipe(cookRecipe); int count = cookRecipeMapper.insertCookRecipe(cookRecipeDTO); //插入菜谱
List<CookRecipeDateDTO> recipeDateList = cookRecipeDTO.getRecipeDateList();
for (CookRecipeDateDTO recipeDateDTO : recipeDateList) {
List<CookRecipeDetailDTO> detailList = recipeDateDTO.getDetailList();
for (CookRecipeDetailDTO detailDTO : detailList) {
CookRecipeDetail cookRecipeDetail = new CookRecipeDetail();
BeanUtils.copyProperties(detailDTO, cookRecipeDetail);
cookRecipeDetail.setRecipeId(cookRecipeDTO.getRecipeId());
cookRecipeDetailMapper.insertCookRecipeDetail(cookRecipeDetail); //插入菜谱之执行计划
List<CookRecipeDishesDTO> dishesList = detailDTO.getDishesList();
for (CookRecipeDishesDTO dishesDTO : dishesList) {
CookRecipeDishes cookRecipeDishes = new CookRecipeDishes();
BeanUtils.copyProperties(dishesDTO, cookRecipeDishes);
cookRecipeDishes.setRecipeDetailId(detailDTO.getRecipeDetailId());
cookRecipeDishesMapper.insertCookRecipeDishes(cookRecipeDishes); //插入菜谱之菜品详情
}
}
}
return count;
} catch (Exception e) { } catch (Exception e) {
throw new ServiceException(e.getMessage()); throw new ServiceException(e.getMessage());
} }