package com.ygtx.gxt.service;

import java.util.List;
import java.util.Map;

/**
 * 工单统计Service接口
 *
 * @author ygtx
 * @date 2025-11-03
 */
public interface IGxtOrderStatisticsService {

    /**
     * 分组统计工单数据
     *
     * @param groupFields 分组字段，多个用逗号分隔（如：gxtCenter,pcsStationName,brand,model）
     * @param gxtCenter 维保中心（可选）
     * @param pcsStationName 场站名称（可选）
     * @param brand 设备品牌（可选）
     * @param model 设备型号（可选）
     * @param startTime 开始时间（可选）
     * @param endTime 结束时间（可选）
     * @return 统计结果
     */
    List<Map<String, Object>> getGroupStatistics(String groupFields, String gxtCenter,
                                                  String pcsStationName, String brand,
                                                  String model, String startTime, String endTime);

    /**
     * 获取统计维度选项（维保中心、场站、品牌、型号列表）
     *
     * @return 维度选项
     */
    Map<String, Object> getDimensions();

    /**
     * 分组统计维修工单数据（按maintenanceType统计分数）
     *
     * @param groupFields 分组字段，多个用逗号分隔
     * @param gxtCenter 维保中心（可选）
     * @param pcsStationName 场站名称（可选）
     * @param brand 设备品牌（可选）
     * @param model 设备型号（可选）
     * @param startTime 开始时间（可选）
     * @param endTime 结束时间（可选）
     * @return 统计结果
     */
    List<Map<String, Object>> getRepairOrderStatistics(String groupFields, String gxtCenter,
                                                        String pcsStationName, String brand,
                                                        String model, String startTime, String endTime);

    /**
     * 获取所有维修类型
     *
     * @return 维修类型列表
     */
    List<String> getAllMaintenanceTypes();

    /**
     * 获取维保运行统计
     *
     * @param groupFields 分组字段，多个用逗号分隔
     * @param gxtCenter 维保中心（可选）
     * @param pcsStationName 场站名称（可选）
     * @param brand 设备品牌（可选）
     * @param model 设备型号（可选）
     * @return 统计结果
     */
    List<Map<String, Object>> getRuntimeScoreStatistics(String groupFields, String gxtCenter,
                                                       String pcsStationName, String brand,
                                                       String model);
}
