using OTSCommon.Model; using OTSIncAReportApp.DataOperation.DataAccess; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using static OTSIncAReportApp.OTSReport_Export; namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration { class BasicData { ParticleData fielddata; private string SizeChart = ""; private DataTable BData = new DataTable(); private DataTable AllClass = new DataTable(); private DataTable AllElement = new DataTable(); private bool IsShereAClassificationGroup = false; /// /// 获取粒级表 /// public void SetParticlesizeTable(OTSReport_Export m_otsreport_export) { //获取粒级表 string path1 = m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFileFolder + m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFile; DataSet ds = OTSIncAReportApp.DataOperation.DataAccess.XMLoperate.GetXml(path1); SizeChart = ds.Tables[0].Rows[0]["Sizes"].ToString(); } /// /// 获取粒级表 /// /// public string GetParticlesizeTable() { return SizeChart; } public void SetDBData(c_TemplateClass m_mbszclass, OTSReport_Export m_otsreport_export, string ComputeMode) { DataTable m_bt_DBData = new DataTable(); ParticleData fielddata = new ParticleData(m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_rstDataMgr.getSelectedIndex()].FilePath); List colid = new List() { "TypeName", "ar", "TypeId", "Largest", "Class", "con" }; //获取粒级表 string path1 = m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFileFolder + m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFile; DataSet ds = OTSIncAReportApp.DataOperation.DataAccess.XMLoperate.GetXml(path1); string sizestr = ds.Tables[0].Rows[0]["Sizes"].ToString(); for (int i = 0; i < sizestr.Split(',').Length - 1; i++) { if (sizestr.Split(',')[i].Length > 0) { double d1 = Convert.ToDouble(sizestr.Split(',')[i]); double d2 = Convert.ToDouble(sizestr.Split(',')[i + 1]); colid.Add(d1.ToString() + "~" + d2.ToString()); } } double d = Convert.ToDouble(sizestr.Split(',')[sizestr.Split(',').Length - 1]); colid.Add(d.ToString() + "~MAX"); for (int i = 0; i < colid.Count; i++) { m_bt_DBData.Columns.Add(colid[i].ToString()); } DataTable dt = InvalidRemoval(fielddata.GetParticleListForParticlSize("area", "")); DataTable AreaInformationOfAllElements = InvalidRemoval(fielddata.GetAreaByAllIncA("")); DataTable dtp = InvalidRemoval(fielddata.GetParticleAll("")); string po = ComputeMode; switch (po) { case "DMAX": po = "DMAX"; break; case "DMIN": po = "DMIN"; break; case "ECD": po = "Area"; break; case "FERET": po = "DFERET"; break; } for (int i = 0; i < dt.Rows.Count; i++) { DataRow dr = m_bt_DBData.NewRow(); dr["TypeName"] = dt.Rows[i]["TypeName"].ToString(); dr["TypeId"] = dt.Rows[i]["TypeId"].ToString(); dr["con"] = dt.Rows[i]["con"].ToString(); if (dt.Rows[i]["GroupName"].ToString() == "") dr["Class"] = "Default"; else dr["Class"] = dt.Rows[i]["GroupName"].ToString(); //continue; dr["Largest"] = Math.Round(Convert.ToDouble(dt.Rows[i]["max"]), 2); for (int a = 6; a < colid.Count; a++) { string d1 = colid[a].Split('~')[0]; string d2 = colid[a].Split('~')[1]; if (d2 == "MAX") { d2 = "999"; } DataRow[] datas = dtp.Select(getWhere(d2, d1, po, dt.Rows[i]["TypeId"].ToString())); dr[colid[a]] = datas.Count(); } for (int a = 0; a < AreaInformationOfAllElements.Rows.Count; a++) { if (dt.Rows[i]["TypeId"].ToString() == AreaInformationOfAllElements.Rows[a]["TypeId"].ToString()) { dr["ar"] = AreaInformationOfAllElements.Rows[a]["ar"]; } } m_bt_DBData.Rows.Add(dr); } //去除物质分类(非夹杂物分类) for (int a = 0; a < m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Count; a++) { for (int i = m_bt_DBData.Rows.Count - 1; i >= 0; i--) { if (m_bt_DBData.Rows[i]["TypeName"].ToString() == m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass[a].ToString()) { m_bt_DBData.Rows.RemoveAt(i); } } } if (m_mbszclass.list_str_MainPriority.Count == 0) { BData = m_bt_DBData.Copy(); return; } DataTable datass = m_bt_DBData.Clone(); for (int i = 0; i < m_mbszclass.list_str_MainPriority.Count; i++) { bool bl = false; for (int a = 0; a < m_bt_DBData.Rows.Count; a++) { if (m_bt_DBData.Rows[a]["TypeName"].ToString() == m_mbszclass.list_str_MainPriority[i]) { datass.Rows.Add(m_bt_DBData.Rows[a].ItemArray); bl = true; continue; } } if (!bl) { DataTable dta = m_bt_DBData.Clone(); if (m_bt_DBData.Rows.Count != 0) { dta.Rows.Add(m_bt_DBData.Rows[0].ItemArray); for (int b = 0; b < dta.Columns.Count; b++) { if (dta.Columns[b].ColumnName == "TypeName") { dta.Rows[0][b] = m_mbszclass.list_str_MainPriority[i]; } else if (dta.Columns[b].ColumnName == "Class") { dta.Rows[0][b] = "Default"; } else { dta.Rows[0][b] = 0; } } datass.Rows.Add(dta.Rows[0].ItemArray); } } } BData = datass.Copy(); //return datass; } /// /// 获取读取数据库并过滤颗粒 /// /// public DataTable GetDBData() { return BData; } public void SetAllClass() { AllClass = fielddata.GetAllClass(); } /// /// 获取全部大类 /// /// public DataTable GetAllClass() { return AllClass; } /// /// 定义ParticleData类 /// public void newParticleData(OTSReport_Export m_otsreport_export) { fielddata = new ParticleData(m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_rstDataMgr.getSelectedIndex()].FilePath); } public ParticleData getParticleData() { return fielddata; } public void SetAllElement() { AllElement = fielddata.GetAllElement(); } /// /// 获取全部元素 /// /// public DataTable GetAllElement() { return AllElement; } /// /// 判断是否有大分类,有为true /// /// /// public void IsThereAMajorClassification() { DataTable getClass_dt = fielddata.GetAllClass(); List ClassName = new List(); bool bl = false; for (int i = 0; i < getClass_dt.Rows.Count; i++) { if (getClass_dt.Rows[i]["GroupName"].ToString() != "NOT_INCLUTION" && getClass_dt.Rows[i]["GroupName"].ToString() != "Invalid" && getClass_dt.Rows[i]["GroupName"].ToString() != "Not Identified") if (getClass_dt.Rows[i]["GroupName"].ToString() == "") { if (!bl) { ClassName.Add("Default"); bl = true; } } else { if (getClass_dt.Rows[i]["GroupName"].ToString() != "Default") { ClassName.Add(getClass_dt.Rows[i]["GroupName"].ToString()); } } } if (ClassName.Count < 2) { IsShereAClassificationGroup= false; } else { IsShereAClassificationGroup= true; } } public bool GetIsThereAMajorClassification() { return IsShereAClassificationGroup; } #region 内部函数 private string getWhere(string max, string min, string col, string partic) { return col + ">=" + min + " and " + col + "<" + max + " and TypeId=" + partic; } private DataTable InvalidRemoval(DataTable dt) { DataTable dataTable = dt.Copy(); dataTable.Clear(); for (int i = 0; i < dt.Rows.Count; i++) { if (Convert.ToInt32(dt.Rows[i]["TypeId"]) > 10) { dataTable.Rows.Add(dt.Rows[i].ItemArray); } } return dataTable; } #endregion } }