From 025a7a3dadeca98a40cfe13431d154593f8fa17a Mon Sep 17 00:00:00 2001
From: admin <admin@admin.com>
Date: 星期三, 22 一月 2025 12:17:25 +0800
Subject: [PATCH] 接口优化

---
 _Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/_ROOT_Component_FormPackagingPlan.def  |   27 +++++++++
 _Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Response_pHeader_bDownload_OnClick.def |    6 ++
 _Main/BL/Type_InterfaceLoginfo/StaticMethod_CallInterfaceForSAPGet.qbl                         |    5 +
 _Main/BL/Type_PackagingPlanCell/StaticMethod_Export.qbl                                        |  122 ++++++++++++++++++++++++++++++++++++++++
 _Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Component_MatrixEditor493.def          |    8 +-
 5 files changed, 162 insertions(+), 6 deletions(-)

diff --git a/_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallInterfaceForSAPGet.qbl b/_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallInterfaceForSAPGet.qbl
index 7783353..26a316c 100644
--- a/_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallInterfaceForSAPGet.qbl
+++ b/_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallInterfaceForSAPGet.qbl
@@ -10,7 +10,10 @@
   [*
     // 鐢勫叞楦� Jul-22-2024 (created)
     address           := Translations::InterfaceDataset_SAP_Address(); 
-    httpinterface     := HTTPInterface::Create( address,8080);
+    httpinterface     := HTTPInterface::Create( address,8080); // 娴嬭瘯
+    
+    //httpinterface     := HTTPInterface::Create( "10.120.76.32",8080); // 鐢熶骇
+    
     httpinterface.PostMethod( true ); ; 
     httpinterface.MediaType( Translations::InterfaceDataset_ContentType() );
     try{
diff --git a/_Main/BL/Type_PackagingPlanCell/StaticMethod_Export.qbl b/_Main/BL/Type_PackagingPlanCell/StaticMethod_Export.qbl
new file mode 100644
index 0000000..b229c99
--- /dev/null
+++ b/_Main/BL/Type_PackagingPlanCell/StaticMethod_Export.qbl
@@ -0,0 +1,122 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+  MacroPlan macroPlan,
+  PackagingPlanRows pprs
+) 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 );
+    
+    // 绗竴鍒楋紙鍚嶇О锛�
+    pprs        := selectsortedset( pprs, Elements, tempPPR, true, tempPPR.ProductID(), tempPPR.StockingPointID() );
+    firstColumn := xmlDOM.CreateElement( "column" );
+    firstName   := xmlDOM.CreateElement( "name" );
+    firstType   := xmlDOM.CreateElement( "type" );
+    firstName.TextContent( "*" );
+    firstType.TextContent( "String" );
+    firstColumn.AppendChild( firstName );
+    firstColumn.AppendChild( firstType );
+    traverse ( pprs, Elements, ppr ) {
+      firstCell := xmlDOM.CreateElement( "cell" );
+      firstCell.SetAttribute( "value", ppr.ProductID() );
+      firstColumn.AppendChild( firstCell );
+      
+      for ( i := 0; i < 8; i++ ) {
+        firstCell := xmlDOM.CreateElement( "cell" );
+        firstCell.SetAttribute( "value", "" );
+        firstColumn.AppendChild( firstCell );
+      }
+    }
+    tableElement.AppendChild( firstColumn );
+    
+    
+    // 绗簩鍒�
+    attrs        := construct( Strings ); attrs.Add( "Demand" ); attrs.Add( "New supply" ); attrs.Add( "Inventory end" ); attrs.Add( "Transport-out" ); attrs.Add( "Transport-in" );
+                                          attrs.Add( "Unpackaged inventory" ); attrs.Add( "Packaged inventory" ); attrs.Add( "Package" ); attrs.Add( "Unpackage" );
+    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 < pprs.Size(); i++ ) {
+      traverse ( attrs, Elements, attr ) {
+        secondCell := xmlDOM.CreateElement( "cell" );
+        secondCell.SetAttribute( "value", attr );
+        secondColumn.AppendChild( secondCell );
+      }
+    }
+    tableElement.AppendChild( secondColumn );
+    
+    // 鏃堕棿鍒�
+    ppcs := selectsortedset( macroPlan, PackagingPlanColumn, tempPPC, true, tempPPC.StartDate() );
+    traverse ( ppcs, Elements, ppc ) {
+      cellColumn := xmlDOM.CreateElement( "column" );
+      cellName   := xmlDOM.CreateElement( "name" );
+      cellType   := xmlDOM.CreateElement( "type" );
+      cellName.TextContent( ppc.StartDate().Format( "Y-M2-D2" ) );
+      cellType.TextContent( "Real" );
+      cellColumn.AppendChild( cellName );
+      cellColumn.AppendChild( cellType );
+      cells := selectsortedset( ppc, PackagingPlanCell, tempPPCell, 
+                                exists( pprs, Elements, tempPPR, tempPPR = tempPPCell.PackagingPlanRow() ), 
+                                tempPPCell.PackagingPlanRow().ProductID(), tempPPCell.PackagingPlanRow().StockingPointID() );
+      traverse ( cells, Elements, c ) {
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.NetDemand().Round( 0 ) );
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.NewSupply().Round( 0 ) );
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.EndingInventory().Round( 0 ) );
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.Out().Round( 0 ) );
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.TransferIn().Round( 0 ) );
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.UnpackagedInventory().Round( 0 ) );
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.PackagingInventory().Round( 0 ) );
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.Package().Round( 0 ) );
+        cellColumn.AppendChild( cell );
+        
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", [String]c.Unpacking().Round( 2 ) );
+        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_FormPackagingPlan/Component_MatrixEditor493.def b/_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Component_MatrixEditor493.def
index 6a2a171..94a74aa 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Component_MatrixEditor493.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Component_MatrixEditor493.def
@@ -44,12 +44,10 @@
           BaseType: 'WebDataExtractor'
           Properties:
           [
-            DataType: 'MacroPlan'
-            FilterArguments: 'products:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedProduct;factory:QLibMacroPlannerWebUI::ApplicationMacroPlanner.dhSelectedFactory'
-            FixedFilter: 'object.FilterProduct( products, factory )'
-            Source: 'MacroPlan'
+            DataType: 'structured[PackagingPlanRow]'
+            Source: 'dhSelectedRows'
             Taborder: 0
-            Transformation: 'PackagingPlanRow'
+            Transformation: 'Elements'
           ]
         }
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Response_pHeader_bDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Response_pHeader_bDownload_OnClick.def
index bab8a27..eadaf44 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Response_pHeader_bDownload_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Response_pHeader_bDownload_OnClick.def
@@ -7,6 +7,12 @@
   DefinitionID: 'Responsedef_WebButton_OnClick'
   QuillAction
   {
+    Body:
+    [*
+      binaryValue := PackagingPlanCell::Export( MacroPlan, dhSelectedRows.Data() );
+      
+      Application.Download( ddslFactorySelection.Text() + "_鍖呰璁″垝.xlsx", binaryValue.AsBinaryData() );
+    *]
     GroupServerCalls: false
   }
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/_ROOT_Component_FormPackagingPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/_ROOT_Component_FormPackagingPlan.def
index 9b37580..90f7ec4 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/_ROOT_Component_FormPackagingPlan.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/_ROOT_Component_FormPackagingPlan.def
@@ -9,6 +9,33 @@
   [
     #child: pContent
     #child: pHeader
+    Component dhSelectedRows
+    {
+      #keys: '[415754.0.905483662]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[PackagingPlanRow]*'
+      Children:
+      [
+        Component deSelectedRows
+        {
+          #keys: '[415754.0.905483700]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            FilterArguments: 'products:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedProduct;factory:QLibMacroPlannerWebUI::ApplicationMacroPlanner.dhSelectedFactory'
+            FixedFilter: 'object.FilterProduct( products, factory )'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'PackagingPlanRow'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
   ]
   Properties:
   [

--
Gitblit v1.9.3