using FujianEarthquake.Models; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Reflection; using System.Windows; using System.Text; using System.Threading.Tasks; using System.Windows.Media; namespace FujianEarthquake.Common { public class CSVDownload { /// /// Create target file /// /// folder /// folder name /// file extension /// file path public static string CreateFile(string folder, string fileName, string fileExtension) { FileStream fs = null; string filePath = folder + fileName + "." + fileExtension; try { if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } fs = File.Create(filePath); } catch (Exception ex) { } finally { if (fs != null) { fs.Dispose(); } } return filePath; } #region LogRecord /// /// 获取类的属性集合(以便生成CSV文件的所有Column标题) /// /// public static PropertyInfo[] GetLogRecordPropertyInfoArray() { PropertyInfo[] props = null; try { Type type = typeof(LogRecordModel); object obj = Activator.CreateInstance(type); props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); } catch (Exception ex) { } return props; } /// /// Save the List data to CSV file /// /// data source /// file path /// success flag public static bool SaveLogRecordDataToCSVFile(ObservableCollection LogRecordList, string filePath) { bool successFlag = true; StringBuilder strColumn = new StringBuilder(); StringBuilder strValue = new StringBuilder(); StreamWriter sw = null; PropertyInfo[] props = GetLogRecordPropertyInfoArray(); try { sw = new StreamWriter(filePath); for (int i = 0; i < props.Length; i++) { strColumn.Append(props[i].Name); strColumn.Append(","); } strColumn.Remove(strColumn.Length - 1, 1); sw.WriteLine(strColumn); //write the column name for (int i = 0; i < LogRecordList.Count; i++) { strValue.Remove(0, strValue.Length); //clear the temp row value strValue.Append(LogRecordList[i].Index); strValue.Append(","); strValue.Append(LogRecordList[i].RecordTime); strValue.Append(","); strValue.Append(LogRecordList[i].Device_Name); strValue.Append(","); strValue.Append(LogRecordList[i].Operation_Type); strValue.Append(","); strValue.Append(LogRecordList[i].Record); sw.WriteLine(strValue); //write the row value } } catch (Exception ex) { successFlag = false; } finally { if (sw != null) { sw.Dispose(); } } return successFlag; } #endregion #region AlarmRecord /// /// 获取类的属性集合(以便生成CSV文件的所有Column标题) /// /// public static PropertyInfo[] GetAlarmRecordPropertyInfoArray() { PropertyInfo[] props = null; try { Type type = typeof(AlarmRecordModel); object obj = Activator.CreateInstance(type); props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); } catch (Exception ex) { } return props; } /// /// Save the List data to CSV file /// /// data source /// file path /// success flag public static bool SaveAlarmRecordDataToCSVFile(ObservableCollection AlarmRecordList, string filePath) { bool successFlag = true; StringBuilder strColumn = new StringBuilder(); StringBuilder strValue = new StringBuilder(); StreamWriter sw = null; PropertyInfo[] props = GetAlarmRecordPropertyInfoArray(); try { sw = new StreamWriter(filePath); for (int i = 0; i < props.Length; i++) { strColumn.Append(props[i].Name); strColumn.Append(","); } strColumn.Remove(strColumn.Length - 1, 1); sw.WriteLine(strColumn); //write the column name for (int i = 0; i < AlarmRecordList.Count; i++) { strValue.Remove(0, strValue.Length); //clear the temp row value strValue.Append(AlarmRecordList[i].Index); strValue.Append(","); strValue.Append(AlarmRecordList[i].RecordTime); strValue.Append(","); strValue.Append(AlarmRecordList[i].ParaName); strValue.Append(","); strValue.Append(AlarmRecordList[i].ParaNum); strValue.Append(","); strValue.Append(AlarmRecordList[i].ParaContent); strValue.Append(","); strValue.Append(AlarmRecordList[i].ProcessingMethod); strValue.Append(","); if (AlarmRecordList[i].UrgencyLevel == (ImageSource)Application.Current.FindResource("CycleRed")) strValue.Append("一级紧急"); else if (AlarmRecordList[i].UrgencyLevel == (ImageSource)Application.Current.FindResource("CycleOrange")) strValue.Append("二级紧急"); else if (AlarmRecordList[i].UrgencyLevel == (ImageSource)Application.Current.FindResource("CycleYellow")) strValue.Append("三级紧急"); strValue.Append(","); strValue.Append(AlarmRecordList[i].IsHandled); sw.WriteLine(strValue); //write the row value } } catch (Exception ex) { successFlag = false; } finally { if (sw != null) { sw.Dispose(); } } return successFlag; } #endregion #region JunctionBox /// /// 获取类的属性集合(以便生成CSV文件的所有Column标题) /// /// public static PropertyInfo[] GetJunctionBoxEnvironPropertyInfoArray() { PropertyInfo[] props = null; try { Type type = typeof(JunctionBoxEnvironModel); object obj = Activator.CreateInstance(type); props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); } catch (Exception ex) { } return props; } /// /// Save the List data to CSV file /// /// data source /// file path /// success flag public static bool SaveJunctionBoxEnvironDataToCSVFile(ObservableCollection BaseStationList, string filePath) { bool successFlag = true; StringBuilder strColumn = new StringBuilder(); StringBuilder strValue = new StringBuilder(); StreamWriter sw = null; PropertyInfo[] props = GetJunctionBoxEnvironPropertyInfoArray(); try { sw = new StreamWriter(filePath); for (int i = 0; i < props.Length; i++) { strColumn.Append(props[i].Name); strColumn.Append(","); } strColumn.Remove(strColumn.Length - 1, 1); sw.WriteLine(strColumn); //write the column name for (int i = 0; i < BaseStationList.Count; i++) { strValue.Remove(0, strValue.Length); //clear the temp row value strValue.Append(BaseStationList[i].Index); strValue.Append(","); strValue.Append(BaseStationList[i].RecordTime); strValue.Append(","); strValue.Append(BaseStationList[i].Temperature); strValue.Append(","); strValue.Append(BaseStationList[i].Humidity); strValue.Append(","); strValue.Append(BaseStationList[i].AttitudeX); strValue.Append(","); strValue.Append(BaseStationList[i].AttitudeY); strValue.Append(","); strValue.Append(BaseStationList[i].AttitudeZ); strValue.Append(","); if (BaseStationList[i].Leakage == (ImageSource)Application.Current.FindResource("CycleRed")) strValue.Append("漏水"); else if (BaseStationList[i].Leakage == (ImageSource)Application.Current.FindResource("CycleGreen")) strValue.Append("未漏水"); else strValue.Append("无数据"); sw.WriteLine(strValue); //write the row value } } catch (Exception ex) { successFlag = false; } finally { if (sw != null) { sw.Dispose(); } } return successFlag; } #endregion #region JunctionBoxStatus /// /// 获取类的属性集合(以便生成CSV文件的所有Column标题) /// /// public static PropertyInfo[] GetJunctionBoxStatusPropertyInfoArray() { PropertyInfo[] props = null; try { Type type = typeof(JunctionBoxMonitorModel); object obj = Activator.CreateInstance(type); props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); } catch (Exception ex) { } return props; } /// /// Save the List data to CSV file /// /// data source /// file path /// success flag public static bool SaveJunctionBoxStatusDataToCSVFile(ObservableCollection JunctionBoxStatusList, string filePath) { bool successFlag = true; StringBuilder strColumn = new StringBuilder(); StringBuilder strValue = new StringBuilder(); StreamWriter sw = null; PropertyInfo[] props = GetJunctionBoxStatusPropertyInfoArray(); try { sw = new StreamWriter(filePath); for (int i = 0; i < props.Length; i++) { strColumn.Append(props[i].Name); strColumn.Append(","); } strColumn.Remove(strColumn.Length - 1, 1); sw.WriteLine(strColumn); //write the column name for (int i = 0; i < JunctionBoxStatusList.Count; i++) { strValue.Remove(0, strValue.Length); //clear the temp row value strValue.Append(JunctionBoxStatusList[i].Index); strValue.Append(","); strValue.Append(JunctionBoxStatusList[i].RecordTime); strValue.Append(","); strValue.Append(JunctionBoxStatusList[i].Seis1_Voltage); strValue.Append(","); strValue.Append(JunctionBoxStatusList[i].Seis1_Current); strValue.Append(","); strValue.Append(JunctionBoxStatusList[i].Seis2_Voltage); strValue.Append(","); strValue.Append(JunctionBoxStatusList[i].Seis2_Current); strValue.Append(","); strValue.Append(JunctionBoxStatusList[i].Video_Voltage); strValue.Append(","); strValue.Append(JunctionBoxStatusList[i].Video_Current); strValue.Append(","); strValue.Append(JunctionBoxStatusList[i].Out_Voltage12_Reserved2); sw.WriteLine(strValue); //write the row value } } catch (Exception ex) { successFlag = false; } finally { if (sw != null) { sw.Dispose(); } } return successFlag; } #endregion } }