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

295 lines
8.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 Minio;
using NPP.SmartSchedue.Api.Contracts.Core.Enums;
using NPP.SmartSchedue.Api.Contracts.Services.Work.Input;
namespace NPP.SmartSchedue.Api.Contracts.Services.Integration.Output
{
/// <summary>
/// 任务整合列表输出
/// </summary>
public class TaskIntegrationListOutput
{
/// <summary>
/// 按项目号分组的任务列表
/// </summary>
public List<ProjectTaskGroup> ProjectTaskGroups { get; set; } = new();
/// <summary>
/// 总任务数量
/// </summary>
public int TotalTaskCount { get; set; }
/// <summary>
/// 总项目数量
/// </summary>
public int TotalProjectCount { get; set; }
/// <summary>
/// 总页数
/// </summary>
public int TotalPages { get; set; }
/// <summary>
/// 当前页码
/// </summary>
public int CurrentPage { get; set; }
}
/// <summary>
/// 项目任务分组
/// </summary>
public class ProjectTaskGroup
{
/// <summary>
/// 项目号
/// </summary>
public string ProjectNumber { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 项目类别
/// </summary>
public string ProjectCategory { get; set; }
/// <summary>
/// 该项目下的任务列表
/// </summary>
public List<WorkOrderSummary> Tasks { get; set; } = new();
/// <summary>
/// 项目任务总数
/// </summary>
public int TaskCount { get; set; }
/// <summary>
/// 项目预计总工时
/// </summary>
public decimal EstimatedTotalHours { get; set; }
/// <summary>
/// 项目最早开始日期
/// </summary>
public DateTime EarliestStartDate { get; set; }
/// <summary>
/// 项目最晚结束日期
/// </summary>
public DateTime LatestEndDate { get; set; }
}
/// <summary>
/// 工作任务摘要
/// </summary>
public class WorkOrderSummary
{
public long Id { get; set; }
public string WorkOrderCode { get; set; }
public DateTime WorkOrderDate { get; set; }
public long ShiftId { get; set; }
public string ShiftName { get; set; }
public string ShiftCode { get; set; }
public long ProcessId { get; set; }
public string ProcessName { get; set; }
public string ProcessCode { get; set; }
public decimal? EstimatedHours { get; set; }
public int Status { get; set; }
public int Priority { get; set; }
public int UrgencyLevel { get; set; }
public int ComplexityLevel { get; set; }
/// <summary>
/// 是否已分配人员
/// </summary>
public bool HasAssignedPersonnel { get; set; }
/// <summary>
/// 是否已分配设备
/// </summary>
public bool HasAssignedEquipment { get; set; }
/// <summary>
/// 关联的FL人员信息
/// </summary>
public List<FLPersonnelInfo> FLPersonnels { get; set; } = new();
}
/// <summary>
/// 任务整合前自检结果
/// </summary>
public class TaskIntegrationPreCheckResult
{
/// <summary>
/// 自检是否通过
/// </summary>
public bool IsCheckPassed { get; set; }
/// <summary>
/// 检查的项目数量
/// </summary>
public int CheckedProjectCount { get; set; }
/// <summary>
/// 检查的任务数量
/// </summary>
public int CheckedTaskCount { get; set; }
/// <summary>
/// 项目资源充足性检查结果
/// </summary>
public List<ProjectResourceSufficiencyResult> ProjectResourceResults { get; set; } = new();
/// <summary>
/// 整体检查摘要
/// </summary>
public string CheckSummary { get; set; }
/// <summary>
/// 检查时间
/// </summary>
public DateTime CheckTime { get; set; } = DateTime.Now;
/// <summary>
/// 警告信息
/// </summary>
public List<string> Warnings { get; set; } = new();
/// <summary>
/// 错误信息
/// </summary>
public List<string> Errors { get; set; } = new();
}
/// <summary>
/// 项目资源充足性结果
/// </summary>
public class ProjectResourceSufficiencyResult
{
/// <summary>
/// 项目号
/// </summary>
public string ProjectNumber { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 人员资源充足性
/// </summary>
public bool IsPersonnelSufficient { get; set; }
/// <summary>
/// 设备资源充足性
/// </summary>
public bool IsEquipmentSufficient { get; set; }
/// <summary>
/// 详细的资源分析
/// </summary>
public ProjectResourceAnalysis ResourceAnalysis { get; set; }
}
/// <summary>
/// 项目资源分析
/// </summary>
public class ProjectResourceAnalysis
{
/// <summary>
/// 按日的人员需求分析
/// </summary>
public List<DailyResourceDemand> DailyDemands { get; set; } = new();
/// <summary>
/// 按周的人员需求分析
/// </summary>
public List<WeeklyResourceDemand> WeeklyDemands { get; set; } = new();
}
/// <summary>
/// 日资源需求
/// </summary>
public class DailyResourceDemand
{
public DateTime Date { get; set; }
public int RequiredPersonnelCount { get; set; }
public int AvailablePersonnelCount { get; set; }
public int RequiredEquipmentCount { get; set; }
public int AvailableEquipmentCount { get; set; }
public decimal EstimatedWorkHours { get; set; }
public bool IsSufficient => AvailablePersonnelCount >= RequiredPersonnelCount &&
AvailableEquipmentCount >= RequiredEquipmentCount;
}
/// <summary>
/// 周资源需求
/// </summary>
public class WeeklyResourceDemand
{
public DateTime WeekStartDate { get; set; }
public DateTime WeekEndDate { get; set; }
public int RequiredPersonnelCount { get; set; }
public int AvailablePersonnelCount { get; set; }
public int RequiredEquipmentCount { get; set; }
public int AvailableEquipmentCount { get; set; }
public decimal EstimatedWorkHours { get; set; }
public bool IsSufficient => AvailablePersonnelCount >= RequiredPersonnelCount &&
AvailableEquipmentCount >= RequiredEquipmentCount;
}
/// <summary>
/// 项目资源对比结果
/// </summary>
public class ProjectResourceComparisonResult
{
/// <summary>
/// 对比维度
/// </summary>
public string ComparisonDimension { get; set; }
/// <summary>
/// 对比时间范围
/// </summary>
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
/// <summary>
/// 项目资源对比详情
/// </summary>
public List<ProjectResourceComparison> ProjectComparisons { get; set; } = new();
/// <summary>
/// 总体资源充足性
/// </summary>
public bool OverallSufficiency { get; set; }
/// <summary>
/// 资源紧张度评分0-100100表示资源非常紧张
/// </summary>
public int ResourceTensionScore { get; set; }
}
/// <summary>
/// 项目资源对比
/// </summary>
public class ProjectResourceComparison
{
public string ProjectNumber { get; set; }
public string ProjectName { get; set; }
public int TotalTaskCount { get; set; }
public decimal? TotalEstimatedHours { get; set; }
public int PeakPersonnelDemand { get; set; }
public int AvailablePersonnelCapacity { get; set; }
public int PeakEquipmentDemand { get; set; }
public int AvailableEquipmentCapacity { get; set; }
public string ResourceStatus { get; set; } // "充足"、"紧张"、"不足"
public List<string> Recommendations { get; set; } = new();
}
}