diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/control/ActionGetWorkOrWorkCompleted.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/control/ActionGetWorkOrWorkCompleted.java index 8b8d1a330e500d1a45e01e8dd68d54115788c8d1..c4513992ccbeb8c2d4ae05c844ca8a8425c7dda7 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/control/ActionGetWorkOrWorkCompleted.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/control/ActionGetWorkOrWorkCompleted.java @@ -111,15 +111,24 @@ class ActionGetWorkOrWorkCompleted extends BaseAction { wo.setAllowReset(PropertyTools.getOrElse(activity, Manual.allowReset_FIELDNAME, Boolean.class, false) && wo.getAllowSave()); // 是否可以调度 - wo.setAllowReroute(PropertyTools.getOrElse(activity, Manual.allowReroute_FIELDNAME, Boolean.class, false) + wo.setAllowReroute(PropertyTools.getOrElse(activity, Activity.allowReroute_FIELDNAME, Boolean.class, false) && this.canManageApplicationOrProcess(business, effectivePerson, work.getApplication(), work.getProcess())); // 是否可以删除 wo.setAllowDelete(PropertyTools.getOrElse(activity, Manual.allowDeleteWork_FIELDNAME, Boolean.class, false) && wo.getAllowSave()); // 是否可以挂起待办,暂停待办计时 - wo.setAllowPause(PropertyTools.getOrElse(activity, Manual.allowPause_FIELDNAME, Boolean.class, false) - && wo.getAllowPause()); + + if (PropertyTools.getOrElse(activity, Manual.allowPause_FIELDNAME, Boolean.class, false) + && wo.getAllowPause()) { + // 如果已经处于挂起状态,那么允许恢复 + if (this.hasPauseTaskWithWork(business, effectivePerson, work.getId())) { + wo.setAllowResume(true); + } else { + wo.setAllowPause(true); + } + } + // 是否可以增加会签分支 if (BooleanUtils.isTrue(PropertyTools.getOrElse(activity, Manual.allowAddSplit_FIELDNAME, Boolean.class, false)) && BooleanUtils.isTrue(work.getSplitting())) { @@ -179,14 +188,6 @@ class ActionGetWorkOrWorkCompleted extends BaseAction { } return false; }); -// Boolean o = this.hasTaskCompletedWithActivityToken.get(activityToken); -// if (null == o) { -// o = business.entityManagerContainer().countEqualAndEqual(TaskCompleted.class, -// TaskCompleted.person_FIELDNAME, effectivePerson.getDistinguishedName(), -// TaskCompleted.activityToken_FIELDNAME, activityToken) > 0; -// this.hasTaskCompletedWithActivityToken.put(activityToken, o); -// } -// return o; } private boolean hasTaskWithWork(Business business, EffectivePerson effectivePerson, String work) throws Exception { @@ -197,6 +198,16 @@ class ActionGetWorkOrWorkCompleted extends BaseAction { return this.hasTaskWithWork; } + private boolean hasPauseTaskWithWork(Business business, EffectivePerson effectivePerson, String work) + throws Exception { + if (null == this.hasTaskWithWork) { + this.hasTaskWithWork = business.entityManagerContainer().countEqualAndEqualAndEqual(Task.class, + Task.person_FIELDNAME, effectivePerson.getDistinguishedName(), Task.work_FIELDNAME, work, + Task.pause_FIELDNAME, true) > 0; + } + return this.hasTaskWithWork; + } + private boolean hasTaskCompletedWithJob(Business business, EffectivePerson effectivePerson, String job) throws Exception { if (null == this.hasTaskCompletedWithJob) { diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/control/BaseAction.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/control/BaseAction.java index d65ad33a39c06bd17de36f44a000167b298d0a4b..3269781cf8ff58b17a0946094522740733f6e088 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/control/BaseAction.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/control/BaseAction.java @@ -30,14 +30,6 @@ abstract class BaseAction extends StandardJaxrsAction { // 是否可以重置处理人 private Boolean allowReset = false; - public Boolean getAllowPause() { - return allowPause; - } - - public void setAllowPause(Boolean allowPause) { - this.allowPause = allowPause; - } - // 是否可以调度 private Boolean allowReroute = false; // 是否可以删除 @@ -52,11 +44,21 @@ abstract class BaseAction extends StandardJaxrsAction { private Boolean allowPress = false; // 是否可以待办挂起(暂停待办计时) private Boolean allowPause = false; + // 是否可以取消待办挂起(恢复待办计时) + private Boolean allowResume = false; public Boolean getAllowSave() { return allowSave; } + public Boolean getAllowPause() { + return allowPause; + } + + public void setAllowPause(Boolean allowPause) { + this.allowPause = allowPause; + } + public void setAllowSave(Boolean allowSave) { this.allowSave = allowSave; } @@ -141,6 +143,14 @@ abstract class BaseAction extends StandardJaxrsAction { this.allowPress = allowPress; } + public Boolean getAllowResume() { + return allowResume; + } + + public void setAllowResume(Boolean allowResume) { + this.allowResume = allowResume; + } + } protected CompletableFuture checkControlFuture(EffectivePerson effectivePerson, String flag) {