TaskTemplate.cs 3.72 KB
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Rcs.Domain.Entities
{
    /// <summary>
    /// 任务模板实体类
    /// </summary>
    [Table("task_templates")]
    public partial class TaskTemplate : Entity
    {
        /// <summary>
        /// 系统ID
        /// </summary>
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        [Column("template_id")]
        public Guid TemplateId { get; set; }

        /// <summary>
        /// 模板编码(唯一标识)
        /// </summary>
        [Required]
        [Column("template_code")]
        [MaxLength(50)]
        public string TemplateCode { get; set; } = string.Empty;

        /// <summary>
        /// 模板名称
        /// </summary>
        [Required]
        [Column("template_name")]
        [MaxLength(100)]
        public string TemplateName { get; set; } = string.Empty;

        /// <summary>
        /// 模板描述
        /// </summary>
        [Column("description")]
        [MaxLength(500)]
        public string? Description { get; set; }

        /// <summary>
        /// 机器人类型(叉取型、潜伏型等)
        /// </summary>
        [Required]
        [Column("robot_type")]
        public RobotType RobotType { get; set; }

        /// <summary>
        /// 制造商
        /// </summary>
        [Column("manufacturer")]
        [MaxLength(100)]
        public string? Manufacturer { get; set; }

        /// <summary>
        /// 是否启用
        /// </summary>
        [Column("is_enabled")]
        public bool IsEnabled { get; set; } = true;

        /// <summary>
        /// 是否为默认模板(同一机器人类型+制造商只能有一个默认模板)
        /// @author zzy
        /// </summary>
        [Column("is_default")]
        public bool IsDefault { get; set; } = false;

        /// <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>
        public virtual ICollection<TaskStep> TaskSteps { get; set; } = new List<TaskStep>();

        #endregion

        public static TaskTemplate Create(string templateCode, string templateName, RobotType robotType, string? description, string? manufacturer, bool isEnabled, bool isDefault = false)
        {
            return new TaskTemplate
            {
                TemplateId = Guid.NewGuid(),
                TemplateCode = templateCode,
                TemplateName = templateName,
                RobotType = robotType,
                Description = description,
                Manufacturer = manufacturer,
                IsEnabled = isEnabled,
                IsDefault = isDefault,
                CreatedAt = DateTime.Now,
                UpdatedAt = DateTime.Now
            };
        }

        public void Update(string templateCode, string templateName, RobotType robotType, string? description, string? manufacturer, bool isEnabled, bool isDefault = false)
        {
            if(!string.IsNullOrWhiteSpace(templateCode)) TemplateCode = templateCode;
            if(!string.IsNullOrWhiteSpace(templateName)) TemplateName = templateName;
            RobotType = robotType;
            Description = description;
            Manufacturer = manufacturer;
            IsEnabled = isEnabled;
            IsDefault = isDefault;
            UpdatedAt = DateTime.Now;
        }
    }
}