Quintiq file version 2.0
|
#parent: #root
|
Method UnifiedProcessingOfRoundingLogic (
|
Real unifiedProcessingTimeOfRounding,
|
UnitPeriodTimeBase sourceUnitPeriodTimeBase,
|
PeriodTaskOperation periodTaskOperation,
|
MacroPlan macroPlan
|
)
|
{
|
TextBody:
|
[*
|
sourcePeriodTaskOperation := select( sourceUnitPeriodTimeBase, PeriodTaskOperation, tempOTO, tempOTO.Operation() = periodTaskOperation.Operation() );
|
|
if ( isnull( sourcePeriodTaskOperation ) ) {
|
debuginfo( "源产能周期不存在目标周期任务" );
|
periodTaskOperation.Update( periodTaskOperation.Quantity() - ( periodTaskOperation.Operation().Throughput() * unifiedProcessingTimeOfRounding ), false );
|
sourcePeriodTaskOperation := PeriodTaskOperation::Create( periodTaskOperation.Operation(), sourceUnitPeriodTimeBase, periodTaskOperation.Operation().Throughput() * unifiedProcessingTimeOfRounding, false );
|
Transaction::Transaction().Propagate();
|
|
// info( "新创建的周期任务有几个需求:", sourcePeriodTaskOperation.DependentDemand( relsize ), " 周期任务ID为:", sourcePeriodTaskOperation.Key().AsQUILL() );
|
traverse ( sourcePeriodTaskOperation, DependentDemand, dd, true ) {
|
targetDependentDemand := select( periodTaskOperation, DependentDemand, tempDD, tempDD.ProcessInput().astype( OperationInput ).Name() = dd.ProcessInput().astype( OperationInput ).Name() );
|
targetTempDependentDemandInputGroup := select( macroPlan, TempDependentDemandInputGroup, tempTDDIG, tempTDDIG.ID() = guard( targetDependentDemand.Key().AsQUILL(), "" ) );
|
if ( not isnull( targetTempDependentDemandInputGroup ) ) {
|
// info( "创建了依赖需求,ID为:", dd.Key().AsQUILL() );
|
macroPlan.TempDependentDemandInputGroup( relnew, ID := dd.Key().AsQUILL(),
|
Divisor := targetTempDependentDemandInputGroup.Divisor(),
|
UnitID := targetTempDependentDemandInputGroup.UnitID(),
|
ProductInStockingName := targetTempDependentDemandInputGroup.ProductInStockingName() );
|
}
|
}
|
Transaction::Transaction().Propagate();
|
} else {
|
debuginfo( "源产能周期存在目标周期任务" );
|
periodTaskOperation.Update( periodTaskOperation.Quantity() - ( periodTaskOperation.Operation().Throughput() * unifiedProcessingTimeOfRounding ), false );
|
sourcePeriodTaskOperation.Update( sourcePeriodTaskOperation.Quantity() + ( sourcePeriodTaskOperation.Operation().Throughput() * unifiedProcessingTimeOfRounding ), false );
|
Transaction::Transaction().Propagate();
|
}
|
*]
|
}
|