From 5cd0e50ccbc6e10dd4e488d8b4106e82fb676521 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期二, 10 十二月 2024 14:22:36 +0800 Subject: [PATCH] 查询任务是否需要审核接口完善 --- flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java | 8 ++++ business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 36 +++++++++--------- flowable/src/main/java/com/ycl/service/common/TaskCommonService.java | 27 +++++++++++++ 3 files changed, 53 insertions(+), 18 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 cc5d7b9..984dd4e 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -29,6 +29,7 @@ import com.ycl.domain.form.ProjectProcessForm; import com.ycl.domain.vo.ProjectProcessVO; import com.ycl.domain.query.ProjectProcessQuery; +import com.ycl.service.common.TaskCommonService; import com.ycl.system.service.ISysDeptService; import com.ycl.system.service.ISysRoleService; import com.ycl.system.service.ISysUserService; @@ -78,6 +79,7 @@ private final ISysUserService sysUserService; private final ISysRoleService sysRoleService; private final ISysDeptService sysDeptService; + private final TaskCommonService taskCommonService; /** * 鍒嗛〉鏌ヨ @@ -113,14 +115,16 @@ if (Objects.nonNull(pp.getProcessInsId())) { HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(pp.getProcessInsId()).singleResult(); - // 鍒犻櫎涔嬪墠娴佺▼鐨勬暟鎹� - if (historicProcessInstance.getEndTime() != null) { - historyService.deleteHistoricProcessInstance(historicProcessInstance.getId()); - } else { - // 鍒犻櫎娴佺▼瀹炰緥 - runtimeService.deleteProcessInstance(pp.getProcessInsId(), ""); - // 鍒犻櫎鍘嗗彶娴佺▼瀹炰緥 - historyService.deleteHistoricProcessInstance(pp.getProcessInsId()); + if (Objects.nonNull(historicProcessInstance)) { + // 鍒犻櫎涔嬪墠娴佺▼鐨勬暟鎹� + if (historicProcessInstance.getEndTime() != null) { + historyService.deleteHistoricProcessInstance(historicProcessInstance.getId()); + } else { + // 鍒犻櫎娴佺▼瀹炰緥 + runtimeService.deleteProcessInstance(pp.getProcessInsId(), ""); + // 鍒犻櫎鍘嗗彶娴佺▼瀹炰緥 + historyService.deleteHistoricProcessInstance(pp.getProcessInsId()); + } } } String processInsId = this.startPro(form.getProjectId(), form.getProcessDefId()); @@ -341,26 +345,22 @@ @Override public Result taskIsAuditing(String processDefinitionId, String taskId) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); Collection<Process> processes = bpmnModel.getProcesses(); + Boolean needAuditing = Boolean.FALSE; for (Process process : processes) { Collection<FlowElement> flowElements = process.getFlowElements(); for (FlowElement flowElement : flowElements) { - if (flowElement instanceof UserTask) { + if (flowElement instanceof UserTask && flowElement.getId().equals(task.getTaskDefinitionKey())) { UserTask userTask = (UserTask) flowElement; - List<ExtensionElement> extensionElements = userTask.getExtensionElements().get("flowable:properties"); - if (! CollectionUtils.isEmpty(extensionElements)) { - for (ExtensionElement extensionElement : extensionElements) { - String fieldName = extensionElement.getAttributeValue(taskId,"name"); - String fieldValue = extensionElement.getAttributeValue(taskId,"value"); - System.out.println("Field Name: " + fieldName + ", Field Value: " + fieldValue); - } - } + needAuditing = taskCommonService.checkTaskNeedAuditing(userTask.getExtensionElements().get("properties")); + break; } } } - return null; + return Result.ok().data(needAuditing); } /** diff --git a/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java b/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java index 173a8d6..1a9fadb 100644 --- a/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java +++ b/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java @@ -90,4 +90,12 @@ public static final String WIDGET_LIST = "widgetList"; + /** + * 鎵╁睍灞炴�т腑鐨勶細鑺傜偣鏄惁瀹℃壒 + * + */ + public static final String EXTENSION_PROPERTY_NEED_AUDITING_TEXT = "璇ヨ妭鐐规槸瀹℃壒鑺傜偣"; + public static final String EXTENSION_PROPERTY_NEED_AUDITING_VALUE = "鏄�"; + + } diff --git a/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java b/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java index f95cdaf..c02b5f4 100644 --- a/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java +++ b/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java @@ -146,4 +146,31 @@ // } } + /** + * 妫�鏌ヤ换鍔¤妭鐐规槸鍚﹂厤缃簡锛氶渶瑕佸鏍� 鐨勬墿灞曞睘鎬� + * + * @param extensionElements 鎵╁睍鍒楄〃 + * @return + */ + public Boolean checkTaskNeedAuditing(List<ExtensionElement> extensionElements) { + if (CollectionUtils.isEmpty(extensionElements)) { + return Boolean.FALSE; + } + for (ExtensionElement extensionElement : extensionElements) { + if (CollectionUtils.isEmpty(extensionElement.getAttributes())) { // 濡傛灉鏈韩娌℃湁灞炴�э紝鍒欓�掑綊child + return checkTaskNeedAuditing(extensionElement.getChildElements().get("property")); + } else { + // 鍚﹀垯鍏堟煡鏈韩鐨勫睘鎬ф湁涓嶆湁锛氶渶瑕佸鏍� 鐨勫睘鎬э紝娌℃湁涔熸槸閫掑綊child + if (extensionElement.getAttributes().get("name").stream().anyMatch(attribute -> ProcessConstants.EXTENSION_PROPERTY_NEED_AUDITING_TEXT.equals(attribute.getValue())) + && extensionElement.getAttributes().get("value").stream().anyMatch(attribute -> ProcessConstants.EXTENSION_PROPERTY_NEED_AUDITING_VALUE.equals(attribute.getValue())) + ) { + return Boolean.TRUE; + } else { + return checkTaskNeedAuditing(extensionElement.getChildElements().get("property")); + } + } + } + return Boolean.FALSE; + } + } -- Gitblit v1.8.0