package com.ycsoft.commons.store;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.ycsoft.beans.config.TConfigTemplate;
import com.ycsoft.beans.config.TTemplate;
import com.ycsoft.beans.config.TUpdateCfg;
import com.ycsoft.business.dao.config.TTemplateDao;
import com.ycsoft.business.dto.config.TemplateConfigDto;
import com.ycsoft.business.dto.config.TemplateUpdatePorpDto;
import com.ycsoft.commons.exception.ComponentException;
import com.ycsoft.commons.helper.CollectionHelper;
/**
* 模板配置
*
* @author liujiaqi
*
*/
public class TemplateConfig {
private static TTemplateDao tTemplateDao;
public enum Template {
/** 计费 */
BILLING,
/** 配置 */
CONFIG,
/** 单据 */
DOC,
/** 费用 */
FEE,
/** 发票 */
INVOICE,
/** 工单 */
TASK,
/** 信息修改 */
UPDPROP,
/**是否必须基本包**/
NEED_BASE_PROD,
/**分公司账户是否启用**/
GENERAL_ACCT_FLAG,
/**基本产品免费天数**/
BASE_PROD_FREE_DAY
};
/**
*
*/
private static Map<Template, Map<String, TTemplate>> configMap = new HashMap<Template, Map<String, TTemplate>>();
/**
*地区模板对应表
* key county_id
* value template_id
*/
public static Map<String, String> configCounty = new HashMap<String, String>();
/**
* @param template
* 模板类型
* @param countyId
* 地区
* @return
*/
public static TTemplate loadConfig(Template template,
String countyId) throws ComponentException {
Map<String, TTemplate> templates = configMap.get(template);
if (templates == null) {
throw new ComponentException("找不到对应的模板配置"+template.name());
}
TTemplate t = templates.get(countyId);
if (t == null)
throw new ComponentException("地区" + countyId + "找不到对应的模板配置"
+ template.name());
return t;
}
/**
* 设置数据加载Dao
* @param dao
*/
public static void loadData(TTemplateDao dao) throws Exception {
tTemplateDao = dao;
loadData();
}
public static void loadData() throws Exception{
if (tTemplateDao!=null){
configMap.put(Template.CONFIG, allConfigTemplate());
configMap.put(Template.UPDPROP, allUpdatePropTemplate());
//TODO 其他模板加载
}
}
/**
* 所有的属性修改模板
* @return
*/
private static Map<String, TTemplate> allUpdatePropTemplate() throws Exception {
Map<String, TTemplate> result =new HashMap<String, TTemplate> ();
List<TUpdateCfg> allUpdateProp = tTemplateDao.queryAllUpdateProp();
Map<String, List<TUpdateCfg>> allUpdatePropMap =
CollectionHelper.converToMap(allUpdateProp, "county_id");
Iterator<String> it = allUpdatePropMap.keySet().iterator();
while(it.hasNext()){
String key = it.next();
List<TUpdateCfg> l =allUpdatePropMap.get(key);
TemplateUpdatePorpDto dto = new TemplateUpdatePorpDto();
dto.setUpdateList(l);
dto.setUpdateMap(CollectionHelper.converToMap(l, "busi_code"));
result.put(key, dto);
}
return result;
}
/**
* 所有的配置模板
* @return
*/
private static Map<String, TTemplate> allConfigTemplate() throws Exception {
Map<String, TTemplate> result =new HashMap<String, TTemplate> ();
List<TConfigTemplate> allConfig = tTemplateDao.queryAllConfig();
Map<String, List<TConfigTemplate>> allConfigMap =
CollectionHelper.converToMap(allConfig, "county_id");
Iterator<String> it = allConfigMap.keySet().iterator();
while(it.hasNext()){
String key = it.next();
List<TConfigTemplate> l =allConfigMap.get(key);
TemplateConfigDto dto = new TemplateConfigDto();
dto.setConfigList(l);
dto.setConfigMap(CollectionHelper.converToMapSingle(l, "config_name"));
result.put(key, dto);
}
return result;
}
}