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