package com.wdkl.ncs.android.middleware.model.dos;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.wdkl.ncs.android.middleware.model.annotation.Column;
import com.wdkl.ncs.android.middleware.model.annotation.Id;
import com.wdkl.ncs.android.middleware.model.annotation.PrimaryKeyField;
import com.wdkl.ncs.android.middleware.model.annotation.Table;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

@Table(name = "ncs_interaction")
@ApiModel
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class InteractionDO implements Serializable {

    /**
     * id
     */
    @Column(name = "id")
    @ApiModelProperty(value = "id", required = false)
    @Id(name = "id")
    private Integer id;
    /**
     * union_id,线下线上同步ID
     */
    @Column(name = "union_id")
    @ApiModelProperty(value = "union_id,线下线上同步ID", required = false)
    private String unionId;
    /**
     * 创建时间
     */
    @Column(name = "create_date")
    @ApiModelProperty(value = "创建时间", required = false)
    private Long createDate;
    /**
     * 科室Id
     */
    @Column(name = "part_id")
    @ApiModelProperty(value = "科室Id", required = false)
    private Integer partId;
    /**
     * 交互类型(1:语音通话,2:视频通话,3:卫生间紧急呼叫,4:语音留言,5:文本消息,6:按键事件)
     */
    @Column(name = "action_type")
    @ApiModelProperty(value = "交互类型(1:语音通话,2:视频通话,3:卫生间紧急呼叫,4:语音留言,5:文本消息,6:按键事件)", required = false)
    private String actionType;
    /**
     * SUCCESS、FAILED
     */
    @Column(name = "action_result")
    @ApiModelProperty(value = "0失败，1成功", required = false)
    private Integer actionResult;
    /**
     * 交互发起设备Id
     */
    @Column(name = "from_device_id")
    @ApiModelProperty(value = "交互发起设备Id", required = false)
    private Integer fromDeviceId;
    /**
     * 交互对象设备Id
     */
    @Column(name = "to_device_id")
    @ApiModelProperty(value = "交互对象设备Id", required = false)
    private Integer toDeviceId;
    /**
     * 发起设备所在空间结构
     */
    @Column(name = "from_device_frame_id")
    @ApiModelProperty(value = "发起设备所在空间结构", required = false)
    private Integer fromDeviceFrameId;
    /**
     * 交互对象所在空间结果
     */
    @Column(name = "to_device_frame_id")
    @ApiModelProperty(value = "交互对象所在空间结果", required = false)
    private Integer toDeviceFrameId;
    /**
     * 交互发起设备使用者member_id
     */
    @Column(name = "from_device_member_id")
    @ApiModelProperty(value = "交互发起设备使用者member_id", required = false)
    private Integer fromDeviceMemberId;
    /**
     * 交互对象设备使用者member_id
     */
    @Column(name = "to_device_member_id")
    @ApiModelProperty(value = "交互对象设备使用者member_id", required = false)
    private Integer toDeviceMemberId;
    /**
     * 是否为呼叫系统内部交互(如果是外部电话呼叫为true,否则为false)
     */
    @Column(name = "outerior_action")
    @ApiModelProperty(value = "是否为呼叫系统内部交互(如果是外部电话呼叫为true,否则为false)", required = false)
    private Boolean outeriorAction;
    /**
     * 外部呼叫时的来电号码(根据此号码查询member,并设置from_device信息)
     */
    @Column(name = "outerior_action_number")
    @ApiModelProperty(value = "外部呼叫时的来电号码(根据此号码查询member,并设置from_device信息)", required = false)
    private String outeriorActionNumber;
    /**
     * 外部交互者的用户id
     */
    @Column(name = "outerior_action_member_id")
    @ApiModelProperty(value = "外部交互者的用户id", required = false)
    private Long outeriorActionMemberId;
    /**
     * 备注Id
     */
    @Column(name = "remark_id")
    @ApiModelProperty(value = "备注Id", required = false)
    private Integer remarkId;
    /**
     * 交互开始时间(通话时指通话接通时间,与create_time相同)
     */
    @Column(name = "action_start")
    @ApiModelProperty(value = "交互开始时间(通话时指通话接通时间,与create_time相同)", required = false)
    private Long actionStart;
    /**
     * 应答时间
     */
    @Column(name = "action_accept")
    @ApiModelProperty(value = "应答时间", required = false)
    private Long actionAccept;
    /**
     * 交互结束时间(通话时指通话挂断时间,通话挂断后要更新此字段)。事件响应时间、语音已读时间
     */
    @Column(name = "action_end")
    @ApiModelProperty(value = "交互结束时间(通话时指通话挂断时间,通话挂断后要更新此字段)。事件响应时间、语音已读时间", required = false)
    private Long actionEnd;
    /**
     * 交互数据(类型1,2,3为空)(类型4为音频文件地址)(5为文本内容)(类型6为具体按键类型)
     */
    @Column(name = "data")
    @ApiModelProperty(value = "交互数据(类型1,2,3为空)(类型4为音频文件地址)(5为文本内容)(类型6为具体按键类型)", required = false)
    private String data;
    /**
     * 交互错误代码
     */
    @Column(name = "error_code")
    @ApiModelProperty(value = "交互错误代码", required = false)
    private String errorCode;
    /**
     * 交互错误描述
     */
    @Column(name = "error_message")
    @ApiModelProperty(value = "交互错误描述", required = false)
    private String errorMessage;

    @Column(name = "action_direction_type")
    @ApiModelProperty(value = "交互方向类型(1:分机到主机、腕表、医生机,2:主机、腕表、医生机到分机,3主机、腕表、医生机之间互通,4:分机到分机)",required = false)
    private Integer actionDirectionType;


    @PrimaryKeyField
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }


    public String getUnionId() {
        return unionId;
    }

    public void setUnionId(String unionId) {
        this.unionId = unionId;
    }


    public Long getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Long createDate) {
        this.createDate = createDate;
    }


    public Integer getPartId() {
        return partId;
    }

    public void setPartId(Integer partId) {
        this.partId = partId;
    }


    public String getActionType() {
        return actionType;
    }

    public void setActionType(String actionType) {
        this.actionType = actionType;
    }


    public Integer getActionResult() {
        return actionResult;
    }

    public void setActionResult(Integer actionResult) {
        this.actionResult = actionResult;
    }


    public Integer getFromDeviceId() {
        return fromDeviceId;
    }

    public void setFromDeviceId(Integer fromDeviceId) {
        this.fromDeviceId = fromDeviceId;
    }


    public Integer getToDeviceId() {
        return toDeviceId;
    }

    public void setToDeviceId(Integer toDeviceId) {
        this.toDeviceId = toDeviceId;
    }


    public Integer getFromDeviceFrameId() {
        return fromDeviceFrameId;
    }

    public void setFromDeviceFrameId(Integer fromDeviceFrameId) {
        this.fromDeviceFrameId = fromDeviceFrameId;
    }


    public Integer getToDeviceFrameId() {
        return toDeviceFrameId;
    }

    public void setToDeviceFrameId(Integer toDeviceFrameId) {
        this.toDeviceFrameId = toDeviceFrameId;
    }


    public Integer getFromDeviceMemberId() {
        return fromDeviceMemberId;
    }

    public void setFromDeviceMemberId(Integer fromDeviceMemberId) {
        this.fromDeviceMemberId = fromDeviceMemberId;
    }


    public Integer getToDeviceMemberId() {
        return toDeviceMemberId;
    }

    public void setToDeviceMemberId(Integer toDeviceMemberId) {
        this.toDeviceMemberId = toDeviceMemberId;
    }


    public Boolean getOuteriorAction() {
        return outeriorAction;
    }

    public void setOuteriorAction(Boolean outeriorAction) {
        this.outeriorAction = outeriorAction;
    }


    public String getOuteriorActionNumber() {
        return outeriorActionNumber;
    }

    public void setOuteriorActionNumber(String outeriorActionNumber) {
        this.outeriorActionNumber = outeriorActionNumber;
    }


    public Long getOuteriorActionMemberId() {
        return outeriorActionMemberId;
    }

    public void setOuteriorActionMemberId(Long outeriorActionMemberId) {
        this.outeriorActionMemberId = outeriorActionMemberId;
    }


    public Integer getRemarkId() {
        return remarkId;
    }

    public void setRemarkId(Integer remarkId) {
        this.remarkId = remarkId;
    }


    public Long getActionStart() {
        return actionStart;
    }

    public void setActionStart(Long actionStart) {
        this.actionStart = actionStart;
    }


    public Long getActionAccept() {
        return actionAccept;
    }

    public void setActionAccept(Long actionAccept) {
        this.actionAccept = actionAccept;
    }


    public Long getActionEnd() {
        return actionEnd;
    }

    public void setActionEnd(Long actionEnd) {
        this.actionEnd = actionEnd;
    }


    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }


    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }


    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    public Integer getActionDirectionType() {
        return actionDirectionType;
    }

    public void setActionDirectionType(Integer actionDirectionType) {
        this.actionDirectionType = actionDirectionType;
    }
}
