package com.cmvr.inspection.domain.vo;

import com.cmvr.common.annotation.Excel;
import com.cmvr.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 巡检告警视图对象（包含关联信息）
 * 
 * @author cmvr-iot
 * @since 2026-05-29
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel("巡检告警视图对象")
public class InspectionAlarmVo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id */
    @ApiModelProperty("id")
    private String id;

    /** 告警编码 */
    @Excel(name = "告警编码")
    @ApiModelProperty("告警编码")
    private String alarmCode;

    /** 任务执行实例ID */
    @Excel(name = "任务执行实例ID")
    @ApiModelProperty("任务执行实例ID")
    private String taskInstanceId;

    /** 任务ID */
    @Excel(name = "任务ID")
    @ApiModelProperty("任务ID")
    private String taskId;

    /** 任务名称（关联字段） */
    @Excel(name = "任务名称")
    @ApiModelProperty("任务名称")
    private String taskName;

    /** 机器人ID */
    @Excel(name = "机器人ID")
    @ApiModelProperty("机器人ID")
    private String robotId;

    /** 机器人名称（关联字段） */
    @Excel(name = "机器人名称")
    @ApiModelProperty("机器人名称")
    private String robotName;

    /** 告警级别 */
    @Excel(name = "告警级别")
    @ApiModelProperty("告警级别(1提示 2警告 3严重)")
    private String alarmLevel;

    /** 告警类型 */
    @Excel(name = "告警类型")
    @ApiModelProperty("告警类型(1设备异常 2环境异常 3任务异常 4通信异常)")
    private String alarmType;

    /** 告警标题 */
    @Excel(name = "告警标题")
    @ApiModelProperty("告警标题")
    private String alarmTitle;

    /** 告警内容 */
    @Excel(name = "告警内容")
    @ApiModelProperty("告警内容")
    private String alarmContent;

    /** 告警位置 */
    @Excel(name = "告警位置")
    @ApiModelProperty("告警位置")
    private String alarmLocation;

    /** 告警时间 */
    @Excel(name = "告警时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("告警时间")
    private Date alarmTime;

    /** 处理状态 */
    @Excel(name = "处理状态")
    @ApiModelProperty("处理状态(0未处理 1处理中 2已处理 3已忽略)")
    private String handleStatus;

    /** 处理人 */
    @Excel(name = "处理人")
    @ApiModelProperty("处理人")
    private String handler;

    /** 处理时间 */
    @Excel(name = "处理时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("处理时间")
    private Date handleTime;

    /** 处理说明 */
    @Excel(name = "处理说明")
    @ApiModelProperty("处理说明")
    private String handleRemark;

    /** 图片证据 */
    @Excel(name = "图片证据")
    @ApiModelProperty("图片证据")
    private String evidenceImage;

    /** 创建人昵称 */
    @Excel(name = "创建人昵称")
    @ApiModelProperty("创建人昵称")
    private String createByName;

    /** 修改人昵称  */
    @Excel(name = "修改人昵称")
    @ApiModelProperty("修改人昵称")
    private String updateByName;
}
