diff --git a/.image/common/bpm-feature.png b/.image/common/bpm-feature.png
new file mode 100644
index 0000000000..23787fb4f0
Binary files /dev/null and b/.image/common/bpm-feature.png differ
diff --git a/.image/common/infra-feature.png b/.image/common/infra-feature.png
new file mode 100644
index 0000000000..f5cef50c56
Binary files /dev/null and b/.image/common/infra-feature.png differ
diff --git a/.image/common/system-feature.png b/.image/common/system-feature.png
new file mode 100644
index 0000000000..366087ce0c
Binary files /dev/null and b/.image/common/system-feature.png differ
diff --git a/README.md b/README.md
index 8fcb94cb02..c6563b0bb2 100644
--- a/README.md
+++ b/README.md
@@ -162,6 +162,8 @@
| 🚀 | 应用管理 | 管理 SSO 单点登录的应用,支持多种 OAuth2 授权方式 |
| 🚀 | 地区管理 | 展示省份、城市、区镇等城市信息,支持 IP 对应城市 |
+
+
### 工作流程
| | 功能 | 描述 |
@@ -174,6 +176,8 @@
| 🚀 | 已办任务 | 查看自己【已】审批的工作任务,未来会支持回退操作 |
| 🚀 | OA 请假 | 作为业务自定义接入工作流的使用示例,只需创建请求对应的工作流程,即可进行审批 |
+
+
### 支付系统
| | 功能 | 描述 |
@@ -209,6 +213,8 @@
| 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 |
| 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 |
+
+
### 数据报表
| | 功能 | 描述 |
diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskStatustEnum.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskStatusEnum.java
similarity index 98%
rename from yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskStatustEnum.java
rename to yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskStatusEnum.java
index eb4af0f623..40a385a582 100644
--- a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskStatustEnum.java
+++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskStatusEnum.java
@@ -11,7 +11,7 @@ import lombok.Getter;
*/
@Getter
@AllArgsConstructor
-public enum BpmTaskStatustEnum {
+public enum BpmTaskStatusEnum {
RUNNING(1, "审批中"),
APPROVE(2, "审批通过"),
diff --git a/yudao-module-bpm/yudao-module-bpm-biz/pom.xml b/yudao-module-bpm/yudao-module-bpm-biz/pom.xml
index 1ac423e11c..4ba9929e71 100644
--- a/yudao-module-bpm/yudao-module-bpm-biz/pom.xml
+++ b/yudao-module-bpm/yudao-module-bpm-biz/pom.xml
@@ -69,6 +69,7 @@
cn.iocoder.boot
yudao-spring-boot-starter-excel
+
org.flowable
diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java
index fb757d2b81..d299fd6eb9 100644
--- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java
+++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java
@@ -93,7 +93,7 @@ public class BpmTaskController {
@GetMapping("manager-page")
@Operation(summary = "获取全部任务的分页", description = "用于【流程任务】菜单")
@PreAuthorize("@ss.hasPermission('bpm:task:mananger-query')")
- public CommonResult> getDoneTaskPage(@Valid BpmTaskPageReqVO pageVO) {
+ public CommonResult> getTaskManagerPage(@Valid BpmTaskPageReqVO pageVO) {
PageResult pageResult = taskService.getTaskPage(getLoginUserId(), pageVO);
if (CollUtil.isEmpty(pageResult.getList())) {
return success(PageResult.empty());
diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java
index ff63f8e43b..6c5b648dac 100644
--- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java
+++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java
@@ -1,7 +1,7 @@
package cn.iocoder.yudao.module.bpm.dal.dataobject.oa;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatustEnum;
+import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
@@ -57,7 +57,7 @@ public class BpmOALeaveDO extends BaseDO {
/**
* 审批结果
*
- * 枚举 {@link BpmTaskStatustEnum}
+ * 枚举 {@link BpmTaskStatusEnum}
* 考虑到简单,所以直接复用了 BpmProcessInstanceStatusEnum 枚举,也可以自己定义一个枚举哈
*/
private Integer status;
diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/BpmTaskCandidateInvoker.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/BpmTaskCandidateInvoker.java
index 7bad358070..c0c7ca0d9d 100644
--- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/BpmTaskCandidateInvoker.java
+++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/BpmTaskCandidateInvoker.java
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmTaskCandidateStrategyEnum;
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
@@ -77,6 +78,7 @@ public class BpmTaskCandidateInvoker {
* @param execution 执行任务
* @return 用户编号集合
*/
+ @DataPermission(enable = false) // 忽略数据权限,避免因为过滤,导致找不到候选人
public Set calculateUsers(DelegateExecution execution) {
Integer strategy = BpmnModelUtils.parseCandidateStrategy(execution.getCurrentFlowElement());
String param = BpmnModelUtils.parseCandidateParam(execution.getCurrentFlowElement());
diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignLeaderExpression.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignLeaderExpression.java
index 802243413e..32e9b10fe2 100644
--- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignLeaderExpression.java
+++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignLeaderExpression.java
@@ -34,6 +34,13 @@ public class BpmTaskAssignLeaderExpression {
@Resource
private BpmProcessInstanceService processInstanceService;
+ /**
+ * 计算审批的候选人
+ *
+ * @param execution 流程执行实体
+ * @param level 指定级别
+ * @return 指定级别的领导
+ */
public Set calculateUsers(DelegateExecution execution, int level) {
Assert.isTrue(level > 0, "level 必须大于 0");
// 获得发起人
diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignStartUserExpression.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignStartUserExpression.java
index ebdcf8bb0d..ac243c0f43 100644
--- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignStartUserExpression.java
+++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignStartUserExpression.java
@@ -3,10 +3,11 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.expression
import cn.iocoder.yudao.framework.common.util.collection.SetUtils;
import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
+import jakarta.annotation.Resource;
+import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
import java.util.Set;
/**
@@ -20,7 +21,13 @@ public class BpmTaskAssignStartUserExpression {
@Resource
private BpmProcessInstanceService processInstanceService;
- public Set calculateUsers(org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl execution) {
+ /**
+ * 计算审批的候选人
+ *
+ * @param execution 流程执行实体
+ * @return 发起人
+ */
+ public Set calculateUsers(ExecutionEntityImpl execution) {
ProcessInstance processInstance = processInstanceService.getProcessInstance(execution.getProcessInstanceId());
Long startUserId = NumberUtils.parseLong(processInstance.getStartUserId());
return SetUtils.asSet(startUserId);
diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTaskEventListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTaskEventListener.java
index ba32230e2d..8cb40412c1 100644
--- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTaskEventListener.java
+++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTaskEventListener.java
@@ -20,7 +20,7 @@ import java.util.List;
import java.util.Set;
/**
- * 监听 {@link org.flowable.task.api.Task} 的开始与完成
+ * 监听 {@link Task} 的开始与完成
*
* @author jason
*/
diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/task/DemoDelegateClassTaskListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/task/DemoDelegateClassTaskListener.java
index 136c33efc0..dee2b95870 100644
--- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/task/DemoDelegateClassTaskListener.java
+++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/task/DemoDelegateClassTaskListener.java
@@ -3,14 +3,12 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.listener.demo.task;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;
-import org.springframework.stereotype.Component;
/**
* 类型为 class 的 TaskListener 监听器示例
*
* @author 芋道源码
*/
-@Component
@Slf4j
public class DemoDelegateClassTaskListener implements TaskListener {
diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/task/DemoSpringExpressionTaskListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/task/DemoSpringExpressionTaskListener.java
index df13797107..0917abd573 100644
--- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/task/DemoSpringExpressionTaskListener.java
+++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/task/DemoSpringExpressionTaskListener.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.listener.demo.task;
import lombok.extern.slf4j.Slf4j;
import org.flowable.task.service.delegate.DelegateTask;
+import org.springframework.stereotype.Component;
/**
* 类型为 expression 的 TaskListener 监听器示例
@@ -9,6 +10,7 @@ import org.flowable.task.service.delegate.DelegateTask;
* @author 芋道源码
*/
@Slf4j
+@Component
public class DemoSpringExpressionTaskListener {
public void notify(DelegateTask delegateTask) {
diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java
index ff8816901f..53e2759142 100644
--- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java
+++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java
@@ -9,12 +9,12 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveCreateReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOALeaveMapper;
-import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatustEnum;
+import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum;
+import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
-import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
@@ -48,7 +48,7 @@ public class BpmOALeaveServiceImpl implements BpmOALeaveService {
// 插入 OA 请假单
long day = LocalDateTimeUtil.between(createReqVO.getStartTime(), createReqVO.getEndTime()).toDays();
BpmOALeaveDO leave = BeanUtils.toBean(createReqVO, BpmOALeaveDO.class)
- .setUserId(userId).setDay(day).setStatus(BpmTaskStatustEnum.RUNNING.getStatus());
+ .setUserId(userId).setDay(day).setStatus(BpmTaskStatusEnum.RUNNING.getStatus());
leaveMapper.insert(leave);
// 发起 BPM 流程
diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
index 0337208c14..30dbed3ab4 100644
--- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
+++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
@@ -15,7 +15,7 @@ import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert;
import cn.iocoder.yudao.module.bpm.enums.task.BpmCommentTypeEnum;
import cn.iocoder.yudao.module.bpm.enums.task.BpmDeleteReasonEnum;
import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskSignTypeEnum;
-import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatustEnum;
+import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum;
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmConstants;
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils;
@@ -202,7 +202,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
// 情况三:审批普通的任务。大多数情况下,都是这样
// 3.1 更新 task 状态、原因
- updateTaskStatusAndReason(task.getId(), BpmTaskStatustEnum.APPROVE.getStatus(), reqVO.getReason());
+ updateTaskStatusAndReason(task.getId(), BpmTaskStatusEnum.APPROVE.getStatus(), reqVO.getReason());
// 3.2 添加评论
taskService.addComment(task.getId(), task.getProcessInstanceId(), BpmCommentTypeEnum.APPROVE.getType(),
BpmCommentTypeEnum.APPROVE.formatComment(reqVO.getReason()));
@@ -230,14 +230,14 @@ public class BpmTaskServiceImpl implements BpmTaskService {
*/
private void approveAfterSignTask(Task task, BpmTaskApproveReqVO reqVO) {
// 更新父 task 状态 + 原因
- updateTaskStatusAndReason(task.getId(), BpmTaskStatustEnum.APPROVING.getStatus(), reqVO.getReason());
+ updateTaskStatusAndReason(task.getId(), BpmTaskStatusEnum.APPROVING.getStatus(), reqVO.getReason());
// 2. 激活子任务
List childrenTaskList = getTaskListByParentTaskId(task.getId());
for (Task childrenTask : childrenTaskList) {
taskService.resolveTask(childrenTask.getId());
// 更新子 task 状态
- updateTaskStatus(childrenTask.getId(), BpmTaskStatustEnum.RUNNING.getStatus());
+ updateTaskStatus(childrenTask.getId(), BpmTaskStatusEnum.RUNNING.getStatus());
}
}
@@ -261,7 +261,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
// 1.2 只处理加签的父任务
Task parentTask = validateTaskExist(parentTaskId);
String scopeType = parentTask.getScopeType();
- if (BpmTaskSignTypeEnum.of(scopeType) == null){
+ if (BpmTaskSignTypeEnum.of(scopeType) == null) {
return;
}
@@ -275,17 +275,17 @@ public class BpmTaskServiceImpl implements BpmTaskService {
// 3.1.1 owner 重新赋值给父任务的 assignee,这样它就可以被审批
taskService.resolveTask(parentTaskId);
// 3.1.2 更新流程任务 status
- updateTaskStatus(parentTaskId, BpmTaskStatustEnum.RUNNING.getStatus());
+ updateTaskStatus(parentTaskId, BpmTaskStatusEnum.RUNNING.getStatus());
// 3.2 情况二:处理向【向后】加签
} else if (BpmTaskSignTypeEnum.AFTER.getType().equals(scopeType)) {
// 只有 parentTask 处于 APPROVING 的情况下,才可以继续 complete 完成
// 否则,一个未审批的 parentTask 任务,在加签出来的任务都被减签的情况下,就直接完成审批,这样会存在问题
Integer status = (Integer) parentTask.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS);
- if (ObjectUtil.notEqual(status, BpmTaskStatustEnum.APPROVING.getStatus())) {
+ if (ObjectUtil.notEqual(status, BpmTaskStatusEnum.APPROVING.getStatus())) {
return;
}
// 3.2.2 完成自己(因为它已经没有子任务,所以也可以完成)
- updateTaskStatus(parentTaskId, BpmTaskStatustEnum.APPROVE.getStatus());
+ updateTaskStatus(parentTaskId, BpmTaskStatusEnum.APPROVE.getStatus());
taskService.complete(parentTaskId);
}
@@ -311,7 +311,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
// 底层调用 TaskHelper.changeTaskAssignee(task, task.getOwner()):将 owner 设置为 assignee
taskService.resolveTask(task.getId());
// 2.2 更新 task 状态 + 原因
- updateTaskStatusAndReason(task.getId(), BpmTaskStatustEnum.RUNNING.getStatus(), reqVO.getReason());
+ updateTaskStatusAndReason(task.getId(), BpmTaskStatusEnum.RUNNING.getStatus(), reqVO.getReason());
}
@Override
@@ -326,7 +326,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
}
// 2.1 更新流程实例为不通过
- updateTaskStatusAndReason(task.getId(), BpmTaskStatustEnum.REJECT.getStatus(), reqVO.getReason());
+ updateTaskStatusAndReason(task.getId(), BpmTaskStatusEnum.REJECT.getStatus(), reqVO.getReason());
// 2.2 添加评论
taskService.addComment(task.getId(), task.getProcessInstanceId(), BpmCommentTypeEnum.REJECT.getType(),
BpmCommentTypeEnum.REJECT.formatComment(reqVO.getReason()));
@@ -378,7 +378,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
log.error("[updateTaskStatusWhenCreated][taskId({}) 已经有状态({})]", task.getId(), status);
return;
}
- updateTaskStatus(task.getId(), BpmTaskStatustEnum.RUNNING.getStatus());
+ updateTaskStatus(task.getId(), BpmTaskStatusEnum.RUNNING.getStatus());
}
@Override
@@ -392,11 +392,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
// 2. 更新 task 状态 + 原因
Integer status = (Integer) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS);
- if (BpmTaskStatustEnum.isEndStatus(status)) {
+ if (BpmTaskStatusEnum.isEndStatus(status)) {
log.error("[updateTaskStatusWhenCanceled][taskId({}) 处于结果({}),无需进行更新]", taskId, status);
return;
}
- updateTaskStatusAndReason(taskId, BpmTaskStatustEnum.CANCEL.getStatus(), BpmDeleteReasonEnum.CANCEL_BY_SYSTEM.getReason());
+ updateTaskStatusAndReason(taskId, BpmTaskStatusEnum.CANCEL.getStatus(), BpmDeleteReasonEnum.CANCEL_BY_SYSTEM.getReason());
// 补充说明:由于 Task 被删除成 HistoricTask 后,无法通过 taskService.addComment 添加理由,所以无法存储具体的取消理由
}
@@ -525,7 +525,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
taskService.addComment(task.getId(), currentTask.getProcessInstanceId(), BpmCommentTypeEnum.RETURN.getType(),
BpmCommentTypeEnum.RETURN.formatComment(reqVO.getReason()));
// 2.2 更新 task 状态 + 原因
- updateTaskStatusAndReason(task.getId(), BpmTaskStatustEnum.RETURN.getStatus(), reqVO.getReason());
+ updateTaskStatusAndReason(task.getId(), BpmTaskStatusEnum.RETURN.getStatus(), reqVO.getReason());
});
// 3. 执行驳回
@@ -562,7 +562,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
taskService.delegateTask(taskId, reqVO.getDelegateUserId().toString());
// 3.3 更新 task 状态。
// 为什么不更新原因?因为原因目前主要给审批通过、不通过时使用
- updateTaskStatus(taskId, BpmTaskStatustEnum.DELEGATE.getStatus());
+ updateTaskStatus(taskId, BpmTaskStatusEnum.DELEGATE.getStatus());
}
@Override
@@ -616,7 +616,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
taskService.saveTask(taskEntity);
// 2.6 更新 task 状态为 WAIT,只有在向前加签的时候
if (reqVO.getType().equals(BpmTaskSignTypeEnum.BEFORE.getType())) {
- updateTaskStatus(taskEntity.getId(), BpmTaskStatustEnum.WAIT.getStatus());
+ updateTaskStatus(taskEntity.getId(), BpmTaskStatusEnum.WAIT.getStatus());
}
// 3. 创建加签任务
@@ -703,7 +703,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
// 3. 向后前签,设置子任务的状态为 WAIT,因为需要等父任务审批完
if (BpmTaskSignTypeEnum.AFTER.getType().equals(parentTask.getScopeType())) {
- updateTaskStatus(task.getId(), BpmTaskStatustEnum.WAIT.getStatus());
+ updateTaskStatus(task.getId(), BpmTaskStatusEnum.WAIT.getStatus());
}
}
@@ -727,8 +727,8 @@ public class BpmTaskServiceImpl implements BpmTaskService {
childTaskList.add(task);
// 2.2 更新子任务为已取消
String cancelReason = StrUtil.format("任务被取消,原因:由于[{}]操作[减签],", cancelUser.getNickname());
- childTaskList.forEach(childTask -> updateTaskStatusAndReason(childTask.getId(), BpmTaskStatustEnum.CANCEL.getStatus(), cancelReason));
- // 2.2 删除任务和所有子任务
+ childTaskList.forEach(childTask -> updateTaskStatusAndReason(childTask.getId(), BpmTaskStatusEnum.CANCEL.getStatus(), cancelReason));
+ // 2.3 删除任务和所有子任务
taskService.deleteTasks(convertList(childTaskList, Task::getId));
// 3. 记录日志到父任务中。先记录日志是因为,通过 handleParentTask 方法之后,任务可能被完成了,并且不存在了,会报异常,所以先记录
diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/util/CrmAuditStatusUtils.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/util/CrmAuditStatusUtils.java
index 43e681c5e7..c1d4eaab7c 100644
--- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/util/CrmAuditStatusUtils.java
+++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/util/CrmAuditStatusUtils.java
@@ -1,7 +1,7 @@
package cn.iocoder.yudao.module.crm.util;
import cn.hutool.core.lang.Assert;
-import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatustEnum;
+import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum;
import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum;
/**
@@ -17,9 +17,9 @@ public class CrmAuditStatusUtils {
* @param bpmResult BPM 审批结果
*/
public static Integer convertBpmResultToAuditStatus(Integer bpmResult) {
- Integer auditStatus = BpmTaskStatustEnum.APPROVE.getStatus().equals(bpmResult) ? CrmAuditStatusEnum.APPROVE.getStatus()
- : BpmTaskStatustEnum.REJECT.getStatus().equals(bpmResult) ? CrmAuditStatusEnum.REJECT.getStatus()
- : BpmTaskStatustEnum.CANCEL.getStatus().equals(bpmResult) ? BpmTaskStatustEnum.CANCEL.getStatus() : null;
+ Integer auditStatus = BpmTaskStatusEnum.APPROVE.getStatus().equals(bpmResult) ? CrmAuditStatusEnum.APPROVE.getStatus()
+ : BpmTaskStatusEnum.REJECT.getStatus().equals(bpmResult) ? CrmAuditStatusEnum.REJECT.getStatus()
+ : BpmTaskStatusEnum.CANCEL.getStatus().equals(bpmResult) ? BpmTaskStatusEnum.CANCEL.getStatus() : null;
Assert.notNull(auditStatus, "BPM 审批结果({}) 转换失败", bpmResult);
return auditStatus;
}
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java
index 0615394945..ecc6eb2379 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java
+++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java
@@ -99,7 +99,7 @@ public class AuthController {
// 1.1 获得用户信息
AdminUserDO user = userService.getUser(getLoginUserId());
if (user == null) {
- return null;
+ return success(null);
}
// 1.2 获得角色列表