From 9eb69f8e68fbaea2f6becc92d3b84236084ab04b Mon Sep 17 00:00:00 2001 From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com> Date: 星期二, 15 十月 2024 02:10:43 +0800 Subject: [PATCH] 修改批量修改shift pattern功能 --- _Main/BL/Type_LocalTool/StaticMethod_BatchSetUnitShiftPattern0.qbl | 46 +++++++ _Main/BL/Type_LocalTool/StaticMethod_BatchSetUnitShiftPattern.qbl | 26 ++++ _Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Response_PanelDaily_478_bApply568_OnClick#952.def | 2 _Main/UI/MacroPlannerWebApp/Views/Time_Capacities.vw | 24 +++ _Main/UI/MacroPlannerWebApp/Views/BatchSetShiftPattern.vw | 107 +++++++++++++++++ _Main/BL/Type_ProductionLineBatchData/Method_OnOK.qbl | 77 ------------ _Main/BL/Type_LocalTool/StaticMethod_SetUnitShiftPattern.qbl | 33 +++++ 7 files changed, 233 insertions(+), 82 deletions(-) diff --git a/_Main/BL/Type_LocalTool/StaticMethod_BatchSetUnitShiftPattern.qbl b/_Main/BL/Type_LocalTool/StaticMethod_BatchSetUnitShiftPattern.qbl index 7b369a3..31bd0a7 100644 --- a/_Main/BL/Type_LocalTool/StaticMethod_BatchSetUnitShiftPattern.qbl +++ b/_Main/BL/Type_LocalTool/StaticMethod_BatchSetUnitShiftPattern.qbl @@ -13,6 +13,31 @@ [* // Akari Oct-10-2024 (created) owner := unit.MacroPlan(); + + saveDays := construct( Dates ); + flag := startDate.StartOfNextWeek(); + for( i := startDate; i<endDate; i := i + 1 ){ + if( i < flag ){ + saveDays.Add( i ); + }else{ + temp := skipWeek - 1; + while( temp > 0 ){ + i := flag; + flag := i.StartOfNextWeek(); + temp--; + + info( i.Format( "Y-M2-D2") ); + info( flag.Format( "Y-M2-D2") ); + } + } + } + + info( "----------------------------"); + + traverse( saveDays,Elements,element ){ + info( element.Format( "Y-M2-D2")); + } + dayPeriod_MPs := selectsortedset( owner,Period_MP,period_MP, period_MP.TimeUnit() = 'Day' and period_MP.StartDate() >= startDate and @@ -22,6 +47,7 @@ period_MP.StartDate() >= startDate and period_MP.EndDate() <= endDate and exists( weekdays, Elements,dayOfWeek,dayOfWeek = period_MP.StartDate().DayOfWeek() ),period_MP.StartDate()); + if( dayPeriod_MPs.Size() > 0 ){ unitPeriodTimes := selectset( unit,UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,exists( dayPeriod_MPs,Elements,period_MP,period_MP = unitPeriodTime.Period_MP())); if( unitPeriodTimes.Size() > 0 ){ diff --git a/_Main/BL/Type_LocalTool/StaticMethod_BatchSetUnitShiftPattern0.qbl b/_Main/BL/Type_LocalTool/StaticMethod_BatchSetUnitShiftPattern0.qbl new file mode 100644 index 0000000..8e45588 --- /dev/null +++ b/_Main/BL/Type_LocalTool/StaticMethod_BatchSetUnitShiftPattern0.qbl @@ -0,0 +1,46 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod BatchSetUnitShiftPattern ( + Unit unit, + ShiftPattern shiftPattern, + Date startDate, + Date endDate, + Number skipDay +) +{ + TextBody: + [* + // Akari Oct-10-2024 (created) + owner := unit.MacroPlan(); + + saveDays := construct( Dates ); + for( i := startDate; i < endDate; i := i + skipDay ){ + saveDays.Add( i ); + } + + + dayPeriod_MPs := selectsortedset( owner,Period_MP,period_MP, + period_MP.TimeUnit() = 'Day' and + period_MP.StartDate() >= startDate and + period_MP.EndDate() <= endDate and exists( saveDays, Elements,day,day = period_MP.StartDate()) ,period_MP.StartDate()); + weekPeriod_MPs := selectsortedset( owner,Period_MP,period_MP, + period_MP.TimeUnit() = 'Week' and + period_MP.StartDate() >= startDate and + period_MP.EndDate() <= endDate and exists( saveDays, Elements,day,day = period_MP.StartDate()) ,period_MP.StartDate()); + + + if( dayPeriod_MPs.Size() > 0 ){ + unitPeriodTimes := selectset( unit,UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,exists( dayPeriod_MPs,Elements,period_MP,period_MP = unitPeriodTime.Period_MP())); + if( unitPeriodTimes.Size() > 0 ){ + info( unitPeriodTimes.Size() ); + LocalTool::SetUnitShiftPattern( owner,unitPeriodTimes,shiftPattern ); + } + } + if( weekPeriod_MPs.Size() <> 0 ){ + unitPeriodTimes := selectset( unit,UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,exists( weekPeriod_MPs,Elements,period_MP,period_MP = unitPeriodTime.Period_MP())); + if( unitPeriodTimes.Size() > 0 ){ + LocalTool::SetUnitShiftPattern( owner,unitPeriodTimes,shiftPattern ); + } + } + *] +} diff --git a/_Main/BL/Type_LocalTool/StaticMethod_SetUnitShiftPattern.qbl b/_Main/BL/Type_LocalTool/StaticMethod_SetUnitShiftPattern.qbl index 92b0e44..52778d8 100644 --- a/_Main/BL/Type_LocalTool/StaticMethod_SetUnitShiftPattern.qbl +++ b/_Main/BL/Type_LocalTool/StaticMethod_SetUnitShiftPattern.qbl @@ -47,6 +47,21 @@ } } + traverse( unitPeriodTimes,Elements,unitPeriodTime,isnull( unitPeriodTime.UnitAvailability())){ + // UnitAvailability::Create( unitPeriodTime.Unit(), + // unitPeriodTime.Start(), + // timeunit, + // maintenance, + // efficiency, + // allocation, + // shiftPattern, + // maxloadpercentage, + // nrofunitopen, + // minloadthreshold, + // true ); + unitPeriodTime.CalcUnitAvailability(); + } + isbatchedit := unitPeriodTimes.Size() > 1; UnitAvailability::CreateOrUpdateForUnitPeriodTimes( unitPeriodTimes, not isbatchedit or false, @@ -66,5 +81,23 @@ not isbatchedit or false, minloadthreshold ); + //UnitAvailability::CreateOrUpdateForUnitPeriodTimes( unitPeriodTimes, + // not isbatchedit or CheckBoxBatchEditMaintenance.Checked(), + // data.TimeUnit(), + // data.Maintenance(), + // not isbatchedit or CheckBoxBatchEditEfficiency.Checked(), + // data.Efficiency(), + // false, + // data.Allocation(), + // not isbatchedit or CheckBoxBatchEditShiftPattern.Checked(), + // data.ShiftPattern(), + // not isbatchedit or CheckBoxBatchEditMaxLoadPercentage.Checked(), + // data.MaximumLoadPercentage(), + // not isbatchedit or CheckBoxBatchEditNrOfUnitsOpen.Checked(), + // data.NrOfUnitsOpen(), + // DataHolderFromThisPeriodOnward.Data(), + // not isbatchedit or CheckBoxBatchEditMinimumLoadThreshold.Checked(), + // data.MinimumLoadThreshold() + // ); *] } diff --git a/_Main/BL/Type_ProductionLineBatchData/Method_OnOK.qbl b/_Main/BL/Type_ProductionLineBatchData/Method_OnOK.qbl index 8c9012e..8c9b634 100644 --- a/_Main/BL/Type_ProductionLineBatchData/Method_OnOK.qbl +++ b/_Main/BL/Type_ProductionLineBatchData/Method_OnOK.qbl @@ -8,81 +8,6 @@ TextBody: [* // rislai Jun-9-2024 (created) - firstElement := minselect( unitPeriodTimes, Elements, e, true, e.Start() ); - - start := this.MacroPlan().Start(); - timeunit := this.MacroPlan().StartOfPlanningPeriod().TimeUnit(); - maintenance := Duration::Zero(); - efficiency := 1.0; - allocation := 1.0; - - maxloadpercentage := this.MacroPlan().GlobalParameters_MP().DefaultMaxLoadPercentage(); - nrofunitopen := 1; - minloadthreshold := 0.0; - - if( not isnull( firstElement ) ){ - // To inherit the value from last unit availability while creating a new unit availability - unitavailability := firstElement.UnitAvailability(); - start := firstElement.Start(); - - if( not isnull( unitavailability ) ){ - timeunit := unitavailability.TimeUnit(); - maintenance := unitavailability.Maintenance(); - efficiency := unitavailability.Efficiency(); - allocation := unitavailability.Allocation(); - - maxloadpercentage := unitavailability.MaximumLoadPercentage(); - nrofunitopen := unitavailability.NrOfUnitsOpen(); - minloadthreshold := unitavailability.MinimumLoadThreshold(); - }else{ - timeunit := firstElement.Period_MP().TimeUnit(); - maintenance := firstElement.Maintenance(); - efficiency := firstElement.Efficiency(); - allocation := firstElement.Allocation(); - - maxloadpercentage := firstElement.MaximumLoadPercentage(); - nrofunitopen := firstElement.NrOfOpen(); - minloadthreshold := firstElement.MinimumLoadThreshold(); - } - } - - isbatchedit := unitPeriodTimes.Size() > 1; - UnitAvailability::CreateOrUpdateForUnitPeriodTimes( unitPeriodTimes, - not isbatchedit or false, - timeunit, - maintenance, - not isbatchedit or false, - efficiency, - false, - allocation, - not isbatchedit or true, - shiftPattern, - not isbatchedit or false, - maxloadpercentage, - not isbatchedit or false, - nrofunitopen, - false, - not isbatchedit or false, - minloadthreshold - ); - - //UnitAvailability::CreateOrUpdateForUnitPeriodTimes( unitPeriodTimes, - // not isbatchedit or CheckBoxBatchEditMaintenance.Checked(), - // data.TimeUnit(), - // data.Maintenance(), - // not isbatchedit or CheckBoxBatchEditEfficiency.Checked(), - // data.Efficiency(), - // false, - // data.Allocation(), - // not isbatchedit or CheckBoxBatchEditShiftPattern.Checked(), - // data.ShiftPattern(), - // not isbatchedit or CheckBoxBatchEditMaxLoadPercentage.Checked(), - // data.MaximumLoadPercentage(), - // not isbatchedit or CheckBoxBatchEditNrOfUnitsOpen.Checked(), - // data.NrOfUnitsOpen(), - // DataHolderFromThisPeriodOnward.Data(), - // not isbatchedit or CheckBoxBatchEditMinimumLoadThreshold.Checked(), - // data.MinimumLoadThreshold() - // ); + LocalTool::SetUnitShiftPattern( this.MacroPlan(),unitPeriodTimes,shiftPattern ); *] } diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Response_PanelDaily_478_bApply568_OnClick\043952.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Response_PanelDaily_478_bApply568_OnClick\043952.def" index b81be71..e6d1cec 100644 --- "a/_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Response_PanelDaily_478_bApply568_OnClick\043952.def" +++ "b/_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Response_PanelDaily_478_bApply568_OnClick\043952.def" @@ -12,7 +12,7 @@ [* skipDay := [Number]efDaily.Text(); - // LocalTool::BatchSetUnitShiftPattern( dhSelectUnit.Data(),ddlShiftPattern.Data(),dsStartDate.Date(),dsEndDate.Date(),weekdays ,skipWeek ); + LocalTool::BatchSetUnitShiftPattern( dhSelectUnit.Data(),ddlShiftPattern.Data(),dsStartDate.Date(),dsEndDate.Date() ,skipDay ); WebMessageBox::Success( "Success"); *] } diff --git a/_Main/UI/MacroPlannerWebApp/Views/BatchSetShiftPattern.vw b/_Main/UI/MacroPlannerWebApp/Views/BatchSetShiftPattern.vw index e1a08c5..961b5b1 100644 --- a/_Main/UI/MacroPlannerWebApp/Views/BatchSetShiftPattern.vw +++ b/_Main/UI/MacroPlannerWebApp/Views/BatchSetShiftPattern.vw @@ -4,6 +4,88 @@ { forms { + form_legacy_2 + { + title: 'Time Capacities' + shown: true + componentID: 'FormTimeCapacities' + layout + { + mode: 'open' + rowPosition: 13 + rowSpan: 10 + columnPosition: 1 + columnSpan: 12 + } + components + { + FormTimeCapacities_PanelMatrix + { + sizeRatio: 1 + } + FormTimeCapacities_MatrixEditorTimeCapacities + { + gridColor: '#c4c4c4' + totalHeaderWidth: 449 + attributeHeaderWidthRatio: 0.6 + nameHeaderWidthRatio: 0.4 + columnWidth: 100 + horizontalGrid: true + verticalGrid: true + backendState + { + componentId: 'QLibMacroPlannerWebUI::FormTimeCapacities.MatrixEditorTimeCapacities' + state + { + cells + { + attributes + { + attribute_ShiftPatternName + { + type: 'MatrixEditorWebApiCellDataModelInterest' + index: 0 + rowsubtotal: '' + columnsubtotal: '' + attribute: 'ShiftPatternName' + } + attribute_Efficiency + { + type: 'MatrixEditorWebApiCellDataModelInterest' + index: 1 + rowsubtotal: '' + columnsubtotal: '' + attribute: 'Efficiency' + } + attribute_TotalAvailableCapacity + { + type: 'MatrixEditorWebApiCellDataModelInterest' + index: 2 + rowsubtotal: '' + columnsubtotal: '' + attribute: 'TotalAvailableCapacity' + } + } + } + columns + { + sorting + { + criteria: "datamember:'StartDate'" + } + } + rows + { + sorting + { + criteria: "datamember:'DisplayIndex'" + } + } + } + } + } + } + } form_FormProductionLineBatchSetShiftPattern { title: 'QMacroPlanner::FormProductionLineBatchSetShiftPattern' @@ -13,9 +95,9 @@ { mode: 'open' rowPosition: 1 - rowSpan: 23 + rowSpan: 12 columnPosition: 1 - columnSpan: 9 + columnSpan: 10 } components { @@ -48,6 +130,27 @@ { sizeRatio: 1 } + FormProductionLineBatchSetShiftPattern_PanelRight445 + { + sizeRatio: 1 + activeChild: 'PanelWeekly' + } + FormProductionLineBatchSetShiftPattern_PanelDaily + { + sizeRatio: 1 + } + FormProductionLineBatchSetShiftPattern_PanelDaily819 + { + sizeRatio: 1 + } + FormProductionLineBatchSetShiftPattern_PanelWeekly + { + sizeRatio: 1 + } + FormProductionLineBatchSetShiftPattern_PanelWeekly996 + { + sizeRatio: 1 + } } } form_FormKPI diff --git a/_Main/UI/MacroPlannerWebApp/Views/Time_Capacities.vw b/_Main/UI/MacroPlannerWebApp/Views/Time_Capacities.vw index e44aa89..2362951 100644 --- a/_Main/UI/MacroPlannerWebApp/Views/Time_Capacities.vw +++ b/_Main/UI/MacroPlannerWebApp/Views/Time_Capacities.vw @@ -101,7 +101,7 @@ FormProductionLineBatchData_DataSetLevelProductionLineBatchData { groupDepth: -1 - sort: 'StartDate' + sort: 'DESC:Unit3.Name' column_ImageIsEnable { columnId: 'ImageIsEnable' @@ -147,12 +147,21 @@ subtotals: '' width: 150 } + column_Unit3_Name + { + columnId: 'Unit3.Name' + dataPath: 'Unit3.Name' + dataType: 'string' + index: 5 + subtotals: '' + width: 150 + } column_ShiftPattern1_Name { columnId: 'ShiftPattern1.Name' dataPath: 'ShiftPattern1.Name' dataType: 'string' - index: 5 + index: 6 subtotals: '' width: 112 } @@ -161,10 +170,19 @@ columnId: 'ShiftPattern2.Name' dataPath: 'ShiftPattern2.Name' dataType: 'string' - index: 6 + index: 7 subtotals: '' width: 112 } + column_ShiftPattern3_Name + { + columnId: 'ShiftPattern3.Name' + dataPath: 'ShiftPattern3.Name' + dataType: 'string' + index: 8 + subtotals: '' + width: 150 + } } } } -- Gitblit v1.9.3