package com.ym.mec.biz.dal.dao;

import com.ym.mec.biz.dal.dto.CourseScheduleEndDto;
import com.ym.mec.biz.dal.entity.InspectionItem;
import com.ym.mec.biz.dal.entity.InspectionItemPlan;
import com.ym.mec.biz.dal.enums.IndexErrorType;
import com.ym.mec.common.dal.BaseDAO;
import com.ym.mec.biz.dal.entity.IndexErrDataRecord;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface IndexErrDataRecordDao extends BaseDAO<Long, IndexErrDataRecord> {

    int batchInsert(@Param("datas") List<IndexErrDataRecord> datas);

    int batchUpdate(@Param("datas") List<IndexErrDataRecord> datas);

    int deleteWithGenerateTimeAndType(@Param("generateTime") String generateTime,
                                      @Param("dataType") IndexErrorType dataType);

    /**
     * @describe 统计指定日期产生的异常数量
     * @author Joburgess
     * @date 2021/5/28 0028
     * @param generateTime:
     * @return int
     */
    int countWithGenerateTime(@Param("generateTime") String generateTime);

    /**
     * @describe 获取所有异常相关教务老师编号
     * @author Joburgess
     * @date 2021/6/2 0002
     * @param organIds:
     * @return java.util.List<java.lang.Integer>
     */
    List<Integer> getAllDealUserIds(@Param("organIds") Collection organIds, @Param("tenantId") Integer tenantId);

    /**
     * @describe 根据产生日期
     * @author Joburgess
     * @date 2021/5/28 0028
     * @param generateStartTime:
     * @param generateEndTime:
     * @return java.util.List<com.ym.mec.biz.dal.entity.IndexErrDataRecord>
     */
    List<IndexErrDataRecord> getWithGenerateTime(@Param("organIds") Set<Integer> organIds,
                                                 @Param("generateStartTime") String generateStartTime,
                                                @Param("generateEndTime") String generateEndTime, @Param("tenantId") Integer tenantId);

    /**
     * @describe 查询未处理记录
     * @author Joburgess
     * @date 2021/5/28 0028
     * @return java.util.List<com.ym.mec.biz.dal.entity.IndexErrDataRecord>
     */
    List<IndexErrDataRecord> findUntreatedRecord();

    /**
     * @describe 乐团巡查事项异常
     * @author Joburgess
     * @date 2021/5/27 0027
     * @param date:
     * @return java.util.List<com.ym.mec.biz.dal.entity.IndexErrDataRecord>
     */
    List<IndexErrDataRecord> queryErrInspection(@Param("date") String date,
                                                @Param("dates") Set<String> dates);

    /**
     * @describe 乐团巡查任务未提交
     * @author Joburgess
     * @date 2021/5/27 0027
     * @param date:
     * @return java.util.List<com.ym.mec.biz.dal.entity.IndexErrDataRecord>
     */
    List<IndexErrDataRecord> queryInspectionItemPlan(@Param("date") String date,
                                                     @Param("dates") Set<String> dates);

    /**
     * @describe 回访任务未完成
     * @author Joburgess
     * @date 2021/5/27 0027
     * @param date:
     * @return java.util.List<com.ym.mec.biz.dal.entity.IndexErrDataRecord>
     */
    List<IndexErrDataRecord> queryStudentVisit(@Param("date") String date,
                                               @Param("dates") Set<String> dates);

    /**
     * @describe 课程考勤异常
     * @author Joburgess
     * @date 2021/5/28 0028
     * @param date:
     * @return java.util.List<com.ym.mec.biz.dal.entity.IndexErrDataRecord>
     */
    List<IndexErrDataRecord> getAttendanceError(@Param("date") String date,
                                                @Param("dates") Set<String> dates);

    /**
     * @describe 课程异常
     * @author Joburgess
     * @date 2021/5/28 0028
     * @param date:
     * @return java.util.List<com.ym.mec.biz.dal.entity.IndexErrDataRecord>
     */
    List<IndexErrDataRecord> getNoAttendance(@Param("date") String date,
                                             @Param("dates") Set<String> dates);

    List<String> queryErrStrings(Map<String, Object> params);
    int queryErrStringsCount(Map<String, Object> params);
    List<IndexErrDataRecord> getWithOrganMonthUserStr(@Param("omuStrings") List<String> omuStrings, @Param("tenantId") Integer tenantId);
    List<IndexErrDataRecord> getAllErrDatas(Map<String, Object> params);

    /**
     * @describe 历史异常数据-乐团巡查事项异常/乐团巡查任务未提交
     * @author Joburgess
     * @date 2021/5/28 0028
     * @param params:
     * @return java.util.List<com.ym.mec.biz.dal.entity.InspectionItemPlan>
     */
    List<InspectionItemPlan> queryErrInspectionData(Map<String, Object> params);
    int errInspectionDataCount(Map<String, Object> params);

    /**
     * @describe 历史异常数据-回访任务未完成
     * @author Joburgess
     * @date 2021/5/28 0028
     * @param params:
     * @return java.util.List<com.ym.mec.biz.dal.entity.InspectionItem>
     */
    List<InspectionItem> queryErrStudentVisit(Map<String, Object> params);
    int studentVisitCount(Map<String, Object> params);

    /**
     * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleEndDto>
     * @describe 历史异常数据-课程(课程考勤异常/课程异常)
     * @author Joburgess
     * @date 2019/12/27
     */
    List<CourseScheduleEndDto> queryHistoryErrCourseData(Map<String, Object> params);
    int historyErrCourseDataCount(Map<String, Object> params);
	
}
