Pārlūkot izejas kodu

报表查询完成一半

Huanyi 1 mēnesi atpakaļ
vecāks
revīzija
d680a4e138

+ 9 - 3
ruoyi-admin/src/main/java/org/dromara/web/controller/ConsultPatientController.java

@@ -2,6 +2,7 @@ package org.dromara.web.controller;
 
 import java.util.List;
 
+import cn.dev33.satoken.annotation.SaMode;
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
@@ -41,7 +42,7 @@ public class ConsultPatientController extends BaseController {
     /**
      * 查询会诊患者列表
      */
-    @SaCheckPermission("web:patient:list")
+    @SaCheckPermission("workbench:consultationPatient:list")
     @GetMapping("/list")
     public TableDataInfo<ConsultPatientVo> list(ConsultPatientBo bo, PageQuery pageQuery) {
         return consultPatientService.queryPageList(bo, pageQuery);
@@ -66,7 +67,7 @@ public class ConsultPatientController extends BaseController {
     @SaCheckPermission("web:patient:query")
     @GetMapping("/{id}")
     public R<ConsultPatientVo> getInfo(@NotNull(message = "主键不能为空")
-                                     @PathVariable Long id) {
+                                       @PathVariable Long id) {
         return R.ok(consultPatientService.queryById(id));
     }
 
@@ -111,7 +112,12 @@ public class ConsultPatientController extends BaseController {
     }
 
     @PutMapping("/edit")
-    @SaCheckPermission("web:patient:edit")
+    @SaCheckPermission(
+        value = {
+            "workbench:consultationPatient:edit"
+        },
+        mode = SaMode.OR
+    )
     public R edit(@RequestBody ConsultPatientEditBo bo) {
         return consultPatientService.edit(bo);
     }

+ 66 - 0
ruoyi-admin/src/main/java/org/dromara/web/controller/ReportController.java

@@ -1,10 +1,23 @@
 package org.dromara.web.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.mysql.cj.xdevapi.Table;
 import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.web.domain.bo.*;
+import org.dromara.web.domain.vo.DietaryPrescriptionVo;
+import org.dromara.web.domain.vo.NutritionalQualityControlVo;
+import org.dromara.web.service.ReportService;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.sql.Timestamp;
+
 /**
  * @Author: Huanyi
  * @CreateTime: 2025-08-18
@@ -18,6 +31,59 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/report")
 public class ReportController {
 
+    private final ReportService reportService;
+
+    @GetMapping("/nutritionalQualityControl")
+    @SaCheckPermission("report:nutritionQualityControl:list")
+    public R<NutritionalQualityControlVo> getNutritionalQualityControl(
+        @RequestParam(value = "start", required = false) Timestamp start,
+        @RequestParam(value = "end", required = false) Timestamp end) {
+        return reportService.getNutritionalQualityControl(start, end);
+    }
+
+    @GetMapping("/dietaryPrescription")
+    @SaCheckPermission("report:dietaryPrescription")
+    public TableDataInfo<DietaryPrescriptionVo> listPageDietaryPrescription(DietaryPrescriptionBo bo, PageQuery pageQuery) {
+        return reportService.listPageDietaryPrescription(bo, pageQuery);
+    }
+
+    @GetMapping("/dietaryInventory")
+    @SaCheckPermission("report:dietaryInventory:list")
+    public TableDataInfo listPageDietaryInventory(DietaryInventoryBo bo, PageQuery pageQuery) {
+        return reportService.listPageDietaryInventory(bo, pageQuery);
+    }
+
+    @GetMapping("/inventory")
+    @SaCheckPermission("report:inventory:list")
+    public TableDataInfo listPageInventory(InventoryBo bo, PageQuery pageQuery) {
+        return reportService.listPageInventory(bo, pageQuery);
+    }
+
+    @GetMapping("/inHospitalBillingReconciliation")
+    @SaCheckPermission("report:inHospitalBillingReconciliation:list")
+    public TableDataInfo listPageInHospitalBillingReconciliation(InHospitalBillingReconciliationBo bo, PageQuery pageQuery) {
+        return reportService.listPageInHospitalBillingReconciliation(bo, pageQuery);
+    }
+
+    @GetMapping("/cost")
+    @SaCheckPermission("report:cost:list")
+    public TableDataInfo listCost(CostBo bo, PageQuery pageQuery) {
+        return reportService.listCost(bo, pageQuery);
+    }
+
+    @GetMapping("/progressNote")
+    @SaCheckPermission("report:progressNote:list")
+    public TableDataInfo listPageProgressNote(ProgressNoteBo bo, PageQuery pageQuery) {
+        return reportService.listPageProgressNote(bo, pageQuery);
+    }
 
+    @GetMapping("/intraHospitalData")
+    @SaCheckPermission("report:intraHospitalData:list")
+    public R getIntraHospitalData(
+        @RequestParam(value = "start", required = false) Timestamp start,
+        @RequestParam(value = "end", required = false) Timestamp end,
+        @RequestParam(value = "id", required = false) Long id) {
+        return reportService.getIntraHospitalData(start, end, id);
+    }
 
 }

+ 0 - 1
ruoyi-admin/src/main/java/org/dromara/web/domain/HospitalMealPlan.java

@@ -7,7 +7,6 @@ import lombok.EqualsAndHashCode;
 
 import java.math.BigDecimal;
 import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
 
 import java.io.Serial;
 

+ 14 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/bo/CostBo.java

@@ -0,0 +1,14 @@
+package org.dromara.web.domain.bo;
+
+import lombok.Data;
+
+/**
+ * @Author: Huanyi
+ * @CreateTime: 2025-08-18
+ * @Description:
+ * @Version: 1.0
+ */
+
+@Data
+public class CostBo {
+}

+ 5 - 5
ruoyi-admin/src/main/java/org/dromara/web/domain/bo/DietaryPrescriptionBo.java

@@ -2,7 +2,7 @@ package org.dromara.web.domain.bo;
 
 import lombok.Data;
 
-import java.sql.Timestamp;
+import java.util.Date;
 
 /**
  * @Author: Huanyi
@@ -14,13 +14,13 @@ import java.sql.Timestamp;
 @Data
 public class DietaryPrescriptionBo {
 
-    private Timestamp tradeDateEarliest;
+    private Date tradeDateEarliest;
 
-    private Timestamp tradeDateLatest;
+    private Date tradeDateLatest;
 
-    private Timestamp calculationDateEarliest;
+    private Date calculationDateEarliest;
 
-    private Timestamp calculationDateLatest;
+    private Date calculationDateLatest;
 
     private Integer consultationType;
 

+ 14 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/bo/InHospitalBillingReconciliationBo.java

@@ -0,0 +1,14 @@
+package org.dromara.web.domain.bo;
+
+import lombok.Data;
+
+/**
+ * @Author: Huanyi
+ * @CreateTime: 2025-08-18
+ * @Description:
+ * @Version: 1.0
+ */
+
+@Data
+public class InHospitalBillingReconciliationBo {
+}

+ 14 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/bo/InventoryBo.java

@@ -0,0 +1,14 @@
+package org.dromara.web.domain.bo;
+
+import lombok.Data;
+
+/**
+ * @Author: Huanyi
+ * @CreateTime: 2025-08-18
+ * @Description:
+ * @Version: 1.0
+ */
+
+@Data
+public class InventoryBo {
+}

+ 14 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/bo/ProgressNoteBo.java

@@ -0,0 +1,14 @@
+package org.dromara.web.domain.bo;
+
+import lombok.Data;
+
+/**
+ * @Author: Huanyi
+ * @CreateTime: 2025-08-18
+ * @Description:
+ * @Version: 1.0
+ */
+
+@Data
+public class ProgressNoteBo {
+}

+ 26 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/vo/CookbookVo.java

@@ -0,0 +1,26 @@
+package org.dromara.web.domain.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: Huanyi
+ * @CreateTime: 2025-08-18
+ * @Description:
+ * @Version: 1.0
+ */
+
+@Data
+@AllArgsConstructor
+public class CookbookVo {
+
+    private String cookbookName;
+
+    /**
+     * 食材
+     */
+    private List<String> ingredients;
+
+}

+ 46 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/vo/DietaryPrescriptionVo.java

@@ -0,0 +1,46 @@
+package org.dromara.web.domain.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: Huanyi
+ * @CreateTime: 2025-08-18
+ * @Description:
+ * @Version: 1.0
+ */
+
+@Data
+public class DietaryPrescriptionVo {
+
+    private Long id;
+
+    private Date tradeDate;
+
+    private Date calculationDate;
+
+    private String consultationType;
+
+    private String calculationDoctorDepartment;
+
+    private String calculationDoctor;
+
+    private String patientDepartment;
+
+    private String patientName;
+
+    private String payStatus;
+
+    /**
+     * 餐次
+     */
+    private List<CookbookVo> breakfast;
+    private List<CookbookVo> breakfastExtra;
+    private List<CookbookVo> lunch;
+    private List<CookbookVo> lunchExtra;
+    private List<CookbookVo> dinner;
+    private List<CookbookVo> dinnerExtra;
+
+}

+ 2 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/vo/HospitalMealPlanVo.java

@@ -91,6 +91,8 @@ public class HospitalMealPlanVo implements Serializable {
 
     private BigDecimal totalPrice;
 
+    private Long createDept;
+
     private Date createTime;
 
     private Long createBy;

+ 22 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/vo/MealPeriodVo.java

@@ -0,0 +1,22 @@
+package org.dromara.web.domain.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: Huanyi
+ * @CreateTime: 2025-08-18
+ * @Description:
+ * @Version: 1.0
+ */
+
+@Data
+public class MealPeriodVo {
+
+    /**
+     * 食谱
+     */
+    private List<CookbookVo> cookbooks;
+
+}

+ 4 - 0
ruoyi-admin/src/main/java/org/dromara/web/mapper/DailyMealPlanMapper.java

@@ -1,9 +1,13 @@
 package org.dromara.web.mapper;
 
 
+import org.apache.ibatis.annotations.Select;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.web.domain.DailyMealPlan;
+import org.dromara.web.domain.bo.DietaryPrescriptionBo;
 import org.dromara.web.domain.vo.DailyMealPlanVo;
+import org.dromara.web.domain.vo.DietaryPrescriptionVo;
 import org.springframework.stereotype.Repository;
 
 /**

+ 61 - 0
ruoyi-admin/src/main/java/org/dromara/web/mapper/HospitalMealPlanMapper.java

@@ -4,12 +4,16 @@ package org.dromara.web.mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.web.domain.HospitalMealPlan;
+import org.dromara.web.domain.bo.DietaryPrescriptionBo;
+import org.dromara.web.domain.vo.DietaryPrescriptionVo;
 import org.dromara.web.domain.vo.EnteralNutritionQueryOneVo;
 import org.dromara.web.domain.vo.HospitalMealPlanQueryVo;
 import org.dromara.web.domain.vo.HospitalMealPlanVo;
 import org.springframework.stereotype.Repository;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -117,4 +121,61 @@ public interface HospitalMealPlanMapper extends BaseMapperPlus<HospitalMealPlan,
                              @Param("wardId") Long wardId, @Param("searchValue") String searchValue, @Param("beginTime") String beginTime,
                              @Param("endTime") String endTime, @Param("exeBeginTime") String exeBeginTime,
                              @Param("exeEndTime") String exeEndTime);
+
+//    @Select(
+//        """
+//        SELECT
+//            `hospital_meal_plan`.`id` AS `id`,
+//            `settlement`.`create_time` AS `tradeDate`,
+//            `hospital_meal_plan`.`create_time` AS `calculationDate`,
+//            `hospital_meal_plan`.`type` AS `consultationType`,
+//            `doctor_dept`.`dept_name` AS `calculationDoctorDepartment`,
+//            `sys_user`.`user_name` AS `calculationDoctor`,
+//            `patient_dept`.`dept_name` AS `patientDepartment`,
+//            `treatment_user`.`treat_name` AS `patientName`,
+//            `settlement`.`payment_status` AS `payStatus`,
+//            JSON_ARRAYAGG(
+//                JSON_OBJECT(
+//                    `mealName`, `hospital_meal_recipe`.`food_name`,
+//                    `cookbooks`, JSON_ARRAYAGG(
+//                        JSON_OBJECT(
+//                            `cookbookName`, ``
+//                        )
+//                    )
+//                )
+//            ) AS `mealPeriods`
+//        FROM `hospital_meal_plan`
+//        LEFT JOIN `settlement`
+//            ON `settlement`.`id` = `hospital_meal_plan`.`settlement_id` AND
+//               `settlement`.`create_time` >= #{tradeDateEarliest} AND
+//               `settlement`.`create_time` <= #{tradeDateLatest}
+//        LEFT JOIN `sys_dept` `patient_dept`
+//            ON `patient_dept`.`dept_id` = `hospital_meal_plan`.`dept_id`
+//        LEFT JOIN `sys_dept` `doctor_dept`
+//            ON `doctor_dept`.`dept_id` = `hospital_meal_plan`.`create_dept`
+//        LEFT JOIN `sys_user`
+//            ON `sys_user`.`user_id` = `hospital_meal_plan`.`create_by`
+//        LEFT JOIN `treatment_user`
+//            ON `treatment_user`.`id` = `hospital_meal_plan`.`patient_id`
+//        LEFT JOIN `hospital_meal_recipe`
+//            ON `hospital_meal_recipe`.`plan_id` = `hospital_meal_plan`.`id`
+//        LEFT JOIN `sys_recipe`
+//            ON `hospital_meal_recipe`.`food_id` = `sys_recipe`.`recipe_id`
+//        WHERE
+//            `hospital_meal_plan`.`type` = #{consultationType}
+//        AND `hospital_meal_plan`.`dept_id` = #{patientDepartmentId}
+//        AND `hospital_meal_plan`.`create_time` >= #{calculationDateEarliest}
+//        AND `hospital_meal_plan`.`create_time` <= #{calculationDateLatest}
+//        AND `hospital_meal_plan`.`create_dept` = #{doctorDepartmentId}
+//        AND `hospital_meal_plan`.`settlement_id` is not null
+//        LIMIT #{pageNum * pageSize}, #{pageSize};
+//        """
+//    )
+//    DietaryPrescriptionVo listPageMealPlan(
+//        @Param("tradeDateEarliest") Date tradeDateEarliest, @Param("tradeDateLatest") Date tradeDateLatest,
+//        @Param("calculationDateEarliest") Date calculationDateEarliest, @Param("calculationDateLatest") Date calculationDateLatest,
+//        @Param("doctorDepartmentId") Long doctorDepartmentId, @Param("patientDepartmentId") Long patientDepartmentId,
+//        @Param("name") String name, @Param("consultationType") Integer consultationType,
+//        @Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize
+//    );
 }

+ 34 - 0
ruoyi-admin/src/main/java/org/dromara/web/service/ReportService.java

@@ -0,0 +1,34 @@
+package org.dromara.web.service;
+
+import org.dromara.common.core.domain.R;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.web.domain.bo.*;
+
+import java.sql.Timestamp;
+
+/**
+ * @Author: Huanyi
+ * @CreateTime: 2025-08-18
+ * @Description:
+ * @Version: 1.0
+ */
+
+public interface ReportService {
+
+    R getNutritionalQualityControl(Timestamp start, Timestamp end);
+
+    TableDataInfo listPageDietaryPrescription(DietaryPrescriptionBo bo, PageQuery pageQuery);
+
+    TableDataInfo listPageDietaryInventory(DietaryInventoryBo bo, PageQuery pageQuery);
+
+    TableDataInfo listPageInventory(InventoryBo bo, PageQuery pageQuery);
+
+    TableDataInfo listPageInHospitalBillingReconciliation(InHospitalBillingReconciliationBo bo, PageQuery pageQuery);
+
+    TableDataInfo listCost(CostBo bo, PageQuery pageQuery);
+
+    TableDataInfo listPageProgressNote(ProgressNoteBo bo, PageQuery pageQuery);
+
+    R getIntraHospitalData(Timestamp start, Timestamp end, Long id);
+}

+ 189 - 0
ruoyi-admin/src/main/java/org/dromara/web/service/impl/ReportServiceImpl.java

@@ -0,0 +1,189 @@
+package org.dromara.web.service.impl;
+import java.math.BigDecimal;
+import com.google.common.collect.Lists;
+
+import java.util.*;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.mapper.*;
+import org.dromara.web.domain.*;
+import org.dromara.web.domain.bo.*;
+import org.dromara.web.domain.vo.CookbookVo;
+import org.dromara.web.domain.vo.DietaryPrescriptionVo;
+import org.dromara.web.domain.vo.MealPeriodVo;
+import org.dromara.web.mapper.*;
+import org.dromara.web.service.ReportService;
+import org.springframework.stereotype.Service;
+
+import java.sql.Timestamp;
+
+/**
+ * @Author: Huanyi
+ * @CreateTime: 2025-08-18
+ * @Description:
+ * @Version: 1.0
+ */
+
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class ReportServiceImpl implements ReportService {
+
+    private final DailyMealPlanMapper dailyMealPlanMapper;
+    private final DailyMealRecipeMapper dailyMealRecipeMapper;
+    private final HospitalMealPlanMapper hospitalMealPlanMapper;
+    private final HospitalMealRecipeMapper hospitalMealRecipeMapper;
+    private final SysRecipeMapper sysRecipeMapper;
+    private final SysRecipeFoodIngredientMapper sysRecipeFoodIngredientMapper;
+    private final SysFoodIngredientMapper sysFoodIngredientMapper;
+    private final TreatmentUserMapper treatmentUserMapper;
+    private final SysDeptMapper sysDeptMapper;
+    private final SysUserMapper sysUserMapper;
+    private final SettlementMapper settlementMapper;
+
+    @Override
+    public R getNutritionalQualityControl(Timestamp start, Timestamp end) {
+        return R.ok();
+    }
+
+    @Override
+    public TableDataInfo listPageDietaryPrescription(DietaryPrescriptionBo bo, PageQuery pageQuery) {
+
+//        hospitalMealPlanMapper.listPageMealPlan(
+//            bo.getTradeDateEarliest(),
+//            bo.getTradeDateLatest(),
+//            bo.getCalculationDateEarliest(),
+//            bo.getCalculationDateLatest(),
+//            bo.getDoctorDepartmentId(),
+//            bo.getPatientDepartmentId(),
+//            bo.getName(),
+//            bo.getConsultationType(),
+//            pageQuery.getPageNum(),
+//            pageQuery.getPageSize()
+//        );
+        List<Long> ids = new ArrayList<>();
+        treatmentUserMapper.selectList(
+            Wrappers.lambdaQuery(TreatmentUser.class).like(TreatmentUser::getTreatName, bo.getName())
+        ).forEach(e -> ids.add(e.getId()));
+
+        Page<HospitalMealPlan> page = hospitalMealPlanMapper.selectPage(
+            pageQuery.build(),
+            Wrappers.lambdaQuery(HospitalMealPlan.class)
+                .ge(HospitalMealPlan::getCreateTime, bo.getCalculationDateEarliest())
+                .le(HospitalMealPlan::getCreateTime, bo.getCalculationDateLatest())
+                .in(HospitalMealPlan::getPatientId, ids)
+                .eq(HospitalMealPlan::getDeptId, bo.getPatientDepartmentId())
+                .eq(HospitalMealPlan::getCreateDept, bo.getDoctorDepartmentId())
+                .isNotNull(HospitalMealPlan::getSettlementId)
+        );
+
+        Map<Long, String> deptMap = new HashMap<>();
+        Map<Long, String> userMap = new HashMap<>();
+        Map<Long, String> patientMap = new HashMap<>();
+        Map<Long, String> settlementMap = new HashMap<>();
+        // 食谱 ID    食谱名称
+        Map<Long, String> recipeMap = new HashMap<>();
+        // 食谱 ID    所需食材 ID
+        Map<Long, List<Long>> recipeToIngredientMap = new HashMap<>();
+        // 食材 ID   食材名称
+        Map<Long, String> ingredientMap = new HashMap<>();
+
+        sysDeptMapper.selectList().forEach(e -> deptMap.put(e.getDeptId(), e.getDeptName()));
+        sysUserMapper.selectList().forEach(e -> userMap.put(e.getUserId(), e.getName()));
+        treatmentUserMapper.selectList().forEach(e -> patientMap.put(e.getId(), e.getTreatName()));
+        settlementMapper.selectList().forEach(e -> settlementMap.put(e.getId(), e.getPaymentStatus()));
+        sysRecipeMapper.selectList().forEach(e -> recipeMap.put(e.getRecipeId(), e.getName()));
+        sysRecipeFoodIngredientMapper.selectList().forEach(e -> {
+            if (recipeToIngredientMap.containsKey(e.getRecipeId())) {
+                recipeToIngredientMap.get(e.getRecipeId()).add(e.getFoodIngredientId());
+            } else {
+                recipeToIngredientMap.put(e.getRecipeId(), List.of(e.getFoodIngredientId()));
+            }
+        });
+        sysFoodIngredientMapper.selectList().forEach(e -> ingredientMap.put(e.getFoodIngredientId(), e.getName()));
+
+        Map<String, List<String>> foodMap = new HashMap<>();
+        recipeToIngredientMap.forEach((k, v) -> {
+            List<String> list = new ArrayList<>();
+            v.forEach( e -> list.add(ingredientMap.get(e)));
+            foodMap.put(recipeMap.get(k), list);
+        });
+
+        return TableDataInfo.build(page.convert(e -> {
+            DietaryPrescriptionVo vo = new DietaryPrescriptionVo();
+            vo.setId(e.getId());
+            vo.setTradeDate(new Date());
+            vo.setCalculationDate(e.getCreateTime());
+            vo.setConsultationType(Objects.equals(e.getType(), "0") ? "门诊" : "住院");
+            vo.setCalculationDoctorDepartment(deptMap.get(e.getDeptId()));
+            vo.setCalculationDoctor(userMap.get(e.getCreateBy()));
+            vo.setPatientDepartment(deptMap.get(e.getDeptId()));
+            vo.setPatientName(patientMap.get(e.getPatientId()));
+            vo.setPayStatus(settlementMap.get(e.getSettlementId()));
+
+            List<CookbookVo> breakfast = new ArrayList<>();
+            List<CookbookVo> breakfastExtra = new ArrayList<>();
+            List<CookbookVo> lunch = new ArrayList<>();
+            List<CookbookVo> lunchExtra = new ArrayList<>();
+            List<CookbookVo> dinner = new ArrayList<>();
+            List<CookbookVo> dinnerExtra = new ArrayList<>();
+            hospitalMealRecipeMapper.selectList(
+                Wrappers.lambdaQuery(HospitalMealRecipe.class).eq(HospitalMealRecipe::getPlanId, e.getId())
+            ).forEach(t -> {
+                switch (t.getMealTime()) {
+                    case "早餐" -> breakfast.add(new CookbookVo(t.getFoodName(), foodMap.get(t.getFoodName())));
+                    case "早中" -> breakfastExtra.add(new CookbookVo(t.getFoodName(), foodMap.get(t.getFoodName())));
+                    case "中餐" -> lunch.add(new CookbookVo(t.getFoodName(), foodMap.get(t.getFoodName())));
+                    case "中加" -> lunchExtra.add(new CookbookVo(t.getFoodName(), foodMap.get(t.getFoodName())));
+                    case "晚餐" -> dinner.add(new CookbookVo(t.getFoodName(), foodMap.get(t.getFoodName())));
+                    case "晚加" -> dinnerExtra.add(new CookbookVo(t.getFoodName(), foodMap.get(t.getFoodName())));
+                }
+            });
+
+            vo.setBreakfast(breakfast);
+            vo.setBreakfastExtra(breakfastExtra);
+            vo.setLunch(lunch);
+            vo.setLunchExtra(lunchExtra);
+            vo.setDinner(dinner);
+            vo.setDinnerExtra(dinnerExtra);
+            return vo;
+        }));
+    }
+
+    @Override
+    public TableDataInfo listPageDietaryInventory(DietaryInventoryBo bo, PageQuery pageQuery) {
+        return null;
+    }
+
+    @Override
+    public TableDataInfo listPageInventory(InventoryBo bo, PageQuery pageQuery) {
+        return null;
+    }
+
+    @Override
+    public TableDataInfo listPageInHospitalBillingReconciliation(InHospitalBillingReconciliationBo bo, PageQuery pageQuery) {
+        return null;
+    }
+
+    @Override
+    public TableDataInfo listCost(CostBo bo, PageQuery pageQuery) {
+        return null;
+    }
+
+    @Override
+    public TableDataInfo listPageProgressNote(ProgressNoteBo bo, PageQuery pageQuery) {
+        return null;
+    }
+
+    @Override
+    public R getIntraHospitalData(Timestamp start, Timestamp end, Long id) {
+        return R.ok();
+    }
+
+}