gpt4 book ai didi

c# - 如何建模对象以随时间跟踪设备/ Assets ?

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:46 25 4
gpt4 key购买 nike

我一直在尝试找出对该实体建模的最佳方法,但我遇到了困难。这是基本用例/故事:

我们的设备已抵达现场。在设备到达之前我们不会知道它是什么。设备到达现场后,必须记录其已到达以及它是闲置还是事件的。如果它处于事件状态,则用户必须记下设备执行的工作。设备离开现场时,必须注意这一点。

我应该可以很方便的查询现场有没有设备,之前现场有什么设备等等。

我卡在日期方面了。如果设备在特定日期未被标记为空闲,我试图避免依赖 cron 作业来运行并将设备标记为空闲。感觉应该有办法做到这一点。这是我想出的:

public class Equipment {
public int Id { get; set; }
public Site Site { get; set; }
public DateTime Arrival { get; set; }
public DateTime Departure { get; set; }
public IList<EquipmentUtilization> EquipmentUtilizations { get; set; }
}

public class EquipmentUtilization {
public int Id { get; set; }
public Equipment Equipment { get; set; }
public DateTime ReportDate { get; set; }
public string WorkPerformed { get; set; }
}

我的想法是,我可以运行类似 Site.Equipment.Where(x=>x.Departure == null) 的查询来查看哪些设备仍在现场。如果特定日期没有 EquipmentUtilization,则假定确实处于空闲状态。然后我可以设置一个 DateTimeEnumerator:

public class DateTimeEnumerator : System.Collections.IEnumerable
{
private DateTime begin;
private DateTime end;

public DateTimeEnumerator ( DateTime begin , DateTime end )
{
this.begin = begin;
this.end = end;
}
public System.Collections.IEnumerator GetEnumerator()
{
for(DateTime date = begin; date < end; date = date.AddDays(1))
{
yield return date;
}
}
}

构建从到达日期到 DateTime.Now 或 DepatureDate(如果不为空)的日期列表。出于某种原因,这看起来很丑陋。我应该将 DateTime 枚举器放在 Equipment 对象中吗?感觉这应该全部在一起或以某种不同的方式完成,尽管如果我运行它确实有效。有什么建议吗?

最佳答案

如果我对您的理解是正确的,您会寻求一种方法,根据捕获的与您的设备(也许 EquipmentResidency 是一个更好的名称?)集合关联的设备利用率对象,来确定给定日期在给定站点闲置的设备。

如果您想避免在空闲时间创建 equipmentutilization 对象(我同意这可能需要大量维护),如何向 equipmentutilization 类添加一个 isIdleOn(Date) 方法,如果传递的 Date 与捕获的 ReportDate 和 false 匹配则返回 true如果没有呢?

关联的查询将类似于 Site.Equipment.Where(x=>x.equipmentutilization.isIdleOn(date) == true)

不确定我的语法是否正确,但只是一个建议。

关于c# - 如何建模对象以随时间跟踪设备/ Assets ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3427772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com