package com.xinelu.manage.domain.nursestationperson;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 护理站人员信息对象 nurse_station_person
 *
 * @author ljh
 * @date 2022-09-02
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "护理站人员信息对象", description = "nurse_station_person")
public class NurseStationPerson extends BaseDomain implements Serializable {
    private static final long serialVersionUID = -1396000999445946255L;
    /**
     * 主键id
     */
    @NotNull(message = "id不能为空！", groups = {Update.class})
    private Long id;

    /**
     * 护理站表id
     */
    @ApiModelProperty(value = "护理站表id")
    @Excel(name = "护理站表id")
    @NotNull(message = "护理站表id不能为空", groups = {Insert.class, Update.class})
    private Long nurseStationId;

    /**
     * 所属科室编码
     */
    @ApiModelProperty(value = "所属科室编码")
    @Excel(name = "所属科室编码")
    @NotBlank(message = "所属科室编码不能为空", groups = {Insert.class, Update.class})
    private String departmentCode;

    /**
     * 创建人id
     */
    @ApiModelProperty(value = "创建人id")
    @Excel(name = "创建人id")
    private Long userId;

    /**
     * 护理站人员编码
     */
    @ApiModelProperty(value = "护理站人员编码")
    @Excel(name = "护理站人员编码")
    private String nursePersonCode;

    /**
     * 护理站人员名称
     */
    @ApiModelProperty(value = "护理站人员名称")
    @Excel(name = "护理站人员名称")
    @NotBlank(message = "护理站人员名称不能为空", groups = {Insert.class, Update.class})
    private String nursePersonName;

    /**
     * 护理站人员类型，NURSE：护士，NURSE_TEACHER：护理师
     */
    @ApiModelProperty(value = "护理站人员类型，NURSE：护士，NURSE_TEACHER：护理师")
    @Excel(name = "护理站人员类型，NURSE：护士，NURSE_TEACHER：护理师")
    @NotBlank(message = "护理站人员类型不能为空", groups = {Insert.class, Update.class})
    private String nursePersonType;

    /**
     * 性别
     */
    @ApiModelProperty(value = "性别")
    @Excel(name = "性别")
    @NotBlank(message = "性别不能为空", groups = {Insert.class, Update.class})
    private String sex;

    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @Excel(name = "联系电话")
    @NotBlank(message = "联系电话不能为空", groups = {Insert.class, Update.class})
    private String phone;

    /**
     * 居住地址
     */
    @ApiModelProperty(value = "居住地址")
    @Excel(name = "居住地址")
    @NotBlank(message = "居住地址不能为空", groups = {Insert.class, Update.class})
    private String address;
    /**
     * 出生日期，yyyy-MM-dd格式
     */
    @ApiModelProperty(value = "出生日期，yyyy-MM-dd格式")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出生日期，yyyy-MM-dd格式", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate birthDate;

    /**
     * 微信openid
     */
    @ApiModelProperty(value = "微信openid")
    @Excel(name = "微信openid")
    private String openid;

    /**
     * 微信unionid
     */
    @ApiModelProperty(value = "微信unionid")
    @Excel(name = "微信unionid")
    private String unionid;

    /**
     * 星级评级数量，取值为预约订单评价行级数量的平均值
     */
    @ApiModelProperty(value = "星级评级数量，取值为预约订单评价行级数量的平均值")
    @Excel(name = "星级评级数量，取值为预约订单评价行级数量的平均值")
    private Integer evaluateStarCount;

    /**
     * PRIMARY_LEVEL：初级，中级：MIDDLE_LEVEL，高级：HIGH_LEVEL
     */
    @ApiModelProperty(value = "PRIMARY_LEVEL：初级，中级：MIDDLE_LEVEL，高级：HIGH_LEVEL")
    @Excel(name = "PRIMARY_LEVEL：初级，中级：MIDDLE_LEVEL，高级：HIGH_LEVEL")
    private String positionalTitleLevel;

    /**
     * 擅长项目，文本内容
     */
    @ApiModelProperty(value = "擅长项目，文本内容")
    @Excel(name = "擅长项目，文本内容")
    @Length(max = 300, message = "擅长项目不能超过300个字符")
    private String geniusItem;

    /**
     * 订单佣金收益总金额
     */
    @ApiModelProperty(value = "订单佣金收益总金额")
    @Excel(name = "订单佣金收益总金额")
    private BigDecimal totalRevenueAmount;

    /**
     * 工作状态，ONLINE：在线，BE_BUSY：忙碌，OFFLINE：离线
     */
    @ApiModelProperty(value = "工作状态，ONLINE：在线，BE_BUSY：忙碌，OFFLINE：离线")
    @Excel(name = "工作状态，ONLINE：在线，BE_BUSY：忙碌，OFFLINE：离线")
    private String workStatus;

    /**
     * 修改信息审核状态，CHECKED：已审核，NOT_CHECK
     */
    @ApiModelProperty(value = "修改信息审核状态，CHECKED：已审核，NOT_CHECK")
    @Excel(name = "修改信息审核状态，CHECKED：已审核，NOT_CHECK")
    private String modifyCheckStatus;

    /**
     * 职称级别，存储修改以后待审核的职称级别信息，PRIMARY_LEVEL：初级，中级：MIDDLE_LEVEL，高级：HIGH_LEVEL
     */
    @ApiModelProperty(value = "职称级别，存储修改以后待审核的职称级别信息，PRIMARY_LEVEL：初级，中级：MIDDLE_LEVEL，高级：HIGH_LEVEL")
    @Excel(name = "职称级别，存储修改以后待审核的职称级别信息，PRIMARY_LEVEL：初级，中级：MIDDLE_LEVEL，高级：HIGH_LEVEL")
    private String positionalTitleLevelCheck;

    /**
     * 擅长项目，存储修改以后待审核的擅长项目信息，文本内容
     */
    @ApiModelProperty(value = "擅长项目，存储修改以后待审核的擅长项目信息，文本内容")
    @Excel(name = "擅长项目，存储修改以后待审核的擅长项目信息，文本内容")
    private String geniusItemCheck;

    /**
     * 个人信息修改标识（用于标记用户是否在移动端修改了个人信息），0：否，1：是
     */
    private Integer modifyInfoFlag;


    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("nurseStationId", getNurseStationId())
                .append("departmentCode", getDepartmentCode())
                .append("userId", getUserId())
                .append("nursePersonCode", getNursePersonCode())
                .append("nursePersonName", getNursePersonName())
                .append("nursePersonType", getNursePersonType())
                .append("sex", getSex())
                .append("phone", getPhone())
                .append("address", getAddress())
                .append("birthDate", getBirthDate())
                .append("openid", getOpenid())
                .append("unionid", getUnionid())
                .append("evaluateStarCount", getEvaluateStarCount())
                .append("positionalTitleLevel", getPositionalTitleLevel())
                .append("geniusItem", getGeniusItem())
                .append("totalRevenueAmount", getTotalRevenueAmount())
                .append("workStatus", getWorkStatus())
                .append("modifyCheckStatus", getModifyCheckStatus())
                .append("positionalTitleLevelCheck", getPositionalTitleLevelCheck())
                .append("geniusItemCheck", getGeniusItemCheck())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}