From 695020008dc1ee576c928f9c2152fbb63fcdd83f Mon Sep 17 00:00:00 2001
From: lihongji <3117313295@qq.com>
Date: 星期二, 27 八月 2024 13:07:05 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev

---
 _Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl |   72 +++++++++++++++++++++++++++++++-----
 1 files changed, 62 insertions(+), 10 deletions(-)

diff --git a/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl b/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl
index 73c5697..7a835d1 100644
--- a/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl
+++ b/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl
@@ -5,26 +5,78 @@
   String werk,
   const MacroPlan macroplan,
   Date startdate,
-  Date enddate
+  Date enddate,
+  String executor
 )
 {
   TextBody:
   [*
     // 鐢勫叞楦� Aug-23-2024 (created)
-    owner.AOnlineAndMOfflinePlanPIR( relflush );
-    pir                    := owner.AOnlineAndMOfflinePlanPIR( relnew, Werk := werk, Version := macroplan.ScenarioName(), StartDate := startdate, EndDate := enddate );
-    totalrows              := 0;
-    traverse( macroplan, AssemblyOnlinePlanColumn, column ){
-      traverse( column, AssemblyOnlinePlanCell, cell, cell.Value() <> '' and cell.AssemblyOnlinePlanRow().RowNr() = '1' ){
+    cdlast                 := maxobject( owner, AOnlineAndMOfflinePlanPIR, cd, cd.StartDate(), cd.EndDate(), cd.Werk() );
+    if( not isnull( cdlast ) ){
+      loginfo              := cdlast.InterfaceLoginfo();
+      if( not loginfo.IsShow() ){
+        loginfo.Delete();
+      }else{
+        loginfo.Last( false );
+      }
+      owner.AOnlineAndMOfflinePlanPIR( relflush );
+    }
+    nowdate                := DateTime::ActualTime();
+    productids             := construct( Strings );
+    loginfo                := owner.InterfaceLoginfo( relnew, ExecuteUser := executor
+                                                      , Name := Translations::InterfaceDataset_AOnlineAndMOfflinePlanPIR_Name()
+                                                      , InterfaceDateTime := nowdate
+                                                      , Message := '瑁呴厤涓婄嚎璁″垝 + 鏈哄姞涓嬬嚎璁″垝 - PIR'
+                                                      , IsShow := false
+                                                      , Last := true
+                                                      , ReturnSuccess := true
+                                                      , ReturnMsg := 'Success'
+                                                      , Success := true
+                                                      );
+    pir                    := owner.AOnlineAndMOfflinePlanPIR( relnew, ZPPPSCode := OS::GenerateGUIDAsString(), Werk := werk, Version := macroplan.ScenarioName(), StartDate := startdate, EndDate := enddate );
+    loginfo.AOnlineAndMOfflinePlanPIR( relinsert, pir );
+    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()
-                                           , PlanningQty             := [Number]cell.Value());
+                     , PlanningDate            := column.ColumnDate()
+                     , PlanningQty             := [Number]cell.Value());
       }
     }
-    totalrows              := totalrows + pir.PIRData( relsize );
     
-    //traverse( macroplan, OfflinePlanTable
+    traverse( macroplan, OfflinePlanTable, table ){
+      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();
+          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 );
+        }
+      }
+    }
+    loginfo.TotalRow( pir.PIRData( relsize ) );
   *]
 }

--
Gitblit v1.9.3