feat: 新增多实例加签,减签后端实现

rf
tony 2022-12-26 16:53:17 +08:00
parent 6704ac5c51
commit 89ee31b140
4 changed files with 108 additions and 11 deletions

View File

@ -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);
}

View File

@ -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;

View File

@ -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

View File

@ -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_taskact_ru_identitylink
*
* @param flowTaskVo
*/
@Override
public void addMultiInstanceExecution(FlowTaskVo flowTaskVo) {
managementService.executeCommand(new AddMultiInstanceExecutionCmd(flowTaskVo.getDefId(), flowTaskVo.getInstanceId(), flowTaskVo.getVariables()));
}
/**
*
* act_ru_task1act_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()));