package com.zteits.sys.cache; import java.util.List; import java.util.Map; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.apache.commons.collections4.CollectionUtils; import com.clouds.common.cache.base.AbstractCache; import com.clouds.common.cache.base.HashCacheVO; import com.clouds.common.constants.RedisKeyEnum; import com.github.pagehelper.PageHelper; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.zteits.clouds.api.dto.sys.SysCodeValueDTO; import com.zteits.sys.domain.SysCodeDef; import com.zteits.sys.domain.SysCodeValue; import com.zteits.sys.mapper.smapper.SysCodeDefSMapper; import com.zteits.sys.mapper.smapper.SysCodeValueSMapper; /** * 字典表缓存 kind value:list
* * Copyright: Copyright (c) 2017 zteits * * @ClassName: SysCodeDefCache.java * @Description: * @version: v1.0.0 * @author: zhaowg * @date: 2017年6月26日 下午7:49:25 * Modification History: * Date Author Version Description *---------------------------------------------------------* * 2017年6月26日 zhaowg v1.0.0 创建 */ @Component public class SysCodeDefCache extends AbstractCache{ @Autowired private SysCodeValueSMapper sysCodeValueSMapper; @Autowired private SysCodeDefSMapper sysCodeDefSMapper; @Override protected List getData(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); List sysCodeDefs = sysCodeDefSMapper.querySysCodeDef(new SysCodeDef()); List hashCacheVOs = Lists.newArrayList(); if(CollectionUtils.isEmpty(sysCodeDefs)){ return hashCacheVOs; } for (SysCodeDef sysCodeDef : sysCodeDefs) { SysCodeValue sysCodeValue = new SysCodeValue(); sysCodeValue.setCodeKind(sysCodeDef.getCodeKind()); List sysCodeValues = sysCodeValueSMapper.querySysCodeValue(sysCodeValue ); if(CollectionUtils.isEmpty(sysCodeValues)){ continue; } Map sysCodeDTOs = Maps.newLinkedHashMap(); for (SysCodeValue codeValue : sysCodeValues) { SysCodeValueDTO dto = new SysCodeValueDTO(); BeanUtils.copyProperties(codeValue, dto); sysCodeDTOs.put(codeValue.getCodeValue(),dto); } //hmap 的 key值 String key = sysCodeDef.getCodeKind(); HashCacheVO cacheVO = new HashCacheVO(key, sysCodeDTOs); hashCacheVOs.add(cacheVO); } return hashCacheVOs; } @Override protected long getTotalSize() { return sysCodeDefSMapper.queryCount(new SysCodeDef()); } @Override protected String getKey() { return RedisKeyEnum.SYS_CODE_DEF_KIND_VAL.key(); } }