package com.usky.cdi.domain;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.TableField;

import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * <p>
 * 人防_工程表（人防工程基础信息及MQTT连接配置）
 * </p>
 *
 * @author fu
 * @since 2026-02-02
 */
@Data
@EqualsAndHashCode(callSuper = false)
//@TableName("cdi_defense_project")
public class CdiDefenseProject implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 人防_工程表主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 工程名称
     */
    @NotBlank(message = "工程名称不能为空")
    private String engineeringName;

    /**
     * 工程id
     */
    @NotNull(message = "工程id不能为空")
    private Long engineeringId;

    /**
     * 密码
     */
    @NotBlank(message = "密码不能为空")
    private String passwd;

    /**
     * 推送地址（带端口）
     */
    @NotBlank(message = "推送地址不能为空")
    private String pushAddress;

    /**
     * mqtt用户名
     */
    @NotBlank(message = "mqtt用户名不能为空")
    private String mqttUserName;

    /**
     * mqtt密码
     */
    @NotBlank(message = "mqtt密码不能为空")
    private String mqttPassword;

    /**
     * mqtt客户端id
     */
    @NotBlank(message = "mqtt客户端id不能为空")
    private String mqttClientId;

    /**
     * 基础数据MQTT消息主题
     */
    //@NotBlank(message = "基础数据MQTT消息主题不能为空")
    private String baseTopic;

    /**
     * 监测数据MQTT消息主题
     */
    //@NotBlank(message = "监测数据MQTT消息主题不能为空")
    //@TableField("iotInfo_topic")
    private String iotinfoTopic;

    /**
     * 告警数据MQTT消息主题
     */
    //@NotBlank(message = "告警数据MQTT消息主题不能为空")
    private String alarmTopic;

    /**
     * 创建者
     */
    private String createBy;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 是否启用（0：未启用，1：已启用）
     */
    @NotNull(message = "是否启用不能为空")
    private Integer isEnable;

    /**
     * 租户ID
     */
    @NotNull(message = "租户ID不能为空")
    private Integer tenantId;


}
