|
@@ -1,14 +1,15 @@
|
|
|
package cn.iocoder.yudao.module.bpm.convert.task;
|
|
|
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
|
|
-import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
|
|
import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
+import cn.iocoder.yudao.framework.flowable.core.util.FlowableUtils;
|
|
|
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.framework.flowable.core.enums.BpmConstants;
|
|
|
+import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
|
|
|
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;
|
|
@@ -17,7 +18,6 @@ import org.flowable.engine.runtime.ProcessInstance;
|
|
|
import org.flowable.task.api.Task;
|
|
|
import org.flowable.task.api.history.HistoricTaskInstance;
|
|
|
import org.flowable.task.service.impl.persistence.entity.TaskEntityImpl;
|
|
|
-import org.mapstruct.Mapper;
|
|
|
import org.mapstruct.factory.Mappers;
|
|
|
|
|
|
import java.util.Date;
|
|
@@ -25,13 +25,13 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
|
|
|
+import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
|
|
|
|
|
|
/**
|
|
|
* Bpm 任务 Convert
|
|
|
*
|
|
|
* @author 芋道源码
|
|
|
*/
|
|
|
-@Mapper(uses = DateUtils.class)
|
|
|
public interface BpmTaskConvert {
|
|
|
|
|
|
BpmTaskConvert INSTANCE = Mappers.getMapper(BpmTaskConvert.class);
|
|
@@ -45,8 +45,7 @@ public interface BpmTaskConvert {
|
|
|
return;
|
|
|
}
|
|
|
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
|
|
|
- taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class,
|
|
|
- processInstanceVO -> processInstanceVO.setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class))));
|
|
|
+ taskVO.getProcessInstance().setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class));
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -55,14 +54,13 @@ public interface BpmTaskConvert {
|
|
|
Map<Long, AdminUserRespDTO> userMap) {
|
|
|
List<BpmTaskRespVO> taskVOList = CollectionUtils.convertList(pageResult.getList(), task -> {
|
|
|
BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class);
|
|
|
- taskVO.setStatus((Integer) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS));
|
|
|
- taskVO.setReason((String) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_REASON));
|
|
|
+ taskVO.setStatus(FlowableUtils.getTaskStatus(task)).setReason(FlowableUtils.getTaskReason(task));
|
|
|
// 流程实例
|
|
|
HistoricProcessInstance processInstance = processInstanceMap.get(taskVO.getProcessInstanceId());
|
|
|
if (processInstance != null) {
|
|
|
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
|
|
|
- taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class,
|
|
|
- processInstanceVO -> processInstanceVO.setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class))));
|
|
|
+ taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class));
|
|
|
+ taskVO.getProcessInstance().setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class));
|
|
|
}
|
|
|
return taskVO;
|
|
|
});
|
|
@@ -71,32 +69,32 @@ public interface BpmTaskConvert {
|
|
|
|
|
|
default List<BpmTaskRespVO> buildTaskListByProcessInstanceId(List<HistoricTaskInstance> taskList,
|
|
|
HistoricProcessInstance processInstance,
|
|
|
+ Map<Long, BpmFormDO> formMap,
|
|
|
Map<Long, AdminUserRespDTO> userMap,
|
|
|
Map<Long, DeptRespDTO> deptMap) {
|
|
|
List<BpmTaskRespVO> taskVOList = CollectionUtils.convertList(taskList, task -> {
|
|
|
BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class);
|
|
|
- taskVO.setStatus((Integer) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS));
|
|
|
- taskVO.setReason((String) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_REASON));
|
|
|
+ taskVO.setStatus(FlowableUtils.getTaskStatus(task)).setReason(FlowableUtils.getTaskReason(task));
|
|
|
// 流程实例
|
|
|
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
|
|
|
- taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class,
|
|
|
- processInstanceVO -> processInstanceVO.setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class))));
|
|
|
+ taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class));
|
|
|
+ taskVO.getProcessInstance().setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class));
|
|
|
+ // 表单信息
|
|
|
+ BpmFormDO form = MapUtil.get(formMap, Long.parseLong(task.getFormKey()), BpmFormDO.class);
|
|
|
+ if (form != null) {
|
|
|
+ taskVO.setFormId(form.getId()).setFormName(form.getName()).setFormConf(form.getConf())
|
|
|
+ .setFormFields(form.getFields()).setFormVariables(FlowableUtils.getTaskFormVariable(task));
|
|
|
+ }
|
|
|
// 用户信息
|
|
|
AdminUserRespDTO assignUser = userMap.get(NumberUtils.parseLong(task.getAssignee()));
|
|
|
if (assignUser != null) {
|
|
|
taskVO.setAssigneeUser(BeanUtils.toBean(assignUser, BpmProcessInstanceRespVO.User.class));
|
|
|
- DeptRespDTO dept = deptMap.get(assignUser.getDeptId());
|
|
|
- if (dept != null) {
|
|
|
- taskVO.getAssigneeUser().setDeptName(dept.getName());
|
|
|
- }
|
|
|
+ findAndThen(deptMap, assignUser.getDeptId(), dept -> taskVO.getAssigneeUser().setDeptName(dept.getName()));
|
|
|
}
|
|
|
AdminUserRespDTO ownerUser = userMap.get(NumberUtils.parseLong(task.getOwner()));
|
|
|
if (ownerUser != null) {
|
|
|
taskVO.setOwnerUser(BeanUtils.toBean(ownerUser, BpmProcessInstanceRespVO.User.class));
|
|
|
- DeptRespDTO dept = deptMap.get(ownerUser.getDeptId());
|
|
|
- if (dept != null) {
|
|
|
- taskVO.getOwnerUser().setDeptName(dept.getName());
|
|
|
- }
|
|
|
+ findAndThen(deptMap, ownerUser.getDeptId(), dept -> taskVO.getOwnerUser().setDeptName(dept.getName()));
|
|
|
}
|
|
|
return taskVO;
|
|
|
});
|
|
@@ -126,10 +124,7 @@ public interface BpmTaskConvert {
|
|
|
AdminUserRespDTO ownerUser = userMap.get(NumberUtils.parseLong(task.getOwner()));
|
|
|
if (ownerUser != null) {
|
|
|
taskVO.setOwnerUser(BeanUtils.toBean(ownerUser, BpmProcessInstanceRespVO.User.class));
|
|
|
- DeptRespDTO dept = deptMap.get(ownerUser.getDeptId());
|
|
|
- if (dept != null) {
|
|
|
- taskVO.getOwnerUser().setDeptName(dept.getName());
|
|
|
- }
|
|
|
+ findAndThen(deptMap, ownerUser.getDeptId(), dept -> taskVO.getOwnerUser().setDeptName(dept.getName()));
|
|
|
}
|
|
|
}));
|
|
|
}
|