diff --git a/example/example-app/example-app-cmd-domain/pom.xml b/example/example-app/example-app-cmd-domain/pom.xml
index 018eb07e..5b7a1e74 100644
--- a/example/example-app/example-app-cmd-domain/pom.xml
+++ b/example/example-app/example-app-cmd-domain/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
example-app
- 3.3.69
+ 3.3.70
../pom.xml
diff --git a/example/example-app/example-app-cmd-meta/pom.xml b/example/example-app/example-app-cmd-meta/pom.xml
index 91e50b72..b2729b1b 100644
--- a/example/example-app/example-app-cmd-meta/pom.xml
+++ b/example/example-app/example-app-cmd-meta/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
example-app
- 3.3.69
+ 3.3.70
../pom.xml
diff --git a/example/example-app/example-app-query/pom.xml b/example/example-app/example-app-query/pom.xml
index 222bedd8..64072c74 100644
--- a/example/example-app/example-app-query/pom.xml
+++ b/example/example-app/example-app-query/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
example-app
- 3.3.69
+ 3.3.70
../pom.xml
diff --git a/example/example-app/pom.xml b/example/example-app/pom.xml
index c98cb078..3c0e1e9b 100644
--- a/example/example-app/pom.xml
+++ b/example/example-app/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
springboot-example
- 3.3.69
+ 3.3.70
../pom.xml
pom
diff --git a/example/example-domain/example-domain-leave/pom.xml b/example/example-domain/example-domain-leave/pom.xml
index 4ad8b661..00b62073 100644
--- a/example/example-domain/example-domain-leave/pom.xml
+++ b/example/example-domain/example-domain-leave/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
example-domain
- 3.3.69
+ 3.3.70
../pom.xml
diff --git a/example/example-domain/example-domain-user/pom.xml b/example/example-domain/example-domain-user/pom.xml
index 663a36ef..66e2ab94 100644
--- a/example/example-domain/example-domain-user/pom.xml
+++ b/example/example-domain/example-domain-user/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
example-domain
- 3.3.69
+ 3.3.70
../pom.xml
diff --git a/example/example-domain/pom.xml b/example/example-domain/pom.xml
index 538032d2..ed671301 100644
--- a/example/example-domain/pom.xml
+++ b/example/example-domain/pom.xml
@@ -5,7 +5,7 @@
com.codingapi.springboot
springboot-example
- 3.3.69
+ 3.3.70
../pom.xml
4.0.0
diff --git a/example/example-infra/example-infra-flow/pom.xml b/example/example-infra/example-infra-flow/pom.xml
index fc684dce..c3dd7a34 100644
--- a/example/example-infra/example-infra-flow/pom.xml
+++ b/example/example-infra/example-infra-flow/pom.xml
@@ -5,7 +5,7 @@
com.codingapi.springboot
example-infra
- 3.3.69
+ 3.3.70
../pom.xml
diff --git a/example/example-infra/example-infra-jpa/pom.xml b/example/example-infra/example-infra-jpa/pom.xml
index 176af819..9a172039 100644
--- a/example/example-infra/example-infra-jpa/pom.xml
+++ b/example/example-infra/example-infra-jpa/pom.xml
@@ -5,7 +5,7 @@
com.codingapi.springboot
example-infra
- 3.3.69
+ 3.3.70
../pom.xml
diff --git a/example/example-infra/example-infra-security/pom.xml b/example/example-infra/example-infra-security/pom.xml
index 853d2136..1f1b053f 100644
--- a/example/example-infra/example-infra-security/pom.xml
+++ b/example/example-infra/example-infra-security/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
example-infra
- 3.3.69
+ 3.3.70
../pom.xml
diff --git a/example/example-infra/pom.xml b/example/example-infra/pom.xml
index a1e121bc..e233bd64 100644
--- a/example/example-infra/pom.xml
+++ b/example/example-infra/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
springboot-example
- 3.3.69
+ 3.3.70
../pom.xml
pom
diff --git a/example/example-interface/pom.xml b/example/example-interface/pom.xml
index efd87090..ac1b361e 100644
--- a/example/example-interface/pom.xml
+++ b/example/example-interface/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
springboot-example
- 3.3.69
+ 3.3.70
example-interface
diff --git a/example/example-server/pom.xml b/example/example-server/pom.xml
index 6b885856..c4e82dbe 100644
--- a/example/example-server/pom.xml
+++ b/example/example-server/pom.xml
@@ -5,7 +5,7 @@
springboot-example
com.codingapi.springboot
- 3.3.69
+ 3.3.70
4.0.0
diff --git a/example/pom.xml b/example/pom.xml
index 614b8ce5..e400c393 100644
--- a/example/pom.xml
+++ b/example/pom.xml
@@ -19,7 +19,7 @@
springboot-example
- 3.3.69
+ 3.3.70
springboot-example
springboot-example project for Spring Boot
diff --git a/pom.xml b/pom.xml
index 7749b705..e0c63a43 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
com.codingapi.springboot
springboot-parent
- 3.3.69
+ 3.3.70
https://github.com/codingapi/springboot-framewrok
springboot-parent
diff --git a/springboot-starter-data-authorization/pom.xml b/springboot-starter-data-authorization/pom.xml
index 8e12827a..bc8e2931 100644
--- a/springboot-starter-data-authorization/pom.xml
+++ b/springboot-starter-data-authorization/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
springboot-parent
- 3.3.69
+ 3.3.70
springboot-starter-data-authorization
diff --git a/springboot-starter-data-fast/pom.xml b/springboot-starter-data-fast/pom.xml
index 794c70ff..656255a6 100644
--- a/springboot-starter-data-fast/pom.xml
+++ b/springboot-starter-data-fast/pom.xml
@@ -5,7 +5,7 @@
springboot-parent
com.codingapi.springboot
- 3.3.69
+ 3.3.70
4.0.0
diff --git a/springboot-starter-flow/pom.xml b/springboot-starter-flow/pom.xml
index 46dcc11c..5736d59c 100644
--- a/springboot-starter-flow/pom.xml
+++ b/springboot-starter-flow/pom.xml
@@ -6,7 +6,7 @@
springboot-parent
com.codingapi.springboot
- 3.3.69
+ 3.3.70
springboot-starter-flow
diff --git a/springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/service/FlowNodeService.java b/springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/service/FlowNodeService.java
index b38b751b..b2827d3c 100644
--- a/springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/service/FlowNodeService.java
+++ b/springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/service/FlowNodeService.java
@@ -119,6 +119,9 @@ public void loadDefaultBackNode(FlowRecord currentRecord) {
boolean startRemove = false;
for(FlowRecord historyRecord: historyRecords){
if(startRemove){
+ if(historyRecord.getNodeCode().equals(currentRecord.getNodeCode())){
+ continue;
+ }
this.nextNode = flowWork.getNodeByCode(historyRecord.getNodeCode());
this.nextOperator = historyRecord.getCurrentOperator();
this.backOperator = historyRecord.getCurrentOperator();
diff --git a/springboot-starter-flow/src/test/java/com/codingapi/springboot/flow/test/FlowTest3.java b/springboot-starter-flow/src/test/java/com/codingapi/springboot/flow/test/FlowTest3.java
new file mode 100644
index 00000000..427eef19
--- /dev/null
+++ b/springboot-starter-flow/src/test/java/com/codingapi/springboot/flow/test/FlowTest3.java
@@ -0,0 +1,143 @@
+package com.codingapi.springboot.flow.test;
+
+import com.codingapi.springboot.flow.build.FlowWorkBuilder;
+import com.codingapi.springboot.flow.domain.FlowWork;
+import com.codingapi.springboot.flow.domain.Opinion;
+import com.codingapi.springboot.flow.em.ApprovalType;
+import com.codingapi.springboot.flow.flow.Leave;
+import com.codingapi.springboot.flow.matcher.OperatorMatcher;
+import com.codingapi.springboot.flow.record.FlowRecord;
+import com.codingapi.springboot.flow.repository.*;
+import com.codingapi.springboot.flow.service.FlowService;
+import com.codingapi.springboot.flow.user.User;
+import org.junit.jupiter.api.Test;
+import org.springframework.data.domain.PageRequest;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class FlowTest3 {
+
+ private final UserRepository userRepository = new UserRepository();
+ private final FlowWorkRepository flowWorkRepository = new FlowWorkRepositoryImpl();
+ private final FlowRecordRepositoryImpl flowRecordRepository = new FlowRecordRepositoryImpl();
+ private final FlowBindDataRepositoryImpl flowBindDataRepository = new FlowBindDataRepositoryImpl();
+ private final LeaveRepository leaveRepository = new LeaveRepository();
+ private final FlowBackupRepository flowBackupRepository = new FlowBackupRepositoryImpl();
+ private final FlowProcessRepository flowProcessRepository = new FlowProcessRepositoryImpl(flowBackupRepository, userRepository);
+ private final FlowService flowService = new FlowService(flowWorkRepository, flowRecordRepository, flowBindDataRepository, userRepository, flowProcessRepository, flowBackupRepository);
+
+
+ /**
+ * 一直退回的测试
+ */
+ @Test
+ void rejectAllTest() {
+ PageRequest pageRequest = PageRequest.of(0, 1000);
+
+ User user = new User("张飞");
+ userRepository.save(user);
+
+ User dept = new User("刘备");
+ userRepository.save(dept);
+
+ User boss = new User("诸葛亮");
+ userRepository.save(boss);
+
+ FlowWork flowWork = FlowWorkBuilder.builder(user)
+ .title("请假流程")
+ .skipIfSameApprover(true)
+ .nodes()
+ .node("开始节点", "start", "default", ApprovalType.UN_SIGN, OperatorMatcher.anyOperatorMatcher())
+ .node("部门负责人审批", "dept", "default", ApprovalType.UN_SIGN, OperatorMatcher.specifyOperatorMatcher(user.getUserId(), boss.getUserId()))
+ .node("分管领导审批", "office", "default", ApprovalType.UN_SIGN, OperatorMatcher.specifyOperatorMatcher(dept.getUserId()))
+ .node("总经理审批", "manager", "default", ApprovalType.UN_SIGN, OperatorMatcher.specifyOperatorMatcher(boss.getUserId()))
+ .node("结束节点", "over", "default", ApprovalType.UN_SIGN, OperatorMatcher.anyOperatorMatcher())
+ .relations()
+ .relation("部门负责人审批", "start", "dept")
+ .relation("分管领导审批", "dept", "office")
+ .relation("总经理审批", "office", "manager")
+ .relation("结束节点", "manager", "over")
+ .build();
+
+ flowWorkRepository.save(flowWork);
+
+ String workCode = flowWork.getCode();
+
+ Leave leave = new Leave("我要出去看看");
+ leaveRepository.save(leave);
+
+ // 创建流程
+ flowService.startFlow(workCode, user, leave, "发起流程");
+
+ // 查看我的待办
+ List userTodos = flowRecordRepository.findTodoByOperatorId(user.getUserId(), pageRequest).getContent();
+ assertEquals(1, userTodos.size());
+
+ // 提交流程
+ FlowRecord userTodo = userTodos.get(0);
+ flowService.submitFlow(userTodo.getId(), user, leave, Opinion.pass("同意"));
+
+ // 查看部门经理的待办
+ List deptTodos = flowRecordRepository.findTodoByOperatorId(dept.getUserId(), pageRequest).getContent();
+ assertEquals(1, deptTodos.size());
+
+ // 提交部门经理的审批
+ FlowRecord deptTodo = deptTodos.get(0);
+ flowService.submitFlow(deptTodo.getId(), dept, leave, Opinion.reject("不同意"));
+
+ userTodos = flowRecordRepository.findTodoByOperatorId(user.getUserId(), pageRequest).getContent();
+ assertEquals(1, userTodos.size());
+
+ // 提交流程
+ userTodo = userTodos.get(0);
+ flowService.submitFlow(userTodo.getId(), user, leave, Opinion.reject("不同意"));
+
+ List records = flowRecordRepository.findAll(pageRequest).getContent();
+
+ userTodos = flowRecordRepository.findTodoByOperatorId(user.getUserId(), pageRequest).getContent();
+ assertEquals(1, userTodos.size());
+
+ userTodo = userTodos.get(0);
+
+ System.out.println(userTodo.getNodeCode());
+
+ assertEquals("start", userTodo.getNodeCode());
+
+ // 提交流程
+ userTodo = userTodos.get(0);
+ flowService.submitFlow(userTodo.getId(), user, leave, Opinion.pass("同意"));
+
+ // 查看部门经理的待办
+ deptTodos = flowRecordRepository.findTodoByOperatorId(dept.getUserId(), pageRequest).getContent();
+ assertEquals(1, deptTodos.size());
+
+ // 提交部门经理的审批
+ deptTodo = deptTodos.get(0);
+ flowService.submitFlow(deptTodo.getId(), dept, leave, Opinion.reject("不同意"));
+
+
+ userTodos = flowRecordRepository.findTodoByOperatorId(user.getUserId(), pageRequest).getContent();
+ assertEquals(1, userTodos.size());
+
+ // 提交流程
+ userTodo = userTodos.get(0);
+ flowService.submitFlow(userTodo.getId(), user, leave, Opinion.reject("不同意"));
+
+
+ userTodos = flowRecordRepository.findTodoByOperatorId(user.getUserId(), pageRequest).getContent();
+ assertEquals(1, userTodos.size());
+
+ userTodo = userTodos.get(0);
+
+ System.out.println(userTodo.getNodeCode());
+
+ assertEquals("start", userTodo.getNodeCode());
+
+ records = flowRecordRepository.findAll(pageRequest).getContent();
+ assertEquals(11, records.size());
+
+
+ }
+}
diff --git a/springboot-starter-security/pom.xml b/springboot-starter-security/pom.xml
index fed35c8f..7357d48d 100644
--- a/springboot-starter-security/pom.xml
+++ b/springboot-starter-security/pom.xml
@@ -6,7 +6,7 @@
springboot-parent
com.codingapi.springboot
- 3.3.69
+ 3.3.70
springboot-starter-security
diff --git a/springboot-starter/pom.xml b/springboot-starter/pom.xml
index 4f1349ef..d8df9f02 100644
--- a/springboot-starter/pom.xml
+++ b/springboot-starter/pom.xml
@@ -5,7 +5,7 @@
com.codingapi.springboot
springboot-parent
- 3.3.69
+ 3.3.70
springboot-starter
diff --git a/springboot-starter/src/main/resources/banner.txt b/springboot-starter/src/main/resources/banner.txt
index fa2a34bd..861f409d 100644
--- a/springboot-starter/src/main/resources/banner.txt
+++ b/springboot-starter/src/main/resources/banner.txt
@@ -1,4 +1,4 @@
------------------------------------------------------
-CodingApi SpringBoot-Starter 3.3.69
+CodingApi SpringBoot-Starter 3.3.70
springboot version (${spring-boot.version})
------------------------------------------------------