From 0351af7b382a9daddd709c884bcd96fe2c1fa3ac Mon Sep 17 00:00:00 2001
From: yypsybs <yypsybs@foxmail.com>
Date: 星期五, 22 九月 2023 16:09:45 +0800
Subject: [PATCH] 年度产销预算复盘对比导出
---
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def | 2
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def | 21 ++++++++++
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompareExport.qbl | 42 +++++++++++++++++++++
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl | 15 +++++--
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def | 11 +++++
_Main/BL/Type_ScenarioManager/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl | 23 +++++++++++
6 files changed, 108 insertions(+), 6 deletions(-)
diff --git a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
index a441cd3..d5d4352 100644
--- a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
+++ b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
@@ -72,7 +72,9 @@
info( "dealing 闈㈡澘鍒嗛厤閲�" )
if( CapacityAndSaleBudgeFilterItem::Contains( items, "闈㈡澘鍒嗛厤閲�" ) ) {
traverse( years, Elements, year ) {
+ info( "闈㈡澘鍒嗛厤閲�" + [String]year.YearNo() + "骞�" );
// 鍘嗗彶鏁版嵁
+ info( "闈㈡澘鍒嗛厤閲�" + [String]year.YearNo() + "骞村巻鍙叉暟鎹�" );
traverse( months, Elements, month ) {
columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍒嗛厤閲�-" + [String]year.YearNo() + "骞�-" + [String]month.MonthNo() + "鏈�-骞村害棰勭畻" );
traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
@@ -87,6 +89,7 @@
cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
}
+ info( "闈㈡澘鍒嗛厤閲�" + [String]year.YearNo() + "骞碨&OP鏁版嵁" );
// S&OP鏁版嵁
traverse( macroPlans, Elements, macroPlan ) {
traverse( months, Elements, month ) {
@@ -112,7 +115,9 @@
info( "dealing 閿�鍞" )
if( CapacityAndSaleBudgeFilterItem::Contains( items, "閿�鍞" ) ) {
traverse( years, Elements, year ) {
+ info( "閿�鍞" + [String]year.YearNo() + "骞�" );
// 鍘嗗彶鏁版嵁
+ info( "閿�鍞" + [String]year.YearNo() + "骞村巻鍙叉暟鎹�" );
traverse( months, Elements, month ) {
columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + [String]year.YearNo() + "骞�-" + [String]month.MonthNo() + "鏈�-骞村害棰勭畻" );
traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
@@ -127,6 +132,7 @@
cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
}
+ info( "閿�鍞" + [String]year.YearNo() + "骞村巻鍙叉暟鎹甋&OP鏁版嵁" );
// S&OP鏁版嵁
traverse( macroPlans, Elements, macroPlan ) {
traverse( months, Elements, month ) {
@@ -151,7 +157,7 @@
info( "dealing 澶у紶鐩堝埄棰�" )
traverse( years, Elements, year ) {
// 鍘嗗彶鏁版嵁
- columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "澶у紶鐩堝埄棰�-骞村害棰勭畻" );
+ columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "澶у紶鐩堝埄棰�-" + [String]year.YearNo() + "骞�-骞村害棰勭畻" );
traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
// todo
// QID 23
@@ -160,7 +166,7 @@
}
// S&OP鏁版嵁
traverse( macroPlans, Elements, macroPlan ) {
- columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "澶у紶鐩堝埄棰�-" + [String]year.YearNo() + "骞�" );
+ columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "澶у紶鐩堝埄棰�-" + [String]year.YearNo() + "骞�-" + macroPlan.ScenarioName() );
traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
@@ -171,16 +177,15 @@
info( "dealing 浜у搧鐩堝埄棰�" )
traverse( years, Elements, year ) {
// 鍘嗗彶鏁版嵁
- columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜у搧鐩堝埄棰�-骞村害棰勭畻" );
+ columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜у搧鐩堝埄棰�-" + [String]year.YearNo() + "骞�-骞村害棰勭畻" );
traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
// todo
- // QID 23
cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
}
// S&OP鏁版嵁
traverse( macroPlans, Elements, macroPlan ) {
- columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜у搧鐩堝埄棰�-" + [String]year.YearNo() + "骞�" );
+ columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜у搧鐩堝埄棰�-" + [String]year.YearNo() + "骞�-" + macroPlan.ScenarioName() );
traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
// todo
cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
diff --git a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompareExport.qbl b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompareExport.qbl
new file mode 100644
index 0000000..44dab2e
--- /dev/null
+++ b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompareExport.qbl
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+#parent: #root
+Method CapacityAndSaleBudgeCompareExport () as BinaryValue
+{
+ Description: '瀵煎嚭姣旇緝缁撴灉'
+ TextBody:
+ [*
+ // yypsybs Sep-22-2023 (created)
+ tableName := "骞村害浜ч攢棰勭畻瀵规瘮";
+
+ text:= '<?xml version="1.0" encoding="utf-8" standalone="yes"?><table><name>' + tableName + '</name>';
+
+ // 澶勭悊column <column><name>鐗╂枡缂栫爜</name><type>String</type></column>
+ columnXml := ""
+ traverse( this, CapacityAndSaleBudgeCompareItemColumn, column ) {
+ info( "columnName : " + column.ColumnName() );
+ columnXml := columnXml + "<column><name>" + column.ColumnName() + "</name><type>String</type></column>";
+ }
+ text := text + columnXml + "</table>"
+
+ // 濉炲唴瀹�
+ xmlDOMImplementation := XMLDOMImplementation::Create();
+ xmlDOMDocument := xmlDOMImplementation.CreateDocumentFromString( text );
+ tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
+ rows := selectsortedset( this, CapacityAndSaleBudgeCompareItemRow, row, row.PlaceOfProductionOfArray() + "_" + row.BusinessType() );
+ traverse ( rows, Elements, row ) {
+ info( "rowNo : " + [String]row.RowNo() );
+ traverse( row, CapacityAndSaleBudgeCompareItemCell, cell ) {
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, cell.CellContent(), cell.CapacityAndSaleBudgeCompareItemColumn().ColumnName() );
+ }
+ }
+ xmlDOMSerializer := xmlDOMImplementation.CreateSerializer();
+ xmlTableString := xmlDOMSerializer.WriteToString( xmlDOMDocument );
+
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTableString ) );
+ tableGroupHandle := TableGroupHandle::Create( tableName );
+ tableGroupHandle.Add( tableHandle );
+ tableBinaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return tableBinaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_ScenarioManager/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl b/_Main/BL/Type_ScenarioManager/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl
new file mode 100644
index 0000000..f40c634
--- /dev/null
+++ b/_Main/BL/Type_ScenarioManager/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GeneratesTheSpecifiedXMLColumn (
+ XMLDOMDocument xmlDOMDocument,
+ XMLDOMElement tableElement,
+ String value,
+ String columnName
+)
+{
+ TextBody:
+ [*
+ columnElements := tableElement.GetElementsByTagName( "column" );
+
+ traverse ( columnElements, Elements, ce ) {
+ nameElement := ce.GetElementByTagName( "name", 0 );
+ if ( nameElement.TextContent() = columnName ) {
+ cell := xmlDOMDocument.CreateElement( "cell" );
+ cell.SetAttribute( "value", value );
+ ce.AppendChild( cell );
+ }
+ }
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
index db394b0..cbfdc2b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
@@ -93,6 +93,6 @@
ContextMenu: 'matrixeditorContextMenuCapacityAndSaleBudgeCompare'
Editable: false
Rows: 'MatrixEditorRowsCapacityAndSaleBudgeCompare'
- Taborder: 1
+ Taborder: 2
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def
new file mode 100644
index 0000000..97cea9d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: ButtonExportCompare
+Response OnClick () id:Response_FormCapacityAndSaleBudgeCompare_ButtonExportCompare_OnClick
+{
+ #keys: '[414384.0.881345276]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( GlobalOTDTable );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ tableBinaryData := ScenarioManager.CapacityAndSaleBudgeCompareExport().AsBinaryData();
+ Application.Download( "骞村害浜ч攢棰勭畻瀵规瘮.xlsx", tableBinaryData );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
index 9602b8e..d44643f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
@@ -18,6 +18,17 @@
Taborder: 0
]
}
+ Component ButtonExportCompare
+ {
+ #keys: '[414384.0.881345277]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Label: '瀵煎嚭'
+ Taborder: 1
+ ]
+ }
]
Properties:
[
--
Gitblit v1.9.3