From 2a5a028e5f5d1cbab9a0bdb26ce6c48a5184ef49 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期四, 26 十二月 2024 18:11:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java | 82 +++++++++++++++++++++++++++++++++--------
1 files changed, 66 insertions(+), 16 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 cf45ee2..09202bf 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,18 +1117,36 @@
@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> taskHistoryList = historyService.createHistoricTaskInstanceQuery()
+ .processInstanceId(procInsId)
+ .finished()
+ .list();
+ //鑾峰彇鎵�鏈夊綋鍓嶄换鍔¤妭鐐逛俊鎭�(鎵╁睍)
+ List<Task> taskList = taskService.createTaskQuery()
+ .processInstanceId(procInsId)
+ .list();
// 淇濆瓨宸茬粡瀹屾垚鐨勬祦绋嬭妭鐐圭紪鍙�
listFinished.forEach(s -> {
FlowViewerDto flowViewerDto = new FlowViewerDto();
flowViewerDto.setKey(s.getActivityId());
flowViewerDto.setCompleted(true);
+ //鎵╁睍鍐呭 宸插畬鎴愮殑鐢ㄥ畬鎴愭椂闂村垽鏂�
+ Date endTime = s.getEndTime();
+ for (HistoricTaskInstance task : taskHistoryList) {
+ 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 +1166,14 @@
FlowViewerDto flowViewerDto = new FlowViewerDto();
flowViewerDto.setKey(s.getActivityId());
flowViewerDto.setCompleted(false);
+ //鎵╁睍鍐呭 浠e姙鐨勯�氳繃褰撳墠鏃堕棿鍘诲垽鏂�
+ for (Task 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();
@@ -1215,26 +1263,28 @@
// 杩欓噷鍙渶瑕佹煡鑷韩浠ュ強涓婁竴涓妭鐐�(濡傛灉骞惰鐨勬湁澶氫釜)鐨勮〃鍗曟暟鎹�
List<FormDetailVO> beforeNodes = taskCommonService.getBeforeNodeDefInfo(processDefId, processDefKey, sysFormService, Boolean.TRUE);
List<String> beforeNodeDefIds = beforeNodes.stream().filter(item -> !item.getCurrent() || currentNeedData).map(FormDetailVO::getBeforeNodeDefId).collect(Collectors.toList());
- Map<String, Object> newP = new HashMap<>();
- if (CollectionUtils.isNotEmpty(beforeNodeDefIds)) {
- for (String key : parameters.keySet()) {
- // 杩囨护鎷垮埌鐩爣鏁版嵁锛屽皢鐩爣琛ㄥ崟鏁版嵁鏀惧埌鏂癿ap涓�
- if (beforeNodeDefIds.stream().anyMatch(defId -> key.startsWith(defId))) {
- if (key.contains(ProcessConstants.TASK_FORM_KEY)) {
- newP.put(key, parameters.get(key));
- }
- else {
- newP.put(key.split("&")[1], parameters.get(key));
- }
- }
- }
- }
- // 鎷垮埌鐩爣琛ㄥ崟鍚庯紝鍐嶅鐞嗘瘡涓〃鍗曠殑鏁版嵁
+ // 澶勭悊姣忎釜琛ㄥ崟鐨勬暟鎹�
for (FormDetailVO formDetailVO : beforeNodes) {
if (formDetailVO.getCurrent() && !currentNeedData) {
continue; // 璺宠繃褰撳墠鑺傜偣锛屽洜涓哄綋鍓嶈妭鐐瑰湪鑾峰彇鍓嶇疆鑺傜偣鏃跺凡缁忚缃繃浜�(浣嗚〃鍗曟暟鎹病鏈夌粰)
}
+
+ Map<String, Object> newP = new HashMap<>();
+ if (CollectionUtils.isNotEmpty(beforeNodeDefIds)) {
+ for (String key : parameters.keySet()) {
+ // 杩囨护鎷垮埌鐩爣琛ㄥ崟鏁版嵁锛屽皢鐩爣琛ㄥ崟鏁版嵁鏀惧埌鏂癿ap涓�
+ if (key.startsWith(formDetailVO.getBeforeNodeDefId())) {
+ if (key.contains(ProcessConstants.TASK_FORM_KEY)) {
+ newP.put(key, parameters.get(key));
+ }
+ else {
+ newP.put(key.split("&")[1], parameters.get(key));
+ }
+ }
+ }
+ }
+
Object form = newP.get(formDetailVO.getBeforeNodeDefId() + "&" + ProcessConstants.TASK_FORM_KEY);
if (Objects.nonNull(form)) {
JSONObject formJson = JSONObject.parseObject(JSON.toJSONString(form));
--
Gitblit v1.8.0