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

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 产品 Response VO")
@Data
@ExcelIgnoreUnannotated
public class IotYfProductRespVO {

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

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

    @Schema(description = "协议编号")
    @ExcelProperty("协议编号")
    private String protocolCode;

    @Schema(description = "产品分类ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4785")
    @ExcelProperty("产品分类ID")
    private Long categoryId;

    @Schema(description = "产品分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @ExcelProperty("产品分类名称")
    private String categoryName;

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

    @Schema(description = "是否系统通用（0-否，1-是）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否系统通用（0-否，1-是）")
    private Boolean isSys;

    @Schema(description = "是否启用授权码（0-否，1-是）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否启用授权码（0-否，1-是）")
    private Boolean isAuthorize;

    @Schema(description = "mqtt账号", example = "11203")
    @ExcelProperty("mqtt账号")
    private String mqttAccount;

    @Schema(description = "mqtt密码")
    @ExcelProperty("mqtt密码")
    private String mqttPassword;

    @Schema(description = "产品秘钥")
    @ExcelProperty("产品秘钥")
    private String mqttSecret;

    @Schema(description = "状态（1-未发布，2-已发布）", example = "2")
    @ExcelProperty("状态（1-未发布，2-已发布）")
    private Integer status;

    @Schema(description = "物模型JSON（属性、功能、事件）")
    @ExcelProperty("物模型JSON（属性、功能、事件）")
    private String thingsModelsJson;

    @Schema(description = "设备类型（1-直连设备、2-网关设备、3-监控设备）", example = "2")
    @ExcelProperty("设备类型（1-直连设备、2-网关设备、3-监控设备）")
    private Integer deviceType;

    @Schema(description = "联网方式（1=wifi、2=蜂窝(2G/3G/4G/5G)、3=以太网、4=其他）")
    @ExcelProperty("联网方式（1=wifi、2=蜂窝(2G/3G/4G/5G)、3=以太网、4=其他）")
    private Integer networkMethod;

    @Schema(description = "认证方式（1-简单认证、2-加密认证、3-简单+加密）")
    @ExcelProperty("认证方式（1-简单认证、2-加密认证、3-简单+加密）")
    private Integer vertificateMethod;

    @Schema(description = "图片地址", example = "https://www.iocoder.cn")
    @ExcelProperty("图片地址")
    private String imgUrl;

    @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 = "产品支持的传输协议")
    @ExcelProperty("产品支持的传输协议")
    private String transport;

    @Schema(description = "定位方式(1=ip自动定位，2=设备定位，3=自定义)")
    @ExcelProperty("定位方式(1=ip自动定位，2=设备定位，3=自定义)")
    private Integer locationWay;

    @Schema(description = "产品关联的组态id", example = "15371")
    @ExcelProperty("产品关联的组态id")
    private String guid;

    @Schema(description = "请求路径", example = "https://www.iocoder.cn")
    @ExcelProperty("请求路径")
    private String url;

    @Schema(description = "请求类型", example = "2")
    @ExcelProperty("请求类型")
    private String methodType;

    @Schema(description = "get请求参数")
    @ExcelProperty("get请求参数")
    private String paramsData;

    @Schema(description = "请求头参数")
    @ExcelProperty("请求头参数")
    private String headers;

    @Schema(description = "post、put请求参数")
    @ExcelProperty("post、put请求参数")
    private String data;

    @Schema(description = "body请求参数类型", example = "1")
    @ExcelProperty("body请求参数类型")
    private String contentType;

    @Schema(description = "请求间隔时间 cron表达式")
    @ExcelProperty("请求间隔时间 cron表达式")
    private String cronExpression;

    @Schema(description = "参数类型", example = "1")
    @ExcelProperty("参数类型")
    private String requestType;

    @Schema(description = "body请求参数类型")
    @ExcelProperty("body请求参数类型")
    private Integer contentTypeNumber;

    @Schema(description = "响应数据key")
    @ExcelProperty("响应数据key")
    private String responseKey;

    @Schema(description = "远程设备地址")
    @ExcelProperty("远程设备地址")
    private String ipAddress;

    @Schema(description = "设备名称", example = "芋艿")
    @ExcelProperty("设备名称")
    private String equipmentName;

    @Schema(description = "SNMP v1/v2c 团体名")
    @ExcelProperty("SNMP v1/v2c 团体名")
    private String community;

    @Schema(description = "oid数组")
    @ExcelProperty("oid数组")
    private String oidListStr;

    @Schema(description = "HTTP用户名", example = "李四")
    @ExcelProperty("HTTP用户名")
    private String username;

    @Schema(description = "HTTP密码")
    @ExcelProperty("HTTP密码")
    private String userpassword;

    @Schema(description = "1为启动，0为不启动，http接口是否需要先登录", example = "1")
    @ExcelProperty("1为启动，0为不启动，http接口是否需要先登录")
    private Integer httptype;

    @Schema(description = "http密钥")
    @ExcelProperty("http密钥")
    private String userkey;

    @Schema(description = "http地址", example = "https://www.iocoder.cn")
    @ExcelProperty("http地址")
    private String httpurl;

    @Schema(description = "部门id", example = "3672")
    @ExcelProperty("部门id")
    private Long deptId;

    private Long templateId;
    /**是否显示上级*/
    private Boolean showSenior;
    private userParmas userParmas;
}
