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