mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-09-29 22:56:40 +08:00
add 添加任务催办,任务改派
This commit is contained in:
parent
06bf090b52
commit
5912983704
@ -11,6 +11,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
import org.dromara.common.web.core.BaseController;
|
import org.dromara.common.web.core.BaseController;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
||||||
|
import org.dromara.workflow.domain.bo.TaskUrgingBo;
|
||||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||||
import org.dromara.workflow.service.IActProcessInstanceService;
|
import org.dromara.workflow.service.IActProcessInstanceService;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -125,4 +126,16 @@ public class ActProcessInstanceController extends BaseController {
|
|||||||
public TableDataInfo<ProcessInstanceVo> getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo) {
|
public TableDataInfo<ProcessInstanceVo> getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo) {
|
||||||
return iActProcessInstanceService.getCurrentSubmitByPage(processInstanceBo);
|
return iActProcessInstanceService.getCurrentSubmitByPage(processInstanceBo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务催办(给当前任务办理人发送站内信,邮件,短信等)
|
||||||
|
*
|
||||||
|
* @param taskUrgingBo 任务催办
|
||||||
|
*/
|
||||||
|
@Log(title = "流程实例管理", businessType = BusinessType.INSERT)
|
||||||
|
@PostMapping("/taskUrging")
|
||||||
|
public R<Void> taskUrging(@RequestBody TaskUrgingBo taskUrgingBo) {
|
||||||
|
return toAjax(iActProcessInstanceService.taskUrging(taskUrgingBo));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -212,4 +212,15 @@ public class ActTaskController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改任务办理人
|
||||||
|
*
|
||||||
|
* @param taskIds 任务id
|
||||||
|
* @param userId 办理人id
|
||||||
|
*/
|
||||||
|
@Log(title = "任务管理", businessType = BusinessType.UPDATE)
|
||||||
|
@PutMapping("/updateAssignee/{taskIds}/{userId}")
|
||||||
|
public R<Void> updateAssignee(@PathVariable String[] taskIds, @PathVariable String userId) {
|
||||||
|
return toAjax(iActTaskService.updateAssignee(taskIds, userId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
}
|
@ -3,6 +3,7 @@ package org.dromara.workflow.service;
|
|||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
||||||
|
import org.dromara.workflow.domain.bo.TaskUrgingBo;
|
||||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -93,4 +94,12 @@ public interface IActProcessInstanceService {
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
TableDataInfo<ProcessInstanceVo> getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo);
|
TableDataInfo<ProcessInstanceVo> getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务催办(给当前任务办理人发送站内信,邮件,短信等)
|
||||||
|
*
|
||||||
|
* @param taskUrgingBo 任务催办
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
boolean taskUrging(TaskUrgingBo taskUrgingBo);
|
||||||
}
|
}
|
||||||
|
@ -109,4 +109,13 @@ public interface IActTaskService {
|
|||||||
* @return 流程实例id
|
* @return 流程实例id
|
||||||
*/
|
*/
|
||||||
String backProcess(BackProcessBo backProcessBo);
|
String backProcess(BackProcessBo backProcessBo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改任务办理人
|
||||||
|
*
|
||||||
|
* @param taskIds 任务id
|
||||||
|
* @param userId 办理人id
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
boolean updateAssignee(String[] taskIds, String userId);
|
||||||
}
|
}
|
||||||
|
@ -20,15 +20,14 @@ import org.dromara.workflow.common.enums.TaskStatusEnum;
|
|||||||
import org.dromara.workflow.domain.ActHiProcinst;
|
import org.dromara.workflow.domain.ActHiProcinst;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
||||||
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
import org.dromara.workflow.domain.bo.TaskUrgingBo;
|
||||||
import org.dromara.workflow.domain.vo.GraphicInfoVo;
|
import org.dromara.workflow.domain.vo.*;
|
||||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
|
||||||
import org.dromara.workflow.domain.vo.TaskVo;
|
|
||||||
import org.dromara.workflow.flowable.CustomDefaultProcessDiagramGenerator;
|
import org.dromara.workflow.flowable.CustomDefaultProcessDiagramGenerator;
|
||||||
import org.dromara.workflow.flowable.cmd.DeleteExecutionCmd;
|
import org.dromara.workflow.flowable.cmd.DeleteExecutionCmd;
|
||||||
import org.dromara.workflow.flowable.cmd.ExecutionChildByExecutionIdCmd;
|
import org.dromara.workflow.flowable.cmd.ExecutionChildByExecutionIdCmd;
|
||||||
import org.dromara.workflow.service.IActHiProcinstService;
|
import org.dromara.workflow.service.IActHiProcinstService;
|
||||||
import org.dromara.workflow.service.IActProcessInstanceService;
|
import org.dromara.workflow.service.IActProcessInstanceService;
|
||||||
|
import org.dromara.workflow.utils.WorkflowUtils;
|
||||||
import org.flowable.bpmn.model.*;
|
import org.flowable.bpmn.model.*;
|
||||||
import org.flowable.engine.*;
|
import org.flowable.engine.*;
|
||||||
import org.flowable.engine.history.HistoricActivityInstance;
|
import org.flowable.engine.history.HistoricActivityInstance;
|
||||||
@ -533,4 +532,29 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
|||||||
long count = query.count();
|
long count = query.count();
|
||||||
return new TableDataInfo<>(list, count);
|
return new TableDataInfo<>(list, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务催办(给当前任务办理人发送站内信,邮件,短信等)
|
||||||
|
*
|
||||||
|
* @param taskUrgingBo 任务催办
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public boolean taskUrging(TaskUrgingBo taskUrgingBo) {
|
||||||
|
try {
|
||||||
|
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(taskUrgingBo.getProcessInstanceId()).singleResult();
|
||||||
|
if (processInstance == null) {
|
||||||
|
throw new ServiceException("任务已结束!");
|
||||||
|
}
|
||||||
|
String message = taskUrgingBo.getMessage();
|
||||||
|
if (StringUtils.isBlank(message)) {
|
||||||
|
message = "您的【" + processInstance.getName() + "】单据还未审批,请您及时处理。";
|
||||||
|
}
|
||||||
|
List<Task> list = taskService.createTaskQuery().processInstanceId(taskUrgingBo.getProcessInstanceId()).list();
|
||||||
|
WorkflowUtils.sendMessage(list, processInstance.getName(), taskUrgingBo.getMessageType(), message);
|
||||||
|
} catch (ServiceException e) {
|
||||||
|
throw new ServiceException(e.getMessage());
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -609,4 +609,24 @@ public class ActTaskServiceImpl implements IActTaskService {
|
|||||||
}
|
}
|
||||||
return task.getProcessInstanceId();
|
return task.getProcessInstanceId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改任务办理人
|
||||||
|
*
|
||||||
|
* @param taskIds 任务id
|
||||||
|
* @param userId 办理人id
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public boolean updateAssignee(String[] taskIds, String userId) {
|
||||||
|
try {
|
||||||
|
List<Task> list = taskService.createTaskQuery().taskIds(Arrays.asList(taskIds)).taskTenantId(TenantHelper.getTenantId()).list();
|
||||||
|
for (Task task : list) {
|
||||||
|
taskService.setAssignee(task.getId(), userId);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new ServiceException("修改失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,7 @@ import org.flowable.identitylink.api.history.HistoricIdentityLink;
|
|||||||
import org.flowable.task.api.Task;
|
import org.flowable.task.api.Task;
|
||||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||||
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
|
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
|
||||||
|
|
||||||
import javax.xml.stream.XMLInputFactory;
|
import javax.xml.stream.XMLInputFactory;
|
||||||
import javax.xml.stream.XMLStreamException;
|
import javax.xml.stream.XMLStreamException;
|
||||||
import javax.xml.stream.XMLStreamReader;
|
import javax.xml.stream.XMLStreamReader;
|
||||||
@ -349,7 +350,7 @@ public class WorkflowUtils {
|
|||||||
public static void sendMessage(List<Task> list, String name, List<String> messageType, String message) {
|
public static void sendMessage(List<Task> list, String name, List<String> messageType, String message) {
|
||||||
Set<Long> userIds = new HashSet<>();
|
Set<Long> userIds = new HashSet<>();
|
||||||
if (StringUtils.isBlank(message)) {
|
if (StringUtils.isBlank(message)) {
|
||||||
message = "有新的【" + name + "】单据已经提交至您的待办,请及时处理。";
|
message = "有新的【" + name + "】单据已经提交至您的待办,请您及时处理。";
|
||||||
}
|
}
|
||||||
for (Task t : list) {
|
for (Task t : list) {
|
||||||
ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId());
|
ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId());
|
||||||
|
Loading…
Reference in New Issue
Block a user