ItEr29S13CUVistaRecursosTempoEmpresa: Showing the chart with real data.
This commit is contained in:
parent
630e6951ad
commit
1e2add05a2
3 changed files with 87 additions and 39 deletions
|
|
@ -23,6 +23,7 @@ package org.navalplanner.business.orders.entities;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hibernate.validator.NotEmpty;
|
||||
import org.hibernate.validator.NotNull;
|
||||
|
|
@ -30,6 +31,8 @@ import org.hibernate.validator.Valid;
|
|||
import org.navalplanner.business.common.BaseEntity;
|
||||
import org.navalplanner.business.common.IValidable;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.planner.entities.DayAssignment;
|
||||
import org.navalplanner.business.planner.entities.ResourceAllocation;
|
||||
import org.navalplanner.business.planner.entities.TaskElement;
|
||||
|
||||
/**
|
||||
|
|
@ -192,4 +195,27 @@ public class Order extends BaseEntity implements IOrderLineGroup, IValidable {
|
|||
}
|
||||
}
|
||||
|
||||
public List<DayAssignment> getDayAssignments() {
|
||||
List<DayAssignment> dayAssignments = new ArrayList<DayAssignment>();
|
||||
for (OrderElement orderElement : getAllOrderElements()) {
|
||||
Set<TaskElement> taskElements = orderElement.getTaskElements();
|
||||
for (TaskElement taskElement : taskElements) {
|
||||
Set<ResourceAllocation<?>> resourceAllocations = taskElement.getResourceAllocations();
|
||||
for (ResourceAllocation<?> resourceAllocation : resourceAllocations) {
|
||||
dayAssignments.addAll(resourceAllocation.getAssignments());
|
||||
}
|
||||
}
|
||||
}
|
||||
return dayAssignments;
|
||||
}
|
||||
|
||||
private List<OrderElement> getAllOrderElements() {
|
||||
List<OrderElement> result = new ArrayList<OrderElement>(
|
||||
this.orderElements);
|
||||
for (OrderElement orderElement : this.orderElements) {
|
||||
result.addAll(orderElement.getAllChildren());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
package org.navalplanner.business.orders.entities;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
|
|
@ -314,4 +315,13 @@ public abstract class OrderElement extends BaseEntity {
|
|||
|
||||
public abstract BigDecimal getAdvancePercentage(LocalDate date);
|
||||
|
||||
public List<OrderElement> getAllChildren() {
|
||||
List<OrderElement> children = getChildren();
|
||||
List<OrderElement> result = new ArrayList<OrderElement>(children);
|
||||
for (OrderElement orderElement : children) {
|
||||
result.addAll(orderElement.getAllChildren());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,13 +24,19 @@ import static org.navalplanner.web.I18nHelper._;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.SortedMap;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.orders.daos.IOrderDAO;
|
||||
import org.navalplanner.business.orders.entities.Order;
|
||||
import org.navalplanner.business.planner.entities.DayAssignment;
|
||||
import org.navalplanner.business.planner.entities.TaskElement;
|
||||
import org.navalplanner.business.resources.daos.IResourceDAO;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
|
|
@ -43,9 +49,9 @@ import org.springframework.stereotype.Component;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.zkoss.ganttz.adapters.IStructureNavigator;
|
||||
import org.zkoss.ganttz.adapters.PlannerConfiguration;
|
||||
import org.zkoss.zul.CategoryModel;
|
||||
import org.zkoss.zul.Chart;
|
||||
import org.zkoss.zul.SimpleCategoryModel;
|
||||
import org.zkoss.zul.SimpleXYModel;
|
||||
import org.zkoss.zul.XYModel;
|
||||
|
||||
/**
|
||||
* @author Óscar González Fernández <ogonzalez@igalia.com>
|
||||
|
|
@ -124,7 +130,7 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
|
|||
.setCalendarAllocationController(calendarAllocationController);
|
||||
configuration.addCommandOnTask(calendarAllocationCommand);
|
||||
|
||||
configuration.setChartComponent(getChartComponent());
|
||||
configuration.setChartComponent(getChartComponent(orderReloaded));
|
||||
|
||||
onTransaction.use(configuration);
|
||||
}
|
||||
|
|
@ -218,49 +224,55 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
|
|||
}
|
||||
}
|
||||
|
||||
private Chart getChartComponent() {
|
||||
CategoryModel catmodel = new SimpleCategoryModel();
|
||||
catmodel.setValue("2008", "Q1 2008", new Integer(20));
|
||||
catmodel.setValue("2008", "Q2 2008", new Integer(35));
|
||||
catmodel.setValue("2008", "Q3 2008", new Integer(40));
|
||||
catmodel.setValue("2008", "Q4 2008", new Integer(55));
|
||||
catmodel.setValue("2009", "Q1 2008", new Integer(40));
|
||||
catmodel.setValue("2009", "Q2 2008", new Integer(60));
|
||||
catmodel.setValue("2009", "Q3 2008", new Integer(70));
|
||||
catmodel.setValue("2009", "Q4 2008", new Integer(90));
|
||||
catmodel.setValue("2010", "Q1 2008", new Integer(20));
|
||||
catmodel.setValue("2010", "Q2 2008", new Integer(35));
|
||||
catmodel.setValue("2010", "Q3 2008", new Integer(40));
|
||||
catmodel.setValue("2010", "Q4 2008", new Integer(55));
|
||||
catmodel.setValue("2011", "Q1 2008", new Integer(40));
|
||||
catmodel.setValue("2011", "Q2 2008", new Integer(60));
|
||||
catmodel.setValue("2011", "Q3 2008", new Integer(70));
|
||||
catmodel.setValue("2011", "Q4 2008", new Integer(90));
|
||||
private Chart getChartComponent(Order order) {
|
||||
SortedMap<LocalDate, Integer> mapDayAssignments = calculateHoursAdditionByDay(order);
|
||||
|
||||
catmodel.setValue("2008", "Q1 2009", new Integer(20));
|
||||
catmodel.setValue("2008", "Q2 2009", new Integer(35));
|
||||
catmodel.setValue("2008", "Q3 2009", new Integer(40));
|
||||
catmodel.setValue("2008", "Q4 2009", new Integer(55));
|
||||
catmodel.setValue("2009", "Q1 2009", new Integer(40));
|
||||
catmodel.setValue("2009", "Q2 2009", new Integer(60));
|
||||
catmodel.setValue("2009", "Q3 2009", new Integer(70));
|
||||
catmodel.setValue("2009", "Q4 2009", new Integer(90));
|
||||
catmodel.setValue("2010", "Q1 2009", new Integer(20));
|
||||
catmodel.setValue("2010", "Q2 2009", new Integer(35));
|
||||
catmodel.setValue("2010", "Q3 2009", new Integer(40));
|
||||
catmodel.setValue("2010", "Q4 2009", new Integer(55));
|
||||
catmodel.setValue("2011", "Q1 2009", new Integer(40));
|
||||
catmodel.setValue("2011", "Q2 2009", new Integer(60));
|
||||
catmodel.setValue("2011", "Q3 2009", new Integer(70));
|
||||
catmodel.setValue("2011", "Q4 2009", new Integer(90));
|
||||
XYModel xymodel = new SimpleXYModel();
|
||||
for (LocalDate day : mapDayAssignments.keySet()) {
|
||||
Integer hours = mapDayAssignments.get(day);
|
||||
xymodel.addValue("", new Long(day.toDateTimeAtStartOfDay()
|
||||
.getMillis()), hours);
|
||||
}
|
||||
|
||||
Chart chart = new Chart();
|
||||
chart.setType("stacked_area");
|
||||
chart.setType("time_series");
|
||||
chart.setWidth("1600px");
|
||||
chart.setHeight("175px");
|
||||
chart.setModel(catmodel);
|
||||
chart.setModel(xymodel);
|
||||
|
||||
return chart;
|
||||
}
|
||||
|
||||
private SortedMap<LocalDate, Integer> calculateHoursAdditionByDay(
|
||||
Order order) {
|
||||
SortedMap<LocalDate, Integer> map = new TreeMap<LocalDate, Integer>();
|
||||
|
||||
List<DayAssignment> dayAssignments = order.getDayAssignments();
|
||||
if (dayAssignments.isEmpty()) {
|
||||
return map;
|
||||
}
|
||||
|
||||
Collections.sort(dayAssignments, new Comparator<DayAssignment>() {
|
||||
|
||||
@Override
|
||||
public int compare(DayAssignment o1, DayAssignment o2) {
|
||||
return o1.getDay().compareTo(o2.getDay());
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
for (DayAssignment dayAssignment : dayAssignments) {
|
||||
LocalDate day = dayAssignment.getDay();
|
||||
Integer hours = dayAssignment.getHours();
|
||||
|
||||
if (map.get(day) == null) {
|
||||
map.put(day, hours);
|
||||
} else {
|
||||
map.put(day, map.get(day) + hours);
|
||||
}
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue