package com.sptg.device.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: TimeStrategyPushTask
 * package: com.sptg.device.api.entity
 * description: 时间策略发布
 */
@Setter
@Getter
@TableName(value = "time_strategy_push_task")
@JsonIgnoreProperties(ignoreUnknown = true)
public class TimeStrategyPushTask implements java.io.Serializable {
    /**
     * 主键
     */
    @TableId(value = "l_id",type = IdType.AUTO)
    private Long id;

    /**
     * 策略名称
     */
    @TableField(value="s_strategy_name")
    private String strategyName;

    /**
     * 策略类型：{ 1：工作日，2：范围 }
     */
    @TableField(value="i_strategy_type")
    private Integer strategyType;

    /**
     * 周1~周7，中间用“,”分割
     */
    @TableField(value="s_working_day")
    private String workingDay;

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

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

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


    /**
     * 发布状态{ -1：发布失败，1：未发布，2：发布成功 }
     */
    @TableField(value = "i_push_status")
    private Integer pushStatus;

    /**
     * 预计发布时间
     */
    @TableField(value = "t_estimate_push_time")
    private Date estimatePushTime;

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

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

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

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

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

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

    /**
     * 创建人名称
     */
    @TableField(value = "l_create_account_name")
    private String createAccountName;

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

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

    /**
     * 外键名称列表 { 按小区发布，按单元发布，按设备发布，按标签发布 }
     */
    @TableField(exist = false)
    private List<String> fkNameList;

    /**
     * 时间策略详细
     */
    @TableField(exist = false)
    private List<TimeStrategyTaskConf> timeStrategyTaskConfList;
}
