package com.ruoyi.postCheck.mapper;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.ruoyi.postCheck.domain.PostCheckedProblem;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.postCheck.domain.tools.ProblemCategory;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;


/**
 * 岗检问题表Mapper接口
 *
 * @author csg
 * @date 2023-12-23
 */
public interface PostCheckedProblemMapper extends BaseMapper<PostCheckedProblem> {
    /**
     * 查询岗检问题表
     *
     * @param id 岗检问题表主键
     * @return 岗检问题表
     */
    public PostCheckedProblem selectPostCheckedProblemById(Long id);

    /**
     * 查询岗检问题表列表
     *
     * @param postCheckedProblem 岗检问题表
     * @return 岗检问题表集合
     */
    public List<PostCheckedProblem> selectPostCheckedProblemList(PostCheckedProblem postCheckedProblem);

    /**
     * 新增岗检问题表
     *
     * @param postCheckedProblem 岗检问题表
     * @return 结果
     */
    public int insertPostCheckedProblem(PostCheckedProblem postCheckedProblem);

    /**
     * 修改岗检问题表
     *
     * @param postCheckedProblem 岗检问题表
     * @return 结果
     */
    public int updatePostCheckedProblem(PostCheckedProblem postCheckedProblem);

    /**
     * 删除岗检问题表
     *
     * @param id 岗检问题表主键
     * @return 结果
     */
    public int deletePostCheckedProblemById(Long id);

    /**
     * 批量删除岗检问题表
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePostCheckedProblemByIds(Long[] ids);

    BigDecimal getPostTotalByDeptId(Long deptId);

    /**
     * 首页统计-总览-岗检计划
     *
     * @param status
     * @param beginTime
     * @param endTime
     * @return
     */
    Integer selectCheckedPostCount(@Param("status") Integer status, @Param("beginTime") String beginTime, @Param("endTime") String endTime);

    /**
     * 按问题属性分组统计问题类别
     *
     * @return
     */
    List<ProblemCategory> problemCategoryByAttribute();

    @MapKey("YEAR")
    Map<String, Object> getYearStatistics(String year);

    @MapKey("QUARTER")
    Map<String, Object> getQuarterStatistics(String year);

    @MapKey("MONTH")
    Map<String, Object> getMonthStatistics(String year);

    // 改造返回值=List；改造自动填充值（没有数据的月份自动填充）
    List<Map<String, Object>> getYearStatisticsV2(@Param("beginYear") Integer beginYear, @Param("endYear") Integer endYear);

    List<Map<String, Object>> getQuarterStatisticsV2(@Param("year") String year, @Param("type") Integer type);

    List<Map<String, Object>> getMonthStatisticsV2(String year);

    int selectAllMans();

    int selectAllMansByDeptType(Integer type);

    int selectAllKeyMans(@Param("type") Integer type);

    int selectPostTolat();

    int seletctPostTolatByDeptType(Integer type);

    int seletctKeyPostTolat(Integer type);

    int selectCheaAllMans(String year);

    int selectCheatAllMansByDeptType(@Param("type") Integer type, @Param("year") String year);

    int selectCheatAllKeyMans(@Param("type") Integer type, @Param("year") String year);

    int selectCheatPostTolat(String year);

    int seletctCheatPostTolatByDeptType(@Param("type") Integer type, @Param("year") String year);

    int seletctCheatKeyPostTolat(@Param("type") Integer type, @Param("year") String year);
}
