From 7fa9d2c7f76651853d80ebe3726a7b7decad5a9f Mon Sep 17 00:00:00 2001
From: admin <admin@admin.com>
Date: 星期二, 27 八月 2024 08:29:44 +0800
Subject: [PATCH] 导出

---
 _Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Component_pHeader.def                |   10 +++
 _Main/BL/Type_CC_EngineRackCell/StaticMethod_Export.qbl                                            |  123 +++++++++++++++++++++++++++++++++++++++++
 _Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Response_pHeader_bExport_OnClick.def |   22 +++++++
 3 files changed, 155 insertions(+), 0 deletions(-)

diff --git a/_Main/BL/Type_CC_EngineRackCell/StaticMethod_Export.qbl b/_Main/BL/Type_CC_EngineRackCell/StaticMethod_Export.qbl
new file mode 100644
index 0000000..1f82c2f
--- /dev/null
+++ b/_Main/BL/Type_CC_EngineRackCell/StaticMethod_Export.qbl
@@ -0,0 +1,123 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+  MacroPlan macroPlan
+) as BinaryValue
+{
+  TextBody:
+  [*
+    xmlDOMI      := XMLDOMImplementation::Create();
+    xmlDOM       := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' );
+    
+    tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+    
+    // 绗竴鍒楋紙鍚嶇О锛�
+    cerrs       := selectsortedset( macroPlan, CC_EngineRackRow, tempCERR, true, tempCERR.Name() );
+    firstColumn := xmlDOM.CreateElement( "column" );
+    firstName   := xmlDOM.CreateElement( "name" );
+    firstType   := xmlDOM.CreateElement( "type" );
+    firstName.TextContent( "" );
+    firstType.TextContent( "String" );
+    firstColumn.AppendChild( firstName );
+    firstColumn.AppendChild( firstType );
+    traverse ( cerrs, Elements, cerr ) {
+      firstCell := xmlDOM.CreateElement( "cell" );
+      firstCell.SetAttribute( "value", cerr.Name() );
+      firstColumn.AppendChild( firstCell );
+      
+      for ( i := 0; i < 9; i++ ) {
+        firstCell := xmlDOM.CreateElement( "cell" );
+        firstCell.SetAttribute( "value", "" );
+        firstColumn.AppendChild( firstCell );
+      }
+    }
+    tableElement.AppendChild( firstColumn );
+    
+    
+    // 绗簩鍒�
+    attrs        := construct( Strings ); attrs.Add( "鏂欐灦绌烘暟閲�" ); attrs.Add( "绌烘枡鏋舵暟閲�" ); attrs.Add( "澶栫搴撳叆搴撹垂鐢�" ); attrs.Add( "澶栫搴撳嚭搴撹垂鐢�" ); attrs.Add( "澶栫搴撹繍杈撹垂鐢�" );
+                                          attrs.Add( "澶栫搴撲粨鍌ㄨ垂鐢�" ); attrs.Add( "娓呮礂璐圭敤" ); attrs.Add( "棰勮鎬昏垂鐢�" ); attrs.Add( "绯绘暟" ); attrs.Add( "鎬昏垂鐢�" );
+    secondColumn := xmlDOM.CreateElement( "column" );
+    secondName   := xmlDOM.CreateElement( "name" );
+    secondType   := xmlDOM.CreateElement( "type" );
+    secondName.TextContent( "" );
+    secondType.TextContent( "String" );
+    secondColumn.AppendChild( secondName );
+    secondColumn.AppendChild( secondType );
+    for ( i := 0; i < cerrs.Size(); i++ ) {
+      traverse ( attrs, Elements, attr ) {
+        secondCell := xmlDOM.CreateElement( "cell" );
+        secondCell.SetAttribute( "value", attr );
+        secondColumn.AppendChild( secondCell );
+      }
+    }
+    tableElement.AppendChild( secondColumn );
+    
+    // 鏃堕棿鍒�
+    cercs := selectsortedset( macroPlan, CC_EngineRackColumn, tempCERC, true, tempCERC.StartDate() );
+    traverse ( cercs, Elements, cerc ) {
+      cellColumn := xmlDOM.CreateElement( "column" );
+      cellName   := xmlDOM.CreateElement( "name" );
+      cellType   := xmlDOM.CreateElement( "type" );
+      cellName.TextContent( cerc.StartDate().Format( "M2/D2/Y" ) );
+      cellType.TextContent( "Number" );
+      cellColumn.AppendChild( cellName );
+      cellColumn.AppendChild( cellType );
+      cells := selectsortedset( cerc, CC_EngineRackCell, tempCELL, true, tempCELL.CC_EngineRackRow().Name() );
+      traverse ( cells, Elements, c ) {
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.TotalQuantityOfMaterialRacks() ); // 鏂欐灦鎬绘暟閲�
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.NumberOfEmptyShelves() ); // 绌烘枡鏋舵暟閲�
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.StorageFeesForRentedWarehouses() ); // 澶栫搴撳叆搴撹垂鐢�
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.OutboundExpensesForRentedWarehouses() ); // 澶栫搴撳嚭搴撹垂鐢�
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.ExternalRentalWarehouseTransportationCosts() ); // 澶栫搴撹繍杈撹垂鐢�
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.RentalWarehouseStorageFees() ); // 澶栫搴撲粨鍌ㄨ垂鐢�
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.CleaningCost() ); // 娓呮礂璐圭敤
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.EstimatedTotalCost() ); // 棰勮鎬昏垂鐢�
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.Coefficient() ); // 绯绘暟
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.TotalCost() ); // 鎬昏垂鐢�
+        cellColumn.AppendChild( cell );
+      }
+      tableElement.AppendChild( cellColumn );
+    }
+    
+    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+    
+    //info( xmlString );
+    
+    tableGroupHandle := TableGroupHandle::Create( "Sheet1" );
+    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+    tableGroupHandle.Add( tableHandle );
+    
+    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+    
+    return binaryData.AsBinaryValue();
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Component_pHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Component_pHeader.def
index 67e1268..633af51 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Component_pHeader.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Component_pHeader.def
@@ -15,6 +15,16 @@
         Taborder: 0
       ]
     }
+    Component bExport
+    {
+      #keys: '[415754.0.151340681]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'EXPORT1'
+        Taborder: 1
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Response_pHeader_bExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Response_pHeader_bExport_OnClick.def
new file mode 100644
index 0000000..e3be1bf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Response_pHeader_bExport_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pHeader/bExport
+Response OnClick () id:Response_pHeader_bExport_OnClick
+{
+  #keys: '[415754.0.151312042]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      binaryValue := CC_EngineRackCell::Export( MacroPlan );
+      
+      Application.Download( "闀挎槬鍙戝姩鏈烘枡鏋舵姤琛�.xlsx", binaryValue.AsBinaryData() );
+    *]
+    GroupServerCalls: false
+  }
+}

--
Gitblit v1.9.3