using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Uninpho.DBOperation.Model; using Uninpho.DBOperation.Operation; using System.IO; using DevExpress.XtraEditors; using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraGrid; using DevExpress.XtraBars; namespace Uninpho.Tools.components.DataAnalysis { class DWCommon { public static string lj; public static List filelist = new List(); /// /// 打开文件夹公共函数 /// public static void OpenFile(string houzhui,GridView GV,string xianluming,string chezhan) { var dialog = new OpenFileDialog(); dialog.Multiselect = true; dialog.Title = "请选择文件夹"; dialog.Filter = houzhui+"文件(*." + houzhui + ")|*." + houzhui; if (dialog.ShowDialog() == DialogResult.OK) { string[] file = dialog.FileNames; for (int i = 0; i < file.Length; i++) { T_dwfile_account tfa = GLFileNameSplit1(file[i], xianluming, chezhan); //获取数据后 var isfile = DataAnalysisToPG.DWQueryToPGByNameFile(tfa.Filename) as List; lj = file[i]; //传路径 if (isfile.Count == 0 ) { filelist.Add(tfa); } else { if (XtraMessageBox.Show("检测到数据库内存在同名数据:\n" + tfa.Filename + ",\n是否覆盖数据库内数据?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK) { filejiancedel(tfa); filelist.Add(tfa); } } } } } public static void AddFile() { DataAnalysisToPG.GLInsertToPG(filelist); filelist.Clear(); } public static void CancelAddFile() { filelist.Clear(); } /// 清理数据库同名数据 private static void filejiancedel(T_dwfile_account file) { //清除算法表 List whichupdata = (List)DataAnalysisToPG.DWQueryToPGByNameFile(file.Filename); DataAnalysisToPG.DelToDWGL(file); DataAnalysisToPG.DelToDW(file);//清除功率表 } /// 解析电务功率数据 private static T_dwfile_account GLFileNameSplit1(string filename, string xianluming, string chezhan) { string ysname = Path.GetFileName(filename); string wjdx = Math.Round((new FileInfo(filename).Length / 1024.0 / 1024.0),2) + " MB";//文件大小 //T_luxianming_sf xlpg = DataAnalysisToPG.QueryToXlm(xlbh[0]) as T_luxianming_sf;//获取线路名 string lj = filename;//路径 string minStartTime = null;//日期 string maxStartTime = null; //解析文件 using (StreamReader reader = new StreamReader(filename)) { string line; while ((line = reader.ReadLine()) != null) { string[] parts = line.Split('$'); if (parts.Length >= 9) { string quxianxuhao = parts[2];//曲线序号 string caijikaishishijian = parts[3];//采集开始时间 string caijihaoqianshijian = parts[4];//采集毫秒时间 string fangxiabiaoji = parts[5];//点数 string dianshu = parts[6]; //点数 string gonglv = parts[7];//功率 string fangcha = parts[8];//方差 string quxianleixing = parts[9];//曲线类型 DateTime startTime; if (DateTime.TryParseExact(caijikaishishijian, "yyyy-MM-dd HH:mm:ss", null, System.Globalization.DateTimeStyles.None, out startTime)) { string formattedStartTime = startTime.ToString("yyyy-MM-dd HH:mm:ss"); if (minStartTime == null || string.Compare(formattedStartTime, minStartTime) < 0) { minStartTime = formattedStartTime; } if (maxStartTime == null || string.Compare(formattedStartTime, maxStartTime) > 0) { maxStartTime = formattedStartTime; } } } } } return new T_dwfile_account() { //下次把车站线路写活 Xianlu = xianluming, Chezhan = chezhan, Starttime = minStartTime, Endtime = maxStartTime, Filename = ysname, Filesize = wjdx, Filestatus = "正常", Taskstatus = "算法未执行", Srlj = lj, }; } /// /// 刷新后恢复选中 /// /// /// public static void repushSFZT(GridView gv,List selectid) { for (int i = 0; i < gv.RowCount; i++) { for (int j = 0; j < selectid.Count; j++) { if (gv.GetRowCellValue(i, "Id").ToString() == selectid[j].ToString()) { gv.SelectRow(i); break; } } } } /// /// 获取刷新前id和状态 /// /// /// /// public static void getSFZT(GridView gv,ref List selectid,ref List selectrowzt) { var sele = gv.GetSelectedRows(); foreach (var i in sele) { selectid.Add(Convert.ToInt32(gv.GetRowCellValue(i, "Id").ToString())); selectrowzt.Add(gv.GetRowCellValue(i, "Taskstatus").ToString()); } } } }