feat(办公管理): 新增 我的流程页面“重新发起”功能

This commit is contained in:
konbai
2023-04-09 23:04:09 +08:00
parent 9e5f4c0e6a
commit ffb8bd908f
5 changed files with 42 additions and 9 deletions

View File

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

View File

@@ -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);
/**
* 启动流程实例

View File

@@ -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>()
WfDeployForm deployForm = deployFormMapper.selectOne(new LambdaQueryWrapper<WfDeployForm>()
.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;
}
/**

View File

@@ -112,6 +112,13 @@
@click="handleStop(scope.row)"
v-hasPermi="['workflow:process:cancel']"
>取消</el-button>
<el-button
type="text"
size="mini"
icon="el-icon-refresh-right"
v-hasPermi="['workflow:process:start']"
@click="handleAgain(scope.row)"
>重新发起</el-button>
</template>
</el-table-column>
</el-table>
@@ -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 = {

View File

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