update 使用ThreadLocal临时存储线程内数据

This commit is contained in:
lijiarao
2024-01-12 16:19:19 +08:00
parent 9692b40efb
commit 7348d5953b
2 changed files with 53 additions and 7 deletions
@@ -3,8 +3,10 @@ package com.jero.modules.activiti.process.projectassess.service;
import java.util.Date;
import java.util.List;
import cn.hutool.cache.Cache;
import cn.hutool.core.collection.CollStreamUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.thread.ThreadUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.api.dto.message.SendMessageDTO;
@@ -34,6 +36,7 @@ import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.process.projectassess.vo.ProcessProjectAssessVO;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.util.ThreadLocalUtil;
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
@@ -453,7 +456,7 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
}
processProjectAssessTermUserService.updateBatchById(allTermUserList);
tempCache.put(ProcessProjectAssessCommon.EXECUTION_ID, executionId);
ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID, executionId);
// 完成任务
String taskId = processDTO.getTaskId();
Map<String, Object> variables = new HashMap<>();
@@ -485,7 +488,7 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
.map(ProcessProjectAssessTermUser::getModuleOwner)
.filter(Objects::nonNull)
.distinct().collect(Collectors.toList());
tempCache.put(ProcessProjectAssessCommon.EXECUTION_ID, executionId);
ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID, executionId);
// 完成任务
String taskId = processDTO.getTaskId();
Map<String, Object> variables = new HashMap<>();
@@ -524,7 +527,7 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
.map(ProcessProjectAssessTermUser::getDesignEngineer)
.filter(Objects::nonNull)
.distinct().collect(Collectors.toList());
tempCache.put(ProcessProjectAssessCommon.EXECUTION_ID, executionId);
ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID, executionId);
processHandleService.saveNodeUserLink(processDTO.getProcessInstanceId(), ProcessProjectAssessCommon.SJGCSPG2, designEngineerList);
// 完成任务
String taskId = processDTO.getTaskId();
@@ -758,7 +761,7 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
.distinct().collect(Collectors.toList());
processHandleService.saveNodeUserLink(processDTO.getProcessInstanceId(), ProcessProjectAssessCommon.MKFZRFF, moduleOwnerIds);
processHandleService.saveNodeUserLink(processDTO.getProcessInstanceId(), ProcessProjectAssessCommon.MKFZRSP, moduleOwnerIds);
tempCache.put(ProcessProjectAssessCommon.EXECUTION_ID,executionId);
ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID,executionId);
// 完成任务
String taskId = processDTO.getTaskId();
Map<String, Object> variables = new HashMap<>();
@@ -836,7 +839,7 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
.filter(Objects::nonNull)
.distinct().collect(Collectors.toList());
processHandleService.saveNodeUserLink(processDTO.getProcessInstanceId(), ProcessProjectAssessCommon.SJGCSPG, designEngineerIds);
tempCache.put(ProcessProjectAssessCommon.EXECUTION_ID,executionId);
ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID,executionId);
// 完成任务
String taskId = processDTO.getTaskId();
Map<String, Object> variables = new HashMap<>();
@@ -874,7 +877,7 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
allTermUserList.add(termUser);
}
processProjectAssessTermUserService.updateBatchById(allTermUserList);
tempCache.put(ProcessProjectAssessCommon.EXECUTION_ID,executionId);
ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID,executionId);
// 完成任务
String taskId = processDTO.getTaskId();
@@ -928,7 +931,7 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
//ProcessApprovalRecord myLastComplete = processApprovalRecordService.getMyLastComplete(processInstanceId, nodeId, userId);
//String lastCompleteTaskId = myLastComplete.getTaskId();
//HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().taskId(lastCompleteTaskId).singleResult();
String parentExecutionId = tempCache.get(ProcessProjectAssessCommon.EXECUTION_ID);
String parentExecutionId = (String) ThreadLocalUtil.get(ProcessProjectAssessCommon.EXECUTION_ID);
delegateTask.setFormKey(parentExecutionId);
}
}
@@ -0,0 +1,43 @@
package com.jero.modules.activiti.util;
import java.util.HashMap;
import java.util.Map;
/**
* @author liJiaRao
* @date 2024-01-12 15:50
*/
public class ThreadLocalUtil {
private static final ThreadLocal<Map<String, Object>> RUNTIME_DATA = new ThreadLocal<>();
public ThreadLocalUtil() {
}
public static Map<String, Object> getRuntimeData() {
Map<String, Object> data = RUNTIME_DATA.get();
if (data == null) {
data = new HashMap<>();
RUNTIME_DATA.set(data);
}
return data;
}
public static Object get(String key) {
Map<String, Object> map = RUNTIME_DATA.get();
RUNTIME_DATA.remove();
return map.get(key);
}
public static void put(String key, String value) {
getRuntimeData().put(key, value);
}
public static void remove(String key) {
getRuntimeData().remove(key);
}
public static void clear() {
getRuntimeData().clear();
}
}