package cn.com.countrygarden.bi.main.model.dup;

import cn.com.countrygarden.bi.main.util.DateDeserializer;
import cn.com.countrygarden.bi.main.util.DateSerializer;
import cn.com.countrygarden.bi.main.util.DateTimeDeserializer;
import cn.com.countrygarden.bi.main.util.DateTimeSerializer;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.util.Date;
import javax.persistence.*;

@Table(name = "fenghuang_buoy_data")
public class BuoyData {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    /**
     * 区域代码
     */
    @Column(name = "organ_code")
    private String organCode;

    /**
     * 区域名
     */
    @Column(name = "organ_name")
    private String organName;

    /**
     * 项目ID
     */
    @Column(name = "comm_id")
    private String commId;

    /**
     * 项目名
     */
    @Column(name = "comm_name")
    private String commName;

    @Column(name = "visitor_num")
    private Long visitorNum;

    /**
     * 常住业主识别率
     */
    @Column(name = "recognition_percentage")
    private Double recognitionPercentage;

    /**
     * 传统通传放行
     */
    @Column(name = "tradition_visitors")
    private Long traditionVisitors;

    /**
     * 管家提前预约
     */
    @Column(name = "appointment_visitors")
    private Long appointmentVisitors;

    /**
     * 智能化终端
     */
    @Column(name = "appointment_by_device")
    private Long appointmentByDevice;

    /**
     * 其他方式门岗
     */
    @Column(name = "other_visitors")
    private Long otherVisitors;

    /**
     * 业户拜访量
     */
    @Column(name = "visit_customer_num")
    private Long visitCustomerNum;

    /**
     * 回访满意度
     */
    @Column(name = "visit_satisfaction")
    private Double visitSatisfaction;

    /**
     * 状态（unfill 未上报,completed已完成）
     */
    private String status;

    /**
     * 开始日期（周一）
     */
    @JsonSerialize(using = DateSerializer.class)
    @JsonDeserialize(using = DateDeserializer.class)
    @Column(name = "begin_date")
    private Date beginDate;

    /**
     * 结束日期（周日）
     */
    @JsonSerialize(using = DateSerializer.class)
    @JsonDeserialize(using = DateDeserializer.class)
    @Column(name = "end_date")
    private Date endDate;

    @JsonSerialize(using = DateTimeSerializer.class)
    @JsonDeserialize(using = DateTimeDeserializer.class)
    @Column(name = "created_date")
    private Date createdDate;

    @Column(name = "created_by")
    private String createdBy;

    @JsonSerialize(using = DateTimeSerializer.class)
    @JsonDeserialize(using = DateTimeDeserializer.class)
    @Column(name = "updated_date")
    private Date updatedDate;

    @Column(name = "updated_by")
    private String updatedBy;

    /**
     * @return id
     */
    public Integer getId() {
        return id;
    }

    /**
     * @param id
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * 获取区域代码
     *
     * @return organ_code - 区域代码
     */
    public String getOrganCode() {
        return organCode;
    }

    /**
     * 设置区域代码
     *
     * @param organCode 区域代码
     */
    public void setOrganCode(String organCode) {
        this.organCode = organCode == null ? null : organCode.trim();
    }

    /**
     * 获取区域名
     *
     * @return organ_name - 区域名
     */
    public String getOrganName() {
        return organName;
    }

    /**
     * 设置区域名
     *
     * @param organName 区域名
     */
    public void setOrganName(String organName) {
        this.organName = organName == null ? null : organName.trim();
    }

    /**
     * 获取项目ID
     *
     * @return comm_id - 项目ID
     */
    public String getCommId() {
        return commId;
    }

    /**
     * 设置项目ID
     *
     * @param commId 项目ID
     */
    public void setCommId(String commId) {
        this.commId = commId == null ? null : commId.trim();
    }

    /**
     * 获取项目名
     *
     * @return comm_name - 项目名
     */
    public String getCommName() {
        return commName;
    }

    /**
     * 设置项目名
     *
     * @param commName 项目名
     */
    public void setCommName(String commName) {
        this.commName = commName == null ? null : commName.trim();
    }

    /**
     * @return visitor_num
     */
    public Long getVisitorNum() {
        return visitorNum;
    }

    /**
     * @param visitorNum
     */
    public void setVisitorNum(Long visitorNum) {
        this.visitorNum = visitorNum;
    }

    /**
     * 获取常住业主识别率
     *
     * @return recognition_percentage - 常住业主识别率
     */
    public Double getRecognitionPercentage() {
        return recognitionPercentage;
    }

    /**
     * 设置常住业主识别率
     *
     * @param recognitionPercentage 常住业主识别率
     */
    public void setRecognitionPercentage(Double recognitionPercentage) {
        this.recognitionPercentage = recognitionPercentage;
    }

    /**
     * 获取传统通传放行
     *
     * @return tradition_visitors - 传统通传放行
     */
    public Long getTraditionVisitors() {
        return traditionVisitors;
    }

    /**
     * 设置传统通传放行
     *
     * @param traditionVisitors 传统通传放行
     */
    public void setTraditionVisitors(Long traditionVisitors) {
        this.traditionVisitors = traditionVisitors;
    }

    /**
     * 获取管家提前预约
     *
     * @return appointment_visitors - 管家提前预约
     */
    public Long getAppointmentVisitors() {
        return appointmentVisitors;
    }

    /**
     * 设置管家提前预约
     *
     * @param appointmentVisitors 管家提前预约
     */
    public void setAppointmentVisitors(Long appointmentVisitors) {
        this.appointmentVisitors = appointmentVisitors;
    }

    /**
     * 获取智能化终端
     *
     * @return appointment_by_device - 智能化终端
     */
    public Long getAppointmentByDevice() {
        return appointmentByDevice;
    }

    /**
     * 设置智能化终端
     *
     * @param appointmentByDevice 智能化终端
     */
    public void setAppointmentByDevice(Long appointmentByDevice) {
        this.appointmentByDevice = appointmentByDevice;
    }

    /**
     * 获取其他方式门岗
     *
     * @return other_visitors - 其他方式门岗
     */
    public Long getOtherVisitors() {
        return otherVisitors;
    }

    /**
     * 设置其他方式门岗
     *
     * @param otherVisitors 其他方式门岗
     */
    public void setOtherVisitors(Long otherVisitors) {
        this.otherVisitors = otherVisitors;
    }

    /**
     * 获取业户拜访量
     *
     * @return visit_customer_num - 业户拜访量
     */
    public Long getVisitCustomerNum() {
        return visitCustomerNum;
    }

    /**
     * 设置业户拜访量
     *
     * @param visitCustomerNum 业户拜访量
     */
    public void setVisitCustomerNum(Long visitCustomerNum) {
        this.visitCustomerNum = visitCustomerNum;
    }

    /**
     * 获取回访满意度
     *
     * @return visit_satisfaction - 回访满意度
     */
    public Double getVisitSatisfaction() {
        return visitSatisfaction;
    }

    /**
     * 设置回访满意度
     *
     * @param visitSatisfaction 回访满意度
     */
    public void setVisitSatisfaction(Double visitSatisfaction) {
        this.visitSatisfaction = visitSatisfaction;
    }

    /**
     * 获取状态（unfill 未上报,completed已完成）
     *
     * @return status - 状态（unfill 未上报,completed已完成）
     */
    public String getStatus() {
        return status;
    }

    /**
     * 设置状态（unfill 未上报,completed已完成）
     *
     * @param status 状态（unfill 未上报,completed已完成）
     */
    public void setStatus(String status) {
        this.status = status == null ? null : status.trim();
    }

    /**
     * 获取开始日期（周一）
     *
     * @return begin_date - 开始日期（周一）
     */
    public Date getBeginDate() {
        return beginDate;
    }

    /**
     * 设置开始日期（周一）
     *
     * @param beginDate 开始日期（周一）
     */
    public void setBeginDate(Date beginDate) {
        this.beginDate = beginDate;
    }

    /**
     * 获取结束日期（周日）
     *
     * @return end_date - 结束日期（周日）
     */
    public Date getEndDate() {
        return endDate;
    }

    /**
     * 设置结束日期（周日）
     *
     * @param endDate 结束日期（周日）
     */
    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    /**
     * @return created_date
     */
    public Date getCreatedDate() {
        return createdDate;
    }

    /**
     * @param createdDate
     */
    public void setCreatedDate(Date createdDate) {
        this.createdDate = createdDate;
    }

    /**
     * @return created_by
     */
    public String getCreatedBy() {
        return createdBy;
    }

    /**
     * @param createdBy
     */
    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy == null ? null : createdBy.trim();
    }

    /**
     * @return updated_date
     */
    public Date getUpdatedDate() {
        return updatedDate;
    }

    /**
     * @param updatedDate
     */
    public void setUpdatedDate(Date updatedDate) {
        this.updatedDate = updatedDate;
    }

    /**
     * @return updated_by
     */
    public String getUpdatedBy() {
        return updatedBy;
    }

    /**
     * @param updatedBy
     */
    public void setUpdatedBy(String updatedBy) {
        this.updatedBy = updatedBy == null ? null : updatedBy.trim();
    }
}