/**
 * 设备类型
 * @param devId 主键ID
 * @param clientId 设备ID
 * @param userId 用户ID
 * @param devName 设备名称
 * @param devType 设备类型
 * @param online 设备状态：0-离线，1-在线
 * @param devWarn 设备报警：0-正常，1-报警
 * @param software 软件版本
 * @param hardware 硬件版本
 * @param wifiName 无线网络名称
 * @param wifiPassword 无线网络密码
 * @param ip IP地址
 * @param mountPlain 安装方式：Wall-墙装，Ceiling-顶装
 * @param startX 跟踪区域起始X坐标
 * @param startY 跟踪区域起始Y坐标
 * @param startZ 跟踪区域起始Z坐标
 * @param stopX 跟踪区域结束X坐标
 * @param stopY 跟踪区域结束Y坐标
 * @param stopZ 跟踪区域结束Z坐标
 * @param height 安装高度
 * @param length 房间长度
 * @param width 房间宽度
 * @param targetPoints target数组 雷达的mqtt目标值
 * @param signalTime 信号时间
 * @param northAngle 北向角度
 * @param x 安装坐标x
 * @param y 安装坐标y
 * @param statusLight 状态灯：0-关闭，1-开启
 * @param createId 创建人
 * @param updateId 修改人
 * @param createTime 创建时间
 * @param updateTime 修改时间
 */
export interface Device {
  devId: number // 主键ID
  clientId: string // 设备ID
  userId: number // 用户ID
  devName: string // 设备名称
  devType: string // 设备类型
  online: 0 | 1 // 设备状态：0-离线，1-在线
  devWarn: 0 | 1 // 设备报警：0-正常，1-报警
  software: string // 软件版本
  hardware: string // 硬件版本
  wifiName: string // 无线网络名称
  wifiPassword: string // 无线网络密码
  ip: string // IP地址
  mountPlain: 'Wall' | 'Ceiling' // 安装方式：Wall-墙装，Ceiling-顶装
  startX: number // 跟踪区域起始X坐标
  startY: number // 跟踪区域起始Y坐标
  startZ: number // 跟踪区域起始Z坐标
  stopX: number // 跟踪区域结束X坐标
  stopY: number // 跟踪区域结束Y坐标
  stopZ: number // 跟踪区域结束Z坐标
  height: number // 安装高度
  length: number // 房间长度
  width: number // 房间宽度
  targetPoints: object // target数组 雷达的mqtt目标值
  signalTime: string // 信号时间
  northAngle: number // 北向角度
  x: number // 安装坐标x
  y: number // 安装坐标y
  statusLight: 0 | 1 // 状态灯：0-关闭，1-开启
  createId: string // 创建人
  updateId: string // 修改人
  createTime: string // 创建时间
  updateTime: string // 修改时间
}

/**
 * 设备列表请求参数
 * @param userId 用户ID
 * @param pageNum 页码
 * @param pageSize 每页数量
 * @param deviceId 设备ID（可选）
 * @param createTimeStart 创建时间开始（可选）
 * @param createTimeEnd 创建时间结束（可选）
 */
export interface DeviceListParams {
  pageNo: number // 当前页码
  pageSize: number // 页面大小
  clientId?: string // 设备ID
  devName?: string // 设备名称
  online?: number | null // 设备状态：0-离线，1-在线
  createTimeStart?: string // 起始时间 格式yyyy-MM-dd
  createTimeEnd?: string // 结束时间 格式yyyy-MM-dd
  tenantId?: string | null // 租户ID
}

/**
 * 设备列表响应数据
 */
export interface DeviceListData {
  rows: Device[]
  total: number
  pageNum: number
  pageSize: number
  outTotalPageNum: number
  totalPageNum: number
}

/**
 * 设备详情请求参数
 * @param userId 用户ID
 * @param deviceId 设备ID
 */
export interface DeviceDetailParams {
  userId: string
  deviceId: string
}

/**
 * 添加设备请求参数
 * @param dev_id 设备ID
 * @param dev_type 设备类型
 * @param software 软件版本
 */
export interface AddDeviceParams {
  clientId: string // 设备ID
  devType: string // 设备类型
  software?: string // 软件版本
  hardware: string // 硬件版本
  tenantId: string | null // 租户ID
}

/**
 * 删除设备请求参数
 * @param userId 用户ID
 * @param deviceId 设备ID
 */
export interface DeleteDeviceParams {
  userId: string
  deviceId: string
}

/**
 * 批量导入设备请求参数
 * @param userId 用户ID
 * @param file 文件
 */
export interface UploadDevInfoParams {
  userId: string
  file: File
}

/**
 * 设备详情，返回数据
 * @param devId 主键ID
 * @param clientId 设备ID
 * @param userId 用户ID
 * @param devName 设备名称
 * @param devType 设备类型
 * @param online 设备状态：0-离线，1-在线
 * @param devWarn 设备报警：0-正常，1-报警
 * @param software 软件版本
 * @param hardware 硬件版本
 * @param wifiName 无线网络名称
 * @param wifiPassword 无线网络密码
 * @param ip IP地址
 * @param mountPlain 安装方式：Wall-墙装，Ceiling-顶装
 * @param installPosition 安装位置：Toilet-卫生间,Bedroom-卧室,LivingRoom-客厅,Restaurant-餐厅
 * @param xxStart 雷达监测范围x开始，范围：-200-200 cm之内
 * @param xxEnd 雷达监测范围x结束，范围：-200-200 cm之内，且xxEnd > xxStart
 * @param yyStart 雷达监测范围y开始，范围：-250-250 cm之内
 * @param yyEnd 雷达监测范围y结束，范围：-250-250 cm之内，且yyEnd > yyStart
 * @param zzStart 雷达监测范围z开始，范围：0-5 cm之内
 * @param zzEnd 雷达监测范围z结束，范围：200-300 cm之内
 * @param height 安装高度: 250 - 370 cm 之内
 * @param length 雷达监测长度（X） xxEnd-xxStart
 * @param width 	雷达监测宽度（Y） yyEnd-yyStart
 * @param targetPoints target数组 雷达的mqtt目标值
 * @param signalTime 接收target时间
 * @param northAngle 北向夹角 允许传值： 0,90,180,270
 * @param activeTime 激活时间
 * @param statusLight 指示灯开关：0-关闭，1-开启
 * @param createId 创建人
 * @param updateId 修改人
 * @param createTime 创建时间
 * @param updateTime 修改时间
 */
export interface DeviceDetailData {
  devId: ID // 主键ID
  clientId: ID // 设备ID
  tenantId: ID // 租户ID
  tenantName: string // 租户名称
  userId: ID // 用户ID
  devName: string //设备名称
  devType: string // 设备类型
  online: Switch // 设备状态：0-离线，1-在线
  devWarn: Switch // 设备报警：0-正常，1-报警
  software: string // 软件版本
  hardware: string // 硬件版本
  wifiName: string // 无线网络名称
  wifiPassword: string // 无线网络密码
  ip: string // IP地址
  fallingConfirm: ID // 设备跌倒确认时间 通常180s
  mountPlain: InstallWay // 安装方式：Wall-墙装，Ceiling-顶装
  installPosition: InstallPosition // 安装位置：Toilet-卫生间,Bedroom-卧室,LivingRoom-客厅,Restaurant-餐厅
  xxStart: ID // 雷达监测范围x开始，范围：-200-200 cm之内
  xxEnd: ID // 雷达监测范围x结束，范围：-200-200 cm之内，且xxEnd > xxStart
  yyStart: ID // 雷达监测范围y开始，范围：-250-250 cm之内
  yyEnd: ID // 雷达监测范围y结束，范围：-250-250 cm之内，且yyEnd > yyStart
  zzStart: ID // 雷达监测范围z开始，范围：0-5 cm之内
  zzEnd: ID // 雷达监测范围z结束，范围：200-300 cm之内
  height: ID // 安装高度: 250 - 370 cm 之内
  length: ID // 雷达监测长度（X） xxEnd-xxStart
  width: ID // 	雷达监测宽度（Y） yyEnd-yyStart
  targetPoints: number[] // target数组 雷达的mqtt目标值
  signalTime: ID // 接收target时间
  northAngle: NorthAngle // 北向夹角 允许传值： 0,90,180,270
  activeTime: string // 激活时间
  statusLight: Switch // 指示灯开关：0-关闭，1-开启
  createId: ID // 创建人
  updateId: ID // 修改人
  createTime: string // 创建时间
  updateTime: string // 修改时间
}

/**
 * 更新设备信息，请求参数
 * @param clientId 设备ID
 * @param userId 用户ID
 * @param tenantId 租户ID
 * @param devName 设备名称：最多10个字符
 * @param height 安装高度: 250 - 370 cm 之内
 * @param wifiName WIFI名称
 * @param wifiPassword WIFI密码
 * @param northAngle 北向夹角 允许传值： 0,90,180,270
 * @param mountPlain 安装方式：Wall-墙装，Ceiling-顶装
 * @param installPosition 安装位置：Toilet-卫生间,Bedroom-卧室,LivingRoom-客厅,Restaurant-餐厅
 * @param xxStart 雷达监测范围x开始，范围：-200-200 cm之内
 * @param xxEnd 雷达监测范围x结束，范围：-200-200 cm之内，且xxEnd > xxStart
 * @param yyStart 雷达监测范围y开始，范围：-250-250 cm之内
 * @param yyEnd 雷达监测范围y结束，范围：-250-250 cm之内，且yyEnd > yyStart
 * @param zzStart 雷达监测范围z开始，范围：0-5 cm之内
 * @param zzEnd 雷达监测范围z结束，范围：200-300 cm之内
 * @param fallingConfirm 设备跌倒确认时间 通常180s
 */
export interface UpdateDeviceParams {
  clientId: string // 设备ID
  userId: ID // 用户ID
  tenantId?: ID // 租户ID
  devName?: string // 设备名称：最多10个字符
  height?: ID // 安装高度: 250 - 370 cm 之内
  wifiName?: string // WIFI名称
  wifiPassword?: string // WIFI密码
  northAngle: NorthAngle // 北向夹角 允许传值： 0,90,180,270
  mountPlain?: InstallWay // 安装方式：Wall-墙装，Ceiling-顶装
  installPosition?: InstallPosition // 安装位置：Toilet-卫生间,Bedroom-卧室,LivingRoom-客厅,Restaurant-餐厅
  xxStart?: ID // 雷达监测范围x开始，范围：-200-200 cm之内
  xxEnd?: ID // 	雷达监测范围x结束，范围：-200-200 cm之内，且xxEnd > xxStart
  yyStart?: ID // 	雷达监测范围y开始，范围：-250-250 cm之内
  yyEnd?: ID // 雷达监测范围y结束，范围：-250-250 cm之内，且yyEnd > yyStart
  zzStart?: ID // 雷达监测范围z开始，范围：0-5 cm之内
  zzEnd?: ID // 雷达监测范围z结束，范围：200-300 cm之内
  fallingConfirm?: ID // 设备跌倒确认时间 通常180s
}
