From da0cb62479d4d64d26d19622cce3e7b518290065 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期六, 08 二月 2025 11:10:34 +0800 Subject: [PATCH] 任务跳过接口实现:查出任务绑定表单放到变量中,最后直接完成即跳过 --- business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 36 +++++++++++++++++++++++++++++++++++- 1 files changed, 35 insertions(+), 1 deletions(-) diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java index d7beadb..b420892 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -1,6 +1,7 @@ package com.ycl.service.impl; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; @@ -15,7 +16,9 @@ import com.ycl.constant.TaskTypeConstant; import com.ycl.domain.entity.ProjectInfo; import com.ycl.domain.entity.ProjectProcess; +import com.ycl.domain.entity.SysForm; import com.ycl.domain.form.TaskDelegationForm; +import com.ycl.domain.form.TaskJumpForm; import com.ycl.domain.json.DelegateData; import com.ycl.domain.vo.CustomerTaskVO; import com.ycl.domain.vo.IndexCustomerTaskVO; @@ -23,6 +26,8 @@ import com.ycl.event.event.TaskLogEvent; import com.ycl.mapper.ProjectInfoMapper; import com.ycl.mapper.ProjectProcessMapper; +import com.ycl.service.IFlowTaskService; +import com.ycl.service.ISysFormService; import com.ycl.service.ProjectProcessService; import com.ycl.common.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -79,6 +84,8 @@ private final ISysRoleService sysRoleService; private final ISysDeptService sysDeptService; private final TaskCommonService taskCommonService; + private final IFlowTaskService flowTaskService; + private final ISysFormService formService; private final ApplicationEventPublisher publisher; /** @@ -305,6 +312,8 @@ if (Objects.nonNull(project)) { taskVO.setProjectId(project.getId()); taskVO.setProjectName(project.getProjectName()); + } else { + continue; } // 娴佺▼鍙戣捣浜轰俊鎭� @@ -363,6 +372,9 @@ taskVO.setHandlerUnitId(handlerUnitIds); taskVO.setHandlerUnitName(handlerUnitNames); vos.add(taskVO); + } + if (vos.size() < pageSize) { + result.total(vos.size()); } result.put("taskList", vos); } @@ -471,7 +483,7 @@ for (FlowElement flowElement : flowElements) { if (flowElement instanceof UserTask && flowElement.getId().equals(task.getTaskDefinitionKey())) { UserTask userTask = (UserTask) flowElement; - needAuditing = taskCommonService.checkTaskNeedAuditing(userTask.getExtensionElements().get("properties")); + needAuditing = taskCommonService.checkHasExeProperty(userTask.getExtensionElements().get("properties"), ProcessConstants.EXTENSION_PROPERTY_NEED_AUDITING_TEXT); break; } @@ -563,6 +575,28 @@ return Result.ok("杞姙鎴愬姛"); } + @Override + @Transactional(rollbackFor = Exception.class) + public Result taskJump(TaskJumpForm form) { + Task task = taskService.createTaskQuery().taskId(form.getTaskId()).processInstanceId(form.getProcessInsId()).singleResult(); + if (Objects.nonNull(task)) { + // 娣诲姞璺宠繃鏃ュ織 + publisher.publishEvent(new TaskLogEvent(this, form.getProjectId(), form.getProcessInsId(), form.getTaskId(), ProcessLogEventTypeEnum.JUMP, null)); + // 鏌ュ嚭璇ヤ换鍔$粦瀹氱殑琛ㄥ崟 + + Map<String, Object> data = new HashMap<>(1); + if (StringUtils.isNotBlank(task.getFormKey())) { + SysForm sysForm = formService.selectSysFormById(Long.parseLong(task.getFormKey())); + if (Objects.nonNull(sysForm)) { + data.put(ProcessConstants.TASK_FORM_KEY, JSONObject.parseObject(sysForm.getFormContent())); + } + } + // 瀹屾垚浠诲姟 + flowTaskService.completeSubmitForm(form.getTaskId(), data); + } + return Result.ok("鎿嶄綔鎴愬姛"); + } + /** * 鏌ヨ寰呭姙浠诲姟 * -- Gitblit v1.8.0