using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration { class TCCleannessA { public DataTable ParticleSizeStatistician(BasicData basicData,string strName) { //DataTable data = basicData.GetDBData(); DataTable data = new DataTable(); //获取粒级表 List colid = basicData.GetParticlesizeTable(); DataTable ls_partsize_dt = new DataTable(); ls_partsize_dt.TableName = "PartSize"; ls_partsize_dt.Columns.Add("c1"); ls_partsize_dt.Columns.Add("c2"); ls_partsize_dt.Columns.Add("c3"); ls_partsize_dt.Columns.Add("c4"); ls_partsize_dt.Columns.Add("c5"); ls_partsize_dt.Columns.Add("c6"); ls_partsize_dt.Columns.Add("c7"); ls_partsize_dt.Columns.Add("c8"); ls_partsize_dt.Columns.Add("c9"); DataRow dr = ls_partsize_dt.NewRow(); for (int i = 1; i < 10; i++) { if (colid.Count < i) { dr["c" + i.ToString()] = ""; } else { dr["c" + i.ToString()] = colid[i - 1]; } } ls_partsize_dt.Rows.Add(dr); DataTable ls_Particel_dt = new DataTable(); ls_Particel_dt.TableName = "Particel"; ls_Particel_dt.Columns.Add("c1", typeof(double)); ls_Particel_dt.Columns.Add("c2", typeof(double)); ls_Particel_dt.Columns.Add("c3", typeof(double)); ls_Particel_dt.Columns.Add("c4", typeof(double)); ls_Particel_dt.Columns.Add("c5", typeof(double)); ls_Particel_dt.Columns.Add("c6", typeof(double)); ls_Particel_dt.Columns.Add("c7", typeof(double)); ls_Particel_dt.Columns.Add("c8", typeof(double)); ls_Particel_dt.Columns.Add("c9", typeof(double)); ls_Particel_dt.Columns.Add("Name"); ls_Particel_dt.Columns.Add("total", typeof(double)); ls_Particel_dt.Columns.Add("TypeId"); ls_Particel_dt.Columns.Add("Class"); ls_Particel_dt.Columns.Add("hardnes"); ls_Particel_dt.Columns.Add("hardness"); ls_Particel_dt.Columns.Add("metal"); ls_Particel_dt.Columns.Add("maximum"); DataTable table = GetSTL(basicData, strName); for (int i = 0; i < data.Rows.Count; i++) { DataRow dr2 = ls_Particel_dt.NewRow(); dr2["Name"] = data.Rows[i]["TypeName"].ToString(); dr2["Class"] = data.Rows[i]["Class"].ToString(); dr2["TypeId"] = data.Rows[i]["TypeId"].ToString();//获取分类编号 dr2["maximum"]= data.Rows[i]["Largest"].ToString(); for (int j = 1; j < 10; j++) { if (colid.Count >= j) { dr2["c" + j.ToString()] = Convert.ToDouble(data.Rows[i][colid[j - 1]]); } } if (dr2["Name"].ToString() != "" && dr2["Name"].ToString().IndexOf("number") < 0) { dr2["total"] = "0"; //求合 double d_total = 0; for (int j = 1; j < 10; j++) { if (colid.Count >= j) { d_total = d_total + Convert.ToInt64(data.Rows[i][colid[j - 1]]); } } dr2["total"] = d_total.ToString(); } dr2["hardness"] = "o. Def."; dr2["metal"] = "0"; dr2["hardnes"] = "0"; for (int a=0;a< table.Rows.Count;a++) { if(data.Rows[i]["TypeId"].ToString()== table.Rows[a]["TypeId"].ToString()) { dr2["hardness"] = table.Rows[a]["Hardness_detailed"].ToString(); dr2["metal"]= table.Rows[a]["metal"].ToString(); dr2["hardnes"] = table.Rows[a]["Hardness"].ToString(); ; break; } } ls_Particel_dt.Rows.Add(dr2); } return ls_Particel_dt; } public List GetGroupingTable(DataTable data) { List datas = new List(); HashSet uniqueStrings = new HashSet(); for (int i=0;i< data.Rows.Count;i++) { uniqueStrings.Add(data.Rows[i]["Class"].ToString()); } foreach (var uniqueString in uniqueStrings) { DataTable dt = data.Clone(); dt.TableName = uniqueString; for (int i = 0; i < data.Rows.Count; i++) { if (data.Rows[i]["Class"].ToString() == uniqueString) { dt.Rows.Add(data.Rows[i].ItemArray); } } datas.Add(dt); } return datas; } private DataTable GetSTL( BasicData basicData, string strName) { DataTable data = new DataTable(); if (basicData.GetResfile().ToLower() == "nostddb") { data = new DataTable(); } DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("TypeId"); dt.Columns.Add("Hardness", typeof(double)); dt.Columns.Add("Hardness_detailed"); dt.Columns.Add("metal"); OTSCommon.DBOperate.SqLiteHelper sh = null; string fullPath = basicData.GetFilePath() + "\\" + strName; string fullPath2 = System.IO.Directory.GetCurrentDirectory() + "\\Config\\SysData\\" + strName; if (System.IO.File.Exists(fullPath)) { sh = new OTSCommon.DBOperate.SqLiteHelper("data source='" + fullPath + "'"); } else if (System.IO.File.Exists(fullPath2)) { sh = new OTSCommon.DBOperate.SqLiteHelper("data source='" + fullPath2 + "'"); } else { sh = null; return data; } DataTable dt_stl = sh.ExecuteQuery("select * from ClassifySTD"); DataTable LargeClassificationTable = sh.ExecuteQuery("select * from STDGroups"); for (int i = 0; i < dt_stl.Rows.Count; i++) { double DAGroupId; DataRow dr = dt.NewRow(); dr["Name"] = dt_stl.Rows[i]["StrName"].ToString(); dr["TypeId"]= dt_stl.Rows[i]["STDId"].ToString(); dr["Hardness_detailed"] = dt_stl.Rows[i]["Hardness"].ToString(); if (System.Text.RegularExpressions.Regex.Replace(dt_stl.Rows[i]["Hardness"].ToString(), @"[^\d.\d]", "").ToString() != "") { try { if (System.Text.RegularExpressions.Regex.Replace(dt_stl.Rows[i]["Hardness"].ToString(), @"[^\d.\d]", "") == "o. Def.") { dr["Hardness"] = 0; } else { double dl= Convert.ToDouble(System.Text.RegularExpressions.Regex.Replace(dt_stl.Rows[i]["Hardness"].ToString(), @"[^\d.\d]", "")); if (">"+ dl.ToString()== dt_stl.Rows[i]["Hardness"].ToString()) { dr["Hardness"] = dl + 1; } else { dr["Hardness"] = dl -1; } } } catch { dr["Hardness"] = 0; } } else { dr["Hardness"] = 0; } if (System.Text.RegularExpressions.Regex.Replace(dt_stl.Rows[i]["GroupId"].ToString(), @"[^\d.\d]", "").ToString() != "") { DAGroupId= Convert.ToDouble(System.Text.RegularExpressions.Regex.Replace(dt_stl.Rows[i]["GroupId"].ToString(), @"[^\d.\d]", "")); } else { DAGroupId = 0; } dr["metal"] = 0; for (int a = 0; a < LargeClassificationTable.Rows.Count; a++) { if(Convert.ToDouble(LargeClassificationTable.Rows[a]["id"]) == DAGroupId) { if (LargeClassificationTable.Rows[a]["name"].ToString().ToLower()== "metallic") { dr["metal"] = 1; } } } dt.Rows.Add(dr); } data = dt.Copy(); return data; } } }