update 调整任务委托,转办,优化部分代码等

This commit is contained in:
gssong 2024-12-07 13:14:06 +08:00
parent ee1d31405e
commit b60e3fba27
10 changed files with 15 additions and 54 deletions

View File

@ -15,7 +15,6 @@ import org.dromara.common.core.enums.UserType;
import java.util.Set;
import static org.dromara.common.core.enums.TaskAssigneeEnum.USER;
/**
* 登录鉴权助手

View File

@ -158,11 +158,11 @@ public class FlwTaskController extends BaseController {
* 任务操作
*
* @param bo 参数
* @param taskOperation 操作类型区分委派转办加签减签修改办理人
* @param taskOperation 操作类型委派 delegateTask转办 transferTask加签 addSignature减签 reductionSignature
*/
@Log(title = "任务管理", businessType = BusinessType.UPDATE)
@RepeatSubmit
@PostMapping("/{taskOperation}")
@PostMapping("/taskOperation/{taskOperation}")
public R<Void> taskOperation(@Validated @RequestBody TaskOperationBo bo, @PathVariable String taskOperation) {
return toAjax(flwTaskService.taskOperation(bo, taskOperation));
}

View File

@ -2,17 +2,13 @@ package org.dromara.workflow.domain.bo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import java.io.Serial;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import static org.dromara.common.core.enums.TaskAssigneeEnum.USER;
/**
* 任务操作业务对象用于描述任务委派转办加签等操作的必要参数
@ -27,7 +23,7 @@ public class TaskOperationBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 委派/转办人的用户ID必填准对委派/转办人/修改办理人操作
* 委派/转办人的用户ID必填准对委派/转办人操作
*/
@NotNull(message = "委派/转办人id不能为空", groups = {AddGroup.class})
private String userId;
@ -49,32 +45,4 @@ public class TaskOperationBo implements Serializable {
*/
private String message;
/**
* 获取委派或转办的用户标识符列表
* <p>
* 该方法将用户的代码 `USER.getCode()` 获取与当前用户的 ID`userId`进行拼接返回一个包含拼接结果的单一元素列表
*
* @return 返回一个包含用户标识符的单一元素列表
*/
public List<String> getUserIdentifiers() {
return Optional.ofNullable(userId)
.map(id -> Collections.singletonList(USER.getCode() + id))
.orElse(Collections.emptyList());
}
/**
* 获取加签或减签的用户标识符列表
* <p>
* 该方法将用户代码 `USER.getCode()` 获取 `userIds` 列表中的每个用户ID拼接
* 返回一个新的列表每个元素都是用户代码与用户ID的拼接结果
*
* @return 返回一个包含所有用户标识符的列表
*/
public List<String> getAllUserIdentifiers() {
return Optional.ofNullable(userIds)
.filter(ids -> !ids.isEmpty())
.map(ids -> StreamUtils.toList(ids, id -> USER.getCode() + id))
.orElse(Collections.emptyList());
}
}

View File

@ -5,7 +5,6 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import static org.dromara.common.core.enums.TaskAssigneeEnum.USER;
/**
* 抄送
@ -28,8 +27,4 @@ public class WfCopy implements Serializable {
*/
private String userName;
public String getUserId() {
return USER.getCode() + userId;
}
}

View File

@ -50,8 +50,7 @@ public class WorkflowPermissionHandler implements PermissionHandler {
.map(post -> TaskAssigneeEnum.POST.getCode() + post.getPostId()),
// 用户和部门权限
Stream.of(
TaskAssigneeEnum.USER.getCode() + loginUser.getUserId(),
Stream.of(String.valueOf(loginUser.getUserId()),
TaskAssigneeEnum.DEPT.getCode() + loginUser.getDeptId()
)
)

View File

@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.warm.flow.core.dto.FlowParams;
import org.dromara.warm.flow.core.entity.Definition;
import org.dromara.warm.flow.core.entity.Instance;
@ -39,7 +40,7 @@ public class WorkflowGlobalListener implements GlobalListener {
Definition definition = listenerVariable.getDefinition();
FlowParams flowParams = listenerVariable.getFlowParams();
//撤销退回作废终止发送事件
if (BusinessStatusEnum.initialState(flowParams.getFlowStatus())) {
if (flowParams != null && StringUtils.isNotBlank(flowParams.getFlowStatus()) && BusinessStatusEnum.initialState(flowParams.getFlowStatus())) {
publishProcessEvent(flowParams.getFlowStatus(), definition.getFlowCode(), instance.getBusinessId());
log.info("流程监听器流程状态:{}", flowParams.getFlowStatus());
}

View File

@ -167,7 +167,7 @@ public interface IFlwTaskService {
* 任务操作
*
* @param bo 参数
* @param taskOperation 操作类型区分委派转办加签减签修改办理人
* @param taskOperation 操作类型委派 delegateTask转办 transferTask加签 addSignature减签 reductionSignature
* @return 结果
*/
boolean taskOperation(TaskOperationBo bo, String taskOperation);

View File

@ -238,7 +238,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService {
.map(wfCopy -> {
FlowUser flowUser = new FlowUser();
flowUser.setType(TaskAssigneeType.COPY.getCode());
flowUser.setProcessedBy(wfCopy.getUserId());
flowUser.setProcessedBy(String.valueOf(wfCopy.getUserId()));
flowUser.setAssociated(taskId);
return flowUser;
}).collect(Collectors.toList());
@ -519,7 +519,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService {
* 任务操作
*
* @param bo 参数
* @param taskOperation 操作类型区分委派转办加签减签修改办理人
* @param taskOperation 操作类型委派 delegateTask转办 transferTask加签 addSignature减签 reductionSignature
*/
@Override
@Transactional(rollbackFor = Exception.class)
@ -529,13 +529,13 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService {
// 根据操作类型构建 FlowParams
switch (taskOperation) {
case "delegateTask", "transferTask", "addSignature" -> {
case "delegateTask", "transferTask" -> {
ValidatorUtils.validate(bo, AddGroup.class);
flowParams.addHandlers(bo.getUserIdentifiers());
flowParams.addHandlers(Collections.singletonList(bo.getUserId()));
}
case "reductionSignature" -> {
case "reductionSignature", "addSignature" -> {
ValidatorUtils.validate(bo, EditGroup.class);
flowParams.reductionHandlers(bo.getAllUserIdentifiers());
flowParams.reductionHandlers(bo.getUserIds());
}
default -> {
log.error("Invalid operation type:{} ", taskOperation);

View File

@ -39,7 +39,7 @@ import java.util.Optional;
@RequiredArgsConstructor
@Service
public class WfTaskAssigneeServiceImpl implements IWfTaskAssigneeService, HandlerSelectService {
final static String DEFAULT_GROUP_NAME = "默认分组";
static final String DEFAULT_GROUP_NAME = "默认分组";
private final UserService userService;
private final DeptService deptService;
private final RoleService roleService;

View File

@ -12,7 +12,6 @@ import org.dromara.workflow.service.IWfTaskAssigneeService;
import java.util.*;
import java.util.stream.Collectors;
import static org.dromara.common.core.enums.TaskAssigneeEnum.USER;
/**
* 工作流工具
@ -62,7 +61,7 @@ public class WorkflowUtils {
users.forEach(dto -> {
FlowUser flowUser = new FlowUser();
flowUser.setType(user.getType());
flowUser.setProcessedBy(USER.getCode()+dto.getUserId());
flowUser.setProcessedBy(String.valueOf(dto.getUserId()));
flowUser.setAssociated(taskId);
list.add(flowUser);
});