package com.ruoyi.oa.mapper;

import com.ruoyi.oa.domain.vo.*;
import com.ruoyi.oa.domain.vo.dashboard.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface SalaryDashboardMapper {
    
    CardMetricsVo queryCardMetrics(@Param("year") Long year, @Param("month") Long month);
    
    List<MonthlyExpenditureVo> queryMonthlyExpenditures(@Param("year") Long year);
    
    List<SalaryComponentVo> querySalaryComponents(@Param("year") Long year, @Param("month") Long month);
    
    List<LineChartPointVo> queryLineChartData(@Param("year") Long year);
    
    List<DepartmentStatVo> queryDepartmentStats(@Param("year") Long year, @Param("month") Long month);
    /**
     * 查询卡片指标数据
     *
     * @param salaryPeriod 工资期间
     * @return 卡片指标数据
     */
    NewCardMetricsVo queryNewCardMetrics(@Param("salaryPeriod") String salaryPeriod);

    /**
     * 查询月度支出数据
     *
     * @param year 年份
     * @return 月度支出列表
     */
    List<MonthlyExpenseVo> queryMonthlyExpenses(@Param("year") Integer year);

    /**
     * 查询工资构成数据
     *
     * @param salaryPeriod 工资期间
     * @return 工资构成列表
     */
    List<SalaryStructureVo> querySalaryStructures(@Param("salaryPeriod") String salaryPeriod);

    /**
     * 查询工资趋势数据
     *
     * @param year 年份
     * @return 工资趋势点列表
     */
    List<SalaryTrendPointVo> querySalaryTrendData(@Param("year") Integer year);

    /**
     * 查询社保公积金统计数据
     *
     * @param salaryPeriod 工资期间
     * @return 社保公积金统计列表
     */
    List<InsuranceStatVo> queryInsuranceStats(@Param("salaryPeriod") String salaryPeriod);

    /**
     * 查询单位统计数据
     *
     * @param salaryPeriod 工资期间
     * @return 单位统计列表
     */
    List<UnitStatVo> queryUnitStats(@Param("salaryPeriod") String salaryPeriod);

    /**
     * 查询部门统计数据
     *
     * @param salaryPeriod 工资期间
     * @return 部门统计列表
     */
    List<DeptSalaryStatVo> queryDeptSalaryStats(@Param("salaryPeriod") String salaryPeriod);
}