Commit ef296822304ec8785e46243e7d3992e6498a6323

Authored by Lesan
1 parent 7cf55c53

feat: 添加节点类型以区分不同节点

yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskRespVO.java
@@ -85,6 +85,9 @@ public class BpmTaskRespVO { @@ -85,6 +85,9 @@ public class BpmTaskRespVO {
85 @Schema(description = "是否填写审批意见", example = "false") 85 @Schema(description = "是否填写审批意见", example = "false")
86 private Boolean reasonRequire; 86 private Boolean reasonRequire;
87 87
  88 + @Schema(description = "节点类型", example = "10")
  89 + private Integer nodeType;
  90 +
88 @Data 91 @Data
89 @Schema(description = "流程实例") 92 @Schema(description = "流程实例")
90 public static class ProcessInstance { 93 public static class ProcessInstance {
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
@@ -326,7 +326,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService @@ -326,7 +326,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
326 ActivityNode activityNode = new ActivityNode().setId(task.getTaskDefinitionKey()).setName(task.getName()) 326 ActivityNode activityNode = new ActivityNode().setId(task.getTaskDefinitionKey()).setName(task.getName())
327 .setNodeType(START_USER_NODE_ID.equals(task.getTaskDefinitionKey()) 327 .setNodeType(START_USER_NODE_ID.equals(task.getTaskDefinitionKey())
328 ? BpmSimpleModelNodeTypeEnum.START_USER_NODE.getType() 328 ? BpmSimpleModelNodeTypeEnum.START_USER_NODE.getType()
329 - : parseNodeType(flowNode)) 329 + : ObjectUtil.isNull(parseNodeType(flowNode)) ?
  330 + BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType() : parseNodeType(flowNode))
330 .setStatus(FlowableUtils.getTaskStatus(task)) 331 .setStatus(FlowableUtils.getTaskStatus(task))
331 .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode)) 332 .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode))
332 .setStartTime(DateUtils.of(task.getCreateTime())).setEndTime(DateUtils.of(task.getEndTime())) 333 .setStartTime(DateUtils.of(task.getCreateTime())).setEndTime(DateUtils.of(task.getEndTime()))
@@ -403,7 +404,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService @@ -403,7 +404,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
403 HistoricActivityInstance firstActivity = CollUtil.getFirst(taskActivities); // 取第一个任务,会签/或签的任务,开始时间相同 404 HistoricActivityInstance firstActivity = CollUtil.getFirst(taskActivities); // 取第一个任务,会签/或签的任务,开始时间相同
404 ActivityNode activityNode = new ActivityNode().setId(firstActivity.getActivityId()) 405 ActivityNode activityNode = new ActivityNode().setId(firstActivity.getActivityId())
405 .setName(firstActivity.getActivityName()) 406 .setName(firstActivity.getActivityName())
406 - .setNodeType(parseNodeType(flowNode)) 407 + .setNodeType(ObjectUtil.isNull(parseNodeType(flowNode)) ?
  408 + BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType() : parseNodeType(flowNode))
407 .setStatus(BpmTaskStatusEnum.RUNNING.getStatus()) 409 .setStatus(BpmTaskStatusEnum.RUNNING.getStatus())
408 .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode)) 410 .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode))
409 .setStartTime(DateUtils.of(CollUtil.getFirst(taskActivities).getStartTime())) 411 .setStartTime(DateUtils.of(CollUtil.getFirst(taskActivities).getStartTime()))
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
@@ -162,6 +162,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -162,6 +162,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
162 bpmnModel, todoTask.getTaskDefinitionKey()); 162 bpmnModel, todoTask.getTaskDefinitionKey());
163 Boolean signEnable = parseSignEnable(bpmnModel, todoTask.getTaskDefinitionKey()); 163 Boolean signEnable = parseSignEnable(bpmnModel, todoTask.getTaskDefinitionKey());
164 Boolean reasonRequire = parseReasonRequire(bpmnModel, todoTask.getTaskDefinitionKey()); 164 Boolean reasonRequire = parseReasonRequire(bpmnModel, todoTask.getTaskDefinitionKey());
  165 + Integer nodeType = parseNodeType(BpmnModelUtils.getFlowElementById(bpmnModel, todoTask.getTaskDefinitionKey()));
165 166
166 // 4. 任务表单 167 // 4. 任务表单
167 BpmFormDO taskForm = null; 168 BpmFormDO taskForm = null;
@@ -171,7 +172,8 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -171,7 +172,8 @@ public class BpmTaskServiceImpl implements BpmTaskService {
171 172
172 return BpmTaskConvert.INSTANCE.buildTodoTask(todoTask, childrenTasks, buttonsSetting, taskForm) 173 return BpmTaskConvert.INSTANCE.buildTodoTask(todoTask, childrenTasks, buttonsSetting, taskForm)
173 .setSignEnable(signEnable) 174 .setSignEnable(signEnable)
174 - .setReasonRequire(reasonRequire); 175 + .setReasonRequire(reasonRequire)
  176 + .setNodeType(nodeType);
175 } 177 }
176 178
177 @Override 179 @Override