package cn.cecep.talroad.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.List;


/**
 * 设备信息(有组织)对象 bas_device
 *
 * @author szhpt
 * @date 2023-01-10*/
@ApiModel(value = "设备信息(有组织)Vo")
@EqualsAndHashCode(callSuper = false)
@Data
public class BasDeviceVo
{


    @ApiModelProperty(value = "设备ID")
    /** 设备ID */
    private String deviceId;

    @ApiModelProperty(value = "所属企业")
    /** 所属企业 */
    private String factoryId;

    @ApiModelProperty(value = "设备名称")
    /** 设备名称 */
    private String name;

    @ApiModelProperty(value = "所属行业 枚举。钢铁/焦化/水泥...")
    /** 所属行业 枚举。钢铁/焦化/水泥... */
    private String industry;

    @ApiModelProperty(value = "所属工序名")
    /** 所属工序名 */
    private String workStep;

    @ApiModelProperty(value = "设备类型 枚举。焦炉/烧结机...")
    /** 设备类型 枚举。焦炉/烧结机... */
    private String type;

    @ApiModelProperty(value = "状态 ≤0=停用，>0=正常")
    /** 状态 ≤0=停用，>0=正常 */
    private Long status;

    @ApiModelProperty(value = "工艺参数值 停限产计算用")
    /** 工艺参数值 停限产计算用 */
    private String craftParamValue;

    @ApiModelProperty(value = "工艺参数 JSON。展示用")
    /** 工艺参数 JSON。展示用 */
    private String craftParam;

    @ApiModelProperty(value = "DCS系统品牌")
    /** DCS系统品牌 */
    private String dcsBrand;

    @ApiModelProperty(value = "DCS系统型号")
    /** DCS系统型号 */
    private String dcsModel;

    @ApiModelProperty(value = "脱硫工艺")
    /** 脱硫工艺 */
    private String tlCraft;

    @ApiModelProperty(value = "脱硫设施数量")
    /** 脱硫设施数量 */
    private String tlNum;

    @ApiModelProperty(value = "脱硝工艺")
    /** 脱硝工艺 */
    private String txCraft;

    @ApiModelProperty(value = "脱硝设施数量")
    /** 脱硝设施数量 */
    private String txNum;

    @ApiModelProperty(value = "除尘工艺")
    /** 除尘工艺 */
    private String ccCraft;

    @ApiModelProperty(value = "除尘设施数量")
    /** 除尘设施数量 */
    private String ccNum;

    @ApiModelProperty(value = "CEMS系统数量")
    /** CEMS系统数量 */
    private String cemsNum;

    @ApiModelProperty(value = "主设备ID 本设备为从设备时，注明与哪个主设备共用数据")
    /** 主设备ID 本设备为从设备时，注明与哪个主设备共用数据 */
    private String shareDevId;

    @ApiModelProperty(value = "共用数据的设施类型 枚举列表，逗号分隔。CEMS/除尘1...")
    /** 共用数据的设施类型 枚举列表，逗号分隔。CEMS/除尘1... */
    private String shareType;

    @ApiModelProperty(value = "经度(原始)")
    /** 经度(原始) */
    private BigDecimal lon;

    @ApiModelProperty(value = "纬度(原始)")
    /** 纬度(原始) */
    private BigDecimal lat;

    @ApiModelProperty(value = "经度(地图)")
    /** 经度(地图) */
    private BigDecimal lonMap;

    @ApiModelProperty(value = "纬度(地图)")
    /** 纬度(地图) */
    private BigDecimal latMap;

    @ApiModelProperty(value = "原始设备ID 用于在通信协议中识别设备")
    /** 原始设备ID 用于在通信协议中识别设备 */
    private String oriDeviceId;


    @ApiModelProperty(value = "原始设备密码")
    /** 原始设备密码 */
    private String oriPwd;

    @ApiModelProperty(value = "工艺流程图用参数 JSON")
    /** 工艺流程图用参数 JSON */
    private String craftImageArg;

    @ApiModelProperty(value = "对应的视频设备ID JSON")
    /** 对应的视频设备ID JSON */
    private String videoDevId;

    @ApiModelProperty(value = "备注")
    /** 备注 */
    private String memo;

    @ApiModelProperty(value = "创建时间")
    /** 创建时间 */
    private String createTime;

    @Data
    public static class SimpleVo {
        @ApiModelProperty(value = "设备ID")
        private String deviceId;

        @ApiModelProperty(value = "设备名称")
        private String name;

        @ApiModelProperty(value = "曲线图展示的参数")
        private List<AmProblemFiVo.PollutantVo> pollutantVos;
    }

    @Data
    public static class SimpleStatusVo {
        @ApiModelProperty(value = "设备ID")
        private String deviceId;

        @ApiModelProperty(value = "设备名称")
        private String name;

        private String industry;
    }

    /**
     * dcs和在线监测合并到一个图表的vo
     */
    @Data
    public static class DcsOnlineVo {
        @ApiModelProperty(value = "DCS的vo")
        private SimpleVo dcsSimpleVo;

        @ApiModelProperty(value = "在线监测的vo")
        private PcOutletVo.SimpleVo onlineSimpleVo;
    }

    @ApiModel(value = "工况监控数量总览vo")
    @Data
    public static class CountOverview {
        @ApiModelProperty(value = "工况监控企业")
        private Long factoryCount;

        @ApiModelProperty(value = "行业数")
        private Long industryCount;

        @ApiModelProperty(value = "工序数量")
        private Long workStepCount;

        @ApiModelProperty(value = "设备数量")
        private Long deviceCount;

        @ApiModelProperty(value = "正常生产设备数")
        private Long normalCount;

        @ApiModelProperty(value = "停产设备数")
        private Long stopCount;

        @ApiModelProperty(value = "启停设备数")
        private Long startStopCount;

        @ApiModelProperty(value = "掉线设备数")
        private Long offlineCount;
    }

    @ApiModel(value = "煤气放散分析大屏-煤气放散数量vo")
    @Data
    public static class CoalCountOverview {
        @ApiModelProperty(value = "钢铁-行业企业数")
        private Integer gtFactoryCount;

        @ApiModelProperty(value = "钢铁-高炉煤气放散火炬")
        private Integer gtGLMQCount;

        @ApiModelProperty(value = "钢铁-高炉煤气炬")
        private Integer gtGLMQGCount;

        @ApiModelProperty(value = "钢铁-转炉")
        private Integer gtZLCount;

        @ApiModelProperty(value = "钢铁-焦炉煤气管网")
        private Integer gtMQGWCount;

        @ApiModelProperty(value = "焦化行业企业数")
        private Integer jhFactoryCount;

        @ApiModelProperty(value = "焦化-焦炉煤气管网")
        private Integer jhMQGWCount;
    }

    @ApiModel(value = "煤气放散分析大屏-煤气放散清单vo")
    @Data
    public static class CoalDiffuse {
        @ApiModelProperty(value = "企业id")
        private String factoryId;

        @ApiModelProperty(value = "企业名称")
        private String factoryName;

        @ApiModelProperty(value = "生产经营场所中心经度")
        private String productionLon;

        @ApiModelProperty(value = "生产经营场所中心纬度")
        private String productionLat;

        @ApiModelProperty(value = "设备id")
        private String deviceId;

        @ApiModelProperty(value = "设备名称")
        private String deviceName;

        @ApiModelProperty(value = "当前状态 1正常放散，2异常放散，3未放散，4离线")
        private String status;
    }

}
