ItEr60S15AnA04S11RFAdaptacionFiltradosInformes : filters by labels in the HoursWorkedPerWorker report.
This commit is contained in:
parent
457a89bf68
commit
3abf511159
6 changed files with 141 additions and 15 deletions
|
|
@ -25,6 +25,7 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.common.daos.IIntegrationEntityDAO;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.business.reports.dtos.HoursWorkedPerResourceDTO;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
|
|
@ -130,6 +131,7 @@ public interface IResourceDAO extends IIntegrationEntityDAO<Resource> {
|
|||
* @return
|
||||
*/
|
||||
public List<HoursWorkedPerResourceDTO> getWorkingHoursPerWorker(
|
||||
List<Resource> resources, Date startingDate, Date endingDate);
|
||||
List<Resource> resources, List<Label> labels, Date startingDate,
|
||||
Date endingDate);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ import org.apache.commons.lang.Validate;
|
|||
import org.hibernate.Query;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.navalplanner.business.common.daos.IntegrationEntityDAO;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.business.reports.dtos.HoursWorkedPerResourceDTO;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
|
|
@ -222,7 +223,9 @@ public class ResourceDAO extends IntegrationEntityDAO<Resource> implements
|
|||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<HoursWorkedPerResourceDTO> getWorkingHoursPerWorker(
|
||||
List<Resource> resources, Date startingDate, Date endingDate) {
|
||||
List<Resource> resources, List<Label> labels, Date startingDate,
|
||||
Date endingDate) {
|
||||
|
||||
String strQuery = "SELECT new org.navalplanner.business.reports.dtos.HoursWorkedPerResourceDTO(resource, wrl) "
|
||||
+ "FROM Resource resource, WorkReportLine wrl "
|
||||
+ "LEFT OUTER JOIN wrl.resource wrlresource "
|
||||
|
|
@ -244,6 +247,12 @@ public class ResourceDAO extends IntegrationEntityDAO<Resource> implements
|
|||
strQuery += "AND resource IN (:resources) ";
|
||||
}
|
||||
|
||||
// Set labels
|
||||
if (labels != null && !labels.isEmpty()) {
|
||||
strQuery += " AND ( EXISTS (FROM wrl.labels as etq WHERE etq IN (:labels)) "
|
||||
+ "OR EXISTS (FROM wrl.workReport.labels as etqwr WHERE etqwr IN (:labels))) ";
|
||||
}
|
||||
|
||||
// Order by
|
||||
strQuery += "ORDER BY resource.id, wrl.date";
|
||||
|
||||
|
|
@ -258,6 +267,9 @@ public class ResourceDAO extends IntegrationEntityDAO<Resource> implements
|
|||
if (resources != null && !resources.isEmpty()) {
|
||||
query.setParameterList("resources", resources);
|
||||
}
|
||||
if (labels != null && !labels.isEmpty()) {
|
||||
query.setParameterList("labels", labels);
|
||||
}
|
||||
|
||||
// Get result
|
||||
return query.list();
|
||||
|
|
|
|||
|
|
@ -31,10 +31,12 @@ import java.util.Set;
|
|||
|
||||
import net.sf.jasperreports.engine.JRDataSource;
|
||||
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.navalplanner.business.resources.entities.Worker;
|
||||
import org.navalplanner.web.common.Util;
|
||||
import org.navalplanner.web.common.components.Autocomplete;
|
||||
import org.navalplanner.web.common.components.bandboxsearch.BandboxSearch;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.WrongValueException;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
|
|
@ -44,12 +46,10 @@ import org.zkoss.zul.Button;
|
|||
import org.zkoss.zul.Checkbox;
|
||||
import org.zkoss.zul.Comboitem;
|
||||
import org.zkoss.zul.Datebox;
|
||||
import org.zkoss.zul.Label;
|
||||
import org.zkoss.zul.Listbox;
|
||||
import org.zkoss.zul.Listcell;
|
||||
import org.zkoss.zul.Listitem;
|
||||
import org.zkoss.zul.ListitemRenderer;
|
||||
|
||||
/**
|
||||
* @author Diego Pino Garcia <dpino@igalia.com>
|
||||
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
|
||||
|
|
@ -62,12 +62,16 @@ public class HoursWorkedPerWorkerController extends NavalplannerReportController
|
|||
|
||||
private Listbox lbResources;
|
||||
|
||||
private Listbox lbLabels;
|
||||
|
||||
private Datebox startingDate;
|
||||
|
||||
private Datebox endingDate;
|
||||
|
||||
private Autocomplete filterResource;
|
||||
|
||||
private BandboxSearch bdLabels;
|
||||
|
||||
private ResourceListRenderer resourceListRenderer = new ResourceListRenderer();
|
||||
|
||||
@Override
|
||||
|
|
@ -88,7 +92,7 @@ public class HoursWorkedPerWorkerController extends NavalplannerReportController
|
|||
@Override
|
||||
protected JRDataSource getDataSource() {
|
||||
return hoursWorkedPerWorkerModel.getHoursWorkedPerWorkerReport(
|
||||
getSelectedResources(),
|
||||
getSelectedResources(), getSelectedLabels(),
|
||||
getStartingDate(), getEndingDate());
|
||||
}
|
||||
|
||||
|
|
@ -173,7 +177,8 @@ public class HoursWorkedPerWorkerController extends NavalplannerReportController
|
|||
|
||||
private void appendType(final Listitem item) {
|
||||
Resource resource = (Resource) item.getValue();
|
||||
Label typeLabel = new Label(getType(resource));
|
||||
org.zkoss.zul.Label typeLabel = new org.zkoss.zul.Label(
|
||||
getType(resource));
|
||||
|
||||
Listcell typeResourceCell = new Listcell();
|
||||
typeResourceCell.appendChild(typeLabel);
|
||||
|
|
@ -193,7 +198,8 @@ public class HoursWorkedPerWorkerController extends NavalplannerReportController
|
|||
|
||||
private void appendName(final Listitem item) {
|
||||
Resource resource = (Resource) item.getValue();
|
||||
Label nameLabel = new Label(getName(resource));
|
||||
org.zkoss.zul.Label nameLabel = new org.zkoss.zul.Label(
|
||||
getName(resource));
|
||||
|
||||
Listcell nameResourceCell = new Listcell();
|
||||
nameResourceCell.appendChild(nameLabel);
|
||||
|
|
@ -202,7 +208,8 @@ public class HoursWorkedPerWorkerController extends NavalplannerReportController
|
|||
|
||||
private void appendCode(Listitem item) {
|
||||
Resource resource = (Resource) item.getValue();
|
||||
Label codeLabel = new Label(resource.getCode());
|
||||
org.zkoss.zul.Label codeLabel = new org.zkoss.zul.Label(resource
|
||||
.getCode());
|
||||
|
||||
Listcell codeResourceCell = new Listcell();
|
||||
codeResourceCell.appendChild(codeLabel);
|
||||
|
|
@ -244,4 +251,31 @@ public class HoursWorkedPerWorkerController extends NavalplannerReportController
|
|||
return "Machine";
|
||||
}
|
||||
|
||||
public List<Label> getAllLabels() {
|
||||
return hoursWorkedPerWorkerModel.getAllLabels();
|
||||
}
|
||||
|
||||
public void onSelectLabel() {
|
||||
Label label = (Label) bdLabels.getSelectedElement();
|
||||
if (label == null) {
|
||||
throw new WrongValueException(bdLabels, _("please, select a label"));
|
||||
}
|
||||
boolean result = hoursWorkedPerWorkerModel.addSelectedLabel(label);
|
||||
if (!result) {
|
||||
throw new WrongValueException(bdLabels,
|
||||
_("This label has already been added."));
|
||||
} else {
|
||||
Util.reloadBindings(lbLabels);
|
||||
}
|
||||
bdLabels.clear();
|
||||
}
|
||||
|
||||
public void onRemoveLabel(Label label) {
|
||||
hoursWorkedPerWorkerModel.removeSelectedLabel(label);
|
||||
Util.reloadBindings(lbLabels);
|
||||
}
|
||||
|
||||
public List<Label> getSelectedLabels() {
|
||||
return hoursWorkedPerWorkerModel.getSelectedLabels();
|
||||
}
|
||||
}
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
package org.navalplanner.web.reports;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
|
@ -29,6 +30,8 @@ import net.sf.jasperreports.engine.JRDataSource;
|
|||
import net.sf.jasperreports.engine.JREmptyDataSource;
|
||||
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
|
||||
|
||||
import org.navalplanner.business.labels.daos.ILabelDAO;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.reports.dtos.HoursWorkedPerResourceDTO;
|
||||
import org.navalplanner.business.resources.daos.IResourceDAO;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
|
|
@ -49,16 +52,23 @@ public class HoursWorkedPerWorkerModel implements IHoursWorkedPerWorkerModel {
|
|||
@Autowired
|
||||
private IResourceDAO resourceDAO;
|
||||
|
||||
@Autowired
|
||||
private ILabelDAO labelDAO;
|
||||
|
||||
private Set<Resource> selectedResources = new HashSet<Resource>();
|
||||
|
||||
private List<Label> selectedLabels = new ArrayList<Label>();
|
||||
|
||||
private boolean showReportMessage = false;
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public JRDataSource getHoursWorkedPerWorkerReport(List<Resource> resources,
|
||||
List<Label> labels,
|
||||
Date startingDate, Date endingDate) {
|
||||
|
||||
final List<HoursWorkedPerResourceDTO> workingHoursPerWorkerList = resourceDAO
|
||||
.getWorkingHoursPerWorker(resources, startingDate, endingDate);
|
||||
.getWorkingHoursPerWorker(resources, labels, startingDate,
|
||||
endingDate);
|
||||
|
||||
if (workingHoursPerWorkerList != null && !workingHoursPerWorkerList.isEmpty()) {
|
||||
setShowReportMessage(false);
|
||||
|
|
@ -102,4 +112,33 @@ public class HoursWorkedPerWorkerModel implements IHoursWorkedPerWorkerModel {
|
|||
return showReportMessage;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<Label> getAllLabels(){
|
||||
List<Label> allLabels = labelDAO.getAll();
|
||||
// initialize the labels
|
||||
for (Label label : allLabels) {
|
||||
label.getType().getName();
|
||||
}
|
||||
return allLabels;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeSelectedLabel(Label label) {
|
||||
this.selectedLabels.remove(label);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addSelectedLabel(Label label) {
|
||||
if (this.selectedLabels.contains(label)) {
|
||||
return false;
|
||||
}
|
||||
this.selectedLabels.add(label);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Label> getSelectedLabels() {
|
||||
return selectedLabels;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import java.util.Set;
|
|||
|
||||
import net.sf.jasperreports.engine.JRDataSource;
|
||||
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
|
||||
/**
|
||||
|
|
@ -36,15 +37,25 @@ import org.navalplanner.business.resources.entities.Resource;
|
|||
public interface IHoursWorkedPerWorkerModel {
|
||||
|
||||
JRDataSource getHoursWorkedPerWorkerReport(List<Resource> resources,
|
||||
List<Label> labels,
|
||||
Date startingDate, Date endingDate);
|
||||
|
||||
void init();
|
||||
|
||||
Set<Resource> getResources();
|
||||
|
||||
List<Label> getSelectedLabels();
|
||||
|
||||
void removeSelectedResource(Resource resource);
|
||||
|
||||
boolean addSelectedResource(Resource resource);
|
||||
|
||||
void removeSelectedLabel(Label label);
|
||||
|
||||
boolean addSelectedLabel(Label label);
|
||||
|
||||
boolean isShowReportMessage();
|
||||
|
||||
List<Label> getAllLabels();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,19 +98,47 @@
|
|||
<listheader label="${i18n:_('Code')}" align="center" width="220px"/>
|
||||
<listheader label="${i18n:_('Operations')}" align="center" width="70px"/>
|
||||
</listhead>
|
||||
<!--<listitem self="@{each='resource'}" value="@{resource}">
|
||||
<listcell label="@{resource.nif}" />
|
||||
<listcell label="@{resource.name}" />
|
||||
</listbox>
|
||||
</vbox>
|
||||
</panelchildren>
|
||||
</panel>
|
||||
|
||||
<!-- Assign label -->
|
||||
<panel title="${i18n:_('Filter by labels')}" border="normal"
|
||||
style="overflow:auto">
|
||||
<panelchildren>
|
||||
<vbox>
|
||||
<separator spacing="5px"/>
|
||||
<hbox>
|
||||
<bandboxSearch id="bdLabels" finder="LabelBandboxFinder"
|
||||
model="@{controller.allLabels}" />
|
||||
<button label="${i18n:_('Assign')}"
|
||||
onClick="controller.onSelectLabel()"
|
||||
style="margin-top: -4px" />
|
||||
</hbox>
|
||||
</vbox>
|
||||
<separator spacing="10px"/>
|
||||
<listbox id="lbLabels"
|
||||
width="700px"
|
||||
multiple="true"
|
||||
model="@{controller.selectedLabels}">
|
||||
<listhead>
|
||||
<listheader label="${i18n:_('Type')}" align="center" />
|
||||
<listheader label="${i18n:_('Name')}" align="center" />
|
||||
<listheader label="${i18n:_('Operations')}" align="center" width="100px"/>
|
||||
</listhead>
|
||||
<listitem self="@{each='label'}" value="@{label}">
|
||||
<listcell label="@{label.type.name}" />
|
||||
<listcell label="@{label.name}" />
|
||||
<listcell>
|
||||
<button sclass="icono" image="/common/img/ico_borrar1.png"
|
||||
hoverImage="/common/img/ico_borrar.png"
|
||||
tooltiptext="${i18n:_('Delete')}"
|
||||
onClick="controller.onRemoveResource(self.parent.parent.value);">
|
||||
onClick="controller.onRemoveLabel(self.parent.parent.value);">
|
||||
</button>
|
||||
</listcell>
|
||||
</listitem>-->
|
||||
</listitem>
|
||||
</listbox>
|
||||
</vbox>
|
||||
</panelchildren>
|
||||
</panel>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue