DeviceTaskTimeHelper.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using WCS.Entity.Protocol;
  6. using WCS.Service.Extensions;
  7. using WCS.Service.Log;
  8. namespace WCS.Service.Helpers
  9. {
  10. /// <summary>
  11. /// 设备任务时长统计
  12. /// </summary>
  13. public static class DeviceTaskTimeHelper
  14. {
  15. public static List<DeviceTaskTimeViewModel> deviceTaskTimes = new List<DeviceTaskTimeViewModel>();
  16. /// <summary>
  17. /// 添加AGV开始记录
  18. /// </summary>
  19. public static void Add(this RGVDevice rgv)
  20. {
  21. if (deviceTaskTimes.Any(v => v.DeviceCode == rgv.Entity.CODE)) return;
  22. deviceTaskTimes.Add(new DeviceTaskTimeViewModel
  23. {
  24. DeviceCode = rgv.Entity.CODE,
  25. StartTime = DateTime.Now,
  26. TaskType = rgv.Data.TaskType_1.ToString(),
  27. StartAdd = rgv.CurrentStation().Entity.CODE,
  28. EndAdd = rgv.Data.DestPosition_1.ToString(),
  29. });
  30. }
  31. /// <summary>
  32. /// 添加AGV开始记录
  33. /// </summary>
  34. public static void End(this RGVDevice rgv)
  35. {
  36. if (rgv.Data2.Status_1.HasFlag(RGVStatus.RGV到站) && rgv.Data2.Status_1.HasFlag(RGVStatus.任务完成) && deviceTaskTimes.Any(v => v.DeviceCode == rgv.Entity.CODE && v.TaskType == rgv.Data2.TaskType_1.ToString()))
  37. {
  38. var deviceTaskTime= deviceTaskTimes.Find(v => v.DeviceCode == rgv.Entity.CODE);
  39. deviceTaskTime.EndTime= DateTime.Now;
  40. deviceTaskTime.SumTime = (deviceTaskTime.StartTime - deviceTaskTime.EndTime).TotalSeconds;
  41. InfoLog.INFO_DEVICETASKTIME(JsonConvert.SerializeObject(deviceTaskTime));
  42. deviceTaskTimes.Remove(deviceTaskTime);
  43. }
  44. }
  45. }
  46. /// <summary>
  47. ///
  48. /// </summary>
  49. public class DeviceTaskTimeViewModel
  50. {
  51. /// <summary>
  52. /// 设备号
  53. /// </summary>
  54. public string DeviceCode { get; set; }
  55. /// <summary>
  56. /// 开始时间
  57. /// </summary>
  58. public DateTime StartTime { get; set; }
  59. /// <summary>
  60. /// 结束时间
  61. /// </summary>
  62. public DateTime EndTime { get; set; }
  63. /// <summary>
  64. /// 总计时间
  65. /// </summary>
  66. public double SumTime { get; set; }
  67. /// <summary>
  68. /// 任务类型
  69. /// </summary>
  70. public string TaskType { get; set; }
  71. /// <summary>
  72. /// 起始地址
  73. /// </summary>
  74. public string StartAdd { get; set; }
  75. /// <summary>
  76. /// 目标地址
  77. /// </summary>
  78. public string EndAdd { get; set; }
  79. }
  80. }