package com.gci.boot.annotation.importHandler;

import lombok.Data;


import java.util.List;
import java.util.Map;

@Data
public class ExcelTypeHandler {
    /**
     * 校验类型
     * 1-数据库重复校验（excel校验也用这个）
     * 2-单独字段校验是否在数据内(是否有权限之类的)
     * 3-联合检验(当对应校验字段为指定值时其他字段不能为空)
     */
    private String type;

    /**
     * 对应校验字段
     */
    private List<String> fields;

    /**
     * 校验字段指定值
     */
    private Map<String,Object> specifiedValue;

    /**
     * 其他字段
     */
    private List<String> others;
    /**
     * 校验字段是否共同校验
     */
    private boolean needAll;
    /**
     * 数据集合
     */
    private List<?> record;
    /**
     * 自定义校验信息
     */
    private String errorMsg;

    /**
     * 数据库重复校验（excel校验也用这个）
     * 这个校验感觉有问题 还是注解优先
     * @param fields
     * @param needAll
     * @param record
     * @param errorMsg
     * @return
     */
    public ExcelTypeHandler(List<String> fields, boolean needAll, List<?> record, String errorMsg) {
        this.type = "1";
        this.fields = fields;
        this.needAll = needAll;
        this.record = record;
        this.errorMsg = errorMsg;
    }

    /**
     * 单独字段校验是否在数据内(是否有权限之类的)
     * @param fields
     * @param record
     * @param errorMsg
     */
    public ExcelTypeHandler(List<String> fields, List<?> record, String errorMsg) {
        this.type = "2";
        this.fields = fields;
        this.record = record;
        this.errorMsg = errorMsg;
    }

    /**
     * 联合检验(当对应校验字段为指定值时其他字段不能为空)
     * @param fields
     * @param specifiedValue
     * @param others
     * @param needAll
     * @param record
     * @param errorMsg
     */
    public ExcelTypeHandler(List<String> fields, Map<String, Object> specifiedValue, List<String> others, boolean needAll, List<?> record, String errorMsg) {
        this.type = "3";
        this.fields = fields;
        this.specifiedValue = specifiedValue;
        this.others = others;
        this.needAll = needAll;
        this.record = record;
        this.errorMsg = errorMsg;
    }

}
