From 4f94ad9cd6bd7355017c88cdc8bdb67498d5410c Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期一, 11 十一月 2024 12:43:24 +0800
Subject: [PATCH] 修复一些班次计划下发的bug

---
 _Main/BL/Type_DispatchShiftPlan/StaticMethod_Dispatch.qbl                              |   10 ++--------
 _Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_GenerateDispatchData.qbl |    8 +-------
 _Main/BL/Type_Test/StaticMethod_Test.qbl                                               |    6 ++----
 _Main/BL/Type_LocalTool/StaticMethod_GetFactoryByUnit.qbl                              |   26 ++++++++++++++++++++++++++
 4 files changed, 31 insertions(+), 19 deletions(-)

diff --git a/_Main/BL/Type_DispatchShiftPlan/StaticMethod_Dispatch.qbl b/_Main/BL/Type_DispatchShiftPlan/StaticMethod_Dispatch.qbl
index fd802d5..ec03621 100644
--- a/_Main/BL/Type_DispatchShiftPlan/StaticMethod_Dispatch.qbl
+++ b/_Main/BL/Type_DispatchShiftPlan/StaticMethod_Dispatch.qbl
@@ -38,14 +38,8 @@
     now := DateTime::Now();
     macroPlanName := macroPlan.MDSMacroPlan().Description();
     traverse( macroPlan,Unit.UnitPeriod.astype( UnitPeriodTime ).ShiftPlan,shiftPlan ,shiftPlan.UnitPeriodTime().Period_MP().StartDate() >= macroPlan.StartOfPlanning().Date()){
-       factory := shiftPlan.UnitPeriodTime().Unit();
-       while( factory.HasParent() ){
-         temp1 := factory;
-         factory := factory.Parent();
-         if( not factory.HasParent() ){
-           factory := temp1;
-         }
-       }
+       factory := LocalTool::GetFactoryByUnit( shiftPlan.UnitPeriodTime().Unit() );
+       
        productLine :=  shiftPlan.UnitPeriodTime().Unit().ID();
        shiftDate := shiftPlan.UnitPeriodTime().Period_MP().StartDate();
        factoryName := factory.ID();
diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_GenerateDispatchData.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_GenerateDispatchData.qbl
index cc5744c..9da63db 100644
--- a/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_GenerateDispatchData.qbl
+++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_GenerateDispatchData.qbl
@@ -46,13 +46,7 @@
         unitIndex := guard( unitIndexTree.Root().Child( unitHandle ), null( NamedValue ));
         if( not isnull( unitIndex )){
           unit := units.Element( unitIndex.GetValueAsNumber() );
-          temp1 := unit;
-          temp2 := unit.Parent();
-          while( not isnull( temp1.Parent())){
-            temp2 := temp1;
-            temp1 := temp1.Parent();
-          }
-          factory := temp2;
+          factory := LocalTool::GetFactoryByUnit( unit );
         }
       }
       
diff --git a/_Main/BL/Type_LocalTool/StaticMethod_GetFactoryByUnit.qbl b/_Main/BL/Type_LocalTool/StaticMethod_GetFactoryByUnit.qbl
new file mode 100644
index 0000000..66b05c8
--- /dev/null
+++ b/_Main/BL/Type_LocalTool/StaticMethod_GetFactoryByUnit.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetFactoryByUnit (
+  const Unit unit
+) const as const Unit
+{
+  TextBody:
+  [*
+    // Akari Nov-11-2024 (created)
+    factory := constnull( Unit );
+    
+    if( isnull( unit ) or isnull( unit.Parent())){
+      factory := unit;
+    }else{
+      temp1 := unit;
+      temp2 := unit.Parent();
+      while( not isnull( temp1.Parent())){
+        temp2 := temp1;
+        temp1 := temp1.Parent();
+      }
+      factory := temp2;
+    }
+    
+    return factory;
+  *]
+}
diff --git a/_Main/BL/Type_Test/StaticMethod_Test.qbl b/_Main/BL/Type_Test/StaticMethod_Test.qbl
index 389d1dc..ea55e75 100644
--- a/_Main/BL/Type_Test/StaticMethod_Test.qbl
+++ b/_Main/BL/Type_Test/StaticMethod_Test.qbl
@@ -11,10 +11,8 @@
 {
   TextBody:
   [*
-    traverse( archive,ArchiveFile,object ){
-    //  object.Name();
-    //  object.FilePath();
-    //  object.SourceFileBinaryValue();
+    traverse( macroPlan,Unit,unit ){
+      info( LocalTool::GetFactoryByUnit( unit ).ID() ); 
     }
   *]
 }

--
Gitblit v1.9.3