using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using NPP.SmartSchedue.Api.Contracts.Services.Equipment.Dto;
namespace NPP.SmartSchedue.Api.Contracts.Services.Equipment;
///
/// 设备统计分析服务接口
/// 提供按设备类型的统计分析功能,独立于设备分配业务逻辑
///
public interface IEquipmentStatisticsService
{
///
/// 按设备类型统计设备数量和状态分布
/// 深度业务场景:支持生产规划时了解各类型设备资源配置情况
///
/// 统计开始日期
/// 统计结束日期
/// 是否包含非活跃设备(报废、停用等)
/// 按设备类型分组的统计结果
Task> GetEquipmentStatisticsByTypeAsync(
DateTime? startDate = null,
DateTime? endDate = null,
bool includeInactive = false);
///
/// 按设备类型统计使用率和工作负荷
/// 深度业务场景:支持设备使用效率分析和设备采购决策
///
/// 统计开始日期
/// 统计结束日期
/// 设备类型使用率统计
Task> GetEquipmentUsageByTypeAsync(
DateTime startDate,
DateTime endDate);
///
/// 按设备类型统计任务分配情况
/// 深度业务场景:支持工艺流程分析和设备负荷均衡评估
///
/// 统计开始日期
/// 统计结束日期
/// 是否包含已完成任务
/// 设备类型任务分配统计
Task> GetTaskAllocationByTypeAsync(
DateTime startDate,
DateTime endDate,
bool includeCompletedTasks = true);
///
/// 获取设备类型趋势分析数据
/// 深度业务场景:支持长期设备投资规划和维护策略制定
///
/// 指定设备类型,null则返回所有类型
/// 分析开始日期
/// 分析结束日期
/// 分组周期:Day, Week, Month
/// 设备类型趋势数据
Task> GetEquipmentTypeTrendAsync(
string? equipmentType,
DateTime startDate,
DateTime endDate,
string groupByPeriod = "Day");
}