package com.zehong.web.controller.visualization;
import com.github.pagehelper.PageInfo;
import com.zehong.common.core.controller.BaseController;
import com.zehong.system.domain.form.DeviceReportDataForm;
import com.zehong.system.domain.form.TWorkOrderForm;
import com.zehong.system.domain.vo.DeviceReportDataVo;
import com.zehong.system.domain.vo.SevenDayAlarmVo;
import com.zehong.system.domain.vo.WorkOrderNotReceivedVo;
import com.zehong.system.domain.vo.WorkOrderVo;
import com.zehong.system.service.ITDeviceReportDataService;
import com.zehong.system.service.ITWorkOrderService;
import com.zehong.system.service.IVisualizationService;
import com.zehong.web.timeconfig.TimeConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;


/**
 * 燃气管理系统-数据可视化控制层
 */
@RestController
@RequestMapping("/visualization/visualizationData")
public class VisualizationController extends BaseController {

    /**
     * 数据可视化控制层
     */
    @Autowired
    private IVisualizationService iVisualizationService;

    /**设备监控service层*/
    @Autowired
    private ITDeviceReportDataService tDeviceReportDataService;

    /**工单基础信息service层*/
    @Autowired
    private ITWorkOrderService tWorkOrderService;


     /**
     * 查询设备实时监控列表数量接口 (报警状态)
     * @return
     */
    @GetMapping("/equipmentAlarmSize")
    public int realtimeListSize(){
        DeviceReportDataForm deviceReportDataForm=new DeviceReportDataForm();
        PageInfo<DeviceReportDataVo> page = tDeviceReportDataService.selectRealtimeDataPage(deviceReportDataForm);
        int quantity = 0;
        for (int i=0;i<page.getSize();i++){
            if (page.getList().get(i).getDeviceStatus().equals("报警")){
                quantity++;
            }
        }
        return quantity;
    }


    /**
     * 查询设备实时监控列表数量接口 (正常状态)
     * @return
     */
    @GetMapping("/equipmentNormalSize")
    public int equipmentNormalSize(){
        DeviceReportDataForm deviceReportDataForm=new DeviceReportDataForm();
        PageInfo<DeviceReportDataVo> page = tDeviceReportDataService.selectRealtimeDataPage(deviceReportDataForm);
        int quantity = 0;
        for (int i=0;i<page.getSize();i++){
            if (page.getList().get(i).getDeviceStatus().equals("正常")){
                quantity++;
            }
        }
        return quantity;
    }

    /**
     * 查询设备历史监控总数据量
     * @return
     */
    @GetMapping("/historicalDataSize")
    public int HistoricalDataSize(){
        //查询设备历史监控总数据量
        int DataSize = iVisualizationService.HistoricalDataSize();
        return DataSize;
    }


    /**
     * 查询设备历史报警数量
     * @return
     */
    @GetMapping("/historicalAlarmSize")
    public int historicalAlarmSize(){
        //查询设备历史报警数量
        return iVisualizationService.historicalAlarmSize();
    }


    /**
     * 工单未接收数量
     * @return
     */
    @GetMapping("/workOrderNotReceived")
    public WorkOrderNotReceivedVo workOrderNotReceived() throws Exception {
        TWorkOrderForm tWorkOrderForm = new TWorkOrderForm();
        PageInfo<WorkOrderVo> page = tWorkOrderService.selectTWorkOrderPage(tWorkOrderForm);
        //未接收数量
        int workOrderNotReceivedSize=0;
        //工单已接收数量
        int workOrderReceivedSize=0;
        //工单已反馈数量
        int workOrderFeedbackSize=0;
        //工单已归档数量
        int workOrderArchived=0;
        for (int i=0;i<page.getSize();i++){
            if (page.getList().get(i).getOrderStatus().equals("0")){
                workOrderNotReceivedSize++;
            }else if (page.getList().get(i).getOrderStatus().equals("1")){
                workOrderReceivedSize++;
            }else if (page.getList().get(i).getOrderStatus().equals("3")){
                workOrderFeedbackSize++;
            }else if (page.getList().get(i).getOrderStatus().equals("4")){
                workOrderArchived++;
            }
        }
        WorkOrderNotReceivedVo workOrderNotReceivedVo=new WorkOrderNotReceivedVo();
        workOrderNotReceivedVo.setWorkOrderNotReceivedSize(workOrderNotReceivedSize);
        workOrderNotReceivedVo.setWorkOrderReceivedSize(workOrderReceivedSize);
        workOrderNotReceivedVo.setWorkOrderFeedbackSize(workOrderFeedbackSize);
        workOrderNotReceivedVo.setWorkOrderArchived(workOrderArchived);
        return workOrderNotReceivedVo;
    }


    /**
     * 查询设备近七天报警数量
     * @return
     */
    @GetMapping("/sevenDayAlarm")
    public ArrayList<SevenDayAlarmVo> sevenDayAlarm(){
        //查询近七天报警数量数据
        List<SevenDayAlarmVo> sevenDayAlarmVos = iVisualizationService.selectSevenDayAlarm(TimeConfig.newBeforeSevenDaysDate(), TimeConfig.newYesterdayDate());
        ArrayList<SevenDayAlarmVo> list=new ArrayList<>();
        //循环7次
        for (int i=0;i<TimeConfig.getSevenDate().size();i++){
            SevenDayAlarmVo sevenDayAlarmVo=new SevenDayAlarmVo();
            sevenDayAlarmVo.setTime(TimeConfig.getSevenDate().get(i));
            //循环查询出来的数据
            for (int n=0;n<sevenDayAlarmVos.size();n++){
                //循环比较
                if (TimeConfig.getSevenDate().get(i).equals(sevenDayAlarmVos.get(n).getTime())){
                    sevenDayAlarmVo.setCount(sevenDayAlarmVos.get(n).getCount());
                    break;
                }
            }
            list.add(sevenDayAlarmVo);
        }
        return list;
    }





}