Quintiq file version 2.0
|
#parent: #root
|
StaticMethod RefreshData (
|
MacroPlan macroPlan,
|
OfflinePlanTable opt
|
)
|
{
|
TextBody:
|
[*
|
macroPlan.AssemblyOnlinePlanRow( relflush );
|
macroPlan.AssemblyOnlinePlanColumn( relflush );
|
|
// 找装配线行
|
oprs := selectsortedset( opt, OfflinePlanRow, tempOPR,
|
tempOPR.ProductionLine() = "DL MoMo"
|
// or tempOPR.ProductionLine() = "CC MoMo" or tempOPR.ProductionLine() = "DL ZKM"
|
,
|
tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
|
opcs := selectsortedset( opt, OfflinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
|
|
// 生成表格
|
traverse ( opcs, Elements, opc ) {
|
aopc := macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := opc.ColumnDate(), ColumnIndex := opc.ColumnIndex() );
|
traverse ( oprs, Elements, opr ) {
|
aopr := select( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductID() = opr.ProductID() and tempAOPR.ProductionLine() = opr.ProductionLine() and tempAOPR.Type() = opr.Type() );
|
if ( isnull( aopr ) ) {
|
aopr := macroPlan.AssemblyOnlinePlanRow( relnew, ProductID := opr.ProductID(), ProductionLine := opr.ProductionLine(), Type := opr.Type() );
|
}
|
|
cellOPC := select( opr, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanColumn() = opc );
|
if ( not isnull( cellOPC ) ) {
|
cellAOPC := aopc.AssemblyOnlinePlanCell( relnew, Value := cellOPC.Value() );
|
cellAOPC.AssemblyOnlinePlanRow( relset, aopr );
|
}
|
}
|
}
|
|
// 处理日历事件
|
pls := selectuniquevalues( macroPlan, AssemblyOnlinePlanRow, tempAOPR, true, tempAOPR.ProductionLine() );
|
traverse ( pls, Elements, pl ) {
|
targetQuantity := ifexpr( pl = "CC MoMo", guard( macroPlan.AssemblyOnlineQuantity().CCMoMo(), 0 ),
|
ifexpr( pl = "DL MoMo", guard( macroPlan.AssemblyOnlineQuantity().DLMoMo(), 0 ), guard( macroPlan.AssemblyOnlineQuantity().DLZKM(), 0 ) )
|
);
|
|
u := select( macroPlan, Unit, tempU, tempU.ID() = pl );
|
drainPs := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject() = "排空", false ) );
|
lineLyingPs := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject() = "铺线", false ) );
|
|
// 处理排空
|
info( "当前产线:", pl, " 处理排空--------------------------" );
|
traverse ( drainPs, Elements, p ) {
|
traverse ( p, ExplicitTimeInterval, eti ) {
|
info( "开始时间:", eti.Start().Format( "Y-M2-D2" ), " 结束时间:", eti.End().Format( "Y-M2-D2" ) );
|
// 前一天日历
|
aopc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = ( eti.Start().Date() - 1 ) );
|
info( "需要排空的上线计划时间:", aopc.ColumnDate().Format( "Y-M2-D2" ) );
|
aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
|
exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
|
aopr := maxselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
|
[Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
|
cell := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
|
tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() );
|
|
cell.Value( [String] ( [Number]cell.Value() - targetQuantity ) );
|
}
|
}
|
|
info( "当前产线:", pl, " 处理铺线--------------------------" );
|
// 处理铺线
|
traverse ( lineLyingPs, Elements, p ) {
|
traverse ( p, ExplicitTimeInterval, eti ) {
|
info( "开始时间:", eti.Start().Format( "Y-M2-D2" ), " 结束时间:", eti.End().Format( "Y-M2-D2" ) );
|
}
|
}
|
}
|
*]
|
}
|