package com.xinelu.manage.dto.servicepackage;

import com.xinelu.common.annotation.Excel;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import com.xinelu.manage.vo.servicepackagecontent.ServicePackageContentVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author : youxilong
 * @date : 2024/3/4 17:02
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "服务包新增DTO")
public class ServicePackageAddDTO {

    /**
     * 服务包id
     */
    @ApiModelProperty(value = "服务包id")
    private Long id;

    /**
     * 科室id
     */
    @ApiModelProperty(value = "科室id")
    @Excel(name = "科室id")
    @NotBlank(message = "科室id不能为空", groups = {Insert.class, Update.class})
    private Long departmentId;

    /**
     * 科室名称
     */
    @ApiModelProperty(value = "科室名称")
    @Excel(name = "科室名称")
    @NotBlank(message = "科室名称不能为空", groups = {Insert.class, Update.class})
    private String departmentName;

    /**
     * 科室病种信息表id
     */
    @ApiModelProperty(value = "科室病种信息表id")
    @Excel(name = "科室病种信息表id")
    @NotBlank(message = "科室病种信息表id不能为空", groups = {Insert.class, Update.class})
    private Long diseaseTypeId;

    /**
     * 病种名称
     */
    @ApiModelProperty(value = "病种名称")
    @Excel(name = "病种名称")
    @NotBlank(message = "病种名称不能为空", groups = {Insert.class, Update.class})
    private String diseaseTypeName;

    /**
     * 服务包名称
     */
    @ApiModelProperty(value = "服务包名称")
    @Excel(name = "服务包名称")
    @NotBlank(message = "服务包名称不能为空", groups = {Insert.class, Update.class})
    @Length(max = 50, message = "服务包名称不能超过50个字符", groups = {Insert.class, Update.class})
    private String packageName;

    /**
     * 服务包简介
     */
    @ApiModelProperty(value = "服务包简介")
    @Excel(name = "服务包简介")
    @NotBlank(message = "服务包简介不能为空", groups = {Insert.class, Update.class})
    @Length(max = 100, message = "服务包简介不能超过100个字符", groups = {Insert.class, Update.class})
    private String packageIntroduction;

    /**
     * 服务包价格，单位为：元
     */
    @ApiModelProperty(value = "服务包价格，单位为：元")
    @Excel(name = "服务包价格，单位为：元")
    @NotBlank(message = "服务包价格不能为空", groups = {Insert.class, Update.class})
    private BigDecimal packagePrice;

    /**
     * 服务包版本号
     */
    @ApiModelProperty(value = "服务包版本号")
    @Excel(name = "服务包版本号")
    @NotBlank(message = "服务包版本号不能为空", groups = {Insert.class, Update.class})
    private String packageVersion;

    /**
     * 硬件类型，血压仪：BLOOD_PRESSURE，血糖仪：GLUCOSE_METER，心电仪：ELECTROCARDIOGRA
     */
    @ApiModelProperty(value = "硬件类型，血压仪：BLOOD_PRESSURE，血糖仪：GLUCOSE_METER，心电仪：ELECTROCARDIOGRA")
    @Excel(name = "硬件类型，血压仪：BLOOD_PRESSURE，血糖仪：GLUCOSE_METER，心电仪：ELECTROCARDIOGRA")
    @NotBlank(message = "硬件类型不能为空", groups = {Insert.class, Update.class})
    private String hardwareType;

    /**
     * 服务包期限
     */
    @ApiModelProperty(value = "服务包期限")
    @Excel(name = "服务包期限")
    @NotBlank(message = "服务包期限不能为空", groups = {Insert.class, Update.class})
    private Integer packageTerm;

    /**
     * 服务包期限单位，年，月，日
     */
    @ApiModelProperty(value = "服务包期限单位，年，月，日")
    @Excel(name = "服务包期限单位，年，月，日")
    private String packageTermUnit;


    /**
     * 服务包备注
     */
    @ApiModelProperty(value = "服务包备注")
    @Excel(name = "服务包备注")
    private String packageRemark;


    /**
     * 是否发布，0：否，1：是
     */
    @ApiModelProperty(value = "是否发布，0：否，1：是")
    @Excel(name = "是否发布，0：否，1：是")
    private Integer whetherRelease;

	/**
	 * 公共库模板id
	 */
	private Long sourceTemplateId;

    /**
     * 服务内容列表
     */
    @ApiModelProperty(value = "服务内容列表")
    private List<ServicePackageContentVO> voList;
}
