Commit d02e1e1d6be194345e61c65a84437f151f808169
1 parent
4d15396e
【代码评审】BPM:获取审批任务的记录列表
Showing
3 changed files
with
10 additions
and
2 deletions
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmProcessNodeProgressEnum.java
| @@ -29,7 +29,7 @@ public enum BpmProcessNodeProgressEnum { | @@ -29,7 +29,7 @@ public enum BpmProcessNodeProgressEnum { | ||
| 29 | USER_TASK_REJECT(31, "审批不通过"), // 审批节点 | 29 | USER_TASK_REJECT(31, "审批不通过"), // 审批节点 |
| 30 | USER_TASK_RETURN(32, "已退回"), // 审批节点 | 30 | USER_TASK_RETURN(32, "已退回"), // 审批节点 |
| 31 | USER_TASK_CANCEL(34, "已取消"), // 审批节点 | 31 | USER_TASK_CANCEL(34, "已取消"), // 审批节点 |
| 32 | - // 40 ~ 50 一般节点的接榫状态 | 32 | + // 40 ~ 50 一般节点的接榫状态 // TODO @jason:接榫 是啥呀? |
| 33 | FINISHED(41, "已结束"), // 一般节点的节点的结束状态 | 33 | FINISHED(41, "已结束"), // 一般节点的节点的结束状态 |
| 34 | SKIP(42, "跳过"); // 未执行,跳过的节点 | 34 | SKIP(42, "跳过"); // 未执行,跳过的节点 |
| 35 | 35 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceProgressRespVO.java
| @@ -32,6 +32,7 @@ public class BpmProcessInstanceProgressRespVO { | @@ -32,6 +32,7 @@ public class BpmProcessInstanceProgressRespVO { | ||
| 32 | @Schema(description = "节点类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | 32 | @Schema(description = "节点类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 33 | private Integer nodeType; // 参见 BpmSimpleModelNodeType 枚举 | 33 | private Integer nodeType; // 参见 BpmSimpleModelNodeType 枚举 |
| 34 | 34 | ||
| 35 | + // TODO @jason:可以复用 BpmTaskStatusEnum 么?非必要不加太多状态枚举哈 | ||
| 35 | @Schema(description = "节点状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") | 36 | @Schema(description = "节点状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") |
| 36 | private Integer status; // 参见 BpmProcessNodeProgressEnum 枚举 | 37 | private Integer status; // 参见 BpmProcessNodeProgressEnum 枚举 |
| 37 | 38 | ||
| @@ -42,6 +43,8 @@ public class BpmProcessInstanceProgressRespVO { | @@ -42,6 +43,8 @@ public class BpmProcessInstanceProgressRespVO { | ||
| 42 | 43 | ||
| 43 | @Schema(description = "用户列表") | 44 | @Schema(description = "用户列表") |
| 44 | private List<User> userList; | 45 | private List<User> userList; |
| 46 | + | ||
| 47 | + // TODO @jason:如果条件信息,怎么展示哈? | ||
| 45 | @Schema(description = "分支节点") | 48 | @Schema(description = "分支节点") |
| 46 | private List<ProcessNodeProgress> branchNodes; // 有且仅有条件、并行、包容节点才会有分支节点 | 49 | private List<ProcessNodeProgress> branchNodes; // 有且仅有条件、并行、包容节点才会有分支节点 |
| 47 | 50 | ||
| @@ -62,6 +65,8 @@ public class BpmProcessInstanceProgressRespVO { | @@ -62,6 +65,8 @@ public class BpmProcessInstanceProgressRespVO { | ||
| 62 | @Schema(description = "用户头像", example = "芋艿") | 65 | @Schema(description = "用户头像", example = "芋艿") |
| 63 | private String avatar; | 66 | private String avatar; |
| 64 | 67 | ||
| 68 | + // TODO @jason:是不是把 processed 和 userTaskStatus 合并? | ||
| 69 | + | ||
| 65 | @Schema(description = "是否已处理", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") | 70 | @Schema(description = "是否已处理", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") |
| 66 | private Boolean processed; | 71 | private Boolean processed; |
| 67 | 72 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java
| @@ -654,10 +654,11 @@ public class SimpleModelUtils { | @@ -654,10 +654,11 @@ public class SimpleModelUtils { | ||
| 654 | } | 654 | } |
| 655 | buildNodeProgress(processInstance, simpleModel, nodeProgresses, historicActivityList, activityInstanceMap, returnNodePosition); | 655 | buildNodeProgress(processInstance, simpleModel, nodeProgresses, historicActivityList, activityInstanceMap, returnNodePosition); |
| 656 | // 如果有“子”节点,则递归处理子节点 | 656 | // 如果有“子”节点,则递归处理子节点 |
| 657 | + // TODO @jason:需要根据条件,是否继续递归。例如说,一共有 3 个 node;第 2 个 node 审批不通过了。那么第 3 个 node 就不用了。(微信讨论下) | ||
| 657 | traverseNodeToBuildNodeProgress(processInstance, simpleModel.getChildNode(), historicActivityList, activityInstanceMap, nodeProgresses, returnNodePosition); | 658 | traverseNodeToBuildNodeProgress(processInstance, simpleModel.getChildNode(), historicActivityList, activityInstanceMap, nodeProgresses, returnNodePosition); |
| 658 | } | 659 | } |
| 659 | 660 | ||
| 660 | - // TODO @芋艿:重点在 review 下 | 661 | + // TODO @芋艿,@jason:可重构优化的点,SimpleModelUtils 负责提供一个遍历的方法,有个 Function 进行每个节点的处理。目的是,把逻辑拿回到 Service 里面;或者说,减少 Utils 去调用 Service |
| 661 | private static void buildNodeProgress(HistoricProcessInstance processInstance, BpmSimpleModelNodeVO node, List<ProcessNodeProgress> nodeProgresses, | 662 | private static void buildNodeProgress(HistoricProcessInstance processInstance, BpmSimpleModelNodeVO node, List<ProcessNodeProgress> nodeProgresses, |
| 662 | List<HistoricActivityInstance> historicActivityList, Map<String, HistoricActivityInstance> activityInstanceMap, List<Integer> returnNodePosition) { | 663 | List<HistoricActivityInstance> historicActivityList, Map<String, HistoricActivityInstance> activityInstanceMap, List<Integer> returnNodePosition) { |
| 663 | BpmSimpleModelNodeType nodeType = BpmSimpleModelNodeType.valueOf(node.getType()); | 664 | BpmSimpleModelNodeType nodeType = BpmSimpleModelNodeType.valueOf(node.getType()); |
| @@ -674,6 +675,7 @@ public class SimpleModelUtils { | @@ -674,6 +675,7 @@ public class SimpleModelUtils { | ||
| 674 | // 2. 设置节点状态 | 675 | // 2. 设置节点状态 |
| 675 | nodeProgress.setStatus(activityService.getNotRunActivityProgressStatus(processInstanceStatus)); | 676 | nodeProgress.setStatus(activityService.getNotRunActivityProgressStatus(processInstanceStatus)); |
| 676 | // 3. 抄送节点, 审批节点设置用户列表 | 677 | // 3. 抄送节点, 审批节点设置用户列表 |
| 678 | + // TODO @芋艿:抄送节点,要不要跳过(不展示) | ||
| 677 | if (COPY_NODE.getType().equals(node.getType()) || | 679 | if (COPY_NODE.getType().equals(node.getType()) || |
| 678 | (APPROVE_NODE.getType().equals(node.getType()) && USER.getType().equals(node.getApproveType()))) { | 680 | (APPROVE_NODE.getType().equals(node.getType()) && USER.getType().equals(node.getApproveType()))) { |
| 679 | nodeProgress.setUserList(activityService.getNotRunActivityUserList(processInstance.getId() | 681 | nodeProgress.setUserList(activityService.getNotRunActivityUserList(processInstance.getId() |
| @@ -707,6 +709,7 @@ public class SimpleModelUtils { | @@ -707,6 +709,7 @@ public class SimpleModelUtils { | ||
| 707 | } | 709 | } |
| 708 | break; | 710 | break; |
| 709 | } | 711 | } |
| 712 | + // TODO @芋艿:抄送节点,要不要跳过(不展示) | ||
| 710 | case COPY_NODE: { // 抄送节点 | 713 | case COPY_NODE: { // 抄送节点 |
| 711 | // 1. 设置节点的状态 | 714 | // 1. 设置节点的状态 |
| 712 | nodeProgress.setStatus(activityService.getHistoricActivityProgressStatus(historicActivity, false, historicActivityList)); | 715 | nodeProgress.setStatus(activityService.getHistoricActivityProgressStatus(historicActivity, false, historicActivityList)); |