Exemplo n.º 1
0
        public ICollection <KeyValuePair <string, int> > GetRunTimeForOpMode(DateTime fromTime, DateTime toTime)
        {
            var sw = new Stopwatch();

            if (!Connect(false))
            {
                m_protocolManager.WriteToProtocolFile($"Method {StackTraceUtil.GetCurrentMethod()} failed! Failed to connect to database");
                return(null);
            }

            sw.Start();

            var retval = new Collection <KeyValuePair <string, int> >();

            var from = m_sqlConnection.ColumnValueAsString(fromTime, DataTypes.DateTime);
            var to   = m_sqlConnection.ColumnValueAsString(toTime, DataTypes.DateTime);

            var machineStates = m_sqlConnection.ReadDataFromDB("TraceMachineStates", "Time_Stamp between " + from + " And " + to, "Time_Stamp");

            var measuredTimepans = new Dictionary <string, TimeSpan>();

            for (var i = 0; i < machineStates.Count; i++)
            {
                var timeStamp1 = machineStates[i].GetValue <DateTime>("Time_Stamp");
                var timeStamp2 = i < machineStates.Count - 1 ? machineStates[i + 1].GetValue <DateTime>("Time_Stamp") : toTime;

                var opMode = machineStates[i].GetValue <string>("State");

                if (measuredTimepans.ContainsKey(opMode))
                {
                    measuredTimepans[opMode] += timeStamp2 - timeStamp1;
                }
                else
                {
                    measuredTimepans.Add(opMode, timeStamp2 - timeStamp1);
                }
            }

            sw.Stop();

            foreach (var timeSpan in measuredTimepans)
            {
                retval.Add(new KeyValuePair <string, int>(timeSpan.Key, (int)timeSpan.Value.TotalMinutes));
            }

            return(retval);
        }