From 660578a29abae9e3a4584de89d0642820e592b46 Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期一, 21 十月 2024 10:24:51 +0800
Subject: [PATCH] 修复一些bug

---
 _Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl                                                      |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick#723.def             |    2 
 _Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData#530.qbl                                                 |   27 +++++++++++++
 _Main/BL/Type_LocalCell_DemandComparison/StaticMethod_Compared.qbl                                                         |   32 +++++++++------
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_dhXMLDataListener_OnDataChanged.def |   10 ++--
 5 files changed, 53 insertions(+), 20 deletions(-)

diff --git "a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData\043530.qbl" "b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData\043530.qbl"
new file mode 100644
index 0000000..35a46bf
--- /dev/null
+++ "b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData\043530.qbl"
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod AwaitLocalTableXMLData (
+  const Strings columnXMLData,
+  RecycleBin owner,
+  String tableName,
+  String sheetName
+)
+{
+  TextBody:
+  [*
+    // rislai Jun-21-2024 (created)
+    manager := select( owner,ExportXMLManager,manager,manager.Name() = tableName );
+    if( not isnull( manager )){
+      manager.Delete();
+    }
+    manager := owner.ExportXMLManager( relnew,Name := tableName,SheetName := sheetName );
+    traverse( columnXMLData,Elements,element,element.TrimBoth() <> "" ){
+       data := manager.ExportXMLData( relnew, XML := element);
+       try{
+         data.Priority( data.CalculatePriority( ));
+       }onerror{
+         info( element );
+       }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl
index 9af8aa0..60a1434 100644
--- a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl
+++ b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl
@@ -27,6 +27,6 @@
       columnstring := columnstring.Merge( cellxml);
     }
      
-    columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,guard( rows.Element(0).LocalTable().Name(),LocalCell_DemandComparison::GetTableName()) );
+    columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,LocalCell_DemandComparison::GetTableName(),guard( rows.Element(0).LocalTable().Name(),"") );
   *]
 }
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_Compared.qbl b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_Compared.qbl
index f774c24..e760b4c 100644
--- a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_Compared.qbl
+++ b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_Compared.qbl
@@ -58,7 +58,7 @@
         columns := construct( LocalColumns );
         LocalCell_DemandComparison::GenerateColumnIndex( baseVersionTable,localTable,columnTree,columns );
         LocalCell_DemandComparison::GenerateColumnIndex( compareVersionTable,localTable,columnTree,columns );
-        columnNames := selectvalues( columns,Elements,column,true,column.Name() );
+        columnNames := selectvalues( columns,Elements,column,true,column.CustomName());
         
         // 鐢熸垚鏁版嵁
         for ( rowIndex := 0; rowIndex < rowKeys.Size(); rowIndex++ ) {
@@ -75,24 +75,30 @@
           
           row := localTable.LocalRow( relnew,Index := localTable.GetRowIndexCache()  );
           
-          traverse( columnNames,Elements,columnName ){
+          traverse( columnNames,Elements,columnName ,columnName <> "" ){
             columnHandle := columnTree.GetHandle( columnName );
-            columnIndex := columnTree.Root().Child( columnHandle ).GetValueAsNumber();
-            column := columns.Element( columnIndex );
+            columnIndex := guard( columnTree.Root().Child( columnHandle ) , null( NamedValue ));
+            column := null( LocalColumn );
+            if( not isnull( columnIndex )){
+              column := columns.Element( columnIndex.GetValueAsNumber() );
+            }
+            if( isnull( column )){
+              error( columnName + " is null." ); 
+            }
             
             baseVersionCell := constnull( GeneralExcelImportAndExportDataCell );
             baseVersionCellHandle := baseVersionCellTree.GetHandle( columnName );
-            try{
-              baseVersionCellIndex := baseVersionCellTree.Root().Child( baseVersionCellHandle ).GetValueAsNumber();
-              baseVersionCell := baseVersionCells.Element( baseVersionCellIndex );
-            }onerror{}
+            baseVersionCellIndex := guard( baseVersionCellTree.Root().Child( baseVersionCellHandle ),null( NamedValue ));
+            if( not isnull( baseVersionCellIndex )){
+              baseVersionCell := baseVersionCells.Element( baseVersionCellIndex.GetValueAsNumber() );
+            }
             
             compareVersionCell := constnull( GeneralExcelImportAndExportDataCell );
             compareVersionCellHandle := compareVersionCellTree.GetHandle( columnName );
-            try{
-              compareVersionCellIndex := compareVersionCellTree.Root().Child( compareVersionCellHandle ).GetValueAsNumber();
-              compareVersionCell := compareVersionCells.Element( compareVersionCellIndex );
-            }onerror{}
+            compareVersionCellIndex := guard( compareVersionCellTree.Root().Child( compareVersionCellHandle ),null( NamedValue ));
+            if( not isnull( compareVersionCellIndex )){
+              compareVersionCell := compareVersionCells.Element( compareVersionCellIndex.GetValueAsNumber() );
+            }
             
             if( columnName = "浜у湴" or columnName = "杞﹀瀷" or columnName = "鍙戝姩鏈洪浂浠跺彿" or columnName = "鍙戝姩鏈哄洓浣嶇爜" ){
               row.LocalCell( relnew,LocalCell_DemandComparison,LocalColumn := column,
@@ -137,7 +143,7 @@
       if( not isnull( compareVersionFile )){
         compareVersionFile.Close(); 
       }
-      error( e );
+      error( e.GeneralInformation() );
     }
     
     return localTable;
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick\043723.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick\043723.def"
index 7d10d9a..9328737 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick\043723.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bExport_OnClick\043723.def"
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      rows := selectset( dhComparisonData.Data(),LocalRow,row,exists( dhFinelProduct.Data(),Elements,product,product.ID() = row.Name() ) );
+      rows := selectset( dhComparisonData.Data(),LocalRow,row,exists( dhFinelProduct.Data(),Elements,product,product.ID() = row.ProductID()));
       columns := selectset( dhComparisonData.Data( ),LocalColumn,column,not column.IsAttrbuteColumn() and dhStartDate.Data() <= column.Date() and dhEndDate.Data() > column.Date() );
       LocalCell_DemandComparison::AsyncExport( RecycleBin, rows, columns ,MacroPlan );
     *]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_dhXMLDataListener_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_dhXMLDataListener_OnDataChanged.def
index 5028aaa..62621bc 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_dhXMLDataListener_OnDataChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_dhXMLDataListener_OnDataChanged.def
@@ -9,11 +9,11 @@
   {
     Body:
     [*
-      binaryValue := dhXMLDataListener.Data( ).Export();
-      
-      Application.Download( LocalCell_DemandComparison::GetTableName() + "_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
-      
-      dhXMLDataListener.Data( ).Delete();
+      if( not isnull( dhXMLDataListener.Data() )){
+        binaryValue := dhXMLDataListener.Data( ).Export();
+        Application.Download( dhXMLDataListener.Data().SheetName() + "_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
+        dhXMLDataListener.Data( ).Delete();
+      }
     *]
     GroupServerCalls: false
   }

--
Gitblit v1.9.3