@@ -130,4 +130,107 @@ void recall1() {
130130
131131 }
132132
133+
134+ /**
135+ * 撤回测试(流程已读)
136+ */
137+ @ Test
138+ void recall2 () {
139+ PageRequest pageRequest = PageRequest .of (0 , 1000 );
140+
141+ User lorne = new User ("lorne" );
142+ userRepository .save (lorne );
143+
144+ User user = new User ("张飞" );
145+ userRepository .save (user );
146+
147+ User dept = new User ("刘备" );
148+ userRepository .save (dept );
149+
150+ User boss = new User ("诸葛亮" );
151+ userRepository .save (boss );
152+
153+ FlowWork flowWork = FlowWorkBuilder .builder (user )
154+ .title ("请假流程" )
155+ .nodes ()
156+ .node ("开始节点" , "start" , "default" , ApprovalType .UN_SIGN , OperatorMatcher .anyOperatorMatcher ())
157+ .node ("部门领导审批" , "dept" , "default" , ApprovalType .SIGN , OperatorMatcher .specifyOperatorMatcher (dept .getUserId (),lorne .getUserId ()))
158+ .node ("总经理审批" , "manager" , "default" , ApprovalType .SIGN , OperatorMatcher .specifyOperatorMatcher (boss .getUserId ()))
159+ .node ("结束节点" , "over" , "default" , ApprovalType .UN_SIGN , OperatorMatcher .anyOperatorMatcher ())
160+ .relations ()
161+ .relation ("部门领导审批" , "start" , "dept" )
162+ .relation ("总经理审批" , "dept" , "manager" )
163+ .relation ("结束节点" , "manager" , "over" )
164+ .build ();
165+
166+ flowWorkRepository .save (flowWork );
167+
168+ String workCode = flowWork .getCode ();
169+
170+ Leave leave = new Leave ("我要出去看看" );
171+ leaveRepository .save (leave );
172+
173+ // 创建流程
174+ flowService .startFlow (workCode , user , leave , "发起流程" );
175+
176+ // 查看我的待办
177+ List <FlowRecord > userTodos = flowRecordRepository .findTodoByOperatorId (user .getUserId (), pageRequest ).getContent ();
178+ assertEquals (1 , userTodos .size ());
179+
180+ // 提交流程
181+ FlowRecord userTodo = userTodos .get (0 );
182+ assertEquals (0 , userTodo .getTimeoutTime ());
183+
184+ flowService .submitFlow (userTodo .getId (), user , leave , Opinion .pass ("同意" ).specify (lorne .getUserId ()));
185+
186+ // 查看刘备经理的待办
187+ List <FlowRecord > deptTodos = flowRecordRepository .findTodoByOperatorId (dept .getUserId (), pageRequest ).getContent ();
188+ assertEquals (0 , deptTodos .size ());
189+
190+ List <FlowRecord > lorneTodos = flowRecordRepository .findTodoByOperatorId (lorne .getUserId (), pageRequest ).getContent ();
191+ assertEquals (1 , lorneTodos .size ());
192+
193+ // 提交委托lorne部门经理的审批
194+ FlowRecord lorneTodo = lorneTodos .get (0 );
195+ flowService .submitFlow (lorneTodo .getId (), lorne , leave , Opinion .pass ("同意" ));
196+
197+ // 查看总经理的待办
198+ List <FlowRecord > bossTodos = flowRecordRepository .findTodoByOperatorId (boss .getUserId (), pageRequest ).getContent ();
199+ assertEquals (1 , bossTodos .size ());
200+
201+ // 提交委托boos部门经理的审批
202+ FlowRecord bossTodo = bossTodos .get (0 );
203+ flowService .detail (bossTodo .getId ());
204+ flowService .save (bossTodo .getId (), boss , leave , "..." );
205+
206+ List <FlowRecord > lorneDones = flowRecordRepository .findDoneByOperatorId (lorne .getUserId (), pageRequest ).getContent ();
207+ assertEquals (1 , lorneDones .size ());
208+
209+ FlowRecord lorneDone = lorneDones .get (0 );
210+ flowService .recall (lorneDone .getId (),lorne );
211+
212+ lorneTodos = flowRecordRepository .findTodoByOperatorId (lorne .getUserId (), pageRequest ).getContent ();
213+ assertEquals (1 , lorneTodos .size ());
214+
215+ lorneTodo = lorneTodos .get (0 );
216+ flowService .submitFlow (lorneTodo .getId (), lorne , leave , Opinion .pass ("同意" ));
217+
218+ bossTodos = flowRecordRepository .findTodoByOperatorId (boss .getUserId (), pageRequest ).getContent ();
219+ assertEquals (1 , bossTodos .size ());
220+
221+ bossTodo = bossTodos .get (0 );
222+ flowService .submitFlow (bossTodo .getId (), boss , leave , Opinion .pass ("同意" ));
223+
224+ // 查看所有流程
225+ List <FlowRecord > records = flowRecordRepository .findAll (pageRequest ).getContent ();
226+ assertEquals (3 , records .size ());
227+
228+ // 查看所有流程是否都已经结束
229+ assertTrue (records .stream ().allMatch (FlowRecord ::isFinish ));
230+
231+ List <BindDataSnapshot > snapshots = flowBindDataRepository .findAll ();
232+ assertEquals (5 , snapshots .size ());
233+
234+ }
235+
133236}
0 commit comments