package com.srs.routine.service;

import java.io.Serializable;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.srs.routine.domain.RtStuDisciplinaryApplication;
import com.srs.routine.domain.vo.ClassStuDisciplinaryDataStatistics;
import com.srs.routine.domain.vo.StuDisciplinaryPenaltyNumber;

/**
 * 学生处分申请Service接口
 *
 * @author LSD
 * @date 2024-04-17
 */
public interface IRtStuDisciplinaryApplicationService extends IService<RtStuDisciplinaryApplication> {
    /**
     * 查询学生处分申请
     *
     * @param applicationId 学生处分申请主键
     * @return 学生处分申请
     */
    public RtStuDisciplinaryApplication selectRtStuDisciplinaryApplicationByApplicationId(Long applicationId);

    /**
     * 查询学生处分申请列表
     *
     * @param rtStuDisciplinaryApplication 学生处分申请
     * @return 学生处分申请集合
     */
    List<RtStuDisciplinaryApplication> selectRtStuDisciplinaryApplicationList(RtStuDisciplinaryApplication rtStuDisciplinaryApplication);

    /**
     * 新增学生处分申请
     *
     * @param rtStuDisciplinaryApplication 学生处分申请
     * @return 结果
     */
    int insertRtStuDisciplinaryApplication(RtStuDisciplinaryApplication rtStuDisciplinaryApplication);

    /**
     * 修改学生处分申请
     *
     * @param rtStuDisciplinaryApplication 学生处分申请
     * @return 结果
     */
    int updateRtStuDisciplinaryApplication(RtStuDisciplinaryApplication rtStuDisciplinaryApplication);

    /**
     * 修改学生处分申请，
     * @param rtStuDisciplinaryApplication
     * @return
     */
    int editRtStuDisciplinaryApplication(RtStuDisciplinaryApplication rtStuDisciplinaryApplication);

    /**
     * 批量删除学生处分申请
     *
     * @param applicationIds 需要删除的学生处分申请主键集合
     * @return 结果
     */
    int deleteRtStuDisciplinaryApplicationByApplicationIds(Long[] applicationIds);

    /**
     * 删除学生处分申请信息
     *
     * @param applicationId 学生处分申请主键
     * @return 结果
     */
    int deleteRtStuDisciplinaryApplicationByApplicationId(Long applicationId);

    /**
     * 根据流程实例id获取学生处分申请
     * @param procInsId
     * @return
     */
    RtStuDisciplinaryApplication getDisciplinaryApplicationByProcInsId(String procInsId);

    List<ClassStuDisciplinaryDataStatistics> getClassDisciplinaryNumber();

    /**
     * 查询该学生是否在处分中
     * @param stuNo
     * @return
     */
    Boolean selectRtStuDisciplinaryApplicationByStuNo(String stuNo);

    /**
     * 根据处分文号获取处分信息
     * @param penaltyNumber
     * @return
     */
    StuDisciplinaryPenaltyNumber getStuDisciplinaryApplicationByPenaltyNumber(Long penaltyNumber);

    /**
     * 根据学号获取自己的处分信息
     * @param rtStuDisciplinaryApplication
     * @return
     */
    List<RtStuDisciplinaryApplication> getRtStuDisciplinaryApplicationListByStuNo(RtStuDisciplinaryApplication rtStuDisciplinaryApplication);

    /**
     * 学务查询数据
     * @param rtStuDisciplinaryApplication
     * @return
     */
    List<RtStuDisciplinaryApplication> selectRtStuDisciplinaryApplicationListByXW(RtStuDisciplinaryApplication rtStuDisciplinaryApplication);
    String getviolationDate(String stuNo);
}
