package com.iailab.module.data.point.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.iailab.framework.excel.core.annotations.DictFormat;
import com.iailab.framework.excel.core.annotations.ExcelColumnSelect;
import com.iailab.framework.excel.core.convert.DictConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;

/**
 * 用户 Excel 导入 VO
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class PointImportExcelVO {

    @ExcelProperty("测点编码")
    private String pointNo;

    @ExcelProperty("测点名称")
    private String pointName;

    @ExcelProperty(value = "测点类型", converter = DictConvert.class)
    @ExcelColumnSelect(dictType = "data_point_type")
    @DictFormat("data_point_type")
    private String pointType;

    @ExcelProperty(value = "数据类型", converter = DictConvert.class)
    @ExcelColumnSelect(dictType = "point_data_type")
    @DictFormat("point_data_type")
    private String dataType;

    @ExcelProperty("存储类型")
    private String storeType;

    @ExcelProperty("测量单位")
    private String unit;

    @ExcelProperty("单位转换")
    private BigDecimal unittransfactor;

    @ExcelProperty("默认值")
    private BigDecimal defaultValue;

    @ExcelProperty("最大值")
    private BigDecimal maxValue;

    @ExcelProperty("最小值")
    private BigDecimal minValue;

    @ExcelProperty("采集频率")
    private String minfreqid;

    @Schema(description = "备注")
    @ExcelProperty("备注")
    private String remark;

    @ExcelProperty(value = "数据源类型", converter = DictConvert.class)
    @ExcelColumnSelect(dictType = "data_source_type")
    @DictFormat("data_source_type")
    private String sourceType;

    @ExcelProperty("数据源名称")
    private String sourceName;

    @ExcelProperty("测点Tag")
    private String tagNo;

    @ExcelProperty("平滑尺度")
    private Integer dimension;

    @ExcelProperty(value = "值类型", converter = DictConvert.class)
    @ExcelColumnSelect(dictType = "measure_value_type")
    @DictFormat("measure_value_type")
    private String valueType;

    @ExcelProperty("计算公式")
    private String expression;

}