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