package com.ltgk.port.domain.entity;


import com.baomidou.mybatisplus.annotation.*;
import com.ltgk.common.core.page.BasePage;
import com.ltgk.common.validation.groups.Detail;
import com.ltgk.common.validation.groups.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;

/**
 * 警戒区信息表 (WarnAreaInfo)实体类
 *
 * @author Qi ChengBin
 * @date 2025-03-31
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "warn_area_info")
@ApiModel(value = "警戒区信息表对象", description = "WarnAreaInfo表")
public class WarnAreaInfo extends BasePage implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @NotBlank(message = "主键信息不能为空", groups = {Detail.class, Update.class})
    private String id;

    @ApiModelProperty(value = "警戒区编码")
    @TableField(value = "warn_area_code")
    private String warnAreaCode;

    @ApiModelProperty(value = "警戒区名称")
    @TableField(value = "warn_area_name")
    private String warnAreaName;

    @ApiModelProperty(value = "报警类型id")
    @TableField(value = "warn_area_type_id")
    private String warnAreaTypeId;

    @ApiModelProperty(value = "报警类型名称")
    @TableField(value = "warn_area_type_name")
    private String warnAreaTypeName;

    @ApiModelProperty(value = "用户范围：0个人 , 1所有用户")
    @TableField(value = "user_range")
    private Integer userRange;

    @ApiModelProperty(value = "是否特定时间生效，0否 1 是，如果是则需要输入生效开始时间和结束时间，否则为永久生效")
    @TableField(value = "is_bind_time")
    private Integer isBindTime;

    @ApiModelProperty(value = "生效日期【开始时间1-结束时间1;开始时间2-结束时间2】")
    @TableField(value = "effective_date")
    private String effectiveDate;

    @ApiModelProperty(value = "区域类型；0-面，1-线，2-圆")
    @TableField(value = "type")
    private Integer type;

    @ApiModelProperty(value = "警戒区范围，经纬度组合，例：124,39.55;123.3333333,38.93333333")
    @TableField(value = "points")
    private String points;

    @ApiModelProperty(value = "填充色")
    @TableField(value = "fill_color")
    private String fillColor;

    @ApiModelProperty(value = "透明度")
    @TableField(value = "diaphaneity")
    private String diaphaneity;

    @ApiModelProperty(value = "线条颜色")
    @TableField(value = "line_color")
    private String lineColor;

    @ApiModelProperty(value = "线框线宽")
    @TableField(value = "line_width")
    private String lineWidth;

    @ApiModelProperty(value = "状态：1正常，0停用")
    @TableField(value = "status")
    private Integer status;

    @ApiModelProperty(value = "是否发送预警短信；0-否，1-是")
    @TableField(value = "be_send_alert_message")
    private Integer beSendAlertMessage;

    @ApiModelProperty(value = "预警信息")
    @TableField(value = "alert_message")
    private String alertMessage;

    @ApiModelProperty(value = "是否发送警告短信；0-否，1-是")
    @TableField(value = "be_send_warn_message")
    private Integer beSendWarnMessage;

    @ApiModelProperty(value = "警告信息")
    @TableField(value = "warn_message")
    private String warnMessage;

    @ApiModelProperty(value = "停留时长,单位分钟")
    @TableField(value = "stay_time")
    private Integer stayTime;

    @ApiModelProperty(value = "类型  0: 警戒区 1：养殖区 2:事故多发海域")
    @TableField(value = "area_type")
    private Integer areaType;

    @ApiModelProperty(value = "是否定时任务修改生效日期【0-否，1-是】")
    @TableField(value = "be_timing_edit")
    private Integer beTimingEdit;

    @ApiModelProperty(value = "删除标识")
    @TableField(value = "del_flag")
    @TableLogic(delval = "1", value = "0")
    private Integer delFlag;

    @ApiModelProperty(value = "行政区域编码")
    @TableField(value = "area_code")
    private String areaCode;

    @ApiModelProperty(value = "行政区域名称")
    @TableField(value = "area_name")
    private String areaName;

    @ApiModelProperty(value = "创建者")
    @TableField(value = "create_by")
    private String createBy;

    @ApiModelProperty(value = "创建时间")
    @TableField(value = "create_at")
    private Date createAt;

    @ApiModelProperty(value = "更新者")
    @TableField(value = "update_by")
    private String updateBy;

    @ApiModelProperty(value = "更新时间")
    @TableField(value = "update_at")
    private Date updateAt;

    @ApiModelProperty(value = "备注")
    @TableField(value = "remark")
    private String remark;

    @ApiModelProperty(value = "是否显示； 0 - 不显示 ， 1 - 显示")
    @TableField(value = "be_show")
    private Integer beShow;

    @ApiModelProperty(value = "开始时间")
    @TableField(exist = false)
    private String startTime;

    @ApiModelProperty(value = "结束时间")
    @TableField(exist = false)
    private String endTime;

    @ApiModelProperty(value = "坐标数")
    @TableField(exist = false)
    private Integer coordinateNum;
}

