package com.qxueyou.scc.base.util; import java.util.Collection; import java.util.Date; import java.util.HashSet; import java.util.List; import org.hibernate.Hibernate; import org.hibernate.proxy.HibernateProxy; import com.qxueyou.scc.base.model.ITrace; /** * 数据修改轨迹记录工具类 */ public class TraceUtils { /** 管理员账号、账号id */ public static final String ADMIN_ACCOUNT="admin"; public static final String ADMIN_ACCOUNT_ID="admin"; /** * 设置激活 新增轨迹信息 * @param trace */ public static void setCreateActiveTrace(ITrace trace){ trace.setCreateId(ADMIN_ACCOUNT_ID); trace.setCreateTime(new Date(System.currentTimeMillis())); trace.setCreator(ADMIN_ACCOUNT); trace.setUpdateId(ADMIN_ACCOUNT_ID); trace.setUpdateTime(new Date(System.currentTimeMillis())); trace.setUpdator(ADMIN_ACCOUNT); } /** * 设置新增轨迹信息 * @param trace */ public static void setCreateTrace(ITrace trace){ if(ClientUtils.getUserInfo()==null){ setCreateActiveTrace(trace); return; } trace.setCreateId(ClientUtils.getUserId()); trace.setCreateTime(new Date()); trace.setCreator(ClientUtils.getUserName()); trace.setUpdateId(ClientUtils.getUserId()); trace.setUpdateTime(new Date()); trace.setUpdator(ClientUtils.getUserName()); } /** * 设置新增轨迹信息 * @param trace */ @SuppressWarnings("rawtypes") public static void setCreateTrace(Collection cls){ ITrace trace=null; for(Object obj : cls){ trace = (ITrace) obj; setCreateTrace(trace); } } /** * 删除已删除的记录 * @param trace */ @SuppressWarnings("rawtypes") public static void removeDelete(List cls){ ITrace trace=null; for(int i=cls.size()-1;i>-1;i--){ trace = (ITrace) cls.get(i); if(trace.getDeleteFlag()){ cls.remove(i); } } } /** * 设置更新轨迹信息 * @param trace */ public static void setUpdateTrace(ITrace trace){ if(ClientUtils.getUserInfo()==null){ trace.setUpdateId(ADMIN_ACCOUNT_ID); trace.setUpdateTime(new Date(System.currentTimeMillis())); trace.setUpdator(ADMIN_ACCOUNT); return ; } trace.setUpdateId(ClientUtils.getUserId()); trace.setUpdateTime(new Date(System.currentTimeMillis())); trace.setUpdator(ClientUtils.getUserName()); } /** * 设置新增轨迹信息 * @param trace */ @SuppressWarnings("rawtypes") public static void setUpdateTrace(Collection cls){ ITrace trace=null; for(Object obj : cls){ trace = (ITrace) obj; setUpdateTrace(trace); } } /** * 通过HashSet踢除重复元素 * @param list * @return */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static List removeDuplicateList(List list) { HashSet h = new HashSet(list); list.clear(); list.addAll(h); return list; } /** * 初始化代理实体 * @param entity * @return */ @SuppressWarnings("unchecked") public static T initializeAndUnproxy(T entity) { if (entity == null) { throw new NullPointerException("初始化实体为空"); } Hibernate.initialize(entity); if (entity instanceof HibernateProxy) { return (T) ((HibernateProxy) entity).getHibernateLazyInitializer() .getImplementation(); } return entity; } }