package cn.iocoder.yudao.module.system.service.biz;


import cn.iocoder.yudao.module.system.controller.admin.biz.vo.*;
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.excel.BuildImportExcelVO;
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.excel.BuildScreenExcel;
import cn.iocoder.yudao.module.system.dal.dataobject.biz.BuildDO;
import cn.iocoder.yudao.module.system.dal.dataobject.biz.BuildRoomDO;

import java.util.List;
import java.util.Map;

/**
 * 楼栋 Service 接口
 *
 * @author 管理员
 */
public interface BuildService {


    Long createBuild(BuildSaveReqVO createReqVO);

    List<BuildDO> getList(Integer orgType, Long[] tenantIds);

    BuildDO getBuildById(Long id);

    void deleteBuildById(Long id);

    void editRoomInfo(BuildRoomDO room);

    List<BuildRoomDO> getRoomByFloorId(Long floorId);

    void editBuildInfo(BuildDO build);

    void createRoom(BuildRoomDO room);

    void deleteRoomById(Long roomId);

    Map<String, Object> importBuildExcel(List<BuildImportExcelVO> list);

    Map<String, Object> buildStatistic(Long buildId);

    List<BuildBedVO> getBedList(String bedName, Integer status, Integer orgType, Long[] tenantIds);

    BuildBedVO getBedInfoById(Long bedId);

    String getFullBedName(Long elderId);

    Map<String, Object> getBuildData(Long buildId);

    BuildFloorDataRespVO getBuildFloorData(Long floodId);

    List<BuildRoomInfoVO> queryBuildRooms(BuildRoomQueryVO buildRoomQueryVO);

    void deleteBuildFloorById(Long id);


    Boolean checkBedById(Long bedId);

    Boolean checkBuildFloorById(Long floorId);

    List<BuildScreenExcel> exportScreenExcel(Long buildId);

    NurseScreenDataVO getNurseScreenDataByRoomCode(String roomCode);

    List<BuildRoomInfoVO> getElderListByFloorId(Long floorId);

    String getFullBedNameByBedId(Long bedId);

    List<BuildRespVO> findAllBuild();

    /**
     * 获取楼栋楼层统计信息
     *
     * @param tenantIds 租户ID数组
     * @return 楼栋楼层统计信息
     */
    BuildFloorStatisticsRespVO getBuildFloorStatistics(Long[] tenantIds, String month);

    List<BuildFloorTreeRespVO> getFloorTree(Long tenantId);
    List<CheckInWaitBedSimpleRespVO> getBedListByTenantIdAndKeyword(Long tenantId, String keyword);
}