From 440be21e24e4cfb15e85ee1cf8522cd7d4acf21b Mon Sep 17 00:00:00 2001 From: lihongji <3117313295@qq.com> Date: 星期三, 20 十一月 2024 16:36:00 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- _Main/BL/Type_LocalCell_Default/StaticMethod_GenerateAnnualPlanReport.qbl | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pRibbonUp_bCreateFullTable_OnClick.def | 4 + 2 files changed, 172 insertions(+), 1 deletions(-) diff --git a/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateAnnualPlanReport.qbl b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateAnnualPlanReport.qbl new file mode 100644 index 0000000..1ed5a93 --- /dev/null +++ b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateAnnualPlanReport.qbl @@ -0,0 +1,169 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod GenerateAnnualPlanReport ( + const MacroPlan macroPlan, + const InterfaceDataset interfaceDataset, + RecycleBin recycleBin +) as LocalTable +{ + Description: '鍏ㄥ勾璁″垝鎶ヨ〃' + TextBody: + [* + // Akari Nov-20-2024 (created) + traverse( recycleBin,LocalTable,table,table.Name() = ArchiveCell_AnnualPlanReport::GetTableName() ){ + table.Delete(); + } + localTable := recycleBin.LocalTable( relnew,Name := ArchiveCell_AnnualPlanReport::GetTableName() ); + + archiveOfflinePlan := select( interfaceDataset,OfflinePlanArchiveVersion,offlinePlan,not offlinePlan.IsShow() ); + + startDate := minselect( archiveOfflinePlan,Column,column,column.TimeUnit() = "Day",column.StartDate() ).StartDate(); + endDate := macroPlan.StartOfPlanning().Date(); + + localCells := construct( LocalCell_Defaults ); + localCellIndexTree := NamedValueTree::Create(); + + localRows := construct( LocalRows ); + localRowIndexTree := NamedValueTree::Create(); + localColumns := construct( LocalColumns ); + localColumnIndexTree := NamedValueTree::Create(); + for( i := startDate; i <= endDate; i := i + 1 ){ + localColumn := localTable.LocalColumn( relnew,CustomDate := i ,TimeUnit := "Day"); + localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() ); + localColumns.Add( localColumn ); + localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 ); + } + + traverse( archiveOfflinePlan,Row,row ){ + localRow := null( LocalRow ); + { + localRowHandle := localRowIndexTree.GetHandle( row.ProductID() + row.ProductionLine() ); + localRowIndex := guard( localRowIndexTree.Root().Child( localRowHandle ),null( NamedValue )); + if( isnull( localRowIndex )){ + localRow := localTable.LocalRow( relnew,CustomName := row.Name(),ProductID := row.ProductID(),ProductionLine := row.ProductionLine(),Index := localTable.GetRowIndexCache() ); + localRows.Add( localRow ); + localRowIndexTree.Root().AddChild( localRowHandle,localRows.Size() - 1 ); + }else{ + localRow := localRows.Element( localRowIndex.GetValueAsNumber() ); + } + } + + traverse( row,Cell,cell ){ + localColumnHandle := localColumnIndexTree.GetHandle( cell.Column().StartDate().AsQUILL()); + localColumnIndex := guard( localColumnIndexTree.Root().Child( localColumnHandle ),null( NamedValue )); + if( not isnull( localColumnIndex )){ + localColumn := localColumns.Element( localColumnIndex.GetValueAsNumber() ); + + localCellHandle := localCellIndexTree.GetHandle( localRow.ProductID() + localRow.ProductionLine() + localColumn.CustomDate().AsQUILL() + localColumn.TimeUnit() ); + localCellIndex := guard( localCellIndexTree.Root().Child( localCellHandle ),null( NamedValue )); + if( isnull( localCellIndex )){ + localCell := localRow.LocalCell( relnew,LocalCell_Default,LocalColumn := localColumn ); + localCell.RealValue( cell.Quantity() ); + localCells.Add( localCell ); + localCellIndexTree.Root().AddChild( localCellHandle,localCells.Size() - 1 ); + }else{ + localCell := localCells.Element( localCellIndex.GetValueAsNumber() ); + localCell.RealValue( localCell.RealValue() + cell.Quantity() ); + } + } + } + } + + traverse( macroPlan,Product_MP.ProductInStockingPoint_MP,pisp_mp ){ + pispippls := selectset( pisp_mp,ProductInStockingPointInPeriod.astype( ProductInStockingPointInPeriodPlanningLeaf ),pispippl, + pispippl.Period_MP().StartDate() > endDate + and pispippl.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day()); + + if( pispippls.Size() <> 0 ){ + localRow := null( LocalRow ); + { + localRowHandle := localRowIndexTree.GetHandle( pisp_mp.ProductID() + pisp_mp.StockingPoint_MP().Unit().Name() ); + localRowIndex := guard( localRowIndexTree.Root().Child( localRowHandle ),null( NamedValue )); + if( isnull( localRowIndex )){ + localRow := localTable.LocalRow( relnew,CustomName := pisp_mp.Name(),ProductID := pisp_mp.ProductID(),ProductionLine := pisp_mp.StockingPoint_MP().Unit().Name(),Index := localTable.GetRowIndexCache() ); + localRows.Add( localRow ); + localRowIndexTree.Root().AddChild( localRowHandle,localRows.Size() - 1 ); + }else{ + localRow := localRows.Element( localRowIndex.GetValueAsNumber() ); + } + } + + traverse( pispippls,Elements,pispippl ){ + column := null( LocalColumn ); + { + columnHandle := localColumnIndexTree.GetHandle( pispippl.Period_MP().StartDate().AsQUILL() ); + columnIndex := guard( localColumnIndexTree.Root().Child( columnHandle ),null( NamedValue )); + if( not isnull( columnIndex )){ + column := localColumns.Element( columnIndex.GetValueAsNumber() ); + }else{ + column := localTable.LocalColumn( relnew,CustomDate := pispippl.Period_MP().StartDate() ,TimeUnit := "Day"); + localColumns.Add( column ); + localColumnIndexTree.Root().AddChild( columnHandle,localColumns.Size() - 1 ); + } + } + + localCellHandle := localCellIndexTree.GetHandle( localRow.ProductID() + localRow.ProductionLine() + column.CustomDate().AsQUILL() + column.TimeUnit() ); + localCellIndex := guard( localCellIndexTree.Root().Child( localCellHandle ),null( NamedValue )); + if( isnull( localCellIndex )){ + localCell := localRow.LocalCell( relnew,LocalCell_Default,LocalColumn := column ); + localCell.RealValue( pispippl.NewSupplyQuantity() ); + localCells.Add( localCell ); + localCellIndexTree.Root().AddChild( localCellHandle,localCells.Size() - 1 ); + }else{ + localCell := localCells.Element( localCellIndex.GetValueAsNumber() ); + localCell.RealValue( localCell.RealValue() + pispippl.NewSupplyQuantity() ); + } + } + } + } + + endDate := maxselect( localColumns,Elements,column,column.CustomDate() ).CustomDate(); + for( i := startDate.StartOfWeek(); i <= endDate.StartOfNextWeek(); i := i.StartOfNextWeek() ){ + localColumn := localTable.LocalColumn( relnew,CustomDate := i ,TimeUnit := "Week"); + localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() + "Week" ); + localColumns.Add( localColumn ); + localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 ); + } + for( i := startDate.StartOfMonth(); i <= endDate.StartOfNextMonth(); i := i.StartOfNextMonth() ){ + localColumn := localTable.LocalColumn( relnew,CustomDate := i ,TimeUnit := "Month"); + localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() + "Month" ); + localColumns.Add( localColumn ); + localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 ); + } + + traverse( localTable,LocalRow,row ){ + traverse( localTable,LocalColumn,column,column.TimeUnit() = "Week" ){ + value := sum( row,LocalCell.astype( LocalCell_Default ),cell, + cell.LocalColumn().TimeUnit() = "Day" and + cell.LocalColumn().CustomDate() >= column.CustomDate() and + cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextWeek(),cell.RealValue()); + localCell := row.LocalCell( relnew,LocalCell_Default,LocalColumn := column,RealValue := value ); + + localCellHandle := localCellIndexTree.GetHandle( row.ProductID() + row.ProductionLine() + column.CustomDate().AsQUILL() + column.TimeUnit() ); + localCells.Add( localCell ); + localCellIndexTree.Root().AddChild( localCellHandle,localCells.Size() - 1 ); + } + traverse( localTable,LocalColumn,column,column.TimeUnit() = "Month" ){ + value := sum( row,LocalCell.astype( LocalCell_Default ),cell, + cell.LocalColumn().TimeUnit() = "Day" and + cell.LocalColumn().CustomDate() >= column.CustomDate() and + cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextMonth(),cell.RealValue()); + localCell := row.LocalCell( relnew,LocalCell_Default,LocalColumn := column,RealValue := value ); + + localCellHandle := localCellIndexTree.GetHandle( row.ProductID() + row.ProductionLine() + column.CustomDate().AsQUILL() + column.TimeUnit() ); + localCells.Add( localCell ); + localCellIndexTree.Root().AddChild( localCellHandle,localCells.Size() - 1 ); + } + } + + traverse( localTable,LocalColumn,column,column.LocalCell( relsize ) = 0 ){ + column.Delete(); + } + + traverse( localTable,LocalRow,row,row.LocalCell( relsize ) = 0 ){ + row.Delete(); + } + + return localTable; + *] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pRibbonUp_bCreateFullTable_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pRibbonUp_bCreateFullTable_OnClick.def index e5bc6b4..74f1c03 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pRibbonUp_bCreateFullTable_OnClick.def +++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pRibbonUp_bCreateFullTable_OnClick.def @@ -9,7 +9,9 @@ { Body: [* - table := ArchiveCell_AnnualPlanReport::CreateFullTable( Archive,RecycleBin,MacroPlan ); + //table := ArchiveCell_AnnualPlanReport::CreateFullTable( Archive,RecycleBin,MacroPlan ); + + table := LocalCell_Default::GenerateAnnualPlanReport( MacroPlan,InterfaceDataset, RecycleBin ); dhAnnualPlanTable.Data( table ); WebMessageBox::Success( "Success" ); -- Gitblit v1.9.3