88 lines
2.4 KiB
C#
88 lines
2.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace TrainInfomationProviderService.TrainInfo.Entities
|
|
{
|
|
public class TrainTransitOnceResult
|
|
{
|
|
public TrainLineSegment First { get; private set; }
|
|
|
|
public TrainLineSegment Second { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 不推荐车次
|
|
/// </summary>
|
|
public bool NotRecommand { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 创建 <see cref="TrainTransitOnceResult" /> 的新实例(TrainTransitOnceResult)
|
|
/// </summary>
|
|
/// <param name="first"></param>
|
|
/// <param name="second"></param>
|
|
public TrainTransitOnceResult(TrainLineSegment first, TrainLineSegment second, DateTime date, bool notRecommand=false)
|
|
{
|
|
First = first;
|
|
Second = second;
|
|
InitTimeInfo(date);
|
|
NotRecommand = notRecommand;
|
|
}
|
|
|
|
void InitTimeInfo(DateTime date)
|
|
{
|
|
FirstTrainLeftDate = date.Add(First.From.Left.Value.AddDays(-First.From.Left.Value.Days));
|
|
FirstTrainArriveDate = FirstTrainLeftDate.Add(First.ElapsedTime);
|
|
|
|
SecondTrainLeftDate = FirstTrainArriveDate.Date.Add(Second.From.Left.Value.AddDays(-Second.From.Left.Value.Days));
|
|
if (SecondTrainLeftDate < FirstTrainArriveDate)
|
|
SecondTrainLeftDate = SecondTrainLeftDate.AddDays(1);
|
|
SecondTrainArriveDate = SecondTrainLeftDate.Add(Second.ElapsedTime);
|
|
|
|
WaitElaspsedTime = SecondTrainLeftDate - FirstTrainArriveDate;
|
|
TotalElapsedTime = SecondTrainArriveDate - FirstTrainLeftDate;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 前车出发时间
|
|
/// </summary>
|
|
public DateTime FirstTrainLeftDate { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 前车到达时间
|
|
/// </summary>
|
|
public DateTime FirstTrainArriveDate { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 后车出发时间
|
|
/// </summary>
|
|
public DateTime SecondTrainLeftDate { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 后车到达时间
|
|
/// </summary>
|
|
public DateTime SecondTrainArriveDate { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 前车历时
|
|
/// </summary>
|
|
public TimeSpan FirstElapsedTime { get { return First.ElapsedTime; } }
|
|
|
|
/// <summary>
|
|
/// 后车历时
|
|
/// </summary>
|
|
public TimeSpan SecondElapsedTime { get { return Second.ElapsedTime; } }
|
|
|
|
/// <summary>
|
|
/// 等待耗时
|
|
/// </summary>
|
|
public TimeSpan WaitElaspsedTime { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 总时间
|
|
/// </summary>
|
|
public TimeSpan TotalElapsedTime { get; private set; }
|
|
}
|
|
}
|