Jelajahi Sumber

新增
1、新增楼层报餐模块
BUGFIX
1、解决餐饮计划分页无法根据餐厅进行过滤的问题

liangwenxuan 4 hari lalu
induk
melakukan
d899550294
12 mengubah file dengan 522 tambahan dan 2 penghapusan
  1. 17 0
      sql/mysql/elderly_build_floor_order_food.sql
  2. 2 0
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
  3. 90 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/ElderlyBuildFloorOrderFoodController.java
  4. 33 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/ElderlyBuildFloorOrderFoodPageReqVO.java
  5. 56 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/ElderlyBuildFloorOrderFoodRespVO.java
  6. 48 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/ElderlyBuildFloorOrderFoodSaveReqVO.java
  7. 84 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyBuildFloorOrderFoodDO.java
  8. 27 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyBuildFloorOrderFoodMapper.java
  9. 1 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/restaurant/CateringPlanMapper.java
  10. 53 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyBuildFloorOrderFoodService.java
  11. 106 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyBuildFloorOrderFoodServiceImpl.java
  12. 5 1
      yudao-server/src/main/resources/application.yaml

+ 17 - 0
sql/mysql/elderly_build_floor_order_food.sql

@@ -0,0 +1,17 @@
+DROP TABLE IF EXISTS `elderly_build_floor_order_food`;
+CREATE TABLE `elderly_build_floor_order_food`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `build_id` int(11) NULL DEFAULT NULL COMMENT '楼栋id',
+  `build_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '楼栋名称',
+  `floor_id` int(11) NULL DEFAULT NULL COMMENT '楼层id',
+  `floor_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '楼层名称',
+  `order_date` date NULL DEFAULT NULL COMMENT '报餐日期',
+  `order_data_json` varchar(2048) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '报餐json数据',
+  `remark` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `creator` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
+  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
+  `updater` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人',
+  `tenant_id` bigint(20) NULL DEFAULT NULL COMMENT '机构id',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '楼层报餐' ROW_FORMAT = Dynamic;

+ 2 - 0
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java

@@ -313,6 +313,8 @@ public interface ErrorCodeConstants {
     ErrorCode ELDERLY_EXTRA_FIRST_SERVICE_CONFIRMATION_NOT_EXISTS = new ErrorCode(1_008_021_000, "首次服务项目确认表不存在");
     // ========== 变更事项确认表 1-008-022-000 ==========
     ErrorCode ELDERLY_EXTRA_CHANGE_CONFIRMATION_NOT_EXISTS = new ErrorCode(1_008_022_000, "变更事项确认表不存在");
+    // ========== 楼层报餐 1-008-023-000 ==========
+    ErrorCode ELDERLY_BUILD_FLOOR_ORDER_FOOD_NOT_EXISTS = new ErrorCode(1_008_023_000, "楼层报餐不存在");
 
     // ========== 预约名额预占 1-002-040-000 ==========
     ErrorCode APPOINTMENT_CONFIG_NOT_FOUND = new ErrorCode(1_002_040_000, "预约配置不存在");

+ 90 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/ElderlyBuildFloorOrderFoodController.java

@@ -0,0 +1,90 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyBuildFloorOrderFoodPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyBuildFloorOrderFoodRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyBuildFloorOrderFoodSaveReqVO;
+import cn.iocoder.yudao.module.system.service.biz.ElderlyBuildFloorOrderFoodService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.annotation.security.PermitAll;
+import javax.validation.Valid;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+/**
+ * 管理后台 - 楼层报餐 Controller
+ *
+ * @author 系统管理员
+ */
+@Tag(name = "管理后台 - 楼层报餐")
+@RestController
+@RequestMapping("/elderly-build-floor-order-food")
+@Validated
+public class ElderlyBuildFloorOrderFoodController {
+
+    @Resource
+    private ElderlyBuildFloorOrderFoodService elderlyBuildFloorOrderFoodService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建楼层报餐")
+    @PermitAll
+    @TenantIgnore
+    public CommonResult<Long> create(@Valid @RequestBody ElderlyBuildFloorOrderFoodSaveReqVO createReqVO) {
+        if (createReqVO.getTenantId() == null) {
+            createReqVO.setTenantId(TenantContextHolder.getTenantId());
+        }
+        return success(elderlyBuildFloorOrderFoodService.createElderlyBuildFloorOrderFood(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新楼层报餐")
+    @PermitAll
+    @TenantIgnore
+    public CommonResult<Boolean> update(@Valid @RequestBody ElderlyBuildFloorOrderFoodSaveReqVO updateReqVO) {
+        if (updateReqVO.getTenantId() == null) {
+            updateReqVO.setTenantId(TenantContextHolder.getTenantId());
+        }
+        elderlyBuildFloorOrderFoodService.updateElderlyBuildFloorOrderFood(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除楼层报餐")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PermitAll
+    @TenantIgnore
+    public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
+        elderlyBuildFloorOrderFoodService.deleteElderlyBuildFloorOrderFood(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得楼层报餐详情")
+    @Parameter(name = "id", description = "编号", required = true, example = "1")
+    @PermitAll
+    @TenantIgnore
+    public CommonResult<ElderlyBuildFloorOrderFoodRespVO> get(@RequestParam("id") Long id) {
+        return success(elderlyBuildFloorOrderFoodService.getElderlyBuildFloorOrderFood(id));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得楼层报餐分页")
+    @PermitAll
+    @TenantIgnore
+    public CommonResult<PageResult<ElderlyBuildFloorOrderFoodRespVO>> page(@Valid ElderlyBuildFloorOrderFoodPageReqVO pageReqVO) {
+        if (pageReqVO.getTenantId() == null) {
+            pageReqVO.setTenantId(TenantContextHolder.getTenantId());
+        }
+        return success(elderlyBuildFloorOrderFoodService.getElderlyBuildFloorOrderFoodPage(pageReqVO));
+    }
+
+}

+ 33 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/ElderlyBuildFloorOrderFoodPageReqVO.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+
+@Schema(description = "管理后台 - 楼层报餐分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ElderlyBuildFloorOrderFoodPageReqVO extends PageParam {
+
+    @Schema(description = "楼栋id")
+    private Integer buildId;
+
+    @Schema(description = "楼层id")
+    private Integer floorId;
+
+    @Schema(description = "报餐日期范围")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private LocalDate[] orderDate;
+
+    @Schema(description = "机构id")
+    private Long tenantId;
+
+}

+ 56 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/ElderlyBuildFloorOrderFoodRespVO.java

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+
+@Schema(description = "管理后台 - 楼层报餐 Response VO")
+@Data
+public class ElderlyBuildFloorOrderFoodRespVO {
+
+    @Schema(description = "编号", example = "1")
+    private Long id;
+
+    @Schema(description = "楼栋id")
+    private Integer buildId;
+
+    @Schema(description = "楼栋名称")
+    private String buildName;
+
+    @Schema(description = "楼层id")
+    private Integer floorId;
+
+    @Schema(description = "楼层名称")
+    private String floorName;
+
+    @Schema(description = "报餐日期")
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = "GMT+8")
+    private LocalDate orderDate;
+
+    @Schema(description = "报餐json数据")
+    private String orderDataJson;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "机构id")
+    private Long tenantId;
+
+    @Schema(description = "创建时间", example = "2026-08-18 00:00:00")
+    private LocalDateTime createTime;
+
+    @Schema(description = "创建人")
+    private String creator;
+
+    @Schema(description = "修改时间", example = "2026-08-18 00:00:00")
+    private LocalDateTime updateTime;
+
+    @Schema(description = "修改人")
+    private String updater;
+
+}

+ 48 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/ElderlyBuildFloorOrderFoodSaveReqVO.java

@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+
+@Schema(description = "管理后台 - 楼层报餐创建/更新 Request VO")
+@Data
+public class ElderlyBuildFloorOrderFoodSaveReqVO {
+
+    @Schema(description = "编号,更新时必传", example = "1")
+    private Long id;
+
+    @Schema(description = "楼栋id", example = "1")
+    private Integer buildId;
+
+    @Schema(description = "楼栋名称")
+    private String buildName;
+
+    @Schema(description = "楼层id", example = "1")
+    private Integer floorId;
+
+    @Schema(description = "楼层名称")
+    private String floorName;
+
+    @Schema(description = "报餐日期", example = "2026-08-18")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private LocalDate orderDate;
+
+    @Schema(description = "报餐json数据")
+    private String orderDataJson;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "机构id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "机构id不能为空")
+    private Long tenantId;
+
+    @Schema(description = "创建人,由前端传入")
+    private String creator;
+
+}

+ 84 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyBuildFloorOrderFoodDO.java

@@ -0,0 +1,84 @@
+package cn.iocoder.yudao.module.system.dal.dataobject.biz;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseNoDeleteDO;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+
+/**
+ * 楼层报餐 DO
+ *
+ * @author 系统管理员
+ */
+@TableName("elderly_build_floor_order_food")
+@Data
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ElderlyBuildFloorOrderFoodDO extends BaseNoDeleteDO {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 楼栋id
+     */
+    @Schema(description = "楼栋id")
+    private Integer buildId;
+
+    /**
+     * 楼栋名称
+     */
+    @Schema(description = "楼栋名称")
+    private String buildName;
+
+    /**
+     * 楼层id
+     */
+    @Schema(description = "楼层id")
+    private Integer floorId;
+
+    /**
+     * 楼层名称
+     */
+    @Schema(description = "楼层名称")
+    private String floorName;
+
+    /**
+     * 报餐日期
+     */
+    @Schema(description = "报餐日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = "GMT+8")
+    private LocalDate orderDate;
+
+    /**
+     * 报餐json数据
+     */
+    @Schema(description = "报餐json数据")
+    private String orderDataJson;
+
+    /**
+     * 备注
+     */
+    @Schema(description = "备注")
+    private String remark;
+
+    /**
+     * 机构id
+     */
+    @Schema(description = "机构id")
+    private Long tenantId;
+}

+ 27 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyBuildFloorOrderFoodMapper.java

@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.system.dal.mysql.biz;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyBuildFloorOrderFoodPageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyBuildFloorOrderFoodDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 楼层报餐 Mapper
+ *
+ * @author 系统管理员
+ */
+@Mapper
+public interface ElderlyBuildFloorOrderFoodMapper extends BaseMapperX<ElderlyBuildFloorOrderFoodDO> {
+
+    default PageResult<ElderlyBuildFloorOrderFoodDO> selectPage(ElderlyBuildFloorOrderFoodPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ElderlyBuildFloorOrderFoodDO>()
+                .eqIfPresent(ElderlyBuildFloorOrderFoodDO::getBuildId, reqVO.getBuildId())
+                .eqIfPresent(ElderlyBuildFloorOrderFoodDO::getFloorId, reqVO.getFloorId())
+                .betweenIfPresent(ElderlyBuildFloorOrderFoodDO::getOrderDate, reqVO.getOrderDate())
+                .eqIfPresent(ElderlyBuildFloorOrderFoodDO::getTenantId, reqVO.getTenantId())
+                .orderByDesc(ElderlyBuildFloorOrderFoodDO::getId));
+    }
+
+}

+ 1 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/restaurant/CateringPlanMapper.java

@@ -19,7 +19,7 @@ public interface CateringPlanMapper extends BaseMapperX<CateringPlanDO> {
 
     default PageResult<CateringPlanDO> selectPage(CateringPlanPageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<CateringPlanDO>()
-                .likeIfPresent(CateringPlanDO::getRestaurantName, reqVO.getRestaurantName())
+                .eqIfPresent(CateringPlanDO::getRestaurantId, reqVO.getRestaurantId())
                 .betweenIfPresent(CateringPlanDO::getScheduledStartDate, reqVO.getScheduledStartDate())
                 .betweenIfPresent(CateringPlanDO::getScheduledEndDate, reqVO.getScheduledEndDate())
                 .likeIfPresent(CateringPlanDO::getPlanName, reqVO.getPlanName())

+ 53 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyBuildFloorOrderFoodService.java

@@ -0,0 +1,53 @@
+package cn.iocoder.yudao.module.system.service.biz;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyBuildFloorOrderFoodPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyBuildFloorOrderFoodRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyBuildFloorOrderFoodSaveReqVO;
+
+/**
+ * 楼层报餐 Service 接口
+ *
+ * @author 系统管理员
+ */
+public interface ElderlyBuildFloorOrderFoodService {
+
+    /**
+     * 创建楼层报餐
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createElderlyBuildFloorOrderFood(ElderlyBuildFloorOrderFoodSaveReqVO createReqVO);
+
+    /**
+     * 更新楼层报餐
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateElderlyBuildFloorOrderFood(ElderlyBuildFloorOrderFoodSaveReqVO updateReqVO);
+
+    /**
+     * 删除楼层报餐
+     *
+     * @param id 编号
+     */
+    void deleteElderlyBuildFloorOrderFood(Long id);
+
+    /**
+     * 获得楼层报餐
+     *
+     * @param id 编号
+     * @return 楼层报餐
+     */
+    ElderlyBuildFloorOrderFoodRespVO getElderlyBuildFloorOrderFood(Long id);
+
+    /**
+     * 获得楼层报餐分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 楼层报餐分页
+     */
+    PageResult<ElderlyBuildFloorOrderFoodRespVO> getElderlyBuildFloorOrderFoodPage(ElderlyBuildFloorOrderFoodPageReqVO pageReqVO);
+
+}

+ 106 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyBuildFloorOrderFoodServiceImpl.java

@@ -0,0 +1,106 @@
+package cn.iocoder.yudao.module.system.service.biz;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyBuildFloorOrderFoodPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyBuildFloorOrderFoodRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyBuildFloorOrderFoodSaveReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.BuildDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.BuildFloorDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyBuildFloorOrderFoodDO;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.BuildFloorMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.BuildMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.ElderlyBuildFloorOrderFoodMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.ELDERLY_BUILD_FLOOR_ORDER_FOOD_NOT_EXISTS;
+
+/**
+ * 楼层报餐 Service 实现类
+ *
+ * @author 系统管理员
+ */
+@Service
+public class ElderlyBuildFloorOrderFoodServiceImpl implements ElderlyBuildFloorOrderFoodService {
+
+    @Resource
+    private ElderlyBuildFloorOrderFoodMapper elderlyBuildFloorOrderFoodMapper;
+
+    @Resource
+    private BuildMapper buildMapper;
+
+    @Resource
+    private BuildFloorMapper buildFloorMapper;
+
+    @Override
+    public Long createElderlyBuildFloorOrderFood(ElderlyBuildFloorOrderFoodSaveReqVO createReqVO) {
+        // 插入
+        ElderlyBuildFloorOrderFoodDO orderFood = BeanUtils.toBean(createReqVO, ElderlyBuildFloorOrderFoodDO.class);
+        // 楼栋、楼层名称联动填充
+        fillBuildFloorName(orderFood);
+        elderlyBuildFloorOrderFoodMapper.insert(orderFood);
+        return orderFood.getId();
+    }
+
+    @Override
+    public void updateElderlyBuildFloorOrderFood(ElderlyBuildFloorOrderFoodSaveReqVO updateReqVO) {
+        // 校验存在
+        validateElderlyBuildFloorOrderFoodExists(updateReqVO.getId());
+        // 更新
+        ElderlyBuildFloorOrderFoodDO updateObj = BeanUtils.toBean(updateReqVO, ElderlyBuildFloorOrderFoodDO.class);
+        // 楼栋、楼层名称联动更新
+        fillBuildFloorName(updateObj);
+        elderlyBuildFloorOrderFoodMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteElderlyBuildFloorOrderFood(Long id) {
+        // 校验存在
+        validateElderlyBuildFloorOrderFoodExists(id);
+        // 删除
+        elderlyBuildFloorOrderFoodMapper.deleteById(id);
+    }
+
+    @Override
+    public ElderlyBuildFloorOrderFoodRespVO getElderlyBuildFloorOrderFood(Long id) {
+        ElderlyBuildFloorOrderFoodDO orderFood = elderlyBuildFloorOrderFoodMapper.selectById(id);
+        return BeanUtils.toBean(orderFood, ElderlyBuildFloorOrderFoodRespVO.class);
+    }
+
+    @Override
+    public PageResult<ElderlyBuildFloorOrderFoodRespVO> getElderlyBuildFloorOrderFoodPage(ElderlyBuildFloorOrderFoodPageReqVO pageReqVO) {
+        PageResult<ElderlyBuildFloorOrderFoodDO> pageResult = elderlyBuildFloorOrderFoodMapper.selectPage(pageReqVO);
+        return new PageResult<>(BeanUtils.toBean(pageResult.getList(), ElderlyBuildFloorOrderFoodRespVO.class), pageResult.getTotal());
+    }
+
+    private void validateElderlyBuildFloorOrderFoodExists(Long id) {
+        if (elderlyBuildFloorOrderFoodMapper.selectById(id) == null) {
+            throw exception(ELDERLY_BUILD_FLOOR_ORDER_FOOD_NOT_EXISTS);
+        }
+    }
+
+    /**
+     * 创建/更新时,根据楼栋 id、楼层 id 联动填充对应的名称
+     *
+     * @param orderFood 楼层报餐
+     */
+    private void fillBuildFloorName(ElderlyBuildFloorOrderFoodDO orderFood) {
+        if (orderFood.getBuildId() != null && !StringUtils.hasText(orderFood.getBuildName())) {
+            BuildDO build = buildMapper.selectById(orderFood.getBuildId());
+            if (build != null) {
+                orderFood.setBuildName(build.getBuildName());
+            }
+        }
+        if (orderFood.getFloorId() != null && !StringUtils.hasText(orderFood.getFloorName())) {
+            BuildFloorDO floor = buildFloorMapper.selectById(orderFood.getFloorId());
+            if (floor != null) {
+                orderFood.setFloorName(floor.getFloorName());
+            }
+        }
+    }
+
+}

+ 5 - 1
yudao-server/src/main/resources/application.yaml

@@ -258,7 +258,11 @@ yudao:
       - /admin-api/jiashu/visitAppointment/count
       - /admin-api/jiashu/visitAppointment/countByPhone
       - /admin-api/jiashu/visitAppointment/cancel
-#      - /admin-api/bpm/check-in-wait/create
+      - /admin-api/elderly-build-floor-order-food/create
+      - /admin-api/elderly-build-floor-order-food/update
+      - /admin-api/elderly-build-floor-order-food/delete
+      - /admin-api/elderly-build-floor-order-food/get
+      - /admin-api/elderly-build-floor-order-food/page
     ignore-tables:
       - system_tenant
       - system_groups