mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-09-29 22:56:40 +08:00
add 添加任务完成状态
This commit is contained in:
parent
cbbd81f2b9
commit
4554178f1b
@ -0,0 +1,89 @@
|
|||||||
|
package org.dromara.workflow.common.enums;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务状态枚举
|
||||||
|
*
|
||||||
|
* @author may
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum TaskStatusEnum {
|
||||||
|
/**
|
||||||
|
* 撤销
|
||||||
|
*/
|
||||||
|
CANCEL("cancel", "撤销"),
|
||||||
|
/**
|
||||||
|
* 通过
|
||||||
|
*/
|
||||||
|
PASS("pass", "通过"),
|
||||||
|
/**
|
||||||
|
* 待审核
|
||||||
|
*/
|
||||||
|
WAITING("waiting", "待审核"),
|
||||||
|
/**
|
||||||
|
* 作废
|
||||||
|
*/
|
||||||
|
INVALID("invalid", "作废"),
|
||||||
|
/**
|
||||||
|
* 退回
|
||||||
|
*/
|
||||||
|
BACK("back", "退回"),
|
||||||
|
/**
|
||||||
|
* 终止
|
||||||
|
*/
|
||||||
|
TERMINATION("termination", "终止"),
|
||||||
|
/**
|
||||||
|
* 转办
|
||||||
|
*/
|
||||||
|
TRANSFER("transfer", "转办"),
|
||||||
|
/**
|
||||||
|
* 委托
|
||||||
|
*/
|
||||||
|
PENDING("pending", "委托"),
|
||||||
|
/**
|
||||||
|
* 抄送
|
||||||
|
*/
|
||||||
|
COPY("copy", "抄送"),
|
||||||
|
/**
|
||||||
|
* 加签
|
||||||
|
*/
|
||||||
|
SIGN("sign", "加签"),
|
||||||
|
/**
|
||||||
|
* 减签
|
||||||
|
*/
|
||||||
|
SIGN_OFF("sign_off", "减签");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态
|
||||||
|
*/
|
||||||
|
private final String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
private final String desc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务业务状态
|
||||||
|
*
|
||||||
|
* @param status 状态
|
||||||
|
*/
|
||||||
|
public static String getEnumsByStatus(String status) {
|
||||||
|
if (StringUtils.isBlank(status)) {
|
||||||
|
return StrUtil.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (TaskStatusEnum statusEnum : TaskStatusEnum.values()) {
|
||||||
|
if (statusEnum.getStatus().equals(status)) {
|
||||||
|
return statusEnum.getDesc();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return StrUtil.EMPTY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -50,6 +50,10 @@ public class ActHistoryInfoVo implements Serializable {
|
|||||||
* 状态
|
* 状态
|
||||||
*/
|
*/
|
||||||
private String status;
|
private String status;
|
||||||
|
/**
|
||||||
|
* 状态
|
||||||
|
*/
|
||||||
|
private String statusName;
|
||||||
/**
|
/**
|
||||||
* 办理人id
|
* 办理人id
|
||||||
*/
|
*/
|
||||||
|
@ -15,6 +15,7 @@ import org.dromara.common.satoken.utils.LoginHelper;
|
|||||||
import org.dromara.common.tenant.helper.TenantHelper;
|
import org.dromara.common.tenant.helper.TenantHelper;
|
||||||
import org.dromara.workflow.common.constant.FlowConstant;
|
import org.dromara.workflow.common.constant.FlowConstant;
|
||||||
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
||||||
|
import org.dromara.workflow.common.enums.TaskStatusEnum;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
||||||
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
||||||
@ -239,17 +240,22 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
|||||||
.processInstanceId(processInstanceId).taskTenantId(TenantHelper.getTenantId()).orderByHistoricTaskInstanceEndTime().desc().list();
|
.processInstanceId(processInstanceId).taskTenantId(TenantHelper.getTenantId()).orderByHistoricTaskInstanceEndTime().desc().list();
|
||||||
list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed());
|
list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed());
|
||||||
List<ActHistoryInfoVo> actHistoryInfoVoList = new ArrayList<>();
|
List<ActHistoryInfoVo> actHistoryInfoVoList = new ArrayList<>();
|
||||||
|
List<Comment> processInstanceComments = taskService.getProcessInstanceComments(processInstanceId);
|
||||||
for (HistoricTaskInstance historicTaskInstance : list) {
|
for (HistoricTaskInstance historicTaskInstance : list) {
|
||||||
ActHistoryInfoVo actHistoryInfoVo = new ActHistoryInfoVo();
|
ActHistoryInfoVo actHistoryInfoVo = new ActHistoryInfoVo();
|
||||||
BeanUtils.copyProperties(historicTaskInstance, actHistoryInfoVo);
|
BeanUtils.copyProperties(historicTaskInstance, actHistoryInfoVo);
|
||||||
actHistoryInfoVo.setStatus(actHistoryInfoVo.getEndTime() == null ? "待处理" : "已处理");
|
if (actHistoryInfoVo.getEndTime() == null) {
|
||||||
List<Comment> taskComments = taskService.getTaskComments(historicTaskInstance.getId());
|
actHistoryInfoVo.setStatus(TaskStatusEnum.WAITING.getStatus());
|
||||||
if (CollUtil.isNotEmpty(taskComments)) {
|
actHistoryInfoVo.setStatusName(TaskStatusEnum.WAITING.getDesc());
|
||||||
actHistoryInfoVo.setCommentId(taskComments.get(0).getId());
|
}
|
||||||
String message = taskComments.stream().map(Comment::getFullMessage).collect(Collectors.joining("。"));
|
if (CollUtil.isNotEmpty(processInstanceComments)) {
|
||||||
if (StringUtils.isNotBlank(message)) {
|
processInstanceComments.stream().filter(e -> e.getTaskId().equals(historicTaskInstance.getId())).findFirst().ifPresent(e -> {
|
||||||
actHistoryInfoVo.setComment(message);
|
if (StringUtils.isNotBlank(e.getFullMessage())) {
|
||||||
}
|
actHistoryInfoVo.setComment(e.getFullMessage());
|
||||||
|
actHistoryInfoVo.setStatus(e.getType());
|
||||||
|
actHistoryInfoVo.setStatusName(TaskStatusEnum.getEnumsByStatus(e.getType()));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(historicTaskInstance.getDurationInMillis())) {
|
if (ObjectUtil.isNotEmpty(historicTaskInstance.getDurationInMillis())) {
|
||||||
actHistoryInfoVo.setRunDuration(getDuration(historicTaskInstance.getDurationInMillis()));
|
actHistoryInfoVo.setRunDuration(getDuration(historicTaskInstance.getDurationInMillis()));
|
||||||
|
@ -15,6 +15,7 @@ import org.dromara.common.satoken.utils.LoginHelper;
|
|||||||
import org.dromara.common.tenant.helper.TenantHelper;
|
import org.dromara.common.tenant.helper.TenantHelper;
|
||||||
import org.dromara.workflow.common.constant.FlowConstant;
|
import org.dromara.workflow.common.constant.FlowConstant;
|
||||||
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
||||||
|
import org.dromara.workflow.common.enums.TaskStatusEnum;
|
||||||
import org.dromara.workflow.domain.bo.*;
|
import org.dromara.workflow.domain.bo.*;
|
||||||
import org.dromara.workflow.domain.vo.MultiInstanceVo;
|
import org.dromara.workflow.domain.vo.MultiInstanceVo;
|
||||||
import org.dromara.workflow.domain.vo.TaskVo;
|
import org.dromara.workflow.domain.vo.TaskVo;
|
||||||
@ -139,7 +140,7 @@ public class ActTaskServiceImpl implements IActTaskService {
|
|||||||
}
|
}
|
||||||
runtimeService.updateBusinessStatus(task.getProcessInstanceId(), BusinessStatusEnum.WAITING.getStatus());
|
runtimeService.updateBusinessStatus(task.getProcessInstanceId(), BusinessStatusEnum.WAITING.getStatus());
|
||||||
//办理意见
|
//办理意见
|
||||||
taskService.addComment(completeTaskBo.getTaskId(), task.getProcessInstanceId(), StringUtils.isBlank(completeTaskBo.getMessage()) ? "同意" : completeTaskBo.getMessage());
|
taskService.addComment(completeTaskBo.getTaskId(), task.getProcessInstanceId(), TaskStatusEnum.PASS.getStatus(), StringUtils.isBlank(completeTaskBo.getMessage()) ? "同意" : completeTaskBo.getMessage());
|
||||||
//办理任务
|
//办理任务
|
||||||
taskService.complete(completeTaskBo.getTaskId(), completeTaskBo.getVariables());
|
taskService.complete(completeTaskBo.getTaskId(), completeTaskBo.getVariables());
|
||||||
List<Task> list = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(task.getProcessInstanceId()).list();
|
List<Task> list = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(task.getProcessInstanceId()).list();
|
||||||
@ -348,7 +349,7 @@ public class ActTaskServiceImpl implements IActTaskService {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
TaskEntity newTask = WorkflowUtils.createNewTask(task);
|
TaskEntity newTask = WorkflowUtils.createNewTask(task);
|
||||||
taskService.addComment(newTask.getId(), task.getProcessInstanceId(), "【" + LoginHelper.getUsername() + "】委派给【" + delegateBo.getNickName() + "】");
|
taskService.addComment(newTask.getId(), task.getProcessInstanceId(), TaskStatusEnum.PENDING.getStatus(), "【" + LoginHelper.getUsername() + "】委派给【" + delegateBo.getNickName() + "】");
|
||||||
//委托任务
|
//委托任务
|
||||||
taskService.delegateTask(delegateBo.getTaskId(), delegateBo.getUserId());
|
taskService.delegateTask(delegateBo.getTaskId(), delegateBo.getUserId());
|
||||||
//办理生成的任务记录
|
//办理生成的任务记录
|
||||||
@ -388,7 +389,7 @@ public class ActTaskServiceImpl implements IActTaskService {
|
|||||||
} else {
|
} else {
|
||||||
terminationBo.setComment(LoginHelper.getUsername() + "终止了申请:" + terminationBo.getComment());
|
terminationBo.setComment(LoginHelper.getUsername() + "终止了申请:" + terminationBo.getComment());
|
||||||
}
|
}
|
||||||
taskService.addComment(task.getId(), task.getProcessInstanceId(), terminationBo.getComment());
|
taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.TERMINATION.getStatus(), terminationBo.getComment());
|
||||||
List<Task> list = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId())
|
List<Task> list = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId())
|
||||||
.processInstanceId(task.getProcessInstanceId()).list();
|
.processInstanceId(task.getProcessInstanceId()).list();
|
||||||
if (CollectionUtil.isNotEmpty(list)) {
|
if (CollectionUtil.isNotEmpty(list)) {
|
||||||
@ -422,7 +423,7 @@ public class ActTaskServiceImpl implements IActTaskService {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
TaskEntity newTask = WorkflowUtils.createNewTask(task);
|
TaskEntity newTask = WorkflowUtils.createNewTask(task);
|
||||||
taskService.addComment(newTask.getId(), task.getProcessInstanceId(),
|
taskService.addComment(newTask.getId(), task.getProcessInstanceId(), TaskStatusEnum.TRANSFER.getStatus(),
|
||||||
StringUtils.isNotBlank(transmitBo.getComment()) ? transmitBo.getComment() : LoginHelper.getUsername() + "转办了任务");
|
StringUtils.isNotBlank(transmitBo.getComment()) ? transmitBo.getComment() : LoginHelper.getUsername() + "转办了任务");
|
||||||
taskService.complete(newTask.getId());
|
taskService.complete(newTask.getId());
|
||||||
taskService.setAssignee(task.getId(), transmitBo.getUserId());
|
taskService.setAssignee(task.getId(), transmitBo.getUserId());
|
||||||
@ -468,7 +469,7 @@ public class ActTaskServiceImpl implements IActTaskService {
|
|||||||
List<String> assigneeNames = addMultiBo.getAssigneeNames();
|
List<String> assigneeNames = addMultiBo.getAssigneeNames();
|
||||||
String username = LoginHelper.getUsername();
|
String username = LoginHelper.getUsername();
|
||||||
TaskEntity newTask = WorkflowUtils.createNewTask(task);
|
TaskEntity newTask = WorkflowUtils.createNewTask(task);
|
||||||
taskService.addComment(newTask.getId(), processInstanceId, username + "加签【" + String.join(StringUtils.SEPARATOR, assigneeNames) + "】");
|
taskService.addComment(newTask.getId(), processInstanceId, TaskStatusEnum.SIGN.getStatus(), username + "加签【" + String.join(StringUtils.SEPARATOR, assigneeNames) + "】");
|
||||||
taskService.complete(newTask.getId());
|
taskService.complete(newTask.getId());
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -514,7 +515,7 @@ public class ActTaskServiceImpl implements IActTaskService {
|
|||||||
List<String> assigneeNames = deleteMultiBo.getAssigneeNames();
|
List<String> assigneeNames = deleteMultiBo.getAssigneeNames();
|
||||||
String username = LoginHelper.getUsername();
|
String username = LoginHelper.getUsername();
|
||||||
TaskEntity newTask = WorkflowUtils.createNewTask(task);
|
TaskEntity newTask = WorkflowUtils.createNewTask(task);
|
||||||
taskService.addComment(newTask.getId(), processInstanceId, username + "减签【" + String.join(StringUtils.SEPARATOR, assigneeNames) + "】");
|
taskService.addComment(newTask.getId(), processInstanceId, TaskStatusEnum.SIGN_OFF.getStatus(), username + "减签【" + String.join(StringUtils.SEPARATOR, assigneeNames) + "】");
|
||||||
taskService.complete(newTask.getId());
|
taskService.complete(newTask.getId());
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -549,7 +550,7 @@ public class ActTaskServiceImpl implements IActTaskService {
|
|||||||
//申请人节点
|
//申请人节点
|
||||||
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0);
|
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0);
|
||||||
String backTaskDefinitionKey = historicTaskInstance.getTaskDefinitionKey();
|
String backTaskDefinitionKey = historicTaskInstance.getTaskDefinitionKey();
|
||||||
taskService.addComment(task.getId(), processInstanceId, StringUtils.isNotBlank(backProcessBo.getMessage()) ? backProcessBo.getMessage() : "退回");
|
taskService.addComment(task.getId(), processInstanceId, TaskStatusEnum.BACK.getStatus(), StringUtils.isNotBlank(backProcessBo.getMessage()) ? backProcessBo.getMessage() : "退回");
|
||||||
if (taskList.size() > 1) {
|
if (taskList.size() > 1) {
|
||||||
//当前多个任务驳回到单个节点
|
//当前多个任务驳回到单个节点
|
||||||
runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId)
|
runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId)
|
||||||
|
Loading…
Reference in New Issue
Block a user