From 52bd9a90e6e31eb2c458447fd7fec4e8f99a0fe7 Mon Sep 17 00:00:00 2001 From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com> Date: 星期一, 28 十月 2024 11:36:35 +0800 Subject: [PATCH] 修改班次信息的计算逻辑 --- _Main/BL/Type_DispatchShiftSchedulingInformation/Method_CalculateLineQuantity.qbl | 11 + _Main/BL/Type_DispatchShiftSchedulingInformation/_ROOT_Type_DispatchShiftSchedulingLine.qbl | 10 + _Main/BL/Type_DispatchShiftProductionInformation/Attribute_ProductID.qbl | 8 + _Main/BL/Relations/Relation_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_Dispatch.qbl | 23 +++ _Main/BL/Type_DispatchShiftSchedulingInformation/Function_CalcLineQuantity.qbl | 13 + _Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_Dispatch.qbl | 220 +++++++++++++++++++++++------- _Main/BL/Type_DispatchShiftSchedulingInformationDetail/_ROOT_Type_DispatchShiftSchedulingDetail.qbl | 9 + _Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_LineID.qbl | 2 _Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftStartDate.qbl | 2 _Main/BL/Type_DispatchShiftProductionInformation/Attribute_ProductionQuantity.qbl | 8 + /dev/null | 10 - _Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftDate.qbl | 2 _Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftVolume.qbl | 2 _Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_LineQuantity.qbl | 8 + _Main/BL/Relations/Relation_DispatchShiftSchedulingDetail_DispatchShiftSchedulingProduct_Dispat.qbl | 23 +++ _Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftName.qbl | 2 _Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftEndDate.qbl | 2 _Main/BL/Type_DispatchShiftProductionInformation/_ROOT_Type_DispatchShiftSchedulingProduct.qbl | 10 + _Main/BL/Relations/Relation_DispatchShiftSchedulingLine_RecycleBin_RecycleBin_DispatchShiftSche.qbl | 6 _Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_SingleShiftName.qbl | 2 _Main/BL/Type_DispatchShiftSchedulingInformationDetail/DefaultValue_SingleShiftName.qbl | 2 _Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ShiftName.qbl | 2 22 files changed, 302 insertions(+), 75 deletions(-) diff --git a/_Main/BL/Relations/Relation_DispatchShiftSchedulingDetail_DispatchShiftSchedulingProduct_Dispat.qbl b/_Main/BL/Relations/Relation_DispatchShiftSchedulingDetail_DispatchShiftSchedulingProduct_Dispat.qbl new file mode 100644 index 0000000..a6bd2e2 --- /dev/null +++ b/_Main/BL/Relations/Relation_DispatchShiftSchedulingDetail_DispatchShiftSchedulingProduct_Dispat.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation DispatchShiftSchedulingDetail_DispatchShiftSchedulingProduct_DispatchShiftSchedulingProduct_DispatchShiftSchedulingDetail +{ + #keys: '1[414996.1.172754837]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide DispatchShiftSchedulingProduct + { + #keys: '3[414996.1.172754839][414996.1.172754838][414996.1.172754840]' + Cardinality: '0to1' + ObjectDefinition: DispatchShiftSchedulingDetail + OwningSide: 'Reference' + } + RelationSide.RightSide DispatchShiftSchedulingDetail + { + #keys: '3[414996.1.172754842][414996.1.172754841][414996.1.172754843]' + Cardinality: '1toN' + ObjectDefinition: DispatchShiftSchedulingProduct + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Relations/Relation_DispatchShiftSchedulingInformation_RecycleBin_RecycleBin_DispatchSh.qbl b/_Main/BL/Relations/Relation_DispatchShiftSchedulingLine_RecycleBin_RecycleBin_DispatchShiftSche.qbl similarity index 66% rename from _Main/BL/Relations/Relation_DispatchShiftSchedulingInformation_RecycleBin_RecycleBin_DispatchSh.qbl rename to _Main/BL/Relations/Relation_DispatchShiftSchedulingLine_RecycleBin_RecycleBin_DispatchShiftSche.qbl index 6b167c2..96361e5 100644 --- a/_Main/BL/Relations/Relation_DispatchShiftSchedulingInformation_RecycleBin_RecycleBin_DispatchSh.qbl +++ b/_Main/BL/Relations/Relation_DispatchShiftSchedulingLine_RecycleBin_RecycleBin_DispatchShiftSche.qbl @@ -1,6 +1,6 @@ Quintiq file version 2.0 #parent: #root -Relation DispatchShiftSchedulingInformation_RecycleBin_RecycleBin_DispatchShiftSchedulingInformation +Relation DispatchShiftSchedulingLine_RecycleBin_RecycleBin_DispatchShiftSchedulingLine { #keys: '1[414996.1.67010175]' DefaultRelationStrategy @@ -10,10 +10,10 @@ { #keys: '3[414996.1.67010177][414996.1.67010176][414996.1.67010178]' Cardinality: '0to1' - ObjectDefinition: DispatchShiftSchedulingInformation + ObjectDefinition: DispatchShiftSchedulingLine OwningSide: 'Reference' } - RelationSide.RightSide DispatchShiftSchedulingInformation + RelationSide.RightSide DispatchShiftSchedulingLine { #keys: '3[414996.1.67010180][414996.1.67010179][414996.1.67010181]' Cardinality: '1toN' diff --git a/_Main/BL/Relations/Relation_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_Dispatch.qbl b/_Main/BL/Relations/Relation_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_Dispatch.qbl new file mode 100644 index 0000000..f940f60 --- /dev/null +++ b/_Main/BL/Relations/Relation_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_Dispatch.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_DispatchShiftSchedulingLine_DispatchShiftSchedulingProduct +{ + #keys: '1[414996.1.172754796]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide DispatchShiftSchedulingLine + { + #keys: '3[414996.1.172754798][414996.1.172754797][414996.1.172754799]' + Cardinality: '0to1' + ObjectDefinition: DispatchShiftSchedulingProduct + OwningSide: 'Reference' + } + RelationSide.RightSide DispatchShiftSchedulingProduct + { + #keys: '3[414996.1.172754801][414996.1.172754800][414996.1.172754802]' + Cardinality: '1toN' + ObjectDefinition: DispatchShiftSchedulingLine + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Type_DispatchShiftProductionInformation/Attribute_ProductID.qbl b/_Main/BL/Type_DispatchShiftProductionInformation/Attribute_ProductID.qbl new file mode 100644 index 0000000..a50e866 --- /dev/null +++ b/_Main/BL/Type_DispatchShiftProductionInformation/Attribute_ProductID.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute ProductID +{ + #keys: '3[414996.1.172754823][414996.1.172754822][414996.1.172754824]' + Description: '鐗╂枡鍙�' + ValueType: String +} diff --git a/_Main/BL/Type_DispatchShiftProductionInformation/Attribute_ProductionQuantity.qbl b/_Main/BL/Type_DispatchShiftProductionInformation/Attribute_ProductionQuantity.qbl new file mode 100644 index 0000000..5a0f9e3 --- /dev/null +++ b/_Main/BL/Type_DispatchShiftProductionInformation/Attribute_ProductionQuantity.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute ProductionQuantity +{ + #keys: '3[414996.1.172754827][414996.1.172754826][414996.1.172754828]' + Description: '浜у搧浜ч噺' + ValueType: Real +} diff --git a/_Main/BL/Type_DispatchShiftProductionInformation/_ROOT_Type_DispatchShiftSchedulingProduct.qbl b/_Main/BL/Type_DispatchShiftProductionInformation/_ROOT_Type_DispatchShiftSchedulingProduct.qbl new file mode 100644 index 0000000..602ae0f --- /dev/null +++ b/_Main/BL/Type_DispatchShiftProductionInformation/_ROOT_Type_DispatchShiftSchedulingProduct.qbl @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +Type DispatchShiftSchedulingProduct +{ + #keys: '5[414996.1.172754790][414996.1.172754788][0.0.0][414996.1.172754789][414996.1.172754791]' + BaseType: Object + Description: '涓嬪彂鐝鎺掍骇淇℃伅 -- 浜у搧' + StructuredName: 'DispatchShiftSchedulingProducts' +} diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ProductLine.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_LineID.qbl similarity index 87% rename from _Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ProductLine.qbl rename to _Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_LineID.qbl index 979ff60..0917dd7 100644 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ProductLine.qbl +++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_LineID.qbl @@ -1,6 +1,6 @@ Quintiq file version 2.0 #parent: #root -Attribute ProductLine +Attribute LineID { #keys: '3[414996.1.67010068][414996.1.67010067][414996.1.67010069]' Description: '浜х嚎' diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_LineQuantity.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_LineQuantity.qbl new file mode 100644 index 0000000..d2008b4 --- /dev/null +++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_LineQuantity.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute LineQuantity +{ + #keys: '3[414996.1.172754776][414996.1.172754775][414996.1.172754777]' + Description: '浜х嚎浜ч噺' + ValueType: Real +} diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Product.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Product.qbl deleted file mode 100644 index 526f3b4..0000000 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_Product.qbl +++ /dev/null @@ -1,8 +0,0 @@ -Quintiq file version 2.0 -#parent: #root -Attribute Product -{ - #keys: '3[414996.1.67010096][414996.1.67010095][414996.1.67010097]' - Description: '鐗╂枡鍙�' - ValueType: String -} diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftDate.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftDate.qbl index 534f432..329dde9 100644 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftDate.qbl +++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftDate.qbl @@ -2,7 +2,7 @@ #parent: #root Attribute ShiftDate { - #keys: '3[414996.1.67010092][414996.1.67010091][414996.1.67010093]' + #keys: '3[414996.1.172754933][414996.1.172754932][414996.1.172754934]' Description: '鐝鏃ユ湡' ValueType: Date } diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftName.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftName.qbl index 547534f..a3f2670 100644 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftName.qbl +++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftName.qbl @@ -2,7 +2,7 @@ #parent: #root Attribute ShiftName { - #keys: '3[414996.1.67010106][414996.1.67010105][414996.1.67010107]' + #keys: '3[414996.1.172754938][414996.1.172754937][414996.1.172754939]' Description: '鐝鍚嶇О' ValueType: String } diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ProductLine.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ShiftName.qbl similarity index 64% rename from _Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ProductLine.qbl rename to _Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ShiftName.qbl index 498dbce..ae6b93a 100644 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ProductLine.qbl +++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ShiftName.qbl @@ -2,5 +2,5 @@ #parent: #root DefaultValue { - TargetAttribute: ProductLine + TargetAttribute: ShiftName } diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Function_CalcLineQuantity.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Function_CalcLineQuantity.qbl new file mode 100644 index 0000000..7a16f2c --- /dev/null +++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Function_CalcLineQuantity.qbl @@ -0,0 +1,13 @@ +Quintiq file version 2.0 +#parent: #root +Function CalcLineQuantity +{ + TextBody: + [* + // Akari Oct-27-2024 (created) + + value := this.CalculateLineQuantity(); + + this.LineQuantity( value ); + *] +} diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Method_CalculateLineQuantity.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/Method_CalculateLineQuantity.qbl new file mode 100644 index 0000000..c5dde4a --- /dev/null +++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/Method_CalculateLineQuantity.qbl @@ -0,0 +1,11 @@ +Quintiq file version 2.0 +#parent: #root +Method CalculateLineQuantity () const declarative remote as Real +{ + TextBody: + [* + // Akari Oct-27-2024 (created) + value := sum( this,DispatchShiftSchedulingProduct,object,object.ProductionQuantity() ); + return value; + *] +} diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_Dispatch.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_Dispatch.qbl index 7ed2f4f..ff4dd5e 100644 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_Dispatch.qbl +++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_Dispatch.qbl @@ -10,7 +10,7 @@ TextBody: [* // Akari Sep-4-2024 (created) - owner.DispatchShiftSchedulingInformation( relflush ); + owner.DispatchShiftSchedulingLine( relflush ); macroPlan := offlinePlan.MacroPlan(); now := DateTime::Now(); @@ -30,26 +30,19 @@ unitIndexTree.Root().AddChild( unitHandle,i ); } - // productLines := selectuniquevalues( offlinePlan,NewOfflinePlanRow,row,row.ProductionLine() ); - productLinesQuantityNameValueTree := NamedValueTree::Create(); - traverse( offlinePlan,NewOfflinePlanRow,row ){ - traverse( row,NewOfflinePlanCell,cell, startDate <= cell.NewOfflinePlanColumn().StartDate() and endDate >= cell.NewOfflinePlanColumn().EndDate()){ - productLinesQuantityHandle := productLinesQuantityNameValueTree.GetHandle( row.ProductionLine() + cell.NewOfflinePlanColumn().StartDate().AsQUILL() ); - productLinesQuantity := guard( productLinesQuantityNameValueTree.Root().Child( productLinesQuantityHandle ),null( NamedValue )); - if( not isnull( productLinesQuantity )){ - productLinesQuantity.SetValue( productLinesQuantity.GetValueAsReal() + cell.Quantity() ); - }else{ - productLinesQuantityNameValueTree.Root().AddChild( productLinesQuantityHandle, cell.Quantity() ); - } - } - } + lines := construct( DispatchShiftSchedulingLines ); + lineIndexTree := NamedValueTree::Create(); + products := construct( DispatchShiftSchedulingProducts ); + productIndexTree := NamedValueTree::Create(); + + //productionDetails := construct( DispatchShiftSchedulingDetails ); + //productionDetailIndexTree := NamedValueTree::Create(); traverse( offlinePlan,NewOfflinePlanRow,row ){ - productID := row.ProductID(); - productLine := row.ProductionLine(); + line := null( DispatchShiftSchedulingLine ); factory := constnull( Unit ); { - unitHandle := unitIndexTree.GetHandle( productLine ); + unitHandle := unitIndexTree.GetHandle( row.ProductionLine() ); unitIndex := guard( unitIndexTree.Root().Child( unitHandle ), null( NamedValue )); if( not isnull( unitIndex )){ unit := units.Element( unitIndex.GetValueAsNumber() ); @@ -61,48 +54,169 @@ } factory := temp2; } + + lineHandle := lineIndexTree.GetHandle( row.ProductionLine() ); + lineIndex := guard( lineIndexTree.Root().Child( lineHandle ),null( NamedValue )); + if( isnull( lineIndex )){ + line := owner.DispatchShiftSchedulingLine( relnew,ID := IDHolder::GetGUID(),LineID := row.ProductionLine() ); + line.FactoryName( factory.Name() ); + line.InterfaceTime( now ); + line.VersionName( macroPlan.MDSMacroPlan().Description() ); + lines.Add( line ); + lineIndexTree.Root().AddChild( lineHandle,lines.Size() - 1 ); + }else{ + line := lines.Element( lineIndex.GetValueAsNumber() ); + } } + traverse( row,NewOfflinePlanCell,cell, startDate <= cell.NewOfflinePlanColumn().StartDate() and endDate >= cell.NewOfflinePlanColumn().EndDate()){ - productLinesQuantityHandle := productLinesQuantityNameValueTree.GetHandle( row.ProductionLine() + cell.NewOfflinePlanColumn().StartDate().AsQUILL() ); - productLinesQuantity := guard( productLinesQuantityNameValueTree.Root().Child( productLinesQuantityHandle ).GetValueAsReal(),0.0 ); - - shiftDate := cell.NewOfflinePlanColumn().StartDate(); - shiftName := cell.ShiftPatternName(); - shiftVolume := cell.Quantity(); - shiftDayTime := constnull( ShiftDayTime ); + product := null( DispatchShiftSchedulingProduct ); { - shiftPatternHandle := shiftPatternIndexTree.GetHandle( shiftName ); - shiftPatternIndex := guard( shiftPatternIndexTree.Root().Child( shiftPatternHandle ),null( NamedValue )); - if( not isnull( shiftPatternIndex )){ - shiftPattern := shiftPatterns.Element( shiftPatternIndex.GetValueAsNumber() ); - shiftDayTime := select( shiftPattern,ShiftDayTime,object,true ); + productHandle := productIndexTree.GetHandle( row.ProductionLine() + row.ProductID() + cell.NewOfflinePlanColumn().StartDate().AsQUILL() ); + productIndex := guard( productIndexTree.Root().Child( productHandle ),null( NamedValue )); + if( isnull( productIndex )){ + product := line.DispatchShiftSchedulingProduct( relnew,ProductID := row.ProductID() ); + product.ProductionQuantity( cell.Quantity() ); + line.ShiftDate( cell.NewOfflinePlanColumn().StartDate() ); + line.ShiftName( cell.ShiftPatternName() ); + products.Add( product ); + productIndexTree.Root().AddChild( productHandle,products.Size() - 1 ); + }else{ + product := products.Element( productIndex.GetValueAsNumber() ); } - } - if( shiftVolume <> 0 ){ - shiftSchedulingInformations := DispatchShiftSchedulingInformation::SplitShifts( owner,shiftName,shiftVolume,productLinesQuantity ); - - traverse( shiftSchedulingInformations,Elements,shiftSchedulingInformation ){ - shiftSchedulingInformation.InterfaceTime( now ); - shiftSchedulingInformation.VersionName( macroPlan.MDSMacroPlan().Description() ); - shiftSchedulingInformation.Product( productID ); - shiftSchedulingInformation.ProductLine( productLine ); - shiftSchedulingInformation.ShiftDate( shiftDate ); - // shiftSchedulingInformation.InterfaceTime( now ); - // shiftSchedulingInformation.InterfaceTime( now ); - // shiftSchedulingInformation.InterfaceTime( now ); - // shiftSchedulingInformation.InterfaceTime( now ); - - - if( not isnull( shiftDayTime )){ - shiftSchedulingInformation.ShiftStartDate( shiftDayTime.StartDateTime() ); - shiftSchedulingInformation.ShiftEndDate( shiftDayTime.EndDateTIme() ); - } - if( not isnull( factory )){ - shiftSchedulingInformation.FactoryName( factory.Name() ); - } - } } } } + + traverse( lines,Elements,line ){ + line.CalculateLineQuantity(); + + // 1000 + lineQuantity := line.LineQuantity(); + + tempProducts := selectsortedset( line,DispatchShiftSchedulingProduct,object,object.ProductionQuantity() ); + + if( line.ShiftName() = "3" ){ + singleShiftVolume1 := lineQuantity / 3; + singleShiftVolume2 := lineQuantity / 3; + singleShiftVolume3 := lineQuantity / 3; + traverse( tempProducts,Elements,product ){ + productionQuantity := product.ProductionQuantity(); + + if( singleShiftVolume1 > 0 and productionQuantity > 0){ + tempProductQuantity := singleShiftVolume1 - productionQuantity; + detail := product.DispatchShiftSchedulingDetail( relnew,ShiftVolume := ifexpr( tempProductQuantity > 0 ,productionQuantity,singleShiftVolume1 ) ,SingleShiftName := "鐧界彮"); + singleShiftVolume1 := singleShiftVolume1 - productionQuantity; + productionQuantity := productionQuantity - detail.ShiftVolume(); + }else if(singleShiftVolume2 > 0 and productionQuantity > 0){ + tempProductQuantity := singleShiftVolume2 - productionQuantity; + detail := product.DispatchShiftSchedulingDetail( relnew,ShiftVolume := ifexpr( tempProductQuantity > 0 ,productionQuantity,singleShiftVolume2 ) ,SingleShiftName := "浜岀彮"); + singleShiftVolume2 := singleShiftVolume2 - productionQuantity; + productionQuantity := productionQuantity - detail.ShiftVolume(); + }else if(singleShiftVolume3 > 0 and productionQuantity > 0){ + tempProductQuantity := singleShiftVolume3 - productionQuantity; + detail := product.DispatchShiftSchedulingDetail( relnew,ShiftVolume := ifexpr( tempProductQuantity > 0 ,productionQuantity,singleShiftVolume3 ) ,SingleShiftName := "浜岀彮"); + singleShiftVolume3 := singleShiftVolume3 - productionQuantity; + productionQuantity := productionQuantity - detail.ShiftVolume(); + } + } + + }else if( line.ShiftName() = "2" ){ + // 500 + singleShiftVolume1 := lineQuantity / 2; + singleShiftVolume2 := lineQuantity / 2; + traverse( tempProducts,Elements,product ){ + productionQuantity := product.ProductionQuantity(); + + if( singleShiftVolume1 > 0 and productionQuantity > 0){ + tempProductQuantity := singleShiftVolume1 - productionQuantity; + detail := product.DispatchShiftSchedulingDetail( relnew,ShiftVolume := ifexpr( tempProductQuantity > 0 ,productionQuantity,singleShiftVolume1 ) ,SingleShiftName := "鐧界彮"); + singleShiftVolume1 := singleShiftVolume1 - productionQuantity; + productionQuantity := productionQuantity - detail.ShiftVolume(); + }else if(singleShiftVolume2 > 0 and productionQuantity > 0){ + tempProductQuantity := singleShiftVolume2 - productionQuantity; + detail := product.DispatchShiftSchedulingDetail( relnew,ShiftVolume := ifexpr( tempProductQuantity > 0 ,productionQuantity,singleShiftVolume1 ) ,SingleShiftName := "浜岀彮"); + singleShiftVolume2 := singleShiftVolume2 - productionQuantity; + productionQuantity := productionQuantity - detail.ShiftVolume(); + } + } + + }else if( line.ShiftName() = "1" ){ + singleShiftVolume1 := lineQuantity / 1; + traverse( tempProducts,Elements,product ){ + productionQuantity := product.ProductionQuantity(); + if( singleShiftVolume1 > 0 and productionQuantity > 0){ + tempProductQuantity := singleShiftVolume1 - productionQuantity; + detail := product.DispatchShiftSchedulingDetail( relnew,ShiftVolume := ifexpr( tempProductQuantity > 0 ,productionQuantity,singleShiftVolume1 ) ,SingleShiftName := "鐧界彮"); + singleShiftVolume1 := singleShiftVolume1 - productionQuantity; + productionQuantity := productionQuantity - detail.ShiftVolume(); + } + } + + }else{ + // singleShiftVolume := lineQuantity / 1; + } + } + + //traverse( offlinePlan,NewOfflinePlanRow,row ){ + // productID := row.ProductID(); + // productLine := row.ProductionLine(); + // factory := constnull( Unit ); + // { + // unitHandle := unitIndexTree.GetHandle( productLine ); + // unitIndex := guard( unitIndexTree.Root().Child( unitHandle ), null( NamedValue )); + // if( not isnull( unitIndex )){ + // unit := units.Element( unitIndex.GetValueAsNumber() ); + // temp1 := unit; + // temp2 := unit.Parent(); + // while( not isnull( temp1.Parent())){ + // temp2 := temp1; + // temp1 := temp1.Parent(); + // } + // factory := temp2; + // } + // } + // traverse( row,NewOfflinePlanCell,cell, startDate <= cell.NewOfflinePlanColumn().StartDate() and endDate >= cell.NewOfflinePlanColumn().EndDate()){ + // productLinesQuantityHandle := productLinesQuantityNameValueTree.GetHandle( row.ProductionLine() + cell.NewOfflinePlanColumn().StartDate().AsQUILL() ); + // productLinesQuantity := guard( productLinesQuantityNameValueTree.Root().Child( productLinesQuantityHandle ).GetValueAsReal(),0.0 ); + // + // shiftDate := cell.NewOfflinePlanColumn().StartDate(); + // shiftName := cell.ShiftPatternName(); + // shiftVolume := cell.Quantity(); + // shiftDayTime := constnull( ShiftDayTime ); + // { + // shiftPatternHandle := shiftPatternIndexTree.GetHandle( shiftName ); + // shiftPatternIndex := guard( shiftPatternIndexTree.Root().Child( shiftPatternHandle ),null( NamedValue )); + // if( not isnull( shiftPatternIndex )){ + // shiftPattern := shiftPatterns.Element( shiftPatternIndex.GetValueAsNumber() ); + // shiftDayTime := select( shiftPattern,ShiftDayTime,object,true ); + // } + // } + // if( shiftVolume <> 0 ){ + // shiftSchedulingInformations := DispatchShiftSchedulingLine::SplitShifts( owner,shiftName,shiftVolume,productLinesQuantity ); + // + // traverse( shiftSchedulingInformations,Elements,shiftSchedulingInformation ){ + // shiftSchedulingInformation.InterfaceTime( now ); + // shiftSchedulingInformation.VersionName( macroPlan.MDSMacroPlan().Description() ); + // shiftSchedulingInformation.Product( productID ); + // shiftSchedulingInformation.ProductLine( productLine ); + // shiftSchedulingInformation.ShiftDate( shiftDate ); + //// shiftSchedulingInformation.InterfaceTime( now ); + //// shiftSchedulingInformation.InterfaceTime( now ); + //// shiftSchedulingInformation.InterfaceTime( now ); + //// shiftSchedulingInformation.InterfaceTime( now ); + // + // + // if( not isnull( shiftDayTime )){ + // shiftSchedulingInformation.ShiftStartDate( shiftDayTime.StartDateTime() ); + // shiftSchedulingInformation.ShiftEndDate( shiftDayTime.EndDateTIme() ); + // } + // if( not isnull( factory )){ + // shiftSchedulingInformation.FactoryName( factory.Name() ); + // } + // } + // } + // } + //} *] } diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_SplitShifts.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_SplitShifts.qbl deleted file mode 100644 index 7a00e46..0000000 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/StaticMethod_SplitShifts.qbl +++ /dev/null @@ -1,57 +0,0 @@ -Quintiq file version 2.0 -#parent: #root -StaticMethod SplitShifts ( - RecycleBin owner, - String shiftName, - Real shiftVolume, - Real productLinesQuantity -) as owning DispatchShiftSchedulingInformations -{ - TextBody: - [* - // Akari Oct-9-2024 (created) - shiftSchedulingInformations := construct( DispatchShiftSchedulingInformations ); - if( shiftName = "3" ){ - shiftQuantity := productLinesQuantity / 3 ; - - shiftSchedulingInformation1 := owner.DispatchShiftSchedulingInformation( relnew ,ID := IDHolder::GetGUID(),ShiftName := shiftName,ShiftVolume := ifexpr( shiftVolume >= shiftQuantity, shiftQuantity, shiftVolume ) ); - shiftSchedulingInformation1.SingleShiftName( "鐧界彮" ); - shiftSchedulingInformations.Add( shiftSchedulingInformation1 ); - - shiftVolume := shiftVolume - shiftQuantity; - - shiftSchedulingInformation2 := owner.DispatchShiftSchedulingInformation( relnew ,ID := IDHolder::GetGUID(),ShiftName := shiftName,ShiftVolume := ifexpr( shiftVolume >= shiftQuantity, shiftQuantity, shiftVolume ) ); - shiftSchedulingInformation2.SingleShiftName( "浜岀彮" ); - shiftSchedulingInformations.Add( shiftSchedulingInformation2 ); - - shiftVolume := shiftVolume - shiftQuantity; - - shiftSchedulingInformation3 := owner.DispatchShiftSchedulingInformation( relnew ,ID := IDHolder::GetGUID(),ShiftName := shiftName,ShiftVolume := ifexpr( shiftVolume >= shiftQuantity, shiftQuantity, shiftVolume ) ); - shiftSchedulingInformation3.SingleShiftName( "涓夌彮" ); - shiftSchedulingInformations.Add( shiftSchedulingInformation3 ); - }else if( shiftName = "2" ){ - shiftQuantity := productLinesQuantity / 2 ; - - shiftSchedulingInformation1 := owner.DispatchShiftSchedulingInformation( relnew ,ID := IDHolder::GetGUID(),ShiftName := shiftName,ShiftVolume := ifexpr( shiftVolume >= shiftQuantity, shiftQuantity, shiftVolume )); - shiftSchedulingInformation1.SingleShiftName( "鐧界彮" ); - shiftSchedulingInformations.Add( shiftSchedulingInformation1 ); - - shiftVolume := shiftVolume - shiftQuantity; - - shiftSchedulingInformation2 := owner.DispatchShiftSchedulingInformation( relnew ,ID := IDHolder::GetGUID(),ShiftName := shiftName,ShiftVolume := ifexpr( shiftVolume >= shiftQuantity, shiftQuantity, shiftVolume ) ); - shiftSchedulingInformation2.SingleShiftName( "浜岀彮" ); - shiftSchedulingInformations.Add( shiftSchedulingInformation2 ); - }else if( shiftName = "1" ){ - shiftSchedulingInformation1 := owner.DispatchShiftSchedulingInformation( relnew ,ID := IDHolder::GetGUID(),ShiftName := shiftName,ShiftVolume := shiftVolume ); - shiftSchedulingInformation1.SingleShiftName( "鐧界彮" ); - shiftSchedulingInformations.Add( shiftSchedulingInformation1 ); - }else{ - shiftSchedulingInformation1 := owner.DispatchShiftSchedulingInformation( relnew ,ID := IDHolder::GetGUID(),ShiftName := shiftName,ShiftVolume := shiftVolume ); - shiftSchedulingInformation1.SingleShiftName( "" ); - shiftSchedulingInformations.Add( shiftSchedulingInformation1 ); - } - - - return &shiftSchedulingInformations; - *] -} diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/_ROOT_Type_DispatchShiftSchedulingInformation.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/_ROOT_Type_DispatchShiftSchedulingInformation.qbl deleted file mode 100644 index 34cb1a1..0000000 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/_ROOT_Type_DispatchShiftSchedulingInformation.qbl +++ /dev/null @@ -1,10 +0,0 @@ -Quintiq file version 2.0 -#root -#parent: #DomainModel -Type DispatchShiftSchedulingInformation -{ - #keys: '5[414996.1.67010064][414996.1.67010062][0.0.0][414996.1.67010063][414996.1.67010065]' - BaseType: Object - Description: '涓嬪彂鐝鎺掍骇淇℃伅' - StructuredName: 'DispatchShiftSchedulingInformations' -} diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/_ROOT_Type_DispatchShiftSchedulingLine.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformation/_ROOT_Type_DispatchShiftSchedulingLine.qbl new file mode 100644 index 0000000..a66ae04 --- /dev/null +++ b/_Main/BL/Type_DispatchShiftSchedulingInformation/_ROOT_Type_DispatchShiftSchedulingLine.qbl @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +Type DispatchShiftSchedulingLine +{ + #keys: '5[414996.1.67010064][414996.1.67010062][0.0.0][414996.1.67010063][414996.1.67010065]' + BaseType: Object + Description: '涓嬪彂鐝鎺掍骇淇℃伅 -- 浜х嚎' + StructuredName: 'DispatchShiftSchedulingLines' +} diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftEndDate.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftEndDate.qbl similarity index 63% rename from _Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftEndDate.qbl rename to _Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftEndDate.qbl index f1bdbde..ca9bb90 100644 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftEndDate.qbl +++ b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftEndDate.qbl @@ -2,7 +2,7 @@ #parent: #root Attribute ShiftEndDate { - #keys: '3[414996.1.67010149][414996.1.67010148][414996.1.67010150]' + #keys: '3[414996.1.172754762][414996.1.172754761][414996.1.172754763]' Description: '鐝鐨勭粨鏉熸椂闂�' ValueType: DateTime } diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftStartDate.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftStartDate.qbl similarity index 63% rename from _Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftStartDate.qbl rename to _Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftStartDate.qbl index 6ee07d4..db79566 100644 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftStartDate.qbl +++ b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftStartDate.qbl @@ -2,7 +2,7 @@ #parent: #root Attribute ShiftStartDate { - #keys: '3[414996.1.67010139][414996.1.67010138][414996.1.67010140]' + #keys: '3[414996.1.172754767][414996.1.172754766][414996.1.172754768]' Description: '鐝璧峰鏃堕棿' ValueType: DateTime } diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftVolume.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftVolume.qbl similarity index 61% rename from _Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftVolume.qbl rename to _Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftVolume.qbl index 520c3d9..bbff2f4 100644 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_ShiftVolume.qbl +++ b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_ShiftVolume.qbl @@ -2,7 +2,7 @@ #parent: #root Attribute ShiftVolume { - #keys: '3[414996.1.67010126][414996.1.67010125][414996.1.67010127]' + #keys: '3[414996.1.172754772][414996.1.172754771][414996.1.172754773]' Description: '鍗曠彮娆′骇閲�' ValueType: Real } diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_SingleShiftName.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_SingleShiftName.qbl similarity index 62% rename from _Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_SingleShiftName.qbl rename to _Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_SingleShiftName.qbl index a426d36..bed9e5e 100644 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/Attribute_SingleShiftName.qbl +++ b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/Attribute_SingleShiftName.qbl @@ -2,7 +2,7 @@ #parent: #root Attribute SingleShiftName { - #keys: '3[414996.1.67010116][414996.1.67010115][414996.1.67010117]' + #keys: '3[414996.1.172754757][414996.1.172754756][414996.1.172754758]' Description: '鍗曠彮娆″悕绉�' ValueType: String } diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ProductLine.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/DefaultValue_SingleShiftName.qbl similarity index 61% copy from _Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ProductLine.qbl copy to _Main/BL/Type_DispatchShiftSchedulingInformationDetail/DefaultValue_SingleShiftName.qbl index 498dbce..4542472 100644 --- a/_Main/BL/Type_DispatchShiftSchedulingInformation/DefaultValue_ProductLine.qbl +++ b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/DefaultValue_SingleShiftName.qbl @@ -2,5 +2,5 @@ #parent: #root DefaultValue { - TargetAttribute: ProductLine + TargetAttribute: SingleShiftName } diff --git a/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/_ROOT_Type_DispatchShiftSchedulingDetail.qbl b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/_ROOT_Type_DispatchShiftSchedulingDetail.qbl new file mode 100644 index 0000000..b488d17 --- /dev/null +++ b/_Main/BL/Type_DispatchShiftSchedulingInformationDetail/_ROOT_Type_DispatchShiftSchedulingDetail.qbl @@ -0,0 +1,9 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +Type DispatchShiftSchedulingDetail +{ + #keys: '5[414996.1.172754720][414996.1.172754718][0.0.0][414996.1.172754719][414996.1.172754721]' + BaseType: Object + StructuredName: 'DispatchShiftSchedulingDetails' +} -- Gitblit v1.9.3