package com.xinelu.manage.domain.signpatientmanageroute;

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

import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;

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

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

    /** 签约记录表id */
    @ApiModelProperty(value = "签约记录表id")
    @Excel(name = "签约记录表id")
    private Long signPatientRecordId;

    /** 患者表id */
    @ApiModelProperty(value = "患者表id")
    @Excel(name = "患者表id")
    private Long patientId;

    /** 患者姓名 */
    @ApiModelProperty(value = "患者姓名")
    @Excel(name = "患者姓名")
    private String patientName;

    /** 所属科室id */
    @ApiModelProperty(value = "所属科室id")
    @Excel(name = "所属科室id")
    private Long departmentId;

    /** 所属科室名称 */
    @ApiModelProperty(value = "所属科室名称")
    @Excel(name = "所属科室名称")
    private String departmentName;

    /** 所属服务包表id */
    @ApiModelProperty(value = "所属服务包表id")
    @Excel(name = "所属服务包表id")
    private Long servicePackageId;

    /** 服务包名称 */
    @ApiModelProperty(value = "服务包名称")
    @Excel(name = "服务包名称")
    private String packageName;

    /** 病种id */
    @ApiModelProperty(value = "病种id")
    @Excel(name = "病种id")
    private Long diseaseTypeId;

    /** 病种名称 */
    @ApiModelProperty(value = "病种名称")
    @Excel(name = "病种名称")
    private String diseaseTypeName;

	/** 路径主键 */
	@ApiModelProperty(value = "路径主键")
	@Excel(name = "路径主键", readConverterExp = "路径主键")
	private Long routeId;

	/** 父路径id */
	@ApiModelProperty(value = "父路径id")
	@Excel(name = "父路径id", readConverterExp = "父路径id")
	private Long parentRouteId;

    /** 路径名称（任务名称） */
    @ApiModelProperty(value = "路径名称")
    @Excel(name = "路径名称", readConverterExp = "任务名称")
    @NotBlank(message = "任务名称不能为空", groups = {Insert.class})
    private String routeName;

    /** 任务创建类型，手动创建：MANUAL_CREATE，自动匹配：MANUAL_MATCHE */
    @ApiModelProperty(value = "任务创建类型，手动创建：MANUAL_CREATE，自动匹配：MANUAL_MATCHE")
    @Excel(name = "任务创建类型，手动创建：MANUAL_CREATE，自动匹配：MANUAL_MATCHE")
    private String taskCreateType;

    /** 版本号 */
    @ApiModelProperty(value = "版本号")
    @Excel(name = "版本号")
    private String version;

    /** 路径分类（任务分类），全部：ALL，科室管理路径：DEPARTMENT_MANAGE_PATH，专病管理路径：SPECIAL_DIEASE_MANAGE_PATH */
    @ApiModelProperty(value = "路径分类")
    @Excel(name = "路径分类", readConverterExp = "任务分类")
    private String routeClassify;

    /** 适用范围，在院：IN_THE_HOSPITAL，出院：DISCHARGE，门诊：OUTPATIENT_SERVICE，门诊+出院：OUTPATIENT_SERVICE_DISCHARGE */
    @ApiModelProperty(value = "适用范围，在院：IN_THE_HOSPITAL，出院：DISCHARGE，门诊：OUTPATIENT_SERVICE，门诊+出院：OUTPATIENT_SERVICE_DISCHARGE")
    @Excel(name = "适用范围，在院：IN_THE_HOSPITAL，出院：DISCHARGE，门诊：OUTPATIENT_SERVICE，门诊+出院：OUTPATIENT_SERVICE_DISCHARGE")
    @NotBlank(message = "适用范围不能为空", groups = {Insert.class})
    private String suitRange;

    /** 排序 */
    @ApiModelProperty(value = "排序")
    @Excel(name = "排序")
    private Integer routeSort;

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

    /** 任务执行类型（批量还是单个执行） */
    @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 routePlanTime;

    /** 导入患者主表ID */
    @ApiModelProperty(value = "导入患者主表ID")
    @Excel(name = "导入患者主表ID")
    private String importMainId;

    /** 批量推送任务表id */
    @ApiModelProperty(value = "批量推送任务表id")
    private Long batchSendTaskRecordId;

    /** 批量推送信息表id */
    @ApiModelProperty(value = "批量推送信息表id")
    private Long batchSendTaskId;
}
