ItEr49S10CUVisualizacionResponsabilidadesTRaballoNaPlanificacionItEr48S10: Using a work hours calculated from the resources plus the task in order to calculate if there are enough hours
This commit is contained in:
parent
9fb872d2e9
commit
809244742d
2 changed files with 44 additions and 4 deletions
|
|
@ -37,6 +37,7 @@ import org.hibernate.validator.NotNull;
|
|||
import org.joda.time.LocalDate;
|
||||
import org.navalplanner.business.calendars.entities.AvailabilityTimeLine;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar;
|
||||
import org.navalplanner.business.calendars.entities.CombinedWorkHours;
|
||||
import org.navalplanner.business.calendars.entities.IWorkHours;
|
||||
import org.navalplanner.business.calendars.entities.SameWorkHoursEveryDay;
|
||||
import org.navalplanner.business.calendars.entities.ThereAreHoursOnWorkHoursCalculator;
|
||||
|
|
@ -214,8 +215,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
LocalDate start,
|
||||
ResourcesPerDayModification resourcesPerDayModification,
|
||||
int hoursToAllocate) {
|
||||
IWorkHours workHoursPerDay = resourcesPerDayModification
|
||||
.getBeingModified().getWorkHoursPerDay();
|
||||
IWorkHours workHoursPerDay = getWorkHoursPerDay(resourcesPerDayModification);
|
||||
ResourcesPerDay resourcesPerDay = resourcesPerDayModification
|
||||
.getGoal();
|
||||
AvailabilityTimeLine availability = resourcesPerDayModification
|
||||
|
|
@ -225,6 +225,14 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
resourcesPerDay, hoursToAllocate);
|
||||
}
|
||||
|
||||
private CombinedWorkHours getWorkHoursPerDay(
|
||||
ResourcesPerDayModification resourcesPerDayModification) {
|
||||
return CombinedWorkHours.minOf(resourcesPerDayModification
|
||||
.getBeingModified().getTaskWorkHours(),
|
||||
resourcesPerDayModification
|
||||
.getResourcesWorkHoursPerDay());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void markUnsatisfied(ResourceAllocation<?> allocation) {
|
||||
allocation.markAsUnsatisfied();
|
||||
|
|
@ -566,10 +574,10 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
}
|
||||
|
||||
private IWorkHours getWorkHoursPerDay() {
|
||||
return getWorkHoursGivenTaskHours(getTaskWorkHoursLimit());
|
||||
return getWorkHoursGivenTaskHours(getTaskWorkHours());
|
||||
}
|
||||
|
||||
private IWorkHours getTaskWorkHoursLimit() {
|
||||
private IWorkHours getTaskWorkHours() {
|
||||
return new IWorkHours() {
|
||||
@Override
|
||||
public Integer getCapacityAt(LocalDate day) {
|
||||
|
|
|
|||
|
|
@ -28,6 +28,10 @@ import java.util.List;
|
|||
import org.apache.commons.lang.Validate;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.navalplanner.business.calendars.entities.AvailabilityTimeLine;
|
||||
import org.navalplanner.business.calendars.entities.CombinedWorkHours;
|
||||
import org.navalplanner.business.calendars.entities.IWorkHours;
|
||||
import org.navalplanner.business.calendars.entities.ResourceCalendar;
|
||||
import org.navalplanner.business.calendars.entities.SameWorkHoursEveryDay;
|
||||
import org.navalplanner.business.planner.entities.AvailabilityCalculator;
|
||||
import org.navalplanner.business.planner.entities.DayAssignment;
|
||||
import org.navalplanner.business.planner.entities.GenericResourceAllocation;
|
||||
|
|
@ -79,6 +83,19 @@ public abstract class ResourcesPerDayModification extends
|
|||
.getCriterions(), getResources());
|
||||
}
|
||||
|
||||
@Override
|
||||
public IWorkHours getResourcesWorkHoursPerDay() {
|
||||
return CombinedWorkHours.maxOf(resourcesWorkHours());
|
||||
}
|
||||
|
||||
private List<IWorkHours> resourcesWorkHours() {
|
||||
List<IWorkHours> workHours = new ArrayList<IWorkHours>();
|
||||
for (Resource each : getResources()) {
|
||||
workHours.add(workHoursFor(each));
|
||||
}
|
||||
return workHours;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static class OnSpecificAllocation extends
|
||||
|
|
@ -120,6 +137,12 @@ public abstract class ResourcesPerDayModification extends
|
|||
private Resource getAssociatedResource() {
|
||||
return getResources().get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IWorkHours getResourcesWorkHoursPerDay() {
|
||||
return workHoursFor(getAssociatedResource());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static ResourcesPerDayModification create(
|
||||
|
|
@ -159,6 +182,12 @@ public abstract class ResourcesPerDayModification extends
|
|||
return result;
|
||||
}
|
||||
|
||||
protected static IWorkHours workHoursFor(Resource associatedResource) {
|
||||
ResourceCalendar calendar = associatedResource.getCalendar();
|
||||
return calendar != null ? calendar : SameWorkHoursEveryDay
|
||||
.getDefaultWorkingDay();
|
||||
}
|
||||
|
||||
private final ResourcesPerDay goal;
|
||||
|
||||
private ResourcesPerDayModification(
|
||||
|
|
@ -173,6 +202,8 @@ public abstract class ResourcesPerDayModification extends
|
|||
return goal;
|
||||
}
|
||||
|
||||
public abstract IWorkHours getResourcesWorkHoursPerDay();
|
||||
|
||||
public abstract void applyAllocationOnAllTaskLength();
|
||||
|
||||
public abstract void applyAllocationUntil(LocalDate endExclusive);
|
||||
|
|
@ -182,4 +213,5 @@ public abstract class ResourcesPerDayModification extends
|
|||
|
||||
public abstract AvailabilityTimeLine getAvailability();
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue