mirror of
https://gitee.com/dromara/RuoYi-Cloud-Plus.git
synced 2025-09-09 13:49:14 +00:00
update 优化 !pr164 代码结构与修复一些问题
This commit is contained in:
@@ -11,9 +11,9 @@ import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.workflow.api.domain.bo.ProcessInstanceBo;
|
||||
import org.dromara.workflow.api.domain.bo.ProcessInvalidBo;
|
||||
import org.dromara.workflow.api.domain.bo.TaskUrgingBo;
|
||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
||||
import org.dromara.workflow.domain.bo.TaskUrgingBo;
|
||||
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||
import org.dromara.workflow.service.IActProcessInstanceService;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.workflow.testleave.controller;
|
||||
package org.dromara.workflow.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
@@ -15,9 +15,9 @@ import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.workflow.testleave.domain.bo.TestLeaveBo;
|
||||
import org.dromara.workflow.testleave.domain.vo.TestLeaveVo;
|
||||
import org.dromara.workflow.testleave.service.ITestLeaveService;
|
||||
import org.dromara.workflow.domain.bo.TestLeaveBo;
|
||||
import org.dromara.workflow.domain.vo.TestLeaveVo;
|
||||
import org.dromara.workflow.service.ITestLeaveService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.workflow.testleave.domain;
|
||||
package org.dromara.workflow.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
@@ -0,0 +1,43 @@
|
||||
package org.dromara.workflow.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 流程实例请求对象
|
||||
*
|
||||
* @author may
|
||||
*/
|
||||
@Data
|
||||
public class ProcessInstanceBo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 流程名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 流程key
|
||||
*/
|
||||
private String key;
|
||||
|
||||
/**
|
||||
* 任务发起人
|
||||
*/
|
||||
private String startUserId;
|
||||
|
||||
/**
|
||||
* 业务id
|
||||
*/
|
||||
private String businessKey;
|
||||
|
||||
/**
|
||||
* 模型分类
|
||||
*/
|
||||
private String categoryCode;
|
||||
}
|
@@ -0,0 +1,31 @@
|
||||
package org.dromara.workflow.domain.bo;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 流程实例作废请求对象
|
||||
*
|
||||
* @author may
|
||||
*/
|
||||
@Data
|
||||
public class ProcessInvalidBo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 业务id
|
||||
*/
|
||||
@NotBlank(message = "业务id不能为空", groups = {AddGroup.class})
|
||||
private String businessKey;
|
||||
|
||||
/**
|
||||
* 作废原因
|
||||
*/
|
||||
private String deleteReason;
|
||||
}
|
@@ -0,0 +1,34 @@
|
||||
package org.dromara.workflow.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 任务催办
|
||||
*
|
||||
* @author may
|
||||
*/
|
||||
@Data
|
||||
public class TaskUrgingBo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 流程实例id
|
||||
*/
|
||||
private String processInstanceId;
|
||||
|
||||
/**
|
||||
* 消息类型
|
||||
*/
|
||||
private List<String> messageType;
|
||||
|
||||
/**
|
||||
* 催办内容(为空默认系统内置信息)
|
||||
*/
|
||||
private String message;
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.workflow.testleave.domain.bo;
|
||||
package org.dromara.workflow.domain.bo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
@@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.workflow.testleave.domain.TestLeave;
|
||||
import org.dromara.workflow.domain.TestLeave;
|
||||
|
||||
import java.util.Date;
|
||||
|
@@ -1,11 +1,10 @@
|
||||
package org.dromara.workflow.testleave.domain.vo;
|
||||
package org.dromara.workflow.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.workflow.api.domain.dto.BusinessInstanceDTO;
|
||||
import org.dromara.workflow.testleave.domain.TestLeave;
|
||||
import org.dromara.workflow.domain.TestLeave;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
@@ -68,10 +67,4 @@ public class TestLeaveVo implements Serializable {
|
||||
@ExcelProperty(value = "状态")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 业务与流程实例关联对象
|
||||
*/
|
||||
private BusinessInstanceDTO businessInstanceDTO;
|
||||
|
||||
|
||||
}
|
@@ -1,13 +1,8 @@
|
||||
package org.dromara.workflow.dubbo;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.bean.copier.CopyOptions;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.dubbo.config.annotation.DubboService;
|
||||
import org.dromara.workflow.api.domain.RemoteWorkflowService;
|
||||
import org.dromara.workflow.api.domain.dto.BusinessInstanceDTO;
|
||||
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
||||
import org.dromara.workflow.domain.ActHiProcinst;
|
||||
import org.dromara.workflow.service.IActHiProcinstService;
|
||||
import org.dromara.workflow.service.WorkflowService;
|
||||
|
||||
@@ -42,34 +37,6 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService {
|
||||
return workflowService.getBusinessStatus(businessKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BusinessInstanceDTO getBusinessInstance(String businessKey) {
|
||||
|
||||
ActHiProcinst actHiProcinst = actHiProcinstService.selectByBusinessKey(businessKey);
|
||||
if (actHiProcinst == null) {
|
||||
BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO();
|
||||
businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus());
|
||||
return businessInstanceDTO;
|
||||
}
|
||||
|
||||
BusinessInstanceDTO businessInstanceDTO = BeanUtil.toBean(actHiProcinst, BusinessInstanceDTO.class);
|
||||
businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus()));
|
||||
businessInstanceDTO.setProcessDefinitionId(actHiProcinst.getProcDefId());
|
||||
return businessInstanceDTO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BusinessInstanceDTO> getBusinessInstance(List<String> businessKeys) {
|
||||
List<ActHiProcinst> actHiProcinstList = actHiProcinstService.selectByBusinessKeyIn(businessKeys);
|
||||
List<BusinessInstanceDTO> businessInstanceList = BeanUtil.copyToList(actHiProcinstList, BusinessInstanceDTO.class,
|
||||
CopyOptions.create().setFieldMapping(Map.of("procDefId", "processDefinitionId")));
|
||||
businessInstanceList.forEach(dto -> {
|
||||
dto.setBusinessStatusName(BusinessStatusEnum.findByStatus(dto.getBusinessStatus()));
|
||||
});
|
||||
|
||||
return businessInstanceList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVariable(String taskId, String variableName, Object value) {
|
||||
workflowService.setVariable(taskId, variableName, value);
|
||||
|
@@ -1,6 +1,5 @@
|
||||
package org.dromara.workflow.flowable.handler;
|
||||
|
||||
import org.dromara.common.core.utils.ServletUtils;
|
||||
import org.dromara.common.core.utils.SpringUtils;
|
||||
import org.dromara.workflow.api.domain.event.ProcessEvent;
|
||||
import org.dromara.workflow.api.domain.event.ProcessTaskEvent;
|
||||
@@ -29,7 +28,6 @@ public class FlowProcessEventHandler {
|
||||
processEvent.setBusinessKey(businessKey);
|
||||
processEvent.setStatus(status);
|
||||
processEvent.setSubmit(submit);
|
||||
processEvent.setRequest(ServletUtils.getRequest());
|
||||
SpringUtils.context().publishEvent(processEvent);
|
||||
}
|
||||
|
||||
@@ -45,7 +43,6 @@ public class FlowProcessEventHandler {
|
||||
processTaskEvent.setKeyNode(keyNode);
|
||||
processTaskEvent.setTaskId(taskId);
|
||||
processTaskEvent.setBusinessKey(businessKey);
|
||||
processTaskEvent.setRequest(ServletUtils.getRequest());
|
||||
SpringUtils.context().publishEvent(processTaskEvent);
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,8 @@
|
||||
package org.dromara.workflow.testleave.mapper;
|
||||
package org.dromara.workflow.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.workflow.testleave.domain.TestLeave;
|
||||
import org.dromara.workflow.testleave.domain.vo.TestLeaveVo;
|
||||
import org.dromara.workflow.domain.TestLeave;
|
||||
import org.dromara.workflow.domain.vo.TestLeaveVo;
|
||||
|
||||
/**
|
||||
* 请假Mapper接口
|
@@ -2,9 +2,9 @@ package org.dromara.workflow.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.workflow.api.domain.bo.ProcessInstanceBo;
|
||||
import org.dromara.workflow.api.domain.bo.ProcessInvalidBo;
|
||||
import org.dromara.workflow.api.domain.bo.TaskUrgingBo;
|
||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
||||
import org.dromara.workflow.domain.bo.TaskUrgingBo;
|
||||
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||
|
||||
|
@@ -1,9 +1,9 @@
|
||||
package org.dromara.workflow.testleave.service;
|
||||
package org.dromara.workflow.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.workflow.testleave.domain.bo.TestLeaveBo;
|
||||
import org.dromara.workflow.testleave.domain.vo.TestLeaveVo;
|
||||
import org.dromara.workflow.domain.bo.TestLeaveBo;
|
||||
import org.dromara.workflow.domain.vo.TestLeaveVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
@@ -32,23 +32,6 @@ public interface WorkflowService {
|
||||
*/
|
||||
String getBusinessStatus(String businessKey);
|
||||
|
||||
/**
|
||||
* 设置流程实例对象
|
||||
*
|
||||
* @param obj 业务对象
|
||||
* @param businessKey 业务id
|
||||
*/
|
||||
void setBusinessInstanceDTO(Object obj, String businessKey);
|
||||
|
||||
/**
|
||||
* 设置流程实例对象
|
||||
*
|
||||
* @param obj 业务对象
|
||||
* @param idList 业务id
|
||||
* @param fieldName 主键属性名称
|
||||
*/
|
||||
void setBusinessInstanceListDTO(Object obj, List<String> idList, String fieldName);
|
||||
|
||||
/**
|
||||
* 设置流程变量(全局变量)
|
||||
*
|
||||
|
@@ -15,13 +15,13 @@ import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.workflow.api.domain.bo.ProcessInstanceBo;
|
||||
import org.dromara.workflow.api.domain.bo.ProcessInvalidBo;
|
||||
import org.dromara.workflow.api.domain.bo.TaskUrgingBo;
|
||||
import org.dromara.workflow.common.constant.FlowConstant;
|
||||
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
||||
import org.dromara.workflow.common.enums.TaskStatusEnum;
|
||||
import org.dromara.workflow.domain.ActHiProcinst;
|
||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
||||
import org.dromara.workflow.domain.bo.TaskUrgingBo;
|
||||
import org.dromara.workflow.domain.vo.*;
|
||||
import org.dromara.workflow.flowable.CustomDefaultProcessDiagramGenerator;
|
||||
import org.dromara.workflow.flowable.cmd.DeleteExecutionCmd;
|
||||
@@ -33,7 +33,7 @@ import org.dromara.workflow.service.IWfNodeConfigService;
|
||||
import org.dromara.workflow.service.IWfTaskBackNodeService;
|
||||
import org.dromara.workflow.utils.QueryUtils;
|
||||
import org.dromara.workflow.utils.WorkflowUtils;
|
||||
import org.flowable.bpmn.model.*;
|
||||
import org.flowable.bpmn.model.BpmnModel;
|
||||
import org.flowable.engine.*;
|
||||
import org.flowable.engine.history.HistoricActivityInstance;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
|
@@ -16,7 +16,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.tenant.helper.TenantHelper;
|
||||
import org.dromara.system.api.RemoteUserService;
|
||||
import org.dromara.system.api.domain.dto.UserDTO;
|
||||
import org.dromara.system.api.domain.vo.RemoteUserVo;
|
||||
import org.dromara.system.api.model.RoleDTO;
|
||||
import org.dromara.workflow.common.constant.FlowConstant;
|
||||
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
||||
@@ -818,7 +818,7 @@ public class ActTaskServiceImpl implements IActTaskService {
|
||||
|
||||
if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) {
|
||||
List<Long> userIds = StreamUtils.filter(assigneeList, e -> !String.valueOf(e).equals(task.getAssignee()));
|
||||
List<UserDTO> userList = userService.selectListByIds(userIds);
|
||||
List<RemoteUserVo> userList = userService.selectListByIds(userIds);
|
||||
for (Long userId : userIds) {
|
||||
TaskVo taskVo = new TaskVo();
|
||||
taskVo.setId("串行会签");
|
||||
@@ -836,7 +836,7 @@ public class ActTaskServiceImpl implements IActTaskService {
|
||||
List<Task> tasks = StreamUtils.filter(taskList, e -> StringUtils.isBlank(e.getParentTaskId()) && !e.getExecutionId().equals(task.getExecutionId()) && e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey()));
|
||||
if (CollUtil.isNotEmpty(tasks)) {
|
||||
List<Long> userIds = StreamUtils.toList(tasks, e -> Long.valueOf(e.getAssignee()));
|
||||
List<UserDTO> userList = userService.selectListByIds(userIds);
|
||||
List<RemoteUserVo> userList = userService.selectListByIds(userIds);
|
||||
for (Task t : tasks) {
|
||||
TaskVo taskVo = new TaskVo();
|
||||
taskVo.setId(t.getId());
|
||||
|
@@ -1,6 +1,5 @@
|
||||
package org.dromara.workflow.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -14,15 +13,14 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.workflow.api.domain.RemoteWorkflowService;
|
||||
import org.dromara.workflow.api.domain.dto.BusinessInstanceDTO;
|
||||
import org.dromara.workflow.api.domain.event.ProcessEvent;
|
||||
import org.dromara.workflow.api.domain.event.ProcessTaskEvent;
|
||||
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
||||
import org.dromara.workflow.testleave.domain.TestLeave;
|
||||
import org.dromara.workflow.testleave.domain.bo.TestLeaveBo;
|
||||
import org.dromara.workflow.testleave.domain.vo.TestLeaveVo;
|
||||
import org.dromara.workflow.testleave.mapper.TestLeaveMapper;
|
||||
import org.dromara.workflow.testleave.service.ITestLeaveService;
|
||||
import org.dromara.workflow.domain.TestLeave;
|
||||
import org.dromara.workflow.domain.bo.TestLeaveBo;
|
||||
import org.dromara.workflow.domain.vo.TestLeaveVo;
|
||||
import org.dromara.workflow.mapper.TestLeaveMapper;
|
||||
import org.dromara.workflow.service.ITestLeaveService;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -50,10 +48,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
|
||||
*/
|
||||
@Override
|
||||
public TestLeaveVo queryById(Long id) {
|
||||
TestLeaveVo testLeaveVo = baseMapper.selectVoById(id);
|
||||
BusinessInstanceDTO businessInstance = workflowService.getBusinessInstance(String.valueOf(id));
|
||||
testLeaveVo.setBusinessInstanceDTO(businessInstance);
|
||||
return testLeaveVo;
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -63,23 +58,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
|
||||
public TableDataInfo<TestLeaveVo> queryPageList(TestLeaveBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<TestLeave> lqw = buildQueryWrapper(bo);
|
||||
Page<TestLeaveVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
TableDataInfo<TestLeaveVo> build = TableDataInfo.build(result);
|
||||
List<TestLeaveVo> rows = build.getRows();
|
||||
if (CollUtil.isNotEmpty(rows)) {
|
||||
List<String> ids = StreamUtils.toList(rows, e -> String.valueOf(e.getId()));
|
||||
List<BusinessInstanceDTO> processInstances = workflowService.getBusinessInstance(ids);
|
||||
for (TestLeaveVo vo : rows) {
|
||||
BusinessInstanceDTO processInstanceDTO = null;
|
||||
for (BusinessInstanceDTO processInstance : processInstances) {
|
||||
if (String.valueOf(vo.getId()).equals(processInstance.getBusinessKey())) {
|
||||
processInstanceDTO = processInstance;
|
||||
break;
|
||||
}
|
||||
}
|
||||
vo.setBusinessInstanceDTO(processInstanceDTO);
|
||||
}
|
||||
}
|
||||
return build;
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -110,10 +89,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
TestLeaveVo testLeaveVo = MapstructUtils.convert(add, TestLeaveVo.class);
|
||||
BusinessInstanceDTO businessInstance = workflowService.getBusinessInstance(String.valueOf(add.getId()));
|
||||
testLeaveVo.setBusinessInstanceDTO(businessInstance);
|
||||
return testLeaveVo;
|
||||
return MapstructUtils.convert(add, TestLeaveVo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -123,10 +99,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
|
||||
public TestLeaveVo updateByBo(TestLeaveBo bo) {
|
||||
TestLeave update = MapstructUtils.convert(bo, TestLeave.class);
|
||||
baseMapper.updateById(update);
|
||||
TestLeaveVo testLeaveVo = MapstructUtils.convert(update, TestLeaveVo.class);
|
||||
BusinessInstanceDTO businessInstance = workflowService.getBusinessInstance(String.valueOf(update.getId()));
|
||||
testLeaveVo.setBusinessInstanceDTO(businessInstance);
|
||||
return testLeaveVo;
|
||||
return MapstructUtils.convert(update, TestLeaveVo.class);
|
||||
}
|
||||
|
||||
/**
|
@@ -53,29 +53,6 @@ public class WorkflowServiceImpl implements WorkflowService {
|
||||
return WorkflowUtils.getBusinessStatus(businessKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置流程实例对象
|
||||
*
|
||||
* @param obj 业务对象
|
||||
* @param businessKey 业务id
|
||||
*/
|
||||
@Override
|
||||
public void setBusinessInstanceDTO(Object obj, String businessKey) {
|
||||
WorkflowUtils.setBusinessInstanceDTO(obj, businessKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置流程实例对象
|
||||
*
|
||||
* @param obj 业务对象
|
||||
* @param idList 业务id
|
||||
* @param fieldName 主键属性名称
|
||||
*/
|
||||
@Override
|
||||
public void setBusinessInstanceListDTO(Object obj, List<String> idList, String fieldName) {
|
||||
WorkflowUtils.setBusinessInstanceListDTO(obj, idList, fieldName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置流程变量(全局变量)
|
||||
*
|
||||
|
@@ -1,6 +1,5 @@
|
||||
package org.dromara.workflow.utils;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -10,21 +9,17 @@ import lombok.NoArgsConstructor;
|
||||
import org.dromara.common.core.utils.SpringUtils;
|
||||
import org.dromara.common.core.utils.StreamUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.reflect.ReflectUtils;
|
||||
import org.dromara.common.mail.utils.MailUtils;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.tenant.helper.TenantHelper;
|
||||
import org.dromara.common.websocket.dto.WebSocketMessageDto;
|
||||
import org.dromara.common.websocket.utils.WebSocketUtils;
|
||||
import org.dromara.system.api.RemoteUserService;
|
||||
import org.dromara.system.api.domain.dto.UserDTO;
|
||||
import org.dromara.system.api.domain.vo.RemoteUserVo;
|
||||
import org.dromara.system.api.model.RoleDTO;
|
||||
import org.dromara.workflow.api.domain.dto.BusinessInstanceDTO;
|
||||
import org.dromara.workflow.common.constant.FlowConstant;
|
||||
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
||||
import org.dromara.workflow.common.enums.MessageTypeEnum;
|
||||
import org.dromara.workflow.common.enums.TaskStatusEnum;
|
||||
import org.dromara.workflow.domain.ActHiProcinst;
|
||||
import org.dromara.workflow.domain.ActHiTaskinst;
|
||||
import org.dromara.workflow.domain.vo.MultiInstanceVo;
|
||||
import org.dromara.workflow.domain.vo.ParticipantVo;
|
||||
@@ -46,8 +41,6 @@ import org.flowable.task.service.impl.persistence.entity.TaskEntity;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static org.dromara.workflow.common.constant.FlowConstant.BUSINESS_INSTANCE_DTO;
|
||||
|
||||
/**
|
||||
* 工作流工具
|
||||
*
|
||||
@@ -146,10 +139,10 @@ public class WorkflowUtils {
|
||||
List<Long> userIds = USER_SERVICE.selectUserIdsByRoleIds(groupIds);
|
||||
if (CollUtil.isNotEmpty(userIds)) {
|
||||
participantVo.setGroupIds(groupIds);
|
||||
List<UserDTO> userList = USER_SERVICE.selectListByIds(userIds);
|
||||
List<RemoteUserVo> userList = USER_SERVICE.selectListByIds(userIds);
|
||||
if (CollUtil.isNotEmpty(userList)) {
|
||||
List<Long> userIdList = StreamUtils.toList(userList, UserDTO::getUserId);
|
||||
List<String> nickNames = StreamUtils.toList(userList, UserDTO::getNickName);
|
||||
List<Long> userIdList = StreamUtils.toList(userList, RemoteUserVo::getUserId);
|
||||
List<String> nickNames = StreamUtils.toList(userList, RemoteUserVo::getNickName);
|
||||
participantVo.setCandidate(userIdList);
|
||||
participantVo.setCandidateName(nickNames);
|
||||
participantVo.setClaim(!StringUtils.isBlank(task.getAssignee()));
|
||||
@@ -165,10 +158,10 @@ public class WorkflowUtils {
|
||||
|
||||
}
|
||||
}
|
||||
List<UserDTO> userList = USER_SERVICE.selectListByIds(userIdList);
|
||||
List<RemoteUserVo> userList = USER_SERVICE.selectListByIds(userIdList);
|
||||
if (CollUtil.isNotEmpty(userList)) {
|
||||
List<Long> userIds = StreamUtils.toList(userList, UserDTO::getUserId);
|
||||
List<String> nickNames = StreamUtils.toList(userList, UserDTO::getNickName);
|
||||
List<Long> userIds = StreamUtils.toList(userList, RemoteUserVo::getUserId);
|
||||
List<String> nickNames = StreamUtils.toList(userList, RemoteUserVo::getNickName);
|
||||
participantVo.setCandidate(userIds);
|
||||
participantVo.setCandidateName(nickNames);
|
||||
// 判断当前任务是否具有多个办理人
|
||||
@@ -235,67 +228,6 @@ public class WorkflowUtils {
|
||||
return historicProcessInstance.getBusinessStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置流程实例对象
|
||||
*
|
||||
* @param obj 业务对象
|
||||
* @param businessKey 业务id
|
||||
*/
|
||||
public static void setBusinessInstanceDTO(Object obj, String businessKey) {
|
||||
if (StringUtils.isBlank(businessKey) || obj == null) {
|
||||
return;
|
||||
}
|
||||
ActHiProcinst actHiProcinst = ACT_HI_PROCINST_SERVICE.selectByBusinessKey(businessKey);
|
||||
if (actHiProcinst == null) {
|
||||
BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO();
|
||||
businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus());
|
||||
ReflectUtils.invokeSetter(obj, BUSINESS_INSTANCE_DTO, businessInstanceDTO);
|
||||
return;
|
||||
}
|
||||
BusinessInstanceDTO businessInstanceDTO = BeanUtil.toBean(actHiProcinst, BusinessInstanceDTO.class);
|
||||
businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus()));
|
||||
businessInstanceDTO.setProcessDefinitionId(actHiProcinst.getProcDefId());
|
||||
ReflectUtils.invokeSetter(obj, BUSINESS_INSTANCE_DTO, businessInstanceDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置流程实例对象
|
||||
*
|
||||
* @param obj 业务对象
|
||||
* @param idList 业务id
|
||||
* @param fieldName 主键属性名称
|
||||
*/
|
||||
public static void setBusinessInstanceListDTO(Object obj, List<String> idList, String fieldName) {
|
||||
if (CollUtil.isEmpty(idList) || obj == null) {
|
||||
return;
|
||||
}
|
||||
List<ActHiProcinst> actHiProcinstList = ACT_HI_PROCINST_SERVICE.selectByBusinessKeyIn(idList);
|
||||
if (obj instanceof Collection<?> collection) {
|
||||
for (Object o : collection) {
|
||||
String fieldValue = ReflectUtils.invokeGetter(o, fieldName).toString();
|
||||
if (CollUtil.isEmpty(actHiProcinstList)) {
|
||||
BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO();
|
||||
businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus());
|
||||
businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus()));
|
||||
ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO);
|
||||
} else {
|
||||
ActHiProcinst actHiProcinst = actHiProcinstList.stream().filter(e -> e.getBusinessKey().equals(fieldValue)).findFirst().orElse(null);
|
||||
if (ObjectUtil.isNotEmpty(actHiProcinst)) {
|
||||
BusinessInstanceDTO businessInstanceDTO = BeanUtil.toBean(actHiProcinst, BusinessInstanceDTO.class);
|
||||
businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus()));
|
||||
businessInstanceDTO.setProcessDefinitionId(actHiProcinst.getProcDefId());
|
||||
ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO);
|
||||
} else {
|
||||
BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO();
|
||||
businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus());
|
||||
businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus()));
|
||||
ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送消息
|
||||
*
|
||||
@@ -323,7 +255,7 @@ public class WorkflowUtils {
|
||||
}
|
||||
}
|
||||
if (CollUtil.isNotEmpty(userIds)) {
|
||||
List<UserDTO> userList = USER_SERVICE.selectListByIds(new ArrayList<>(userIds));
|
||||
List<RemoteUserVo> userList = USER_SERVICE.selectListByIds(new ArrayList<>(userIds));
|
||||
for (String code : messageType) {
|
||||
MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code);
|
||||
if (ObjectUtil.isNotEmpty(messageTypeEnum)) {
|
||||
@@ -335,7 +267,7 @@ public class WorkflowUtils {
|
||||
WebSocketUtils.publishMessage(dto);
|
||||
break;
|
||||
case EMAIL_MESSAGE:
|
||||
MailUtils.sendText(StreamUtils.join(userList, UserDTO::getEmail), "单据审批提醒", message);
|
||||
MailUtils.sendText(StreamUtils.join(userList, RemoteUserVo::getEmail), "单据审批提醒", message);
|
||||
break;
|
||||
case SMS_MESSAGE:
|
||||
//todo 短信发送
|
||||
|
@@ -2,6 +2,6 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.workflow.testleave.mapper.TestLeaveMapper">
|
||||
<mapper namespace="org.dromara.workflow.mapper.TestLeaveMapper">
|
||||
|
||||
</mapper>
|
Reference in New Issue
Block a user