From ffb8bd908fbafcdd47d77c684191754d71f244f9 Mon Sep 17 00:00:00 2001 From: konbai <1527468660@qq.com> Date: Sun, 9 Apr 2023 23:04:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=8A=9E=E5=85=AC=E7=AE=A1=E7=90=86):=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=88=91=E7=9A=84=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E2=80=9C=E9=87=8D=E6=96=B0=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E2=80=9D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/WfProcessController.java | 7 +++---- .../workflow/service/IWfProcessService.java | 3 ++- .../service/impl/WfProcessServiceImpl.java | 19 ++++++++++++++++--- ruoyi-ui/src/views/workflow/work/own.vue | 17 +++++++++++++++++ ruoyi-ui/src/views/workflow/work/start.vue | 5 ++++- 5 files changed, 42 insertions(+), 9 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java index 4aa9173f..615fedf4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java @@ -9,7 +9,6 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.flowable.core.domain.ProcessQuery; import com.ruoyi.workflow.domain.bo.WfCopyBo; @@ -188,9 +187,9 @@ public class WfProcessController extends BaseController { @GetMapping("/getProcessForm") @SaCheckPermission("workflow:process:start") public R getForm(@RequestParam(value = "definitionId") String definitionId, - @RequestParam(value = "deployId") String deployId) { - String formContent = processService.selectFormContent(definitionId, deployId); - return R.ok(JsonUtils.parseObject(formContent, Map.class)); + @RequestParam(value = "deployId") String deployId, + @RequestParam(value = "procInsId", required = false) String procInsId) { + return R.ok(processService.selectFormContent(definitionId, deployId, procInsId)); } /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java index 24501afe..dfc268e0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java @@ -2,6 +2,7 @@ package com.ruoyi.workflow.service; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.flowable.core.FormConf; import com.ruoyi.flowable.core.domain.ProcessQuery; import com.ruoyi.workflow.domain.vo.WfDefinitionVo; import com.ruoyi.workflow.domain.vo.WfDetailVo; @@ -77,7 +78,7 @@ public interface IWfProcessService { * @param definitionId 流程定义ID * @param deployId 部署ID */ - String selectFormContent(String definitionId, String deployId); + FormConf selectFormContent(String definitionId, String deployId, String procInsId); /** * 启动流程实例 diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java index 6a7d9ec3..4f7128c6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java @@ -549,17 +549,30 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce } @Override - public String selectFormContent(String definitionId, String deployId) { + public FormConf selectFormContent(String definitionId, String deployId, String procInsId) { BpmnModel bpmnModel = repositoryService.getBpmnModel(definitionId); if (ObjectUtil.isNull(bpmnModel)) { throw new RuntimeException("获取流程设计失败!"); } StartEvent startEvent = ModelUtils.getStartEvent(bpmnModel); - WfDeployFormVo deployFormVo = deployFormMapper.selectVoOne(new LambdaQueryWrapper() + WfDeployForm deployForm = deployFormMapper.selectOne(new LambdaQueryWrapper() .eq(WfDeployForm::getDeployId, deployId) .eq(WfDeployForm::getFormKey, startEvent.getFormKey()) .eq(WfDeployForm::getNodeKey, startEvent.getId())); - return deployFormVo.getContent(); + FormConf formConf = JsonUtils.parseObject(deployForm.getContent(), FormConf.class); + if (ObjectUtil.isNull(formConf)) { + throw new RuntimeException("获取流程表单失败!"); + } + if (ObjectUtil.isNotEmpty(procInsId)) { + // 获取流程实例 + HistoricProcessInstance historicProcIns = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(procInsId) + .includeProcessVariables() + .singleResult(); + // 填充表单信息 + ProcessFormUtils.fillFormData(formConf, historicProcIns.getProcessVariables()); + } + return formConf; } /** diff --git a/ruoyi-ui/src/views/workflow/work/own.vue b/ruoyi-ui/src/views/workflow/work/own.vue index 8136eb34..eca2f510 100644 --- a/ruoyi-ui/src/views/workflow/work/own.vue +++ b/ruoyi-ui/src/views/workflow/work/own.vue @@ -112,6 +112,13 @@ @click="handleStop(scope.row)" v-hasPermi="['workflow:process:cancel']" >取消 + 重新发起 @@ -237,6 +244,16 @@ export default { this.single = selection.length!==1 this.multiple = !selection.length }, + handleAgain(row) { + this.$router.push({ + path: '/workflow/process/start/' + row.deployId, + query: { + definitionId: row.procDefId, + procInsId: row.procInsId + } + }) + console.log(row); + }, /** 取消流程申请 */ handleStop(row){ const params = { diff --git a/ruoyi-ui/src/views/workflow/work/start.vue b/ruoyi-ui/src/views/workflow/work/start.vue index c6f327ea..205ce57f 100644 --- a/ruoyi-ui/src/views/workflow/work/start.vue +++ b/ruoyi-ui/src/views/workflow/work/start.vue @@ -26,6 +26,7 @@ export default { return { definitionId: null, deployId: null, + procInsId: null, formOpen: false, formData: {}, } @@ -37,9 +38,11 @@ export default { initData() { this.deployId = this.$route.params && this.$route.params.deployId; this.definitionId = this.$route.query && this.$route.query.definitionId; + this.procInsId = this.$route.query && this.$route.query.procInsId; getProcessForm({ definitionId: this.definitionId, - deployId: this.deployId + deployId: this.deployId, + procInsId: this.procInsId }).then(res => { if (res.data) { this.formData = res.data;