import type { PageParam, PageResult } from '#/packages/effects/request/src';

import { requestClient } from '#/api/request';

export namespace HrmAttendanceSummaryApi {
  /** 考勤统计 */
  export interface AttendanceSummary {
    id?: number;
    userId?: number;
    userName?: string;
    deptId?: number;
    deptName?: string;
    yearMonth?: string;
    workDays?: number;
    actualDays?: number;
    lateCount?: number;
    earlyCount?: number;
    absentCount?: number;
    overtimeHours?: number;
    leaveHours?: number;
    remark?: string;
    createTime?: string;
  }

  /** 生成统计参数 */
  export interface GenerateParams {
    yearMonth: string;
    deptId?: number;
    userId?: number;
  }
}

/** 查询考勤统计分页列表 */
export function getAttendanceSummaryPage(params: PageParam) {
  return requestClient.get<PageResult<HrmAttendanceSummaryApi.AttendanceSummary>>(
    '/hrm/attendance/summary/page',
    { params },
  );
}

/** 查询员工月度汇总 */
export function getAttendanceSummary(params: { userId: number; yearMonth: string }) {
  return requestClient.get<HrmAttendanceSummaryApi.AttendanceSummary>(
    '/hrm/attendance/summary/get',
    { params },
  );
}

/** 生成月度考勤汇总 */
export function generateAttendanceSummary(params: HrmAttendanceSummaryApi.GenerateParams) {
  return requestClient.post('/hrm/attendance/summary/generate', null, { params });
}

/** 导出考勤统计 Excel */
export function exportAttendanceSummary(params: any) {
  return requestClient.download('/hrm/attendance/summary/export-excel', { params });
}