安徽建设厅网站首页,网站做图分辨率是多少合适,最好企业网站,无锡网站设计公司电话因为这个项目license问题无法开源#xff0c;更多技术支持与服务请加入我的知识星球。 这部分先讲讲支持自定义业务表单一个业务服务表单多个流程的支持处理
1、后端mapper部分
如下#xff0c;修改selectSysCustomFormByServiceName为list对象#xff0c;以便支持多个
更多技术支持与服务请加入我的知识星球。 这部分先讲讲支持自定义业务表单一个业务服务表单多个流程的支持处理
1、后端mapper部分
如下修改selectSysCustomFormByServiceName为list对象以便支持多个
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespaceorg.jeecg.modules.flowable.mapper.SysCustomFormMapperresultMap typeorg.jeecg.modules.flowable.entity.SysCustomForm idsysCustomFormResultresult propertyid columnid/result propertybusinessName columnbusiness_name/result propertybusinessService columnbusiness_service/result propertyflowName columnflow_name/result propertydeployId columndeploy_id/result propertyrouteName columnroute_name/result propertycomponent columncomponent/result propertycreateBy columncreate_by/result propertycreateTime columncreate_time/result propertyupdateBy columnupdate_by/result propertyupdateTime columnupdate_time/result propertysysOrgCode columnsys_org_code//resultMapselect idselectSysCustomFormById parameterTypeString resultTypeorg.jeecg.modules.flowable.entity.SysCustomFormselect id, business_name, business_service, deploy_id, route_name,component,create_time, update_time, create_by, update_by, sys_org_code from sys_custom_form where id #{formId}/selectselect idselectSysCustomFormByServiceName parameterTypeString resultMapsysCustomFormResultselect id, business_name, business_service, flow_name, deploy_id, route_name,component,create_time, update_time, create_by, update_by, sys_org_code from sys_custom_form where business_service #{serviceName}/selectupdate idupdateCustom parameterTypeObjectupdate sys_custom_form set deploy_id #{customFormVo.deployId}, flow_name#{customFormVo.flowName} where id #{customFormVo.id}/updateselect idselectBussinessKeyByDeployId parameterTypeString resultTypeStringselect id from sys_custom_form where deploy_id #{deployid}/select/mapper
2、对流程启动也要修改因为根据用户选择出来的id进行处理 public Result startProcessInstanceByDataId(String dataId, String selectFlowId, String serviceName, MapString, Object variables) {//提交审批的时候进行流程实例关联初始化if (StringUtils.isEmpty(selectFlowId)){return Result.error(未找到关联流程selectFlowIdselectFlowId);}/*if (serviceNamenull){return Result.error(未找到serviceNameserviceName);}*/SysCustomForm sysCustomForm sysCustomFormService.getById(selectFlowId);if(sysCustomForm null){return Result.error(未找到sysCustomFormserviceName);}//优先考虑自定义业务表是否关联流程再看通用的表单流程关联表ProcessDefinition processDefinition;String deployId sysCustomForm.getDeployId();if(StringUtils.isEmpty(deployId)) {SysDeployForm sysDeployForm sysDeployFormService.selectSysDeployFormByFormId(sysCustomForm.getId());if(sysDeployForm null){ return Result.error(自定义表单也没关联流程定义表,流程没定义关联自定义表单sysCustomForm.getId());}processDefinition repositoryService.createProcessDefinitionQuery().parentDeploymentId(sysDeployForm.getDeployId()).latestVersion().singleResult();}else {processDefinition repositoryService.createProcessDefinitionQuery().parentDeploymentId(deployId).latestVersion().singleResult();}LambdaQueryWrapperFlowMyBusiness flowMyBusinessLambdaQueryWrapper new LambdaQueryWrapper();flowMyBusinessLambdaQueryWrapper.eq(FlowMyBusiness::getDataId, dataId);FlowMyBusiness business flowMyBusinessService.getOne(flowMyBusinessLambdaQueryWrapper);if (businessnull){if(processDefinitionnull) {return Result.error(自定义表单也没关联流程定义表,流程没定义关联自定义表单sysCustomForm.getId());}boolean binit flowCommonService.initActBusiness(sysCustomForm.getBusinessName(), dataId, serviceName, processDefinition.getKey(), processDefinition.getId(), sysCustomForm.getRouteName());if(!binit) {return Result.error(自定义表单也没关联流程定义表,流程没定义关联自定义表单sysCustomForm.getId());}FlowMyBusiness businessnew flowMyBusinessService.getOne(flowMyBusinessLambdaQueryWrapper);//流程实例关联初始化结束if (StrUtil.isNotBlank(businessnew.getProcessDefinitionId())){return this.startProcessInstanceById(businessnew.getProcessDefinitionId(),variables);}return this.startProcessInstanceByKey(businessnew.getProcessDefinitionKey(),variables);}else {return Result.error(已经存在这个dataid实例不要重复申请dataId);}}
3、前端代码如下
templatespana-button :typebtnType clickapplySubmit() :loadingsubmitLoading{{text}}/a-buttona-modal :z-index100 :titlefirstInitiatorTitle cancelfirstInitiatorOpen false v-model:openfirstInitiatorOpen:width50% append-to-bodya-descriptions bordered layoutverticala-descriptions-item :span3a-badge statusprocessing text选择提醒 //a-descriptions-itema-descriptions-item label重新发起新流程按钮 labelStyle{ color: #fff, fontWeight: bold, fontSize18px}重新发起新流程会删除之前发起的任务,重新开始./a-descriptions-itema-descriptions-item label继续发起老流程按钮继续发起流程就在原来流程基础上继续流转./a-descriptions-item/a-descriptionsspan slotfooter classdialog-footerel-button typeprimary clickReStartByDataId(true)重新发起新流程/el-buttonel-button typeprimary clickReStartByDataId(false)继续发起老流程/el-buttonel-button clickfirstInitiatorOpen false取 消/el-button/span/a-modal!--挂载关联多个流程--a-modal cancelflowOpen false :titleflowTitle v-model:openflowOpen width70% append-to-bodyel-row :gutter64el-col :span20 :xs64 stylewidth: 100%el-table refsingleTable :dataprocessList border highlight-current-row stylewidth: 100%el-table-column typeselection width55 aligncenter /el-table-column label主键 aligncenter propid v-iftrue/el-table-column label业务表单名称 aligncenter propbusinessName /el-table-column label业务服务名称 aligncenter propbusinessService /el-table-column label流程名称 aligncenter propflowName /el-table-column label关联流程发布主键 aligncenter propdeployId /el-table-column label前端路由地址 aligncenter proprouteName /el-table-column label组件注入方法 aligncenter propcomponent /el-table-column label操作 aligncenter class-namesmall-padding fixed-widthtemplate #defaultscopeel-button sizesmall typeprimary clickselectProcess(scope.row)确定/el-button/template/el-table-column/el-table/el-col/el-row/a-modal/span
/templatescript langts setupimport { ref, reactive } from vue;import { useRouter, useRoute } from vue-router;import {definitionStartByDataId,isFirstInitiator,deleteActivityAndJoin,getProcesss} from //views/flowable/api/definition;import { useMessage } from //hooks/web/useMessage;const { createMessage, createConfirm } useMessage();defineOptions({ name: ActApplyBtn })const props defineProps({btnType: {type: String,default: link,required: false},dataId: {type: String,default: ,required: true},serviceName: {type: String,default: ,required: true},variables: {type: Object,default: {},},text: {type: String,default: 提交申请,required: false}})const emit defineEmits([success])// 获取路由器对象 href跳转用到const router useRouter();const route useRoute();const modalVisible ref(false)const submitLoading ref(false)const form refany({})const firstInitiatorOpen ref(false)const firstInitiatorTitle ref()// 关联流程数据const processList refany([])const flowOpen ref(false)const flowTitle ref()const selectFlowId ref() //选择或使用的流程IDconst error ref()const selectProcess (row) {selectFlowId.value row.id;flowOpen.value false;var params Object.assign({dataId: props.dataId}, props.variables);definitionStartByDataId(props.dataId, selectFlowId.value, props.serviceName, params).then(res {//console.log(startByDataId res,res);if (res.code 200 ) {createMessage.success(res.msg);emit(success);} else {createMessage.error(res.msg);}}).finally(() (submitLoading.value false));}const ReStartByDataId (isNewFlow: boolean) {if(isNewFlow) {submitLoading.value true;deleteActivityAndJoin(props.dataId,props.variables).then(res {if (res.code 200 res.result) { //若删除成功var params Object.assign({dataId: props.dataId}, props.variables);definitionStartByDataId(props.dataId, selectFlowId.value, props.serviceName, params).then(res {if (res.code 200) {firstInitiatorOpen.value false;createMessage.success(res.message);emit(success);} else {createMessage.error(res.message);}})}}).finally(() (submitLoading.value false));}else {//继续原有流程流转跳到流程处理界面上//console.log(props.variables,props.variables);router.push({path: /flowable/task/record/index,query: {procInsId: props.variables.processInstanceId,deployId: props.variables.deployId,taskId: props.variables.taskId,businessKey: props.dataId,nodeType: ,appType: ZDYYW,finished: true},})}}const applySubmit () {if (props.dataId props.dataId.length 1) {error.value 必须传入参数dataId;createMessage.error(error.value);return;}if (props.serviceName props.serviceName.length 1) {error.value 必须传入参数serviceName;createMessage.error(error.value);return;} else {error.value ;}//对于自定义业务,判断是否是驳回或退回的第一个发起人节点submitLoading.value true;isFirstInitiator(props.dataId, props.variables).then(res {if (res.code 200 res.result) { //若是弹出窗口选择重新发起新流程还是继续老流程firstInitiatorTitle.value 根据自己需要进行选择firstInitiatorOpen.value true;}else {submitLoading.value true;const processParams {serviceName: props.serviceName}/**查询关联流程信息 */getProcesss(processParams).then(res {processList.value res.result;submitLoading.value false;if (processList.value processList.value.length 1) {flowOpen.value true;}else if (processList.value processList.value.length 1) {selectFlowId.value res.result[0].id;var params Object.assign({dataId: props.dataId}, props.variables);definitionStartByDataId(props.dataId, selectFlowId.value, props.serviceName, params).then(res {console.log(definitionStartByDataId res,res);if (res.code 200 ) {createMessage.success(res.message);emit(success);} else {createMessage.error(res.message);}}).finally(() (submitLoading.value false));} else {createMessage.error(检查该业务是否已经关联流程);}}).finally(() (submitLoading.value false));}}).finally(() (submitLoading.value false));}
/script4、效果图如下