提交 17513a83 编写于 作者: NoSubject's avatar NoSubject

Merge branch 'hotfix/forceRoute' into 'release'

默认禁用touchDetained

See merge request o2oa/o2oa!2447
......@@ -433,7 +433,7 @@ public class ProcessPlatform extends ConfigObject {
public static final String DEFAULT_CRON = "30 30 12 * * ?";
public static final Boolean DEFAULT_ENABLE = true;
public static final Boolean DEFAULT_ENABLE = false;
public static final Integer DEFAULT_THRESHOLDMINUTES = 60 * 24;
......
package com.x.processplatform.service.processing.jaxrs.work;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import com.google.gson.JsonElement;
......@@ -19,6 +24,7 @@ import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.processplatform.core.entity.content.TaskCompleted;
import com.x.processplatform.core.entity.content.Work;
import com.x.processplatform.core.entity.content.WorkLog;
import com.x.processplatform.core.entity.element.Activity;
......@@ -133,6 +139,21 @@ class V2Rollback extends BaseAction {
.filter(o -> !aeiObjects.getUpdateTaskCompleteds().contains(o))
.forEach(aeiObjects.getDeleteTaskCompleteds()::add);
// 调整latest标识,否则有不是latest的已办不会在已办列表中显示
aeiObjects.getTaskCompleteds().stream().filter(o -> !aeiObjects.getDeleteTaskCompleteds().contains(o))
.collect(Collectors.groupingBy(TaskCompleted::getPerson)).entrySet().stream()
.map(Map.Entry::getValue)
.filter(o -> o.stream().noneMatch(t -> BooleanUtils.isTrue(t.getLatest()))).forEach(o -> {
Optional<TaskCompleted> opt = o.stream()
.sorted(Comparator.comparing(TaskCompleted::getCompletedTime,
Comparator.nullsFirst(Date::compareTo).reversed()))
.findFirst();
if (opt.isPresent()) {
opt.get().setLatest(true);
aeiObjects.getUpdateTaskCompleteds().add(opt.get());
}
});
aeiObjects.getReads().stream().filter(o -> activityTokens.contains(o.getActivityToken()))
.forEach(aeiObjects.getDeleteReads()::add);
......
package com.x.processplatform.service.processing.jaxrs.workcompleted;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -213,6 +218,7 @@ class ActionRollback extends BaseAction {
private void rollbackTaskCompleted(Business business, Work work, Nodes nodes, WorkLog workLog,
List<TaskCompleted> list) throws Exception {
List<TaskCompleted> remains = new ArrayList<>();
for (TaskCompleted o : list) {
if (!nodes.containsWorkLogWithActivityToken(o.getActivityToken())) {
business.entityManagerContainer().remove(o);
......@@ -222,12 +228,26 @@ class ActionRollback extends BaseAction {
o.setCompleted(false);
o.setWorkCompleted("");
o.setWork(work.getId());
remains.add(o);
} else {
o.setCompleted(false);
o.setWorkCompleted("");
o.setWork(work.getId());
remains.add(o);
}
}
// 调整latest标识,否则有不是latest的已办不会在已办列表中显示
remains.stream().collect(Collectors.groupingBy(TaskCompleted::getPerson)).entrySet().stream()
.map(Map.Entry::getValue).filter(o -> o.stream().noneMatch(t -> BooleanUtils.isTrue(t.getLatest())))
.forEach(o -> {
Optional<TaskCompleted> opt = o.stream()
.sorted(Comparator.comparing(TaskCompleted::getCompletedTime,
Comparator.nullsFirst(Date::compareTo).reversed()))
.findFirst();
if (opt.isPresent()) {
opt.get().setLatest(true);
}
});
}
private void rollbackRead(Business business, Work work, Nodes nodes, WorkLog workLog, List<Read> list)
......
......@@ -208,6 +208,7 @@ public abstract class AbstractProcessor extends AbstractBaseProcessor {
}
List<Work> works = new ArrayList<>();
// 8.2版本以前没有使用destinationActivity作为强制路由,如果这里不单独判断,老版本的数据会原地转圈,在同一环节再次进入,重新生成activityToken,现象就是所有待办会重新生成.
// 调度reroute靠此代码跳过执行.
if (StringUtils.isNotEmpty(work.getDestinationActivity())
&& Objects.nonNull(work.getDestinationActivityType())
&& BooleanUtils.isTrue(aeiObjects.getWork().getForceRouteEnable())) {
......
......@@ -823,8 +823,8 @@ public class ManualProcessor extends AbstractManualProcessor {
aeiObjects.getWork().setGoBackActivityToken(null);
return optional;
}
ManualTaskIdentityMatrix matrix = aeiObjects.getWork().getManualTaskIdentityMatrix();
Tickets tickets = aeiObjects.getWork().getTickets();
// ManualTaskIdentityMatrix matrix = aeiObjects.getWork().getManualTaskIdentityMatrix();
// Tickets tickets = aeiObjects.getWork().getTickets();
// 执行强制路由
if (StringUtils.isNotEmpty(aeiObjects.getWork().getDestinationActivity())
&& Objects.nonNull(aeiObjects.getWork().getDestinationActivityType())
......@@ -844,14 +844,14 @@ public class ManualProcessor extends AbstractManualProcessor {
return Optional.of(route);
}
}
// workTrigger触发可能导致当前没有任何待办
if (aeiObjects.getTaskCompleteds().stream()
.filter(o -> StringUtils.equalsIgnoreCase(aeiObjects.getWork().getActivityToken(),
o.getActivityToken()))
.findAny().isEmpty()
&& ((null == matrix || matrix.isEmpty()) && (null == tickets || tickets.bubble().isEmpty()))) {
return Optional.empty();
}
// // workTrigger触发可能导致当前没有任何待办
// if (aeiObjects.getTaskCompleteds().stream()
// .filter(o -> StringUtils.equalsIgnoreCase(aeiObjects.getWork().getActivityToken(),
// o.getActivityToken()))
// .findAny().isEmpty()
// && ((null == matrix || matrix.isEmpty()) && (null == tickets || tickets.bubble().isEmpty()))) {
// return Optional.empty();
// }
// 执行正常路由
if (aeiObjects.getRoutes().size() == 1) {
// 仅有单条路由
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册