From 77b8d972800221d19bd0ea7f2a14b720920b16bb Mon Sep 17 00:00:00 2001
From: hongjli <3117313295@qq.com>
Date: 星期三, 11 十月 2023 14:56:11 +0800
Subject: [PATCH] 产能分配优化
---
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def | 4 -
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_RecursiveGeneration.qbl | 29 +++++++--
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateCapacityRules.qbl | 6 +
_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button884_OnClick.def | 12 ++++
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Test.qbl | 61 ++++++++++++++++++++
_Main/UI/MacroPlanner/Component_FormTestButtonCollection/_ROOT_Component_FormTestButtonCollection.def | 23 +++++++
6 files changed, 121 insertions(+), 14 deletions(-)
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateCapacityRules.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateCapacityRules.qbl
index d989131..fbdbb4d 100644
--- a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateCapacityRules.qbl
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateCapacityRules.qbl
@@ -7,7 +7,7 @@
{
TextBody:
[*
- targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = "Chassis - SUV 1" );
+ targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = "ProSports Spider D2.6 M" );
period_MPS := null( Period_MPs );
traverse ( macroPlan, PeriodSpecification_MP, psmp, psmp.ID() = "Planning periods" ) {
@@ -15,8 +15,10 @@
}
traverse ( targetProduct_MP, ProductInStockingPoint_MP, pisp ) {
- traverse ( period_MPS, Elements, pmp ) {
+ traverse ( period_MPS, Elements, pmp, pmp.StartDate() = Date::Construct( 2020, 4, 1 ) ) {
+ info( pmp.StartDate().Format( "Y-M2-D2" ), " outputPISP锛�", pisp.Name() );
CapacityAllocationResultsRuleConfiguration::RecursiveGeneration( macroPlan, pisp, pisp, pmp.StartDate() );
+ info( "-------------------------------------------------------------------------------------------------------" );
}
}
*]
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_RecursiveGeneration.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_RecursiveGeneration.qbl
index 5cbc2aa..e6f6dda 100644
--- a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_RecursiveGeneration.qbl
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_RecursiveGeneration.qbl
@@ -9,15 +9,28 @@
{
TextBody:
[*
- operations := selectset( macroPlan, Routing.RoutingStep.Operation, tempO,
- exists( tempO, OperationOutput, tempOO, tempOO.ProductInStockingPoint_MP() = outputPISP ) );
-
- traverse ( operations, Elements, o ) {
- traverse ( o, OperationInput, tempOI ) {
- inputPISP := tempOI.ProductInStockingPoint_MP();
- CapacityAllocationResultsRuleConfiguration::RecursiveGeneration( macroPlan, tempOI.ProductInStockingPoint_MP(), firstPISP, startDate );
- info( "杈撳叆PISP锛�", inputPISP.Name(), " 杈撳嚭PISP锛�", outputPISP.Name(), " 绗竴娆ISP锛�", firstPISP.Name() );
+ traverse ( outputPISP, ProcessOutput.AsProcessOutput, pmp ) {
+
+ ontype( pmp ) {
+ Operation as o : {
+ traverse ( o, OperationInput, oi ) {
+ oiPISP := oi.ProductInStockingPoint_MP();
+ CapacityAllocationResultsRuleConfiguration::RecursiveGeneration( macroPlan, oiPISP, firstPISP, startDate );
+ info( "杈撳叆PISP锛�", oiPISP.Name(), " 杈撳嚭PISP锛�", outputPISP.Name(), " 绗竴娆ISP锛�", firstPISP.Name() );
+ }
+ }
+
+ LaneLeg as ll : {
+ traverse ( ll, LaneLegInput, lli ) {
+ lliPISP := lli.ProductInStockingPoint_MP();
+ if ( lliPISP.ProductID() = outputPISP.ProductID() ) {
+ CapacityAllocationResultsRuleConfiguration::RecursiveGeneration( macroPlan, lliPISP, firstPISP, startDate );
+ info( "杈撳叆PISP锛�", lliPISP.Name(), " 杈撳嚭PISP锛�", outputPISP.Name(), " 绗竴娆ISP锛�", firstPISP.Name() );
+ }
+ }
+ }
}
+
}
*]
}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Test.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Test.qbl
new file mode 100644
index 0000000..dd2083a
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Test.qbl
@@ -0,0 +1,61 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Test (
+ MacroPlan this
+)
+{
+ TextBody:
+ [*
+ pispnames := construct( Strings );
+
+ traverse( this, SalesDemand.ProductInStockingPoint_MP, pisp )
+ {
+ if( not exists( pisp, ProcessOutput.AsProcessOutput.ProcessInput, processinput, true ) )
+ {
+ pispnames.Add( pisp.Name() );
+ }
+ else
+ {
+ dummyprocesses := selectset( pisp, ProcessOutput.AsProcessOutput, process, true );
+ index := 0;
+ limit := 10000;
+
+ while( index < dummyprocesses.Size()
+ and index < limit )
+ {
+ dummyprocess := dummyprocesses.Element( index );
+ index++;
+
+ pisps := construct( ProductInStockingPoint_MPs );
+
+ if( dummyprocess.istype( Operation ) )
+ {
+ pisps := selectset( dummyprocess, astype( Operation ).RoutingStep.Routing.InputPISPNodeInRouting.ProductInStockingPoint_MP, pisp2,
+ not pisp2.IsSystem() );
+ }
+ else if( dummyprocess.istype( LaneLeg ) )
+ {
+ pisps := selectset( dummyprocess, astype( LaneLeg ).LaneLegInput.ProductInStockingPoint_MP, pisp2,
+ pisp2.Product_MP() = pisp.Product_MP() );
+ }
+
+ traverse( pisps, Elements, pisp2 )
+ {
+ if( not exists( pisp2, ProcessOutput.AsProcessOutput.ProcessInput, processinput, true ) )
+ {
+ pispnames.Add( pisp2.Name() );
+ }
+ else
+ {
+ dummyprocesses2 := selectset( pisp2, ProcessOutput.AsProcessOutput, process, true );
+ dummyprocesses.AddInPlace( dummyprocesses2 );
+ }
+ }
+ }
+ }
+ }
+
+ pispnames := pispnames.Unique().Sort();
+ info( pispnames.ToString( String::NewLine() ) );
+ *]
+}
diff --git a/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button884_OnClick.def b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button884_OnClick.def
new file mode 100644
index 0000000..c25a822
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button884_OnClick.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: Button884
+Response OnClick () id:Response_FormTestButtonCollection_Button884_OnClick
+{
+ #keys: '[414702.1.33954101]'
+ Body:
+ [*
+ CapacityAllocationResultsRuleConfiguration::Test( MacroPlan );
+ *]
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_GUIButtonBase_OnClick'
+}
diff --git a/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/_ROOT_Component_FormTestButtonCollection.def b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/_ROOT_Component_FormTestButtonCollection.def
index 53a8703..e4d9281 100644
--- a/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/_ROOT_Component_FormTestButtonCollection.def
+++ b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/_ROOT_Component_FormTestButtonCollection.def
@@ -11,6 +11,7 @@
Columns:
[
GBFlow.Column { grow: 0 id: 454 parent: 0 }
+ GBFlow.Column { grow: 0 id: 968 parent: 0 }
]
Elements:
[
@@ -18,6 +19,11 @@
{
Component => Button398
Position { startcolumn: 454 startrow: 649 endcolumn: 454 endrow: 649 }
+ }
+ GBElement
+ {
+ Component => Button884
+ Position { startcolumn: 968 startrow: 649 endcolumn: 968 endrow: 649 }
}
]
Gaps: [ left: 5 right: 5 top: 5 bottom: 5 inner: 5 ]
@@ -35,7 +41,19 @@
Properties:
[
Image: 'HARDHAT'
+ LayoutGroup: 'Button'
Text: '鐢熸垚浜ц兘鍒嗛厤缁撴灉鏁版嵁'
+ ]
+ }
+ Component Button884
+ {
+ #keys: '[414702.1.33954049]'
+ BaseType: 'Button'
+ Properties:
+ [
+ Image: 'CAKE_SLICE'
+ LayoutGroup: 'Button'
+ Text: '鏍规嵁鎴愬搧鐢熸垚鐗╂枡'
]
}
]
@@ -46,5 +64,10 @@
IncludeInView: true
Title: '鍔熻兘娴嬭瘯鎸夐挳'
Width: 535
+ ModeledStringList ChildOrdering
+ {
+ c: Button398
+ c: Button884
+ }
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
index 71d1402..700b61d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
@@ -5,10 +5,6 @@
#keys: '[414724.0.91471552]'
CanBindMultiple: false
DefinitionID: 'Responsedef_WebComponent_OnCreated'
- Precondition:
- [*
-
- *]
QuillAction
{
Body:
--
Gitblit v1.9.3