package com.xzx.gc.role.service;
|
|
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.xzx.gc.entity.CoreDict;
|
import com.xzx.gc.model.query.CoreDictQuery;
|
import com.xzx.gc.role.mapper.CoreDictMapper;
|
import com.xzx.gc.role.model.CoreDictQueryModel;
|
import com.xzx.gc.util.enums.DelFlagEnum;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 描述: 字典 service,包含常规字典和级联字典的操作。
|
* @author : xiandafu
|
*/
|
@Service
|
@Transactional
|
public class CoreDictService{
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(CoreDictService.class);
|
|
@Autowired
|
private CoreDictMapper dictMapper;
|
|
@Autowired
|
CorePlatformService platformService;
|
|
@Autowired
|
CoreDictService self ;
|
private String type;
|
|
|
/**
|
* 根据类型获取字典集合
|
* @param type 字典类型,
|
* @return List
|
*/
|
//@Cacheable(value = CorePlatformService.DICT_CACHE_TYPE)
|
public List<CoreDict> findAllByType(String type) {
|
return dictMapper.findAllList(type);
|
}
|
|
/**
|
* 级联字典查询,必须提供一个字典类型
|
* @param type
|
* @param value
|
* @return
|
*/
|
//@Cacheable(value = CorePlatformService.DICT_CACHE_CHILDREN)
|
public List<CoreDict> findAllByGroup(String type,String value) {
|
List<CoreDict> list = self.findAllByType(type);
|
return _search(list,value);
|
|
}
|
|
/**
|
* 级联字段下一级的字段列表
|
* @param id
|
* @return
|
*/
|
//@Cacheable(value = CorePlatformService.DICT_CACHE_CHILDREN)
|
public List<CoreDict> findChildByParent(Long id) {
|
return dictMapper.findChildByParent(id);
|
}
|
|
//@Cacheable(value = CorePlatformService.DICT_CACHE_VALUE)
|
public CoreDict findCoreDict(String type,String value) {
|
List<CoreDict> list = self.findAllByGroup(type, value);
|
if(list==null) {
|
return null;
|
}
|
for(CoreDict dict:list) {
|
if(dict.getValue().equals(value)) {
|
return dict;
|
}
|
}
|
|
return null;
|
}
|
|
/*通过名字反向查找数据字典,通常用于excel导入*/
|
public Map<String,CoreDict> mapDictByName(String type){
|
List<CoreDict> list = self.findAllByType(type);
|
Map<String,CoreDict> map = new HashMap<String,CoreDict>();
|
for(CoreDict dict:list) {
|
map.put(dict.getName(), dict);
|
}
|
return map;
|
}
|
|
|
|
/*递归查找*/
|
private List<CoreDict> _search(List<CoreDict> list,String value) {
|
for(CoreDict dict:list) {
|
if(dict.getValue().equals(value)) {
|
return list;
|
}else {
|
List<CoreDict> children = findChildByParent(dict.getId());
|
if(children.isEmpty()) {
|
continue;
|
}else {
|
List<CoreDict> ret = _search(children,value);
|
if(ret!=null) {
|
return ret;
|
}
|
}
|
|
}
|
}
|
return null;
|
}
|
|
|
/**
|
* 查询字段类型列表
|
* @return
|
*/
|
public List<Map<String, String>> findTypeList() {
|
return dictMapper.findTypeList(DelFlagEnum.NORMAL.getValue());
|
}
|
|
|
public String findNameByType(String value){
|
return dictMapper.findNameByType(value);
|
}
|
|
|
public PageInfo<CoreDict> queryByCondition(CoreDictQueryModel query){
|
PageHelper.startPage(query.getPage(),query.getLimit());
|
List<CoreDict> ret = dictMapper.queryByCondition(query);
|
PageInfo info = new PageInfo(ret);
|
//queryListAfter(ret.getList());
|
return info;
|
}
|
}
|