From 310f2ec1d4bc58a911701ba0b902f27a3e17efb6 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 03 一月 2025 16:43:33 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java | 66 +++++++++++++++------------------ flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java | 7 ++- business/src/main/java/com/ycl/task/FlowableTask.java | 8 --- 3 files changed, 35 insertions(+), 46 deletions(-) diff --git a/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java b/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java index 6fde445..d2e507c 100644 --- a/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java +++ b/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java @@ -7,6 +7,7 @@ import com.ycl.mapper.ProcessCodingMapper; import lombok.extern.slf4j.Slf4j; import org.flowable.common.engine.impl.el.FixedValue; +import org.flowable.engine.HistoryService; import org.flowable.engine.delegate.TaskListener; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.service.delegate.DelegateTask; @@ -19,7 +20,7 @@ /** * 浠诲姟鐩戝惉鍣� - * + * <p> * create锛堝垱寤猴級:鍦ㄤ换鍔¤鍒涘缓涓旀墍鏈夌殑浠诲姟灞炴�ц缃畬鎴愬悗鎵嶈Е鍙� * assignment锛堟寚娲撅級锛氬湪浠诲姟琚垎閰嶇粰鏌愪釜鍔炵悊浜轰箣鍚庤Е鍙� * complete锛堝畬鎴愶級锛氬湪閰嶇疆浜嗙洃鍚櫒鐨勪笂涓�涓换鍔″畬鎴愭椂瑙﹀彂 @@ -30,7 +31,7 @@ */ @Slf4j @Component -public class FlowableOverTimeListener extends FlowServiceFactory implements TaskListener { +public class FlowableOverTimeListener implements TaskListener { /** * 榛勭爜鏃堕棿 */ @@ -49,6 +50,7 @@ log.info("瑙﹀彂瓒呮椂鐩戝惉鍣�:{}", delegateTask); //Flowable鐨刡ean鑷繁绠$悊鐨勯渶瑕佹墜鍔ㄨ幏鍙� ProcessCodingMapper processCodingMapper = SpringUtils.getBean(ProcessCodingMapper.class); + HistoryService historyService = SpringUtils.getBean(HistoryService.class); //浠诲姟id String taskId = delegateTask.getId(); //娴佺▼瀹炰緥id @@ -57,40 +59,32 @@ processCoding.setTaskId(taskId); processCoding.setProcessInsId(processInstanceId); processCoding.setTaskDefKey(delegateTask.getTaskDefinitionKey()); - //娑夊強鍒伴┏鍥烇紝闇�瑕佹煡涓�涓嬭繖涓妭鐐规槸鍚﹀凡缁忔坊鍔犺繃浜嗭紝濡傛灉娣诲姞杩囧氨涓嶈繘琛屽悗缁搷浣� - List<ProcessCoding> processCodings = processCodingMapper.selectList(new QueryWrapper<ProcessCoding>() - .eq("process_ins_id", processInstanceId) - .eq("task_def_key", delegateTask.getTaskDefinitionKey())); - if (CollectionUtils.isEmpty(processCodings)) { - processCoding.setStatus(GREEN); - if (yellowTime != null && yellowTime.getValue(delegateTask) != null) { - processCoding.setYellowTime(Integer.parseInt(yellowTime.getValue(delegateTask).toString())); - } - if (redTime != null && redTime.getValue(delegateTask) != null) { - processCoding.setRedTime(Integer.parseInt(redTime.getValue(delegateTask).toString())); - } - if (startTaskId != null && startTaskId.getValue(delegateTask) != null) { - String taskDefKey = startTaskId.getValue(delegateTask).toString(); - //閫氳繃娴佺▼瀹炰緥id鍜岃妭鐐瑰畾涔塱d鎵惧埌瀵瑰簲taskId - if (delegateTask.getTaskDefinitionKey().equals(taskDefKey)) { - //褰撳墠鑺傜偣涓哄紑濮嬭鏃惰妭鐐� - processCoding.setStartTaskId(delegateTask.getId()); - } else { - //寮�濮嬭妭鐐逛粠鍘嗗彶鑺傜偣鏌ヨ 鍙栧鏉′腑鏈�鏃╃殑涓�鏉� - List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery() - .processInstanceId(processInstanceId) - .taskDefinitionKey(delegateTask.getTaskDefinitionKey()) - .orderByHistoricTaskInstanceStartTime() - .asc() - .list(); - if (!CollectionUtils.isEmpty(list)) { - HistoricTaskInstance hisTask = list.get(0); - processCoding.setStartTaskId(hisTask.getId()); - } - } - } - processCodingMapper.insert(processCoding); - log.info("娣诲姞鑺傜偣鍒板畾鏃跺櫒"); + processCoding.setStatus(GREEN); + if (yellowTime != null && yellowTime.getValue(delegateTask) != null) { + processCoding.setYellowTime(Integer.parseInt(yellowTime.getValue(delegateTask).toString())); } + if (redTime != null && redTime.getValue(delegateTask) != null) { + processCoding.setRedTime(Integer.parseInt(redTime.getValue(delegateTask).toString())); + } + //璁剧疆寮�濮嬭妭鐐� + if (startTaskId != null && startTaskId.getValue(delegateTask) != null) { + String taskDefKey = startTaskId.getValue(delegateTask).toString(); + //寮�濮嬭妭鐐逛粠鍘嗗彶鑺傜偣鏌ヨ 鍙栧鏉′腑鏈�鏃╃殑涓�鏉� + List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(processInstanceId) + .taskDefinitionKey(taskDefKey) + .orderByHistoricTaskInstanceStartTime() + .asc() + .list(); + if (!CollectionUtils.isEmpty(list)) { + HistoricTaskInstance hisTask = list.get(0); + processCoding.setStartTaskId(hisTask.getId()); + } else { + //濡傛灉涓虹┖锛岃鏄庢祦绋嬮娆¤蛋鍒皌askDefKey鑺傜偣 + processCoding.setStartTaskId(delegateTask.getId()); + } + } + processCodingMapper.insert(processCoding); + log.info("娣诲姞鑺傜偣鍒板畾鏃跺櫒"); } } diff --git a/business/src/main/java/com/ycl/task/FlowableTask.java b/business/src/main/java/com/ycl/task/FlowableTask.java index 5842b3b..971be1f 100644 --- a/business/src/main/java/com/ycl/task/FlowableTask.java +++ b/business/src/main/java/com/ycl/task/FlowableTask.java @@ -96,15 +96,9 @@ private Map<String, Date> getStartTaskList(List<ProcessCoding> processCodingList) { //鏌ュ嚭浠诲姟璁℃椂璧峰鑺傜偣闆嗗悎 List<String> startTaskIds = processCodingList.stream().map(ProcessCoding::getStartTaskId).collect(Collectors.toList()); - //鏌ュ嚭璧峰璁℃椂鑺傜偣鏁版嵁 娉ㄦ剰姝e湪杩涜鐨勪换鍔′笉浼氳繘鍏is琛� 缁撴潫浜嗘墠浼氳繘鍏� 鎵�浠ラ渶瑕佹煡涓ゅ紶琛� + //鏌ュ嚭璧峰璁℃椂鑺傜偣鏁版嵁 Map<String, Date> startDateMap = new HashMap<>(); - List<Task> startTasks = taskService.createTaskQuery().taskIds(startTaskIds).list(); List<HistoricTaskInstance> hisStartTasks = historyService.createHistoricTaskInstanceQuery().taskIds(startTaskIds).list(); - if (!CollectionUtils.isEmpty(startTasks)) { - startTasks.forEach(task -> { - startDateMap.put(task.getId(), task.getCreateTime()); - }); - } if (!CollectionUtils.isEmpty(hisStartTasks)) { hisStartTasks.forEach(hisTask -> { startDateMap.put(hisTask.getId(), hisTask.getStartTime()); 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 26a400d..98af018 100644 --- a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java +++ b/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java @@ -798,7 +798,6 @@ .processInstanceId(procInsId) .orderByHistoricActivityInstanceStartTime() .desc().list(); - Date now = new Date(); //鎵╁睍 鑾峰彇杩欎釜娴佺▼瀹炰緥鐨勭洃鎺т俊鎭� key:TaskId value:瀹炰綋绫� Map<String, ProcessCoding> processCodingMap = processCodingMapper.selectList(new QueryWrapper<ProcessCoding>().eq("process_ins_id", procInsId)) .stream() @@ -864,6 +863,7 @@ //鎵╁睍 鍒ゆ柇鏄惁瓒呮椂 ProcessCoding processCoding = processCodingMap.get(histIns.getTaskId()); if(processCoding!=null){ + //閫氳繃鑰楁椂鍒ゆ柇鏄惁鏄唬鍔炶妭鐐� //濡傛灉浠诲姟鏄唬鍔炶妭鐐� if (flowTask.getDuration() == null) { if(RED.equals(processCoding.getStatus()) || YELLOW.equals(processCoding.getStatus())){ @@ -1129,8 +1129,9 @@ .finished() .list(); - //鑾峰彇杩欎釜娴佺▼瀹炰緥鐨勭洃鎺т俊鎭� key:TaskId value:瀹炰綋绫� - Map<String, ProcessCoding> processCodingMap = processCodingMapper.selectList(new QueryWrapper<ProcessCoding>().eq("process_ins_id", procInsId)) + //鎵╁睍 鑾峰彇杩欎釜娴佺▼瀹炰緥鐨勭洃鎺т俊鎭� key:TaskId value:瀹炰綋绫� + Map<String, ProcessCoding> processCodingMap = processCodingMapper + .selectList(new QueryWrapper<ProcessCoding>().eq("process_ins_id", procInsId)) .stream() .collect(Collectors.toMap(ProcessCoding::getTaskId, Function.identity())); // 淇濆瓨宸茬粡瀹屾垚鐨勬祦绋嬭妭鐐圭紪鍙� -- Gitblit v1.8.0