123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449 |
- 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
- {
- /// <summary>
- /// 轮轨力算法、几何分析算法公共方法类
- /// </summary>
- class DACommon
- {
- /// <summary>
- /// 高速还是低速
- /// 0:高速 1:低速 2:全选
- /// </summary>
- public static int gdsBool = 0;
- /// <summary>
- /// 是否进行里程修正
- /// </summary>
- public static bool xzlcBool = true;
- /// <summary>
- /// 检测车
- /// </summary>
- public static List<string> jccList = new List<string>();
- /// <summary>
- /// 打开文件夹公共函数
- /// </summary>
- public static void OpenFile(string houzhui,bool ischecked,GridView GV)
- {
- List<T_file_account> filelist = new List<T_file_account>();
- //批量
- 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<T_file_account>;
- 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<T_file_account>;
- 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);
- }
- }
- }
- /// <summary>
- /// 清理数据库同名数据
- /// </summary>
- /// <param name="file"></param>
- private static void filejiancedel(T_file_account file)
- {
- if (file.Houzhui == "geo")
- {
- List<T_jihefenxi_account> whichupdata = (List<T_jihefenxi_account>)DataAnalysisToPG.QueryToPGByName(file.Yswjm);
- DataAnalysisToPG.DelToPGJHBX(whichupdata);
- DataAnalysisToPG.DelToPGJH(file);
- }
- else
- {
- List<T_lunguili_account> whichupdata = (List<T_lunguili_account>)DataAnalysisToPG.QueryToPGByNameL(file.Yswjm);
- DataAnalysisToPG.DelToPGLGLBX(whichupdata);
- DataAnalysisToPG.DelToPGLGL(file);
- }
- DataAnalysisToPG.DelToPG1(file);
- }
- /// <summary>
- /// 解析几何分析数据
- /// </summary>
- /// <param name="filename"></param>
- /// <returns></returns>
- 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 = " "
- };
- }
- /// <summary>
- /// 解析轮轨力数据
- /// </summary>
- /// <param name="filename"></param>
- /// <returns></returns>
- 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 = " "
- };
- }
- /// <summary>
- /// 解析方向
- /// </summary>
- private static string getZF(string ZF)
- {
- string zf = ZF.Split('_')[0];
- if (zf == "0")
- {
- return "反向";
- }
- else
- {
- return "正向";
- }
- }
- /// <summary>
- /// 解析时间
- /// </summary>
- 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 + "日";
- }
- /// <summary>
- /// 解析行别和线路编号
- /// </summary>
- 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 };
- }
- /// <summary>
- /// 表前加序号
- /// </summary>
- /// <param name="e"></param>
- 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();
- }
- }
- }
-
- /// <summary>
- /// 自动化初始化
- /// </summary>
- 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 = "重启自动化";
- }
- }
- /// <summary>
- /// 创建文件
- /// </summary>
- public static void initFile(string path,string data)
- {
- if (!File.Exists(path))
- {
- File.WriteAllText(path, data);
- }
- }
- /// <summary>
- /// 复制文件
- /// </summary>
- /// <param name="filename">原始文件路径</param>
- /// <param name="newfilename">目的地文件路径</param>
- public static void FileCopy(string filename,string newfilename)
- {
- if (File.Exists(filename))
- {
- if (File.Exists(newfilename))
- {
- File.Delete(newfilename);
- }
- File.Copy(filename, newfilename);
- }
- }
- /// <summary>
- /// 按文件夹删除(删除临时文件夹)
- /// </summary>
- /// <param name="DirectoryPath">文件夹路径</param>
- 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;
- }
- }
- /// <summary>
- /// 刷新后恢复选中
- /// </summary>
- /// <param name="gv"></param>
- /// <param name="selectid"></param>
- public static void repushSFZT(GridView gv,List<int> 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;
- }
- }
- }
- }
- /// <summary>
- /// 获取刷新前id和状态
- /// </summary>
- /// <param name="gv"></param>
- /// <param name="selectid"></param>
- /// <param name="selectrowzt"></param>
- public static void getSFZT(GridView gv,ref List<int> selectid,ref List<string> 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());
- }
- }
- }
- }
|