From 80662b34fe93b4ede00c7fc03fbd9f01355c94e2 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 07 四月 2025 13:52:17 +0800
Subject: [PATCH] 修改任务接口

---
 business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java |   71 +++++++++++++++++++++++++++++++++--
 1 files changed, 66 insertions(+), 5 deletions(-)

diff --git a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
index af1da78..b1133be 100644
--- a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -28,6 +28,7 @@
 import com.ycl.domain.entity.ProcessLog;
 import com.ycl.domain.entity.ProjectProcess;
 import com.ycl.domain.entity.SysForm;
+import com.ycl.domain.form.EditFinishedTaskForm;
 import com.ycl.domain.json.RejectData;
 import com.ycl.domain.query.ProcessLogQuery;
 import com.ycl.domain.vo.*;
@@ -190,6 +191,7 @@
         }
         return AjaxResult.success("鎻愪氦鎴愬姛");
     }
+
 
     /**
      * 瀹圭己琛ヤ氦
@@ -1411,6 +1413,58 @@
     }
 
     /**
+     * 鏌ヨ褰撳墠浠诲姟鐨勮〃鍗曟暟鎹�
+     *
+     * @param taskId
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public AjaxResult currentFlowTaskForm(String taskId) {
+        // 娴佺▼鍙橀噺
+        List<HistoricTaskInstance> hisTaskList = historyService.createHistoricTaskInstanceQuery()
+                .includeProcessVariables()
+                .finished()
+                .taskId(taskId)
+                .orderByHistoricTaskInstanceStartTime()
+                .desc()
+                .list();
+        if (CollectionUtils.isEmpty(hisTaskList) || Objects.isNull(hisTaskList.get(0))) {
+            return AjaxResult.error("鏈壘鍒拌浠诲姟淇℃伅");
+        }
+        HistoricTaskInstance historicTaskInstance = hisTaskList.get(0);
+        Map<String, Object> parameters = historicTaskInstance.getProcessVariables();
+        String processInsId = historicTaskInstance.getProcessInstanceId();
+        List<FormDetailVO> beforeNodes = this.getBeforeNodeForm(parameters, historicTaskInstance.getFormKey(), historicTaskInstance.getName(), historicTaskInstance.getProcessDefinitionId(), historicTaskInstance.getTaskDefinitionKey(), Boolean.FALSE);
+        // 鍒ゆ柇鍓嶇疆浠诲姟鏄笉鏄拰褰撳墠浠诲姟涓哄悓涓�涓猠xecuteId
+        // 鍒ゆ柇褰撳墠浠诲姟鏄惁琚寕璧蜂腑
+        String finalProcessInsId = processInsId;
+
+        List<DoFormDetailVO> vos = beforeNodes.stream()
+                .filter(FormDetailVO::getCurrent)
+                .map(node -> {
+                    if (node.getCurrent()) {
+                        if (processLogService.taskIsHangup(taskId, finalProcessInsId)) {
+                            node.setTaskStatus(TaskStatusEnum.HANGUP);
+                        }
+                    }
+                    // 鍒ゆ柇浠诲姟鏄惁瀛樺湪鐗规畩鎿嶄綔(濡傝烦杩囥�佽浆鍔炵瓑)锛岄渶瑕佸湪鍓嶇灞曠ず鍑烘潵
+                    ProcessLogQuery query = new ProcessLogQuery();
+                    query.setTaskId(node.getTaskId());
+                    query.setProcessInsId(finalProcessInsId);
+                    Result result = processLogService.projectProcessLogList(query);
+                    List<ProcessLogVO> logList = (List<ProcessLogVO>) result.get("data");
+                    DoFormDetailVO vo = new DoFormDetailVO();
+                    BeanUtils.copyProperties(node, vo);
+                    if (CollectionUtils.isNotEmpty(logList)) {
+                        vo.setEvents(logList);
+                    }
+                    return vo;
+        }).collect(Collectors.toList());
+        return AjaxResult.success(vos.get(0));
+    }
+
+    /**
      * 娴佺▼鑺傜偣琛ㄥ崟
      *
      * @param taskId 娴佺▼浠诲姟缂栧彿
@@ -1423,11 +1477,17 @@
         Map<String, Object> parameters = new HashMap<>();
         List<FormDetailVO> beforeNodes = new ArrayList<>();
         String processInsId = "";
-        HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().includeProcessVariables().finished().taskId(taskId).singleResult();
-        if (Objects.nonNull(historicTaskInstance)) {
-            parameters = historicTaskInstance.getProcessVariables();
-            processInsId = historicTaskInstance.getProcessInstanceId();
-            beforeNodes = this.getBeforeNodeForm(parameters, historicTaskInstance.getFormKey(), historicTaskInstance.getName(), historicTaskInstance.getProcessDefinitionId(), historicTaskInstance.getTaskDefinitionKey(), Boolean.FALSE);
+        List<HistoricTaskInstance> hisTaskList = historyService.createHistoricTaskInstanceQuery()
+                .includeProcessVariables()
+                .finished()
+                .taskId(taskId)
+                .orderByHistoricTaskInstanceStartTime()
+                .desc()
+                .list();
+        if (CollectionUtils.isNotEmpty(hisTaskList) && Objects.nonNull(hisTaskList.get(0))) {
+            parameters = hisTaskList.get(0).getProcessVariables();
+            processInsId = hisTaskList.get(0).getProcessInstanceId();
+            beforeNodes = this.getBeforeNodeForm(parameters, hisTaskList.get(0).getFormKey(), hisTaskList.get(0).getName(), hisTaskList.get(0).getProcessDefinitionId(), hisTaskList.get(0).getTaskDefinitionKey(), Boolean.FALSE);
         } else {
             parameters = taskService.getVariables(taskId);
             processInsId = task.getProcessInstanceId();
@@ -1717,6 +1777,7 @@
         return beforeNodes;
     }
 
+
     /**
      * 娴佺▼鑺傜偣淇℃伅
      *

--
Gitblit v1.8.0