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