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 DACommon { /// /// 高速还是低速 /// 0:高速 1:低速 2:全选 /// public static int gdsBool = 0; /// /// 是否进行里程修正 /// public static bool xzlcBool = true; /// /// 检测车 /// public static List jccList = new List(); /// /// 打开文件夹公共函数 /// public static void OpenFile(string houzhui,bool ischecked,GridView GV) { List filelist = new List(); //批量 if (ischecked) { var dialog = new FolderBrowserDialog(); if (dialog.ShowDialog() == DialogResult.OK) { DirectoryInfo DirInfo = new DirectoryInfo(dialog.SelectedPath); houzhui = "." + houzhui; var files = from f in DirInfo.EnumerateFiles() where houzhui.Contains(f.Extension.ToLower()) select f; // Show results. foreach (var f in files) { T_file_account tfa; if (houzhui == ".geo") { tfa = FileNameSplit(f.FullName); } else { tfa = FileNameSplit1(f.FullName); } var isfile = DataAnalysisToPG.QueryToPGByNameFile(tfa.Yswjm) as List; if (isfile.Count == 0) { filelist.Add(tfa); } else { if (XtraMessageBox.Show("检测到数据库内存在同名数据:\n" + tfa.Yswjm+",\n是否覆盖数据库内数据?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK) { filejiancedel(tfa); filelist.Add(tfa); } } } DataAnalysisToPG.InsertToPG(filelist); } } else { 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_file_account tfa; if (houzhui == "geo") { tfa = FileNameSplit(file[i]); }else { tfa = FileNameSplit1(file[i]); } var isfile = DataAnalysisToPG.QueryToPGByNameFile(tfa.Yswjm) as List; if (isfile.Count == 0) { filelist.Add(tfa); } else { if (XtraMessageBox.Show("检测到数据库内存在同名数据:\n" + tfa.Yswjm + ",\n是否覆盖数据库内数据?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK) { filejiancedel(tfa); filelist.Add(tfa); } } } DataAnalysisToPG.InsertToPG(filelist); } } } /// /// 清理数据库同名数据 /// /// private static void filejiancedel(T_file_account file) { if (file.Houzhui == "geo") { List whichupdata = (List)DataAnalysisToPG.QueryToPGByName(file.Yswjm); DataAnalysisToPG.DelToPGJHBX(whichupdata); DataAnalysisToPG.DelToPGJH(file); } else { List whichupdata = (List)DataAnalysisToPG.QueryToPGByNameL(file.Yswjm); DataAnalysisToPG.DelToPGLGLBX(whichupdata); DataAnalysisToPG.DelToPGLGL(file); } DataAnalysisToPG.DelToPG1(file); } /// /// 解析几何分析数据 /// /// /// private static T_file_account FileNameSplit(string filename) { string ysname = Path.GetFileName(filename); var filearr = ysname.Split('-'); string[] xlbh = HBXLSplit(filearr[0]); string jcsj = getYMDHMS(filearr[3],filearr[4]); string FX = getZF(filearr[5]);//0反向、1正向 string wjdx = Math.Ceiling(new FileInfo(filename).Length / 1024.0/1024.0) + " MB"; T_luxianming_sf xlpg = DataAnalysisToPG.QueryToXlm(xlbh[0]) as T_luxianming_sf; return new T_file_account() { Xlm = xlpg.Xlm, Xlbh = xlpg.Xldj, Hangbie = xlbh[1], Jcsj = jcsj, Daxiao = wjdx, Yswjm = ysname, Houzhui = Path.GetExtension(filename).Remove(0, 1), Fangxiang = FX, Wjzt = "正常", Srlj = filename, Rwzt = "算法未执行", Jccxx = " " }; } /// /// 解析轮轨力数据 /// /// /// private static T_file_account FileNameSplit1(string filename) { string ysname = Path.GetFileName(filename); var filearr = ysname.Split('_'); string[] xlbh = HBXLSplit(filearr[2].Split('.')[0]); string jcsj = getYMDHMS(filearr[1]); string FX = getZF(filearr[2]);//0反向、1正向 string wjdx = Math.Ceiling(new FileInfo(filename).Length / 1024.0 / 1024.0) + " MB"; T_luxianming_sf xlpg = DataAnalysisToPG.QueryToXlm(xlbh[0]) as T_luxianming_sf; return new T_file_account() { Xlm = xlpg.Xlm, Xlbh = xlpg.Xldj, Hangbie = xlbh[1], Jcsj = jcsj, Daxiao = wjdx, Yswjm = ysname, Fangxiang = FX, Houzhui = Path.GetExtension(filename).Remove(0, 1), Wjzt = "正常", Srlj = filename, Rwzt = "算法未执行", Jccxx = " " }; } /// /// 解析方向 /// private static string getZF(string ZF) { string zf = ZF.Split('_')[0]; if (zf == "0") { return "反向"; } else { return "正向"; } } /// /// 解析时间 /// private static string getYMDHMS(string ymd,string hms) { //如果这里以后修改,轮轨力输入检测日期那块也要改!!! Char[] ymdcha = ymd.ToCharArray();//年月日 Char[] hmscha = hms.ToCharArray();//时分秒 string year = ymdcha[4].ToString() + ymdcha[5].ToString() + ymdcha[6].ToString() + ymdcha[7].ToString(); string mouth = ymdcha[2].ToString() + ymdcha[3].ToString(); string day = ymdcha[0].ToString() + ymdcha[1].ToString(); string hour = hmscha[0].ToString() + hmscha[1].ToString(); string minite = hmscha[2].ToString() + hmscha[3].ToString(); string second = hmscha[4].ToString() + hmscha[5].ToString(); return year+ "年" +mouth + "月" + day + "日" + hour + "时" + minite + "分" + second + "秒"; } private static string getYMDHMS(string ymd) { //如果这里以后修改,轮轨力输入检测日期那块也要改!!! Char[] ymdcha = ymd.ToCharArray();//年月日 string year = ymdcha[0].ToString() + ymdcha[3].ToString(); string mouth = ymdcha[6].ToString() + ymdcha[7].ToString(); string day = ymdcha[4].ToString() + ymdcha[5].ToString(); return year + "年" + mouth + "月" + day + "日"; } /// /// 解析行别和线路编号 /// private static string[] HBXLSplit(string arr0) { Char[] cha = arr0.ToCharArray(); string hb = "", xl = ""; for (int i = 0; i < cha.Length; i++) { if (i != cha.Length-1) { xl += cha[i]; } else { if (cha[i] == 'X') { hb = "下"; } else if (cha[i] == 'S') { hb = "上"; } else { hb = "未知"; } } } return new string[] {xl,hb }; } /// /// 表前加序号 /// /// public static void addXuHao(DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e) { if (e.Info.Kind == DevExpress.Utils.Drawing.IndicatorKind.Header) { e.Appearance.DrawBackground(e.Cache, e.Bounds); e.Appearance.DrawString(e.Cache, " 序号", e.Bounds); e.Handled = true; } e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far; if (e.Info.IsRowIndicator) { if (e.RowHandle >= 0) { e.Info.DisplayText = (e.RowHandle + 1).ToString().Trim(); } else if (e.RowHandle < 0 && e.RowHandle > -1000) { e.Info.DisplayText = "G" + e.RowHandle.ToString(); } } } /// /// 自动化初始化 /// public static void initZDHFun(BarButtonItem barButtonItem) { initFile(zdhSetClass.path, zdhSetClass.initStr); StreamReader sr = new StreamReader(zdhSetClass.path); while (!sr.EndOfStream) { string[] str = sr.ReadLine().Split('灬'); if (str[0] == "Interval") { zdhSetClass.Interval = Convert.ToInt32(str[1]); continue; } else if (str[0] == "folder") { if (Directory.Exists(str[1])) { zdhSetClass.folder = str[1]; } continue; } else if (str[0] == "startdate") { zdhSetClass.startdate = str[1]; continue; } else if (str[0] == "taskName") { zdhSetClass.taskName = str[1]; continue; } else if (str[0] == "isStartZDH") { zdhSetClass.isStartZDH = Convert.ToInt32(str[1]); continue; } } DirectoryInitNoDelNoHidde(zdhSetClass.folder + "geoData"); DirectoryInitNoDelNoHidde(zdhSetClass.folder + "bnyData"); if (zdhSetClass.isStartZDH == 0) { barButtonItem.ImageUri.Uri = "Prev"; //Refresh // Prev barButtonItem.Caption = "开启自动化"; } else { barButtonItem.ImageUri.Uri = "Refresh"; //Refresh // Prev barButtonItem.Caption = "重启自动化"; } } /// /// 创建文件 /// public static void initFile(string path,string data) { if (!File.Exists(path)) { File.WriteAllText(path, data); } } /// /// 复制文件 /// /// 原始文件路径 /// 目的地文件路径 public static void FileCopy(string filename,string newfilename) { if (File.Exists(filename)) { if (File.Exists(newfilename)) { File.Delete(newfilename); } File.Copy(filename, newfilename); } } /// /// 按文件夹删除(删除临时文件夹) /// /// 文件夹路径 public static void DirectoryInit(string DirectoryPath) { if (Directory.Exists(DirectoryPath)) { Directory.Delete(DirectoryPath, true); //删除文件夹及内容 } DirectoryInfo di = Directory.CreateDirectory(DirectoryPath); di.Attributes = FileAttributes.Directory | FileAttributes.Hidden; } public static void DirectoryInitNoDel(string DirectoryPath) { if (!Directory.Exists(DirectoryPath)) { DirectoryInfo di = Directory.CreateDirectory(DirectoryPath); di.Attributes = FileAttributes.Directory | FileAttributes.Hidden; } } public static void DirectoryInitNoDelNoHidde(string DirectoryPath) { if (!Directory.Exists(DirectoryPath)) { DirectoryInfo di = Directory.CreateDirectory(DirectoryPath); di.Attributes = FileAttributes.Directory; } } /// /// 刷新后恢复选中 /// /// /// 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, "Rwzt").ToString()); } } } }