@@ -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}
0 commit comments