12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using WCS.Entity.Protocol;
- using WCS.Service.Extensions;
- using WCS.Service.Log;
- namespace WCS.Service.Helpers
- {
- /// <summary>
- /// 设备任务时长统计
- /// </summary>
- public static class DeviceTaskTimeHelper
- {
- public static List<DeviceTaskTimeViewModel> deviceTaskTimes = new List<DeviceTaskTimeViewModel>();
- /// <summary>
- /// 添加AGV开始记录
- /// </summary>
- public static void Add(this RGVDevice rgv)
- {
- if (deviceTaskTimes.Any(v => v.DeviceCode == rgv.Entity.CODE)) return;
- deviceTaskTimes.Add(new DeviceTaskTimeViewModel
- {
- DeviceCode = rgv.Entity.CODE,
- StartTime = DateTime.Now,
- TaskType = rgv.Data.TaskType_1.ToString(),
- StartAdd = rgv.CurrentStation().Entity.CODE,
- EndAdd = rgv.Data.DestPosition_1.ToString(),
- });
- }
- /// <summary>
- /// 添加AGV开始记录
- /// </summary>
- public static void End(this RGVDevice rgv)
- {
- 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()))
- {
- var deviceTaskTime= deviceTaskTimes.Find(v => v.DeviceCode == rgv.Entity.CODE);
- deviceTaskTime.EndTime= DateTime.Now;
- deviceTaskTime.SumTime = (deviceTaskTime.StartTime - deviceTaskTime.EndTime).TotalSeconds;
- InfoLog.INFO_DEVICETASKTIME(JsonConvert.SerializeObject(deviceTaskTime));
- deviceTaskTimes.Remove(deviceTaskTime);
- }
- }
- }
- /// <summary>
- ///
- /// </summary>
- public class DeviceTaskTimeViewModel
- {
- /// <summary>
- /// 设备号
- /// </summary>
- public string DeviceCode { get; set; }
- /// <summary>
- /// 开始时间
- /// </summary>
- public DateTime StartTime { get; set; }
- /// <summary>
- /// 结束时间
- /// </summary>
- public DateTime EndTime { get; set; }
- /// <summary>
- /// 总计时间
- /// </summary>
- public double SumTime { get; set; }
- /// <summary>
- /// 任务类型
- /// </summary>
- public string TaskType { get; set; }
- /// <summary>
- /// 起始地址
- /// </summary>
- public string StartAdd { get; set; }
- /// <summary>
- /// 目标地址
- /// </summary>
- public string EndAdd { get; set; }
- }
- }
|