package cn.ksource.config;
|
|
import cn.ksource.core.dao.BaseDao;
|
|
import java.util.*;
|
|
public class DictionaryManager {
|
|
|
public static Map<String, Map> dtGroupMap=new HashMap<String, Map>();//字典分组map:key="group_code"
|
public static Map<String, Map> dicMap=new HashMap<String, Map>();//key="groupCode_dtCcde"
|
//key="group_code"
|
public static Map<String, List<Map>> groupDicMap=new HashMap<String, List<Map>>();
|
|
|
/**
|
* 得到所有字典表分类
|
* @return 字典分类列表List
|
*/
|
|
public static Collection<Map> getDtGroups() {
|
return dtGroupMap.values();
|
}
|
|
/**
|
* 字典列表List
|
* @param groupCode 分类代码
|
* @return 字典列表List
|
*/
|
|
public static List<Map> getDictList(String groupCode) {
|
return groupDicMap.get(groupCode);
|
}
|
|
public static Map getDtGroup(String groupCode) {
|
return dtGroupMap.get(groupCode);
|
}
|
|
public static Map getDictionary(String groupCode,String dicCode) {
|
return dicMap.get(groupCode+"_"+dicCode);
|
}
|
|
public static void init(BaseDao baseDao) throws Exception{
|
//清理
|
dtGroupMap.clear();
|
dicMap.clear();
|
groupDicMap.clear();
|
Integer active = 1;
|
|
List<Map> dicList= baseDao.queryForList("select * from dictionary where active="+active+" order by group_code,serial");
|
List<Map> dtGroupList=baseDao.queryForList("select * from dt_group where active="+active+" order by serial");
|
|
List<Map> isEachDics=new ArrayList<Map>();//已经处理过的Dictionary
|
for(int i=0;i<dtGroupList.size();i++){
|
isEachDics.clear();
|
Map dtGroup = dtGroupList.get(i);
|
//加入到dtGroupMap
|
dtGroupMap.put((String)dtGroup.get("GROUP_CODE"),dtGroup);
|
for(int j=0;j<dicList.size();j++){
|
Map dic = dicList.get(j);
|
//加入到dicMap
|
dicMap.put(dic.get("GROUP_CODE")+"_"+dic.get("DT_CODE"), dic);
|
if(dic.get("GROUP_CODE").equals(dtGroup.get("GROUP_CODE"))){
|
//加入到groupDicMap
|
List<Map> dics = groupDicMap.get(dic.get("GROUP_CODE"));
|
if(dics==null){
|
dics = new ArrayList<Map>();
|
groupDicMap.put((String)dic.get("GROUP_CODE"),dics);
|
}
|
dics.add(dic);
|
isEachDics.add(dic);
|
}
|
}
|
dicList.removeAll(isEachDics);
|
isEachDics.clear();
|
}
|
}
|
public static void removeDtGroup(String groupCode) {
|
dtGroupMap.remove(groupCode);
|
for(Map dic:groupDicMap.get(groupCode)){
|
dicMap.remove(groupCode+"_"+dic.get("DT_CODE"));
|
}
|
groupDicMap.remove(groupCode);
|
|
}
|
}
|