package com.srs.dormitory.service;

import com.srs.common.core.domain.AjaxResult;
import com.srs.dormitory.domain.DmsDormitory;
import com.baomidou.mybatisplus.extension.service.IService;
import com.srs.dormitory.domain.DormitoryImportModel;
import com.srs.dormitory.domain.Dto.AddDormitoryPhotosDto;
import com.srs.dormitory.domain.Dto.DmsSearch;
import com.srs.dormitory.domain.Dto.DormitoryDto;
import com.srs.dormitory.domain.Dto.ImportDormitoryModel;
import com.srs.dormitory.domain.Vo.DmsFdyStu;
import com.srs.dormitory.domain.Vo.DomInfo;
import com.srs.dormitory.domain.Vo.DormitoryVo;
import com.srs.dormitory.domain.Vo.ExportDormInfo;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;

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

/**
 * <p>
 * 宿舍信息表 服务类
 * </p>
 *
 * @author 猪油骨
 * @since 2023-07-14
 */
public interface IDmsDormitoryService extends IService<DmsDormitory> {

    public DomInfo getDormHas(Long id);

    public AjaxResult importDorm( List<DomInfo> param);

    List<DomInfo> countRecordConfirmStatus();

    List<DomInfo> countParkStuIn();

    public AjaxResult manyOpen(List<Long> ids);
    public AjaxResult openNotFull();

    List<DomInfo>  listDormInfo(DmsSearch param);
    public AjaxResult countGenderBed();


    public AjaxResult countDeptBed();
    public AjaxResult countStuIn();
    public AjaxResult cleanNotStu();
    List<DomInfo> countParkBed(DmsSearch param);
    List<DmsFdyStu> exportDept(DmsSearch param);

    List<DmsFdyStu> exportFdy(DmsSearch param);
    public AjaxResult signWenming(Long id);

    public AjaxResult changeDormIsNew(DmsDormitory param);

    public AjaxResult changeHead(String stuNo);

    public AjaxResult listRoomStu(DmsSearch param);

    List<DomInfo> listRoomDeptLive(DmsSearch param);

    List<ExportDormInfo> exportListRoomDeptLive(DmsSearch param);

    public AjaxResult listBuildingInfo();


    public AjaxResult listAllRoomByFloor(Long id);
    public AjaxResult listRoomByFloor(Long id);

    public AjaxResult listFloorByBuilding(Long id);

    public AjaxResult listBuildingByPark(Long id);

    public AjaxResult listParkByCampus(Long id);
    public AjaxResult listAllCampus();

    public AjaxResult syncOccupancy();

    public AjaxResult updateDorm(DmsDormitory param);


    /**
     * 批量添加宿舍
     * @param dto 请求参数
     * @return
     */
    AjaxResult batchAdd(DormitoryDto dto);

    /**
     * 查看宿舍列表
     * @param params 请求参数
     * @return
     */
    List<DormitoryVo> getDormitoryList(Map<String, Object> params);

    List<DormitoryVo> getCanDormList(Map<String, Object> params);

    List<DormitoryVo> getAllDormList(DmsSearch params);

    /**
     * 修改宿舍信息
     * @param dormitoryDto 请求参数
     * @param username 操作人
     * @return
     */
    AjaxResult updateDmsDormitory(DormitoryDto dormitoryDto, String username);

    /**
     * 添加宿舍
     * @param dormitoryDto 请求参数
     * @param username 操作人
     * @return
     */
    AjaxResult addDmsDormitory(DormitoryDto dormitoryDto, String username);

    /**
     * 批零删除宿舍
     * @param ids 宿舍id列表
     * @return
     */
    AjaxResult batchDeleteDmsDormitory(List<Long> ids);

    /**
     * 根据id删除宿舍
     * @param id 宿舍id
     * @return
     */
    AjaxResult deleteDmsDormitory(Long id);

    /**
     * 查看宿舍详细信息
     * @param id 宿舍id
     * @return
     */
    AjaxResult getDormitoryInfo(Long id);

    /**
     * 批量清空宿舍照片
     * @param ids 宿舍id列表
     * @return
     */
    AjaxResult batchDeleteDormitoryPhoto(List<Long> ids);

    /**
     * 批量添加宿舍照片
     * @param dto 请求参数
     * @return
     */
    AjaxResult batchAddDormitoryPhoto(AddDormitoryPhotosDto dto);

    /**
     * 导入宿舍
     * @param list
     * @return
     */
    AjaxResult importDormitory(List<ImportDormitoryModel> list);

    /**
     * 导出宿舍列表
     * @param params
     * @return
     */
    List<DormitoryVo> exportDormitoryList(Map<String,Object> params);

    /**
     * 根据宿舍Id查看宿舍学生
     * @param id 宿舍Id
     * @return
     */
    AjaxResult getStudentById(Long id);
}
