ItEr43S15CUVisualizacionInformesOrganizacionsTraballoItEr42S21 : Fixes the estimated dates and filters in the workingArrangements report.
This commit is contained in:
parent
a0bc3eaa32
commit
c80a17e7b2
5 changed files with 46 additions and 43 deletions
|
|
@ -23,7 +23,7 @@ package org.navalplanner.business.planner.entities;
|
|||
import static org.navalplanner.business.i18n.I18nHelper._;
|
||||
|
||||
public enum TaskStatusEnum {
|
||||
ALL(_(" ")),
|
||||
ALL(_("All")),
|
||||
FINISHED(_("Finished")),
|
||||
IN_PROGRESS(_("In progress")),
|
||||
PENDING(_("Pending")),
|
||||
|
|
|
|||
|
|
@ -81,8 +81,8 @@ public class WorkingArrangementPerOrderDTO {
|
|||
final OrderElement order = task.getOrderElement();
|
||||
this.orderCode = order.getCode();
|
||||
this.orderName = order.getName();
|
||||
this.estimatedStartingDate = order.getInitDate();
|
||||
this.estimatedEndingDate = order.getDeadline();
|
||||
this.estimatedStartingDate = task.getStartDate();
|
||||
this.estimatedEndingDate = task.getEndDate();
|
||||
|
||||
// Calculate date for first and last work reports
|
||||
final List<WorkReportLine> workReportLines = workReportLineDAO
|
||||
|
|
@ -97,9 +97,9 @@ public class WorkingArrangementPerOrderDTO {
|
|||
}
|
||||
|
||||
this.deadline = order.getDeadline();
|
||||
this.measuredProgress = order.getAdvancePercentage();
|
||||
this.measuredProgress = getAdvanceSpread(order);
|
||||
this.status = (taskStatus != null) ? taskStatus.toString() : "";
|
||||
this.overrun = (new Date()).compareTo(this.deadline) > 0;
|
||||
this.overrun = calculateOverrun();
|
||||
this.hasDependencies = hasDependencies;
|
||||
}
|
||||
|
||||
|
|
@ -214,4 +214,18 @@ public class WorkingArrangementPerOrderDTO {
|
|||
return hasDependencies;
|
||||
}
|
||||
|
||||
private BigDecimal getAdvanceSpread(OrderElement order) {
|
||||
BigDecimal advance = order.getAdvancePercentage();
|
||||
if (advance != null) {
|
||||
return advance;
|
||||
}
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
private boolean calculateOverrun() {
|
||||
if (this.deadline != null) {
|
||||
return (new Date()).compareTo(this.deadline) > 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -331,9 +331,11 @@
|
|||
</band>
|
||||
</groupHeader>
|
||||
<groupFooter>
|
||||
<band height="13">
|
||||
<band height="27">
|
||||
<line>
|
||||
<reportElement x="2" y="8" width="553" height="1"/>
|
||||
<reportElement x="2" y="8" width="553" height="1">
|
||||
<printWhenExpression><![CDATA[new java.lang.Boolean($F{hasDependencies}.equals(java.lang.Boolean.TRUE))]]></printWhenExpression>
|
||||
</reportElement>
|
||||
</line>
|
||||
</band>
|
||||
</groupFooter>
|
||||
|
|
|
|||
|
|
@ -99,11 +99,7 @@ public class WorkingArrangementsPerOrderController extends NavalplannerReportCon
|
|||
|
||||
// Task status
|
||||
final TaskStatusEnum taskStatus = getSelectedTaskStatus();
|
||||
if (TaskStatusEnum.ALL.equals(taskStatus)) {
|
||||
result.put("taskStatus", _("All"));
|
||||
} else {
|
||||
result.put("taskStatus", taskStatus.toString());
|
||||
}
|
||||
result.put("taskStatus", taskStatus.toString());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,7 +97,6 @@ public class WorkingArrangementsPerOrderModel implements
|
|||
final List<Task> tasks = orderDAO.getTasksByOrder(order);
|
||||
for (Task each : tasks) {
|
||||
final Task task = (Task) each;
|
||||
|
||||
// If taskStatus is ALL, add task and calculate its real status
|
||||
if (TaskStatusEnum.ALL.equals(taskStatus)) {
|
||||
workingArrangementPerOrderList
|
||||
|
|
@ -132,7 +131,8 @@ public class WorkingArrangementsPerOrderModel implements
|
|||
List<WorkingArrangementPerOrderDTO> result = new ArrayList<WorkingArrangementPerOrderDTO>();
|
||||
|
||||
// Add current task
|
||||
final Set<Dependency> dependencies = task.getDependenciesWithThisOrigin();
|
||||
final Set<Dependency> dependencies = task
|
||||
.getDependenciesWithThisDestination();
|
||||
result.add(new WorkingArrangementPerOrderDTO(task, taskStatus,
|
||||
showDependencies && !dependencies.isEmpty()));
|
||||
|
||||
|
|
@ -140,7 +140,7 @@ public class WorkingArrangementsPerOrderModel implements
|
|||
if (showDependencies) {
|
||||
taskDAO.reattach(task);
|
||||
for (Dependency each : dependencies) {
|
||||
final OrderElement orderElement = each.getDestination()
|
||||
final OrderElement orderElement = each.getOrigin()
|
||||
.getOrderElement();
|
||||
DependencyWorkingArrangementDTO dependencyDTO = new DependencyWorkingArrangementDTO(
|
||||
orderElement.getName(), orderElement.getCode(), each
|
||||
|
|
@ -178,25 +178,26 @@ public class WorkingArrangementsPerOrderModel implements
|
|||
|
||||
private boolean matchTaskStatusFinished(Task task) {
|
||||
final OrderElement order = task.getOrderElement();
|
||||
final BigDecimal measuredProgress = order.getAdvancePercentage();
|
||||
|
||||
BigDecimal measuredProgress = order.getAdvancePercentage();
|
||||
return isFinished(measuredProgress);
|
||||
}
|
||||
|
||||
private boolean isFinished(BigDecimal measuredProgress) {
|
||||
return measuredProgress.equals(new BigDecimal(1));
|
||||
measuredProgress = (measuredProgress.multiply(new BigDecimal(100)))
|
||||
.setScale(0, BigDecimal.ROUND_UP);
|
||||
return measuredProgress.equals(new BigDecimal(100));
|
||||
}
|
||||
|
||||
private boolean matchTaskStatusInProgress(Task task) {
|
||||
final OrderElement order = task.getOrderElement();
|
||||
final BigDecimal measuredProgress = order.getAdvancePercentage();
|
||||
|
||||
return isInProgress(measuredProgress)
|
||||
&& hasAtLeastOneWorkReportLine(order);
|
||||
|| (hasNotYetStarted(measuredProgress) && hasAtLeastOneWorkReportLine(order));
|
||||
}
|
||||
|
||||
private boolean isInProgress(BigDecimal measuredProgress) {
|
||||
return measuredProgress.compareTo(new BigDecimal(1)) < 0;
|
||||
return ((measuredProgress.compareTo(new BigDecimal(1)) < 0) && (measuredProgress
|
||||
.compareTo(new BigDecimal(0)) > 0));
|
||||
}
|
||||
|
||||
private boolean hasAtLeastOneWorkReportLine(OrderElement order) {
|
||||
|
|
@ -214,7 +215,7 @@ public class WorkingArrangementsPerOrderModel implements
|
|||
|
||||
return hasNotYetStarted(measuredProgress)
|
||||
&& hasNotWorkReports(order)
|
||||
&& allDependentTasksAreFinished(task);
|
||||
&& (!isBlockedByDepedendantTasks(task));
|
||||
}
|
||||
|
||||
private boolean hasNotWorkReports(OrderElement order) {
|
||||
|
|
@ -222,22 +223,8 @@ public class WorkingArrangementsPerOrderModel implements
|
|||
}
|
||||
|
||||
private boolean hasNotYetStarted(BigDecimal measuredProgress) {
|
||||
return measuredProgress.equals(new BigDecimal(0));
|
||||
}
|
||||
|
||||
private boolean allDependentTasksAreFinished(Task task) {
|
||||
taskDAO.reattach(task);
|
||||
|
||||
final Set<Dependency> dependencies = task.getDependenciesWithThisOrigin();
|
||||
for (Dependency each: dependencies) {
|
||||
final TaskElement taskElement = each.getDestination();
|
||||
final BigDecimal measuredProgress = taskElement.getOrderElement()
|
||||
.getAdvancePercentage();
|
||||
if (isInProgress(measuredProgress)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return measuredProgress.setScale(2).equals(
|
||||
new BigDecimal(0).setScale(2));
|
||||
}
|
||||
|
||||
private boolean matchTaskStatusBlocked(Task task) {
|
||||
|
|
@ -250,18 +237,22 @@ public class WorkingArrangementsPerOrderModel implements
|
|||
}
|
||||
|
||||
private boolean isBlockedByDepedendantTasks(Task task) {
|
||||
boolean result = true;
|
||||
|
||||
taskDAO.reattach(task);
|
||||
final Set<Dependency> dependencies = task.getDependenciesWithThisOrigin();
|
||||
final Set<Dependency> dependencies = task
|
||||
.getDependenciesWithThisDestination();
|
||||
if (dependencies.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean result = true;
|
||||
for (Dependency each: dependencies) {
|
||||
final TaskElement taskElement = each.getDestination();
|
||||
final TaskElement taskElement = each.getOrigin();
|
||||
final BigDecimal measuredProgress = taskElement.getOrderElement()
|
||||
.getAdvancePercentage();
|
||||
|
||||
final Type dependencyType = each.getType();
|
||||
if (Type.END_START.equals(dependencyType)) {
|
||||
result &= isInProgress(measuredProgress);
|
||||
result &= (!isFinished(measuredProgress));
|
||||
}
|
||||
if (Type.START_START.equals(dependencyType)) {
|
||||
result &= hasNotYetStarted(measuredProgress);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue