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

import com.njcn.gather.pojo.constant.DetectionValidMessage;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * @author caozehui
 * @data 2025-07-18
 */
@Data
public class ContrastDetectionParam {

    @ApiModelProperty("检测计划ID")
    @NotBlank(message = DetectionValidMessage.PLAN_ID_NOT_BLANK)
    private String planId;

    @ApiModelProperty("用户ID，唯一标识")
    private String loginName;

    @ApiModelProperty("被检设备ID列表")
    @NotEmpty(message = DetectionValidMessage.DEV_IDS_NOT_EMPTY)
    private List<String> devIds;

    @ApiModelProperty("标准设备ID列表")
    @NotEmpty(message = DetectionValidMessage.STANDARD_DEV_IDS_NOT_EMPTY)
    private List<String> standardDevIds;

    /**
     * key为被检设备ID_检测点序号、value为 标准设备ID_检测点序号
     */
    @ApiModelProperty("配对关系")
    @NotEmpty(message = DetectionValidMessage.PAIRS_NOT_EMPTY)
    private Map<String, String> pairs;
    /**
     * 检测项列表。第一个元素为预检测、第二个元素为系数校准、第三个元素为守时校验、第四个元素为正式检测。
     * 比对场景暂不支持系数校准和守时校验，第二、第三个元素固定为 false。
     */
    private List<Boolean> testItemList;

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

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

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

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

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

    private String userId;

    /**
     * 是否进行相许校验
     */
    private Integer phaseCheck;
}
