package com.yida.data.school.userLeave.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yida.data.common.core.entity.userLeave.EduLeaveRequestUser;
import com.yida.data.school.dto.userLeave.AuditRequestDTO;
import com.yida.data.school.dto.userLeave.LeaveRequestPageDTO;
import com.yida.data.school.dto.userLeave.ListUserRequestDTO;
import com.yida.data.school.dto.userLeave.SendStaffNoticeDTO;
import com.yida.data.school.vo.userLeave.EduLeaveRequestStatisticsVO;
import com.yida.data.school.vo.userLeave.EduLeaveRequestUserVO;
import org.springframework.scheduling.annotation.Async;

import java.util.List;

/**
 * Service接口
 *
 * @author wjm
 * @date 2022-12-01 10:51:19
 */
public interface EduLeaveRequestUserService extends IService<EduLeaveRequestUser> {

    /**
     * 查询请假统计信息
     *
     * @return com.yida.data.school.vo.userLeave.EduLeaveRequestStatisticsVO
     * @author ZYJ
     * @date 2023/12/16 13:33
     */
    EduLeaveRequestStatisticsVO selectLeaveRequestStatistics();

    Page<EduLeaveRequestUser> findPageList(LeaveRequestPageDTO dto);

    /**
     * 我审批的请假条
     *
     * @param page
     * @param userId
     * @param requestType
     * @param schoolId
     * @param statusList
     * @param currentUserStatus
     * @return
     */
    Page<EduLeaveRequestUser> findApprovalUserLeaveList(Page<EduLeaveRequestUser> page, Long userId, Integer requestType,
                                                        Long schoolId,
                                                        List<Integer> statusList,
                                                        Integer currentUserStatus);


    /**
     * 新增请假
     *
     * @param eduLeaveRequestUser
     */
    void addLeaveRequest(EduLeaveRequestUser eduLeaveRequestUser);

    /**
     * 审核请假
     *
     * @param dto
     */
    void auditRequest(AuditRequestDTO dto);

    /**
     * 获取请假详情
     *
     * @param requestId
     * @return
     */
    EduLeaveRequestUserVO getRequest(Long requestId);


    void testTamplateCardNotice(String wxId, Long schoolId);


    List<EduLeaveRequestUserVO> findUserRequestList(ListUserRequestDTO dto);
}
