package cn.iocoder.yudao.module.pms.controller.admin.yanfan.sip.device.channel.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - yf监控设备通道信息新增/修改 Request VO")
@Data
public class YfSipDeviceChannelSaveReqVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24531")
    private Long id;

    @Schema(description = "租户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @NotEmpty(message = "租户名称不能为空")
    private String tenantName;

    @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4664")
    @NotNull(message = "产品ID不能为空")
    private Long productId;

    @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @NotEmpty(message = "产品名称不能为空")
    private String productName;

    @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16646")
    @NotNull(message = "产品ID不能为空")
    private Long userId;

    @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @NotEmpty(message = "产品名称不能为空")
    private String userName;

    @Schema(description = "设备SipID", requiredMode = Schema.RequiredMode.REQUIRED, example = "761")
    private String deviceSipId;

    @Schema(description = "通道SipID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29445")
    @NotEmpty(message = "通道SipID不能为空")
    private String channelSipId;

    @Schema(description = "通道名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @NotEmpty(message = "通道名称不能为空")
    private String channelName;

    @Schema(description = "注册时间")
    private LocalDateTime registerTime;

    @Schema(description = "设备类型", example = "2")
    private String deviceType;

    @Schema(description = "通道类型", example = "1")
    private String channelType;

    @Schema(description = "城市编码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "城市编码不能为空")
    private String cityCode;

    @Schema(description = "行政区域", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "行政区域不能为空")
    private String civilCode;

    @Schema(description = "厂商名称", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "厂商名称不能为空")
    private String manufacture;

    @Schema(description = "产品型号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "产品型号不能为空")
    private String model;

    @Schema(description = "设备归属", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "设备归属不能为空")
    private String owner;

    @Schema(description = "警区", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "警区不能为空")
    private String block;

    @Schema(description = "安装地址", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "安装地址不能为空")
    private String address;

    @Schema(description = "父级id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27805")
    @NotEmpty(message = "父级id不能为空")
    private String parentId;

    @Schema(description = "设备入网IP")
    private String ipAddress;

    @Schema(description = "设备接入端口号")
    private Long port;

    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "密码不能为空")
    private String password;

    @Schema(description = "PTZ类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "PTZ类型不能为空")
    private Long ptzType;

    @Schema(description = "PTZ类型描述字符串", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "PTZ类型描述字符串不能为空")
    private String ptzTypeText;

    @Schema(description = "设备状态（1-未激活，2-禁用，3-在线，4-离线）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "设备状态（1-未激活，2-禁用，3-在线，4-离线）不能为空")
    private Integer status;

    @Schema(description = "设备经度")
    private Double longitude;

    @Schema(description = "设备纬度")
    private Double latitude;

    @Schema(description = "流媒体ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20881")
    @NotEmpty(message = "流媒体ID不能为空")
    private String streamId;

    @Schema(description = "子设备数", requiredMode = Schema.RequiredMode.REQUIRED, example = "8801")
    @NotNull(message = "子设备数不能为空")
    private Long subCount;

    @Schema(description = "是否有子设备（1-有, 0-没有）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否有子设备（1-有, 0-没有）不能为空")
    private Integer parental;

    @Schema(description = "是否含有音频（1-有, 0-没有）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否含有音频（1-有, 0-没有）不能为空")
    private Integer hasAudio;

    @Schema(description = "删除标志（0代表存在 2代表删除）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "删除标志（0代表存在 2代表删除）不能为空")
    private String delFlag;

    @Schema(description = "创建者", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "创建者不能为空")
    private String createBy;

    @Schema(description = "更新者")
    private String updateBy;

    @Schema(description = "备注", example = "随便")
    private String remark;

}
