ItEr58S19CUDesconsolidacion: Storing end date of task in ConsolidateValue entities, in order to keep the task size when removing consolidations.
This commit is contained in:
parent
a0d7316a5a
commit
a24651e0df
5 changed files with 51 additions and 21 deletions
|
|
@ -37,12 +37,13 @@ public class CalculatedConsolidatedValue extends ConsolidatedValue {
|
|||
}
|
||||
|
||||
public static CalculatedConsolidatedValue create(LocalDate date,
|
||||
BigDecimal value) {
|
||||
return create(new CalculatedConsolidatedValue(date, value));
|
||||
BigDecimal value, LocalDate taskEndDate) {
|
||||
return create(new CalculatedConsolidatedValue(date, value, taskEndDate));
|
||||
}
|
||||
|
||||
protected CalculatedConsolidatedValue(LocalDate date, BigDecimal value) {
|
||||
super(date, value);
|
||||
protected CalculatedConsolidatedValue(LocalDate date, BigDecimal value,
|
||||
LocalDate taskEndDate) {
|
||||
super(date, value, taskEndDate);
|
||||
}
|
||||
|
||||
protected CalculatedConsolidatedValue() {
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ package org.navalplanner.business.planner.entities.consolidations;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import org.hibernate.validator.NotNull;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.navalplanner.business.common.BaseEntity;
|
||||
|
||||
|
|
@ -33,6 +34,7 @@ public abstract class ConsolidatedValue extends BaseEntity {
|
|||
|
||||
private LocalDate date;
|
||||
private BigDecimal value;
|
||||
private LocalDate taskEndDate;
|
||||
|
||||
public abstract boolean isCalculated();
|
||||
|
||||
|
|
@ -40,11 +42,11 @@ public abstract class ConsolidatedValue extends BaseEntity {
|
|||
|
||||
}
|
||||
|
||||
protected ConsolidatedValue(
|
||||
LocalDate date,
|
||||
BigDecimal value) {
|
||||
protected ConsolidatedValue(LocalDate date, BigDecimal value,
|
||||
LocalDate taskEndDate) {
|
||||
this.date = date;
|
||||
this.value = value;
|
||||
this.taskEndDate = taskEndDate;
|
||||
}
|
||||
|
||||
public void setValue(BigDecimal value) {
|
||||
|
|
@ -63,4 +65,9 @@ public abstract class ConsolidatedValue extends BaseEntity {
|
|||
return date;
|
||||
}
|
||||
|
||||
@NotNull(message = "task end date not specified")
|
||||
public LocalDate getTaskEndDate() {
|
||||
return taskEndDate;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,24 +40,27 @@ public class NonCalculatedConsolidatedValue extends ConsolidatedValue {
|
|||
}
|
||||
|
||||
public static NonCalculatedConsolidatedValue create(LocalDate date,
|
||||
BigDecimal value) {
|
||||
return create(new NonCalculatedConsolidatedValue(date, value));
|
||||
BigDecimal value, LocalDate taskEndDate) {
|
||||
return create(new NonCalculatedConsolidatedValue(date, value,
|
||||
taskEndDate));
|
||||
}
|
||||
|
||||
public static NonCalculatedConsolidatedValue create(LocalDate date,
|
||||
BigDecimal value, AdvanceMeasurement advanceMeasurement) {
|
||||
BigDecimal value, AdvanceMeasurement advanceMeasurement,
|
||||
LocalDate taskEndDate) {
|
||||
return create(new NonCalculatedConsolidatedValue(date, value,
|
||||
advanceMeasurement));
|
||||
advanceMeasurement, taskEndDate));
|
||||
}
|
||||
|
||||
protected NonCalculatedConsolidatedValue(LocalDate date, BigDecimal value,
|
||||
AdvanceMeasurement advanceMeasurement) {
|
||||
this(date, value);
|
||||
AdvanceMeasurement advanceMeasurement, LocalDate taskEndDate) {
|
||||
this(date, value, taskEndDate);
|
||||
this.advanceMeasurement = advanceMeasurement;
|
||||
}
|
||||
|
||||
protected NonCalculatedConsolidatedValue(LocalDate date, BigDecimal value) {
|
||||
super(date, value);
|
||||
protected NonCalculatedConsolidatedValue(LocalDate date, BigDecimal value,
|
||||
LocalDate taskEndDate) {
|
||||
super(date, value, taskEndDate);
|
||||
}
|
||||
|
||||
protected NonCalculatedConsolidatedValue() {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
<property name="date" access="field" type="org.joda.time.contrib.hibernate.PersistentLocalDate" />
|
||||
<property name="value" scale="2" access="field" />
|
||||
<property name="taskEndDate" access="field" type="org.joda.time.contrib.hibernate.PersistentLocalDate" />
|
||||
|
||||
<subclass name="NonCalculatedConsolidatedValue" discriminator-value="NonCalculated">
|
||||
<many-to-one name="consolidation" class="NonCalculatedConsolidation" column="CONSOLIDATION_ID" access="field" />
|
||||
|
|
|
|||
|
|
@ -256,11 +256,13 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
|
|||
|
||||
if (consolidation.isCalculated()) {
|
||||
return CalculatedConsolidatedValue.create(LocalDate
|
||||
.fromDateFields(dto.getDate()), dto.getValue());
|
||||
.fromDateFields(dto.getDate()), dto.getValue(),
|
||||
LocalDate.fromDateFields(task.getEndDate()));
|
||||
} else {
|
||||
return NonCalculatedConsolidatedValue.create(LocalDate
|
||||
.fromDateFields(dto.getDate()), dto.getValue(), dto
|
||||
.getAdvanceMeasurement());
|
||||
.fromDateFields(dto.getDate()), dto.getValue(), dto
|
||||
.getAdvanceMeasurement(), LocalDate.fromDateFields(task
|
||||
.getEndDate()));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
|
@ -269,6 +271,14 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
|
|||
private void deleteConsolidationIfIsNeeded(AdvanceConsolidationDTO dto) {
|
||||
if (dto.getConsolidatedValue() != null) {
|
||||
if (consolidation != null && task != null) {
|
||||
LocalDate taskEndDate = LocalDate.fromDateFields(task
|
||||
.getEndDate());
|
||||
LocalDate endExclusive = taskEndDate;
|
||||
if (!consolidation.getConsolidatedValues().isEmpty()) {
|
||||
endExclusive = consolidation.getConsolidatedValues().last()
|
||||
.getTaskEndDate();
|
||||
}
|
||||
|
||||
if (!consolidation.isCalculated()) {
|
||||
((NonCalculatedConsolidation) consolidation)
|
||||
.getNonCalculatedConsolidatedValues().remove(
|
||||
|
|
@ -288,9 +298,6 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
|
|||
}
|
||||
}
|
||||
|
||||
LocalDate endExclusive = LocalDate.fromDateFields(task
|
||||
.getEndDate());
|
||||
|
||||
Set<ResourceAllocation<?>> allResourceAllocations = task
|
||||
.getAllResourceAllocations();
|
||||
for (ResourceAllocation<?> resourceAllocation : allResourceAllocations) {
|
||||
|
|
@ -306,6 +313,17 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
|
|||
RoundingMode.DOWN)).multiply(
|
||||
new BigDecimal(pendingHours)).intValue();
|
||||
}
|
||||
if (!taskEndDate.equals(endExclusive)) {
|
||||
if (taskEndDate.compareTo(endExclusive) <= 0) {
|
||||
reassign(resourceAllocation, taskEndDate,
|
||||
endExclusive, 0);
|
||||
} else {
|
||||
reassign(resourceAllocation, endExclusive,
|
||||
taskEndDate, 0);
|
||||
}
|
||||
task.setEndDate(endExclusive.toDateTimeAtStartOfDay()
|
||||
.toDate());
|
||||
}
|
||||
reassign(resourceAllocation, firstDayNotConsolidated,
|
||||
endExclusive, pendingHours);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue