paiban/NPP.SmartSchedue.Api.Contracts/Services/Equipment/IEquipmentStatisticsService.cs
Asoka.Wang 21f044712c 1
2025-08-27 18:39:19 +08:00

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