private bool IsAutoRunning(string autoRunning, IJamLogSearchParameter parameter) { if (parameter.IsAutoRunning == false) return true; bool result; if (bool.TryParse(autoRunning, out result)) { if (parameter.IsAutoRunning == result) return true; else return false; } else return false; }
private bool SelectType(string str, IJamLogSearchParameter parameter) { int type = 0; if (int.TryParse(str, out type) == false) return false; if (type == 1 && parameter.IsMachine) return true; else if (type == 2 && parameter.IsMaterial) return true; else if (type == 3 && parameter.IsHuman) return true; else if (type == 4 && parameter.IsMethod) return true; else return false; }
private bool SelectStatus(string str, IJamLogSearchParameter parameter) { int status = 0; if (int.TryParse(str, out status) == false) return false; if (status == 2 && parameter.IsErrorData) return true; else if (status == 1 && parameter.IsWarningData) return true; return false; }
public IJamLogData GetJamLog(IJamLogSearchParameter parameter, string path) { return LoadAlarmLog(parameter, path); }
private IJamLogData LoadAlarmLog(IJamLogSearchParameter parameter, string path) { LoadAlarmTypes(); DateTime startDate; DateTime endDate; try { startDate = DateTime.Parse(parameter.StartDate); endDate = DateTime.Parse(parameter.EndDate); } catch { return null; } TimeSpan startTime; TimeSpan endTime; if (TimeSpan.TryParse(parameter.StartTime, out startTime) == false) { return null; } if (TimeSpan.TryParse(parameter.EndTime, out endTime) == false) { return null; } DateTime now = DateTime.Now; startDate = new DateTime(startDate.Year, startDate.Month, startDate.Day, startTime.Hours, startTime.Minutes, 00); endDate = new DateTime(endDate.Year, endDate.Month, endDate.Day, endTime.Hours, endTime.Minutes, 59); List<string> lines = new List<string>(); for (DateTime date = startDate; date <= endDate; date = date.AddDays(1)) { int year = date.Year; string filename = path + year.ToString() + @"\" + date.ToString("MM") + @"\" + date.ToString(@"yyyy-MM-dd") + ".log"; string[] strs = DBUtility.LoadCSV(filename); if (strs != null) lines.AddRange(strs); } int sumCount = 0; Func<int, int> SumCount = new Func<int, int>( delegate(int value) { sumCount = sumCount + value; return value; }); if (parameter.IsRankingData) { var query = from row2 in from row in lines let x = row.Split(',') where x.Count() > 6 && IsInDateTime(x[0], startDate, endDate) && SelectStatus(x[3], parameter) && SelectType(x[4], parameter) && IsRankingData(x[5], parameter) && IsAutoRunning(x[6], parameter) orderby x[0] descending select new { AlarmCode = x[1], AlarmName = x[2], AlarmStatus = StrToStatus(x[3]), AlarmType = StrToType(x[4]), AutoRunning = x[6], Date = x[0] } into g group g by g.AlarmCode into gr orderby gr.Count() descending select gr let x2 = row2.ToList() select new JamLogItem { Count = SumCount(row2.Count()), Date = x2[0].Date, AlarmCode = x2[0].AlarmCode, AlarmName = x2[0].AlarmName, AlarmStatus = x2[0].AlarmStatus, AlarmType = x2[0].AlarmType, AutoRunning = x2[0].AutoRunning }; JamLogData result = new JamLogData(); result.Items = query.ToArray<IJamLogItem>(); result.TotalCount = sumCount; return result; } else { var query = from row in lines let x = row.Split(',') where x.Count() > 6 && IsInDateTime(x[0], startDate, endDate) && SelectStatus(x[3], parameter) && SelectType(x[4], parameter) && IsRankingData(x[5], parameter) && IsAutoRunning(x[6], parameter) select new JamLogItem { Count = SumCount(1), Date = x[0], AlarmCode = x[1], AlarmName = x[2], AlarmStatus = StrToStatus(x[3]), AlarmType = StrToType(x[4]), RankingData = x[5], AutoRunning = x[6] }; JamLogData result = new JamLogData(); result.Items = query.ToArray<IJamLogItem>(); result.TotalCount = sumCount; return result; } }
private bool IsRankingData(string rankingData, IJamLogSearchParameter parameter) { if (parameter.IsRankingData == false) return true; bool result; if (bool.TryParse(rankingData, out result)) { if (parameter.IsRankingData == result) return true; else return false; } else return false; }