Prechádzať zdrojové kódy

新增 食谱,每日食谱记录

tjf 7 mesiacov pred
rodič
commit
b3b8637eac

+ 99 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/food/MenuFoodController.java

@@ -0,0 +1,99 @@
+package com.ruoyi.web.controller.food;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.system.domain.MenuFood;
+import com.ruoyi.system.domain.vo.MenuFoodVo;
+import com.ruoyi.system.service.IMenuFoodService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 每日食谱Controller
+ *
+ * @author boman
+ * @date 2024-11-07
+ */
+@RestController
+@RequestMapping("/system/menuFood")
+public class MenuFoodController extends BaseController
+{
+    @Autowired
+    private IMenuFoodService menuFoodService;
+
+/**
+ * 查询每日食谱列表
+ */
+@PreAuthorize("@ss.hasPermi('system:menuFood:list')")
+@GetMapping("/list")
+    public TableDataInfo list(MenuFood menuFood)
+    {
+        startPage();
+        List<MenuFood> list = menuFoodService.selectMenuFoodList(menuFood);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出每日食谱列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:menuFood:export')")
+    @Log(title = "每日食谱", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, MenuFood menuFood)
+    {
+        List<MenuFood> list = menuFoodService.selectMenuFoodList(menuFood);
+        ExcelUtil<MenuFood> util = new ExcelUtil<MenuFood>(MenuFood.class);
+        util.exportExcel(response, list, "每日食谱数据");
+    }
+
+    /**
+     * 获取每日食谱详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:menuFood:query')")
+    @GetMapping(value = "/{menuFoodId}")
+    public AjaxResult getInfo(@PathVariable("menuFoodId") Long menuFoodId)
+    {
+        return success(menuFoodService.selectMenuFoodByMenuFoodId(menuFoodId));
+    }
+
+    /**
+     * 新增每日食谱
+     */
+    @PreAuthorize("@ss.hasPermi('system:menuFood:add')")
+    @Log(title = "每日食谱", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody MenuFoodVo menuFoodVo)
+    {
+        return toAjax(menuFoodService.batchMenuFoodVo(menuFoodVo));
+    }
+
+    /**
+     * 修改每日食谱
+     */
+    @PreAuthorize("@ss.hasPermi('system:menuFood:edit')")
+    @Log(title = "每日食谱", businessType = BusinessType.UPDATE)
+    @PostMapping("/put")
+    public AjaxResult edit(@RequestBody MenuFood menuFood)
+    {
+        return toAjax(menuFoodService.updateMenuFood(menuFood));
+    }
+
+    /**
+     * 删除每日食谱
+     */
+    @PreAuthorize("@ss.hasPermi('system:menuFood:remove')")
+    @Log(title = "每日食谱", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{menuFoodIds}")
+    public AjaxResult remove(@PathVariable Long[] menuFoodIds)
+    {
+        return toAjax(menuFoodService.deleteMenuFoodByMenuFoodIds(menuFoodIds));
+    }
+}

+ 91 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/food/MenuFoodRecordController.java

@@ -0,0 +1,91 @@
+package com.ruoyi.web.controller.food;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.system.domain.MenuFoodRecord;
+import com.ruoyi.system.service.IMenuFoodRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 每日食谱记录Controller
+ *
+ * @author boman
+ * @date 2024-11-07
+ */
+@RestController
+@RequestMapping("/system/foodRecord")
+public class MenuFoodRecordController extends BaseController {
+    @Autowired
+    private IMenuFoodRecordService menuFoodRecordService;
+
+    /**
+     * 查询每日食谱记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:foodRecord:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(MenuFoodRecord menuFoodRecord) {
+        startPage();
+        List<MenuFoodRecord> list = menuFoodRecordService.selectMenuFoodRecordList(menuFoodRecord);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出每日食谱记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:foodRecord:export')")
+    @Log(title = "每日食谱记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, MenuFoodRecord menuFoodRecord) {
+        List<MenuFoodRecord> list = menuFoodRecordService.selectMenuFoodRecordList(menuFoodRecord);
+        ExcelUtil<MenuFoodRecord> util = new ExcelUtil<MenuFoodRecord>(MenuFoodRecord.class);
+        util.exportExcel(response, list, "每日食谱记录数据");
+    }
+
+    /**
+     * 获取每日食谱记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:foodRecord:query')")
+    @GetMapping(value = "/{menuFoodRecordId}")
+    public AjaxResult getInfo(@PathVariable("menuFoodRecordId") Long menuFoodRecordId) {
+        return success(menuFoodRecordService.selectMenuFoodRecordByMenuFoodRecordId(menuFoodRecordId));
+    }
+
+    /**
+     * 新增每日食谱记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:foodRecord:add')")
+    @Log(title = "每日食谱记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody MenuFoodRecord menuFoodRecord) {
+        return toAjax(menuFoodRecordService.insertMenuFoodRecord(menuFoodRecord));
+    }
+
+    /**
+     * 修改每日食谱记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:foodRecord:edit')")
+    @Log(title = "每日食谱记录", businessType = BusinessType.UPDATE)
+    @PostMapping("/put")
+    public AjaxResult edit(@RequestBody MenuFoodRecord menuFoodRecord) {
+        return toAjax(menuFoodRecordService.updateMenuFoodRecord(menuFoodRecord));
+    }
+
+    /**
+     * 删除每日食谱记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:foodRecord:remove')")
+    @Log(title = "每日食谱记录", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{menuFoodRecordIds}")
+    public AjaxResult remove(@PathVariable Long[] menuFoodRecordIds) {
+        return toAjax(menuFoodRecordService.deleteMenuFoodRecordByMenuFoodRecordIds(menuFoodRecordIds));
+    }
+}

+ 7 - 13
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java

@@ -1,18 +1,5 @@
 package com.ruoyi.web.controller.system;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -21,6 +8,13 @@ import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.service.ISysDictTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * 数据字典信息

+ 2 - 2
ruoyi-admin/src/main/resources/application.yml

@@ -19,8 +19,8 @@ spring:
     # 国际化资源文件路径
     basename: i18n/messages
   profiles:
-#    active: druid
-    active: prod
+    active: druid
+#    active: prod
   # 文件上传
   servlet:
     multipart:

+ 167 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/MenuFood.java

@@ -0,0 +1,167 @@
+package com.ruoyi.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 每日食谱对象 menu_food
+ * 
+ * @author boman
+ * @date 2024-11-07
+ */
+public class MenuFood extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 食谱ID */
+    private Long menuFoodId;
+
+    /** 食谱日期 周一 */
+    @Excel(name = "食谱日期 周一")
+    private String menuFoodTime;
+
+    /** 就餐人员类型 1:职工 2:领导 */
+    @Excel(name = "就餐人员类型 1:职工 2:领导")
+    private String menuFoodType;
+
+    /** 食谱早餐详情 */
+    @Excel(name = "食谱早餐详情")
+    private String menuFoodDetailBk;
+
+    /** 食谱中餐详情 */
+    @Excel(name = "食谱中餐详情")
+    private String menuFoodDetailLu;
+
+    /** 食谱午餐详情 */
+    @Excel(name = "食谱午餐详情")
+    private String menuFoodDetailDi;
+
+    /** 食堂名称 */
+    @Excel(name = "食堂名称")
+    private String canteenName;
+
+    /** 食堂id */
+    @Excel(name = "食堂id")
+    private Long canteenId;
+
+    /** 是否启用 */
+    @Excel(name = "是否启用")
+    private String isUse;
+
+    /** 创建部门 */
+    private Long createDept;
+
+    public void setMenuFoodId(Long menuFoodId) 
+    {
+        this.menuFoodId = menuFoodId;
+    }
+
+    public Long getMenuFoodId() 
+    {
+        return menuFoodId;
+    }
+    public void setMenuFoodTime(String menuFoodTime) 
+    {
+        this.menuFoodTime = menuFoodTime;
+    }
+
+    public String getMenuFoodTime() 
+    {
+        return menuFoodTime;
+    }
+    public void setMenuFoodType(String menuFoodType) 
+    {
+        this.menuFoodType = menuFoodType;
+    }
+
+    public String getMenuFoodType() 
+    {
+        return menuFoodType;
+    }
+    public void setMenuFoodDetailBk(String menuFoodDetailBk) 
+    {
+        this.menuFoodDetailBk = menuFoodDetailBk;
+    }
+
+    public String getMenuFoodDetailBk() 
+    {
+        return menuFoodDetailBk;
+    }
+    public void setMenuFoodDetailLu(String menuFoodDetailLu) 
+    {
+        this.menuFoodDetailLu = menuFoodDetailLu;
+    }
+
+    public String getMenuFoodDetailLu() 
+    {
+        return menuFoodDetailLu;
+    }
+    public void setMenuFoodDetailDi(String menuFoodDetailDi) 
+    {
+        this.menuFoodDetailDi = menuFoodDetailDi;
+    }
+
+    public String getMenuFoodDetailDi() 
+    {
+        return menuFoodDetailDi;
+    }
+    public void setCanteenName(String canteenName) 
+    {
+        this.canteenName = canteenName;
+    }
+
+    public String getCanteenName() 
+    {
+        return canteenName;
+    }
+    public void setCanteenId(Long canteenId) 
+    {
+        this.canteenId = canteenId;
+    }
+
+    public Long getCanteenId() 
+    {
+        return canteenId;
+    }
+    public void setIsUse(String isUse) 
+    {
+        this.isUse = isUse;
+    }
+
+    public String getIsUse() 
+    {
+        return isUse;
+    }
+    public void setCreateDept(Long createDept) 
+    {
+        this.createDept = createDept;
+    }
+
+    public Long getCreateDept() 
+    {
+        return createDept;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("menuFoodId", getMenuFoodId())
+            .append("menuFoodTime", getMenuFoodTime())
+            .append("menuFoodType", getMenuFoodType())
+            .append("menuFoodDetailBk", getMenuFoodDetailBk())
+            .append("menuFoodDetailLu", getMenuFoodDetailLu())
+            .append("menuFoodDetailDi", getMenuFoodDetailDi())
+            .append("canteenName", getCanteenName())
+            .append("canteenId", getCanteenId())
+            .append("isUse", getIsUse())
+            .append("createDept", getCreateDept())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 171 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/MenuFoodRecord.java

@@ -0,0 +1,171 @@
+package com.ruoyi.system.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 每日食谱记录对象 menu_food_record
+ * 
+ * @author boman
+ * @date 2024-11-07
+ */
+public class MenuFoodRecord extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 食谱ID */
+    private Long menuFoodRecordId;
+
+    /** 食谱日期 周一 */
+    @Excel(name = "食谱日期 周一")
+    private String menuFoodTime;
+
+    /** 就餐人员类型 1:职工 2:领导 */
+    @Excel(name = "就餐人员类型 1:职工 2:领导")
+    private String menuFoodType;
+
+    /** 食谱早餐详情 */
+    @Excel(name = "食谱早餐详情")
+    private String menuFoodDetailBk;
+
+    /** 食谱中餐详情 */
+    @Excel(name = "食谱中餐详情")
+    private String menuFoodDetailLu;
+
+    /** 食谱午餐详情 */
+    @Excel(name = "食谱午餐详情")
+    private String menuFoodDetailDi;
+
+    /** 食堂名称 */
+    @Excel(name = "食堂名称")
+    private String canteenName;
+
+    /** 食堂id */
+    @Excel(name = "食堂id")
+    private Long canteenId;
+
+    /** 记录时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "记录时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date recordTime;
+
+    /** 创建部门 */
+    private Long createDept;
+
+    public void setMenuFoodRecordId(Long menuFoodRecordId) 
+    {
+        this.menuFoodRecordId = menuFoodRecordId;
+    }
+
+    public Long getMenuFoodRecordId() 
+    {
+        return menuFoodRecordId;
+    }
+    public void setMenuFoodTime(String menuFoodTime) 
+    {
+        this.menuFoodTime = menuFoodTime;
+    }
+
+    public String getMenuFoodTime() 
+    {
+        return menuFoodTime;
+    }
+    public void setMenuFoodType(String menuFoodType) 
+    {
+        this.menuFoodType = menuFoodType;
+    }
+
+    public String getMenuFoodType() 
+    {
+        return menuFoodType;
+    }
+    public void setMenuFoodDetailBk(String menuFoodDetailBk) 
+    {
+        this.menuFoodDetailBk = menuFoodDetailBk;
+    }
+
+    public String getMenuFoodDetailBk() 
+    {
+        return menuFoodDetailBk;
+    }
+    public void setMenuFoodDetailLu(String menuFoodDetailLu) 
+    {
+        this.menuFoodDetailLu = menuFoodDetailLu;
+    }
+
+    public String getMenuFoodDetailLu() 
+    {
+        return menuFoodDetailLu;
+    }
+    public void setMenuFoodDetailDi(String menuFoodDetailDi) 
+    {
+        this.menuFoodDetailDi = menuFoodDetailDi;
+    }
+
+    public String getMenuFoodDetailDi() 
+    {
+        return menuFoodDetailDi;
+    }
+    public void setCanteenName(String canteenName) 
+    {
+        this.canteenName = canteenName;
+    }
+
+    public String getCanteenName() 
+    {
+        return canteenName;
+    }
+    public void setCanteenId(Long canteenId) 
+    {
+        this.canteenId = canteenId;
+    }
+
+    public Long getCanteenId() 
+    {
+        return canteenId;
+    }
+    public void setRecordTime(Date recordTime) 
+    {
+        this.recordTime = recordTime;
+    }
+
+    public Date getRecordTime() 
+    {
+        return recordTime;
+    }
+    public void setCreateDept(Long createDept) 
+    {
+        this.createDept = createDept;
+    }
+
+    public Long getCreateDept() 
+    {
+        return createDept;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("menuFoodRecordId", getMenuFoodRecordId())
+            .append("menuFoodTime", getMenuFoodTime())
+            .append("menuFoodType", getMenuFoodType())
+            .append("menuFoodDetailBk", getMenuFoodDetailBk())
+            .append("menuFoodDetailLu", getMenuFoodDetailLu())
+            .append("menuFoodDetailDi", getMenuFoodDetailDi())
+            .append("canteenName", getCanteenName())
+            .append("canteenId", getCanteenId())
+            .append("recordTime", getRecordTime())
+            .append("createDept", getCreateDept())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 23 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MenuFoodVo.java

@@ -0,0 +1,23 @@
+package com.ruoyi.system.domain.vo;
+
+import com.ruoyi.system.domain.MenuFood;
+
+import java.util.List;
+
+/**
+ * 新增菜谱使用
+ * @Author: tjf
+ * @Date: 2024/11/7 17:13
+ * @Describe:
+ */
+public class MenuFoodVo {
+    private List<MenuFood> menuFoodList;
+
+    public List<MenuFood> getMenuFoodList() {
+        return menuFoodList;
+    }
+
+    public void setMenuFoodList(List<MenuFood> menuFoodList) {
+        this.menuFoodList = menuFoodList;
+    }
+}

+ 64 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/MenuFoodMapper.java

@@ -0,0 +1,64 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.MenuFood;
+
+import java.util.List;
+
+/**
+ * 每日食谱Mapper接口
+ * 
+ * @author boman
+ * @date 2024-11-07
+ */
+public interface MenuFoodMapper 
+{
+    /**
+     * 查询每日食谱
+     * 
+     * @param menuFoodId 每日食谱主键
+     * @return 每日食谱
+     */
+    public MenuFood selectMenuFoodByMenuFoodId(Long menuFoodId);
+
+    /**
+     * 查询每日食谱列表
+     * 
+     * @param menuFood 每日食谱
+     * @return 每日食谱集合
+     */
+    public List<MenuFood> selectMenuFoodList(MenuFood menuFood);
+
+    /**
+     * 新增每日食谱
+     * 
+     * @param menuFood 每日食谱
+     * @return 结果
+     */
+    public int insertMenuFood(MenuFood menuFood);
+    public int batchMenuFoodVo(List<MenuFood> menuFood);
+
+    /**
+     * 修改每日食谱
+     * 
+     * @param menuFood 每日食谱
+     * @return 结果
+     */
+    public int updateMenuFood(MenuFood menuFood);
+    public int updateMenuFoodTime(String menuFoodTime);
+
+    /**
+     * 删除每日食谱
+     * 
+     * @param menuFoodId 每日食谱主键
+     * @return 结果
+     */
+    public int deleteMenuFoodByMenuFoodId(Long menuFoodId);
+
+    /**
+     * 批量删除每日食谱
+     * 
+     * @param menuFoodIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteMenuFoodByMenuFoodIds(Long[] menuFoodIds);
+}

+ 62 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/MenuFoodRecordMapper.java

@@ -0,0 +1,62 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.MenuFoodRecord;
+
+import java.util.List;
+
+/**
+ * 每日食谱记录Mapper接口
+ * 
+ * @author boman
+ * @date 2024-11-07
+ */
+public interface MenuFoodRecordMapper 
+{
+    /**
+     * 查询每日食谱记录
+     * 
+     * @param menuFoodRecordId 每日食谱记录主键
+     * @return 每日食谱记录
+     */
+    public MenuFoodRecord selectMenuFoodRecordByMenuFoodRecordId(Long menuFoodRecordId);
+
+    /**
+     * 查询每日食谱记录列表
+     * 
+     * @param menuFoodRecord 每日食谱记录
+     * @return 每日食谱记录集合
+     */
+    public List<MenuFoodRecord> selectMenuFoodRecordList(MenuFoodRecord menuFoodRecord);
+
+    /**
+     * 新增每日食谱记录
+     * 
+     * @param menuFoodRecord 每日食谱记录
+     * @return 结果
+     */
+    public int insertMenuFoodRecord(MenuFoodRecord menuFoodRecord);
+
+    /**
+     * 修改每日食谱记录
+     * 
+     * @param menuFoodRecord 每日食谱记录
+     * @return 结果
+     */
+    public int updateMenuFoodRecord(MenuFoodRecord menuFoodRecord);
+
+    /**
+     * 删除每日食谱记录
+     * 
+     * @param menuFoodRecordId 每日食谱记录主键
+     * @return 结果
+     */
+    public int deleteMenuFoodRecordByMenuFoodRecordId(Long menuFoodRecordId);
+
+    /**
+     * 批量删除每日食谱记录
+     * 
+     * @param menuFoodRecordIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteMenuFoodRecordByMenuFoodRecordIds(Long[] menuFoodRecordIds);
+}

+ 62 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IMenuFoodRecordService.java

@@ -0,0 +1,62 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.MenuFoodRecord;
+
+import java.util.List;
+
+/**
+ * 每日食谱记录Service接口
+ * 
+ * @author boman
+ * @date 2024-11-07
+ */
+public interface IMenuFoodRecordService 
+{
+    /**
+     * 查询每日食谱记录
+     * 
+     * @param menuFoodRecordId 每日食谱记录主键
+     * @return 每日食谱记录
+     */
+    public MenuFoodRecord selectMenuFoodRecordByMenuFoodRecordId(Long menuFoodRecordId);
+
+    /**
+     * 查询每日食谱记录列表
+     * 
+     * @param menuFoodRecord 每日食谱记录
+     * @return 每日食谱记录集合
+     */
+    public List<MenuFoodRecord> selectMenuFoodRecordList(MenuFoodRecord menuFoodRecord);
+
+    /**
+     * 新增每日食谱记录
+     * 
+     * @param menuFoodRecord 每日食谱记录
+     * @return 结果
+     */
+    public int insertMenuFoodRecord(MenuFoodRecord menuFoodRecord);
+
+    /**
+     * 修改每日食谱记录
+     * 
+     * @param menuFoodRecord 每日食谱记录
+     * @return 结果
+     */
+    public int updateMenuFoodRecord(MenuFoodRecord menuFoodRecord);
+
+    /**
+     * 批量删除每日食谱记录
+     * 
+     * @param menuFoodRecordIds 需要删除的每日食谱记录主键集合
+     * @return 结果
+     */
+    public int deleteMenuFoodRecordByMenuFoodRecordIds(Long[] menuFoodRecordIds);
+
+    /**
+     * 删除每日食谱记录信息
+     * 
+     * @param menuFoodRecordId 每日食谱记录主键
+     * @return 结果
+     */
+    public int deleteMenuFoodRecordByMenuFoodRecordId(Long menuFoodRecordId);
+}

+ 64 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IMenuFoodService.java

@@ -0,0 +1,64 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.MenuFood;
+import com.ruoyi.system.domain.vo.MenuFoodVo;
+
+import java.util.List;
+
+/**
+ * 每日食谱Service接口
+ * 
+ * @author boman
+ * @date 2024-11-07
+ */
+public interface IMenuFoodService 
+{
+    /**
+     * 查询每日食谱
+     * 
+     * @param menuFoodId 每日食谱主键
+     * @return 每日食谱
+     */
+    public MenuFood selectMenuFoodByMenuFoodId(Long menuFoodId);
+
+    /**
+     * 查询每日食谱列表
+     * 
+     * @param menuFood 每日食谱
+     * @return 每日食谱集合
+     */
+    public List<MenuFood> selectMenuFoodList(MenuFood menuFood);
+
+    /**
+     * 新增每日食谱
+     * 
+     * @param menuFood 每日食谱
+     * @return 结果
+     */
+    public int insertMenuFood(MenuFood menuFood);
+    public int batchMenuFoodVo(MenuFoodVo menuFoodVo);
+
+    /**
+     * 修改每日食谱
+     * 
+     * @param menuFood 每日食谱
+     * @return 结果
+     */
+    public int updateMenuFood(MenuFood menuFood);
+
+    /**
+     * 批量删除每日食谱
+     * 
+     * @param menuFoodIds 需要删除的每日食谱主键集合
+     * @return 结果
+     */
+    public int deleteMenuFoodByMenuFoodIds(Long[] menuFoodIds);
+
+    /**
+     * 删除每日食谱信息
+     * 
+     * @param menuFoodId 每日食谱主键
+     * @return 结果
+     */
+    public int deleteMenuFoodByMenuFoodId(Long menuFoodId);
+}

+ 98 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MenuFoodRecordServiceImpl.java

@@ -0,0 +1,98 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.domain.MenuFoodRecord;
+import com.ruoyi.system.mapper.MenuFoodRecordMapper;
+import com.ruoyi.system.service.IMenuFoodRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 每日食谱记录Service业务层处理
+ * 
+ * @author boman
+ * @date 2024-11-07
+ */
+@Service
+public class MenuFoodRecordServiceImpl implements IMenuFoodRecordService 
+{
+    @Autowired
+    private MenuFoodRecordMapper menuFoodRecordMapper;
+
+    /**
+     * 查询每日食谱记录
+     * 
+     * @param menuFoodRecordId 每日食谱记录主键
+     * @return 每日食谱记录
+     */
+    @Override
+    public MenuFoodRecord selectMenuFoodRecordByMenuFoodRecordId(Long menuFoodRecordId)
+    {
+        return menuFoodRecordMapper.selectMenuFoodRecordByMenuFoodRecordId(menuFoodRecordId);
+    }
+
+    /**
+     * 查询每日食谱记录列表
+     * 
+     * @param menuFoodRecord 每日食谱记录
+     * @return 每日食谱记录
+     */
+    @Override
+    public List<MenuFoodRecord> selectMenuFoodRecordList(MenuFoodRecord menuFoodRecord)
+    {
+        return menuFoodRecordMapper.selectMenuFoodRecordList(menuFoodRecord);
+    }
+
+    /**
+     * 新增每日食谱记录
+     * 
+     * @param menuFoodRecord 每日食谱记录
+     * @return 结果
+     */
+    @Override
+    public int insertMenuFoodRecord(MenuFoodRecord menuFoodRecord)
+    {
+        menuFoodRecord.setCreateTime(DateUtils.getNowDate());
+        menuFoodRecord.setRecordTime(DateUtils.getNowDate());
+        return menuFoodRecordMapper.insertMenuFoodRecord(menuFoodRecord);
+    }
+
+    /**
+     * 修改每日食谱记录
+     * 
+     * @param menuFoodRecord 每日食谱记录
+     * @return 结果
+     */
+    @Override
+    public int updateMenuFoodRecord(MenuFoodRecord menuFoodRecord)
+    {
+        menuFoodRecord.setUpdateTime(DateUtils.getNowDate());
+        return menuFoodRecordMapper.updateMenuFoodRecord(menuFoodRecord);
+    }
+
+    /**
+     * 批量删除每日食谱记录
+     * 
+     * @param menuFoodRecordIds 需要删除的每日食谱记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMenuFoodRecordByMenuFoodRecordIds(Long[] menuFoodRecordIds)
+    {
+        return menuFoodRecordMapper.deleteMenuFoodRecordByMenuFoodRecordIds(menuFoodRecordIds);
+    }
+
+    /**
+     * 删除每日食谱记录信息
+     * 
+     * @param menuFoodRecordId 每日食谱记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMenuFoodRecordByMenuFoodRecordId(Long menuFoodRecordId)
+    {
+        return menuFoodRecordMapper.deleteMenuFoodRecordByMenuFoodRecordId(menuFoodRecordId);
+    }
+}

+ 131 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MenuFoodServiceImpl.java

@@ -0,0 +1,131 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.domain.MenuFood;
+import com.ruoyi.system.domain.vo.MenuFoodVo;
+import com.ruoyi.system.mapper.MenuFoodMapper;
+import com.ruoyi.system.service.IMenuFoodService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 每日食谱Service业务层处理
+ * 
+ * @author boman
+ * @date 2024-11-07
+ */
+@Service
+public class MenuFoodServiceImpl implements IMenuFoodService 
+{
+    @Autowired
+    private MenuFoodMapper menuFoodMapper;
+
+    /**
+     * 查询每日食谱
+     * 
+     * @param menuFoodId 每日食谱主键
+     * @return 每日食谱
+     */
+    @Override
+    public MenuFood selectMenuFoodByMenuFoodId(Long menuFoodId)
+    {
+        return menuFoodMapper.selectMenuFoodByMenuFoodId(menuFoodId);
+    }
+
+    /**
+     * 查询每日食谱列表
+     * 
+     * @param menuFood 每日食谱
+     * @return 每日食谱
+     */
+    @Override
+    public List<MenuFood> selectMenuFoodList(MenuFood menuFood)
+    {
+        return menuFoodMapper.selectMenuFoodList(menuFood);
+    }
+
+    /**
+     * 新增每日食谱
+     * 
+     * @param menuFood 每日食谱
+     * @return 结果
+     */
+    @Override
+    public int insertMenuFood(MenuFood menuFood)
+    {
+        menuFood.setCreateTime(DateUtils.getNowDate());
+        return menuFoodMapper.insertMenuFood(menuFood);
+    }
+    /**
+     * 新增每日食谱批量
+     *
+     * @param menuFoodVo 每日食谱
+     * @return 结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int batchMenuFoodVo(MenuFoodVo menuFoodVo) {
+        List<MenuFood> menuFoodList = menuFoodVo.getMenuFoodList();
+        int row = 0;
+        if (menuFoodList != null && menuFoodList.size() >0){
+            //如果是启用,查询对应日期是否有已经启用的数据,改为不启用
+            for (MenuFood menuFood : menuFoodList) {
+                String isUse = menuFood.getIsUse();
+                String menuFoodTime = menuFood.getMenuFoodTime();
+                if ("Y".equals(isUse)){
+                    //把对应日期改为不启用
+                    menuFoodMapper.updateMenuFoodTime(menuFoodTime);
+                }
+            }
+            row = menuFoodMapper.batchMenuFoodVo(menuFoodList);
+        }
+        return row;
+    }
+
+    /**
+     * 修改每日食谱
+     * 
+     * @param menuFood 每日食谱
+     * @return 结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int updateMenuFood(MenuFood menuFood)
+    {
+        String isUse = menuFood.getIsUse();
+        String menuFoodTime = menuFood.getMenuFoodTime();
+        if ("Y".equals(isUse)){
+            //把对应日期改为不启用
+            menuFoodMapper.updateMenuFoodTime(menuFoodTime);
+        }
+        menuFood.setUpdateTime(DateUtils.getNowDate());
+        return menuFoodMapper.updateMenuFood(menuFood);
+    }
+
+    /**
+     * 批量删除每日食谱
+     * 
+     * @param menuFoodIds 需要删除的每日食谱主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMenuFoodByMenuFoodIds(Long[] menuFoodIds)
+    {
+        return menuFoodMapper.deleteMenuFoodByMenuFoodIds(menuFoodIds);
+    }
+
+    /**
+     * 删除每日食谱信息
+     * 
+     * @param menuFoodId 每日食谱主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMenuFoodByMenuFoodId(Long menuFoodId)
+    {
+        return menuFoodMapper.deleteMenuFoodByMenuFoodId(menuFoodId);
+    }
+}

+ 51 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/Task.java

@@ -0,0 +1,51 @@
+package com.ruoyi.system.service.impl;
+
+
+import com.google.gson.Gson;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.domain.MenuFood;
+import com.ruoyi.system.domain.MenuFoodRecord;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * 定时任务
+ */
+@Component
+public class Task {
+    @Autowired
+    private MenuFoodRecordServiceImpl menuFoodRecordService;
+    @Autowired
+    private MenuFoodServiceImpl menuFoodService;
+    private static final Gson GSON = new Gson();
+
+    /***
+     *每日食谱记录定时任务
+     * 每天23点执行
+     * @throws Exception
+     */
+    @Async
+    @Scheduled(cron = "0 0 23 * * ? ")
+    public void popover() throws Exception {
+        // 获取当前日期
+        LocalDate currentDate = LocalDate.now();
+        // 格式化日期为星期几,使用中文环境
+        String currentDayOfWeek = currentDate.format(DateTimeFormatter.ofPattern("E", Locale.CHINA));
+        MenuFood menuFood = new MenuFood();
+        menuFood.setMenuFoodTime(currentDayOfWeek);
+        menuFood.setIsUse("Y");
+        List<MenuFood> menuFoods = menuFoodService.selectMenuFoodList(menuFood);
+        if (menuFoods != null && menuFoods.size() > 0) {
+            MenuFoodRecord menuFoodRecord = GSON.fromJson(GSON.toJson(menuFoods.get(0)), MenuFoodRecord.class);
+            menuFoodRecord.setRecordTime(DateUtils.getNowDate());
+            menuFoodRecordService.insertMenuFoodRecord(menuFoodRecord);
+        }
+    }
+}

+ 150 - 0
ruoyi-system/src/main/resources/mapper/system/MenuFoodMapper.xml

@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.MenuFoodMapper">
+
+    <resultMap type="MenuFood" id="MenuFoodResult">
+        <result property="menuFoodId" column="menu_food_id"/>
+        <result property="menuFoodTime" column="menu_food_time"/>
+        <result property="menuFoodType" column="menu_food_type"/>
+        <result property="menuFoodDetailBk" column="menu_food_detail_bk"/>
+        <result property="menuFoodDetailLu" column="menu_food_detail_lu"/>
+        <result property="menuFoodDetailDi" column="menu_food_detail_di"/>
+        <result property="canteenName" column="canteen_name"/>
+        <result property="canteenId" column="canteen_id"/>
+        <result property="isUse" column="is_use"/>
+        <result property="createDept" column="create_dept"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="remark" column="remark"/>
+    </resultMap>
+
+    <sql id="selectMenuFoodVo">
+        select menu_food_id,
+               menu_food_time,
+               menu_food_type,
+               menu_food_detail_bk,
+               menu_food_detail_lu,
+               menu_food_detail_di,
+               canteen_name,
+               canteen_id,
+               is_use,
+               create_dept,
+               create_by,
+               create_time,
+               update_by,
+               update_time,
+               remark
+        from menu_food
+    </sql>
+
+    <select id="selectMenuFoodList" parameterType="MenuFood" resultMap="MenuFoodResult">
+        <include refid="selectMenuFoodVo"/>
+        <where>
+            <if test="menuFoodTime != null  and menuFoodTime != ''">and menu_food_time = #{menuFoodTime}</if>
+            <if test="menuFoodType != null  and menuFoodType != ''">and menu_food_type = #{menuFoodType}</if>
+            <if test="menuFoodDetailBk != null  and menuFoodDetailBk != ''">and menu_food_detail_bk =
+                #{menuFoodDetailBk}
+            </if>
+            <if test="menuFoodDetailLu != null  and menuFoodDetailLu != ''">and menu_food_detail_lu =
+                #{menuFoodDetailLu}
+            </if>
+            <if test="menuFoodDetailDi != null  and menuFoodDetailDi != ''">and menu_food_detail_di =
+                #{menuFoodDetailDi}
+            </if>
+            <if test="canteenName != null  and canteenName != ''">and canteen_name like concat('%', #{canteenName},
+                '%')
+            </if>
+            <if test="canteenId != null ">and canteen_id = #{canteenId}</if>
+            <if test="isUse != null  and isUse != ''">and is_use = #{isUse}</if>
+        </where>
+    </select>
+
+    <select id="selectMenuFoodByMenuFoodId" parameterType="Long" resultMap="MenuFoodResult">
+        <include refid="selectMenuFoodVo"/>
+        where menu_food_id = #{menuFoodId}
+    </select>
+
+    <insert id="insertMenuFood" parameterType="MenuFood" useGeneratedKeys="true" keyProperty="menuFoodId">
+        insert into menu_food
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="menuFoodTime != null">menu_food_time,</if>
+            <if test="menuFoodType != null">menu_food_type,</if>
+            <if test="menuFoodDetailBk != null">menu_food_detail_bk,</if>
+            <if test="menuFoodDetailLu != null">menu_food_detail_lu,</if>
+            <if test="menuFoodDetailDi != null">menu_food_detail_di,</if>
+            <if test="canteenName != null">canteen_name,</if>
+            <if test="canteenId != null">canteen_id,</if>
+            <if test="isUse != null">is_use,</if>
+            <if test="createDept != null">create_dept,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="menuFoodTime != null">#{menuFoodTime},</if>
+            <if test="menuFoodType != null">#{menuFoodType},</if>
+            <if test="menuFoodDetailBk != null">#{menuFoodDetailBk},</if>
+            <if test="menuFoodDetailLu != null">#{menuFoodDetailLu},</if>
+            <if test="menuFoodDetailDi != null">#{menuFoodDetailDi},</if>
+            <if test="canteenName != null">#{canteenName},</if>
+            <if test="canteenId != null">#{canteenId},</if>
+            <if test="isUse != null">#{isUse},</if>
+            <if test="createDept != null">#{createDept},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+        </trim>
+    </insert>
+
+    <insert id="batchMenuFoodVo">
+        insert into menu_food(menu_food_time, menu_food_detail_bk, menu_food_detail_lu, menu_food_detail_di, is_use,
+        create_time, remark) values
+        <foreach item="item" index="index" collection="list" separator=",">
+            (#{item.menuFoodTime},#{item.menuFoodDetailBk},#{item.menuFoodDetailLu},#{item.menuFoodDetailDi},#{item.isUse},sysdate(),#{item.remark})
+        </foreach>
+    </insert>
+    <update id="updateMenuFood" parameterType="MenuFood">
+        update menu_food
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="menuFoodTime != null">menu_food_time = #{menuFoodTime},</if>
+            <if test="menuFoodType != null">menu_food_type = #{menuFoodType},</if>
+            <if test="menuFoodDetailBk != null">menu_food_detail_bk = #{menuFoodDetailBk},</if>
+            <if test="menuFoodDetailLu != null">menu_food_detail_lu = #{menuFoodDetailLu},</if>
+            <if test="menuFoodDetailDi != null">menu_food_detail_di = #{menuFoodDetailDi},</if>
+            <if test="canteenName != null">canteen_name = #{canteenName},</if>
+            <if test="canteenId != null">canteen_id = #{canteenId},</if>
+            <if test="isUse != null">is_use = #{isUse},</if>
+            <if test="createDept != null">create_dept = #{createDept},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where menu_food_id = #{menuFoodId}
+    </update>
+    <update id="updateMenuFoodTime" parameterType="string">
+        update menu_food set is_use = 'N' where menu_food_time = #{menuFoodTime}
+    </update>
+
+    <delete id="deleteMenuFoodByMenuFoodId" parameterType="Long">
+        delete
+        from menu_food
+        where menu_food_id = #{menuFoodId}
+    </delete>
+
+    <delete id="deleteMenuFoodByMenuFoodIds" parameterType="String">
+        delete from menu_food where menu_food_id in
+        <foreach item="menuFoodId" collection="array" open="(" separator="," close=")">
+            #{menuFoodId}
+        </foreach>
+    </delete>
+</mapper>

+ 116 - 0
ruoyi-system/src/main/resources/mapper/system/MenuFoodRecordMapper.xml

@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.MenuFoodRecordMapper">
+    
+    <resultMap type="MenuFoodRecord" id="MenuFoodRecordResult">
+        <result property="menuFoodRecordId"    column="menu_food_record_id"    />
+        <result property="menuFoodTime"    column="menu_food_time"    />
+        <result property="menuFoodType"    column="menu_food_type"    />
+        <result property="menuFoodDetailBk"    column="menu_food_detail_bk"    />
+        <result property="menuFoodDetailLu"    column="menu_food_detail_lu"    />
+        <result property="menuFoodDetailDi"    column="menu_food_detail_di"    />
+        <result property="canteenName"    column="canteen_name"    />
+        <result property="canteenId"    column="canteen_id"    />
+        <result property="recordTime"    column="record_time"    />
+        <result property="createDept"    column="create_dept"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectMenuFoodRecordVo">
+        select menu_food_record_id, menu_food_time, menu_food_type, menu_food_detail_bk, menu_food_detail_lu, menu_food_detail_di, canteen_name, canteen_id, record_time, create_dept, create_by, create_time, update_by, update_time, remark from menu_food_record
+    </sql>
+
+    <select id="selectMenuFoodRecordList" parameterType="MenuFoodRecord" resultMap="MenuFoodRecordResult">
+        <include refid="selectMenuFoodRecordVo"/>
+        <where>  
+            <if test="menuFoodTime != null  and menuFoodTime != ''"> and menu_food_time = #{menuFoodTime}</if>
+            <if test="menuFoodType != null  and menuFoodType != ''"> and menu_food_type = #{menuFoodType}</if>
+            <if test="menuFoodDetailBk != null  and menuFoodDetailBk != ''"> and menu_food_detail_bk = #{menuFoodDetailBk}</if>
+            <if test="menuFoodDetailLu != null  and menuFoodDetailLu != ''"> and menu_food_detail_lu = #{menuFoodDetailLu}</if>
+            <if test="menuFoodDetailDi != null  and menuFoodDetailDi != ''"> and menu_food_detail_di = #{menuFoodDetailDi}</if>
+            <if test="canteenName != null  and canteenName != ''"> and canteen_name like concat('%', #{canteenName}, '%')</if>
+            <if test="canteenId != null "> and canteen_id = #{canteenId}</if>
+            <if test="recordTime != null "> and record_time = #{recordTime}</if>
+        </where>
+        order by record_time DESC
+    </select>
+    
+    <select id="selectMenuFoodRecordByMenuFoodRecordId" parameterType="Long" resultMap="MenuFoodRecordResult">
+        <include refid="selectMenuFoodRecordVo"/>
+        where menu_food_record_id = #{menuFoodRecordId}
+    </select>
+        
+    <insert id="insertMenuFoodRecord" parameterType="MenuFoodRecord" useGeneratedKeys="true" keyProperty="menuFoodRecordId">
+        insert into menu_food_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="menuFoodTime != null">menu_food_time,</if>
+            <if test="menuFoodType != null">menu_food_type,</if>
+            <if test="menuFoodDetailBk != null">menu_food_detail_bk,</if>
+            <if test="menuFoodDetailLu != null">menu_food_detail_lu,</if>
+            <if test="menuFoodDetailDi != null">menu_food_detail_di,</if>
+            <if test="canteenName != null">canteen_name,</if>
+            <if test="canteenId != null">canteen_id,</if>
+            <if test="recordTime != null">record_time,</if>
+            <if test="createDept != null">create_dept,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="menuFoodTime != null">#{menuFoodTime},</if>
+            <if test="menuFoodType != null">#{menuFoodType},</if>
+            <if test="menuFoodDetailBk != null">#{menuFoodDetailBk},</if>
+            <if test="menuFoodDetailLu != null">#{menuFoodDetailLu},</if>
+            <if test="menuFoodDetailDi != null">#{menuFoodDetailDi},</if>
+            <if test="canteenName != null">#{canteenName},</if>
+            <if test="canteenId != null">#{canteenId},</if>
+            <if test="recordTime != null">#{recordTime},</if>
+            <if test="createDept != null">#{createDept},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateMenuFoodRecord" parameterType="MenuFoodRecord">
+        update menu_food_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="menuFoodTime != null">menu_food_time = #{menuFoodTime},</if>
+            <if test="menuFoodType != null">menu_food_type = #{menuFoodType},</if>
+            <if test="menuFoodDetailBk != null">menu_food_detail_bk = #{menuFoodDetailBk},</if>
+            <if test="menuFoodDetailLu != null">menu_food_detail_lu = #{menuFoodDetailLu},</if>
+            <if test="menuFoodDetailDi != null">menu_food_detail_di = #{menuFoodDetailDi},</if>
+            <if test="canteenName != null">canteen_name = #{canteenName},</if>
+            <if test="canteenId != null">canteen_id = #{canteenId},</if>
+            <if test="recordTime != null">record_time = #{recordTime},</if>
+            <if test="createDept != null">create_dept = #{createDept},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where menu_food_record_id = #{menuFoodRecordId}
+    </update>
+
+    <delete id="deleteMenuFoodRecordByMenuFoodRecordId" parameterType="Long">
+        delete from menu_food_record where menu_food_record_id = #{menuFoodRecordId}
+    </delete>
+
+    <delete id="deleteMenuFoodRecordByMenuFoodRecordIds" parameterType="String">
+        delete from menu_food_record where menu_food_record_id in 
+        <foreach item="menuFoodRecordId" collection="array" open="(" separator="," close=")">
+            #{menuFoodRecordId}
+        </foreach>
+    </delete>
+</mapper>