package com.srs.comprehensive.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.srs.common.core.domain.AjaxResult;
import com.srs.comprehensive.domain.CphGoodApply;
import com.srs.comprehensive.domain.CphTerm;
import com.srs.comprehensive.domain.Dto.CphApplySHXS;
import com.srs.comprehensive.domain.Dto.CphApplyXyjxj;
import com.srs.comprehensive.domain.Dto.CphApplyYxgb;
import com.srs.comprehensive.domain.Dto.CphCancel;
import com.srs.comprehensive.domain.Vo.*;
import org.apache.ibatis.annotations.Param;

/**
 * 评优申请Service接口
 *
 * @author srs
 * @date 2023-09-12
 */
public interface ICphGoodApplyService extends IService<CphGoodApply> {


    List<CphBiyeApplyVo> countBiyeYearDept();
    List<String> countJwcUnDo();
    List<String> countXwUnDo(Long id);

    public List<String> countFdyUnDo(String tNo);

    public List<String> countStuUnDo(String stuNo);
    public List<String> countSjUnDo(Long id);


    public List<CphGoodApplyVo> importXyjxj(CphSearch param);

    public List<CphGoodApplyVo> importShxs(CphSearch param);

    public List<CphGoodApplyVo> importYxbg(CphSearch param);


    public List<CphGoodAuditFdyVo> listFdyAudit(CphSearch param);

    public List<CphGoodAuditFdyVo> listXwAudit(CphSearch param);


    public List<CphGoodTypeCode> listXyjxjCanType();

    public List<CphTerm> listTermByYear(Long id);

    public AjaxResult applyXyjxj(CphApplyXyjxj param);

    public AjaxResult reApply(CphApplyXyjxj param);

    public List<CphGoodApplyVo> listOwnXyjxjApply(String stuNo);

    public List<CphClassRankScore> listOwnScoreClassRank(String stuNo);

    public List<CphClassRankScore> listOwnScoreClassRankByTag(String stuNo,String tag);

    public List<CphCourseNameScore> listOwnYearCourseScore(String stuNo);

    public List<CphCoursePassCount> countOwnPass(String stuNo);

    public List<CphIamSitCount> countOwnIam(String stuNo);

    public CphCoursePassCount getOwnPassCountByCode(String stuNo,String code);


    public CphIamSitCount getOwnIamCountByCode(String stuNo,String code);

    public AjaxResult cancelOwnApply(CphCancel param);

    public CphGoodApplyVo lookDetail(Long id);

    public CphClassRankScore getOwnRankByCode(CphSearch param);


    /**
     * 查询评优申请
     *
     * @param id 评优申请主键
     * @return 评优申请
     */
    public CphGoodApply selectCphGoodApplyById(Long id);

    /**
     * 查询评优申请列表
     *
     * @param cphGoodApply 评优申请
     * @return 评优申请集合
     */
    List<CphGoodApply> selectCphGoodApplyList(CphGoodApply cphGoodApply);

    /**
     * 新增评优申请
     *
     * @param cphGoodApply 评优申请
     * @return 结果
     */
    int insertCphGoodApply(CphGoodApply cphGoodApply);

    /**
     * 修改评优申请
     *
     * @param cphGoodApply 评优申请
     * @return 结果
     */
    int updateCphGoodApply(CphGoodApply cphGoodApply);

    /**
     * 批量删除评优申请
     *
     * @param ids 需要删除的评优申请主键集合
     * @return 结果
     */
    int deleteCphGoodApplyByIds(Long[] ids);

    /**
     * 删除评优申请信息
     *
     * @param id 评优申请主键
     * @return 结果
     */
    int deleteCphGoodApplyById(Long id);

    /**
     * 申请优秀干部
     * @param cphApplyYxgb
     * @return
     */
    AjaxResult applyYxgb(CphApplyYxgb cphApplyYxgb);

    public boolean verifyApplySHXS();
    public boolean applySHXS(CphApplySHXS cphApplySHXS);

    List<Map<String, Object>> getGrades();

    AjaxResult getApplyYxgb();

    /**
     * 删除优秀干部申请
     * @param ids 申请表id列表
     * @return
     */
    AjaxResult deleteYxgb(List<Long> ids);

    AjaxResult verifyApplyYXGB();

    /**
     * 重新提交被驳回的优秀干部申请
     * @param cphApplyYxgb
     * @return
     */
    AjaxResult reApplyYxgb(CphApplyYxgb cphApplyYxgb);
}
