From acf70acb5438a3358d07978afdc0eb28950f40d5 Mon Sep 17 00:00:00 2001
From: lihongji <3117313295@qq.com>
Date: 星期一, 12 八月 2024 16:28:01 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev

---
 _Main/BL/Type_EnginePipelineReport/Method_Generate.qbl |   39 ++++++++++++++++++++++++++++++++-------
 1 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl b/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
index 846f44a..3c3e269 100644
--- a/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
+++ b/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
@@ -9,7 +9,6 @@
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
     table                   := selectobject( this, Source.Report, report, not report.IsShow() );
-    
     //娓呯┖涔嬪墠瀛樺偍鐨勬樉绀烘暟鎹�
     this.Clear( search.TimeUnit(), search.StartDate(), search.EndDate() );
     Transaction::Transaction().Propagate( attribute( EnginePipelineColumn, Index ) );
@@ -44,8 +43,22 @@
       showrowccproduction := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '闀挎槬浜ч噺', rownr + 2, false );
       showrowdemand       := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '闇�姹�', rownr + 3, false );
       rownr               := rownr + 4;
-      traverse( models, Elements, model ){
-        EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), model, rownr, false ); 
+      modelsnr            := rownr + 3;
+      models              := construct( Strings );
+      uniquemodels        := selectuniquevalues( row, Cell.Demand, demand, true, demand.Model() );
+    
+      traverse( uniquemodels, Elements, e ){
+    
+        if( rownr < modelsnr ){
+          EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), e, rownr, false ); 
+          models.Add( e );
+          rownr             := rownr + 1;
+        }
+      }
+    
+      for( rownr := rownr; rownr < modelsnr; rownr ++ ){
+    
+        EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '', rownr, false ); 
         rownr             := rownr + 1;
       }
       showrowinventory    :=  EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '搴撳瓨', rownr, false );
@@ -60,6 +73,7 @@
           production              := column.CellValue( relnew, Value := [String]cell.ProductionQuantity() );
           showrowproduction.CellValue( relinsert, production );
           sumproduction           := selectobject( column, CellValue, c, c.Row() = sumrowproduction );
+    
           if( isnull( sumproduction ) ){
             sumproduction         := column.CellValue( relnew, Value := [String]0 );
             sumrowproduction.CellValue( relinsert, sumproduction );
@@ -71,6 +85,7 @@
           dlproduction             := column.CellValue( relnew, Value := [String]dlproductionquantity );
           showrowdlproduction.CellValue( relinsert, dlproduction );
           sumdlproduction          := selectobject( column, CellValue, c, c.Row() = sumrowdlproduction );
+    
           if( isnull( sumdlproduction ) ){
             sumdlproduction        := column.CellValue( relnew, Value := [String]0 );
             sumrowdlproduction.CellValue( relinsert, sumdlproduction );
@@ -82,6 +97,7 @@
           ccproduction             := column.CellValue( relnew, Value := [String]ccproductionquantity );
           showrowccproduction.CellValue( relinsert, ccproduction );
           sumccproduction          := selectobject( column, CellValue, c, c.Row() = sumrowccproduction );
+    
           if( isnull( sumccproduction ) ){
             sumccproduction        := column.CellValue( relnew, Value := [String]0 );
             sumrowccproduction.CellValue( relinsert, sumccproduction );
@@ -98,21 +114,22 @@
           }
           sumdemand.Value( [String]( [Real]sumdemand.Value() + cell.DemandQuantity() ) );
           
-          traverse( cell, Demand, demand ){
-            demandrow              := selectobject( this, Row, r, r.Name() = row.Name() and exists( r, CellValue, cv, cv.Value() = demand.Model() ) );
-            sumdemandrow           := selectobject( this, Row, r, r.Name() = 'SUM' and exists( r, CellValue, cv, cv.Value() = demand.Model() ) );
+          traverse( cell, Demand, demand, exists( models, Elements, model, model = demand.Model() ) ){
+            demandrow              := selectobject( this, Row, r, r.Name() = row.Name() and exists( r, CellValue, cv, cv.Column() = attricolumn and cv.Value() = demand.Model() ) );
+            sumdemandrow           := selectobject( this, Row, r, r.Name() = 'SUM' and exists( r, CellValue, cv, cv.Column() = attricolumn and cv.Value() = demand.Model() ) );
     
             if( not isnull( demandrow ) ){
               demandcell             := column.CellValue( relnew, Value := [String]demand.Quantity() );
               demandrow.CellValue( relinsert, demandcell );
             }
-            
+            if( not isnull( sumdemandrow ) ){
             sumdemandcell          := selectobject( column, CellValue, c, c.Row() = sumdemandrow );
             if( isnull( sumdemandcell ) ){
               sumdemandcell        := column.CellValue( relnew, Value := [String]0 );
               sumdemandrow.CellValue( relinsert, sumdemandcell );
             }
             sumdemandcell.Value( [String]( [Real]sumdemandcell.Value() + demand.Quantity() ) );
+            }
           }
     
           for( demandr := showrowdemand.RowNr() + 1; demandr < showrowinventory.RowNr(); demandr := demandr + 1 ){
@@ -140,11 +157,19 @@
     traverse( this, Column, column ){
       for( demandr := sumrowdemand.RowNr() + 1; demandr < sumrowinventory.RowNr(); demandr := demandr + 1 ){
         demandrow              := selectobject( this, Row, r, r.RowNr() = demandr );
+    //    info( '------------------14----------------' );
         if( not isnull( demandrow ) and not exists( demandrow, CellValue, cv, cv.Column() = column ) ){
           demandcell           := column.CellValue( relnew, Value := '' );
           demandrow.CellValue( relinsert, demandcell );
         }
       }
     }
+    
+    rows := selectsortedset( this, Row, row, row.Name(), row.RowNr() );
+    i    := 0;
+    traverse( rows, Elements, e ){
+      e.RowNr( i );
+      i := i + 1;
+    }
   *]
 }

--
Gitblit v1.9.3