Quintiq file version 2.0
|
#parent: #root
|
StaticMethod RefreshData (
|
MacroPlan macroPlan,
|
NewOfflinePlanTable nopt
|
)
|
{
|
TextBody:
|
[*
|
macroPlan.NewAssemblyOnlinePlanRow( relflush );
|
macroPlan.NewAssemblyOnlinePlanColumn( relflush );
|
|
aopplns := macroPlan.A_AssemblyOnlinePlanProductionLineName().Tokenize( ";" );
|
|
traverse ( nopt, NewOfflinePlanRow, nopr, exists( aopplns, Elements, aoppl, aoppl = nopr.ProductionLine() ) and nopr.Type() = "1" ) {
|
// 上线计划合计行
|
totalNAOPR := select( macroPlan, NewAssemblyOnlinePlanRow, tempNAOPR, tempNAOPR.ProductID() = "All" and tempNAOPR.ProductionLine() = nopr.ProductionLine() and tempNAOPR.Type() = "2" );
|
if ( isnull( totalNAOPR ) ) {
|
totalNAOPR := macroPlan.NewAssemblyOnlinePlanRow( relnew, ProductID := "All", ProductionLine := nopr.ProductionLine(), Type := "2" );
|
}
|
// 上线计划详细行
|
detailNAOPR := select( macroPlan, NewAssemblyOnlinePlanRow, tempNAOPR, tempNAOPR.ProductID() = nopr.ProductID() and tempNAOPR.ProductionLine() = nopr.ProductionLine() and tempNAOPR.Type() = "1" );
|
if ( isnull( detailNAOPR ) ) {
|
detailNAOPR := macroPlan.NewAssemblyOnlinePlanRow( relnew, OperationID := nopr.OperationID(), ProductID := nopr.ProductID(), ProductionLine := nopr.ProductionLine(), Type := "1" );
|
}
|
|
// 创建单元格
|
traverse ( nopr, NewOfflinePlanCell, nopcell ) {
|
// 上线计划列
|
naopc := select( macroPlan, NewAssemblyOnlinePlanColumn, tempNAOPC, tempNAOPC.StartDate() = nopcell.NewOfflinePlanColumn().StartDate() and tempNAOPC.EndDate() = nopcell.NewOfflinePlanColumn().EndDate() );
|
if ( isnull( naopc ) ) {
|
naopc := macroPlan.NewAssemblyOnlinePlanColumn( relnew, StartDate := nopcell.NewOfflinePlanColumn().StartDate(), EndDate := nopcell.NewOfflinePlanColumn().EndDate() );
|
}
|
|
// 设置上线计划合计单元格
|
totalNAOPCell := select( totalNAOPR, NewAssemblyOnlinePlanCell, tempNAOPCell, tempNAOPCell.NewAssemblyOnlinePlanColumn() = naopc );
|
if ( isnull( totalNAOPCell ) ) {
|
totalNAOPCell := totalNAOPR.NewAssemblyOnlinePlanCell( relnew, ShiftPatternName := nopcell.Total().ShiftPatternName(), ShiftPatternStart := nopcell.Total().ShiftPatternStart(),
|
ShiftPatternEnd := nopcell.Total().ShiftPatternEnd() );
|
totalNAOPCell.NewAssemblyOnlinePlanColumn( relset, naopc );
|
}
|
|
// 设置上线计划详细单元格
|
detailNAOPCell := select( detailNAOPR, NewAssemblyOnlinePlanCell, tempNAOPCell, tempNAOPCell.NewAssemblyOnlinePlanColumn() = naopc );
|
if ( isnull( detailNAOPCell ) ) {
|
detailNAOPCell := detailNAOPR.NewAssemblyOnlinePlanCell( relnew, InventoryWeight := nopcell.InventoryWeight(), Order := nopcell.Order(), OrderNr := nopcell.OrderNr(), Quantity := nopcell.Quantity(),
|
ShiftPatternEnd := nopcell.ShiftPatternEnd(), ShiftPatternName := nopcell.ShiftPatternName(), ShiftPatternStart := nopcell.ShiftPatternStart() );
|
detailNAOPCell.NewAssemblyOnlinePlanColumn( relset, naopc );
|
}
|
|
// 设置合计单元格的详细单元格
|
totalNAOPCell.Detailed( relinsert, detailNAOPCell );
|
}
|
}
|
|
// 处理日历事件
|
//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().Regex( "拉空" ), false ) );
|
// lineLyingPs := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "铺线" ), 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" ) );
|
// info( "需要铺线的上线计划时间:", eti.Start().Format( "Y-M2-D2" ) );
|
// aopc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = eti.Start().Date() );
|
// aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
|
// exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
|
// aopr := minselect( 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 ) );
|
// }
|
// }
|
//}
|
*]
|
}
|