package com.njcn.gather.icd.mapping.pojo.param;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;

/**
 * ICD 存储记录保存参数。
 */
@Data
@ApiModel("ICD存储记录保存参数")
public class CsIcdPathParam {

    @ApiModelProperty("ICD名称")
    @NotBlank(message = "ICD名称不能为空")
    private String name;

    @ApiModelProperty("ICD文件二进制内容")
    private byte[] icdContent;

    @ApiModelProperty("角度")
    private Integer angle;

    @ApiModelProperty("是否使用相位索引")
    private Integer usePhaseIndex;

    @ApiModelProperty("ICD类型，1-手动录入的标准ICD，2-手动录入的非标准ICD，3-上游解析传递的标准ICD，4-上游解析传递的非标准ICD")
    private Integer type;

    @ApiModelProperty("标准ICD引用ID")
    private String referenceIcdId;

    /**
     * ICD 存储记录编辑参数。
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @ApiModel("ICD存储记录编辑参数")
    public static class UpdateParam extends CsIcdPathParam {

        @ApiModelProperty("ICD记录ID")
        @NotBlank(message = "ICD记录ID不能为空")
        private String id;
    }

    /**
     * ICD 存储记录列表查询参数。
     */
    @Data
    @ApiModel("ICD存储记录列表查询参数")
    public static class ListParam {

        @ApiModelProperty("关键字，匹配ICD名称")
        private String keyword;

        @ApiModelProperty("ICD类型，1-手动录入的标准ICD，2-手动录入的非标准ICD，3-上游解析传递的标准ICD，4-上游解析传递的非标准ICD")
        private Integer type;

        @ApiModelProperty("ICD校验结果，0-否，1-是")
        private Integer result;
    }
}
