项目启动时加cache

来源:互联网 发布:java生成100以内随机数 编辑:程序博客网 时间:2024/05/01 03:19
package com.yougou.logistics.tms.web.controller;

<bean id="initCacheController" class="com.yougou.logistics.tms.web.controller.InitCacheController" init-method="init" ></bean>

spring 中加项java文件

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;


import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;


import org.apache.commons.lang.StringUtils;
import org.slf4j.ext.XLogger;
import org.slf4j.ext.XLoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;


import com.yougou.logistics.base.common.exception.ManagerException;
import com.yougou.logistics.tms.common.cache.SystemCache;
import com.yougou.logistics.tms.common.constans.PublicConstans;
import com.yougou.logistics.tms.common.model.SystemUser;
import com.yougou.logistics.tms.common.model.TmsStandardDtl;
import com.yougou.logistics.tms.common.utils.CommonUtil;
import com.yougou.logistics.tms.common.vo.LookupDtl;
import com.yougou.logistics.tms.manager.AuthorityUserBrandManager;
import com.yougou.logistics.tms.manager.TmsStandardDtlManager;


 
@Controller
@RequestMapping("/initCache")
public class InitCacheController implements InitializingBean {




protected static final XLogger logger = XLoggerFactory.getXLogger(InitCacheController.class);

//加载字典
public static Map<String, List<LookupDtl>> lookupdMap = new LinkedHashMap<String, List<LookupDtl>>();


@Resource
private AuthorityUserBrandManager authorityUserBrandManager;


@Resource
private TmsStandardDtlManager tmsStandardDtlManager;


/**
* 初始化
*/
public void init() {
logger.info(("★★★★★★★★★★★★★★★★初始化开始★★★★★★★★★★★★★★★★"));
reloadInitLookupdMap();
//logger.info(("★★★★★★★★★★★★★★★★初始化完成★★★★★★★★★★★★★★★★"));
}






//页面获得字典
@RequestMapping(value = "/standard_dtl",method=RequestMethod.GET)
@ResponseBody
public List<TmsStandardDtl> getStandardDtlList(String lookupcode, String authFlag, HttpServletRequest req) {
List<TmsStandardDtl> listObj = new ArrayList<TmsStandardDtl>();
if (CommonUtil.hasValue(lookupcode) && SystemCache.standarDtldMap.size() > 0) {
listObj = SystemCache.standarDtldMap.get(lookupcode);
}
return listObj;
}


/**
* 初始化加载字典数据 
*/
private void reloadInitLookupdMap() {
try {
SystemCache.standarDtldMap.clear();
logger.info(("^^^^^^初始化字典开始①^^^^^^"));
TmsStandardDtl lookupDtl = new TmsStandardDtl();
Map<String, Object> params = new HashMap<String, Object>();
params.put("status", 0);
List<TmsStandardDtl> listDtls = tmsStandardDtlManager.findByBiz(lookupDtl, params);
if (CommonUtil.hasValue(listDtls)) {
for (TmsStandardDtl vo : listDtls) {
if (SystemCache.standarDtldMap.containsKey(vo.getLookupcode())) {
List<TmsStandardDtl> tempList = SystemCache.standarDtldMap.get(vo.getLookupcode());
tempList.add(vo);
SystemCache.standarDtldMap.put(vo.getLookupcode(), tempList);
} else {
List<TmsStandardDtl> tempList = new LinkedList<TmsStandardDtl>();
TmsStandardDtl tmp = new TmsStandardDtl();
tmp.setItemname("--请选择--");
tmp.setItemvalue("");
tempList.add(tmp);
tempList.add(vo);
SystemCache.standarDtldMap.put(vo.getLookupcode(), tempList);
}
}
}
logger.info(("^^^^^^初始化字典完成①^^^^^^Lookupcode分类个数:" + SystemCache.standarDtldMap.size()));
} catch (Exception e) {
logger.info(("^^^^^^#################################初始化字典异常################################^^^^^^"));
logger.error(e.getMessage());
}


}


@Override
public void afterPropertiesSet() throws Exception {


}


//页面获得字典
@RequestMapping(value = "/getLookupDtlsList")
@ResponseBody
public List<LookupDtl> getLookupDtlsList(String lookupcode, String authFlag, HttpServletRequest req) {
List<LookupDtl> listObj = new ArrayList<LookupDtl>();
if (CommonUtil.hasValue(lookupcode) && lookupdMap.size() > 0) {
listObj = lookupdMap.get(lookupcode);
if (lookupcode.equals("SYS_NO") && "true".equals(authFlag) && listObj != null && listObj.size() > 0) {
SystemUser user = (SystemUser) req.getSession().getAttribute(PublicConstans.SESSION_USER);
try {
List<String> userBrandList = authorityUserBrandManager.findByUserIdBrandList(user.getUserid()
.toString());
if (userBrandList != null && userBrandList.size() > 0) {
Map<String, LookupDtl> tempMap = new HashMap<String, LookupDtl>();
for (LookupDtl lookupDtl : listObj) {
tempMap.put(lookupDtl.getItemvalue(), lookupDtl);
}
List<LookupDtl> tempDtlList = new ArrayList<LookupDtl>();
for (String key : userBrandList) {
LookupDtl tempDtl = tempMap.get(key);
if (tempDtl != null) {
tempDtlList.add(tempDtl);
}
}
listObj = tempDtlList;
}
} catch (ManagerException e) {
e.printStackTrace();
}
}
}
return listObj;
}

@SuppressWarnings({ "unchecked", "unused" })
private Map<String, Object> builderParams(HttpServletRequest req, Model model) {


Map<String, Object> params = req.getParameterMap();
if (null != params && params.size() > 0) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (Entry<String, Object> p : params.entrySet()) {
if (null == p.getValue() || StringUtils.isEmpty(p.getValue().toString()))
continue;
// 只转换一个参数,多个参数不转换
String values[] = (String[]) p.getValue();
String match = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$";
if (values[0].matches(match)) {
try {
p.setValue(sdf.parse(values[0]));
} catch (ParseException e) {
e.printStackTrace();
}
} else if (p.getKey().equals("queryCondition") && model.asMap().containsKey("queryCondition")) {
p.setValue(model.asMap().get("queryCondition"));
} else {
p.setValue(values[0]);
}
}
}
return params;
}


}
原创粉丝点击