@@ -368,16 +368,20 @@ public void submitFlow(long recordId, IFlowOperator currentOperator, IBindData b
368
368
// 与当前流程同级的流程记录
369
369
List <FlowRecord > historyRecords = flowRecordRepository .findFlowRecordByPreId (flowRecord .getPreId ());
370
370
371
+ // 提交流程
372
+ flowRecord .submitRecord (currentOperator , snapshot , opinion , flowNextStep );
373
+ flowRecordRepository .update (flowRecord );
374
+
371
375
// 会签处理流程
372
376
if (flowNode .isSign ()) {
373
377
// 会签下所有人尚未提交时,不执行下一节点
374
- boolean allDone = historyRecords .stream ().filter (FlowRecord :: isTransfer ).allMatch (FlowRecord ::isDone );
378
+ boolean allDone = historyRecords .stream ().filter (item ->! item . isTransfer () ).allMatch (FlowRecord ::isDone );
375
379
if (!allDone ) {
376
380
// 流程尚未审批结束直接退出
377
381
return ;
378
382
}
379
383
// 会签下所有人都同意,再执行下一节点
380
- boolean allPass = historyRecords .stream ().filter (FlowRecord :: isTransfer ).allMatch (FlowRecord ::isPass );
384
+ boolean allPass = historyRecords .stream ().filter (item ->! item . isTransfer () ).allMatch (FlowRecord ::isPass );
381
385
if (!allPass ) {
382
386
flowNextStep = false ;
383
387
}
@@ -408,31 +412,29 @@ public void submitFlow(long recordId, IFlowOperator currentOperator, IBindData b
408
412
EventPusher .push (new FlowApprovalEvent (FlowApprovalEvent .STATE_FINISH , flowRecord , currentOperator ));
409
413
return ;
410
414
}
411
- // 提交流程
412
- flowRecord .submitRecord (currentOperator , snapshot , opinion , flowNextStep );
413
- flowRecordRepository .update (flowRecord );
414
415
415
416
// 拥有退出条件 或审批通过时,匹配下一节点
416
417
if (flowWork .hasBackRelation () || flowNextStep ) {
417
418
419
+ FlowRecordService flowRecordService = new FlowRecordService (flowOperatorRepository , processId , createOperator , currentOperator , snapshot , opinion , flowWork , flowNextStep , historyRecords );
420
+ FlowNode nextNode = flowRecordService .matcherNextNode (flowNode );
421
+ if (nextNode == null ) {
422
+ throw new IllegalArgumentException ("next node not found" );
423
+ }
424
+
418
425
IFlowOperator flowOperator = currentOperator ;
419
426
// 退回流程 并且 也设置了退回节点
420
427
if (!flowNextStep && flowWork .hasBackRelation ()) {
421
- if (flowNode .isAnyOperatorMatcher ()) {
428
+ if (nextNode .isAnyOperatorMatcher ()) {
422
429
// 如果是任意人员操作时则需要指定为当时审批人员为当前审批人员
423
430
FlowRecord preFlowRecord = flowRecordRepository .getFlowRecordById (flowRecord .getPreId ());
424
- while (! preFlowRecord .isTransfer () && preFlowRecord .getNodeCode ().equals (flowNode .getCode ())) {
425
- preFlowRecord = flowRecordRepository .getFlowRecordById (flowRecord .getPreId ());
431
+ while (preFlowRecord .isTransfer () || ! preFlowRecord .getNodeCode ().equals (nextNode .getCode ())) {
432
+ preFlowRecord = flowRecordRepository .getFlowRecordById (preFlowRecord .getPreId ());
426
433
}
427
434
flowOperator = flowOperatorRepository .getFlowOperatorById (preFlowRecord .getCurrentOperatorId ());
428
435
}
429
436
}
430
-
431
- FlowRecordService flowRecordService = new FlowRecordService (flowOperatorRepository , processId , createOperator , flowOperator , snapshot , opinion , flowWork , flowNextStep , historyRecords );
432
- FlowNode nextNode = flowRecordService .matcherNextNode (flowNode );
433
- if (nextNode == null ) {
434
- throw new IllegalArgumentException ("next node not found" );
435
- }
437
+ flowRecordService .changeCurrentOperator (flowOperator );
436
438
437
439
List <FlowRecord > records = flowRecordService .createRecord (flowRecord .getId (), nextNode );
438
440
flowRecordRepository .save (records );
0 commit comments