Browse Source

修改报告程序报告导出清洁度模式下粒级修改导出发生的错误

zhangjiaxin 11 months ago
parent
commit
ce2699f809

+ 0 - 1
Bin/x64/Debug/Config/ReportTemplate/Inca_Template/ReportTemplateConfig.xml

@@ -126,7 +126,6 @@
     </list_str_kllb_DeleteClass>
     <list_int_kllb_number>18</list_int_kllb_number>
     <list_str_kllb_DeleteClass_Serial>
-      <YS0>20001</YS0>
     </list_str_kllb_DeleteClass_Serial>
   </M_KLLBXX>
   <M_address>

+ 2 - 3
Bin/x64/Debug/Config/ReportTemplate/TCleannessA_Template/ReportTemplateConfig.xml

@@ -12,8 +12,7 @@
     <str_xzkl>全部颗粒</str_xzkl>
     <int_xzkl>0</int_xzkl>
     <LOGName>ReportIdentification.bmp</LOGName>
-    <StandardLibraryName>
-    </StandardLibraryName>
+    <StandardLibraryName>OTSCleanlinessSTD1.db</StandardLibraryName>
   </M_SY>
   <M_YMYJ>
     <str_tb_ymwb>锂电异物分析报告</str_tb_ymwb>
@@ -147,6 +146,6 @@
     </Notes>
   </M_DZ>
   <M_VDA19>
-    <IsVDA19>True</IsVDA19>
+    <IsVDA19>False</IsVDA19>
   </M_VDA19>
 </XmlConfig>

+ 1 - 1
Bin/x64/Debug/Config/SysData/OTSProgMgrParam.pmf

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<XMLData RunMode="ProfessionalMode" SysType="IncA">
+<XMLData RunMode="ProfessionalMode" SysType="TCCleannessA">
   <Member RegName="GenParam" DefaultArea="100" DefaultSampleName="Sample" DefaultShape="0" MeasParamFileFolderName=".\Config\ProData\" MeasSwitch="true" PartSTDLibFolderName=".\Config\SysData\" PropertyDisplayMode="0" StdLibFileName="NoSTDDB" SteelTechnology="0" UseSysSTD="true" />
   <Member RegName="ImageProcParam" AutoBGRemoveType="0:MIDDLE" BGRemoveType="0:AUTO" MatrixStep="50" OverlapParam="0" ParticleSelectionCondition="">
     <Member RegName="BGGray" end="255" start="80" />

+ 2 - 2
Bin/x64/Debug/Config/SysData/OTSReportMgrParam.rpf

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<XMLData systype="IncA">
+<XMLData systype="TCCleannessA">
   <Member RegName="Scale" strValue="1000" />
   <Member RegName="DefaultComputedColName" strValue="Area,EquivalentCircleDiameter,MaxDiameter,MinDiameter,DiameterRatio,FerretDiameter,PERP,PERI,INSCR,MEAN,ELONG,ASPECT_ELONG,Orientation" />
   <Member RegName="ElementsColName" strValue="C,O,Al,Fe,F,Ti,Na,Mn,Mg" />
-  <Member RegName="PartSizeFile" name="lj.psf" />
+  <Member RegName="PartSizeFile" name="ljNuw.psf" />
   <Member RegName="TRIO_CHART_TYPE" strValue="CaO.SiO₂.Al₂O₃" />
   <Member RegName="SIZE_CAL_METHOD_TYPE" strValue="DMAX" />
 </XMLData>

+ 2 - 2
OTSIncAReportApp/1-UI/OTSReportExport/DataIntegration/BasicData.cs

@@ -151,7 +151,7 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
                 }
             }
 
-            if (m_mbszclass.list_str_MainPriority.Count == 0)
+            if (m_mbszclass.list_str_MainPriority_Serial.Count == 0)
             {
                 BData = m_bt_DBData.Copy();
                 return;
@@ -179,7 +179,7 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
             DataTable dt_stl = sh.ExecuteQuery("select * from ClassifySTD");
             DataTable LargeClassificationTable = sh.ExecuteQuery("select * from STDGroups");
 
-            for (int i = 0; i < m_mbszclass.list_str_MainPriority.Count; i++)
+            for (int i = 0; i < m_mbszclass.list_str_MainPriority_Serial.Count; i++)
             {
                 bool bl = false;
                 for (int a = 0; a < m_bt_DBData.Rows.Count; a++)

+ 95 - 5
OTSIncAReportApp/1-UI/OTSReportExport/DataIntegration/ElementalAnalysis.cs

@@ -22,7 +22,7 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
         /// <param name="m_mbszclass"></param>
         /// <param name="m_otsreport_export"></param>
         /// <returns></returns>
-        public List<DataTable> GetElementData(BasicData basicData, OTSReport_Export m_otsreport_export)
+        public List<DataTable> GetElementData(BasicData basicData, OTSReport_Export m_otsreport_export,bool lingge)
         {
             DataTable data = basicData.GetDBData();
             //根据sql条件,查询获取颗粒信息数据
@@ -66,12 +66,25 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
 
             //统计元素物质大类的元素信息和面积占比
             DataTable dt_ElementalSubstance = ElementalSubstance(AllAnalysisDetails, ClassName, basicData.getParticleData());
+            DataTable dt_ElementSorting;
             //统计元素并按照Class Name自定义列表进行排序,大类中的小类元素信息按照面积从大到小排序
-            DataTable dt_ElementSorting = ElementSorting(AllAnalysisDetails, ClassName, basicData.getParticleData());
-            //生成最后导出时物质元素成分表
+            if (lingge)
+            {
+               //单个大类
+                dt_ElementSorting = ElementSortingSS(AllAnalysisDetails, ClassName, basicData.getParticleData());
+                
+            }
+            else
+            {
+                dt_ElementSorting = ElementSorting(AllAnalysisDetails, ClassName, basicData.getParticleData());
+
+            }
+            //统计元素并按照Class Name自定义列表进行排序,大类中的小类元素信息按照面积从大到小排序
+            //DataTable dt_ElementSorting = ElementSorting(AllAnalysisDetails, ClassName, basicData.getParticleData());
+            ////生成最后导出时物质元素成分表
             DataTable dt = MaterialElementComposition(dt_ElementalSubstance, 13, m_otsreport_export);//导出14个元素成分信息
-                                                                                                     //生成最后导出时物质元素细分表
-            DataTable dtname = new DataTable();
+            dt.Columns.Add("TypeId");                                                                     //生成最后导出时物质元素细分表
+DataTable dtname = new DataTable();
             DataTable dtData = new DataTable();
             SubdivisionOfMaterialElements(dt_ElementSorting, 13, ClassName, dt, out dtname, out dtData);
             List<DataTable> datas = new List<DataTable>();
@@ -120,6 +133,34 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
                 //循环整个表筛选出当前的物质
                 for (int a = 0; a < a_ElementalSubstance.Rows.Count; a++)
                 {
+                    if(ClassName.Count==1)
+                    {
+                        for (int b = 0; b < dt_1.Columns.Count; b++)
+                        {
+                            if (dt_2.Columns[b].ToString() != "Class")
+                            {
+                                if (a_ElementalSubstance.Columns.Contains(dt_2.Columns[b].ToString()))
+                                {
+                                    if (a_ElementalSubstance.Rows[a][dt_2.Columns[b].ToString()].ToString() == "")
+                                    {
+                                        dt_2.Rows[0][dt_2.Columns[b].ToString()] = 0;
+                                    }
+                                    else
+                                    {
+                                        dt_2.Rows[0][dt_2.Columns[b].ToString()] = a_ElementalSubstance.Rows[a][dt_2.Columns[b].ToString()];
+                                    }
+                                }
+                                else
+                                {
+                                    dt_2.Rows[0][dt_2.Columns[b].ToString()] = 0;
+                                }
+
+                            }
+                        }
+                        dt_1.Rows.Add(dt_2.Rows[0].ItemArray);
+                    }
+                    else
+
                     if (ClassName[i].ToString() == a_ElementalSubstance.Rows[a]["Class"].ToString())
                     {
                         for (int b = 0; b < dt_1.Columns.Count; b++)
@@ -146,6 +187,7 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
                         }
                         dt_1.Rows.Add(dt_2.Rows[0].ItemArray);
                     }
+                    
                 }
 
                 for (int a = 0; a < dt_1.Rows.Count; a++)
@@ -282,6 +324,54 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
             return ElementSorting_dt;
         }
 
+        private DataTable ElementSortingSS(DataTable AllAnalysisDetails, List<string> ClassName, ParticleData fielddata)
+        {
+            DataTable dte = fielddata.GetAllElement();
+            DataTable ElementSorting_dt = AllAnalysisDetails.Copy();
+            ElementSorting_dt.Clear();
+            for (int i = 0; i < ClassName.Count; i++)
+            {
+                DataTable dt = AllAnalysisDetails.Copy();
+                //dt.Clear();
+                //for (int a = 0; a < AllAnalysisDetails.Rows.Count; a++)
+                //{
+                //    if (AllAnalysisDetails.Rows[a]["Class"].ToString() == ClassName[i].ToString())
+                //    {
+                //        dt.Rows.Add(AllAnalysisDetails.Rows[a].ItemArray);
+                //    }
+                //}
+                //将颗粒大小排序(从大到小)
+                //DataView dv = dt.DefaultView;
+                //dv.Sort = "Area DESC";
+                //DataTable dt_Element = dv.ToTable();
+                DataTable dt_Element = dt.Copy();
+                for (int a = 0; a < dt_Element.Rows.Count; a++)
+                {
+                    ElementSorting_dt.Rows.Add(dt_Element.Rows[a].ItemArray);
+                }
+            }
+            //循环创建元素列(类型定义为double,为以后计算做准备)
+            for (int a = 0; a < dte.Rows.Count; a++)
+            {
+                ElementSorting_dt.Columns.Add(dte.Rows[a]["Name"].ToString(), typeof(double));
+            }
+
+            for (int a = 0; a < ElementSorting_dt.Rows.Count; a++)
+            {
+                DataTable ClassificationDetails = fielddata.GetAreaByIncA(ElementSorting_dt.Rows[a]["TypeId"].ToString(), "");//获取单个分类的元素信息
+                //DataRow dr2 = ElementSorting_dt.NewRow();
+
+                foreach (DataRow dr in ClassificationDetails.Rows)
+                {
+                    double doe = Convert.ToDouble(dr["pc"]);
+                    ElementSorting_dt.Rows[a][dr["Name"].ToString()] = Math.Round(doe / Convert.ToDouble(ElementSorting_dt.Rows[a]["Area"]), 2);
+                }
+            }
+
+            return ElementSorting_dt;
+        }
+
+
         private DataTable ElementalSubstance(DataTable AllAnalysisDetails, List<string> ClassName, ParticleData fielddata)
         {
             //当前元素物质类面积的总和

+ 4 - 3
OTSIncAReportApp/1-UI/OTSReportExport/DataIntegration/ParticleAnalysis.cs

@@ -605,7 +605,7 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
             dt_Class.Clear();
             dt_Class.TableName = "Particel";
             dt_Class.Columns.Remove("Name");
-            dt_Class.Columns.Remove("TypeId");
+            //dt_Class.Columns.Remove("TypeId");
 
             for (int i = 0; i < ClassName.Count; i++)
             {
@@ -645,9 +645,10 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
                             dt_2.Rows[0][dt.Columns[a].ToString()] = decimal.Parse(dt.Compute("sum(" + dt.Columns[a].ToString() + ")", "").ToString());
                         }
                     }
+                  
                 }
                 dt_2.Columns.Remove("Name");
-                dt_2.Columns.Remove("TypeId");
+                //dt_2.Columns.Remove("TypeId");
                 dt_2.Rows[0]["Class"] = ClassName[i];
                 dt_Class.Rows.Add(dt_2.Rows[0].ItemArray);
             }
@@ -702,7 +703,7 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
                     dt.Rows.Add(dt_1_sort.Rows[a].ItemArray);
                 }
             }
-            dt.Columns.Remove("TypeId");
+            //dt.Columns.Remove("TypeId");
 
             return dt;
 

+ 2 - 1
OTSIncAReportApp/1-UI/OTSReportExport/OTSReport_Template_CleannessA.cs

@@ -1,4 +1,5 @@
 
+using NPOI.Util;
 using OTSCommon.DBOperate;
 using OTSIncAReportApp._1_UI.OTSReportExport;
 using OTSIncAReportApp._1_UI.OTSTemplateDesigner;
@@ -367,7 +368,7 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             //}
             //主要优先显示
             m_OTSReport_Export.m_mbszclass.list_str_MainPriority.Clear();
-            m_OTSReport_Export.m_mbszclass.list_str_MainPriority = list_MainPriority;
+            m_OTSReport_Export.m_mbszclass.list_str_MainPriority = list_MainPriority.Copy();
             //string[] MainPriority = textBox_zypxss.Text.Split(new char[] { '/' });
             //for (int i = 0; i < MainPriority.Length; i++)
             //{

+ 69 - 19
OTSIncAReportApp/1-UI/OTSReportExport/Template/DataTemplate.cs

@@ -15,6 +15,7 @@ using System.Collections.Generic;
 using System.Data;
 using System.Drawing;
 using System.Windows.Forms;
+using static OTSDataType.otsdataconst;
 using static OTSIncAReportApp.OTSReport_Export;
 
 namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
@@ -368,7 +369,7 @@ namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
             xrChart_ParticelSizeSubdivision.Visible = true;
             List<List<ParticleSizeDEVData>> list_ParticelSizeData = new List<List<ParticleSizeDEVData>>();
             int ls = 0;
-            DataTable REORDER_data = REORDER(CompositeData[1], "Name");
+            DataTable REORDER_data = REORDER(surface_dt2, "TypeId");
             for (int i = 0; i < REORDER_data.Rows.Count; i++)
             {
                 if (REORDER_data.Rows[i]["Name"].ToString() == "" || REORDER_data.Rows[i]["Name"].ToString() == null)
@@ -507,14 +508,14 @@ namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
            
             for (int i=0;i< data.Rows.Count;i++)
             {
-                if (TemplateClass.list_str_MainPriority.Count!=0)
+                if (TemplateClass.list_str_MainPriority_Serial.Count!=0)
                 {
-                    for (int a = 0; a < TemplateClass.list_str_MainPriority.Count; a++)
+                    for (int a = 0; a < TemplateClass.list_str_MainPriority_Serial.Count; a++)
                     {
-                        if (data.Rows[i][field].ToString() == TemplateClass.list_str_MainPriority[a])
+                        if (data.Rows[i][field].ToString() == TemplateClass.list_str_MainPriority_Serial[a])
                         {
                             dataTable.Rows.Add(data.Rows[i].ItemArray);
-                            break; ;
+                            break;
                         }
                     }
                 }
@@ -523,18 +524,26 @@ namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
                     dataTable.Rows.Add(data.Rows[i].ItemArray);
                 }
             }
-            
+
+            //for (int i=0;i< dataTable.Rows.Count;i++)
+            //{
+            //    if (!string.IsNullOrWhiteSpace(dataTable.Rows[i]["Name"].ToString()))
+            //    {
+            //        dataTable.Rows[i].Delete();
+            //    }
+            //}
+
+            //dataTable.AcceptChanges();
+            DataTable dt = dataTable.Clone();
             for (int i=0;i< dataTable.Rows.Count;i++)
             {
-                if (!string.IsNullOrWhiteSpace(dataTable.Rows[i]["Class"].ToString()))
+                if (dataTable.Rows[i]["Name"].ToString()!="")
                 {
-                    dataTable.Rows[i].Delete();
+                    dt.Rows.Add(dataTable.Rows[i].ItemArray);
                 }
             }
 
-            dataTable.AcceptChanges();
-
-            return dataTable.Copy();
+            return dt.Copy();
        
         }
         /// <summary>
@@ -683,6 +692,10 @@ namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
             int pos = 3;
             for (int i=0; i< listMin.Count; i++)
             {
+                if(i>7)
+                {
+                    continue;
+                }
                 xt_TCleannessA.Rows[0].Cells[pos].Text = listMin[i].ToString() + " ~";
                 if (listMax[i] == int.MaxValue)
                     xt_TCleannessA.Rows[1].Cells[pos].Text = "MAX";
@@ -864,23 +877,53 @@ namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
         /// <param name="a_pieSeries">小分类</param>
         public void setParticleSizeTable(bool a_pieSeriesClass, bool a_pieSeries, bool isStacking)
         {
-            
+            //if (m_ReportApp.m_RptConfigFile.Systype != OTS_SysType_ID.IncA)
 
-            xrPageBreak1.Visible = true;
+                xrPageBreak1.Visible = true;
             ParticleAnalysis particleList = new ParticleAnalysis();
             List<DataTable> CompositeData = particleList.GetClassificationConsolidationTable(basicData);
             DataTable classData= particleList.GetLargeClassification(basicData);
             DataTable subdivdeData = particleList.GetSubClassification(basicData);
             DataTable chartmax= particleList.GetChartDataCalss(basicData);
             DataTable surface_dt2 = CompositeData[1].Clone();
-            for (int i=0;i< CompositeData[1].Rows.Count;i++)
+
+            if (m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.Systype != OTS_SysType_ID.IncA)
             {
-                if (CompositeData[1].Rows[i]["Name"].ToString()!="")
+                for(int i=0;i< subdivdeData.Rows.Count;i++)
+                {
+                    if (subdivdeData.Rows[i]["Name"].ToString() != "")
+                    {
+                        DataRow dr = surface_dt2.NewRow();
+                        dr["c1"] = subdivdeData.Rows[i]["c1"];
+                        dr["c2"] = subdivdeData.Rows[i]["c2"];
+                        dr["c3"] = subdivdeData.Rows[i]["c3"];
+                        dr["c4"] = subdivdeData.Rows[i]["c4"];
+                        dr["c5"] = subdivdeData.Rows[i]["c5"];
+                        dr["c6"] = subdivdeData.Rows[i]["c6"];
+                        dr["c7"] = subdivdeData.Rows[i]["c7"];
+                        dr["c8"] = subdivdeData.Rows[i]["c8"];
+                        dr["c9"] = subdivdeData.Rows[i]["c9"];
+                        dr["Name"] = subdivdeData.Rows[i]["Name"];
+                        dr["total"] = subdivdeData.Rows[i]["total"];
+                        dr["Class"] = subdivdeData.Rows[i]["Class"];
+                        dr["TypeId"] = subdivdeData.Rows[i]["TypeId"];
+                        surface_dt2.Rows.Add(dr);
+                    }
+                }
+            }
+            else
+            {
+                for (int i = 0; i < CompositeData[1].Rows.Count; i++)
                 {
-                    surface_dt2.Rows.Add(CompositeData[1].Rows[i].ItemArray);
+                    if (CompositeData[1].Rows[i]["Name"].ToString() != "")
+                    {
+                        surface_dt2.Rows.Add(CompositeData[1].Rows[i].ItemArray);
+                    }
                 }
             }
 
+            
+
             for (int i = 0; i < classData.Rows.Count; i++)
             {
                 classData.Rows[i]["Class"] = subscript.Getsubscriptstring(classData.Rows[i]["Class"].ToString());
@@ -1021,7 +1064,7 @@ namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
             dt.Columns.Add("num");
             for (int i = 0; i < dataTable.Rows.Count; i++)
             {
-                for (int a = 0; a < 11; a++)
+                for (int a = 0; a < 10; a++)
                 {
                     if (string.IsNullOrEmpty(TypeRange.Rows[0][a].ToString()))
                         continue;
@@ -1167,7 +1210,7 @@ namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
 
 
             int ls = 0;
-            DataTable REORDER_data = REORDER(a_datas[1], "Name");
+            DataTable REORDER_data = REORDER(a_datas[1], "TypeId");
             if (REORDER_data.Rows.Count == 0)
                 return;
 
@@ -1254,11 +1297,18 @@ namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
         public void setElementAvgGrid()
         {
             ElementalAnalysis elementalAnalysis = new ElementalAnalysis();
-            List<DataTable> datas = elementalAnalysis.GetElementData(basicData, m_otsreport_export);
+            
             if (basicData.GetIsThereAMajorClassification())
+            {
+                List<DataTable> datas = elementalAnalysis.GetElementData(basicData, m_otsreport_export,false);
                 add_SetElementAvgGridS(datas);
+            }
             else
+            {
+                List<DataTable> datas = elementalAnalysis.GetElementData(basicData, m_otsreport_export,true);
                 add_SetElementAvgGrid(datas);
+            }
+               
         }
 
         private XRTableRow AddInclusionIndex(string a_str)