Skip to content

Commit 52cf10f

Browse files
committed
fix #183
1 parent 5d98084 commit 52cf10f

File tree

9 files changed

+146
-7
lines changed

9 files changed

+146
-7
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
<groupId>com.codingapi.springboot</groupId>
1717
<artifactId>springboot-parent</artifactId>
18-
<version>2.10.32</version>
18+
<version>2.10.33</version>
1919

2020
<url>https://github.com/codingapi/springboot-framewrok</url>
2121
<name>springboot-parent</name>

springboot-starter-data-authorization/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>2.10.32</version>
9+
<version>2.10.33</version>
1010
</parent>
1111

1212
<name>springboot-starter-data-authorization</name>

springboot-starter-data-fast/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-parent</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>2.10.32</version>
8+
<version>2.10.33</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

springboot-starter-flow/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>2.10.32</version>
9+
<version>2.10.33</version>
1010
</parent>
1111

1212
<name>springboot-starter-flow</name>

springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/service/FlowNodeService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,8 @@ private FlowNode matcherNextNode(FlowNode flowNode, boolean back) {
180180
String preCode = FlowNode.CODE_START;
181181
if(flowRecord.getPreId()!=0){
182182
FlowRecord preRecord = flowRecordRepository.getFlowRecordById(flowRecord.getPreId());
183-
if(preRecord!=null){
183+
// 退回节点时,需要过滤历史退回的记录数据
184+
if(preRecord!=null && !preRecord.isReject()){
184185
preCode = preRecord.getNodeCode();
185186
while (preCode.equals(flowRecord.getNodeCode())){
186187
preRecord = flowRecordRepository.getFlowRecordById(preRecord.getPreId());

springboot-starter-flow/src/test/java/com/codingapi/springboot/flow/flow/Leave.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
import lombok.Getter;
66
import lombok.NoArgsConstructor;
77
import lombok.Setter;
8+
import lombok.extern.slf4j.Slf4j;
89

910
@Setter
1011
@Getter
1112
@AllArgsConstructor
1213
@NoArgsConstructor
14+
@Slf4j
1315
public class Leave implements IBindData {
1416

1517
private long id;
@@ -25,4 +27,9 @@ public Leave(String title, int days) {
2527
this.days = days;
2628
}
2729

30+
public boolean get(String key){
31+
log.info("get->{}",key);
32+
return false;
33+
}
34+
2835
}

springboot-starter-flow/src/test/java/com/codingapi/springboot/flow/test/FlowRejectTest.java

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,4 +455,135 @@ void reject4(){
455455
assertEquals(6, snapshots.size());
456456
}
457457

458+
459+
460+
/**
461+
* 指定撤回到发起节点,进行撤回测试
462+
*/
463+
@Test
464+
void reject5(){
465+
PageRequest pageRequest = PageRequest.of(0, 1000);
466+
467+
User user = new User("张飞");
468+
userRepository.save(user);
469+
470+
User dept = new User("刘备");
471+
userRepository.save(dept);
472+
473+
User manager = new User("赵云");
474+
userRepository.save(manager);
475+
476+
User boss = new User("诸葛亮");
477+
userRepository.save(boss);
478+
479+
480+
FlowWork flowWork = FlowWorkBuilder.builder(user)
481+
.title("请假流程")
482+
.nodes()
483+
.node("开始节点", "start", "default", ApprovalType.UN_SIGN, OperatorMatcher.anyOperatorMatcher())
484+
.node("部门领导审批", "dept", "default", ApprovalType.UN_SIGN, OperatorMatcher.specifyOperatorMatcher(dept.getUserId()))
485+
.node("分管领导审批", "manager", "default", ApprovalType.UN_SIGN, OperatorMatcher.specifyOperatorMatcher(manager.getUserId()))
486+
.node("总经理审批", "boss", "default", ApprovalType.UN_SIGN, OperatorMatcher.specifyOperatorMatcher(boss.getUserId()))
487+
.node("结束节点", "over", "default", ApprovalType.UN_SIGN, OperatorMatcher.anyOperatorMatcher())
488+
.relations()
489+
.relation("开始节点-部门领导审批", "start", "dept")
490+
.relation("部门领导审批-分管领导审批", "dept", "manager")
491+
.relation("分管领导审批-总经理审批", "manager", "boss")
492+
.relation("总经理审批-结束节点", "boss", "over")
493+
.relation("分管领导审批-发起人", "manager", "start",new OutTrigger("def run(content){return content.getBindData().get(\"isStart\")}"),1,true)
494+
.relation("总经理审批-发起人", "boss", "start",new OutTrigger("def run(content){return content.getBindData().get(\"isStart\")}"),1,true)
495+
.build();
496+
497+
flowWorkRepository.save(flowWork);
498+
499+
String workCode = flowWork.getCode();
500+
501+
Leave leave = new Leave("我要出去看看",6);
502+
leaveRepository.save(leave);
503+
504+
// 创建流程
505+
flowService.startFlow(workCode, user, leave, "发起流程");
506+
507+
// 查看我的待办
508+
List<FlowRecord> userTodos = flowRecordRepository.findTodoByOperatorId(user.getUserId(), pageRequest).getContent();
509+
assertEquals(1, userTodos.size());
510+
511+
// 提交流程
512+
FlowRecord userTodo = userTodos.get(0);
513+
flowService.submitFlow(userTodo.getId(), user, leave, Opinion.pass("同意"));
514+
515+
// 查看部门经理的待办
516+
List<FlowRecord> deptTodos = flowRecordRepository.findTodoByOperatorId(dept.getUserId(), pageRequest).getContent();
517+
assertEquals(1, deptTodos.size());
518+
519+
// 提交部门经理的审批
520+
FlowRecord deptTodo = deptTodos.get(0);
521+
flowService.submitFlow(deptTodo.getId(), dept, leave, Opinion.pass("同意"));
522+
523+
// 查看分管经理的待办
524+
List<FlowRecord> managerTodos = flowRecordRepository.findTodoByOperatorId(manager.getUserId(), pageRequest).getContent();
525+
assertEquals(1, managerTodos.size());
526+
527+
// 分管领导的审批
528+
FlowRecord managerTodo = managerTodos.get(0);
529+
flowService.submitFlow(managerTodo.getId(), manager, leave, Opinion.pass("同意"));
530+
531+
// 查看老板的待办
532+
List<FlowRecord> bossTodos = flowRecordRepository.findTodoByOperatorId(boss.getUserId(), pageRequest).getContent();
533+
assertEquals(1, bossTodos.size());
534+
535+
// 提交老板的审批
536+
FlowRecord bossTodo = bossTodos.get(0);
537+
flowService.submitFlow(bossTodo.getId(), boss, leave, Opinion.reject("不同意,最多让你请假3天"));
538+
539+
// 查看所有流程
540+
List<FlowRecord> records = flowRecordRepository.findAll(pageRequest).getContent();
541+
assertEquals(5, records.size());
542+
543+
managerTodos = flowRecordRepository.findTodoByOperatorId(manager.getUserId(), pageRequest).getContent();
544+
assertEquals(1, managerTodos.size());
545+
546+
managerTodo = managerTodos.get(0);
547+
flowService.submitFlow(managerTodo.getId(), manager, leave, Opinion.reject("我也不同意"));
548+
549+
// 用户修改确认
550+
userTodos = flowRecordRepository.findTodoByOperatorId(user.getUserId(), pageRequest).getContent();
551+
assertEquals(1, userTodos.size());
552+
553+
// 用户调整为3天
554+
leave.setDays(3);
555+
// 提交流程
556+
userTodo = userTodos.get(0);
557+
flowService.submitFlow(userTodo.getId(), user, leave, Opinion.pass("同意"));
558+
559+
deptTodos = flowRecordRepository.findTodoByOperatorId(dept.getUserId(), pageRequest).getContent();
560+
assertEquals(1, deptTodos.size());
561+
562+
// 提交部门经理的审批
563+
deptTodo = deptTodos.get(0);
564+
flowService.submitFlow(deptTodo.getId(), dept, leave, Opinion.pass("同意"));
565+
566+
managerTodos = flowRecordRepository.findTodoByOperatorId(manager.getUserId(), pageRequest).getContent();
567+
assertEquals(1, managerTodos.size());
568+
569+
managerTodo = managerTodos.get(0);
570+
flowService.submitFlow(managerTodo.getId(), manager, leave, Opinion.pass("同意"));
571+
572+
bossTodos = flowRecordRepository.findTodoByOperatorId(boss.getUserId(), pageRequest).getContent();
573+
assertEquals(1, bossTodos.size());
574+
575+
bossTodo = bossTodos.get(0);
576+
flowService.submitFlow(bossTodo.getId(), boss, leave, Opinion.pass("同意"));
577+
578+
records = flowRecordRepository.findAll(pageRequest).getContent();
579+
assertEquals(9, records.size());
580+
581+
// 查看所有流程是否都已经结束
582+
assertTrue(records.stream().allMatch(FlowRecord::isFinish));
583+
584+
List<BindDataSnapshot> snapshots = flowBindDataRepository.findAll();
585+
assertEquals(10, snapshots.size());
586+
}
587+
588+
458589
}

springboot-starter-security/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>2.10.32</version>
9+
<version>2.10.33</version>
1010
</parent>
1111

1212
<artifactId>springboot-starter-security</artifactId>

springboot-starter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.codingapi.springboot</groupId>
77
<artifactId>springboot-parent</artifactId>
8-
<version>2.10.32</version>
8+
<version>2.10.33</version>
99
</parent>
1010
<artifactId>springboot-starter</artifactId>
1111

0 commit comments

Comments
 (0)