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(); return AjaxResult.success();
} }
@ApiOperation(value = "任务归还")
@PostMapping(value = "/delegate")
public AjaxResult resolveTask(@RequestBody FlowTaskVo flowTaskVo) {
flowTaskService.resolveTask(flowTaskVo);
return AjaxResult.success();
}
@ApiOperation(value = "转办任务") @ApiOperation(value = "转办任务")
@PostMapping(value = "/assign") @PostMapping(value = "/assign")
public AjaxResult assign(@RequestBody FlowTaskVo flowTaskVo) { public AjaxResult assign(@RequestBody FlowTaskVo flowTaskVo) {
@ -145,6 +152,20 @@ public class FlowTaskController {
return AjaxResult.success(); 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 = "获取下一节点") @ApiOperation(value = "获取下一节点")
@PostMapping(value = "/nextFlowNode") @PostMapping(value = "/nextFlowNode")
public AjaxResult getNextFlowNode(@RequestBody FlowTaskVo flowTaskVo) { public AjaxResult getNextFlowNode(@RequestBody FlowTaskVo flowTaskVo) {
@ -203,22 +224,24 @@ public class FlowTaskController {
/** /**
* *
* @param procInsId id *
* @param procInsId id
* @return * @return
*/ */
@GetMapping("/flowXmlAndNode") @GetMapping("/flowXmlAndNode")
public AjaxResult flowXmlAndNode(@RequestParam(value = "procInsId",required = false) String procInsId, public AjaxResult flowXmlAndNode(@RequestParam(value = "procInsId", required = false) String procInsId,
@RequestParam(value = "deployId",required = false) String deployId){ @RequestParam(value = "deployId", required = false) String deployId) {
return flowTaskService.flowXmlAndNode(procInsId,deployId); return flowTaskService.flowXmlAndNode(procInsId, deployId);
} }
/** /**
* *
* @param taskId *
* @param taskId
* @return * @return
*/ */
@GetMapping("/flowTaskForm") @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); return flowTaskService.flowTaskForm(taskId);
} }

View File

@ -33,6 +33,14 @@ public class FlowTaskVo {
private String targetKey; private String targetKey;
private String deploymentId; private String deploymentId;
@ApiModelProperty("流程环节定义ID")
private String defId;
@ApiModelProperty("子执行流ID")
private String currentChildExecutionId;
@ApiModelProperty("子执行流是否已执行")
private Boolean flag;
@ApiModelProperty("流程变量信息") @ApiModelProperty("流程变量信息")
private Map<String, Object> variables; private Map<String, Object> variables;

View File

@ -72,6 +72,13 @@ public interface IFlowTaskService {
*/ */
void delegateTask(FlowTaskVo flowTaskVo); void delegateTask(FlowTaskVo flowTaskVo);
/**
*
*
* @param flowTaskVo
*/
void resolveTask(FlowTaskVo flowTaskVo);
/** /**
* *
@ -80,6 +87,19 @@ public interface IFlowTaskService {
*/ */
void assignTask(FlowTaskVo flowTaskVo); void assignTask(FlowTaskVo flowTaskVo);
/**
*
* @param flowTaskVo
*/
void addMultiInstanceExecution(FlowTaskVo flowTaskVo);
/**
*
* @param flowTaskVo
*/
void deleteMultiInstanceExecution(FlowTaskVo flowTaskVo);
/** /**
* *
* @param queryVo * @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.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery; 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -416,6 +417,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
/** /**
* / * /
* ,,
* *
* @param flowTaskVo * @param flowTaskVo
*/ */
@ -438,6 +440,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
/** /**
* *
*
* *
* @param flowTaskVo * @param flowTaskVo
*/ */
@ -447,16 +450,58 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
taskService.delegateTask(flowTaskVo.getTaskId(), flowTaskVo.getAssignee()); taskService.delegateTask(flowTaskVo.getTaskId(), flowTaskVo.getAssignee());
} }
/**
*
*
*
* @param flowTaskVo
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void resolveTask(FlowTaskVo flowTaskVo) {
taskService.resolveTask(flowTaskVo.getTaskId());
}
/** /**
* *
*
* *
* @param flowTaskVo * @param flowTaskVo
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void assignTask(FlowTaskVo flowTaskVo) { 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 * @param flowTaskVo
* @return * @return
*/ */
@ -529,8 +575,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
} }
// 获取当前流程实例 // 获取当前流程实例
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(flowTaskVo.getInstanceId()) .processInstanceId(flowTaskVo.getInstanceId())
.singleResult(); .singleResult();
BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId()); BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
if (Objects.nonNull(bpmnModel)) { if (Objects.nonNull(bpmnModel)) {
Process process = bpmnModel.getMainProcess(); Process process = bpmnModel.getMainProcess();
@ -544,7 +590,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
// StringUtils.isBlank(flowTaskVo.getComment()) ? "取消申请" : flowTaskVo.getComment()); // StringUtils.isBlank(flowTaskVo.getComment()) ? "取消申请" : flowTaskVo.getComment());
// 获取当前流程最后一个节点 // 获取当前流程最后一个节点
String endId = endNodes.get(0).getId(); String endId = endNodes.get(0).getId();
List<Execution> executions = runtimeService.createExecutionQuery() List<Execution> executions = runtimeService.createExecutionQuery()
.parentId(processInstance.getProcessInstanceId()).list(); .parentId(processInstance.getProcessInstanceId()).list();
List<String> executionIds = new ArrayList<>(); List<String> executionIds = new ArrayList<>();
executions.forEach(execution -> executionIds.add(execution.getId())); executions.forEach(execution -> executionIds.add(execution.getId()));