ActionParameterDefinition.cs 3.59 KB
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
using Rcs.Domain.Enums;

namespace Rcs.Domain.Entities
{
    /// <summary>
    /// 动作参数定义实体 - 定义动作所需的参数
    /// </summary>
    [Table("action_parameter_definitions")]
    public partial class ActionParameterDefinition : Entity
    {
        /// <summary>
        /// 系统ID
        /// </summary>
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        [Column("param_id")]
        public Guid ParamId { get; set; }

        /// <summary>
        /// 动作配置ID(外键)
        /// </summary>
        [Required]
        [Column("action_config_id")]
        public Guid ActionConfigId { get; set; }

        /// <summary>
        /// 参数名称(如:stationType、loadType、height等)
        /// </summary>
        [Required]
        [Column("parameter_name")]
        [MaxLength(100)]
        public string ParameterName { get; set; } = string.Empty;

        /// <summary>
        /// 参数值类型(string、int、float、bool)
        /// </summary>
        [Required]
        [Column("parameter_value_type")]
        public ParameterValueType ParameterValueType { get; set; }

        /// <summary>
        /// 参数描述
        /// </summary>
        [Column("parameter_description")]
        [MaxLength(500)]
        public string? ParameterDescription { get; set; }

        /// <summary>
        /// 是否必填
        /// </summary>
        [Column("is_mandatory")]
        public bool IsMandatory { get; set; } = false;

        /// <summary>
        /// 默认值(JSON格式存储)
        /// </summary>
        [Column("default_value")]
        [MaxLength(500)]
        public string? DefaultValue { get; set; }

        /// <summary>
        /// 参数值来源类型(常量、任务属性、机器人属性等)
        /// </summary>
        [Column("parameter_source_type")]
        public ParameterSourceType? ParameterSourceType { get; set; }

        /// <summary>
        /// 参数值来源路径(如:Task.LoadType、Robot.IPAddress、或常量值)
        /// 支持点号分隔的属性路径,如:Task.LoadType、Robot.CurrentNode.Code
        /// </summary>
        [Column("parameter_source_path")]
        [MaxLength(500)]
        public string? ParameterSourcePath { get; set; }

        /// <summary>
        /// 参数值范围或选项(JSON格式,如:["floor", "rack"] 或 {"min": 0, "max": 100})
        /// </summary>
        [Column("value_constraints")]
        [MaxLength(1000)]
        public string? ValueConstraints { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        [Column("remarks")]
        [MaxLength(1000)]
        public string? Remarks { get; set; }

        /// <summary>
        /// 排序顺序
        /// </summary>
        [Column("sort_order")]
        public int SortOrder { get; set; } = 0;

        /// <summary>
        /// 创建时间
        /// </summary>
        [Column("created_at", TypeName = "timestamp")]
        public DateTime? CreatedAt { get; set; }

        /// <summary>
        /// 更新时间
        /// </summary>
        [Column("updated_at", TypeName = "timestamp")]
        public DateTime? UpdatedAt { get; set; }

        #region 导航属性

        /// <summary>
        /// 动作配置导航属性
        /// </summary>
        [ForeignKey(nameof(ActionConfigId))]
        [JsonIgnore]
        public virtual ActionConfiguration? ActionConfiguration { get; set; }

        #endregion
    }
}