package com.sptg.estate.api.entity;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;

/**
 * title: NoticePushDeviceDetails
 * package: com.sptg.estate.api.entity
 * description: 公告发布详细
 *
 *                
 *                
 */
@Setter
@Getter
@TableName(value = "estate_notice_push")
@JsonIgnoreProperties(ignoreUnknown = true)
public class NoticePush implements java.io.Serializable {

    /**
     * 主键
     */
    @TableId(value = "l_id",type = IdType.AUTO)
    private Long id;

    /**
     * 公告关联id
     */
    @TableField(value = "l_notice_id")
    private  Long  noticeId;

    /**
     *公告标题
     */
    @TableField(value = "s_notice_title")
    private  String  noticeTitle;

    /**
     * 公告内容
     */
    @TableField(value = "s_notice_content")
    private  String  noticeContent;

    /**
     * 公告开始时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @TableField(value = "t_start_date")
    private Date startDate;

    /**
     * 公告结束时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @TableField(value = "t_end_date")
    private Date endDate;

    /**
     * 设备id
     */
    @TableField(value = "l_device_id")
    private Long  deviceId;

    /**
     * 设备名称
     */
    @TableField(value = "s_device_name")
    private String  deviceName;

    /**
     *设备序列号
     */
    @TableField(value = "s_device_serial_number")
    private String  deviceSerialNumber;

    /**
     * 设备位置
     */
    @TableField(value = "s_device_install_path")
    private String  deviceInstallPath;

    /**
     * 小区名称
     */
    @TableField(value = "s_residential_name")
    private String  residentialName;

    /**
     * 单元名称
     */
    @TableField(value = "s_unit_name")
    private String  unitName;

    /**
     * 发布时间
     */
    @TableField(value = "t_push_date")
    private Date  pushDate;

    /**
     * 发布目标渠道  {0设备 1app 2小程序} 可多选逗号分开
     */
    @TableField(value = "s_push_target")
    private  String  pushTarget;

    /**
     *发布状态{ -1：发布失败,0：待发布， 1：发布成功,3：已撤销 }
     */
    @TableField(value = "i_push_status")
    private  Integer  pushStatus;

    /**
     * 发布成功次数
     */
    @TableField(value = "l_push_success")
    private  Integer  pushSuccess;

    /**
     * 发布总次数
     */
    @TableField(value = "l_push_count")
    private  Long  pushCount;

    /**
     * 发布类型{ 1 ：按小区发布，2：按单元发布，3：按设备发布，4：按区域发布}
     */
    @TableField(value = "i_push_type")
    private  Integer  pushType;

    /**
     * 创建人id
     */
    @TableField(value = "l_create_account_id")
    private  Long  createAccountId;

    /**
     * 创建人登录名
     */
    @TableField(value = "s_create_account_name")
    private  String  createAccountName;

    /**
     * 备注
     */
    @TableField(value = "s_remark")
    private  String  remark;

    /**
     *所属机构Id
     */
    @TableField(value = "l_org_id")
    private Long orgId;

    /**
     * 根机构Id
     */
    @TableField(value = "l_root_org_id")
    private Long rootOrgId;

    /**
     * 存储位置
     */
    @TableField(value = "s_org_position")
    private String orgPosition;

    /**
     * 删除标记：{ -1：已删除，0：正常 }
     */
    @TableField(value = "i_status")
    private Integer status;

    /**
     * 创建时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @TableField(value = "t_create_date")
    private Date createDate;

    /*--------------------------------------------------------------------------------------------------------------*/

    /**
     * 公告关联
     */
    @TableField(exist = false)
    private Notice notice;
    /**
     * 根据发布通知的发布类型存贮对于的id，小区/单元/设备/标签 Id
     */
    @TableField(exist = false)
    private Long[] fkIds;
    /**
     * 公告发布的小区/单元/设备信息
     */
    @TableField(exist = false)
    private List<NoticePushDetails> noticePushDetailsList;
    /**
     * 公告图片
     */
    @TableField(exist = false)
    private List<NoticePushImg> noticePushImgList;

}
