package com.srs.dormitory.service;

import com.srs.common.core.domain.AjaxResult;
import com.srs.common.core.page.TableDataInfo;
import com.srs.dormitory.domain.DmsDormitory;
import com.srs.dormitory.domain.DmsDormitoryClass;
import com.baomidou.mybatisplus.extension.service.IService;
import com.srs.dormitory.domain.DmsNewReg;
import com.srs.dormitory.domain.Dto.*;
import com.srs.dormitory.domain.Vo.ClassInfo;
import com.srs.dormitory.domain.Vo.DomInfo;
import com.srs.dormitory.domain.Vo.FloorsVo;
import com.srs.dormitory.domain.Vo.SelectDormByStuVo;
import com.srs.stureg.domain.SrsStuReg;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;

import java.awt.image.DirectColorModel;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author 猪油骨
 * @since 2023-07-25
 */
public interface IDmsDormitoryClassService extends IService<DmsDormitoryClass> {


    public AjaxResult lockDmsClass(Long id);
    public AjaxResult cancelReg(DmsNewReg param);
    public AjaxResult addReg(DmsNewReg param);
    public AjaxResult listClassStu(String classCode);
    public AjaxResult listClassCanStu(SrsStuReg param);
    public AjaxResult getRegByRoom(Long id);
    public AjaxResult fastAllot(String tNo);
    public AjaxResult listOwnCanSelectDorm(String ksh);
    public AjaxResult changeRoomIsMixed(DmsDormitoryClass param);
    List<DomInfo> listFdyRoom(DmsSearch param);
    public AjaxResult changeClassBed(List<ClassInfo> pram);
    public AjaxResult xwDomClass(DeptClassDto param);
    public AjaxResult selectXwClass();

    public List<DomInfo> selectXwDom(SelectDormDto param);
    public List<DormitoryModelDto> getModelRoom(DormitoryModelDto param);
    /**
     * 划分宿舍区域
     *
     * @param allocateDto 划分宿舍区域的参数，包括班级代码（BJDM）、宿舍ID列表（dormitoryIds）和性别（gender）
     * @return 操作结果，成功则返回成功信息，否则抛出异常
     */
    AjaxResult allocate(AllocateDto allocateDto);


    List<Map<String, Object>> selectClass();

    /**
     * 获取所属班级信息列表
     *
     * @return 所属班级信息列表，每个元素是一个包含班级代码（BJDM）和班级名称（BJ）的 Map 对象
     */
    TableDataInfo selectMajor();


    List<Map<String, Object>> selectBuilding(SelectBuildingDto dto);

    List<Map<String, Object>> selectDorm(SelectDormDto dto);

    List<FloorsVo> selectFloor(Long build);

    List<SelectDormByStuVo> selectDormByStu();

    AjaxResult delete(List<Long> ids);


    DmsDormitory getcount(Long id);

    String importUser(List<DormitoryModelDto> dormList, boolean isupdateSupport, String operName);
}
