package com.bootdo.datas.controller;

import com.bootdo.common.utils.PageUtils;
import com.bootdo.common.utils.Query;
import com.bootdo.datas.domain.DataDO;
import com.bootdo.datas.dto.*;
import com.bootdo.datas.service.DataService;
import com.bootdo.datas.service.GyDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

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

/**
 * 仪表盘数据控制层
 *
 * @author Mr.xiBel
 * @date 2022/3/24
 **/
@Controller
@RequestMapping("/dashboard/data")
public class DashboardController {

    @Autowired
    private GyDataService gyDataService;
    @Autowired
    private DataService dataService;


    /**
     * 首页地图数据
     *
     * @return
     */
    @ResponseBody
    @GetMapping("/queryData")
    public MapDataResultDTO queryData() {
        MapDataResultDTO mapDataResultDTO = new MapDataResultDTO();
        List<MapDataDTO> mapData1 = dataService.mapDataList("重要数据");
        List<MapDataDTO> mapData2 = dataService.mapDataList("核心数据");

        if (!CollectionUtils.isEmpty(mapData1) && !CollectionUtils.isEmpty(mapData2)) {
            mapDataResultDTO.setMapData1(mapData1);
            mapDataResultDTO.setMapData2(mapData2);
            mapDataResultDTO.setMaxData(mapData2.get(0).getAmount() + mapData1.get(0).getAmount());
            return mapDataResultDTO;
        }

        if (!CollectionUtils.isEmpty(mapData1)) {
            mapDataResultDTO.setMapData1(mapData1);
            mapDataResultDTO.setMaxData(mapData1.get(0).getAmount());
            return mapDataResultDTO;
        }

        if (!CollectionUtils.isEmpty(mapData2)) {
            mapDataResultDTO.setMapData2(mapData2);
            mapDataResultDTO.setMaxData(mapData2.get(0).getAmount());
            return mapDataResultDTO;
        }

        return mapDataResultDTO;
    }


    /**
     * 首页获取重要数据和核心数据 列表数据
     *
     * @param params
     * @return
     */
    @ResponseBody
    @GetMapping("/list")
    public PageUtils list(@RequestParam Map<String, Object> params) {
        // 查询列表数据
        Query query = new Query(params);
        List<GyDataImportDTO> dataList = gyDataService.list(query);
        int total = gyDataService.countTotal(query);
        PageUtils pageUtils = new PageUtils(dataList, total);
        return pageUtils;
    }


    /**
     * 数据上报趋势图 和 数据分类使用同一个数据
     *
     * @return
     */
    @ResponseBody
    @GetMapping("/trendData")
    public List<DateAndCountDTO> list2() {
        return dataService.trendData();
    }


    /**
     * 所属行业子类统计
     *
     * @return
     */
    @ResponseBody
    @GetMapping("/industryData")
//    @RequiresPermissions("datas:data:data")
    public List<NameAndValueDTO> reportForm3() {
        return dataService.industryData();
    }

    /**
     * 所属行业
     *
     * @return
     */
    @ResponseBody
    @GetMapping("/industryType")
//    @RequiresPermissions("datas:data:data")
    public List<NameAndValueDTO> reportForm40() {
        return dataService.industryTypeData();
    }

    /**
     * 数据级别
     *
     * @return
     */
    @ResponseBody
    @GetMapping("/dataLevelData")
//    @RequiresPermissions("datas:data:data")
    public DateAndCountListDTO reportForm4() {
        return dataService.dataLevelData();
    }

    /**
     * 数据审核 各省份角色时需要
     *
     * @return
     */
    @ResponseBody
    @GetMapping("/dataAudit")
//    @RequiresPermissions("datas:data:data")
    public Double reportForm5() {
        return dataService.dataAuditData();
    }


    /**
     * 统计数据 所属类别
     *
     * @return
     */
    @ResponseBody
    @GetMapping("/dataCategory")
//    @RequiresPermissions("datas:data:data")
    public List<NameAndValueDTO> reportForm6() {
        return dataService.dataCategoryData();
    }
}
