yunchai
2023-10-12 e8619d825e5f09daf129b4847bf2bf4e660d40c5
_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl
@@ -14,8 +14,24 @@
  [*
    numberOfLayers++;
    //info( "目标时间:", targetDate.Format( "Y-M2-D2" ) );
    info( pisp.Name() );
    //info( pisp.Name() );
    traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispippl, pispippl.Start().Date() = targetDate ) {
      //info( "是否有供应:", pispippl.NewSupply( relsize ) > 0, "    库存:", pispippl.InventoryLevelEnd() );
      if ( numberOfLayers <> 1 and pispippl.NewSupply( relsize ) = 0 ) {
        previous := pispippl.PreviousPlanningPISPIP().astype( ProductInStockingPointInPeriodPlanningLeaf );
        if ( not previous.Period_MP().IsHistorical() ) {
          previousDate := previous.Start().Date();
          CapacityAllocationResults::IterativeGeneration2( globalOTDTable,
                                                           pisp,
                                                           previousDate,
                                                           carrcs,
                                                           numberOfLayers,
                                                           firstLevelSupply,
                                                           currentLayerDependentDemandQuantity
                                                          );
        }
      }
      traverse ( pispippl, NewSupply, ns, ns.Quantity() > 0 ) {
        if ( numberOfLayers = 1 ) {
          firstLevelSupply := ns;
@@ -24,7 +40,7 @@
        ontype( ns.PeriodTask_MP() ) {
          PeriodTaskOperation as pto : {
    //        info( "Operation周期任务..." );     
            traverse ( ns, PeriodTask_MP.astype( PeriodTaskOperation ).DependentDemand, dd ) {
            traverse ( ns, PeriodTask_MP.astype( PeriodTaskOperation ).DependentDemand, dd, dd.Quantity() > 0 ) {
              if ( numberOfLayers = 1 ) {
                currentLayerDependentDemandQuantity := ns.Quantity();
              }
@@ -56,8 +72,8 @@
                                                        ModuleMeasurementUnit := firstLevelSupply.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().UnitOfMeasureName(),
                                                        ModuleBase            := guard( firstLevelSupply.PeriodTask_MP().astype( PeriodTaskOperation ).Operation().UnitID(), "车道运输" ),
                                                        Division              := carrc.Division(),
                                                        RequirementDate       := ns.Start().Date(),
                                                        Date                  := ns.Start().Date(),
                                                        RequirementDate       := firstLevelSupply.Start().Date(),
                                                        Date                  := firstLevelSupply.Start().Date(),
                                                        Description           := "",
                                                        ID                    := OS::GenerateGUIDAsString(),
                                                        ProductID             := ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID(),
@@ -67,7 +83,7 @@
                                                       );
                                                        
            }
            info( "-----------------------------------------------------------------------------------------------------------------" );
            //info( "-----------------------------------------------------------------------------------------------------------------" );
          }
          
          PeriodTaskLaneLeg as ptll : {
@@ -76,7 +92,7 @@
    //        info( "层数:", numberOfLayers,"    当前供应的pisp:", ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), "    总供应值:", ns.Quantity(), "    需要供应值:", currentLayerDependentDemandQuantity,
    //              "    当前需求pisp:", targetDependentDemand.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), "    需求值:", currentLayerDependentDemandQuantity );
    //        info( "LaneLeg周期任务..." );
            info( "-----------------------------------------------------------------------------------------------------------------" );
            //info( "-----------------------------------------------------------------------------------------------------------------" );
            CapacityAllocationResults::IterativeGeneration2( globalOTDTable,
                                                             targetDependentDemand.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP(),
                                                             targetDate,