ThreadMessageUtil.java 1.65 KB
package com.hotent.system.util;

import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.hotent.base.util.BeanUtils;
import com.hotent.base.util.ContextThread;

/**
 * 消息Util工具类,在线程变量中添加消息,消息使用list存放
 * 
 * @company 广州宏天软件股份有限公司
 * @author pangquan
 * @email pangq@jee-soft.cn
 * @date 2020年11月03日
 */
@Service
public class ThreadMessageUtil implements ContextThread{
	
	private static ThreadLocal<Map<String,String>> localMapMsg = new ThreadLocal<Map<String,String>>();
	
	/**
	 * 添加线程消息
	 * @param key
	 * @param msg
	 */
	public static void addMapMsg(String key,String msg){
		Map<String, String> map = localMapMsg.get();
		if(BeanUtils.isEmpty(map)){
			map = new HashMap<String, String>();
		}
		map.put(key, msg);
		localMapMsg.set(map);
	}
	
	public static String getMapMsg(String key){
		Map<String, String> map = localMapMsg.get();
		if(BeanUtils.isEmpty(map)){
			return null;
		}
		if(map.containsKey(key)){
			return map.get(key);
		}
		return null;
	}
	public static Map<String, String> getMapMsg(boolean clean){
		Map<String, String> map = localMapMsg.get();
		if(clean){
			localMapMsg.remove();
		}
		return map;
	}
	
	public static String getMapMsg(String key,boolean clean){
		Map<String, String> map = localMapMsg.get();
		if(BeanUtils.isEmpty(map)){
			return null;
		}
		if(map.containsKey(key)){
			String msg = map.get(key);
			if(clean) {
				map.remove(key);
			}
			return msg;
		}
		return null;
	}
	
	public static void cleanMapMsg(){
		localMapMsg.remove();
	}

	@Override
	public void cleanAll() {
		cleanMapMsg();
	}
}