From b809036ade43c97f86a0802fed57177884cc61f7 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 26 十二月 2024 17:46:34 +0800
Subject: [PATCH] 赋码demo

---
 flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java |   45 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
index aff08d2..4486c01 100644
--- a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
+++ b/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -792,6 +792,11 @@
                     .processInstanceId(procInsId)
                     .orderByHistoricActivityInstanceStartTime()
                     .desc().list();
+            Date now =new Date();
+            //鎵╁睍
+            List<HistoricTaskInstance> taskList = historyService.createHistoricTaskInstanceQuery()
+                    .processInstanceId(procInsId)
+                    .list();
             List<FlowTaskDto> hisFlowList = new ArrayList<>();
             for (HistoricActivityInstance histIns : list) {
                 // 灞曠ず寮�濮嬭妭鐐�
@@ -850,6 +855,23 @@
                     }
 
                     flowTask.setDuration(histIns.getDurationInMillis() == null || histIns.getDurationInMillis() == 0 ? null : getDate(histIns.getDurationInMillis()));
+                    String taskId = histIns.getTaskId();
+
+                    //鎵╁睍 鍒ゆ柇鏄惁瓒呮椂
+                    for (HistoricTaskInstance taskInstance : taskList) {
+                        Date dueDate = taskInstance.getDueDate();
+                        //鎵惧埌瀵瑰簲浠诲姟鑺傜偣
+                        if(dueDate!=null && taskInstance.getId().equals(taskId) ) {
+                            //濡傛灉浠诲姟杩樻病瀹屾垚
+                            if(flowTask.getDuration()==null) {
+                                //鍒ゆ柇褰撳墠鏃堕棿鏄惁瓒呰繃鍒版湡鏃堕棿
+                                if (now.after(dueDate)) flowTask.setOvertime(Boolean.TRUE);
+                            }else {
+                                //濡傛灉浠诲姟鑺傜偣宸茬粡瀹屾垚浜嗭紝鐢ㄥ畬鎴愭椂闂村垽鏂�
+                                if(histIns.getEndTime().after(dueDate)) flowTask.setOvertime(Boolean.TRUE);
+                            }
+                        }
+                    }
                     // 鑾峰彇鎰忚璇勮鍐呭
                     List<Comment> commentList = taskService.getProcessInstanceComments(histIns.getProcessInstanceId());
                     commentList.forEach(comment -> {
@@ -1095,9 +1117,15 @@
     @Override
     public AjaxResult flowXmlAndNode(String procInsId, String deployId) {
         try {
+            Date now = new Date();
             List<FlowViewerDto> flowViewerList = new ArrayList<>();
             // 鑾峰彇宸茬粡瀹屾垚鐨勮妭鐐�
             List<HistoricActivityInstance> listFinished = historyService.createHistoricActivityInstanceQuery()
+                    .processInstanceId(procInsId)
+                    .finished()
+                    .list();
+            //鑾峰彇鎵�鏈変换鍔¤妭鐐逛俊鎭�(鎵╁睍)
+            List<HistoricTaskInstance> taskList = historyService.createHistoricTaskInstanceQuery()
                     .processInstanceId(procInsId)
                     .finished()
                     .list();
@@ -1107,6 +1135,15 @@
                 FlowViewerDto flowViewerDto = new FlowViewerDto();
                 flowViewerDto.setKey(s.getActivityId());
                 flowViewerDto.setCompleted(true);
+                //鎵╁睍鍐呭 宸插畬鎴愮殑鐢ㄥ畬鎴愭椂闂村垽鏂�
+                Date endTime = s.getEndTime();
+                for (HistoricTaskInstance task : taskList) {
+                    if(s.getTaskId()!=null && s.getTaskId().equals(task.getId())){
+                        if(task.getDueDate()!=null && endTime.after(task.getDueDate())){
+                            flowViewerDto.setOvertime(true);
+                        }
+                    }
+                }
                 // 閫�鍥炶妭鐐逛笉杩涜灞曠ず
                 if (StringUtils.isBlank(s.getDeleteReason())) {
                     flowViewerList.add(flowViewerDto);
@@ -1126,6 +1163,14 @@
                 FlowViewerDto flowViewerDto = new FlowViewerDto();
                 flowViewerDto.setKey(s.getActivityId());
                 flowViewerDto.setCompleted(false);
+                //鎵╁睍鍐呭 浠e姙鐨勯�氳繃褰撳墠鏃堕棿鍘诲垽鏂�
+                for (HistoricTaskInstance task : taskList) {
+                    if(s.getTaskId()!=null && s.getTaskId().equals(task.getId())){
+                        if(task.getDueDate()!=null && now.after(task.getDueDate())){
+                            flowViewerDto.setOvertime(true);
+                        }
+                    }
+                }
                 flowViewerList.add(flowViewerDto);
             });
             Map<String, Object> result = new HashMap();

--
Gitblit v1.8.0