Procházet zdrojové kódy

修改国标DS类的Grade列排序的问题

zhangjiaxin před 2 roky
rodič
revize
52df6139d6

+ 85 - 62
OTSCPP/OTSRptCalculate/GBCal/CGBCalculate.cpp

@@ -806,76 +806,32 @@ namespace OTSGBCalculate
 				break;
 			}
 		}
+		COTSParticleList allDSParts;
 		for (CGBFieldDataPtr frame : listCGBField)
-        {
+		{
 			auto dsparticles = frame->listDSParticles;
+
+
 			for (auto part : dsparticles)
 			{
-				for (int i = 0; i < columnNum; i++)
-				{
-					CString strName;
-					CGridRowsList listRows;
-					CGridRowPtr pRow;
-					CString strWidthName1, strWidthName2, strWidthName3;
-					CString idstr;
-					int fldid;
-					int partId;
-					switch (i)
-					{
-					case 0:
-						pColumn = listCol.at(0);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::STRING);
-						 fldid = part->GetFieldId();
-						 partId = part->GetTagId();
-					
-						idstr.Format("%d_%d", fldid,partId);
-						
-						pRow->SetStringValue(idstr);
-						pColumn->AddGridRow(pRow);
+			
+				allDSParts.push_back(part);
 
-						break;
-					case 1:
-						pColumn = listCol.at(1);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
-						pRow->SetIntValue(part->GetActualArea());
-						pColumn->AddGridRow(pRow);
-						break;
-					case 2:
-						pColumn = listCol.at(2);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::FLOAT);
-						pRow->SetDoubleValue(part->GetFeretDiameter());
-						pColumn->AddGridRow(pRow);
-						break;
-					case 3:
-						pColumn = listCol.at(3);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
-						pRow->SetIntValue(part->GetAbsolutPos().x);
-						pColumn->AddGridRow(pRow);
-						break;
-					case 4:
-						pColumn = listCol.at(4);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
-						pRow->SetIntValue(part->GetAbsolutPos().y);
-						pColumn->AddGridRow(pRow);
-						break;
-					case 5:
-						pColumn = listCol.at(5);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
-						pRow->SetIntValue((int)OTSGBCalculate::GetDSGrade(part->GetFeretDiameter()));
-						pColumn->AddGridRow(pRow);
-						break;
-					}
-				}
+			}
+
+		}
+		  
+	
+			
+
+			for (auto part : allDSParts)
+			{
+				DisplayDSPartRow(part, listCol);
+				
 
 			}
 			
-		}
+		
 		pGridData->SetGridColumnList(listCol);
 
 		return pGridData;
@@ -1375,6 +1331,73 @@ namespace OTSGBCalculate
 		PixSize = p;
 	}
 
+	void CGBCalculate::DisplayDSPartRow(COTSParticlePtr part, CGridColumnsList listCol)
+	{
+		int columnNum = 6;
+		CGridColumnPtr pColumn;
+		for (int i = 0; i < columnNum; i++)
+		{
+			CString strName;
+			CGridRowsList listRows;
+			CGridRowPtr pRow;
+			CString strWidthName1, strWidthName2, strWidthName3;
+			CString idstr;
+			int fldid;
+			int partId;
+			switch (i)
+			{
+			case 0:
+				pColumn = listCol.at(0);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::STRING);
+				fldid = part->GetFieldId();
+				partId = part->GetTagId();
+
+				idstr.Format("%d_%d", fldid, partId);
+
+				pRow->SetStringValue(idstr);
+				pColumn->AddGridRow(pRow);
+
+				break;
+			case 1:
+				pColumn = listCol.at(1);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
+				pRow->SetIntValue(part->GetActualArea());
+				pColumn->AddGridRow(pRow);
+				break;
+			case 2:
+				pColumn = listCol.at(2);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::FLOAT);
+				pRow->SetDoubleValue(part->GetFeretDiameter());
+				pColumn->AddGridRow(pRow);
+				break;
+			case 3:
+				pColumn = listCol.at(3);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
+				pRow->SetIntValue(part->GetAbsolutPos().x);
+				pColumn->AddGridRow(pRow);
+				break;
+			case 4:
+				pColumn = listCol.at(4);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
+				pRow->SetIntValue(part->GetAbsolutPos().y);
+				pColumn->AddGridRow(pRow);
+				break;
+			case 5:
+				pColumn = listCol.at(5);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
+				pRow->SetIntValue((int)OTSGBCalculate::GetDSGrade(part->GetFeretDiameter()));
+				pColumn->AddGridRow(pRow);
+				break;
+			}
+		}
+	}
+
 
 }
 

+ 2 - 0
OTSCPP/OTSRptCalculate/GBCal/CGBCalculate.h

@@ -52,6 +52,8 @@ namespace OTSGBCalculate
 		DOUBLE PixSize;
 		//pointer to the whole reportprojfilemgr
 		CReportMgr* m_rptMgrPtr;
+	private:
+		void DisplayDSPartRow(COTSParticlePtr part, CGridColumnsList listCol);
 	};
 	
 

+ 1 - 0
OTSCPP/OTSRptCalculate/GBCal/GBFieldData.cpp

@@ -366,6 +366,7 @@ namespace OTSGBCalculate
 
 
 		}
+		int n = listDSParticles.size();
 		
 			for (auto pGBParticle : listBAndDParticles)
 			{

+ 6 - 1
OTSIncAReportApp/1-UI/GBCalculate/ChineseStandardABCDDS.cs

@@ -367,6 +367,10 @@ namespace OTSIncAReportGB
                 m_dt_C = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_C, out m_oneresult_columnscount_C);
                 m_dt_D = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_D, out m_oneresult_columnscount_D);
                 m_dt_DS = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_DS, out m_oneresult_columnscount_DS);
+
+                DataView dv = m_dt_DS.DefaultView;
+                dv.Sort = "Grade desc";
+                DataTable dt_DS_data = dv.ToTable();
                 Gview_gzA.DataSource = m_dt_A;
                 for (int i = 0; i < 13; i++)
                 {
@@ -387,7 +391,8 @@ namespace OTSIncAReportGB
                 {
                     Gview_gzD.Columns[i].Width = 68;
                 }
-                Gview_gzDS.DataSource = m_dt_DS;
+                //Gview_gzDS.DataSource = m_dt_DS;
+                Gview_gzDS.DataSource = dt_DS_data;
 
                 Gview_gzA.Width = panel1.Width;
                 Gview_gzB.Width = panel1.Width;

+ 7 - 1
OTSIncAReportApp/1-UI/GBCalculate/NationalStandardMethodTwo.cs

@@ -390,6 +390,11 @@ namespace OTSIncAReportGB
                 m_dt_D = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_D, out m_oneresult_columnscount_D);
                 m_dt_sulfide = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_sulfide, out m_oneresult_columnscount_sulfide);
                 m_dt_DS = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_DS, out m_oneresult_columnscount_DS);
+
+                DataView dv = m_dt_DS.DefaultView;
+                dv.Sort = "Grade desc";
+                DataTable dt_DS_data = dv.ToTable();
+
                 Gview_gzA.DataSource = m_dt_A;
                 for (int i = 0; i < 13; i++)
                 {
@@ -415,7 +420,8 @@ namespace OTSIncAReportGB
                 {
                     sulfide.Columns[i].Width = 68;
                 }
-                Gview_gzDS.DataSource = m_dt_DS;
+                //Gview_gzDS.DataSource = m_dt_DS;
+                Gview_gzDS.DataSource = dt_DS_data;
 
                 Gview_gzA.Width = panel1.Width;
                 Gview_gzB.Width = panel1.Width;

+ 27 - 0
OTSIncAReportApp/1-UI/OTSTemplateDesigner/Export_ReportTemplate.cs

@@ -2552,6 +2552,19 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             if (gb_1)
             {
                 List<DataTable> GB1 = InsertReportTemplateTable_ChineseStandardABCDDS(clr_prop, datasourcelist, Index, (int)CALCULATE_TABLE_TYPE.GB_Method1);
+
+                DataView dv_gb1 = GB1[4].DefaultView;
+                dv_gb1.Sort = "Grade desc";
+                DataTable dt_gb1 = dv_gb1.ToTable();
+                for (int i=0; i < GB1[4].Rows.Count;i++)
+                {
+                    for(int a=0;a< GB1[4].Columns.Count;a++)
+                    {
+                        GB1[4].Rows[i][a] = dt_gb1.Rows[i][a];
+                    }
+                    
+                }
+
                 List<string> GB1NameList = new List<string>();
                 GB1NameList.Add("A类");
                 GB1NameList.Add("B类");
@@ -2564,6 +2577,20 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             if (gb_2)
             {
                 List<DataTable> GB2 = InsertReportTemplateTable_ChineseStandardABCDDS(clr_prop, datasourcelist, Index, (int)CALCULATE_TABLE_TYPE.GB_Method2);
+
+                DataView dv_gb1 = GB2[5].DefaultView;
+                dv_gb1.Sort = "Grade desc";
+                DataTable dt_gb1 = dv_gb1.ToTable();
+                for (int i = 0; i < GB2[5].Rows.Count; i++)
+                {
+                    for (int a = 0; a < GB2[5].Columns.Count; a++)
+                    {
+                        GB2[5].Rows[i][a] = dt_gb1.Rows[i][a];
+                    }
+
+                }
+
+
                 List<string> GB2NameList = new List<string>();
                 GB2NameList.Add("A类");
                 GB2NameList.Add("B类");