系统缓存

来源:互联网 发布:spark书籍推荐 知乎 编辑:程序博客网 时间:2024/04/29 06:10

1:spring 启动时加载

    <bean id="initCacheController" class="InitCacheController" init-method="init" ></bean>

 

package com.yougou.logistics.tms.web.controller;

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;
 
 
@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>>();

   

    /**
     * 初始化
     */
    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(com.yougou.logistics.base.common.contains.PublicContains.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;
    }

}

public class SystemCache {
    
    //加载字典
    public static  Map<String, List<TmsStandardDtl>> standarDtldMap = new LinkedHashMap<String,List<TmsStandardDtl>>();
    
    //系统参数
    public static Map<String,String> systemCurrentParamMap = new LinkedHashMap<String,String>();
    
    public static synchronized void putSystemParam(String paramName,String paramValue){
        if(StringUtils.isNotEmpty(paramName)){
            systemCurrentParamMap.put(paramName, paramValue);
        }
    }
    
    public static synchronized void deleteSystemParam(String paramName){
        if(StringUtils.isNotEmpty(paramName) && systemCurrentParamMap != null && StringUtils.isNotEmpty(systemCurrentParamMap.get(paramName))){
            systemCurrentParamMap.remove(paramName);
        }
    }

}

0 0
原创粉丝点击