Add implementation to calculate if a task is finished according to timesheets
It has been modified the calculation of SumChargedEffort to include the new field finishedTimesheets. FEA: ItEr77S12AdaptPlanningAccordingTimesheets
This commit is contained in:
parent
33d43babf7
commit
58928b208b
7 changed files with 47 additions and 12 deletions
|
|
@ -81,7 +81,7 @@ public interface ISumChargedEffortDAO extends
|
|||
*
|
||||
* Usually you call this method to get the set before saving the work
|
||||
* report. After saving the work report you call
|
||||
* {@link ISumChargedEffortDAO#recalculateTimesheetDates(Set)} with the
|
||||
* {@link ISumChargedEffortDAO#recalculateTimesheetData(Set)} with the
|
||||
* result of this method.
|
||||
*
|
||||
* You can pass <code>null</code> as param if you only have one of the sets.
|
||||
|
|
@ -94,6 +94,6 @@ public interface ISumChargedEffortDAO extends
|
|||
* Recalulates the first and last timesheets dates for each
|
||||
* {@link OrderElement} in the {@link Set}.
|
||||
*/
|
||||
void recalculateTimesheetDates(Set<OrderElement> orderElements);
|
||||
void recalculateTimesheetData(Set<OrderElement> orderElements);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -256,7 +256,7 @@ public class SumChargedEffortDAO extends
|
|||
resetMapSumChargedEfforts();
|
||||
resetSumChargedEffort(order);
|
||||
calculateDirectChargedEffort(order);
|
||||
calculateTimesheetDates(order);
|
||||
calculateTimesheetData(order);
|
||||
} catch (InstanceNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
|
@ -284,7 +284,12 @@ public class SumChargedEffortDAO extends
|
|||
addDirectChargedEffort(orderElement, effort);
|
||||
}
|
||||
|
||||
private Pair<Date, Date> calculateTimesheetDates(
|
||||
private void calculateTimesheetData(OrderElement orderElement) {
|
||||
calculateTimesheetDatesAndChildren(orderElement);
|
||||
calculateFinishedTimesheetsAndChildren(orderElement);
|
||||
}
|
||||
|
||||
private Pair<Date, Date> calculateTimesheetDatesAndChildren(
|
||||
OrderElement orderElement) {
|
||||
Pair<Date, Date> minMax = workReportLineDAO
|
||||
.findMinAndMaxDatesByOrderElement(orderElement);
|
||||
|
|
@ -296,7 +301,7 @@ public class SumChargedEffortDAO extends
|
|||
addIfNotNull(maxDates, minMax.getSecond());
|
||||
|
||||
for (OrderElement child : orderElement.getChildren()) {
|
||||
Pair<Date, Date> minMaxChild = calculateTimesheetDates(child);
|
||||
Pair<Date, Date> minMaxChild = calculateTimesheetDatesAndChildren(child);
|
||||
addIfNotNull(minDates, minMaxChild.getFirst());
|
||||
addIfNotNull(maxDates, minMaxChild.getSecond());
|
||||
}
|
||||
|
|
@ -319,6 +324,22 @@ public class SumChargedEffortDAO extends
|
|||
}
|
||||
}
|
||||
|
||||
private void calculateFinishedTimesheetsAndChildren(
|
||||
OrderElement orderElement) {
|
||||
calculateFinishedTimesheets(orderElement);
|
||||
|
||||
for (OrderElement child : orderElement.getChildren()) {
|
||||
calculateFinishedTimesheetsAndChildren(child);
|
||||
}
|
||||
}
|
||||
|
||||
private void calculateFinishedTimesheets(OrderElement orderElement) {
|
||||
SumChargedEffort sumChargedEffort = getByOrderElement(orderElement);
|
||||
sumChargedEffort.setFinishedTimesheets(workReportLineDAO
|
||||
.isFinished(orderElement));
|
||||
save(sumChargedEffort);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public Set<OrderElement> getOrderElementsToRecalculateTimsheetDates(
|
||||
|
|
@ -371,11 +392,13 @@ public class SumChargedEffortDAO extends
|
|||
|
||||
@Override
|
||||
@Transactional
|
||||
public void recalculateTimesheetDates(Set<OrderElement> orderElements) {
|
||||
public void recalculateTimesheetData(Set<OrderElement> orderElements) {
|
||||
try {
|
||||
for (OrderElement orderElement : orderElements) {
|
||||
saveTimesheetDatesRecursively(orderElementDAO.find(orderElement
|
||||
.getId()));
|
||||
calculateFinishedTimesheets(orderElementDAO.find(orderElement
|
||||
.getId()));
|
||||
}
|
||||
} catch (InstanceNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
|
|
|
|||
|
|
@ -72,4 +72,6 @@ public interface IWorkReportLineDAO extends
|
|||
List<WorkReportLine> findByOrderElementNotInWorkReportAnotherTransaction(
|
||||
OrderElement orderElement, WorkReport workReport);
|
||||
|
||||
Boolean isFinished(OrderElement orderElement);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -189,4 +189,14 @@ public class WorkReportLineDAO extends IntegrationEntityDAO<WorkReportLine>
|
|||
return (List<WorkReportLine>) criteria.list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean isFinished(OrderElement orderElement) {
|
||||
Criteria criteria = getSession().createCriteria(WorkReportLine.class);
|
||||
|
||||
criteria.add(Restrictions.eq("orderElement", orderElement));
|
||||
criteria.add(Restrictions.eq("finished", true));
|
||||
|
||||
return criteria.uniqueResult() != null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -440,7 +440,7 @@ public class PersonalTimesheetModel implements IPersonalTimesheetModel {
|
|||
workReport.generateWorkReportLineCodes(entitySequenceDAO
|
||||
.getNumberOfDigitsCode(EntityNameEnum.WORK_REPORT));
|
||||
workReportDAO.save(workReport);
|
||||
sumChargedEffortDAO.recalculateTimesheetDates(orderElements);
|
||||
sumChargedEffortDAO.recalculateTimesheetData(orderElements);
|
||||
}
|
||||
|
||||
resetModifiedFields();
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ public class WorkReportModel extends IntegrationEntityModel implements
|
|||
.getWorkReportLines());
|
||||
|
||||
workReportDAO.save(workReport);
|
||||
sumChargedEffortDAO.recalculateTimesheetDates(orderElements);
|
||||
sumChargedEffortDAO.recalculateTimesheetData(orderElements);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -429,7 +429,7 @@ public class WorkReportModel extends IntegrationEntityModel implements
|
|||
.updateRelatedSumChargedEffortWithDeletedWorkReportLineSet(workReport
|
||||
.getWorkReportLines());
|
||||
workReportDAO.remove(workReport.getId());
|
||||
sumChargedEffortDAO.recalculateTimesheetDates(orderElements);
|
||||
sumChargedEffortDAO.recalculateTimesheetData(orderElements);
|
||||
} catch (InstanceNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ public class WorkReportServiceREST extends
|
|||
|
||||
@Override
|
||||
protected void afterSaving(WorkReport entity) {
|
||||
sumChargedEffortDAO.recalculateTimesheetDates(orderElements);
|
||||
sumChargedEffortDAO.recalculateTimesheetData(orderElements);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -156,7 +156,7 @@ public class WorkReportServiceREST extends
|
|||
.updateRelatedSumChargedEffortWithDeletedWorkReportLineSet(workReport
|
||||
.getWorkReportLines());
|
||||
workReportDAO.remove(workReport.getId());
|
||||
sumChargedEffortDAO.recalculateTimesheetDates(orderElements);
|
||||
sumChargedEffortDAO.recalculateTimesheetData(orderElements);
|
||||
return Response.ok().build();
|
||||
} catch (InstanceNotFoundException e) {
|
||||
return Response.status(Status.NOT_FOUND).build();
|
||||
|
|
@ -177,7 +177,7 @@ public class WorkReportServiceREST extends
|
|||
.updateRelatedSumChargedEffortWithDeletedWorkReportLineSet(new HashSet<WorkReportLine>(
|
||||
Arrays.asList(workReportLine)));
|
||||
workReportLineDAO.remove(workReportLine.getId());
|
||||
sumChargedEffortDAO.recalculateTimesheetDates(orderElements);
|
||||
sumChargedEffortDAO.recalculateTimesheetData(orderElements);
|
||||
return Response.ok().build();
|
||||
} catch (InstanceNotFoundException e) {
|
||||
return Response.status(Status.NOT_FOUND).build();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue