package com.srs.dormitory.service;

import com.srs.common.core.domain.AjaxResult;
import com.srs.common.core.page.TableDataInfo;
import com.srs.dormitory.domain.DmsDormitoryDept;
import com.baomidou.mybatisplus.extension.service.IService;
import com.srs.dormitory.domain.Dto.DeptAllocationDto;
import com.srs.dormitory.domain.Dto.DmsSearch;
import com.srs.dormitory.domain.Dto.FastDto;
import com.srs.dormitory.domain.Dto.SelectDormDto;
import com.srs.dormitory.domain.Vo.ExportDmsReg;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * <p>
 * 学院宿舍关联表 服务类
 * </p>
 *
 * @author 猪油骨
 * @since 2023-08-29
 */
public interface IDmsDormitoryDeptService extends IService<DmsDormitoryDept> {


    List<ExportDmsReg> listSum();

    public AjaxResult lockAllDept();

    public AjaxResult cancelDept( DmsDormitoryDept param);
    public AjaxResult lockDept( DmsDormitoryDept param);

    public AjaxResult deptBuildingCount(DmsSearch param);

    public AjaxResult getDeptBedCount();
    public AjaxResult doFast(FastDto param);

    public AjaxResult changeDeptBed(List<DmsDormitoryDept> param);



    /**
     * 分配学院宿舍
     *
     * @param dto 学院宿舍分配DTO
     * @return 操作结果
     */
    AjaxResult allocation(DeptAllocationDto dto);

    /**
     * 获取宿舍信息列表
     *
     * @param dto 宿舍查询DTO
     * @return 宿舍信息列表，每个元素为一个Map，包含宿舍的相关属性
     */
    TableDataInfo getDormitory(SelectDormDto dto);

    /**
     * 获取学院信息列表
     *
     * @return 学院信息列表，每个元素是一个包含学院信息的 Map 对象
     */
    AjaxResult getDept();


    /**
     * 获取宿舍楼信息列表
     *
     * @param parkId 查询条件，包括楼栋ID等信息
     * @return 包含宿舍楼相关信息的列表，每个元素是一个包含楼栋ID、楼栋名称等信息的 Map 对象
     */
    TableDataInfo getBuilding(Long parkId);

    /**
     * 根据楼栋ID查询楼层信息
     *
     * @param buildingId 楼栋ID
     * @return 楼层信息列表，每个元素是一个包含楼层ID（floorId）和楼层名称（floorName）的 Map 对象
     */
    TableDataInfo getFloor(Long buildingId);

    TableDataInfo getPark(Long campusId);

    AjaxResult getCampus();

    int unbind(List<Long> dormitoryIds, List<String> academyCode);

    TableDataInfo viewTeacher();

    AjaxResult assignTeachers(Long dormId, Long employeeId);

    TableDataInfo viewDormitory();
}
