Asoka.Wang 21f044712c 1
2025-08-27 18:39:19 +08:00

67 lines
2.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using NPP.SmartSchedue.Api.Contracts.Services.Integration.Output;
namespace NPP.SmartSchedue.Api.Contracts.Services.Integration
{
/// <summary>
/// 设备服务客户端接口
/// 用于调度模块与EAM设备管理模块之间的通信
/// 避免直接依赖EAM模块的服务接口实现模块解耦
/// </summary>
public interface IEquipmentClientService
{
/// <summary>
/// 获取指定日期的可用设备列表
/// 用于任务整合前的资源充足性检查
/// </summary>
/// <param name="date">指定日期</param>
/// <param name="processId">工序ID可选用于筛选特定工序的设备</param>
/// <returns>可用设备列表</returns>
Task<List<EquipmentBasicInfo>> GetAvailableEquipmentAsync(DateTime date, long? processId = null);
/// <summary>
/// 检查指定设备在指定日期是否可用
/// 用于验证特定设备的可用性状态
/// </summary>
/// <param name="equipmentId">设备ID</param>
/// <param name="date">指定日期</param>
/// <returns>是否可用</returns>
Task<bool> IsEquipmentAvailableAsync(long equipmentId, DateTime date);
/// <summary>
/// 获取指定日期范围内的设备使用统计
/// 用于资源容量计算和负荷分析
/// </summary>
/// <param name="startDate">开始日期</param>
/// <param name="endDate">结束日期</param>
/// <returns>设备使用统计信息</returns>
Task<EquipmentUsageStatistics> GetEquipmentUsageStatisticsAsync(DateTime startDate, DateTime endDate);
/// <summary>
/// 获取指定日期需要维护的设备列表
/// 用于计算维护中不可用的设备数量
/// </summary>
/// <param name="date">指定日期</param>
/// <returns>需要维护的设备列表</returns>
Task<List<EquipmentBasicInfo>> GetMaintenanceEquipmentAsync(DateTime date);
/// <summary>
/// 获取指定日期需要校验的设备列表
/// 用于计算校验中不可用的设备数量
/// </summary>
/// <param name="date">指定日期</param>
/// <returns>需要校验的设备列表</returns>
Task<List<EquipmentBasicInfo>> GetCalibrationEquipmentAsync(DateTime date);
/// <summary>
/// 批量检查设备可用性
/// 用于大批量任务的设备资源验证,提高查询效率
/// </summary>
/// <param name="equipmentIds">设备ID列表</param>
/// <param name="date">指定日期</param>
/// <returns>设备可用性状态字典Key为设备IDValue为是否可用</returns>
Task<Dictionary<long, bool>> BatchCheckEquipmentAvailabilityAsync(List<long> equipmentIds, DateTime date);
}
}