package com.ruoyi.web.modules.video.domain;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 畜牧监控点位实体，对应表 {@code biz_livestock_monitor}。
 * <p>
 * 业务键为 {@code monitorId}（第三方 cameraId），同步与手工维护共用。
 * {@code ownerTypeName}、{@code videoSourceName} 为查询时填充的展示字段，不落库。
 * </p>
 *
 * @see com.ruoyi.web.modules.video.support.LivestockMonitorRules
 */
public class BizLivestockMonitor extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /**
     * 摄像头 ID，对应第三方 {@code cameraId}，字符串存储。
     * 同步 upsert 匹配键，手工新增时必填，最长 32 字符。
     */
    @NotBlank(message = "摄像头ID不能为空")
    @Size(max = 32, message = "摄像头ID不能超过32个字符")
    private String monitorId;

    /** 监控名称，1～10 字符，列表展示与筛选用 */
    @NotBlank(message = "监控名称不能为空")
    @Size(min = 1, max = 10, message = "监控名称长度为1到10个字符")
    private String monitorName;

    /**
     * 所属主体类型：1=养殖主体（{@code biz_pasture}），2=交易市场（{@code biz_trade_market}）。
     * 可选；与 {@code ownerId} 成对出现。
     */
    private Integer ownerType;

    /** 主体类型中文名，查询填充，非库字段 */
    private String ownerTypeName;

    /** 所属主体主键，与 {@code ownerType} 对应 */
    private Long ownerId;

    /** 主体名称冗余，便于列表展示；同步时由 farmName 匹配牧场或保留文本 */
    private String ownerName;

    /** 圈舍名称，同步自第三方 {@code enclosureName}，可选 */
    @Size(max = 64, message = "圈舍名称不能超过64个字符")
    private String enclosureName;

    /** 安装位置，本地维护字段，同步更新时不覆盖 */
    @Size(max = 10, message = "安装位置长度不能超过10个字符")
    private String installLocation;

    /**
     * 视频来源存库值：{@code wvp} / {@code ys7} / {@code url}。
     * 决定前端播放器选型。
     */
    @NotBlank(message = "视频来源不能为空")
    @Size(max = 32, message = "视频来源不能超过32个字符")
    private String videoSource;

    /** 视频来源中文名，查询填充，非库字段 */
    private String videoSourceName;

    /** 删除标记：0 正常，2 逻辑删除 */
    private String delFlag;

    public Long getId()
    {
        return id;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public String getMonitorId()
    {
        return monitorId;
    }

    public void setMonitorId(String monitorId)
    {
        this.monitorId = monitorId;
    }

    public String getMonitorName()
    {
        return monitorName;
    }

    public void setMonitorName(String monitorName)
    {
        this.monitorName = monitorName;
    }

    public Integer getOwnerType()
    {
        return ownerType;
    }

    public void setOwnerType(Integer ownerType)
    {
        this.ownerType = ownerType;
    }

    public String getOwnerTypeName()
    {
        return ownerTypeName;
    }

    public void setOwnerTypeName(String ownerTypeName)
    {
        this.ownerTypeName = ownerTypeName;
    }

    public Long getOwnerId()
    {
        return ownerId;
    }

    public void setOwnerId(Long ownerId)
    {
        this.ownerId = ownerId;
    }

    public String getOwnerName()
    {
        return ownerName;
    }

    public void setOwnerName(String ownerName)
    {
        this.ownerName = ownerName;
    }

    public String getEnclosureName()
    {
        return enclosureName;
    }

    public void setEnclosureName(String enclosureName)
    {
        this.enclosureName = enclosureName;
    }

    public String getInstallLocation()
    {
        return installLocation;
    }

    public void setInstallLocation(String installLocation)
    {
        this.installLocation = installLocation;
    }

    public String getVideoSource()
    {
        return videoSource;
    }

    public void setVideoSource(String videoSource)
    {
        this.videoSource = videoSource;
    }

    public String getVideoSourceName()
    {
        return videoSourceName;
    }

    public void setVideoSourceName(String videoSourceName)
    {
        this.videoSourceName = videoSourceName;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }
}
