using OTSCommon.DBOperate; 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 OTSDataType.otsdataconst; using static OTSIncAReportApp.OTSReport_Export; namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration { /// /// 颗粒分析 /// class ParticleAnalysis { /// /// 大分类 /// /// public DataTable GetLargeClassification(OTSReport_Export m_otsreport_export,BasicData basicData) { List DBData = basicData.GetDBData(); DataTable Out_data = new DataTable(); Out_data.Columns.Add("Name"); Out_data.Columns.Add("total"); Out_data.Columns.Add("TypeId"); Out_data.Columns.Add("Class"); int it = 1; for (int i = 7; i < DBData[0].Columns.Count; i++) { Out_data.Columns.Add("c" + it); it++; } List ClassName = ObtainParticleCategory(m_otsreport_export, basicData); for (int i = 0; i < DBData.Count; i++) { if (DBData[i].Rows.Count == 0) { continue; } DataRow row1 = Out_data.NewRow(); row1["Class"] = ClassName[i]; List ints = new List(); for (int a = 7; a < DBData[i].Columns.Count; a++) { double ias = CalculationTableColumn(DBData[i], DBData[i].Columns[a].ColumnName); ints.Add(ias); } int zur = 0; for (int a = 0; a < ints.Count; a++) { zur = zur + Convert.ToInt32(ints[a]); } row1["total"] = zur; Out_data.Rows.Add(row1); } return Out_data; } /// /// 小分类 /// /// public DataTable GetSubClassification(BasicData basicData) { List DBData = basicData.GetDBData(); DataTable Out_data = new DataTable(); Out_data.Columns.Add("Name"); Out_data.Columns.Add("total"); Out_data.Columns.Add("TypeId"); Out_data.Columns.Add("Class"); int it = 1; for (int i = 7; i < DBData[0].Columns.Count; i++) { Out_data.Columns.Add("c" + it); it++; } for (int i = 0; i < DBData.Count; i++) { if (DBData[i].Rows.Count == 0) { continue; } for (int a = 0; a < DBData[i].Rows.Count; a++) { DataRow row1 = Out_data.NewRow(); row1["Name"] = DBData[i].Rows[a]["TypeName"]; row1["total"] = DBData[i].Rows[a]["con"]; row1["TypeId"] = DBData[i].Rows[a]["TypeId"]; row1["Class"] = ""; int ii = 4; for (int j = 7; j < DBData[i].Columns.Count; j++) { row1[ii] = DBData[i].Rows[a][j]; ii++; } Out_data.Rows.Add(row1); } } return Out_data; } /// /// 分类整合大小分类都有 /// /// public List GetClassificationConsolidationTable(OTSReport_Export m_otsreport_export, BasicData basicData ,out DataTable dataTable) { List datas = new List(); List DBData = basicData.GetDBData(); DataTable DtName = new DataTable(); DataTable table = new DataTable(); table.Columns.Add("Name"); table.Columns.Add("total"); table.Columns.Add("TypeId"); table.Columns.Add("Class"); int it = 1; List strings = new List(); for (int i = 7; i < DBData[0].Columns.Count; i++) { table.Columns.Add("c" + it); DtName.Columns.Add("c" + it); strings.Add(DBData[0].Columns[i].ColumnName); it++; } DataRow dataRow = DtName.NewRow(); for (int i = 0; i < strings.Count; i++) { dataRow[i] = strings[i]; } DtName.Rows.Add(dataRow); datas.Add(DtName); //数据 List ClassName = ObtainParticleCategory(m_otsreport_export, basicData); DataTable Dt = table.Clone(); DataTable statisticalQuantity = Dt.Clone(); for (int i = 0; i < DBData.Count; i++) { if (DBData[i].Rows.Count == 0) { continue; } DataRow row = Dt.NewRow(); row["Name"] = ""; row["total"] = CalculationTableColumn(DBData[i], "con"); row["TypeId"] = ""; row["Class"] = ClassName[i]; int ie = 0; for (int a = 4; a < Dt.Columns.Count; a++) { row[a] = CalculationTableColumn(DBData[i], DtName.Rows[0][ie].ToString()); ie++; } Dt.Rows.Add(row); for (int a = 0; a < DBData[i].Rows.Count; a++) { DataRow dataRow1 = statisticalQuantity.NewRow(); dataRow1["Name"] = DBData[i].Rows[a]["TypeName"]; dataRow1["total"] = DBData[i].Rows[a]["con"]; dataRow1["TypeId"] = DBData[i].Rows[a]["TypeId"]; //dataRow1["Class"] = DBData[i].Rows[a]["Class"]; dataRow1["Class"] = ""; DataRow row1= Dt.NewRow(); row1["Name"] = DBData[i].Rows[a]["TypeName"]; row1["total"] = DBData[i].Rows[a]["con"]; row1["TypeId"] = DBData[i].Rows[a]["TypeId"]; //row1["Class"] = DBData[i].Rows[a]["Class"]; row1["Class"] = ""; int ii = 4; for (int j = 7; j < DBData[i].Columns.Count; j++) { row1[ii]= DBData[i].Rows[a][j]; dataRow1[ii] = DBData[i].Rows[a][j]; ii++; } Dt.Rows.Add(row1); statisticalQuantity.Rows.Add(dataRow1); } } datas.Add(Dt); DataTable OutStatisticalQuantity = statisticalQuantity.Clone(); DataRow row2 = OutStatisticalQuantity.NewRow(); for (int i = 4; i < statisticalQuantity.Columns.Count; i++) { row2[i]= CalculationTableColumn(statisticalQuantity, statisticalQuantity.Columns[i].ColumnName); } OutStatisticalQuantity.Rows.Add(row2); dataTable = OutStatisticalQuantity.Copy(); return datas; } /// /// 获得颗粒类别 /// /// private List ObtainParticleCategory(OTSReport_Export m_otsreport_export, BasicData basicData) { List ClassName = new List(); if (m_otsreport_export.m_ReportApp.m_RptConfigFile.Systype != OTS_SysType_ID.IncA) { DataTable get_dt = ReadClassification(basicData); DataTable getClass_dt = get_dt.Clone(); DataRow[] dataRow = get_dt.Select("", "iorder ASC"); foreach (DataRow row in dataRow) { if (row.ItemArray[1].ToString() != "Default") { getClass_dt.ImportRow(row); } } for (int i = 0; i < getClass_dt.Rows.Count; i++) { ClassName.Add(getClass_dt.Rows[i][1].ToString()); } ClassName.Add("Default"); } else { ClassName = basicData.GetGroupInformation(); } return ClassName; } private DataTable ReadClassification(BasicData basicData ) { DataTable dt_stl = new DataTable(); SqLiteHelper sh = new SqLiteHelper("data source='" + basicData.GetFilePath()+ "\\"+basicData.GetResfile() + "'"); dt_stl = sh.ExecuteQuery("select * from STDGroups"); return dt_stl; } public DataTable TypeRange(c_TemplateClass m_mbszclass, OTSReport_Export m_otsreport_export) { List colid = new List(); //获取粒级表 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; i++) { if (sizestr.Split(',')[i].Length > 0) { double d1 = Convert.ToDouble(sizestr.Split(',')[i]); colid.Add("≥" + d1.ToString()); } } DataTable ls_partsize_dt = new DataTable(); ls_partsize_dt.TableName = "PartSize"; for (int i=0;i< colid.Count;i++) { ls_partsize_dt.Columns.Add("c"+(i+1).ToString()); } DataRow dr = ls_partsize_dt.NewRow(); for (int i = 0; i < colid.Count; i++) { dr["c" + (i+1).ToString()] = colid[i]; } ls_partsize_dt.Rows.Add(dr); return ls_partsize_dt; } private double CalculationTableColumn(DataTable a_data, string a_str) { double dl = 0; if (a_data.Columns.Contains(a_str)) { for (int i = 0; i < a_data.Rows.Count; i++) { if (a_data.Rows[i][a_str].ToString() != "") { dl = dl + Convert.ToDouble(a_data.Rows[i][a_str]); } } } return dl; } } }