package com.njcn.gather.detection.pojo.param;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;

/**
 * @author wr
 * @description
 * @date 2024/12/11 13:45
 */
@Data
public class PreDetectionParam {

    // "1"-"全部检测" , "2"-"不合格项复检"
    private String reCheckType;

    /**
     * 检测计划id
     */
    @NotBlank(message = "计划id不可为空")
    private String planId;


    /**
     * 用户功能组成唯一标识 zhangsan_test
     */
    private String userPageId;

    /**
     * 检测终端id集合
     */
    @NotEmpty(message = "装置不能为空")
    private List<String> devIds;

    /**
     * 检测脚本Id
     */
    private String scriptId;

    /**
     * 源id
     */
    private String sourceId;

    /**
     * 源名称
     */
    private String sourceName;

    /**
     * 所属误差体系
     */
    private String errorSysId;

    /**
     * 自动生成，用于生成数据表后缀
     */
    private String code;

    private Boolean sendWebMsg;

    private String userId;

    /**
     * 温度
     */
    private Float temperature;

    /**
     * 相对湿度
     */
    private Float humidity;

    /**
     * 检测项列表。第一个元素为预检测、第二个元素为系数校准、第三个元素为守时校验、第四个元素为正式检测
     */
    private List<Boolean> testItemList;

    /**
     * 是否从正式检测暂存进度续检
     */
    private Boolean resumeFormal;

    public boolean isPreTestSelected() {
        return isTestItemSelected(0);
    }

    public boolean isCoefficientSelected() {
        return isTestItemSelected(1);
    }

    public boolean isTimeCheckSelected() {
        return isTestItemSelected(2);
    }

    public boolean isFormalTestSelected() {
        return isTestItemSelected(3);
    }

    public boolean isResumeFormal() {
        return Boolean.TRUE.equals(resumeFormal);
    }

    private boolean isTestItemSelected(int index) {
        return testItemList != null && testItemList.size() > index && Boolean.TRUE.equals(testItemList.get(index));
    }
}
