package com.yida.data.device.telephone.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.CurrentUser;
import com.yida.data.common.core.entity.telephone.EduTelephone;
import com.yida.data.common.core.entity.telephone.EduTelephoneCard;
import com.yida.data.device.dto.telephone.DevicePage;
import com.yida.data.device.dto.telephone.TelephoneDTO;
import com.yida.data.device.vo.OnlineCountVO;
import com.yida.data.device.vo.telephone.DeviceNumberVO;
import com.yida.data.device.vo.telephone.TelephoneVO;
import java.util.List;
import java.util.Set;

/**
 * 亲情电话-话机管理 Service接口
 *
 * @author zhanghaijun
 * @date 2021-08-10 16:27:43
 */
public interface EduTelephoneService extends IService<EduTelephone> {

    /**
     * 话机列表
     *
     * @param page
     * @param onlineStatus
     * @param runStatus
     * @param iccIdAndiMei
     * @return
     */
    DevicePage<TelephoneVO> telephoneList(DevicePage<TelephoneVO> page, String onlineStatus, String runStatus,
        String iccIdAndiMei, String name, CurrentUser currentUser, Long schoolId, String schoolName)
        throws NoSuchMethodException;

    /**
     * 更新话机在线状态
     *
     * @param online 话机将要更新成的状态 0-在线，1-不在线
     * @param imeis  存活的话机设备
     */
    void updatePhoneOnline(Integer online, Set<String> imeis);

    /**
     * 话机详情
     *
     * @param id
     * @return
     */
    TelephoneVO getByTelephoneId(Long id);


    /**
     * 查询学生列表
     *
     * @param students
     * @param schoolId
     * @return
     */
    List<EduTelephoneCard> getStudentList(Long parentId, Long schoolId);

    void updateTelephone(TelephoneDTO telephoneDTO);

    /**
     * 更新话机在线状态
     */
    void updateTelephoneStatus();

    /**
     * 话机设备数量统计
     *
     * @return com.yida.data.common.core.common.ResultBean<com.yida.data.attendance.vo.DeviceNumberVO>
     * @author ZYJ
     * @date 2021/10/9 15:17
     */
    ResultBean<DeviceNumberVO> findDeviceNumber() throws NoSuchMethodException;

    /**
     * 获取在线状态
     * @return
     */
    OnlineCountVO getOnlineDistrib(List<Long> schoolIds);
}
