package cn.com.ty.lift.business.annualinspection.dto;

import cn.com.ty.lift.common.model.PageRequest;
import cn.com.ty.lift.common.utils.ValuePool;
import lombok.Data;
import lombok.EqualsAndHashCode;

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

/**
 * <p>
 *     年检管理请求参数封装
 * </p>
 * @author wcz
 * @since 2019/12/10
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class InspectionRequest extends PageRequest {

    @Min(value = 1, message = "年检记录ID有误")
    private Long id;

    @NotEmpty(message = "年检记录ID列表有误")
    private List<Long> ids;
    /**
     * 区域id
     */
    @Min(value = 1, message = "区域ID有误")
    private Long regionId;
    /**
     * 电梯id
     */
    @Min(value = 1, message = "电梯ID有误")
    private Long liftId;
    /**
     * 维保公司id
     */
    @Min(value = 1, message = "维保公司ID有误")
    private Long mtCompanyId;
    /**
     * 项目id
     */
    @Min(value = 1, message = "项目ID有误")
    private Long projectId;

    /**
     * 维保工id
     */
    @Min(value = 1, message = "维保工ID有误")
    private Long workerId;

    /**
     *  搜索条件 匹配电梯注册编码
     */
    private String info;

    /**
     * 年检阶段
     */
    private Integer stepName;

    /**
     * 年检完成状态（0 待完成；1 已完成；2 超期）
     */
    private int status;

    @Min(value = 1, message = "当前用户ID有误")
    private Long userId;
    /**
     * 自检时间
     */
    @NotNull(message = "缺少自检时间")
    @PastOrPresent(message = "自检时间不能早于当前时间")
    private LocalDate selfcheckDate;
    /**
     * 自检报告路径
     */
    @NotBlank(message = "缺少自检报告图片")
    private String selfcheckReportImg;
    /**
     * 检验结果图片路径
     */
    @NotBlank(message = "缺少检验图片")
    private String checkResultImg;
    /**
     * 现场检验时间
     */
    @NotNull(message = "缺少现场检验时间")
//    @PastOrPresent(message = "现场检验时间不能早于当前时间")
    @FutureOrPresent(message = "现场检验时间不能早于当前时间")
    private LocalDate checkDate;

    /**
     * 合格证图片路径
     */
    @NotBlank(message = "缺少合格证图片")
    private String certificateImgUrl;

    /**
     * 年检报告图片路径
     */
    @NotBlank(message = "缺少年检报告图片")
    private String annualInspectionImg;

    @Max(value = 10,message = "年检阶段状态有误")
    private Integer stepStatus;

    /**
     * 是否检查限速器（0 否；1 是；默认0）
            */
    @NotNull(message = "请设置是否检查限速器")
    @Max(value = 1,message = "是否检查限速器有误")
    private Integer isCheckGoverner;

    /**
     * 是否荷载年检设置（0 否；1 是；默认0）
     */
    @NotNull(message = "请设置是否荷载年检设置")
    @Max(value = 1, message = "荷载年检设置有误")
    private Integer loadInspectionSetting;

    /**
     * 政府质检人员
     */
    @NotBlank(message = "请设置政府质检人员")
    @Pattern(regexp = ValuePool.PATTERN_NAME, message = "政府质检人员只能包含中英文数字，空格和·.。;&")
    private String inspector;

    /**
     * 联系电话
     */
    @NotBlank(message = "请设置联系电话")
    @Pattern(regexp = ValuePool.PATTERN_TELEPHONE,message = "联系电话格式有误")
    private String telephone;

    /**
     * 公司年检人员
     */
    @NotBlank(message = "请设置公司年检人员")
    @Pattern(regexp = ValuePool.PATTERN_NAME, message = "公司年检人员只能包含中英文数字，空格和·.。;&")
    private String operator;

    /**
     * 下次年检日期
     */
    @NotNull(message = "请设置下次年检时间")
    @FutureOrPresent(message = "下次年检时间不得晚于当前时间")
    private LocalDate nextInspectionTime;

    /**
     * 当前用户角色code
     */
    private String currentRoleCode;
}
