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

import cn.com.ty.lift.business.maintenance.dao.entity.MaintenancePlan;
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.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.util.Collection;
import java.util.List;

/**
 * @author bieao
 * @date 2019/12/16
 * @description 维保计划列表请求体
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class MaintenancePlanRequest 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 projectId;

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

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

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

    /**
     * 开始时间
     */
    @NotNull(message = "开始时间不能为空")
    private LocalDate beginTime;

    /**
     * 结束时间
     */
    @NotNull(message = "结束时间不能为空")
    private LocalDate endTime;

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

    /**
     * 电梯ID列表
     */
    @NotEmpty(message = "电梯ID列表不能为空")
    private Collection<Long> liftIdList;

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

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

    /**
     * 首保时间
     */
    @NotNull(message = "首保时间不能为空")
    private LocalDate firstTime;

    /**
     * 期数 1-24
     */
    @NotNull(message = "期数不能为空")
    @Min(value = 1, message = "期数最小值为1")
    @Max(value = 24, message = "期数最大值为24")
    private Integer periods;

    /**
     * 间隔 1-15
     */
    @NotNull(message = "维保间隔不能为空")
    @Min(value = 1, message = "维保间隔最小值为1")
    @Max(value = 15, message = "维保间隔最大值为15")
    private Integer interval;

    /**
     * 是否按需维保(0:否 1:是)
     */
    private String demand;

    /**
     * 当前时间
     */
    private LocalDate currentTime;

    /**
     * 修改时间
     */
    private LocalDate updateTime;

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

    /**
     * 维保间隔 1-15
     */
    private Integer planInterval;

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