package com.chinaweal.aiccs.aiccs.market.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 片区设置记录
 * </p>
 *
 * @author <a href="https://blog.lroyia.top">lroyia</a>
 * @since 2021-04-20
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(schema = "aiccs", value = "area_slice")
public class AreaSlice extends Model<AreaSlice> {

    private static final long serialVersionUID=1L;

    /**
     * 数据主键
     */
    @TableId(value = "slice_id", type = IdType.ASSIGN_UUID)
    private String sliceId;

    /**
     * 片区所属机构编码（如：440100）
     */
    @TableField("org_number")
    private String orgNumber;

    /**
     * 片区名称
     */
    @TableField("slice_name")
    private String sliceName;

    /**
     * 片区路段匹配字段
     */
    @TableField("slice_addr_key")
    private String sliceAddrKey;

    /**
     * 片区路段完整名称
     */
    @TableField("slice_addr")
    private String sliceAddr;

    /**
     * 主要监督人id
     */
    @TableField("supervisor_id")
    private String supervisorId;

    /**
     * 主要监督人名称
     */
    @TableField(exist = false)
    private String supervisorName;

    /**
     * 顶岗监督人id
     */
    @TableField("sub_supervisor_id")
    private String subSupervisorId;

    /**
     * 顶岗监督人id
     */
    @TableField(exist = false)
    private String subSupervisorName;

    /**
     * 说明备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 设置时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;

    /**
     * 创建人id
     */
    @TableField("creator_id")
    private String creatorId;

    /**
     * 是否启用（0停用，1启用）
     */
    @TableField("state")
    private String state;

    /**
     * 是否删除（0否，1是）
     */
    @TableField("is_deleted")
    private String isDeleted;

    /**
     * 认领状态
     * 0，未认领，1、队列中，2，认领中
     */
    @TableField(exist = false)
    private String claimState;

    /**
     * 监管所代码
     */
    @TableField(exist = false)
    private String sparentCode;

    /**
     * 是否已经初始化
     */
    @TableField(exist = false)
    private String isInit;

    /**
     * 是否启动顶岗
     */
    @TableField("sub_use")
    private String subUse;

    /**
     * 顶岗开始时间
     */
    @TableField("sub_start_time")
    @JsonSerialize(using = LocalDateTimeStringSerializer.class)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime subStartTime;

    /**
     * 顶岗开始时间
     */
    @TableField("sub_end_time")
    @JsonSerialize(using = LocalDateTimeStringSerializer.class)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime subEndTime;

    /**
     * 片区类型（0区局公共片区，1所级公共片区，2详细片区）
     */
    @TableField("slice_type")
    private String sliceType;

    /**
     * 父片区id
     */
    @TableField("p_slice_id")
    private String pSliceId;

    @Override
    protected Serializable pkVal() {
        return this.sliceId;
    }

}
