From bce35410b00e2b7228ab5409744e173f2726b8d3 Mon Sep 17 00:00:00 2001 From: lazhen <17772815105@139.com> Date: 星期一, 01 七月 2024 14:43:08 +0800 Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg --- _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixEditorActionBarPage250.def | 10 _Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl | 23 + _Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl | 8 _Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl | 12 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def | 11 _Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl | 23 + _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def | 97 ++++ _Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl | 23 + _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def | 76 +++ _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def | 12 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def | 18 _Main/BL/Type_OfflinePlanCell/Attribute_Value.qbl | 7 _var/_Main/ProjSettings/EditorTC/Views/车道整班分析_[413988.0.1301140601].vw | 500 ++++++++++++++++++++++ _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick.def | 16 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def | 12 _Main/BL/Type_OfflinePlanRow/_ROOT_Type_OfflinePlanRow.qbl | 9 _Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl | 8 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def | 20 _Main/BL/Type_OfflinePlanRow/Attribute_RowNr.qbl | 7 _Main/BL/Type_OfflinePlanColumn/Attribute_ColumnName.qbl | 7 _Main/BL/Type_OfflinePlanCell/Attribute_Shift.qbl | 8 _Main/BL/Type_WholeShift/Method_PostProcessing2.qbl | 5 _Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl | 13 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDeductionOfReplacementLoss_OnClick.def | 12 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bConfirm_OnClick.def | 12 _Main/BL/Type_OfflinePlanCell/_ROOT_Type_OfflinePlanCell.qbl | 9 _Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling4.qbl | 35 + _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixeditorContextMenu204.def | 10 _Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw | 92 ++++ _Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl | 23 + _Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl | 20 _Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def | 5 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent#611.def | 14 _Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl | 8 _Main/BL/Type_OfflinePlanColumn/Attribute_ColumnIndex.qbl | 7 _Main/BL/Type_OfflinePlanColumn/_ROOT_Type_OfflinePlanColumn.qbl | 9 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def | 12 _Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl | 103 ++++ _Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl | 16 _Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def | 6 40 files changed, 1,316 insertions(+), 2 deletions(-) diff --git a/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl b/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl new file mode 100644 index 0000000..44c130e --- /dev/null +++ b/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell +{ + #keys: '1[413988.0.1296697089]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide OfflinePlanColumn + { + #keys: '3[413988.0.1296697091][413988.0.1296697090][413988.0.1296697092]' + Cardinality: '0to1' + ObjectDefinition: OfflinePlanCell + OwningSide: 'Reference' + } + RelationSide.RightSide OfflinePlanCell + { + #keys: '3[413988.0.1296697094][413988.0.1296697093][413988.0.1296697095]' + Cardinality: '1toN' + ObjectDefinition: OfflinePlanColumn + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl b/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl new file mode 100644 index 0000000..dfd7e00 --- /dev/null +++ b/_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell +{ + #keys: '1[413988.0.1296697102]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide OfflinePlanRow + { + #keys: '3[413988.0.1296697104][413988.0.1296697103][413988.0.1296697105]' + Cardinality: '0to1' + ObjectDefinition: OfflinePlanCell + OwningSide: 'Reference' + } + RelationSide.RightSide OfflinePlanCell + { + #keys: '3[413988.0.1296697107][413988.0.1296697106][413988.0.1296697108]' + Cardinality: '1toN' + ObjectDefinition: OfflinePlanRow + OwningSide: 'Reference' + } +} diff --git a/_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl b/_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl new file mode 100644 index 0000000..ddb1bef --- /dev/null +++ b/_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn +{ + #keys: '1[413988.0.1296697061]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MacroPlan + { + #keys: '3[413988.0.1296697063][413988.0.1296697062][413988.0.1296697064]' + Cardinality: '0to1' + ObjectDefinition: OfflinePlanColumn + OwningSide: 'Reference' + } + RelationSide.RightSide OfflinePlanColumn + { + #keys: '3[413988.0.1296697066][413988.0.1296697065][413988.0.1296697067]' + Cardinality: '1toN' + ObjectDefinition: MacroPlan + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl b/_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl new file mode 100644 index 0000000..c9dde81 --- /dev/null +++ b/_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow +{ + #keys: '1[413988.0.1296696992]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide MacroPlan + { + #keys: '3[413988.0.1296696994][413988.0.1296696993][413988.0.1296696995]' + Cardinality: '0to1' + ObjectDefinition: OfflinePlanRow + OwningSide: 'Reference' + } + RelationSide.RightSide OfflinePlanRow + { + #keys: '3[413988.0.1296696997][413988.0.1296696996][413988.0.1296696998]' + Cardinality: '1toN' + ObjectDefinition: MacroPlan + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Type_OfflinePlanCell/Attribute_Shift.qbl b/_Main/BL/Type_OfflinePlanCell/Attribute_Shift.qbl new file mode 100644 index 0000000..b0e804c --- /dev/null +++ b/_Main/BL/Type_OfflinePlanCell/Attribute_Shift.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute Shift +{ + #keys: '3[413988.0.1303338462][413988.0.1303338461][413988.0.1303338463]' + Description: '鐝' + ValueType: String +} diff --git a/_Main/BL/Type_OfflinePlanCell/Attribute_Value.qbl b/_Main/BL/Type_OfflinePlanCell/Attribute_Value.qbl new file mode 100644 index 0000000..bf64a48 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanCell/Attribute_Value.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute Value +{ + #keys: '3[413988.0.1296697080][413988.0.1296697079][413988.0.1296697081]' + ValueType: String +} diff --git a/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl b/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl new file mode 100644 index 0000000..5e7cd09 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl @@ -0,0 +1,103 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod RefreshOfflinePlan ( + MacroPlan macroPlan +) +{ + TextBody: + [* + macroPlan.OfflinePlanRow( relflush ); + macroPlan.OfflinePlanColumn( relflush ); + + // 鐢熸垚涓嬬嚎璁″垝琛� + traverse ( macroPlan, Unit, u, u.HasCapacityTypeTime() and u.Name() = "ZP4-M3" ) { + // 鍒涘缓浜х嚎琛� + macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "", Type := "0" ); + + traverse ( u, Operation, o ) { + traverse ( o, PeriodTaskOperation.NewSupply, ns ) { + // 鎵捐 + oprQuantity := OfflinePlanRow::FindOfflinePlanRowTypeIndex( u.ID(), ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), "1" ); + oprOrder := OfflinePlanRow::FindOfflinePlanRowTypeIndex( u.ID(), ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), "2" ); + if ( isnull( oprQuantity ) and isnull( oprOrder ) ) { + oprQuantity := macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "1" ); + oprOrder := macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "2" ); + } + + // 鎵惧垪 + opc := OfflinePlanColumn::FindOfflinePlanColumnTypeIndex( ns.Start().Date() ); + if ( isnull( opc ) ) { + opc := macroPlan.OfflinePlanColumn( relnew, ColumnDate := ns.Start().Date() ); + } + + // 璧嬪�煎崟鍏冩牸 + cellQuantity := opc.OfflinePlanCell( relnew, Value := [String]ns.Quantity().Round( 0 ), Shift := ns.PeriodTask_MP().UnitPeriod().astype( UnitPeriodTimeBase ).ShiftPattern().Name() ); + cellQuantity.OfflinePlanRow( relset, oprQuantity ); + cellOrder := opc.OfflinePlanCell( relnew, Value := "鍗曞彿" ); + cellOrder.OfflinePlanRow( relset, oprOrder ); + } + } + + // 鍒涘缓鎬婚噺琛� + macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "3" ); + // 鍒涘缓鐝琛� + macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "4" ); + } + + // 鍒涘缓浜у搧鍒�&绫诲瀷鍒� + productOPC := macroPlan.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 2 ); + typeOPC := macroPlan.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 1 ); + traverse ( macroPlan, OfflinePlanRow, opr ) { + if ( opr.Type() = "0" ) { + productLineCell := productOPC.OfflinePlanCell( relnew, Value := opr.ProductionLine() ); + productLineCell.OfflinePlanRow( relset, opr ); + } else if( opr.Type() = "1" ) { + productCell := productOPC.OfflinePlanCell( relnew, Value := opr.ProductID() ); + productCell.OfflinePlanRow( relset, opr ); + typeCell := typeOPC.OfflinePlanCell( relnew, Value := "Quantity" ); + typeCell.OfflinePlanRow( relset, opr ); + } else if ( opr.Type() = "2" ) { + typeCell := typeOPC.OfflinePlanCell( relnew, Value := "Order" ); + typeCell.OfflinePlanRow( relset, opr ); + } else if ( opr.Type() = "3" ) { + totalCell := productOPC.OfflinePlanCell( relnew, Value := "鍚堣" ); + totalCell.OfflinePlanRow( relset, opr ); + totalCell := typeOPC.OfflinePlanCell( relnew, Value := "鎬婚噺" ); + totalCell.OfflinePlanRow( relset, opr ); + } else if ( opr.Type() = "4" ) { + shiftCell := typeOPC.OfflinePlanCell( relnew, Value := "鐝" ); + shiftCell.OfflinePlanRow( relset, opr ); + } + } + + // 琛ュ叏鎬婚噺鍜岀彮娆� + totalOPRs := selectset( macroPlan, OfflinePlanRow, tempOPR, tempOPR.Type() = "3" ); + shiftOPRs := selectset( macroPlan, OfflinePlanRow, tempOPR, tempOPR.Type() = "4" ); + traverse ( macroPlan, OfflinePlanColumn, opc, opc.OfflinePlanCell( relsize ) > 0 and opc.ColumnDate() >= macroPlan.StartOfPlanning().Date() ) { + traverse ( totalOPRs, Elements, totalOPR ) { + total := sum( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow().ProductionLine() = totalOPR.ProductionLine() and tempOPC.OfflinePlanRow().Type() = "1", [Real]tempOPC.Value() ); + totalCell := opc.OfflinePlanCell( relnew, Value := [String]total ); + totalCell.OfflinePlanRow( relset, totalOPR ); + } + + traverse ( shiftOPRs, Elements, shiftOPR ) { + shift := select( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow().ProductionLine() = shiftOPR.ProductionLine() and tempOPC.OfflinePlanRow().Type() = "1" ); + if ( not isnull( shift ) ) { + shiftCell := opc.OfflinePlanCell( relnew, Value := shift.Shift() ); + shiftCell.OfflinePlanRow( relset, shiftOPR ); + } + } + } + + // 琛ュ叏鏃堕棿鍒� + indexDate := macroPlan.StartOfPlanning().Date(); + endDate := Date::Construct( indexDate.Year(), 12, 31 ); + while ( indexDate <= endDate ) { + opc := OfflinePlanColumn::FindOfflinePlanColumnTypeIndex( indexDate ); + if ( isnull( opc ) ) { + opc := macroPlan.OfflinePlanColumn( relnew, ColumnDate := indexDate ); + } + indexDate := indexDate + 1; + } + *] +} diff --git a/_Main/BL/Type_OfflinePlanCell/_ROOT_Type_OfflinePlanCell.qbl b/_Main/BL/Type_OfflinePlanCell/_ROOT_Type_OfflinePlanCell.qbl new file mode 100644 index 0000000..e946428 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanCell/_ROOT_Type_OfflinePlanCell.qbl @@ -0,0 +1,9 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +Type OfflinePlanCell +{ + #keys: '5[413988.0.1296696989][413988.0.1296696987][0.0.0][413988.0.1296696988][413988.0.1296696990]' + BaseType: Object + StructuredName: 'OfflinePlanCells' +} diff --git a/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl new file mode 100644 index 0000000..620f728 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute ColumnDate +{ + #keys: '3[413988.0.1295080211][413988.0.1295080210][413988.0.1295080212]' + IsReadOnly: true + ValueType: Date +} diff --git a/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnIndex.qbl b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnIndex.qbl new file mode 100644 index 0000000..d0d56a5 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnIndex.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute ColumnIndex +{ + #keys: '3[413988.0.1296697042][413988.0.1296697041][413988.0.1296697043]' + ValueType: Number +} diff --git a/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnName.qbl b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnName.qbl new file mode 100644 index 0000000..b23a75b --- /dev/null +++ b/_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnName.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute ColumnName +{ + #keys: '3[413988.0.1296697052][413988.0.1296697051][413988.0.1296697053]' + ValueType: String +} diff --git a/_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl b/_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl new file mode 100644 index 0000000..5063e35 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl @@ -0,0 +1,13 @@ +Quintiq file version 2.0 +#parent: #root +Function CalcColumnName +{ + TextBody: + [* + // lihongji Jun-27-2024 (created) + + value := ifexpr( this.ColumnDate() < this.MacroPlan().StartOfPlanning().Date(), "", this.ColumnDate().Format( "Y/M2/D2" ) ); + + this.ColumnName( value ); + *] +} diff --git a/_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl b/_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl new file mode 100644 index 0000000..15f5410 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl @@ -0,0 +1,12 @@ +Quintiq file version 2.0 +#parent: #root +TypeIndex OfflinePlanColumnTypeIndex +{ + Attributes: + [ + TypeIndexAttribute + { + ModelElement: ColumnDate + } + ] +} diff --git a/_Main/BL/Type_OfflinePlanColumn/_ROOT_Type_OfflinePlanColumn.qbl b/_Main/BL/Type_OfflinePlanColumn/_ROOT_Type_OfflinePlanColumn.qbl new file mode 100644 index 0000000..cf06591 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanColumn/_ROOT_Type_OfflinePlanColumn.qbl @@ -0,0 +1,9 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +Type OfflinePlanColumn +{ + #keys: '5[413988.0.1296696984][413988.0.1296696982][0.0.0][413988.0.1296696983][413988.0.1296696985]' + BaseType: Object + StructuredName: 'OfflinePlanColumns' +} diff --git a/_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl b/_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl new file mode 100644 index 0000000..0bd3a84 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute ProductID +{ + #keys: '3[413988.0.1296697032][413988.0.1296697031][413988.0.1296697033]' + IsReadOnly: true + ValueType: String +} diff --git a/_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl b/_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl new file mode 100644 index 0000000..2393a64 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute ProductionLine +{ + #keys: '3[413988.0.1296697022][413988.0.1296697021][413988.0.1296697023]' + IsReadOnly: true + ValueType: String +} diff --git a/_Main/BL/Type_OfflinePlanRow/Attribute_RowNr.qbl b/_Main/BL/Type_OfflinePlanRow/Attribute_RowNr.qbl new file mode 100644 index 0000000..5638be5 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanRow/Attribute_RowNr.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute RowNr +{ + #keys: '3[413988.0.1296697012][413988.0.1296697011][413988.0.1296697013]' + ValueType: String +} diff --git a/_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl b/_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl new file mode 100644 index 0000000..4905125 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: #root +Attribute Type +{ + #keys: '3[413988.0.1295121717][413988.0.1295121716][413988.0.1295121718]' + Description: + [* + 浜х嚎鍚嶈 锛�0 + Quantity琛岋細1 + Order琛� 锛�2 + 鍚堣琛� 锛�3 + 鐝琛� 锛�4 + *] + IsReadOnly: true + ValueType: String +} diff --git a/_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl b/_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl new file mode 100644 index 0000000..9850e05 --- /dev/null +++ b/_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl @@ -0,0 +1,20 @@ +Quintiq file version 2.0 +#parent: #root +TypeIndex OfflinePlanRowTypeIndex +{ + Attributes: + [ + TypeIndexAttribute + { + ModelElement: ProductionLine + } + TypeIndexAttribute + { + ModelElement: ProductID + } + TypeIndexAttribute + { + ModelElement: Type + } + ] +} diff --git a/_Main/BL/Type_OfflinePlanRow/_ROOT_Type_OfflinePlanRow.qbl b/_Main/BL/Type_OfflinePlanRow/_ROOT_Type_OfflinePlanRow.qbl new file mode 100644 index 0000000..4e131fd --- /dev/null +++ b/_Main/BL/Type_OfflinePlanRow/_ROOT_Type_OfflinePlanRow.qbl @@ -0,0 +1,9 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +Type OfflinePlanRow +{ + #keys: '5[413988.0.1296696979][413988.0.1296696977][0.0.0][413988.0.1296696978][413988.0.1296696980]' + BaseType: Object + StructuredName: 'OfflinePlanRows' +} diff --git a/_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling4.qbl b/_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling4.qbl new file mode 100644 index 0000000..f1ba88f --- /dev/null +++ b/_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling4.qbl @@ -0,0 +1,35 @@ +Quintiq file version 2.0 +#parent: #root +Method IsRoundingOrZeroFilling4 ( + MacroPlan macroPlan, + Unit unit +) +{ + Description: '杞﹂亾鏁寸彮' + TextBody: + [* + traverse ( unit, Lane.LaneLeg.Trip, t ) { + traverse ( t, ProductInTrip, pit, pit.Quantity() > 0.0 ) { + // 鑾峰彇浜у搧lotsize鍊嶆暟 + lotsize := 1; + if ( pit.Product_MP().ParentID().Regex( "缂镐綋" ) ) { + lotsize := macroPlan.CylinderBlock(); + } else if ( pit.Product_MP().ParentID().Regex( "缂哥洊" ) ) { + lotsize := macroPlan.CylinderHead(); + } else if ( pit.Product_MP().ParentID().Regex( "杩炴潌" ) ) { + lotsize := macroPlan.ConnectingRod(); + } else if ( pit.Product_MP().ParentID().Regex( "鏇茶酱" ) ) { + lotsize := macroPlan.Crankshaft(); + } else if ( pit.Product_MP().ParentID().Regex( "鏇茶酱" ) ) { + lotsize := macroPlan.BalanceAxis(); + } + + if ( lotsize > 1 ) { + debuginfo( "浜у搧ID锛�", pit.ProductID(), " 浜у搧鏁伴噺锛�", pit.Quantity(), " lotsize锛�", lotsize ); + quantityToBeSupplemented := lotsize - ( pit.Quantity() mod lotsize ); + pit.Update( pit.Quantity() + quantityToBeSupplemented, true ); + } + } + } + *] +} diff --git a/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl b/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl index d1b5969..90057d1 100644 --- a/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl +++ b/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl @@ -47,9 +47,10 @@ } // 杞﹂亾鏁寸彮 - traverse ( macroPlan, Unit, unit, unit.IsToFill() and unit.HasCapacityTypeTransportQuantity() ) { - unitName := unit.Name(); + traverse ( macroPlan, Unit, u, u.IsToFill() and u.HasCapacityTypeTransportQuantity() ) { + unitName := u.Name(); debuginfo( "杞﹂亾浜х嚎: ", unitName ); + this.IsRoundingOrZeroFilling4( macroPlan, u ); } *] } diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def index c40d27d..0eca66a 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def +++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def @@ -22,6 +22,17 @@ BaseType: 'WebButton' Properties: [ + Taborder: 2 + ] + } + Component bOfflinePlan + { + #keys: '[413988.0.1296872738]' + BaseType: 'WebButton' + Properties: + [ + Image: 'LIGHTBULB' + Label: 'Offline plan' Taborder: 1 ] } diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick.def new file mode 100644 index 0000000..eaab98b --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick.def @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: abgSecondDevelopmentPlan/bOfflinePlan +Response OnClick () id:Response_MacroPlanner_abgSecondDevelopmentPlan_bOfflinePlan_OnClick +{ + #keys: '[413988.0.1296872869]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebButton_OnClick' + GroupServerCalls: true + QuillAction + { + Body: + [* + ApplicationScope.ViewManager().ResetUserViewById( "OfflinePlan", true); + *] + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def index d0331a8..258cfb2 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def +++ b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def @@ -11,6 +11,7 @@ BaseType: 'WebNumberPicker' Properties: [ + DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityZKG' Label: 'ZKG(pcs)' Taborder: 0 ] @@ -21,6 +22,7 @@ BaseType: 'WebNumberPicker' Properties: [ + DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityZKM' Label: 'ZKM(pcs)' Taborder: 1 ] @@ -31,6 +33,7 @@ BaseType: 'WebNumberPicker' Properties: [ + DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityPL' Label: 'PL(pcs)' Taborder: 2 ] @@ -41,6 +44,7 @@ BaseType: 'WebNumberPicker' Properties: [ + DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityKW' Label: 'KW(pcs)' Taborder: 3 ] @@ -51,6 +55,7 @@ BaseType: 'WebNumberPicker' Properties: [ + DataBinding: 'MacroPlan.UpperLimitOfTransferCapacityAGW' Label: 'AGW(pcs)' Taborder: 4 ] diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def new file mode 100644 index 0000000..b27dd5e --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def @@ -0,0 +1,97 @@ +Quintiq file version 2.0 +Component MatrixEditor951 +{ + #keys: '[413988.0.1296803041]' + BaseType: 'WebMatrixEditor' + Children: + [ + Component MatrixEditorCell491 + { + #keys: '[413988.0.1296803042]' + BaseType: 'WebMatrixEditorCell' + Children: + [ + Component DataExtractor548 + { + #keys: '[413988.0.1296803043]' + BaseType: 'WebDataExtractor' + Properties: + [ + DataType: 'MacroPlan' + Source: 'MacroPlan' + Taborder: 0 + Transformation: 'OfflinePlanColumn.OfflinePlanCell' + ] + } + ] + Properties: + [ + Attributes: 'Value' + Column: 'OfflinePlanColumn' + Row: 'OfflinePlanRow' + Taborder: 0 + ] + } + Component MatrixEditorRows271 + { + #keys: '[413988.0.1296803046]' + BaseType: 'WebMatrixEditorHeaderLevel' + Children: + [ + Component DataExtractor869 + { + #keys: '[413988.0.1296803047]' + BaseType: 'WebDataExtractor' + Properties: + [ + DataType: 'MacroPlan' + Source: 'MacroPlan' + Taborder: 0 + Transformation: 'OfflinePlanRow' + ] + } + ] + Properties: + [ + Legend: 'RowNr' + SortCriteria: 'ProductionLine;ProductID;Type' + Taborder: 1 + ] + } + Component MatrixEditorColumns844 + { + #keys: '[413988.0.1296803050]' + BaseType: 'WebMatrixEditorHeaderLevel' + Children: + [ + Component DataExtractor259 + { + #keys: '[413988.0.1296803051]' + BaseType: 'WebDataExtractor' + Properties: + [ + DataType: 'MacroPlan' + Source: 'MacroPlan' + Taborder: 0 + Transformation: 'OfflinePlanColumn' + ] + } + ] + Properties: + [ + Legend: 'ColumnName' + SortCriteria: 'ColumnDate' + Taborder: 2 + ] + } + #child: matrixEditorActionBarPage250 + #child: matrixeditorContextMenu204 + ] + Properties: + [ + Columns: 'MatrixEditorColumns844' + ContextMenu: 'matrixeditorContextMenu204' + Rows: 'MatrixEditorRows271' + Taborder: 0 + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixEditorActionBarPage250.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixEditorActionBarPage250.def new file mode 100644 index 0000000..f81dbd6 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixEditorActionBarPage250.def @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +Component matrixEditorActionBarPage250 +{ + #keys: '[413988.0.1296803054]' + BaseType: 'matrixEditorActionBarPage' + Properties: + [ + Taborder: 3 + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixeditorContextMenu204.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixeditorContextMenu204.def new file mode 100644 index 0000000..37b2b4c --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_matrixeditorContextMenu204.def @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +Component matrixeditorContextMenu204 +{ + #keys: '[413988.0.1296803057]' + BaseType: 'matrixeditorContextMenu' + Properties: + [ + Taborder: 4 + ] +} diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent\043611.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent\043611.def" new file mode 100644 index 0000000..540aa26 --- /dev/null +++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent\043611.def" @@ -0,0 +1,14 @@ +Quintiq file version 2.0 +Component pContent +{ + #keys: '[413988.0.1296872691]' + BaseType: 'WebPanel' + Children: + [ + #child: MatrixEditor951 + ] + Properties: + [ + Taborder: 1 + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def new file mode 100644 index 0000000..a1900d3 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def @@ -0,0 +1,76 @@ +Quintiq file version 2.0 +Component pHeader +{ + #keys: '[413988.0.1296872680]' + BaseType: 'WebPanel' + Children: + [ + Component bRefresh + { + #keys: '[413988.0.1296860898]' + BaseType: 'WebButton' + Properties: + [ + Label: 'Refresh' + Taborder: 0 + ] + } + Component bDownload + { + #keys: '[413988.0.1296875316]' + BaseType: 'WebButton' + Properties: + [ + Label: 'Download' + Taborder: 1 + ] + } + Component bDeductionOfReplacementLoss + { + #keys: '[413988.0.1297911732]' + BaseType: 'WebButton' + Properties: + [ + Label: 'Deduction of replacement loss' + Taborder: 2 + ] + } + Component bRestore + { + #keys: '[413988.0.1297911774]' + BaseType: 'WebButton' + Properties: + [ + Label: 'Restore' + Taborder: 3 + ] + } + Component bSaveAsDraft + { + #keys: '[413988.0.1297973728]' + BaseType: 'WebButton' + Properties: + [ + Label: 'Save as draft' + Taborder: 4 + ] + } + Component bConfirm + { + #keys: '[413988.0.1297973782]' + BaseType: 'WebButton' + Properties: + [ + Label: 'Confirm' + Taborder: 5 + ] + } + ] + Properties: + [ + Border: true + FixedSize: true + Orientation: 'horizontal' + Taborder: 0 + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bConfirm_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bConfirm_OnClick.def new file mode 100644 index 0000000..33f3e58 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bConfirm_OnClick.def @@ -0,0 +1,12 @@ +Quintiq file version 2.0 +#parent: pHeader/bConfirm +Response OnClick () id:Response_pHeader_bConfirm_OnClick +{ + #keys: '[413988.0.1297974240]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebButton_OnClick' + QuillAction + { + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDeductionOfReplacementLoss_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDeductionOfReplacementLoss_OnClick.def new file mode 100644 index 0000000..b426c30 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDeductionOfReplacementLoss_OnClick.def @@ -0,0 +1,12 @@ +Quintiq file version 2.0 +#parent: pHeader/bDeductionOfReplacementLoss +Response OnClick () id:Response_pHeader_bDeductionOfReplacementLoss_OnClick +{ + #keys: '[413988.0.1297973984]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebButton_OnClick' + QuillAction + { + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def new file mode 100644 index 0000000..3df7e29 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def @@ -0,0 +1,12 @@ +Quintiq file version 2.0 +#parent: pHeader/bDownload +Response OnClick () id:Response_pHeader_bDownload_OnClick +{ + #keys: '[413988.0.1297973899]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebButton_OnClick' + QuillAction + { + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def new file mode 100644 index 0000000..98e2fa5 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def @@ -0,0 +1,20 @@ +Quintiq file version 2.0 +#parent: pHeader/bRefresh +Response OnClick () id:Response_pHeader_bRefresh_OnClick +{ + #keys: '[413988.0.1297973814]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebButton_OnClick' + Precondition: + [* + return not isnull( MacroPlan ); + *] + QuillAction + { + Body: + [* + OfflinePlanCell::RefreshOfflinePlan( MacroPlan ); + *] + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def new file mode 100644 index 0000000..2fcf6dc --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def @@ -0,0 +1,12 @@ +Quintiq file version 2.0 +#parent: pHeader/bRestore +Response OnClick () id:Response_pHeader_bRestore_OnClick +{ + #keys: '[413988.0.1297974069]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebButton_OnClick' + QuillAction + { + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def new file mode 100644 index 0000000..6b50c94 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def @@ -0,0 +1,12 @@ +Quintiq file version 2.0 +#parent: pHeader/bSaveAsDraft +Response OnClick () id:Response_pHeader_bSaveAsDraft_OnClick +{ + #keys: '[413988.0.1297974155]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebButton_OnClick' + QuillAction + { + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def new file mode 100644 index 0000000..be8fe4d --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def @@ -0,0 +1,18 @@ +Quintiq file version 2.0 +#root +#parent: MacroPlannerWebApp +OrphanComponent FormOfflinePlan +{ + #keys: '[413988.0.1296872622]' + BaseType: 'WebForm' + Children: + [ + #child: pHeader + #child: pContent + ] + Properties: + [ + Image: 'WIND_ENGINE_OFFSHORE' + Title: 'OfflinePlan' + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def index fd89de9..4c092f7 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def +++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def @@ -7,6 +7,12 @@ DefinitionID: 'Responsedef_WebButton_OnClick' QuillAction { + Body: + [* + dlg := construct( DialogUpperLimitOfTransferCapacity ); + + ApplicationMacroPlanner.ShowFormModal( dlg ); + *] GroupServerCalls: false } } diff --git a/_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw b/_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw new file mode 100644 index 0000000..7bce92d --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw @@ -0,0 +1,92 @@ +Quintiq file version 2.0 +{ + viewcontents + { + forms + { + form_FormOfflinePlan + { + title: 'QMacroPlanner::FormOfflinePlan' + shown: true + componentID: 'QMacroPlanner::FormOfflinePlan' + layout + { + mode: 'open' + rowPosition: 1 + rowSpan: 14 + columnPosition: 1 + columnSpan: 12 + } + components + { + FormOfflinePlan_pHeader + { + sizeRatio: 1 + } + FormOfflinePlan_pContent + { + sizeRatio: 1 + } + FormOfflinePlan_MatrixEditor951 + { + gridColor: '#c4c4c4' + totalHeaderWidth: 36 + attributeHeaderWidthRatio: 0.6 + nameHeaderWidthRatio: 0.4 + columnWidth: 100 + horizontalGrid: true + verticalGrid: true + backendState + { + componentId: 'QMacroPlanner::FormOfflinePlan.MatrixEditor951' + state + { + cells + { + attributes + { + attribute_Value + { + type: 'MatrixEditorWebApiCellDataModelInterest' + index: 0 + rowsubtotal: '' + columnsubtotal: '' + attribute: 'Value' + } + } + } + columns + { + sorting + { + criteria: "datamember:'ColumnDate'" + } + } + rows + { + sorting + { + criteria: "datamember:'ProductionLine';datamember:'ProductID';datamember:'Type'" + } + } + } + } + } + } + } + } + userconfigurableinformation + { + } + page: '' + group: '' + index: 0 + image: 'JACKHAMMER' + description: '' + } + formatversion: 2 + id: 'OfflinePlan' + name: 'OfflinePlan' + isglobal: false + isroot: true +} diff --git "a/_var/_Main/ProjSettings/EditorTC/Views/\350\275\246\351\201\223\346\225\264\347\217\255\345\210\206\346\236\220_\133413988.0.1301140601\135.vw" "b/_var/_Main/ProjSettings/EditorTC/Views/\350\275\246\351\201\223\346\225\264\347\217\255\345\210\206\346\236\220_\133413988.0.1301140601\135.vw" new file mode 100644 index 0000000..f976497 --- /dev/null +++ "b/_var/_Main/ProjSettings/EditorTC/Views/\350\275\246\351\201\223\346\225\264\347\217\255\345\210\206\346\236\220_\133413988.0.1301140601\135.vw" @@ -0,0 +1,500 @@ +锘�# Quintiq GUI View File +# Version 3.0 + +PROPERTIES +{ + KEY := [413988.0.1301140601] + NAME := '杞﹂亾鏁寸彮鍒嗘瀽' + HELPPAGE := '' + PARENTKEY := [100676.19.414142820] + DOMAIN := 'MacroPlanner' + FOCUSED := [100828.0.145642700] + MUSTREADMDSSETTINGS := false + ISPERSONAL false + OWNERNAME 'quintiq/lihongji' + ICONIMAGE 'WINDOWS' + CREATIONDATETIME '2024-06-28T13:59:36' + CREATIONUSER 'quintiq/lihongji' + UPDATEDATETIME '2024-06-28T13:59:54' + UPDATEUSER 'quintiq/lihongji' + LASTACCESSDATE '2024-06-28' + VIEWSCOPE 0 +} +AUTHORIZATIONS +{ + OPEN + { + AUTHORIZATIONS + { + } + } + EDIT + { + AUTHORIZATIONS + { + } + } +} +MDSINFO +{ + LOCAL '' + GLOBAL '' +} +INFOOBJECT +{ + KEY [892.10.659695] + OBJECTTYPE Application // appEditor + INFOOBJECTS + { + INFOOBJECT + { + KEY [892.10.659696] + OBJECTTYPE Frame // Frame + CONTENTS + { + State := maximized + (896,312,1024,768) + WorkspaceLocation := TreePath[R0.8;B0.0061;] + } + INFOOBJECTS + { + INFOOBJECT + { + KEY [103784.990.795900613] + OBJECTTYPE ValueHolder // vhSearchHistory + CONTENTS + { + Value '' + } + } + INFOOBJECT + { + KEY [10786.1.820220316] + OBJECTTYPE ValueHolder // vhLoadingErrCount + CONTENTS + { + Value '0' + } + } + INFOOBJECT + { + KEY [10786.1.820229990] + OBJECTTYPE ValueHolder // vhLoadReason + CONTENTS + { + Value 'Startup' + } + } + INFOOBJECT + { + KEY [10786.1.821405088] + OBJECTTYPE ValueHolder // vhWriteErrorCount + CONTENTS + { + Value '0' + } + } + INFOOBJECT + { + KEY [10786.2.342765638] + OBJECTTYPE ValueHolder // vhGlobals + CONTENTS + { + Value '' + } + BASEINFOOBJECTS + { + } + } + INFOOBJECT + { + KEY [103784.990.815711421] + SINGLEINSTANCE false + ID 'Type Details' + PARENTKEY [892.10.659696] + OBJECTTYPE Form // frmObjectDefinitionBrowser + CREATETYPE frmObjectDefinitionBrowser + CONTENTS + { + State := normal + (485,0,400,912) + DockableLocation := Station[MAIN]State[NORM]TreePath[L0.2;B0.5727;]TabIdx[0]Selection[FRONT] + } + BASEINFOOBJECTS + { + } + INFOOBJECTS + { + INFOOBJECT + { + KEY [121142.0.500922030] + OBJECTTYPE GUIDataSetLevel // dslTypes + CONTENTS + { + Columns + { + Definition := [892.10.660027] + { + [892.10.660028] + [644.0.84080945] + } + SubTotals := true + Visible + { + Column internal[DataSetDataColumn] [121142.0.501068000] + { + Header := 'Name' + Width := 100 + Subtotals := false + Specific + { + DataPath := 'Name [1.2.1645]' + } + } + Column internal[DataSetDataColumn] [121142.0.501068001] + { + Header := 'BaseTypeName' + Width := 100 + Subtotals := false + Specific + { + DataPath := 'BaseTypeName [1.2.2198]' + } + } + } + } + DataMemberSort 'SortOrder [1.2.1686]' true true + ColumnSort [121142.0.501068000] true false + } + } + INFOOBJECT + { + KEY [121142.0.500923128] + OBJECTTYPE List // lstObjectDefinitionBrowser + CONTENTS + { + Quantorrow := false + } + INFOOBJECTS + { + INFOOBJECT + { + KEY [121142.0.500923177] + OBJECTTYPE GUIDataSetLevel // dslElements + CONTENTS + { + Columns + { + Definition := [103784.990.769111502] + { + [103784.990.795596828] + [103784.990.795596827] + } + SubTotals := true + Visible + { + Column internal[DataSetDataColumn] [121142.0.501068002] + { + Width := 401 + SizedByUser := true + Subtotals := false + Specific + { + DataPath := 'Outline [1.2.6115]' + } + } + Column internal[DataSetDataColumn] [121142.0.501068003] + { + Width := 319 + SizedByUser := true + Subtotals := false + Specific + { + DataPath := 'ValueType [1.2.6117]' + } + } + } + } + Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="internal[UITypeDisplayElementBase]">\n <GEBFiltering Key="@Default_Filter1" TargetType="internal[UITypeDisplayElementBase]">\n <CurrentFilter>true</CurrentFilter>\n <Name>Default Filter</Name>\n <Active>true</Active>\n <IsFavorite>false</IsFavorite>\n <SortIndex>0</SortIndex>\n <GEBFilteringData Key="@2">\n <DefaultColumnPrefix></DefaultColumnPrefix>\n <ColumnPostfix></ColumnPostfix>\n <GEBSelectColumn Key="@Outline1" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n <ColumnID>[121142.0.1058023525]</ColumnID>\n <BaseName>Outline</BaseName>\n <Name>Outline</Name>\n <Title>Outline</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>Outline</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBFilter Key="@3">\n <FreeFilterEnabled>true</FreeFilterEnabled>\n <GEBFilterColumn Key="@4" Column="@Outline1">\n <ColumnID>[121142.0.1058023525]</ColumnID>\n </GEBFilterColumn>\n <GEBFreeFilterBody Key="@5">\n <ExpressionText></ExpressionText>\n <Converter>\n <ZeroConverter Key="@6">\n <IsStandard>true</IsStandard>\n <IsISO>false</IsISO>\n <IsCustom>false</IsCustom>\n <ConversionType>0</ConversionType>\n </ZeroConverter>\n </Converter>\n </GEBFreeFilterBody>\n </GEBFilter>\n </GEBFilteringData>\n </GEBFiltering>\n <GEBFiltering Key="@Hide_inherited_elements1" TargetType="internal[UITypeDisplayElementBase]">\n <CurrentFilter>false</CurrentFilter>\n <Name>Hide inherited elements</Name>\n <Active>false</Active>\n <IsFavorite>false</IsFavorite>\n <SortIndex>1</SortIndex>\n <GEBFilteringData Key="@7">\n <DefaultColumnPrefix></DefaultColumnPrefix>\n <ColumnPostfix></ColumnPostfix>\n <GEBSelectColumn Key="@Outline2" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n <ColumnID>[121142.0.507823646]</ColumnID>\n <BaseName>Outline</BaseName>\n <Name>Outline</Name>\n <Title>Outline</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>Outline</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBSelectColumn Key="@ValueType1" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n <ColumnID>[121142.0.507823661]</ColumnID>\n <BaseName>ValueType</BaseName>\n <Name>ValueType</Name>\n <Title>ValueType</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>ValueType</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBSelectColumn Key="@IsInherited1" ElementType="internal[UITypeDisplayElementBase]" ValueType="Boolean">\n <ColumnID>[121142.0.507823701]</ColumnID>\n <BaseName>IsInherited</BaseName>\n <Name>IsInherited</Name>\n <Title>IsInherited</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>IsInherited</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBFilter Key="@8">\n <FreeFilterEnabled>true</FreeFilterEnabled>\n <GEBFilterColumn Key="@9" Column="@Outline2">\n <ColumnID>[121142.0.507823646]</ColumnID>\n </GEBFilterColumn>\n <GEBFilterColumn Key="@10" Column="@ValueType1">\n <ColumnID>[121142.0.507823661]</ColumnID>\n </GEBFilterColumn>\n <GEBFilterColumn Key="@11" Column="@IsInherited1">\n <ColumnID>[121142.0.507823701]</ColumnID>\n <GEBFilterColumnMatch Key="@12">\n <Operation>=</Operation>\n <Enabled>true</Enabled>\n <RHSValue>\n <RHSConstantValue Key="@13">\n <StringValue></StringValue>\n <Value>false</Value>\n </RHSConstantValue>\n </RHSValue>\n </GEBFilterColumnMatch>\n </GEBFilterColumn>\n <GEBFreeFilterBody Key="@14">\n <ExpressionText></ExpressionText>\n <Converter>\n </Converter>\n </GEBFreeFilterBody>\n </GEBFilter>\n </GEBFilteringData>\n </GEBFiltering>\n <GEBFiltering Key="@Hide_empty_groups1" TargetType="internal[UITypeDisplayElementBase]">\n <CurrentFilter>false</CurrentFilter>\n <Name>Hide empty groups</Name>\n <Active>false</Active>\n <IsFavorite>false</IsFavorite>\n <SortIndex>2</SortIndex>\n <GEBFilteringData Key="@15">\n <DefaultColumnPrefix></DefaultColumnPrefix>\n <ColumnPostfix></ColumnPostfix>\n <GEBSelectColumn Key="@Outline3" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n <ColumnID>[121142.0.507823747]</ColumnID>\n <BaseName>Outline</BaseName>\n <Name>Outline</Name>\n <Title>Outline</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>Outline</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBFilter Key="@16">\n <FreeFilterEnabled>true</FreeFilterEnabled>\n <GEBFilterColumn Key="@17" Column="@Outline3">\n <ColumnID>[121142.0.507823747]</ColumnID>\n </GEBFilterColumn>\n <GEBFreeFilterBody Key="@18">\n <ExpressionText>object.istype( UITypeDisplayNewElementPlaceholder )\nor object.Group().ModeledElementsSize() > 0</ExpressionText>\n <Converter>\n <ZeroConverter Key="@19">\n <IsStandard>true</IsStandard>\n <IsISO>false</IsISO>\n <IsCustom>false</IsCustom>\n <ConversionType>0</ConversionType>\n </ZeroConverter>\n </Converter>\n </GEBFreeFilterBody>\n </GEBFilter>\n </GEBFilteringData>\n </GEBFiltering>\n <GEBFiltering Key="@Hide_coded_elements1" TargetType="internal[UITypeDisplayElementBase]">\n <CurrentFilter>false</CurrentFilter>\n <Name>Hide coded elements</Name>\n <Active>true</Active>\n <IsFavorite>false</IsFavorite>\n <SortIndex>3</SortIndex>\n <GEBFilteringData Key="@20">\n <DefaultColumnPrefix></DefaultColumnPrefix>\n <ColumnPostfix></ColumnPostfix>\n <GEBSelectColumn Key="@Outline4" ElementType="internal[UITypeDisplayElementBase]" ValueType="String">\n <ColumnID>[121142.0.1058023525]</ColumnID>\n <BaseName>Outline</BaseName>\n <Name>Outline</Name>\n <Title>Outline</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>Outline</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBFilter Key="@21">\n <FreeFilterEnabled>true</FreeFilterEnabled>\n <GEBFilterColumn Key="@22" Column="@Outline4">\n <ColumnID>[121142.0.1058023525]</ColumnID>\n </GEBFilterColumn>\n <GEBFreeFilterBody Key="@23">\n <ExpressionText>( object.istype( UITypeDisplayElement ) and object.Kind() = "RELATION" ) or\nobject.istype( UITypeDisplayGroupHeader ) or\nobject.istype( UITypeDisplayNewElementPlaceholder ) or\n( object.istype( UIModeledTypeDisplayElement ) and\n not isnull(object.astype( UIModeledTypeDisplayElement ).ObjectModelObject()) and\n object.astype( UIModeledTypeDisplayElement ).ObjectModelObject().Visible() )</ExpressionText>\n <Converter>\n <ZeroConverter Key="@24">\n <IsStandard>true</IsStandard>\n <IsISO>false</IsISO>\n <IsCustom>false</IsCustom>\n <ConversionType>0</ConversionType>\n </ZeroConverter>\n </Converter>\n </GEBFreeFilterBody>\n </GEBFilter>\n </GEBFilteringData>\n </GEBFiltering>\n</GEBObjectsFilter>\n' + DataMemberSort 'Index [1.2.7326]' true true + ColumnSort [121142.0.501068002] true false + } + INFOOBJECTS + { + INFOOBJECT + { + KEY [121142.0.500923178] + OBJECTTYPE GUIDataSetLevel // dslOverrides + CONTENTS + { + Columns + { + Definition := [103784.990.1153959078] + { + [103784.990.1159008565] + } + SubTotals := true + Visible + { + Column internal[DataSetDataColumn] [121142.0.501068004] + { + Width := 100 + Subtotals := false + Specific + { + DataPath := 'ObjectModelObject [1.3.4850]|TargetType [1.2.1730]' + } + } + } + } + } + } + } + } + } + } + } + } + INFOOBJECT + { + KEY [136402.0.98084624] + SINGLEINSTANCE false + ID 'Types per Module' + PARENTKEY [892.10.659696] + OBJECTTYPE Form // frmTypesByModule + CREATETYPE frmTypesByModule + CONTENTS + { + State := normal + (0,0,0,0) + DockableLocation := Station[MAIN]State[NORM]TreePath[L0.2;T0.4273;]TabIdx[0]Selection[FRONT] + } + BASEINFOOBJECTS + { + BASEINFOOBJECT + { + KEY [136402.0.98084624] + OBJECTTYPE GUIComponent // frmTypesByModule + COMPONENTDATA + { + [136402.0.98084624]:[103784.990.728734692]:[892.10.659816]:[514.0.129466]:[892.10.659835] STR 'true' + } + } + } + INFOOBJECTS + { + INFOOBJECT + { + KEY [121142.0.1211769996] + OBJECTTYPE GUIDataSetLevel // GUIDataSetLevel776 + CONTENTS + { + Columns + { + Definition := [121142.0.950060792] + { + [121142.0.950062702] + } + SubTotals := true + Visible + { + Column internal[DataSetDataColumn] [121142.0.950062702] + { + Width := 100 + Subtotals := false + Specific + { + DataPath := 'Name [1.2.6744]' + } + } + } + } + ColumnSort [121142.0.950062702] true false + } + } + INFOOBJECT + { + KEY [103784.990.728734692] + OBJECTTYPE List // ListTypes + CONTENTS + { + Quantorrow := false + } + INFOOBJECTS + { + INFOOBJECT + { + KEY [101180.2.890701323] + OBJECTTYPE ValueHolder // ValueHolder + CONTENTS + { + Value 'false' + } + } + INFOOBJECT + { + KEY [10786.2.342808981] + OBJECTTYPE ValueHolder // vhGlobals + CONTENTS + { + Value '' + } + } + INFOOBJECT + { + KEY [892.10.659838] + OBJECTTYPE GUIDataSetLevel // dslTypes + CONTENTS + { + Columns + { + Definition := [121142.0.950060792] + { + [121142.0.950062702] + } + SubTotals := true + Visible + { + Column internal[DataSetDataColumn] [121142.0.950062702] + { + Width := 367 + SizedByUser := true + Subtotals := false + Specific + { + DataPath := 'Name [1.2.6744]' + } + } + } + } + DataMemberSort 'IsDomain [1.2.6747]' false true + DataMemberSort 'IsSystemLibrary [1.2.7907]' true true + DataMemberSort 'IsAvailable [1.2.7451]' false true + ColumnSort [121142.0.950062702] true false + } + INFOOBJECTS + { + INFOOBJECT + { + KEY [136402.0.98091406] + OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelTypes + CONTENTS + { + Columns + { + Definition := [103784.990.1535755633] + { + [103784.990.1535759199] + } + SubTotals := true + Visible + { + Column internal[DataSetDataColumn] [103784.990.1535759199] + { + Width := 375 + SizedByUser := true + Subtotals := false + Specific + { + DataPath := 'Name [1.2.1645]' + } + } + } + } + Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="internal[ObjectModelType]">\n <GEBFiltering Key="@Default_Filter1" TargetType="internal[ObjectModelType]">\n <CurrentFilter>true</CurrentFilter>\n <Name>Default Filter</Name>\n <Active>true</Active>\n <IsFavorite>false</IsFavorite>\n <SortIndex>0</SortIndex>\n <GEBFilteringData Key="@2">\n <DefaultColumnPrefix></DefaultColumnPrefix>\n <ColumnPostfix></ColumnPostfix>\n <GEBSelectColumn Key="@Name1" ElementType="internal[ObjectModelType]" ValueType="String">\n <ColumnID>[413988.0.1111730433]</ColumnID>\n <BaseName>Name</BaseName>\n <Name>Name</Name>\n <Title>Name</Title>\n <IsTarget>false</IsTarget>\n <NameHasBeenSet>false</NameHasBeenSet>\n <ColumnFinal>Fail</ColumnFinal>\n <AttributePathText>Name</AttributePathText>\n <AttributePathIdentifier>\n </AttributePathIdentifier>\n </GEBSelectColumn>\n <GEBFilter Key="@3">\n <FreeFilterEnabled>true</FreeFilterEnabled>\n <GEBFilterColumn Key="@4" Column="@Name1">\n <ColumnID>[413988.0.1111730433]</ColumnID>\n </GEBFilterColumn>\n <GEBFreeFilterBody Key="@5">\n <ExpressionText></ExpressionText>\n <Converter>\n </Converter>\n </GEBFreeFilterBody>\n </GEBFilter>\n </GEBFilteringData>\n </GEBFiltering>\n</GEBObjectsFilter>\n' + DataMemberSort 'SortOrder [1.2.1686]' true true + ColumnSort [103784.990.1535759199] true false + } + INFOOBJECTS + { + INFOOBJECT + { + KEY [135566.0.318964952] + OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelSpecializations + CONTENTS + { + Columns + { + Definition := [103784.990.1535755633] + { + [103784.990.1535759199] + } + SubTotals := true + Visible + { + Column internal[DataSetDataColumn] [103784.990.1535759199] + { + Width := 100 + Subtotals := false + Specific + { + DataPath := 'Name [1.2.1645]' + } + } + } + } + DataMemberSort 'SortOrder [1.2.1686]' true true + ColumnSort [103784.990.1535759199] true false + } + } + } + } + } + } + } + } + } + } + INFOOBJECT + { + KEY [121142.0.36340892] + SINGLEINSTANCE false + ID 'Model Overview' + PARENTKEY [892.10.659696] + OBJECTTYPE Form // frmModelOverview + CREATETYPE frmModelOverview + CONTENTS + { + State := normal + (0,0,0,0) + DockableLocation := Station[MAIN]State[NORM]TreePath[R0.8;T0.9939;]TabIdx[0]Selection[FRONT] + } + BASEINFOOBJECTS + { + BASEINFOOBJECT + { + KEY [121142.0.36340892] + OBJECTTYPE GUIContainerComponent // frmModelOverview + COMPONENTDATA + { + [121142.0.36340892]:[121142.0.37512339]:[121142.0.40573788] STR 'PeriodTaskOperation:Unit:PeriodTaskLaneLeg:Operation:MacroPlan:Lane:PeriodTask_MP:NewSupply:LaneLeg:UnitPeriod:DependentDemand:ProductInTrip:Trip#601:266:-40:657:238:266:189:211:497:17:178:464:513#168:437:163:276:350:529:165:274:436:277:59:59:244#219:54:197:109:109:54:153:109:87:120:175:153:54#26:26:26:26:26:26:26:26:26:26:26:26:26' + [121142.0.36340892]:[121142.0.37512339]:[121142.0.48706989]:[121142.0.48706990]:[121142.0.48809938] STR 'true' + } + } + } + INFOOBJECTS + { + INFOOBJECT + { + KEY [121142.0.37512339] + OBJECTTYPE CustomDrawComponent // customDraw + CONTENTS + { + ZoomX 1.331 + ZoomY 1.331 + } + INFOOBJECTS + { + } + } + } + } + } + } + } + COMPONENTDATA + { + [892.10.659695]:[892.10.659696]:[103784.990.702401639] STR 'MacroPlanner' + [892.10.659695]:[892.10.659696]:[892.10.659800]:[892.10.1501977] STR '0' + } +} -- Gitblit v1.9.3