| 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 (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.EndTime - deviceTaskTime.StartTime).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; }    }}
 |