K požadavku se ukládá aktuální nastavení procesu schválení, takže změna
nastavení neovlivní existující požadavky. refs #108 refs #100
This commit is contained in:
@@ -21,9 +21,13 @@ import org.hibernate.annotations.LazyCollectionOption;
|
|||||||
@MappedSuperclass
|
@MappedSuperclass
|
||||||
public class RequirementBase extends BaseData {
|
public class RequirementBase extends BaseData {
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.EAGER)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "TYPE_ID")
|
@JoinColumn(name = "TYPE_ID")
|
||||||
private RequirementType type;
|
private RequirementType type;
|
||||||
|
@OneToMany(cascade = CascadeType.ALL)
|
||||||
|
@LazyCollection(LazyCollectionOption.TRUE)
|
||||||
|
@OrderBy("WORDER")
|
||||||
|
private List<Workflow> workflow;
|
||||||
@Column(name = "NUMSER", unique = true)
|
@Column(name = "NUMSER", unique = true)
|
||||||
private String numser;
|
private String numser;
|
||||||
@Column(name = "REQ_DATE")
|
@Column(name = "REQ_DATE")
|
||||||
@@ -46,6 +50,7 @@ public class RequirementBase extends BaseData {
|
|||||||
|
|
||||||
public RequirementBase() {
|
public RequirementBase() {
|
||||||
authorization = new ArrayList<AuthItem>();
|
authorization = new ArrayList<AuthItem>();
|
||||||
|
workflow = new ArrayList<Workflow>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public RequirementType getType() {
|
public RequirementType getType() {
|
||||||
@@ -114,4 +119,12 @@ public class RequirementBase extends BaseData {
|
|||||||
this.centre = centre;
|
this.centre = centre;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Workflow> getWorkflow() {
|
||||||
|
return workflow;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkflow(List<Workflow> workflow) {
|
||||||
|
this.workflow = workflow;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class RequirementType extends BaseData {
|
|||||||
private String type;
|
private String type;
|
||||||
@Column(name = "DESCRIPTION")
|
@Column(name = "DESCRIPTION")
|
||||||
private String description;
|
private String description;
|
||||||
@OneToMany(cascade = CascadeType.ALL)
|
@OneToMany(cascade = CascadeType.ALL, orphanRemoval=true)
|
||||||
@LazyCollection(LazyCollectionOption.FALSE)
|
@LazyCollection(LazyCollectionOption.FALSE)
|
||||||
@OrderBy("WORDER")
|
@OrderBy("WORDER")
|
||||||
private List<Workflow> workflow;
|
private List<Workflow> workflow;
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import java.util.List;
|
|||||||
public interface RequirementBaseService<T extends RequirementBase> {
|
public interface RequirementBaseService<T extends RequirementBase> {
|
||||||
|
|
||||||
public void loadAuthItems(T data);
|
public void loadAuthItems(T data);
|
||||||
|
public void loadType(T data);
|
||||||
|
public void loadWorkflow(T data);
|
||||||
public void approve(T entity);
|
public void approve(T entity);
|
||||||
public boolean canApprove(T entity);
|
public boolean canApprove(T entity);
|
||||||
public List<User> getNextApprover(T entity);
|
public List<User> getNextApprover(T entity);
|
||||||
|
|||||||
+40
-4
@@ -19,6 +19,21 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
public abstract class RequirementBaseServiceImpl<T extends RequirementBase> extends
|
public abstract class RequirementBaseServiceImpl<T extends RequirementBase> extends
|
||||||
AbstractOwnedService<T> implements RequirementBaseService<T> {
|
AbstractOwnedService<T> implements RequirementBaseService<T> {
|
||||||
|
|
||||||
|
protected void addWorkflow(T entity) {
|
||||||
|
if (entity.getType() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Workflow w : entity.getType().getWorkflow()) {
|
||||||
|
Workflow workflow = new Workflow();
|
||||||
|
workflow.setCentre(w.getCentre());
|
||||||
|
workflow.setLimit(w.getLimit());
|
||||||
|
workflow.setOrder(w.getOrder());
|
||||||
|
workflow.setRole(w.getRole());
|
||||||
|
entity.getWorkflow().add(workflow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
@@ -59,6 +74,23 @@ public abstract class RequirementBaseServiceImpl<T extends RequirementBase> exte
|
|||||||
e.getAuthorization().size();
|
e.getAuthorization().size();
|
||||||
entity.setAuthorization(e.getAuthorization());
|
entity.setAuthorization(e.getAuthorization());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void loadType(T data) {
|
||||||
|
T e = dao.getById(data.getId());
|
||||||
|
e.getType().getType();
|
||||||
|
data.setType(e.getType());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void loadWorkflow(T data) {
|
||||||
|
T e = dao.getById(data.getId());
|
||||||
|
e.getWorkflow().size();
|
||||||
|
data.setWorkflow(e.getWorkflow());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
@@ -103,16 +135,20 @@ public abstract class RequirementBaseServiceImpl<T extends RequirementBase> exte
|
|||||||
|
|
||||||
private Workflow getNextWorkflow(T e) {
|
private Workflow getNextWorkflow(T e) {
|
||||||
AuthItem authItem = null;
|
AuthItem authItem = null;
|
||||||
|
if (e.getWorkflow() == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
if (e.getAuthorization().size() > 0) {
|
if (e.getAuthorization().size() > 0) {
|
||||||
authItem = e.getAuthorization().get(e.getAuthorization().size() - 1);
|
authItem = e.getAuthorization().get(e.getAuthorization().size() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
Workflow wf = null;
|
Workflow wf = null;
|
||||||
for (int i = 0; i < e.getType().getWorkflow().size(); i++) {
|
for (int i = 0; i < e.getWorkflow().size(); i++) {
|
||||||
wf = e.getType().getWorkflow().get(i);
|
wf = e.getWorkflow().get(i);
|
||||||
if (authItem != null && wf.getRole().equals(authItem.getRole())) {
|
if (authItem != null && wf.getRole().equals(authItem.getRole())) {
|
||||||
if (i + 1 < e.getType().getWorkflow().size()) {
|
if (i + 1 < e.getWorkflow().size()) {
|
||||||
wf = e.getType().getWorkflow().get(i + 1);
|
wf = e.getWorkflow().get(i + 1);
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ public class TripRequirementServiceImpl extends RequirementBaseServiceImpl<TripR
|
|||||||
tr.setReqDate(new Date());
|
tr.setReqDate(new Date());
|
||||||
tr.setType(reqTypeService.getTypeById(Constants.REQTYPE_BUSINESSTRIP));
|
tr.setType(reqTypeService.getTypeById(Constants.REQTYPE_BUSINESSTRIP));
|
||||||
tr.setState(RequirementState.NEW);
|
tr.setState(RequirementState.NEW);
|
||||||
|
addWorkflow(tr);
|
||||||
return tr;
|
return tr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ public class RequirementSubpage<T extends RequirementBase> extends ListViewModel
|
|||||||
@Override
|
@Override
|
||||||
protected void loadLazyData(T data) {
|
protected void loadLazyData(T data) {
|
||||||
this.getReqService().loadAuthItems(data);
|
this.getReqService().loadAuthItems(data);
|
||||||
|
this.getReqService().loadWorkflow(data);
|
||||||
|
this.getReqService().loadType(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command
|
@Command
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<label value="Stav schválení: "/>
|
<label value="Stav schválení: "/>
|
||||||
<button label="Schválit" onClick="@command('approve')" disabled="@load(not vmSub.canApprove)"/>
|
<button label="Schválit" onClick="@command('approve')" disabled="@load(not vmSub.canApprove)"/>
|
||||||
<vbox children="@load(vmSub.dataBean.type.workflow)">
|
<vbox children="@load(vmSub.dataBean.workflow)">
|
||||||
<template name="children">
|
<template name="children">
|
||||||
<grid model="@load(vmSub.dataBean.authorization)">
|
<grid model="@load(vmSub.dataBean.authorization)">
|
||||||
<columns>
|
<columns>
|
||||||
|
|||||||
Reference in New Issue
Block a user