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