package com.tofly.gpsboot.service.statement;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.es.PdaDeviceUpload;
import com.tofly.gpsboot.strategy.ExcelStrategy;
import com.tofly.pojo.statement.dto.StatementDto;
import com.tofly.pojo.statement.vo.*;

import java.util.List;

/**
 * 报表接口服务
 * @author BZ-DJJ
 */
public interface IStatementService {


    /**
     * 获取人员工时统计信息
     * @param dto
     * @return
     */
    List<MaintenanceWorkVo> getMaintenanceWork(StatementDto dto);

    /**
     * 获取管网设施维护情况
     * @param dto
     * @return
     */
    List<MaintenanceStatisticsVo> getMaintenanceStatistics(StatementDto dto);

    /**
     * 获取维修记录台账
     * @param dto
     * @return
     */
    Page<MaintenanceLogLedgerVo> getMaintenanceLogLedger(Page page, StatementDto dto);

    /**
     * 维修保养记录台账
     * @param dto
     * @return
     */
    Page<MaintenanceMaintainVo> getMaintenanceMaintain(Page page, StatementDto dto);

    /**
     * 获取维修类型统计
     * @param dto
     * @return
     */
    List<MaintenanceTypeStatisticsVo> getMaintenanceTypeStatistics(StatementDto dto);

    /**
     * 获取耗材情况
     * @param dto
     * @return
     */
    List<MaterialConditionsVo> getMaterialConditions(StatementDto dto);

    /**
     * 维护分类统计
     * @param dtoList
     * @return
     */
    List<MaintenanceClassificationVo> getMaintenanceClassification(List<StatementDto> dtoList);

    /**
     * 隐患类型分析
     * @param dto
     * @return
     */
    List<TroubleTypeAnalysisVo> getTroubleTypeAnalysis(StatementDto dto);

    /**
     * 隐患原因分析
     * @param dto
     * @return
     */
    List<TroubleCauseVo> getTroubleCause(StatementDto dto);

    /**
     * 隐患趋势分析
     * @param dto
     * @return
     */
    List<TroubleTrendAnalysisVo> getTroubleTrendAnalysis(StatementDto dto);

    /**
     * 隐患记录台账
     * @param dto
     * @return
     */
    Page getTroubleRecordLedger(Page page,StatementDto dto);

    /**
     * 获取巡检日报
     * @param dto
     * @return
     */
    List<InspectionDayVo> getInspectionDay(StatementDto dto);

    /**
     * 获取巡检月报
     * @param dto
     * @return
     */
    List<InspectionMonthVo> getInspectionMonth(StatementDto dto);

    /**
     * 获取巡检统计
     * @param dto
     * @return
     */
    List<InspectionStatisticsVo> getInspectionStatistics(StatementDto dto);

    /**
     * 考勤记录
     * @param dto
     * @return
     */
    List<AttendanceRecordsVo> getAttendanceRecords(StatementDto dto);

    /**
     * 排班记录
     * @param dto
     * @return
     */
    List<SchedulingVo> getScheduling(StatementDto dto);

    /**
     * 终端记录台账
     * @param page
     * @param dto
     * @return
     */
    Page<List<PdaDeviceUpload>> getTerminalRecord(Page page, StatementDto dto, String exportFlag);


    List<PlanDisplayStatisticalVo> getPlanDisplayStatistical(StatementDto dto);

}
