package com.ygtx.gxt.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ygtx.common.utils.StringUtils;
import com.ygtx.gxt.mapper.GxtOrderStatisticsMapper;
import com.ygtx.gxt.service.IGxtOrderStatisticsService;

/**
 * 工单统计Service业务层处理
 *
 * @author ygtx
 * @date 2025-11-03
 */
@Service
public class GxtOrderStatisticsServiceImpl implements IGxtOrderStatisticsService {

    @Autowired
    private GxtOrderStatisticsMapper statisticsMapper;

    /**
     * 分组统计工单数据
     */
    @Override
    public List<Map<String, Object>> getGroupStatistics(String groupFields, String gxtCenter,
                                                         String pcsStationName, String brand,
                                                         String model, String startTime, String endTime) {
        Map<String, Object> params = new HashMap<>();
        
        // 设置分组字段
        if (StringUtils.isNotEmpty(groupFields)) {
            params.put("groupFields", groupFields);
        } else {
            // 默认按维保中心分组
            params.put("groupFields", "gxt_center");
        }
        
        // 设置过滤条件
        if (StringUtils.isNotEmpty(gxtCenter)) {
            params.put("gxtCenter", gxtCenter);
        }
        if (StringUtils.isNotEmpty(pcsStationName)) {
            params.put("pcsStationName", pcsStationName);
        }
        if (StringUtils.isNotEmpty(brand)) {
            params.put("brand", brand);
        }
        if (StringUtils.isNotEmpty(model)) {
            params.put("model", model);
        }
        if (StringUtils.isNotEmpty(startTime)) {
            params.put("startTime", startTime);
        }
        if (StringUtils.isNotEmpty(endTime)) {
            params.put("endTime", endTime);
        }
        
        return statisticsMapper.selectGroupStatistics(params);
    }

    /**
     * 获取统计维度选项
     */
    @Override
    public Map<String, Object> getDimensions() {
        Map<String, Object> result = new HashMap<>();
        
        // 获取所有维保中心
        List<String> centers = statisticsMapper.selectAllGxtCenters();
        result.put("centers", centers != null ? centers : new ArrayList<>());
        
        // 获取所有场站
        List<String> stations = statisticsMapper.selectAllStations();
        result.put("stations", stations != null ? stations : new ArrayList<>());
        
        // 获取所有品牌
        List<String> brands = statisticsMapper.selectAllBrands();
        result.put("brands", brands != null ? brands : new ArrayList<>());
        
        // 获取所有型号
        List<String> models = statisticsMapper.selectAllModels();
        result.put("models", models != null ? models : new ArrayList<>());
        
        return result;
    }

    /**
     * 分组统计维修工单数据（按maintenanceType统计分数）
     */
    @Override
    public List<Map<String, Object>> getRepairOrderStatistics(String groupFields, String gxtCenter,
                                                               String pcsStationName, String brand,
                                                               String model, String startTime, String endTime) {
        Map<String, Object> params = new HashMap<>();
        
        // 设置分组字段
        if (StringUtils.isNotEmpty(groupFields)) {
            params.put("groupFields", groupFields);
        } else {
            // 默认按维保中心分组
            params.put("groupFields", "gxt_center");
        }
        
        // 设置过滤条件
        if (StringUtils.isNotEmpty(gxtCenter)) {
            params.put("gxtCenter", gxtCenter);
        }
        if (StringUtils.isNotEmpty(pcsStationName)) {
            params.put("pcsStationName", pcsStationName);
        }
        if (StringUtils.isNotEmpty(brand)) {
            params.put("brand", brand);
        }
        if (StringUtils.isNotEmpty(model)) {
            params.put("model", model);
        }
        if (StringUtils.isNotEmpty(startTime)) {
            params.put("startTime", startTime);
        }
        if (StringUtils.isNotEmpty(endTime)) {
            params.put("endTime", endTime);
        }
        
        return statisticsMapper.selectRepairOrderStatistics(params);
    }

    /**
     * 获取所有维修类型
     */
    @Override
    public List<String> getAllMaintenanceTypes() {
        return statisticsMapper.selectAllMaintenanceTypes();
    }

    /**
     * 获取维保运行统计
     */
    @Override
    public List<Map<String, Object>> getRuntimeScoreStatistics(String groupFields, String gxtCenter,
                                                              String pcsStationName, String brand,
                                                              String model) {
        Map<String, Object> params = new HashMap<>();
        
        // 设置分组字段
        if (StringUtils.isNotEmpty(groupFields)) {
            params.put("groupFields", groupFields);
        } else {
            // 默认按维保中心分组
            params.put("groupFields", "gxt_center");
        }
        
        // 设置过滤条件
        if (StringUtils.isNotEmpty(gxtCenter)) {
            params.put("gxtCenter", gxtCenter);
        }
        if (StringUtils.isNotEmpty(pcsStationName)) {
            params.put("pcsStationName", pcsStationName);
        }
        if (StringUtils.isNotEmpty(brand)) {
            params.put("brand", brand);
        }
        if (StringUtils.isNotEmpty(model)) {
            params.put("model", model);
        }
        
        // 调用Mapper方法获取运行统计结果
        return statisticsMapper.selectRuntimeScoreStatistics(params);
    }
}
