RobotDto.cs 7.69 KB
using System.ComponentModel.DataAnnotations;

namespace Rcs.Application.DTOs
{
    /// <summary>
    /// 机器人列表项DTO(用于列表显示)
    /// </summary>
    public class RobotListItemDto
    {
        /// <summary>
        /// 系统ID
        /// </summary>
        public string RobotId { get; set; }

        /// <summary>
        /// 机器人编码
        /// </summary>
        public string RobotCode { get; set; }

        /// <summary>
        /// 机器人名称
        /// </summary>
        public string RobotName { get; set; }

        /// <summary>
        /// 制造商ID
        /// @author zzy
        /// </summary>
        public string? RobotManufacturer { get; set; }

        /// <summary>
        /// 制造商名称
        /// @author zzy
        /// </summary>
        public string? ManufacturerName { get; set; }

        /// <summary>
        /// 序列号
        /// </summary>
        public string RobotSerialNumber { get; set; }

        /// <summary>
        /// 机器人类型ID
        /// @author zzy
        /// </summary>
        public int RobotType { get; set; }

        /// <summary>
        /// 机器人类型名称
        /// @author zzy
        /// </summary>
        public string? RobotTypeName { get; set; }

        /// <summary>
        /// 全向车
        /// </summary>
        public bool IsOmnidirectional { get; set; }
        /// <summary>
        /// IP地址
        /// </summary>
        public string? IpAddress { get; set; }
        /// <summary>
        /// 是否启用
        /// </summary>
        public bool Active { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime? CreatedAt { get; set; }

        /// <summary>
        /// 更新时间
        /// </summary>
        public DateTime? UpdatedAt { get; set; }
    }

    /// <summary>
    /// 机器人详情DTO
    /// </summary>
    public class RobotDto
    {
        /// <summary>
        /// 系统ID
        /// </summary>
        public string RobotId { get; set; }

        /// <summary>
        /// 当前地图
        /// </summary>
        public string? CurrentMapCode { get; set; }
        
        /// <summary>
        /// 当前位置
        /// </summary>
        public string? CurrentNode { get; set; }
        
        /// <summary>
        /// 当前位置x
        /// </summary>
        public double? CurrentX { get; set; }
        
        /// <summary>
        /// 当前位置y
        /// </summary>
        public double? CurrentY { get; set; }
        
        /// <summary>
        /// 坐标换算系数,默认1
        /// </summary>
        public double CoordinateScale { get; set; } = 1d;
        
        /// <summary>
        /// robot编码
        /// </summary>
        public string RobotCode { get; set; }
        
        /// <summary>
        /// robot名称
        /// </summary>
        public string RobotName { get; set; }
        
        /// <summary>
        /// robot版本
        /// </summary>
        public string RobotVersion { get; set; }
        
        /// <summary>
        /// 协议名称
        /// </summary>
        public string ProtocolName { get; set; }
        
        /// <summary>
        /// 协议版本
        /// </summary>
        public string ProtocolVersion { get; set; }

        /// <summary>
        /// 协议类型
        /// @author zzy
        /// </summary>
        public int ProtocolType { get; set; }

        /// <summary>
        /// 制造商ID
        /// @author zzy
        /// </summary>
        public string? RobotManufacturer { get; set; }

        /// <summary>
        /// 序列号
        /// </summary>
        public string RobotSerialNumber { get; set; }

        /// <summary>
        /// 型号
        /// @author zzy
        /// </summary>
        public string? RobotModel { get; set; }

        /// <summary>
        /// robot类型ID
        /// @author zzy
        /// </summary>
        public int RobotType { get; set; }

        /// <summary>
        /// robot类型名称
        /// @author zzy
        /// </summary>
        public string? RobotTypeName { get; set; }
        
        // 动态属性
        /// <summary>
        /// robot状态
        /// </summary>
        public int Status { get; set; }
        
        /// <summary>
        /// 是否在线
        /// </summary>
        public int Online { get; set; }
        
        /// <summary>
        /// 当前电池电量百分比,范围0-100
        /// </summary>
        public int? BatteryLevel { get; set; } = 100;
        
        /// <summary>
        /// 行驶状态,是否动态
        /// </summary>
        public bool Driving { get; set; }
        
        /// <summary>
        /// 暂停状态
        /// </summary>
        public bool Paused { get; set; }
        
        /// <summary>
        /// 充电中
        /// </summary>
        public bool Charging { get; set; }
        
        /// <summary>
        /// 操作模式
        /// </summary>
        public int OperatingMode { get; set; }
        
        /// <summary>
        /// 当前旋转角,范围0-Pi
        /// </summary>
        public double? CurrentTheta { get; set; }
        public string? Errors { get; set; }

        
        // 静态属性
        /// <summary>
        /// 最大载重,单位kg
        /// </summary>
        public double? PayloadCapacity { get; set; }
        
        /// <summary>
        /// 最大速度,单位m/s
        /// </summary>
        public double? SpeedMax { get; set; }
        
        /// <summary>
        /// 最小速度,单位m/s
        /// </summary>
        public double? SpeedMin { get; set; }
        
        /// <summary>
        /// 加速时最大加速度,单位m/s^2
        /// </summary>
        public double? AccelerationMax { get; set; }
        
        /// <summary>
        /// 减速时最大加速度,单位m/s^2
        /// </summary>
        public double? DecelerationMax { get; set; }
        
        /// <summary>
        /// 最小高度 m
        /// </summary>
        public double? HeightMin { get; set; }
        
        /// <summary>
        /// 最大高度m
        /// </summary>
        public double? HeightMax { get; set; }
        
        /// <summary>
        /// 宽度m
        /// </summary>
        public double? Width { get; set; }
        
        /// <summary>
        /// 长度m
        /// </summary>
        public double? Length { get; set; }

        /// <summary>
        /// 是否为全向
        /// </summary>
        public bool IsOmnidirectional { get; set; } = false;
        
        /// <summary>
        /// 转弯半径
        /// </summary>
        public double? Radius { get; set; }

        /// <summary>
        /// 运动中心到货位边缘间距(m)
        /// @author zzy
        /// </summary>
        public double? MotionCenterToEdge { get; set; }

        /// <summary>
        /// IP地址
        /// </summary>
        public string? IpAddress { get; set; }
        
        /// <summary>
        /// 端口
        /// </summary>
        public string? NetPort { get; set; }
        
        /// <summary>
        /// MAC地址
        /// </summary>
        public string? MacAddress { get; set; }
        
        /// <summary>
        /// 是否启用
        /// </summary>
        public bool Active { get; set; }
        
        /// <summary>
        /// 当前order消息ID
        /// </summary>
        public long HeaderId { get; set; }
        
        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime? CreatedAt { get; set; }
        
        /// <summary>
        /// 更新时间
        /// </summary>
        public DateTime? UpdatedAt { get; set; }
    }
}