From e838620cad384a27f8639797858a8b2c4313b6c7 Mon Sep 17 00:00:00 2001 From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com> Date: 星期一, 21 十月 2024 15:32:11 +0800 Subject: [PATCH] 添加产量对比报表周月汇总功能 --- _Main/BL/Type_NewOfflinePlanTable/Method_Comparison.qbl | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 46 insertions(+), 1 deletions(-) diff --git a/_Main/BL/Type_NewOfflinePlanTable/Method_Comparison.qbl b/_Main/BL/Type_NewOfflinePlanTable/Method_Comparison.qbl index a3dce7f..d4ba83e 100644 --- a/_Main/BL/Type_NewOfflinePlanTable/Method_Comparison.qbl +++ b/_Main/BL/Type_NewOfflinePlanTable/Method_Comparison.qbl @@ -23,7 +23,7 @@ localColumns := construct( LocalColumns ); localColumnIndexTree := NamedValueTree::Create(); traverse( this,NewOfflinePlanColumn,column,column.StartDate() >= macroPlan.StartOfPlanning().Date()){ - localColumn := table.LocalColumn( relnew,CustomDate := column.StartDate()); + localColumn := table.LocalColumn( relnew,CustomDate := column.StartDate(),TimeUnit := "Day"); localColumnHandle := localColumnIndexTree.GetHandle( column.StartDate().AsQUILL() ); localColumns.Add( localColumn ); localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 ); @@ -95,6 +95,51 @@ } } + startDate := minselect( table,LocalColumn,localColumn,localColumn.CustomDate() ).CustomDate(); + endDate := maxselect( table,LocalColumn,localColumn,localColumn.CustomDate() ).CustomDate(); + for( i := startDate.StartOfWeek(); i <= endDate.StartOfNextWeek(); i := i.StartOfNextWeek() ){ + timeUnit := "Week"; + localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() + timeUnit); + localColumn := table.LocalColumn( relnew,CustomDate := i,TimeUnit := timeUnit ); + localColumns.Add( localColumn ); + localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 ); + } + for( i := startDate.StartOfMonth(); i <= endDate.StartOfNextMonth(); i := i.StartOfNextMonth() ){ + timeUnit := "Month"; + localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() + timeUnit); + localColumn := table.LocalColumn( relnew,CustomDate := i,TimeUnit := timeUnit ); + localColumns.Add( localColumn ); + localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 ); + } + traverse( table,LocalRow,row ){ + traverse( table,LocalColumn,column,column.TimeUnit() = "Week"){ + actual := sum( row,LocalCell.astype( LocalCell_ProductionComparison ),cell, + cell.LocalColumn().TimeUnit() = "Day" and + cell.LocalColumn().CustomDate() >= column.CustomDate() and + cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextWeek(), cell.Actual()); + plan := sum( row,LocalCell.astype( LocalCell_ProductionComparison ),cell, + cell.LocalColumn().TimeUnit() = "Day" and + cell.LocalColumn().CustomDate() >= column.CustomDate() and + cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextWeek(), cell.Plan()); + + row.LocalCell( relnew,LocalCell_ProductionComparison,LocalColumn := column,Actual := actual,Plan := plan ); + } + } + traverse( table,LocalRow,row ){ + traverse( table,LocalColumn,column,column.TimeUnit() = "Month"){ + actual := sum( row,LocalCell.astype( LocalCell_ProductionComparison ),cell, + cell.LocalColumn().TimeUnit() = "Day" and + cell.LocalColumn().CustomDate() >= column.CustomDate() and + cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextMonth(), cell.Actual()); + plan := sum( row,LocalCell.astype( LocalCell_ProductionComparison ),cell, + cell.LocalColumn().TimeUnit() = "Day" and + cell.LocalColumn().CustomDate() >= column.CustomDate() and + cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextMonth(), cell.Plan()); + + row.LocalCell( relnew,LocalCell_ProductionComparison,LocalColumn := column,Actual := actual,Plan := plan ); + } + } + return table; *] } -- Gitblit v1.9.3