package com.xinelu.manage.domain.signpatientmanageroutenode;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.time.LocalTime;

/**
 * 签约患者管理任务路径节点对象 sign_patient_manage_route_node
 *
 * @author haown
 * @date 2024-03-18
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "签约患者管理任务路径节点对象", description = "sign_patient_manage_route_node")
public class SignPatientManageRouteNode extends BaseEntity {
	private static final long serialVersionUID=1L;

    /** 主键id */
    private Long id;

    /** 签约患者管理任务表id */
    @ApiModelProperty(value = "签约患者管理任务表id")
    @Excel(name = "签约患者管理任务表id")
    private Long manageRouteId;

    /** 路径名称（任务名称） */
    @ApiModelProperty(value = "路径名称")
    @Excel(name = "路径名称", readConverterExp = "任务名称")
    private String manageRouteName;

	/** 管理路径节点id */
	@ApiModelProperty(value = "管理路径节点id")
	@Excel(name = "管理路径节点id")
	private Long routeNodeId;

    /** 管理路径节点名称 */
    @ApiModelProperty(value = "管理路径节点名称")
    @Excel(name = "管理路径节点名称")
    private String routeNodeName;

    /** 任务执行类型（批量还是单个执行） */
    @ApiModelProperty(value = "任务执行类型（批量还是单个执行，'批量任务：BATCH_TASK,单个实时拔打任务：ACTUAL_TIME_TASK'）")
    @Excel(name = "任务执行类型（批量还是单个执行，'批量任务：BATCH_TASK,单个实时拔打任务：ACTUAL_TIME_TASK'）")
    private String taskExcuteType;

    /** 任务计划执行时间，格式：YYYY-MM-dd HH:mm:ss */
    @ApiModelProperty(value = "任务计划执行时间，格式：yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "任务计划执行时间，格式：yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime nodePlanTime;


    /** 管理路径节点时间，时间单位为：天 */
    @ApiModelProperty(value = "管理路径节点时间，时间单位为：天")
    @Excel(name = "管理路径节点时间，时间单位为：天")
    private Integer routeNodeDay;

    /** 任务类型（编号） */
    @ApiModelProperty(value = "任务类型（编号）")
    @Excel(name = "任务类型（编号）")
    private String taskType;

    /** 任务状态编号 */
    @ApiModelProperty(value = "任务状态编号")
    @Excel(name = "任务状态编号")
    private String taskStatus;

    /** 任务细分编号 */
    @ApiModelProperty(value = "任务细分编号")
    @Excel(name = "任务细分编号")
    private String taskSubdivision;

    /** 二级分类描述 */
    @ApiModelProperty(value = "二级分类描述")
    @Excel(name = "二级分类描述")
    private String secondClassifyDescribe;

    /** 执行时间，格式：HH:mm */
    @ApiModelProperty(value = "执行时间，格式：HH:mm")
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "执行时间，格式：HH:mm", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalTime executeTime;

    /** 电话推送标识，0：未开启，1：已开启 */
    @ApiModelProperty(value = "电话推送标识，0：未开启，1：已开启")
    @Excel(name = "电话推送标识，0：未开启，1：已开启")
    private Integer phonePushSign;

    /** 话术表 ID */
    @ApiModelProperty(value = "话术表 ID")
    @Excel(name = "话术表 ID")
    private Long scriptInfoId;

	/**
	 * 爱医声平台机器人ID
	 */
	@ApiModelProperty(value = "爱医声平台机器人ID")
	private String robotPublishId;

    /** 电话模板ID */
    @ApiModelProperty(value = "电话模板ID")
    @Excel(name = "电话模板ID")
    private String phoneTemplateId;

    /** 电话模板名称 */
    @ApiModelProperty(value = "电话模板名称")
    @Excel(name = "电话模板名称")
    private String phoneTemplateName;

    /** 电话内容（富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记） */
    @ApiModelProperty(value = "电话内容")
    @Excel(name = "电话内容", readConverterExp = "富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记")
    private String phoneNodeContent;

	/**
	 * 爱医声平台任务查询返回JSON
	 */
	@ApiModelProperty(value = "爱医声平台任务查询返回JSON")
	private String phoneResultJson;

    /** 电话重拨次数，重拨一次：REDIAL_ONCE，重拨二次：REDIAL_TWICE，不重播：NOT_REPLAY */
    @ApiModelProperty(value = "电话重拨次数，重拨一次：REDIAL_ONCE，重拨二次：REDIAL_TWICE，不重播：NOT_REPLAY")
    @Excel(name = "电话重拨次数，重拨一次：REDIAL_ONCE，重拨二次：REDIAL_TWICE，不重播：NOT_REPLAY")
    private String phoneRedialTimes;

    /** 电话时间间隔，单位为：分钟 */
    @ApiModelProperty(value = "电话时间间隔，单位为：分钟")
    @Excel(name = "电话时间间隔，单位为：分钟")
    private Integer phoneTimeInterval;

    /** 电话短信提醒，不发送短信：NOT_SEND_MESSAGE，未接通发短信：NOT_CONNECTED_SEND_MESSAGE，接通后发短信：CONNECTED_SEND_MESSAGE，所有人发短信：EVERYONE_SEND_MESSAGE */
    @ApiModelProperty(value = "电话短信提醒，不发送短信：NOT_SEND_MESSAGE，未接通发短信：NOT_CONNECTED_SEND_MESSAGE，接通后发短信：CONNECTED_SEND_MESSAGE，所有人发短信：EVERYONE_SEND_MESSAGE")
    @Excel(name = "电话短信提醒，不发送短信：NOT_SEND_MESSAGE，未接通发短信：NOT_CONNECTED_SEND_MESSAGE，接通后发短信：CONNECTED_SEND_MESSAGE，所有人发短信：EVERYONE_SEND_MESSAGE")
    private String phoneMessageRemind;

    /** 电话短信模板表id */
    @ApiModelProperty(value = "电话短信模板表id")
    @Excel(name = "电话短信模板表id")
    private Long phoneMessageTemplateId;

    /** 电话短信模板名称 */
    @ApiModelProperty(value = "电话短信模板名称")
    @Excel(name = "电话短信模板名称")
    private String phoneMessageTemplateName;

	/**
	 * 替换标签后的电话短信模板内容
	 */
	@ApiModelProperty(value = "替换标签后的电话短信模板内容")
	private String phoneMessageTemplateContent;

    /** 问卷表id */
    @ApiModelProperty(value = "问卷表id")
    @Excel(name = "问卷表id")
    private Long questionInfoId;

    /** 问卷模板名称 */
    @ApiModelProperty(value = "问卷模板名称")
    @Excel(name = "问卷模板名称")
    private String questionnaireName;

    /** 问卷模板内容（富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记） */
    @ApiModelProperty(value = "问卷模板内容")
    @Excel(name = "问卷模板内容", readConverterExp = "富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记")
    private String questionnaireContent;

    /** 问卷有效期，单位：天 */
    @ApiModelProperty(value = "问卷有效期，单位：天")
    @Excel(name = "问卷有效期，单位：天")
    private Integer questionExpirationDate;

    /** 宣教文章表id */
    @ApiModelProperty(value = "宣教文章表id")
    @Excel(name = "宣教文章表id")
    private Long propagandaInfoId;

    /** 宣教文章模板标题（宣教模板名称） */
    @ApiModelProperty(value = "宣教文章模板标题")
    @Excel(name = "宣教文章模板标题", readConverterExp = "宣=教模板名称")
    private String propagandaTitle;

    /** 宣教文章内容（富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记） */
    @ApiModelProperty(value = "宣教文章内容")
    @Excel(name = "宣教文章内容", readConverterExp = "富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记")
    private String propagandaContent;

    /** 短信推送标识，0：未开启，1：已开启 */
    @ApiModelProperty(value = "短信推送标识，0：未开启，1：已开启")
    @Excel(name = "短信推送标识，0：未开启，1：已开启")
    private Integer messagePushSign;

    /** 短信模板表id */
    @ApiModelProperty(value = "短信模板表id")
    @Excel(name = "短信模板表id")
    private Long messageTemplateId;

	/** 第三方短信模板编码 */
	@ApiModelProperty(value = "第三方短信模板编码")
	@Excel(name = "第三方短信模板编码")
	private String messageTemplateCode;

    /** 短信模板名称 */
    @ApiModelProperty(value = "短信模板名称")
    @Excel(name = "短信模板名称")
    private String messageTemplateName;

    /** 短信预览 */
    @ApiModelProperty(value = "短信预览")
    @Excel(name = "短信预览")
    private String messagePreview;

    /** 短信节点内容（富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记） */
    @ApiModelProperty(value = "短信节点内容")
    @Excel(name = "短信节点内容", readConverterExp = "富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记")
    private String messageNodeContent;

    /** 公众号推送标识，0：未开启，1：已开启 */
    @ApiModelProperty(value = "公众号推送标识，0：未开启，1：已开启")
    @Excel(name = "公众号推送标识，0：未开启，1：已开启")
    private Integer officialPushSign;

    /** 公众号模板表id */
    @ApiModelProperty(value = "公众号模板表id")
    @Excel(name = "公众号模板表id")
    private Long officialTemplateId;

	/** 公众号官方模板编码 */
	@ApiModelProperty(value = "公众号官方模板编码")
	@Excel(name = "公众号官方模板编码")
	private String officialTemplateCode;

    /** 公众号模板名称 */
    @ApiModelProperty(value = "公众号模板名称")
    @Excel(name = "公众号模板名称")
    private String officialTemplateName;

    /** 公众号提醒内容 */
    @ApiModelProperty(value = "公众号提醒内容")
    @Excel(name = "公众号提醒内容")
    private String officialRemindContent;

    /** 公众号节点内容（富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记） */
    @ApiModelProperty(value = "公众号节点内容")
    @Excel(name = "公众号节点内容", readConverterExp = "富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记")
    private String officialNodeContent;

    /** 小程序推送标识，0：未开启，1：已开启 */
    @ApiModelProperty(value = "小程序推送标识，0：未开启，1：已开启")
    @Excel(name = "小程序推送标识，0：未开启，1：已开启")
    private Integer appletPushSign;

    /** 小程序模板表id */
    @ApiModelProperty(value = "小程序模板表id")
    @Excel(name = "小程序模板表id")
    private Long appletTemplateId;

	/** 小程序模板编码（微信方） */
	@ApiModelProperty(value = "小程序模板编码（微信方）")
	@Excel(name = "小程序模板编码（微信方）")
	private String appletTemplateCode;

    /** 小程序模板名称 */
    @ApiModelProperty(value = "小程序模板名称")
    @Excel(name = "小程序模板名称")
    private String appletTemplateName;

    /** 小程序提醒内容 */
    @ApiModelProperty(value = "小程序提醒内容")
    @Excel(name = "小程序提醒内容")
    private String appletRemindContent;

    /** 小程序提示说明 */
    @ApiModelProperty(value = "小程序提示说明")
    @Excel(name = "小程序提示说明")
    private String appletPromptDescription;

    /** 小程序节点内容（富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记） */
    @ApiModelProperty(value = "小程序节点内容")
    @Excel(name = "小程序节点内容", readConverterExp = "富文本存放整个节点的信息，包含标签画像的名称以及其它，标签画像名称使用特殊符号进行标记")
    private String appletNodeContent;

    /** 节点审核状态，同意：AGREE，不同意：DISAGREE */
    @ApiModelProperty(value = "节点审核状态，同意：AGREE，不同意：DISAGREE")
    @Excel(name = "节点审核状态，同意：AGREE，不同意：DISAGREE")
    private String routeCheckStatus;

    /** 节点审核人姓名 */
    @ApiModelProperty(value = "节点审核人姓名")
    @Excel(name = "节点审核人姓名")
    private String routeCheckPerson;

    /** 节点审核时间 */
    @ApiModelProperty(value = "节点审核时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "节点审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDateTime routeCheckDate;

    /** 节点审核备注信息，存储审核备注信息以及审核不通过原因等信息 */
    @ApiModelProperty(value = "节点审核备注信息，存储审核备注信息以及审核不通过原因等信息")
    @Excel(name = "节点审核备注信息，存储审核备注信息以及审核不通过原因等信息")
    private String routeCheckRemark;

    /** 备注信息 */
    @ApiModelProperty(value = "备注信息")
    @Excel(name = "备注信息")
    private String routeNodeRemark;

    /** 节点任务执行状态，已执行：EXECUTED，未执行：UNEXECUTED */
    @ApiModelProperty(value = "节点任务执行状态，已执行：EXECUTED，未执行：UNEXECUTED")
    @Excel(name = "节点任务执行状态，已执行：EXECUTED，未执行：UNEXECUTED")
    private String nodeExecuteStatus;

    /** 任务处理信息 */
    @ApiModelProperty(value = "任务处理信息")
    @Excel(name = "任务处理信息")
    private String routeHandleRemark;

    /** 任务处理人id */
    @ApiModelProperty(value = "任务处理人id")
    @Excel(name = "任务处理人id")
    private Long routeHandleId;

    /** 任务处理人姓名 */
    @ApiModelProperty(value = "任务处理人姓名")
    @Excel(name = "任务处理人姓名")
    private String routeHandlePerson;

    /** 任务链接 */
    @ApiModelProperty(value = "任务链接")
    @Excel(name = "任务链接")
    private String routeLink;

    /** 文字提醒内容 */
    @ApiModelProperty(value = "文字提醒内容")
    @Excel(name = "文字提醒内容")
    private String textRemindContent;

	/**
	 * 节点内容
	 */
	@ApiModelProperty(value = "节点内容")
	@Excel(name = "节点内容")
	private String nodeContent;

	/** 删除标识，0：未删除，1：已删除 */
	@ApiModelProperty(value = "删除标识，0：未删除，1：已删除")
	private Integer delFlag;

    @ApiModelProperty(value = "消息状态：已读：READ；未读：UNREAD。")
    private String messageStatus;

    @ApiModelProperty(value = "默认已接通：CONNECTED；未接通:NOTCONNECTED")
    private String phoneConnectStatus;

    /**
     * AI：自动 或  COMMON：手动
     */
    @ApiModelProperty(value = "AI：自动 或  COMMON：手动")
    @Excel(name = "AI：自动 或  COMMON：手动")
    private String phoneDialMethod;


    /** 人工随访问卷模板表id */
    @ApiModelProperty(value = "人工随访模板表id")
    @Excel(name = "人工随访模板表id")
    private Long followTemplateId;

    /** 人工随访问卷模板名称 */
    @ApiModelProperty(value = "人工随访模板名称")
    @Excel(name = "人工随访模板名称")
    private String followTemplateName;

    /**
     * 任务节点类型：PHONE_OUTBOUND：电话外呼(默认自动。人工或自动)；QUESTIONNAIRE_SCALE：问卷量表（消息推送或人工随访）；PROPAGANDA_ARTICLE：宣教文章；TEXT_REMIND：文字提醒（微信、短信、公众号）
     */
    @ApiModelProperty(value = "任务节点类型")
    @Excel(name = "任务节点类型")
    private String taskNodeType;

    /** 电话拨通情况；SUCCESS：成功；FAILURE：失败；EXPIRED：超期自动作废（如超期一周）；NULL或空字符串：缺省值，表示未执行； */
    @ApiModelProperty(value = "电话拨通情况")
    @Excel(name = "电话拨通情况")
    private String phoneNodeExecuteResultStatus;

    /** 电话未接通时短信发送情况；SUCCESS：成功；FAILURE：失败；EXPIRED：超期自动作废（如超期一周）；NULL或空字符串：缺省值，表示未执行； */
    @ApiModelProperty(value = "电话短信发送情况")
    @Excel(name = "电话短信发送情况")
    private String phoneMessageNodeExecuteResultStatus;

    /** 短信发送情况；SUCCESS：成功；FAILURE：失败；EXPIRED：超期自动作废（如超期一周）；NULL或空字符串：缺省值，表示未执行； */
    @ApiModelProperty(value = "短信发送情况")
    @Excel(name = "短信发送情况")
    private String messageNodeExecuteResultStatus;

    /** 公众号消息发送情况；SUCCESS：成功；FAILURE：失败；EXPIRED：超期自动作废（如超期一周）；NULL或空字符串：缺省值，表示未执行； */
    @ApiModelProperty(value = "公众号消息发送情况")
    @Excel(name = "公众号消息发送情况")
    private String officialNodeExecuteResultStatus;

    /** 小程序模板消息发送情况；SUCCESS：成功；FAILURE：失败；EXPIRED：超期自动作废（如超期一周）；NULL或空字符串：缺省值，表示未执行； */
    @ApiModelProperty(value = "小程序模板消息发送情况")
    @Excel(name = "小程序模板消息发送情况")
    private String appletNodeExecuteResultStatus;

    /** 患者宣教阅读或问卷提交的时间；null表示尚未阅读或提交 */
    @ApiModelProperty(value = "患者宣教阅读或问卷提交的时间")
    @Excel(name = "患者宣教阅读或问卷提交的时间")
    private LocalDateTime nodeFinishDate;

    @ApiModelProperty(value = "问卷提交情况；SUCCESS：已提交；FAILURE：失败；EXPIRED：超期自动作废（如超期一周）；NULL或空字符串：缺省值，表示未执行")
    private String nodeFinishStatus;

	@ApiModelProperty(value = "第三方返回的任务ID")
	private String taskIdExt;


    @ApiModelProperty(value = "拨打状态：DIALED,已拨打：NODIALED:未拨打；默认NULL表示未拨打")
    private String dialStatus;

    @ApiModelProperty(value = "导入流水号")
    private String sn;
}
