package cn.iocoder.yudao.module.pms.controller.admin.yanfan.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 物模型 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ThingsModelRespVO {

    @Schema(description = "物模型ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18602")
    @ExcelProperty("物模型ID")
    private Long modelId;

    @Schema(description = "物模型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @ExcelProperty("物模型名称")
    private String modelName;

    @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15345")
    @ExcelProperty("产品ID")
    private Long productId;

    @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("产品名称")
    private String productName;

    @Schema(description = "租户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @ExcelProperty("租户名称")
    private String tenantName;

    @Schema(description = "标识符，产品下唯一", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("标识符，产品下唯一")
    private String identifier;

    @Schema(description = "模型类别（1-属性，2-功能，3-事件）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("模型类别（1-属性，2-功能，3-事件）")
    private Boolean type;

    @Schema(description = "数据类型（integer、decimal、string、bool、array、enum）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("数据类型（integer、decimal、string、bool、array、enum）")
    private String datatype;

    @Schema(description = "数据定义")
    @ExcelProperty("数据定义")
    private String specs;

    @Schema(description = "是否图表展示（0-否，1-是）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否图表展示（0-否，1-是）")
    private Boolean isChart;

    @Schema(description = "是否实时监测（0-否，1-是）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否实时监测（0-否，1-是）")
    private Boolean isMonitor;

    @Schema(description = "是否历史存储（0-否，1-是）")
    @ExcelProperty("是否历史存储（0-否，1-是）")
    private Boolean isHistory;

    @Schema(description = "是否只读数据(0-否，1-是)")
    @ExcelProperty("是否只读数据(0-否，1-是)")
    private Boolean isReadonly;

    @Schema(description = "是否设备分享权限(0-否，1-是)")
    @ExcelProperty("是否设备分享权限(0-否，1-是)")
    private Boolean isSharePerm;

    @Schema(description = "排序，值越大，排序越靠前")
    @ExcelProperty("排序，值越大，排序越靠前")
    private Integer modelOrder;

    @Schema(description = "删除标志（0代表存在 2代表删除）")
    @ExcelProperty("删除标志（0代表存在 2代表删除）")
    private String delFlag;

    @Schema(description = "创建者")
    @ExcelProperty("创建者")
    private String createBy;

    @Schema(description = "创建时间")
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新者")
    @ExcelProperty("更新者")
    private String updateBy;

    @Schema(description = "备注", example = "你说的对")
    @ExcelProperty("备注")
    private String remark;

    @Schema(description = "从机id", example = "25392")
    @ExcelProperty("从机id")
    private Long tempSlaveId;

    @Schema(description = "计算公式")
    @ExcelProperty("计算公式")
    private String formula;

    @Schema(description = "控制公式")
    @ExcelProperty("控制公式")
    private String reverseFormula;

    @Schema(description = "寄存器地址值")
    @ExcelProperty("寄存器地址值")
    private Integer regAddr;

    @Schema(description = "位定义选项")
    @ExcelProperty("位定义选项")
    private String bitOption;

    @Schema(description = "解析类型 1.数值 2.选项", example = "1")
    @ExcelProperty("解析类型 1.数值 2.选项")
    private String valueType;

    @Schema(description = "是否是计算参数")
    @ExcelProperty("是否是计算参数")
    private Integer isParams;

    @Schema(description = "读取寄存器数量")
    @ExcelProperty("读取寄存器数量")
    private Integer quantity;

    @Schema(description = "modbus功能码")
    @ExcelProperty("modbus功能码")
    private String code;

    @Schema(description = "modbus解析类型", example = "1")
    @ExcelProperty("modbus解析类型")
    private String parseType;

    @Schema(description = "是否在APP显示(0-否，1-是)")
    @ExcelProperty("是否在APP显示(0-否，1-是)")
    private Boolean isApp;

}
