Commit e9a3773b7275ff60e03860f1dadd934629555620

Authored by YunaiV
1 parent 04fc7404

【代码评审】BPM:办理人的逻辑

yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskRespVO.java
@@ -85,8 +85,8 @@ public class BpmTaskRespVO { @@ -85,8 +85,8 @@ 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") // 只有Simple设计器的场景下才会使用此字段  
89 - private Integer nodeType; 88 + @Schema(description = "节点类型", example = "10")
  89 + private Integer nodeType; // 参见 BpmSimpleModelNodeTypeEnum 枚举。
90 90
91 @Data 91 @Data
92 @Schema(description = "流程实例") 92 @Schema(description = "流程实例")
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/enums/BpmnModelConstants.java
1 package cn.iocoder.yudao.module.bpm.framework.flowable.core.enums; 1 package cn.iocoder.yudao.module.bpm.framework.flowable.core.enums;
2 2
  3 +import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelTypeEnum;
  4 +
3 /** 5 /**
4 * BPMN XML 常量信息 6 * BPMN XML 常量信息
5 * 7 *
@@ -131,6 +133,8 @@ public interface BpmnModelConstants { @@ -131,6 +133,8 @@ public interface BpmnModelConstants {
131 133
132 /** 134 /**
133 * 节点类型 135 * 节点类型
  136 + *
  137 + * 目前只有 {@link BpmModelTypeEnum#SIMPLE} 的 UserTask 节点会设置该属性,用于区分是审批节点、还是办理节点
134 */ 138 */
135 String NODE_TYPE = "nodeType"; 139 String NODE_TYPE = "nodeType";
136 140
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
@@ -5,6 +5,7 @@ import cn.hutool.core.collection.ListUtil; @@ -5,6 +5,7 @@ import cn.hutool.core.collection.ListUtil;
5 import cn.hutool.core.date.DateUtil; 5 import cn.hutool.core.date.DateUtil;
6 import cn.hutool.core.lang.Assert; 6 import cn.hutool.core.lang.Assert;
7 import cn.hutool.core.util.ArrayUtil; 7 import cn.hutool.core.util.ArrayUtil;
  8 +import cn.hutool.core.util.ObjUtil;
8 import cn.hutool.core.util.ObjectUtil; 9 import cn.hutool.core.util.ObjectUtil;
9 import cn.hutool.core.util.StrUtil; 10 import cn.hutool.core.util.StrUtil;
10 import cn.iocoder.yudao.framework.common.pojo.PageResult; 11 import cn.iocoder.yudao.framework.common.pojo.PageResult;
@@ -326,8 +327,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService @@ -326,8 +327,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
326 ActivityNode activityNode = new ActivityNode().setId(task.getTaskDefinitionKey()).setName(task.getName()) 327 ActivityNode activityNode = new ActivityNode().setId(task.getTaskDefinitionKey()).setName(task.getName())
327 .setNodeType(START_USER_NODE_ID.equals(task.getTaskDefinitionKey()) 328 .setNodeType(START_USER_NODE_ID.equals(task.getTaskDefinitionKey())
328 ? BpmSimpleModelNodeTypeEnum.START_USER_NODE.getType() 329 ? BpmSimpleModelNodeTypeEnum.START_USER_NODE.getType()
329 - : ObjectUtil.isNull(parseNodeType(flowNode)) ?  
330 - BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType() : parseNodeType(flowNode)) 330 + : ObjUtil.defaultIfNull(parseNodeType(flowNode), // 目的:解决“办理节点”的识别
  331 + BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType()))
331 .setStatus(FlowableUtils.getTaskStatus(task)) 332 .setStatus(FlowableUtils.getTaskStatus(task))
332 .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode)) 333 .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode))
333 .setStartTime(DateUtils.of(task.getCreateTime())).setEndTime(DateUtils.of(task.getEndTime())) 334 .setStartTime(DateUtils.of(task.getCreateTime())).setEndTime(DateUtils.of(task.getEndTime()))
@@ -404,8 +405,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService @@ -404,8 +405,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
404 HistoricActivityInstance firstActivity = CollUtil.getFirst(taskActivities); // 取第一个任务,会签/或签的任务,开始时间相同 405 HistoricActivityInstance firstActivity = CollUtil.getFirst(taskActivities); // 取第一个任务,会签/或签的任务,开始时间相同
405 ActivityNode activityNode = new ActivityNode().setId(firstActivity.getActivityId()) 406 ActivityNode activityNode = new ActivityNode().setId(firstActivity.getActivityId())
406 .setName(firstActivity.getActivityName()) 407 .setName(firstActivity.getActivityName())
407 - .setNodeType(ObjectUtil.isNull(parseNodeType(flowNode)) ?  
408 - BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType() : parseNodeType(flowNode)) 408 + .setNodeType(ObjUtil.defaultIfNull(parseNodeType(flowNode), // 目的:解决“办理节点”的识别
  409 + BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType()))
409 .setStatus(BpmTaskStatusEnum.RUNNING.getStatus()) 410 .setStatus(BpmTaskStatusEnum.RUNNING.getStatus())
410 .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode)) 411 .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode))
411 .setStartTime(DateUtils.of(CollUtil.getFirst(taskActivities).getStartTime())) 412 .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
@@ -171,9 +171,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -171,9 +171,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
171 } 171 }
172 172
173 return BpmTaskConvert.INSTANCE.buildTodoTask(todoTask, childrenTasks, buttonsSetting, taskForm) 173 return BpmTaskConvert.INSTANCE.buildTodoTask(todoTask, childrenTasks, buttonsSetting, taskForm)
174 - .setSignEnable(signEnable)  
175 - .setReasonRequire(reasonRequire)  
176 - .setNodeType(nodeType); 174 + .setNodeType(nodeType).setSignEnable(signEnable).setReasonRequire(reasonRequire);
177 } 175 }
178 176
179 @Override 177 @Override