From ca130e0c9b97df46d4961660957439fabab8bffc Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期五, 18 十月 2024 18:09:02 +0800
Subject: [PATCH] 生产计划变更添加周月汇总

---
 _Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_ComparedNew.qbl                                  |   51 ++++++++++++++++++++++++-
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon504#801.def                              |   24 +++++++++++
 _Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_rbgTimeUnit_OnUserChanged#273.def |   16 ++++++++
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def                                    |    4 +-
 _Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_dhTimeUnit_OnCreated#478.def      |   16 ++++++++
 5 files changed, 106 insertions(+), 5 deletions(-)

diff --git a/_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_ComparedNew.qbl b/_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_ComparedNew.qbl
index 3720c16..a4f878d 100644
--- a/_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_ComparedNew.qbl
+++ b/_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_ComparedNew.qbl
@@ -17,7 +17,7 @@
       localColumnHandle := localColumnIndexTree.GetHandle( column.StartDate().AsQUILL() );
       localColumnIndex := guard( localColumnIndexTree.Root().Child( localColumnHandle ),null( NamedValue ));
       if( isnull( localColumnIndex )){
-        localColumn := table.LocalColumn( relnew,CustomDate := column.StartDate());
+        localColumn := table.LocalColumn( relnew,CustomDate := column.StartDate(),TimeUnit := "Day");
         localColumns.Add( localColumn );
         localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
       }
@@ -26,7 +26,7 @@
       localColumnHandle := localColumnIndexTree.GetHandle( column.StartDate().AsQUILL() );
       localColumnIndex := guard( localColumnIndexTree.Root().Child( localColumnHandle ),null( NamedValue ));
       if( isnull( localColumnIndex )){
-        localColumn := table.LocalColumn( relnew,CustomDate := column.StartDate());
+        localColumn := table.LocalColumn( relnew,CustomDate := column.StartDate(),TimeUnit := "Day");
         localColumns.Add( localColumn );
         localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
       }
@@ -96,6 +96,53 @@
                             CompareVersion := ifexpr( isnull( compareOfflinePlanCell),0.0,compareOfflinePlanCell.Quantity()));
       }
     }
+    
+    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"){
+        baseVersionValue := sum( table,LocalRow.LocalCell.astype( LocalCell_OfflinePlanComparison ),cell,
+                                 cell.LocalColumn().TimeUnit() = "Day" and
+                                 cell.LocalColumn().CustomDate() >= column.CustomDate() and
+                                 cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextWeek(), cell.BaseVersionValue());
+        compareVersionValue := sum( table,LocalRow.LocalCell.astype( LocalCell_OfflinePlanComparison ),cell,
+                                 cell.LocalColumn().TimeUnit() = "Day" and
+                                 cell.LocalColumn().CustomDate() >= column.CustomDate() and
+                                 cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextWeek(), cell.CompareVersionValue());
+                                 
+        row.LocalCell(relnew,LocalCell_OfflinePlanComparison,LocalColumn := column,BaseVersionValue := baseVersionValue,CompareVersionValue := compareVersionValue );
+      } 
+    }
+    traverse( table,LocalRow,row ){
+      traverse( table,LocalColumn,column,column.TimeUnit() = "Month "){
+        baseVersionValue := sum( table,LocalRow.LocalCell.astype( LocalCell_OfflinePlanComparison ),cell,
+                                 cell.LocalColumn().TimeUnit() = "Day" and
+                                 cell.LocalColumn().CustomDate() >= column.CustomDate() and
+                                 cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextMonth(), cell.BaseVersionValue());
+        compareVersionValue := sum( table,LocalRow.LocalCell.astype( LocalCell_OfflinePlanComparison ),cell,
+                                 cell.LocalColumn().TimeUnit() = "Day" and
+                                 cell.LocalColumn().CustomDate() >= column.CustomDate() and
+                                 cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextMonth(), cell.CompareVersionValue());
+                                 
+        row.LocalCell(relnew,LocalCell_OfflinePlanComparison,LocalColumn := column,BaseVersionValue := baseVersionValue,CompareVersionValue := compareVersionValue );
+      } 
+    }
+    
     traverse( table,LocalColumn,column ){
       if( column.LocalCell( relsize ) = 0 ){
         column.Delete(); 
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def
index 7bbfc28..130cb7e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def
@@ -73,8 +73,8 @@
           Properties:
           [
             DataType: 'LocalTable'
-            FilterArguments: 'startDate:QMacroPlanner::FormOfflinePlanChanges.dhStartDate;endDate:QMacroPlanner::FormOfflinePlanChanges.dhEndDate'
-            FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date() '
+            FilterArguments: 'startDate:QMacroPlanner::FormOfflinePlanChanges.dhStartDate;endDate:QMacroPlanner::FormOfflinePlanChanges.dhEndDate;timeUnit:QMacroPlanner::FormOfflinePlanChanges.dhTimeUnit'
+            FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date() and object.TimeUnit() = timeUnit'
             Source: 'dhTable'
             Taborder: 0
             Transformation: 'LocalColumn'
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon504\043801.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon504\043801.def"
index f18276f..3f5a6da 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon504\043801.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon504\043801.def"
@@ -76,7 +76,7 @@
       Properties:
       [
         Image: 'EXPORT1'
-        Taborder: 3
+        Taborder: 5
       ]
     }
     Component dhXMLDataListener
@@ -102,6 +102,28 @@
       ]
       Properties:
       [
+        Taborder: 6
+      ]
+    }
+    Component rbgTimeUnit id:rbgTimeUnit_963
+    {
+      #keys: '[414996.1.146310444]'
+      BaseType: 'WebRadioButtonGroup'
+      Properties:
+      [
+        BoundValue: 'Day'
+        ButtonLabels: 'Day;Week;Month'
+        ButtonValues: 'Day;Week;Month'
+        Taborder: 3
+      ]
+    }
+    Component dhTimeUnit id:dhTimeUnit_384
+    {
+      #keys: '[414996.1.146310475]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'String*'
+      Properties:
+      [
         Taborder: 4
       ]
     }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_dhTimeUnit_OnCreated\043478.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_dhTimeUnit_OnCreated\043478.def"
new file mode 100644
index 0000000..45a6482
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_dhTimeUnit_OnCreated\043478.def"
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelRibbon504_801/dhTimeUnit_384
+Response OnCreated () id:Response_PanelRibbon322_dhTimeUnit_OnCreated_478
+{
+  #keys: '[414996.1.146310473]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      this.Data( "Day" );
+    *]
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_rbgTimeUnit_OnUserChanged\043273.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_rbgTimeUnit_OnUserChanged\043273.def"
new file mode 100644
index 0000000..f0f31fd
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_rbgTimeUnit_OnUserChanged\043273.def"
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelRibbon504_801/rbgTimeUnit_963
+Response OnUserChanged () id:Response_PanelRibbon322_rbgTimeUnit_OnUserChanged_273
+{
+  #keys: '[414996.1.146310443]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebRadioButtonGroup_OnUserChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      dhTimeUnit.Data( this.BoundValue() );
+    *]
+  }
+}

--
Gitblit v1.9.3