package com.ruoyi.inspection.mapper;

import com.ruoyi.inspection.domain.InspectionRecordTable;
import com.ruoyi.inspection.domain.VoAttendanceReport;

import java.util.List;
import java.util.Map;
import com.ruoyi.inspection.domain.InspectionManageTable;

public interface AttendanceReportMapper {

    // 可视化巡检记录（柱形图）
    List<VoAttendanceReport> ColumnVisualization(VoAttendanceReport voAttendanceReport );

    List<VoAttendanceReport> RoundListVisualization(VoAttendanceReport voAttendanceReport);

    int total();

    List<VoAttendanceReport> monthTotal(VoAttendanceReport voAttendanceReport);

    // 按天趋势统计（返回date与count）
    List<Map<String, Object>> trendDaily(VoAttendanceReport voAttendanceReport);

    // 新增：按日双序列（distinct点位数 与 总次数）
    List<Map<String, Object>> trendDailyDual(VoAttendanceReport voAttendanceReport);

    // 巡检类型占比统计
    List<VoAttendanceReport> typeProportion(VoAttendanceReport voAttendanceReport);

    // 期间已巡检点数量（distinct pointId）
    int inspectedPointCount(VoAttendanceReport voAttendanceReport);

    // 管理表总点位数
    int totalManagePointCount();

    // 期间未巡检点位清单
    List<InspectionManageTable> uninspectedPoints(VoAttendanceReport voAttendanceReport);

    // 点位类型对应的已巡检点数量（distinct）
    List<Map<String, Object>> pointTypeCounts(VoAttendanceReport voAttendanceReport);

    // 点位状态分布（管理表）
    List<Map<String, Object>> statusDistribution();

    // 新增：按月双序列（distinct点位数 与 总次数）
    List<Map<String, Object>> trendMonthlyDual(VoAttendanceReport voAttendanceReport);

    // 巡检人分布：总计/本月/本日
    List<VoAttendanceReport> inspectorStatsTotal(VoAttendanceReport voAttendanceReport);
    List<VoAttendanceReport> inspectorStatsMonth(VoAttendanceReport voAttendanceReport);
    List<VoAttendanceReport> inspectorStatsDay(VoAttendanceReport voAttendanceReport);

    // 新增：巡检点分布（本月/本日）
    List<VoAttendanceReport> pointStatsMonth(VoAttendanceReport voAttendanceReport);
    List<VoAttendanceReport> pointStatsDay(VoAttendanceReport voAttendanceReport);
}
