123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523 |
-
- 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
- {
- /// <summary>
- /// 夹杂物占比
- /// </summary>
- class InclusionProportion
- {
- /// <summary>
- /// 夹杂物数据表
- /// </summary>
- /// <param name="str"></param>
- /// <param name="dt"></param>
- public DataTable GetINCAtable(BasicData basicData, string str, c_TemplateClass m_mbszclass)
- {
- //根据sql条件,查询获取颗粒信息数据
- //按照list列表进行物质类排序,物质类中的元素分类按照面积的大小进行排序
- List<string> ClassName = new List<string>();
- DataTable getClass_dt = basicData.GetAllClass();
- 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());
- }
- }
- }
- //夹杂物面积比添加大类
- DataTable RawParticleData = InclusionAreaRatio_2(str, basicData, m_mbszclass);
- //夹杂物面积比计算大类占比
- ProportionOfParticleArea(RawParticleData, ClassName, str, out DataTable dt);
- return dt;
- }
- /// <summary>
- /// 夹杂物大分类chart数据
- /// </summary>
- /// <param name="str"></param>
- /// <param name="m_mbszclass"></param>
- /// <param name="m_otsreport_export"></param>
- /// <returns></returns>
- public DataTable Get_incaPIC_classify(string str ,c_TemplateClass m_mbszclass, OTSReport_Export m_otsreport_export)
- {
- ParticleData fielddata = new ParticleData(m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_rstDataMgr.GetWorkingResultId()].FilePath);
-
- DataTable m_bt_DBData = fielddata.GetAreaByAllIncA("");//获取所有分类面积和数量信息
-
- DataTable data;
- if (m_mbszclass.list_str_MainPriority_Serial.Count==0)
- {
- data = m_bt_DBData.Copy();
- }
- else
- {
- data = m_bt_DBData.Clone();
- for (int i = 0; i < m_bt_DBData.Rows.Count; i++)
- {
- for (int a = 0; a < m_mbszclass.list_str_MainPriority_Serial.Count; a++)
- {
- if (m_bt_DBData.Rows[i]["TypeId"].ToString() == m_mbszclass.list_str_MainPriority_Serial[a])
- {
- data.Rows.Add(m_bt_DBData.Rows[i].ItemArray);
- continue;
- }
- }
- }
- }
-
- //去除物质分类(非夹杂物分类)
- for (int a = 0; a < m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial.Count; a++)
- {
- for (int i = data.Rows.Count - 1; i >= 0; i--)
- {
- if (data.Rows[i]["TypeId"].ToString() == m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial[a].ToString())
- {
- data.Rows.RemoveAt(i);
- }
- }
- }
- DataTable AreaInformationOfAllElements = ConSolidateInvalid(data);
- DataTable AllAnalysisDetails = new DataTable();
- AllAnalysisDetails.Columns.Add("Name");
- AllAnalysisDetails.Columns.Add("TypeId");
- AllAnalysisDetails.Columns.Add("Area", typeof(double));
- AllAnalysisDetails.Columns.Add("Class");
- AllAnalysisDetails.Columns.Add("Cunt", typeof(double));
- for (int i = 0; i < AreaInformationOfAllElements.Rows.Count; i++)
- {
- DataRow dr2 = AllAnalysisDetails.NewRow();
- dr2["Name"] = AreaInformationOfAllElements.Rows[i]["TypeName"].ToString();
- dr2["Area"] = Convert.ToDouble(AreaInformationOfAllElements.Rows[i]["ar"]);
- dr2["TypeId"] = AreaInformationOfAllElements.Rows[i]["TypeId"].ToString();
- dr2["Cunt"] = Convert.ToDouble(AreaInformationOfAllElements.Rows[i]["con"]);
- if (AreaInformationOfAllElements.Rows[i]["GroupName"].ToString() == "")
- dr2["Class"] = "Default";
- else
- dr2["Class"] = AreaInformationOfAllElements.Rows[i]["GroupName"].ToString();
- //dr2["Class"] = AreaInformationOfAllElements.Rows[i]["GroupName"].ToString();
- AllAnalysisDetails.Rows.Add(dr2);
- }
- //按照list列表进行物质类排序,物质类中的元素分类按照面积的大小进行排序
- List<string> ClassName = new List<string>();
- DataTable getClass_dt = fielddata.GetAllClass();
- 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());
- }
- }
- }
- DataTable AreaRatio = new DataTable();
- AreaRatio.TableName = "InclusionAreaRatio";
- AreaRatio.Columns.Add("Class");
- AreaRatio.Columns.Add("Name");
- AreaRatio.Columns.Add("Area", typeof(double));
- AreaRatio.Columns.Add("inca_proportion");
- AreaRatio.Columns.Add("inca_FieldRatio");
- AreaRatio.Columns.Add("Cunt", typeof(int));
- //获取夹杂物的总面积用于计算夹杂物类别的占比(gridview最后一个固定是未识别颗粒,要排除未识别颗粒所以for循环至grid view长度减一)
- double totalInclusionArea = Convert.ToDouble(decimal.Parse(AllAnalysisDetails.Compute("sum(Area)", "").ToString()));
- for (int i = 0; i < AllAnalysisDetails.Rows.Count; i++)
- {
- DataRow dr2 = AreaRatio.NewRow();
- dr2["Class"] = AllAnalysisDetails.Rows[i]["Class"].ToString();
- dr2["Name"] = AllAnalysisDetails.Rows[i]["Name"].ToString();
- dr2["Area"] = Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]);
- dr2["inca_proportion"] = Math.Round((Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]) / totalInclusionArea) * 100, 2);
- dr2["inca_FieldRatio"] = Math.Round((Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]) / Convert.ToDouble(str)) * 100, 4);
- dr2["Cunt"] = AllAnalysisDetails.Rows[i]["Cunt"].ToString();
- AreaRatio.Rows.Add(dr2);
- }
- DataTable AreaRatio_dt = AreaRatio.Copy();
- AreaRatio_dt.Clear();
- for (int i = 0; i < ClassName.Count(); i++)
- {
- DataTable dt = AreaRatio.Copy();
- dt.Clear();
- for (int a = 0; a < AreaRatio.Rows.Count; a++)
- {
- if (AreaRatio.Rows[a]["Class"].ToString() == ClassName[i].ToString())
- {
- dt.Rows.Add(AreaRatio.Rows[a].ItemArray);
- }
- }
- DataView dv = dt.DefaultView;
- dv.Sort = "Area DESC";
- DataTable dt_Element = dv.ToTable();
- for (int a = 0; a < dt_Element.Rows.Count; a++)
- {
- AreaRatio_dt.Rows.Add(dt_Element.Rows[a].ItemArray);
- }
- }
- DataTable AllAnalysisDetails1 = AreaRatio_dt.Copy();
- AllAnalysisDetails1.Clear();
- for (int i = 0; i < ClassName.Count; i++)
- {
- DataTable dt = AreaRatio_dt.Copy();
- dt.Clear();
- for (int a = 0; a < AreaRatio_dt.Rows.Count; a++)
- {
- if (AreaRatio_dt.Rows[a]["Class"].ToString() == ClassName[i].ToString())
- {
- dt.Rows.Add(AreaRatio_dt.Rows[a].ItemArray);
- }
- }
- if (dt.Rows.Count > 0)
- {
- double totalInclusionArea2 = Convert.ToDouble(decimal.Parse(AreaRatio_dt.Compute("sum(Area)", "").ToString()));
- double Area = Convert.ToDouble(decimal.Parse(dt.Compute("sum(Area)", "").ToString()));
- int cunt = Convert.ToInt32(decimal.Parse(dt.Compute("sum(Cunt)", "").ToString()));
- DataRow dr3 = AllAnalysisDetails1.NewRow();
- dr3["Class"] = ClassName[i].ToString();
- dr3["Area"] = Math.Round(Area, 2);
- dr3["inca_proportion"] = Math.Round((Convert.ToDouble(dt.Rows[0]["Area"]) / totalInclusionArea2) * 100, 2);
- dr3["inca_FieldRatio"] = Math.Round((Convert.ToDouble(dt.Rows[0]["Area"]) / Convert.ToDouble(str)) * 100, 4);
- dr3["Cunt"] = cunt;
- AllAnalysisDetails1.Rows.Add(dr3);
- }
- }
- return AllAnalysisDetails1;
- }
- /// <summary>
- /// 夹杂物细分类chart数据
- /// </summary>
- /// <param name="m_mbszclass"></param>
- /// <param name="m_otsreport_export"></param>
- /// <returns></returns>
- public DataTable Get_incaPIC_subdivision(c_TemplateClass m_mbszclass,OTSReport_Export m_otsreport_export)
- {
- ParticleData fielddata = new ParticleData(m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_rstDataMgr.GetWorkingResultId()].FilePath);
- DataTable m_bt_DBData = fielddata.GetAreaByAllIncA("");//获取所有分类面积和数量信息
- //按照list列表进行物质类排序,物质类中的元素分类按照面积的大小进行排序
- List<string> ClassName = new List<string>();
- DataTable getClass_dt = fielddata.GetAllClass();
- 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());
- }
- }
- }
- DataTable dataTable = m_bt_DBData.Clone();
- for (int i=0;i< m_bt_DBData.Rows.Count;i++)
- {
- for (int a=0;a< ClassName.Count;a++)
- {
- if (m_bt_DBData.Rows[i]["GroupName"].ToString()== ClassName[a].ToString())
- {
- dataTable.Rows.Add(m_bt_DBData.Rows[i].ItemArray);
- }
- }
- }
- if (m_mbszclass.list_str_MainPriority_Serial.Count==0)
- {
- return ConSolidateInvalid(dataTable);
- }
- DataTable data = m_bt_DBData.Clone();
- for (int i = 0; i < m_bt_DBData.Rows.Count; i++)
- {
- for (int a = 0; a < m_mbszclass.list_str_MainPriority_Serial.Count; a++)
- {
- if (m_bt_DBData.Rows[i]["TypeId"].ToString() == m_mbszclass.list_str_MainPriority_Serial[a])
- {
- data.Rows.Add(m_bt_DBData.Rows[i].ItemArray);
- continue;
- }
- }
- }
- return ConSolidateInvalid(dataTable);
- }
- private DataTable ConSolidateInvalid(DataTable dt)
- {
- DataTable dt_invalid = dt.Clone();
- DataTable dt_no_invalid = dt.Clone();
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- if (dt.Rows[i]["TypeName"].ToString() == "Invalid")
- {
- dt_invalid.Rows.Add(dt.Rows[i].ItemArray);
- }
- else
- {
- dt_no_invalid.Rows.Add(dt.Rows[i].ItemArray);
- }
- }
- return dt_no_invalid;
- }
-
- private DataTable InclusionAreaRatio_2(string str, BasicData basicData, c_TemplateClass m_mbszclass)
- {
- //根据sql条件,查询获取颗粒信息数据
- //ParticleData fielddata = new ParticleData(m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_rstDataMgr.getSelectedIndex()].FilePath);
- DataTable m_bt_DBData = InvalidRemoval(basicData.getParticleData().GetAreaByAllIncA(""));
- DataTable AreaInformationOfAllElements;
- if (m_mbszclass.list_str_MainPriority_Serial.Count==0)
- {
- AreaInformationOfAllElements = m_bt_DBData.Copy();
- }
- else
- {
- AreaInformationOfAllElements = m_bt_DBData.Clone();
- for (int i = 0; i < m_bt_DBData.Rows.Count; i++)
- {
- for (int a = 0; a < m_mbszclass.list_str_MainPriority_Serial.Count; a++)
- {
- if (m_bt_DBData.Rows[i]["TypeId"].ToString() == m_mbszclass.list_str_MainPriority_Serial[a])
- {
- AreaInformationOfAllElements.Rows.Add(m_bt_DBData.Rows[i].ItemArray);
- continue;
- }
- }
- }
- }
-
- //去除物质分类(非夹杂物分类)
- for (int a = 0; a < m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial.Count; a++)
- {
- for (int i = AreaInformationOfAllElements.Rows.Count - 1; i >= 0; i--)
- {
- if (AreaInformationOfAllElements.Rows[i]["TypeId"].ToString() == m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial[a].ToString())
- {
- AreaInformationOfAllElements.Rows.RemoveAt(i);
- }
- }
- }
- DataTable AllAnalysisDetails = new DataTable();
- AllAnalysisDetails.Columns.Add("Name");
- AllAnalysisDetails.Columns.Add("TypeId");
- AllAnalysisDetails.Columns.Add("Area", typeof(double));
- AllAnalysisDetails.Columns.Add("Class");
- AllAnalysisDetails.Columns.Add("Cunt", typeof(double));
- for (int i = 0; i < AreaInformationOfAllElements.Rows.Count; i++)
- {
- DataRow dr2 = AllAnalysisDetails.NewRow();
- dr2["Name"] = AreaInformationOfAllElements.Rows[i]["TypeName"].ToString();
- dr2["Area"] = Convert.ToDouble(AreaInformationOfAllElements.Rows[i]["ar"]);
- dr2["TypeId"] = AreaInformationOfAllElements.Rows[i]["TypeId"].ToString();
- dr2["Cunt"] = Convert.ToDouble(AreaInformationOfAllElements.Rows[i]["con"]);
- dr2["Class"] = AreaInformationOfAllElements.Rows[i]["GroupName"].ToString();
- AllAnalysisDetails.Rows.Add(dr2);
- }
- List<string> ClassName = new List<string>();
- DataTable getClass_dt = basicData.GetAllClass();
- 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());
- }
- }
- }
- DataTable AreaRatio = new DataTable();
- AreaRatio.TableName = "InclusionAreaRatio";
- AreaRatio.Columns.Add("Class");
- AreaRatio.Columns.Add("subdivision");
- AreaRatio.Columns.Add("Area", typeof(double));
- AreaRatio.Columns.Add("inca_proportion");
- AreaRatio.Columns.Add("inca_FieldRatio");
- //获取夹杂物的总面积用于计算夹杂物类别的占比(gridview最后一个固定是未识别颗粒,要排除未识别颗粒所以for循环至grid view长度减一)
- int sumArea = 0;
- for (int i = 0; i < AllAnalysisDetails.Rows.Count; i++)
- {
- sumArea = sumArea + Convert.ToInt32(AllAnalysisDetails.Rows[i]["Area"]);
- }
- for (int i = 0; i < AllAnalysisDetails.Rows.Count; i++)
- {
- DataRow dr = AreaRatio.NewRow();
- //dr["Class"] = AllAnalysisDetails.Rows[i]["Class"].ToString();
- if (AllAnalysisDetails.Rows[i]["Class"].ToString() == "")
- dr["Class"] = "Default";
- else
- dr["Class"] = AllAnalysisDetails.Rows[i]["Class"].ToString();
- dr["subdivision"] = AllAnalysisDetails.Rows[i]["Name"].ToString();
- dr["Area"] = Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]);
- dr["inca_proportion"] = Math.Round((Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]) / sumArea) * 100, 2);
- dr["inca_FieldRatio"] = Math.Round((Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]) / Convert.ToDouble(str)) * 100, 4);
- AreaRatio.Rows.Add(dr);
- }
- DataTable AreaRatio_dt = AreaRatio.Copy();
- AreaRatio_dt.Clear();
- for (int i = 0; i < ClassName.Count(); i++)
- {
- DataTable dt = AreaRatio.Copy();
- dt.Clear();
- for (int a = 0; a < AreaRatio.Rows.Count; a++)
- {
- if (AreaRatio.Rows[a]["Class"].ToString() == ClassName[i].ToString())
- {
- dt.Rows.Add(AreaRatio.Rows[a].ItemArray);
- }
- }
- DataView dv = dt.DefaultView;
- dv.Sort = "Area DESC";
- DataTable dt_Element = dv.ToTable();
- for (int a = 0; a < dt_Element.Rows.Count; a++)
- {
- AreaRatio_dt.Rows.Add(dt_Element.Rows[a].ItemArray);
- }
- }
- return AreaRatio_dt;
- }
- private bool ProportionOfParticleArea(DataTable dataTable, List<string> ClassName, string str, out DataTable dt_out)
- {
- DataTable AllAnalysisDetails = dataTable.Copy();
- AllAnalysisDetails.Clear();
- AllAnalysisDetails.TableName = "InclusionAreaRatio";
- for (int i = 0; i < ClassName.Count; i++)
- {
- DataTable dt = dataTable.Copy();
- dt.Clear();
- for (int a = 0; a < dataTable.Rows.Count; a++)
- {
- if (dataTable.Rows[a]["Class"].ToString() == ClassName[i].ToString())
- {
- dt.Rows.Add(dataTable.Rows[a].ItemArray);
- }
- }
- if (dt.Rows.Count > 0)
- {
- double totalInclusionArea = Convert.ToDouble(decimal.Parse(dataTable.Compute("sum(Area)", "").ToString()));
- double Area = Convert.ToDouble(decimal.Parse(dt.Compute("sum(Area)", "").ToString()));
- DataRow dr = AllAnalysisDetails.NewRow();
- dr["Class"] = ClassName[i].ToString();
- dr["Area"] = Math.Round(Area, 2);
- //Convert.ToDouble(decimal.Parse(dt.Compute("sum(e3)", "").ToString()));
- dr["inca_proportion"] = Math.Round((Convert.ToDouble(Area) / totalInclusionArea) * 100, 2);
- dr["inca_FieldRatio"] = Math.Round((Convert.ToDouble(Area) / Convert.ToDouble(str)) * 100, 4);
- AllAnalysisDetails.Rows.Add(dr);
- DataView dv = dt.DefaultView;
- dv.Sort = "Area DESC";
- DataTable dt_Area = dv.ToTable();
- for (int a = 0; a < dt_Area.Rows.Count; a++)
- {
- dt_Area.Rows[a]["Class"] = "";
- dt_Area.Rows[a]["Area"] = Math.Round(Convert.ToDouble(dt_Area.Rows[a]["Area"]), 2);
- AllAnalysisDetails.Rows.Add(dt_Area.Rows[a].ItemArray);
- }
- }
- }
- dt_out = AllAnalysisDetails.Copy();
- return true;
- }
- 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;
- }
- }
- }
|