commit
This commit is contained in:
@@ -134,6 +134,15 @@ public interface ProcessTaskService extends BaseService<ProcessTask> {
|
||||
*/
|
||||
void removeTaskActor(Long processTaskId, List<String> actors);
|
||||
|
||||
/**
|
||||
* 按最新办理人配置覆盖同步指定流程任务的参与者。
|
||||
*
|
||||
* @param processTaskId 流程任务id
|
||||
* @param actors 最新办理人用户id集合;为空时不处理,避免误清空任务办理人
|
||||
* @return 新增和移除的参与者数量合计
|
||||
*/
|
||||
int syncTaskActors(Long processTaskId, List<String> actors);
|
||||
|
||||
/**
|
||||
* 根据taskId、operator,判断操作人operator是否允许执行任务
|
||||
*
|
||||
|
||||
@@ -279,6 +279,31 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl<ProcessTask> impleme
|
||||
dao().clear(ProcessTaskActor.class, Cnd.where(ProcessTaskActor::getProcessTaskId, "=", processTaskId).and(ProcessTaskActor::getActorId, "in", actors));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public int syncTaskActors(Long processTaskId, List<String> actors) {
|
||||
if (CollectionUtil.isEmpty(actors)) {
|
||||
return 0;
|
||||
}
|
||||
List<String> latestActors = actors.stream().filter(StrUtil::isNotBlank).distinct().toList();
|
||||
if (CollectionUtil.isEmpty(latestActors)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 以最新负责人配置为准:缺失的办理人补上,不再是负责人的办理人移除。
|
||||
List<String> dbActors = getTaskActors(processTaskId);
|
||||
List<String> addActors = latestActors.stream().filter(actor -> !dbActors.contains(actor)).toList();
|
||||
List<String> removeActors = dbActors.stream().filter(actor -> !latestActors.contains(actor)).toList();
|
||||
|
||||
if (CollectionUtil.isNotEmpty(removeActors)) {
|
||||
removeTaskActor(processTaskId, removeActors);
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(addActors)) {
|
||||
addTaskActor(processTaskId, addActors);
|
||||
}
|
||||
return addActors.size() + removeActors.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllowed(ProcessTask task, String operator) {
|
||||
// 执行者为超级管理员或自动执行用户
|
||||
|
||||
Reference in New Issue
Block a user