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());
}
}
}
}