diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java index df8774da0..07c0143c1 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java @@ -100,7 +100,6 @@ import org.flowable.engine.history.HistoricProcessInstanceQuery; import org.flowable.engine.history.NativeHistoricProcessInstanceQuery; import org.flowable.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior; import org.flowable.engine.impl.persistence.entity.ActivityInstanceEntity; -import org.flowable.engine.repository.Model; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ActivityInstance; import org.flowable.engine.runtime.NativeActivityInstanceQuery; @@ -162,6 +161,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.INITIATOR_SPECIFY; import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR; import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_PROCESS_AGENT; import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_PROCESS_WORKSPACE_TYPE; +import static cn.axzo.workflow.common.constant.BpmnConstants.NO_TENANT_ID; import static cn.axzo.workflow.common.constant.BpmnConstants.OLD_INTERNAL_INITIATOR; import static cn.axzo.workflow.common.constant.BpmnConstants.PENDING_TEMPLATE_VARIABLE; import static cn.axzo.workflow.common.constant.BpmnConstants.PROCESS_OWNERSHIP_APPLICATION; @@ -1287,7 +1287,12 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic @Override public boolean hasPrintTemplate(String processInstanceId, String processDefinitionId) { - return extAxReModelService.hasPrintTemplateConfig(getModelIdByProcessDefinitionId(processInstanceId, processDefinitionId)); + try { + return extAxReModelService.hasPrintTemplateConfig(getModelIdByProcessDefinitionId(processInstanceId, processDefinitionId)); + } catch (Exception e) { + log.warn("hasPrintTemplate error:{}", e.getMessage(), e); + return false; + } } private void calcAuthorizedButtons(BpmnProcessInstanceLogVO logVO, BpmnTaskDelegateAssigner visitor) { @@ -1646,15 +1651,23 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic key = processDefinition.getKey(); tenantId = processDefinition.getTenantId(); } - Optional first = repositoryService.createModelQuery() + return repositoryService.createModelQuery() .modelKey(key) -// .modelCategory(BPMN_FILE_SUFFIX) - .modelTenantId(tenantId) - .list().stream().filter(i -> Objects.equals(i.getCategory(), BPMN_FILE_SUFFIX) || Objects.equals(i.getCategory(), i.getKey())) - .filter(i -> i.getMetaInfo().contains(MODEL_TYPE_PROCESS)) - .findFirst(); - - return first.orElseThrow(() -> new WorkflowEngineException(MODEL_NOT_EXISTS)).getId(); + .list().stream() + .filter(i -> (Objects.equals(i.getTenantId(), tenantId) || Objects.equals(i.getTenantId(), NO_TENANT_ID)) + && (Objects.equals(i.getCategory(), BPMN_FILE_SUFFIX) || Objects.equals(i.getCategory(), i.getKey())) + && i.getMetaInfo().contains(MODEL_TYPE_PROCESS)) + .sorted((a, b) -> { + if (Objects.equals(a.getTenantId(), tenantId)) { + return -1; + } else if (Objects.equals(b.getTenantId(), tenantId)) { + return 1; + } + return 0; + }) + .findFirst() + .orElseThrow(() -> new WorkflowEngineException(MODEL_NOT_EXISTS)) + .getId(); } @Override diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/PrintAdminController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/PrintAdminController.java index 144de2002..6fd58399c 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/PrintAdminController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/PrintAdminController.java @@ -107,6 +107,7 @@ public class PrintAdminController implements PrintAdminApi { private UserTaskForecasting userTaskForecasting; @Override + @PostMapping("/template/exists") public CommonResponse hasPrintTemplate(String processInstanceId) { return CommonResponse.success(bpmnProcessInstanceService.hasPrintTemplate(processInstanceId, null)); }