19 package org.turro.erp.task;
21 import java.util.ArrayList;
22 import java.util.Collection;
23 import java.util.Date;
24 import java.util.List;
25 import java.util.TreeSet;
26 import org.turro.elephant.db.WhereClause;
27 import org.turro.erp.db.ErpPU;
28 import org.turro.erp.entity.HumanResource;
29 import org.turro.erp.entity.OrderItem;
30 import org.turro.erp.entity.RequiredUsage;
31 import org.turro.erp.entity.Resource;
32 import org.turro.erp.entity.Task;
33 import org.turro.erp.entity.TaskStatus;
34 import org.turro.jpa.Dao;
44 private boolean assigned;
47 this.assigned = assigned;
52 this.assigned = assigned;
61 this.humanResource = humanResource;
71 this.resource = resource;
72 this.humanResource =
null;
77 ArrayList<RequiredUsage> list =
new ArrayList<RequiredUsage>();
85 ArrayList<OrderItem> list =
new ArrayList<OrderItem>();
92 private void generateList() {
98 wc.
addClause(
"select distinct oi from OrderItem as oi");
99 wc.
addClause(
"where oi.requiredUsage.task.status <> :status1");
100 wc.
addClause(
"and oi.requiredUsage.task.status <> :status2");
101 if(humanResource !=
null) {
102 wc.
addClause(
"and oi.humanResource = :humanRes1");
104 }
else if(resource !=
null) {
105 wc.
addClause(
"and oi.related.resource = :resource1");
110 Date now =
new Date();
111 Dao dao =
new ErpPU();
112 for(OrderItem oi : (List<OrderItem>) dao.getResultList(wc)) {
113 Task task = oi.getRequiredUsage().getTask();
114 task.checkStatus(now);
115 if(TaskStatus.isOnWork(task.getStatus())) {
116 if(resource !=
null) {
117 add(
new Workload(oi.getRelated()));
119 add(
new Workload(oi));
124 WhereClause wc =
new WhereClause();
125 wc.addClause(
"select distinct ru from RequiredUsage as ru");
126 wc.addClause(
"where ru.task.status <> :status1");
127 wc.addClause(
"and ru.task.status <> :status2");
128 wc.addNamedValue(
"status1", TaskStatus.TASK_PLANNING);
129 wc.addNamedValue(
"status2", TaskStatus.TASK_FINISHED);
130 if(humanResource !=
null) {
131 wc.addClause(
"and (ru.humanResource = :humanRes1");
132 wc.addNamedValue(
"humanRes1", humanResource);
133 wc.addClause(
"or ru.canChange = TRUE");
135 }
else if(resource !=
null) {
136 wc.addClause(
"and ru.resource = :resource1");
137 wc.addNamedValue(
"resource1", resource);
139 wc.addClause(
"and (ru.humanResource is not null or ru.resource is not null)");
142 Date now =
new Date();
143 Dao dao =
new ErpPU();
144 for(RequiredUsage ru : (List<RequiredUsage>) dao.getResultList(wc)) {
145 if(ru.getEstimatedUnits() > ru.getExpectedUnits()) {
146 Task task = ru.getTask();
147 task.checkStatus(now);
148 if(TaskStatus.isOnWork(task.getStatus()) && (humanResource ==
null || ru.fits(humanResource))) {
149 add(
new Workload(ru));
void addClause(String clause)
void addNamedValue(String name, Object value)
void setHumanResource(HumanResource humanResource)
Collection< RequiredUsage > getRequiredUsages()
WorkloadSet(Resource resource, boolean assigned)
Collection< OrderItem > getOrderItems()
WorkloadSet(HumanResource humanResource, boolean assigned)
void setResource(Resource resource)
HumanResource getHumanResource()
RequiredUsage getRequiredUsage()