package cn.cecep.talroad.service;

import cn.cecep.talroad.service.impl.ProductionManageServiceImpl;
import cn.cecep.talroad.vo.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
 * 产排治模块base service
 */
public interface IProductionManageService {

    ProductionManageServiceImpl.FrameDataVo getFrameData(SearchVo searchVo);

    SearchVo getSearchVo(String outletId, List<String> deviceIds);


    @ApiModel(value = "产治排信息-弹框数据vo")
    @Data
    class FrameDataVo {
        @ApiModelProperty(value = "数据趋势")
        private List<EChartsVO> chartsVOS;

        @ApiModelProperty(value = "数据趋势图分页总数")
        private int total;

        @ApiModelProperty(value = "视频监控")
        private List<AmVideoDevFiVo.DevTypeGroup> videoDevFiVos;
    }

    @ApiModel(value = "产治排信息-查询条件vo")
    @Data
    class SearchVo {
        @ApiModelProperty(value = "监测点vo列表。获取指定监测点的曲线图数据")
        private List<PcOutletVo.SimpleVo> outletSimpleVo;

        @ApiModelProperty(value = "DCS设备vo列表。获取指定DCS设备的曲线图数据")
        private List<BasDeviceVo.SimpleVo> deviceSimpleVo;

        @ApiModelProperty(value = "DCS设备vo列表。获取指定DCS设备的状态图表")
        private List<BasDeviceVo.SimpleStatusVo> deviceSimpleStatusVos;

        @ApiModelProperty(value = "分表计电设备点位vo列表。获取指定分表计电设备点位的曲线图数据")
        private List<BasDeviceSiteVo.SimpleVo> deviceSiteSimpleVo;

        @ApiModelProperty(value = "分表计电设备点位（合并图表）")
        private List<BasDeviceSiteVo.SimpleVo> mergeDeviceSiteSimpleVo;

        @ApiModelProperty(value = "获取DSC设备和在线监测合并后的图表")
        private List<BasDeviceVo.DcsOnlineVo> dcsOnlineVos;

        @ApiModelProperty(value = "开始时间")
        private String startTime;

        @ApiModelProperty(value = "结束时间")
        private String endTime;

        @ApiModelProperty(value = "日：D；小时：H；分钟：M")
        private String dataType;

        /**
         * 分页加载关联到的在线监测点位、工况设备、分表计电设备点位曲线图
         */
        @ApiModelProperty(value = "页码")
        private Long pageNum;
        @ApiModelProperty(value = "每页条数")
        private Long pageSize;

        public SearchVo() {
        }

        public SearchVo(String startTime, String endTime, Long pageNum, Long pageSize) {
            this.startTime = startTime;
            this.endTime = endTime;
            this.pageNum = pageNum;
            this.pageSize = pageSize;
        }
    }
}
