using System;
using System.Collections.Generic;

namespace NPP.SmartSchedue.Api.Contracts.Services.Integration.Output
{
    /// <summary>
    /// 设备基础信息
    /// 用于调度模块获取设备的基本信息，不依赖EAM模块的完整设备实体
    /// </summary>
    public class EquipmentBasicInfo
    {
        /// <summary>
        /// 设备ID
        /// </summary>
        public long Id { get; set; }

        /// <summary>
        /// 设备编码
        /// </summary>
        public string EquipmentCode { get; set; } = string.Empty;

        /// <summary>
        /// 设备名称
        /// </summary>
        public string EquipmentName { get; set; } = string.Empty;

        /// <summary>
        /// 设备类型
        /// </summary>
        public string EquipmentType { get; set; } = string.Empty;

        /// <summary>
        /// 设备状态
        /// 正常、维护中、故障、校验中等
        /// </summary>
        public string Status { get; set; } = string.Empty;

        /// <summary>
        /// 设备位置
        /// </summary>
        public string Location { get; set; } = string.Empty;

        /// <summary>
        /// 适用工序ID列表
        /// 用于判断设备是否适用于特定工序
        /// </summary>
        public List<long> ApplicableProcessIds { get; set; } = new List<long>();

        /// <summary>
        /// 设备容量
        /// 表示设备每小时可处理的工作量
        /// </summary>
        public decimal Capacity { get; set; }

        /// <summary>
        /// 是否可用
        /// 综合考虑设备状态、维护计划、校验计划等因素
        /// </summary>
        public bool IsAvailable { get; set; }

        /// <summary>
        /// 下次维护时间
        /// 用于预测设备的可用时间窗口
        /// </summary>
        public DateTime? NextMaintenanceDate { get; set; }

        /// <summary>
        /// 下次校验时间
        /// 用于预测设备的可用时间窗口
        /// </summary>
        public DateTime? NextCalibrationDate { get; set; }
    }
}