From c80a17e7b2d68cfc18657a522c873bf59f42c6af Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Thu, 21 Jan 2010 14:48:41 +0100 Subject: [PATCH] ItEr43S15CUVisualizacionInformesOrganizacionsTraballoItEr42S21 : Fixes the estimated dates and filters in the workingArrangements report. --- .../planner/entities/TaskStatusEnum.java | 2 +- .../dtos/WorkingArrangementPerOrderDTO.java | 22 ++++++-- .../workingArrangementsPerOrderReport.jrxml | 6 ++- ...WorkingArrangementsPerOrderController.java | 6 +-- .../WorkingArrangementsPerOrderModel.java | 53 ++++++++----------- 5 files changed, 46 insertions(+), 43 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskStatusEnum.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskStatusEnum.java index 3a0b1aabb..8fae745e5 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskStatusEnum.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskStatusEnum.java @@ -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")), diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/WorkingArrangementPerOrderDTO.java b/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/WorkingArrangementPerOrderDTO.java index 7f0bc9f10..14e2e8669 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/WorkingArrangementPerOrderDTO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/WorkingArrangementPerOrderDTO.java @@ -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 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; + } } diff --git a/navalplanner-webapp/src/main/jasper/workingArrangementsPerOrderReport.jrxml b/navalplanner-webapp/src/main/jasper/workingArrangementsPerOrderReport.jrxml index c515c3403..8766e9245 100644 --- a/navalplanner-webapp/src/main/jasper/workingArrangementsPerOrderReport.jrxml +++ b/navalplanner-webapp/src/main/jasper/workingArrangementsPerOrderReport.jrxml @@ -331,9 +331,11 @@ - + - + + + diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/WorkingArrangementsPerOrderController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/WorkingArrangementsPerOrderController.java index 7e69a4670..9b4190c62 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/WorkingArrangementsPerOrderController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/WorkingArrangementsPerOrderController.java @@ -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; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/WorkingArrangementsPerOrderModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/WorkingArrangementsPerOrderModel.java index d7f399a1e..bf64bde5c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/WorkingArrangementsPerOrderModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/WorkingArrangementsPerOrderModel.java @@ -97,7 +97,6 @@ public class WorkingArrangementsPerOrderModel implements final List 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 result = new ArrayList(); // Add current task - final Set dependencies = task.getDependenciesWithThisOrigin(); + final Set 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 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 dependencies = task.getDependenciesWithThisOrigin(); + final Set 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);