From f9f69f30faf50ac33ac970a1a88a06e69a4de883 Mon Sep 17 00:00:00 2001 From: rislai <risheng.lai@capgemini.com> Date: 星期五, 19 七月 2024 17:41:20 +0800 Subject: [PATCH] 新增产量对比功能 --- _Main/BL/Type_LocalColumn/Function_CalcDate.qbl | 2 +- _Main/BL/Type_LocalColumn/Attribute_CustomDate.qbl | 7 +++++++ _Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletions(-) diff --git a/_Main/BL/Type_LocalColumn/Attribute_CustomDate.qbl b/_Main/BL/Type_LocalColumn/Attribute_CustomDate.qbl new file mode 100644 index 0000000..e6fafe9 --- /dev/null +++ b/_Main/BL/Type_LocalColumn/Attribute_CustomDate.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute CustomDate +{ + #keys: '3[412672.1.50711484][412672.1.50711483][412672.1.50711485]' + ValueType: Date +} diff --git a/_Main/BL/Type_LocalColumn/Function_CalcDate.qbl b/_Main/BL/Type_LocalColumn/Function_CalcDate.qbl index 2e99838..2f59aa9 100644 --- a/_Main/BL/Type_LocalColumn/Function_CalcDate.qbl +++ b/_Main/BL/Type_LocalColumn/Function_CalcDate.qbl @@ -7,7 +7,7 @@ // rislai Jun-28-2024 (created) if( not this.IsAttrbuteColumn() ){ names := this.Name().Tokenize( "/" ); - this.Date( guard( Date::Construct( [Number]names.Element( 0 ),[Number]names.Element( 1 ),[Number]names.Element( 2 )),Date::MinDate() )); + this.Date( ifexpr( this.CustomDate() <> Date::MinDate(),this.CustomDate(),guard( Date::Construct( [Number]names.Element( 0 ),[Number]names.Element( 1 ),[Number]names.Element( 2 )),Date::MinDate() ))); } *] } diff --git a/_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl b/_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl new file mode 100644 index 0000000..cb7d860 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl @@ -0,0 +1,37 @@ +Quintiq file version 2.0 +#parent: #root +Method Comparison ( + RecycleBin recycleBin +) as LocalTable +{ + TextBody: + [* + // rislai Jul-17-2024 (created) + macroPlan := this.MacroPlan(); + table := recycleBin.LocalTable( relnew,Name := ""); + + localColumns := construct( LocalColumns ); + localColumnIndexTree := NamedValueTree::Create(); + traverse( this,OfflinePlanColumn,column,column.ColumnDate() >= macroPlan.StartOfPlanning().Date()){ + localColumn := table.LocalColumn( relnew,CustomDate := column.ColumnDate()); + localColumnHandle := localColumnIndexTree.GetHandle( column.ColumnDate().AsQUILL() ); + localColumns.Add( localColumn ); + localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 ); + } + traverse( this,OfflinePlanRow,row,row.Type() = "1" ){ + productID := row.ProductID(); + + localRow := table.LocalRow( relnew,Index := table.GetRowIndexCache(),CustomName := productID ); + traverse( row,OfflinePlanCell,cell,cell.OfflinePlanColumn().ColumnDate() >= macroPlan.StartOfPlanning().Date() ){ + localColumnHandle := localColumnIndexTree.GetHandle( cell.OfflinePlanColumn().ColumnDate().AsQUILL() ); + localColumnIndex := guard( localColumnIndexTree.Root().Child( localColumnHandle ),null( NamedValue )); + if( not isnull( localColumnIndex )){ + localColumn := localColumns.Element( localColumnIndex.GetValueAsNumber() ); + localCell := localRow.LocalCell( relnew,LocalCell_DemandComparison ,LocalColumn := localColumn, + BaseVersion := cell.Quantity(),CompareVersion := 0.0); + } + } + } + return table; + *] +} -- Gitblit v1.9.3