feat: 新增多实例加签,减签后端实现
parent
6704ac5c51
commit
89ee31b140
|
|
@ -138,6 +138,13 @@ public class FlowTaskController {
|
|||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "任务归还")
|
||||
@PostMapping(value = "/delegate")
|
||||
public AjaxResult resolveTask(@RequestBody FlowTaskVo flowTaskVo) {
|
||||
flowTaskService.resolveTask(flowTaskVo);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "转办任务")
|
||||
@PostMapping(value = "/assign")
|
||||
public AjaxResult assign(@RequestBody FlowTaskVo flowTaskVo) {
|
||||
|
|
@ -145,6 +152,20 @@ public class FlowTaskController {
|
|||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping(value = "/addMultiInstanceExecution")
|
||||
@ApiOperation(value = "多实例加签")
|
||||
public AjaxResult addMultiInstanceExecution(@RequestBody FlowTaskVo flowTaskVo) {
|
||||
flowTaskService.addMultiInstanceExecution(flowTaskVo);
|
||||
return AjaxResult.success("加签成功");
|
||||
}
|
||||
|
||||
@PostMapping(value = "/deleteMultiInstanceExecution")
|
||||
@ApiOperation(value = "多实例减签")
|
||||
public AjaxResult deleteMultiInstanceExecution(@RequestBody FlowTaskVo flowTaskVo) {
|
||||
flowTaskService.deleteMultiInstanceExecution(flowTaskVo);
|
||||
return AjaxResult.success("减签成功");
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取下一节点")
|
||||
@PostMapping(value = "/nextFlowNode")
|
||||
public AjaxResult getNextFlowNode(@RequestBody FlowTaskVo flowTaskVo) {
|
||||
|
|
@ -203,22 +224,24 @@ public class FlowTaskController {
|
|||
|
||||
/**
|
||||
* 流程节点信息
|
||||
* @param procInsId 流程实例id
|
||||
*
|
||||
* @param procInsId 流程实例id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/flowXmlAndNode")
|
||||
public AjaxResult flowXmlAndNode(@RequestParam(value = "procInsId",required = false) String procInsId,
|
||||
@RequestParam(value = "deployId",required = false) String deployId){
|
||||
return flowTaskService.flowXmlAndNode(procInsId,deployId);
|
||||
public AjaxResult flowXmlAndNode(@RequestParam(value = "procInsId", required = false) String procInsId,
|
||||
@RequestParam(value = "deployId", required = false) String deployId) {
|
||||
return flowTaskService.flowXmlAndNode(procInsId, deployId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 流程节点表单
|
||||
* @param taskId 流程任务编号
|
||||
*
|
||||
* @param taskId 流程任务编号
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/flowTaskForm")
|
||||
public AjaxResult flowTaskForm(@RequestParam(value = "taskId",required = false) String taskId) throws Exception {
|
||||
public AjaxResult flowTaskForm(@RequestParam(value = "taskId", required = false) String taskId) throws Exception {
|
||||
return flowTaskService.flowTaskForm(taskId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,14 @@ public class FlowTaskVo {
|
|||
private String targetKey;
|
||||
|
||||
private String deploymentId;
|
||||
@ApiModelProperty("流程环节定义ID")
|
||||
private String defId;
|
||||
|
||||
@ApiModelProperty("子执行流ID")
|
||||
private String currentChildExecutionId;
|
||||
|
||||
@ApiModelProperty("子执行流是否已执行")
|
||||
private Boolean flag;
|
||||
|
||||
@ApiModelProperty("流程变量信息")
|
||||
private Map<String, Object> variables;
|
||||
|
|
|
|||
|
|
@ -72,6 +72,13 @@ public interface IFlowTaskService {
|
|||
*/
|
||||
void delegateTask(FlowTaskVo flowTaskVo);
|
||||
|
||||
/**
|
||||
* 任务归还
|
||||
*
|
||||
* @param flowTaskVo 请求实体参数
|
||||
*/
|
||||
void resolveTask(FlowTaskVo flowTaskVo);
|
||||
|
||||
|
||||
/**
|
||||
* 转办任务
|
||||
|
|
@ -80,6 +87,19 @@ public interface IFlowTaskService {
|
|||
*/
|
||||
void assignTask(FlowTaskVo flowTaskVo);
|
||||
|
||||
|
||||
/**
|
||||
* 多实例加签
|
||||
* @param flowTaskVo
|
||||
*/
|
||||
void addMultiInstanceExecution(FlowTaskVo flowTaskVo);
|
||||
|
||||
/**
|
||||
* 多实例减签
|
||||
* @param flowTaskVo
|
||||
*/
|
||||
void deleteMultiInstanceExecution(FlowTaskVo flowTaskVo);
|
||||
|
||||
/**
|
||||
* 我发起的流程
|
||||
* @param queryVo 请求参数
|
||||
|
|
|
|||
|
|
@ -55,7 +55,8 @@ import org.flowable.task.api.Task;
|
|||
import org.flowable.task.api.TaskQuery;
|
||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
|
||||
import org.flowable.task.service.impl.persistence.entity.TaskEntityImpl;
|
||||
import org.flowable.engine.impl.cmd.AddMultiInstanceExecutionCmd;
|
||||
import org.flowable.engine.impl.cmd.DeleteMultiInstanceExecutionCmd;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
@ -416,6 +417,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|||
|
||||
/**
|
||||
* 认领/签收任务
|
||||
* 认领以后,这个用户就会成为任务的执行人,任务会从其他成员的任务列表中消失
|
||||
*
|
||||
* @param flowTaskVo 请求实体参数
|
||||
*/
|
||||
|
|
@ -438,6 +440,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|||
|
||||
/**
|
||||
* 委派任务
|
||||
* 任务委派只是委派人将当前的任务交给被委派人进行审批,处理任务后又重新回到委派人身上。
|
||||
*
|
||||
* @param flowTaskVo 请求实体参数
|
||||
*/
|
||||
|
|
@ -447,16 +450,58 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|||
taskService.delegateTask(flowTaskVo.getTaskId(), flowTaskVo.getAssignee());
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务归还
|
||||
* 被委派人完成任务之后,将任务归还委派人
|
||||
*
|
||||
* @param flowTaskVo 请求实体参数
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void resolveTask(FlowTaskVo flowTaskVo) {
|
||||
taskService.resolveTask(flowTaskVo.getTaskId());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 转办任务
|
||||
* 直接将办理人换成别人,这时任务的拥有者不再是转办人
|
||||
*
|
||||
* @param flowTaskVo 请求实体参数
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void assignTask(FlowTaskVo flowTaskVo) {
|
||||
taskService.setAssignee(flowTaskVo.getTaskId(), flowTaskVo.getComment());
|
||||
// 直接转派就可以覆盖掉之前的
|
||||
taskService.setAssignee(flowTaskVo.getTaskId(), flowTaskVo.getAssignee());
|
||||
// // 删除指派人重新指派
|
||||
// taskService.deleteCandidateUser(flowTaskVo.getTaskId(),flowTaskVo.getAssignee());
|
||||
// taskService.addCandidateUser(flowTaskVo.getTaskId(),flowTaskVo.getAssignee());
|
||||
// // 如果要查询转给他人处理的任务,可以同时将OWNER进行设置:
|
||||
// taskService.setOwner(flowTaskVo.getTaskId(), flowTaskVo.getAssignee());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 多实例加签
|
||||
* act_ru_task、act_ru_identitylink各生成一条记录
|
||||
*
|
||||
* @param flowTaskVo
|
||||
*/
|
||||
@Override
|
||||
public void addMultiInstanceExecution(FlowTaskVo flowTaskVo) {
|
||||
managementService.executeCommand(new AddMultiInstanceExecutionCmd(flowTaskVo.getDefId(), flowTaskVo.getInstanceId(), flowTaskVo.getVariables()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 多实例减签
|
||||
* act_ru_task减1、act_ru_identitylink不变
|
||||
*
|
||||
* @param flowTaskVo
|
||||
*/
|
||||
@Override
|
||||
public void deleteMultiInstanceExecution(FlowTaskVo flowTaskVo) {
|
||||
managementService.executeCommand(new DeleteMultiInstanceExecutionCmd(flowTaskVo.getCurrentChildExecutionId(), flowTaskVo.getFlag()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -518,6 +563,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|||
/**
|
||||
* 取消申请
|
||||
* 目前实现方式: 直接将当前流程变更为已完成
|
||||
*
|
||||
* @param flowTaskVo
|
||||
* @return
|
||||
*/
|
||||
|
|
@ -529,8 +575,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|||
}
|
||||
// 获取当前流程实例
|
||||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
|
||||
.processInstanceId(flowTaskVo.getInstanceId())
|
||||
.singleResult();
|
||||
.processInstanceId(flowTaskVo.getInstanceId())
|
||||
.singleResult();
|
||||
BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
|
||||
if (Objects.nonNull(bpmnModel)) {
|
||||
Process process = bpmnModel.getMainProcess();
|
||||
|
|
@ -544,7 +590,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|||
// StringUtils.isBlank(flowTaskVo.getComment()) ? "取消申请" : flowTaskVo.getComment());
|
||||
// 获取当前流程最后一个节点
|
||||
String endId = endNodes.get(0).getId();
|
||||
List<Execution> executions = runtimeService.createExecutionQuery()
|
||||
List<Execution> executions = runtimeService.createExecutionQuery()
|
||||
.parentId(processInstance.getProcessInstanceId()).list();
|
||||
List<String> executionIds = new ArrayList<>();
|
||||
executions.forEach(execution -> executionIds.add(execution.getId()));
|
||||
|
|
|
|||
Loading…
Reference in New Issue