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