package com.artfess.base.util; import java.util.*; import org.springframework.stereotype.Service; /** * 消息Util工具类,在线程变量中添加消息,消息使用list存放 * * @company 阿特菲斯信息技术有限公司 * @author heyifan * @email heyf@jee-soft.cn * @date 2018年4月26日 */ @Service public class ThreadMsgUtil implements ContextThread{ private static ThreadLocal> localMsg = new ThreadLocal>(); private static ThreadLocal> localMapMsg = new ThreadLocal>(); private static ThreadLocal>> localMapMsg2 = new ThreadLocal<>(); //流程消息的key public static final String MSG_FLOW_ERROR = "msg_flow_error"; /** * 添加消息 * * @param msg */ public static void addMsg(String msg) { List list = localMsg.get(); if (BeanUtils.isEmpty(list)) { list = new ArrayList(); list.add(msg); localMsg.set(list); } else { list.add(msg); } } /** * 获取消息数据,并直接清除消息中的数据 * * @return */ public static List getMsg() { return getMsg(true); } /** * 获取消息数据 * * @param clean * @return */ public static List getMsg(boolean clean) { List list = localMsg.get(); if (clean) { localMsg.remove(); } return list; } /** * 返回流程消息 * * @return */ public static String getMessage() { return getMessage(true); } /** * 获取消息 * * @param clean * @return */ public static String getMessage(boolean clean) { List list = getMsg(clean); String str = ""; if (BeanUtils.isEmpty(list)) { return str; } for (String msg : list) { str += msg + "\r\n"; } return str; } /** * 清除消息 */ public static void clean() { localMsg.remove(); } /** * 添加线程消息 * @param key * @param msg */ public static void addMapMsg(String key,String msg){ Map map = localMapMsg.get(); if(BeanUtils.isEmpty(map)){ map = new HashMap(); } map.put(key, msg); localMapMsg.set(map); } public static String getMapMsg(String key){ Map map = localMapMsg.get(); if(BeanUtils.isEmpty(map)){ return null; } if(map.containsKey(key)){ return map.get(key); } return null; } public static String getMapMsg(String key,boolean clean){ Map 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(); } public static void addMapMsg2(String key, LinkedHashSet msgs) { Map> map = localMapMsg2.get(); if (BeanUtils.isEmpty(map)) { map = new HashMap<>(); } map.put(key, msgs); localMapMsg2.set(map); } public static void addMapMsg2(String key, String msg) { Map> map = localMapMsg2.get(); if (BeanUtils.isEmpty(map)) { map = new HashMap<>(); } LinkedHashSet msgs = getMapMsg2(key); if (msgs == null) { msgs = new LinkedHashSet<>(); } msgs.add(msg); map.put(key, msgs); localMapMsg2.set(map); } public static LinkedHashSet getMapMsg2(String key) { Map> map = localMapMsg2.get(); if (BeanUtils.isEmpty(map)) { return null; } if (map.containsKey(key)) { return map.get(key); } return null; } public static LinkedHashSet getMapMsg2(String key, boolean clean) { Map> map = localMapMsg2.get(); if (BeanUtils.isEmpty(map)) { return null; } if (map.containsKey(key)) { LinkedHashSet msgs = map.get(key); if (clean) { map.remove(key); } return msgs; } return null; } public static void cleanMapMsg2() { localMapMsg2.remove(); } @Override public void cleanAll() { clean(); cleanMapMsg(); cleanMapMsg2(); } }