From d4d53b863bec6b836baff0f6f50131d8223cca4d Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期二, 27 八月 2024 10:52:01 +0800
Subject: [PATCH] 装配上线计划+机加下线计划筛选

---
 _Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl |   38 +++++++++++++++++++++++++++++---------
 1 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl b/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl
index 41dcfab..7a835d1 100644
--- a/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl
+++ b/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl
@@ -23,6 +23,7 @@
       owner.AOnlineAndMOfflinePlanPIR( relflush );
     }
     nowdate                := DateTime::ActualTime();
+    productids             := construct( Strings );
     loginfo                := owner.InterfaceLoginfo( relnew, ExecuteUser := executor
                                                       , Name := Translations::InterfaceDataset_AOnlineAndMOfflinePlanPIR_Name()
                                                       , InterfaceDateTime := nowdate
@@ -33,11 +34,15 @@
                                                       , ReturnMsg := 'Success'
                                                       , Success := true
                                                       );
-    pir                    := owner.AOnlineAndMOfflinePlanPIR( relnew, Werk := werk, Version := macroplan.ScenarioName(), StartDate := startdate, EndDate := enddate );
+    pir                    := owner.AOnlineAndMOfflinePlanPIR( relnew, ZPPPSCode := OS::GenerateGUIDAsString(), Werk := werk, Version := macroplan.ScenarioName(), StartDate := startdate, EndDate := enddate );
     loginfo.AOnlineAndMOfflinePlanPIR( relinsert, pir );
-    traverse( macroplan, AssemblyOnlinePlanColumn, column ){
-      traverse( column, AssemblyOnlinePlanCell, cell, cell.Value() <> '' and cell.AssemblyOnlinePlanRow().RowNr() = '1' ){
+    traverse( macroplan, AssemblyOnlinePlanColumn, column, column.ColumnDate() >= startdate and column.ColumnDate() <= enddate ){
+      traverse( column, AssemblyOnlinePlanCell, cell, ( werk = 'All' or cell.AssemblyOnlinePlanRow().ProductionLine().FindString( werk, 0 ) > -1 )
+                and cell.AssemblyOnlinePlanRow().RowNr() = '1' ){
         quantityrow        := cell.AssemblyOnlinePlanRow();
+        if( not exists( productids, Elements, e, e = quantityrow.ProductID() ) ){
+          productids.Add( quantityrow.ProductID() );
+        }
     
         pir.PIRData( relnew, Product           := quantityrow.ProductID()
                      , PlanningDate            := column.ColumnDate()
@@ -46,14 +51,29 @@
     }
     
     traverse( macroplan, OfflinePlanTable, table ){
-      traverse( table, OfflinePlanColumn, column ){
-        traverse( column, OfflinePlanCell, cell, cell.Value() <> '' 
+      traverse( table, OfflinePlanColumn, column, column.ColumnDate() >= startdate and column.ColumnDate() <= enddate ){
+        traverse( column, OfflinePlanCell, cell, ( werk = 'All' or cell.OfflinePlanRow().ProductionLine().FindString( werk, 0 ) > -1 )
                   and ( cell.OfflinePlanRow().ProductionLine() <> 'DL_MOMO' or cell.OfflinePlanRow().ProductionLine() <> 'CC_MOMO' ) ){
           row              := cell.OfflinePlanRow();
-          
-          pir.PIRData( relnew, Product         := row.ProductID()
-                     , PlanningDate            := column.ColumnDate()
-                     , PlanningQty             := [Number]cell.Value());
+          if( not exists( productids, Elements, e, e = row.ProductID() ) ){
+            productids.Add( row.ProductID() );
+          }
+          pirdata          := selectobject(  pir, PIRData, pirdata, pirdata.Product() = row.ProductID() and pirdata.PlanningDate() = column.ColumnDate() );
+          if( isnull( pir ) ){
+            pirdata          := pir.PIRData( relnew, Product         := row.ProductID()
+                                             , PlanningDate            := column.ColumnDate()
+                                             , PlanningQty             := 0 );
+          }
+          pirdata.PlanningQty( pirdata.PlanningQty() + [Number]cell.Value() );
+        }
+      }
+    }
+    traverse( productids, Elements, e ){
+      for( date := startdate.StartOfWeek(); date <= enddate; date := ( date + Duration::Days( 1 ) ).Date() ){
+        if( not exists( pir, PIRData, pirdata, pirdata.Product() = e and pirdata.PlanningDate() = date ) ){
+          pir.PIRData( relnew, Product         := e
+                     , PlanningDate            := date
+                     , PlanningQty             := 0 );
         }
       }
     }

--
Gitblit v1.9.3