xiangpei
2024-12-26 29fdcdb1c3870bb34fd9913a9cc3624d5dd13952
转办的部分实现
4个文件已修改
1个文件已添加
87 ■■■■ 已修改文件
business/src/main/java/com/ycl/controller/ProjectProcessController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/form/TaskDelegationForm.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/ProjectProcessService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/java/com/ycl/common/enums/business/HandlerTypeEnum.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/controller/ProjectProcessController.java
@@ -3,6 +3,7 @@
import com.ycl.common.group.Update;
import com.ycl.common.group.Add;
import com.ycl.domain.form.RejectTaskForm;
import com.ycl.domain.form.TaskDelegationForm;
import com.ycl.domain.query.TaskQuery;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -82,11 +83,11 @@
        return projectProcessService.taskIsAuditing(processDefId, taskId);
    }
    @PostMapping("/detail/task/reject")
    @ApiOperation(value = "驳回", notes = "驳回")
    @PostMapping("/detail/task/delegation")
    @ApiOperation(value = "转办", notes = "将任务委托给其它人办理")
//    @PreAuthorize("@ss.hasPermi('projectProcess:detail')")
    public Result rejectTask(@RequestBody RejectTaskForm form) {
        return projectProcessService.rejectTask(form);
    public Result taskDelegation(@RequestBody TaskDelegationForm form) {
        return projectProcessService.taskDelegation(form);
    }
business/src/main/java/com/ycl/domain/form/TaskDelegationForm.java
New file
@@ -0,0 +1,36 @@
package com.ycl.domain.form;
import com.ycl.common.enums.business.HandlerTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * 任务转办
 *
 * @author:xp
 * @date:2024/12/13 13:51
 */
@Data
@ApiModel("任务转办表单")
public class TaskDelegationForm {
    /**
     * 当前任务id
     *
     */
    private String taskId;
    /**
     * 用户组类型
     *
     */
    private HandlerTypeEnum peopleType;
    /**
     * 不同用户组对应选择的id
     *
     */
    @ApiModelProperty("不同用户组对应选择的id, 如:peopleType是角色,这里就对应角色id,多个用英文逗号隔开")
    private String targetId;
}
business/src/main/java/com/ycl/service/ProjectProcessService.java
@@ -5,6 +5,7 @@
import com.ycl.common.base.Result;
import com.ycl.domain.form.ProjectProcessForm;
import com.ycl.domain.form.RejectTaskForm;
import com.ycl.domain.form.TaskDelegationForm;
import com.ycl.domain.query.ProjectProcessQuery;
import com.ycl.domain.query.TaskQuery;
import com.ycl.domain.vo.CustomerTaskVO;
@@ -81,10 +82,10 @@
    Result taskIsAuditing(String processDefinitionId, String taskId);
    /**
     * 驳回任务
     * 任务转办
     *
     * @param form
     * @return
     */
    Result rejectTask(RejectTaskForm form);
    Result taskDelegation(TaskDelegationForm form);
}
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -20,6 +20,7 @@
import com.ycl.domain.entity.ProjectInfo;
import com.ycl.domain.entity.ProjectProcess;
import com.ycl.domain.form.RejectTaskForm;
import com.ycl.domain.form.TaskDelegationForm;
import com.ycl.domain.vo.CustomerTaskVO;
import com.ycl.domain.vo.ProjectProcessDetailVO;
import com.ycl.mapper.ProjectInfoMapper;
@@ -360,10 +361,31 @@
    }
    @Override
    public Result rejectTask(RejectTaskForm form) {
        Task task = taskService.createTaskQuery().taskId(form.getTaskId()).singleResult();
        taskCommonService.reject(form.getRejectedTaskDefKey(), task.getTaskDefinitionKey(), task.getProcessInstanceId(), form.getTaskId(), form.getAuditOpinion());
        return Result.ok("驳回成功");
    public Result taskDelegation(TaskDelegationForm form) {
        Task task = taskService.createTaskQuery().taskId(form.getTaskId()).includeIdentityLinks().singleResult();
        if (Objects.isNull(task)) {
            throw new RuntimeException("未在运行任务中找到该任务,无法执行转办操作");
        }
        // 需要先移除之前的处理人
        for (IdentityLinkInfo identityLink : task.getIdentityLinks()) {
            if (StringUtils.isNotBlank(identityLink.getUserId())) {
                taskService.deleteCandidateUser(task.getId(), identityLink.getUserId());
            } else if (StringUtils.isNotBlank(identityLink.getGroupId())) {
                taskService.deleteCandidateGroup(task.getId(), identityLink.getGroupId());
            }
        }
        // 再新增处理人
        switch (form.getPeopleType()) {
            case FIX_USER:
                // 指定用户的话,只能选一个用户
                taskService.delegateTask(task.getId(), form.getTargetId());
                break;
            case USER:
                // 用户组的话,可以选多个用户,严格来说这里的用户组并不是flowable中的组的概念,只是开源框架有这个定义
        }
        return Result.ok("转办成功");
    }
    /**
common/src/main/java/com/ycl/common/enums/business/HandlerTypeEnum.java
@@ -12,9 +12,10 @@
@Getter
public enum HandlerTypeEnum {
    USER("USER", "用户"),
    DEPT("DEPT", "部门"),
    ROLE("ROLE", "角色")
    USER("USER", "用户组"),  // 严格来说这里的用户组并不是flowable中的组的概念,只是开源框架有这个定义,它只是能配置多个用户
    FIX_USER("FIX_USER", "指定用户"), // 只能选择一个人
    DEPT("DEPT", "部门组"), // 可以选择多个部门
    ROLE("ROLE", "角色组") // 可以选择多个角色
    ;
    @JsonValue