|
@@ -9,10 +9,12 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceRespVO;
|
|
|
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO;
|
|
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
|
|
|
+import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
|
|
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils;
|
|
|
import cn.iocoder.yudao.module.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO;
|
|
|
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
|
|
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
|
|
+import org.flowable.bpmn.model.BpmnModel;
|
|
|
import org.flowable.engine.history.HistoricProcessInstance;
|
|
|
import org.flowable.engine.runtime.ProcessInstance;
|
|
|
import org.flowable.task.api.Task;
|
|
@@ -27,6 +29,8 @@ import java.util.Map;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
|
|
import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
|
|
|
+import static cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils.isAddSignUserTask;
|
|
|
+import static cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils.isAssignUserTask;
|
|
|
|
|
|
/**
|
|
|
* Bpm 任务 Convert
|
|
@@ -123,6 +127,30 @@ public interface BpmTaskConvert {
|
|
|
}));
|
|
|
}
|
|
|
|
|
|
+ default List<BpmTaskRespVO> buildTodoTaskListByUserId(Long userId, List<Task> todoTaskList,
|
|
|
+ Map<String, List<Task>> childrenTaskMap,
|
|
|
+ BpmnModel bpmnModel,
|
|
|
+ Map<Long, AdminUserRespDTO> userMap,
|
|
|
+ Map<Long, DeptRespDTO> deptMap) {
|
|
|
+ return convertList(todoTaskList, task -> {
|
|
|
+ // 找到分配给当前用户,或者当前用户加签的任务(为了减签)
|
|
|
+ if (!isAssignUserTask(userId, task) && !isAddSignUserTask(userId, task, childrenTaskMap)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class);
|
|
|
+ taskVO.setStatus(FlowableUtils.getTaskStatus(task)).setReason(FlowableUtils.getTaskReason(task));
|
|
|
+ taskVO.setButtonsSetting(BpmnModelUtils.parseButtonsSetting(bpmnModel, task.getTaskDefinitionKey()));
|
|
|
+ buildTaskOwner(taskVO, task.getOwner(), userMap, deptMap);
|
|
|
+ buildTaskAssignee(taskVO, task.getAssignee(), userMap, deptMap);
|
|
|
+ // 如果是被加签的任务. 找到它的子任务 (为了减签)
|
|
|
+ // TODO @jason:如果是向后加签,这个判断有问题哈。因为向后加签后,当前任务,assignee 还是没变。可以简单点,直接拿子任务哈。另外,需要考虑子任务的子任务。
|
|
|
+ if (isAddSignUserTask(userId, task, childrenTaskMap)) {
|
|
|
+ buildTaskChildren(taskVO, childrenTaskMap, userMap, deptMap);
|
|
|
+ }
|
|
|
+ return taskVO;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
default BpmMessageSendWhenTaskCreatedReqDTO convert(ProcessInstance processInstance, AdminUserRespDTO startUser,
|
|
|
Task task) {
|
|
|
BpmMessageSendWhenTaskCreatedReqDTO reqDTO = new BpmMessageSendWhenTaskCreatedReqDTO();
|
|
@@ -151,6 +179,7 @@ public interface BpmTaskConvert {
|
|
|
convertList(childTasks, childTask -> {
|
|
|
BpmTaskRespVO childTaskVO = BeanUtils.toBean(childTask, BpmTaskRespVO.class);
|
|
|
childTaskVO.setStatus(FlowableUtils.getTaskStatus(childTask));
|
|
|
+ buildTaskOwner(childTaskVO, childTask.getOwner(), userMap, deptMap);
|
|
|
buildTaskAssignee(childTaskVO, childTask.getAssignee(), userMap, deptMap);
|
|
|
return childTaskVO;
|
|
|
})
|