package com.yida.data.form.apply.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yida.data.common.core.entity.applyForm.CoreApplyForm;
import com.yida.data.common.core.entity.applyForm.CoreApplyFormFillUser;
import com.yida.data.customForm.dto.apply.ApplyFormFillSelectPageDTO;
import com.yida.data.customForm.dto.apply.ApprovalFillUserFormPageDTO;
import com.yida.data.customForm.dto.apply.H5ApplyFormSelectPageDTO;
import com.yida.data.customForm.dto.apply.SelectApprovalApplyFormDataListDTO;
import com.yida.data.customForm.vo.apply.ApplyFormFillSelectPageVO;
import com.yida.data.customForm.vo.apply.ApprovalApplyFormPageVO;
import com.yida.data.customForm.vo.apply.MyApplyFormPageVO;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 申请表单填报用户信息表 mapper
 *
 * @author ZYJ
 * @date 2023/11/22
 */
public interface CoreApplyFormFillUserMapper extends BaseMapper<CoreApplyFormFillUser> {


    /**
     * 查询用户已经填报的数据
     *
     * @param page    分页信息
     * @param dto     查询参数
     * @param userIds 填报用户id集合
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yida.data.customForm.vo.apply.MyApplyFormPageVO>
     * @author ZYJ
     * @date 2023/11/23 15:06
     */
    IPage<MyApplyFormPageVO> selectUserFillForm(Page<CoreApplyForm> page,
                                                @Param("dto") H5ApplyFormSelectPageDTO dto,
                                                @Param("userIds") List<Long> userIds);

    /**
     * 职工参与审核的填报用户信息
     *
     * @param dto      查询条件
     * @param dateTime 时间点
     * @return java.util.List<com.yida.data.common.core.entity.applyForm.CoreApplyFormFillUser>
     * @author ZYJ
     * @date 2023/11/29 10:36
     */
    List<CoreApplyFormFillUser> findApprovalFormDataFillUserList(@Param("dto") SelectApprovalApplyFormDataListDTO dto,
                                                                 @Param("dateTime") LocalDateTime dateTime);

    /**
     * 查询教师审核的表单分页数据
     *
     * @param page 分页信息
     * @param dto  查询条件
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yida.data.customForm.vo.apply.ApprovalApplyFormPageVO>
     * @author ZYJ
     * @date 2023/11/29 13:51
     */
    IPage<ApprovalApplyFormPageVO> selectApprovalUserFillForm(Page page,
                                                              @Param("dto") ApprovalFillUserFormPageDTO dto);

    /**
     * 查询申请表单填报列表数据
     *
     * @param page 分页信息
     * @param dto  查询条件
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yida.data.customForm.vo.apply.ApplyFormFillSelectPageVO>
     * @author ZYJ
     * @date 2023/12/7 15:19
     */
    IPage<ApplyFormFillSelectPageVO> listApplyFormFillPage(Page<CoreApplyFormFillUser> page,
                                                           @Param("dto") ApplyFormFillSelectPageDTO dto);
}
