update - 新增转交、更新流程变量功能
This commit is contained in:
parent
0cab9d6e0a
commit
66d73c3579
@ -43,7 +43,8 @@ public enum BpmErrorCode implements IProjectRespCode {
|
||||
PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF("05003", "流程取消失败,该流程不是你发起的"),
|
||||
PROCESS_INSTANCE_NOT_EXISTS("05004", "流程实例不存在"),
|
||||
PROCESS_INSTANCE_ID_NOT_EXISTS("05005", "流程实例【{}】不存在"),
|
||||
PROCESS_INSTANCE_CREATE_ERROR("05002", ""),
|
||||
PROCESS_INSTANCE_CREATE_ERROR("05006", ""),
|
||||
PROCESS_INSTANCE_VARIABLES_UPDATE_NOT_SUPPORTED("05006", "该流程实例不支持更新变量"),
|
||||
// ========== bpmn task 06-001 ==========
|
||||
TASK_COMPLETE_FAIL_NOT_EXISTS("06001", "未找到指定审批任务"),
|
||||
TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF("06002", "该任务的审批人不是你"),
|
||||
|
||||
@ -1,6 +1,12 @@
|
||||
package cn.axzo.workflow.core.service;
|
||||
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.*;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceCancelDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceCreateDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceCreateWithFormDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceMyPageReqVO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceQueryDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessVariablesUpdateDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.HistoricProcessInstanceSearchDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.process.BpmnProcessInstancePageItemVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.process.BpmnProcessInstanceVO;
|
||||
@ -90,4 +96,6 @@ public interface BpmnProcessInstanceService {
|
||||
ObjectNode getProcessInstanceGraphical(String processInstanceId, @Nullable String tenantId);
|
||||
|
||||
BpmPageResult<HistoricProcessInstanceVO> historicProcessInstancePage(HistoricProcessInstanceSearchDTO dto);
|
||||
|
||||
Boolean updateProcessVariables(BpmnProcessVariablesUpdateDTO dto);
|
||||
}
|
||||
|
||||
@ -4,8 +4,13 @@ import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskAssigneeDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskAuditDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskCommentDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskPageSearchDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskTransferDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.*;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnHistoricTaskInstanceGroupVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnHistoricTaskInstanceVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnTaskDonePageItemVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnTaskInstanceVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnTaskTodoPageItemVO;
|
||||
import org.flowable.form.api.FormInfo;
|
||||
|
||||
import java.util.List;
|
||||
@ -73,5 +78,5 @@ public interface BpmnTaskService {
|
||||
|
||||
void commentTask(BpmnTaskCommentDTO dto);
|
||||
|
||||
|
||||
Boolean transferTask(BpmnTaskTransferDTO dto);
|
||||
}
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
package cn.axzo.workflow.core.service.dto.request.bpmn.process;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 更新流程实例变量
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2024/5/23 16:04
|
||||
*/
|
||||
@ApiModel("更新流程实例变量")
|
||||
@Data
|
||||
public class BpmnProcessVariablesUpdateDTO {
|
||||
|
||||
private String processInstanceId;
|
||||
|
||||
private Map<String, Object> variables;
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
package cn.axzo.workflow.core.service.dto.request.bpmn.task;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 转交审批任务的入参模型
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2024/5/23 16:03
|
||||
*/
|
||||
@ApiModel("转交审批任务的入参模型")
|
||||
@Data
|
||||
public class BpmnTaskTransferDTO {
|
||||
|
||||
/**
|
||||
* 任务id列表
|
||||
*/
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
* 原任务处理人id
|
||||
*/
|
||||
private String originUserId;
|
||||
|
||||
/**
|
||||
* 目标任务处理人id
|
||||
*/
|
||||
private String targetUserId;
|
||||
|
||||
}
|
||||
@ -13,6 +13,7 @@ import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanc
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceCreateWithFormDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceMyPageReqVO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceQueryDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessVariablesUpdateDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.HistoricProcessInstanceSearchDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.process.BpmnProcessDefinitionVO;
|
||||
@ -88,6 +89,7 @@ import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_DEFINITION
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_VARIABLES_UPDATE_NOT_SUPPORTED;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_OPERATION_PARAM_VALID_ERROR;
|
||||
|
||||
@Service
|
||||
@ -930,4 +932,23 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
return stringBuilder.replace(start + 7, 10, "count(1)").toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateProcessVariables(BpmnProcessVariablesUpdateDTO dto) {
|
||||
if (CollectionUtils.isEmpty(dto.getVariables())) {
|
||||
return false;
|
||||
}
|
||||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(dto.getProcessInstanceId()).includeProcessVariables().singleResult();
|
||||
if (Objects.isNull(processInstance)) {
|
||||
throw new WorkflowEngineException(PROCESS_INSTANCE_VARIABLES_UPDATE_NOT_SUPPORTED);
|
||||
}
|
||||
Map<String, Object> processVariables = processInstance.getProcessVariables();
|
||||
Map<String, Object> newVariables = new HashMap<>();
|
||||
dto.getVariables().forEach((key, value) -> {
|
||||
if (processVariables.containsKey(key)) {
|
||||
newVariables.put(key, value);
|
||||
}
|
||||
});
|
||||
runtimeService.setVariables(dto.getProcessInstanceId(), newVariables);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,6 +12,7 @@ import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskAssigneeDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskAuditDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskCommentDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskPageSearchDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskTransferDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnHistoricTaskInstanceGroupVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnHistoricTaskInstanceVO;
|
||||
@ -547,4 +548,13 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
|
||||
return multiInstanceRootExecution;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean transferTask(BpmnTaskTransferDTO dto) {
|
||||
if (!StringUtils.hasText(dto.getTaskId())) {
|
||||
return false;
|
||||
}
|
||||
Task task = checkTask(null, dto.getOriginUserId(), dto.getTaskId());
|
||||
taskService.setAssignee(task.getId(), dto.getTargetUserId());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,13 @@ package cn.axzo.workflow.server.controller.web.bpmn;
|
||||
|
||||
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.core.service.BpmnProcessInstanceService;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.*;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceCancelDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceCreateDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceCreateWithFormDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceMyPageReqVO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessInstanceQueryDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.BpmnProcessVariablesUpdateDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.process.HistoricProcessInstanceSearchDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.process.BpmnProcessInstancePageItemVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.process.BpmnProcessInstanceVO;
|
||||
@ -14,7 +20,14 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
@ -53,6 +66,17 @@ public class BpmnProcessInstanceController {
|
||||
return success(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新流程实例变量
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/update")
|
||||
public CommonResponse<Boolean> updateProcessVariables(@Validated @RequestBody BpmnProcessVariablesUpdateDTO dto) {
|
||||
log.info("更新流程实例变量updateProcessVariables===>>>参数:{}", JSON.toJSONString(dto));
|
||||
return success(bpmnProcessInstanceService.updateProcessVariables(dto));
|
||||
}
|
||||
|
||||
@PostMapping("/form/create")
|
||||
public CommonResponse<String> createProcessInstanceWith(@Validated @RequestBody BpmnProcessInstanceCreateWithFormDTO dto) {
|
||||
log.info("发起审核createProcessInstanceWith===>>>参数:{}", JSON.toJSONString(dto));
|
||||
|
||||
@ -4,14 +4,25 @@ import cn.axzo.workflow.core.service.BpmnTaskService;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskAssigneeDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskAuditDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskPageSearchDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskTransferDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.*;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnHistoricTaskInstanceGroupVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnHistoricTaskInstanceVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnTaskDonePageItemVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnTaskInstanceVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnTaskTodoPageItemVO;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.form.api.FormInfo;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
@ -75,7 +86,12 @@ public class BpmnTaskController {
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "转办")
|
||||
@PostMapping("/transfer")
|
||||
public CommonResponse<Boolean> transferTask(@Validated @RequestBody BpmnTaskTransferDTO dto) {
|
||||
bpmnTaskService.transferTask(dto);
|
||||
return success(true);
|
||||
}
|
||||
/**
|
||||
* 获取指定流程实例的审批过程信息
|
||||
* <p>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user