package cn.com.ty.lift.business.library.dao.entity.model.request;

import cn.com.ty.lift.business.library.dao.entity.Lift;
import cn.com.ty.lift.business.project.dao.entity.ProjectLiftRelevance;
import cn.com.ty.lift.common.model.PageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.*;
import java.util.List;

/**
 * @author bieao
 * @date 2019/11/27
 * @description 电梯档案列表请求体
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class LiftRequest extends PageRequest {

    /**
     * 公司ID
     */
    @NotNull(message = "维保公司ID不能为空")
    @Min(value = 1, message = "公司ID有误")
    private Long mtCompanyId;

    /**
     * 电梯ID
     */
    @NotNull(message = "电梯ID不能为空")
    @Min(value = 1, message = "电梯ID有误")
    private Long id;

    /**
     * 项目ID
     */
    @NotNull(message = "项目ID不能为空")
    @Min(value = 1, message = "项目ID有误")
    private Long projectId;

    /**
     * 公司电梯关联主键ID
     */
    @NotNull(message = "公司电梯关联主键ID不能为空")
    @Min(value = 1, message = "公司电梯关联主键ID有误")
    private Long relevanceId;

    /**
     * 电梯ID
     */
    @NotNull(message = "电梯ID不能为空")
    @Min(value = 1, message = "电梯ID有误")
    private Long liftId;

    /**
     * 区域ID
     */
    private Long regionId;

    /**
     * 维保工ID
     */
    @NotNull(message = "维保工ID不能为空")
    private Long workerId;

    /**
     * 电梯状态（服务中：1，停止：0）
     */
    @NotNull(message = "电梯状态不能为空")
    @Min(value = 0, message = "电梯状态最小值为0")
    @Max(value = 1, message = "电梯状态最大值为1")
    private Integer liftStatus;

    /**
     * 项目电梯关联id列表
     */
    @NotEmpty(message = "项目电梯关联id列表不能为空")
    private List<ProjectLiftRelevance> list;

    /**
     * 公司电梯关联表主键id列表
     */
    @NotEmpty(message = "公司电梯关联表主键id列表不能为空")
    private List<Long> relevanceIdList;

    /**
     * 电梯id列表
     */
    @NotEmpty(message = "电梯id列表不能为空")
    private List<Long> liftList;

    /**
     * 电梯操作：0：解锁 1：锁定
     */
    @NotNull(message = "电梯操作不能为空")
    @Min(value = 0, message = "电梯操作最小值为0")
    @Max(value = 1, message = "电梯操作最大值为1")
    private Integer lock;

    /**
     * 电梯操作 0：恢复，1：停保
     */
    @NotNull(message = "电梯操作不能为空")
    @Min(value = 0, message = "电梯操作最小值为0")
    @Max(value = 1, message = "电梯操作最大值为1")
    private Integer operate;

    /**
     * 电梯注册代码
     */
    @NotBlank(message = "电梯注册代码不能为空")
    private String code;

    /**
     * 电梯
     */
    @NotNull(message = "电梯不能为空")
    private Lift lift;

    /**
     * 电梯品牌
     */
    private String liftBrand;

    /**
     * 电梯注册代码
     */
    private String registrationCode;

    /**
     * 电梯类型
     */
    private Integer liftType;

    private String condition;
}
