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