package com.qmth.sop.business.bean.params;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.qmth.sop.common.annotation.EditKey;
import com.qmth.sop.common.enums.ProductTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotNull;

/**
 * @Description: 服务单元参数
 * @Author: CaoZixuan
 * @Date: 2023-08-08
 */
public class ServiceUnitParam {
    @EditKey
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    @ApiModelProperty(value = "名称")
    @NotNull(message = "请提供服务单元名称")
    private String name;

    @ApiModelProperty(value = "类型，OFFICE：教务处，CLOUD_MARK：研究生")
    @NotNull(message = "请提供服务单元类型")
    private ProductTypeEnum type;

    @ApiModelProperty(value = "开始时间")
    @NotNull(message = "请提供服务开始时间")
    @Range(min = 1L, message = "请提供服务开始时间")
    private Long startTime;

    @ApiModelProperty(value = "结束时间")
    @NotNull(message = "请提供服务结束时间")
    @Range(min = 1L, message = "请提供服务结束时间")
    private Long endTime;

    @ApiModelProperty(value = "区域协调人数量")
    @NotNull(message = "请提供区域协调人数量比例")
    @Range(min = 1L, message = "请提供区域协调人数量比例")
    private Integer regionPeopleCount;

    @ApiModelProperty(value = "区域项目数量")
    @NotNull(message = "请提供项目数量比例")
    @Range(min = 1L, message = "请提供项目数量比例")
    private Integer regionProjectCount;

    @ApiModelProperty(value = "服务单元负责人id")
    @NotNull(message = "请提供服务负责人")
    @Range(min = 1L, message = "请提供服务负责人")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long serviceLeadId;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public ProductTypeEnum getType() {
        return type;
    }

    public void setType(ProductTypeEnum type) {
        this.type = type;
    }

    public Long getStartTime() {
        return startTime;
    }

    public void setStartTime(Long startTime) {
        this.startTime = startTime;
    }

    public Long getEndTime() {
        return endTime;
    }

    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }

    public Integer getRegionPeopleCount() {
        return regionPeopleCount;
    }

    public void setRegionPeopleCount(Integer regionPeopleCount) {
        this.regionPeopleCount = regionPeopleCount;
    }

    public Integer getRegionProjectCount() {
        return regionProjectCount;
    }

    public void setRegionProjectCount(Integer regionProjectCount) {
        this.regionProjectCount = regionProjectCount;
    }

    public Long getServiceLeadId() {
        return serviceLeadId;
    }

    public void setServiceLeadId(Long serviceLeadId) {
        this.serviceLeadId = serviceLeadId;
    }
}
