【add】数据字典模块刷新缓存的服务层接口
This commit is contained in:
+1
@@ -360,6 +360,7 @@ public class OnlCgformHeadServiceImpl extends ServiceImpl<OnlCgformHeadMapper, O
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteRecordAndTable(String id) throws DBException, SQLException {
|
||||
OnlCgformHead var2 = (OnlCgformHead)this.getById(id);
|
||||
if (var2 == null) {
|
||||
|
||||
+562
-573
File diff suppressed because it is too large
Load Diff
+145
-138
@@ -1,138 +1,145 @@
|
||||
package com.jero.modules.system.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.jero.common.system.vo.DictModel;
|
||||
import com.jero.common.system.vo.DictQuery;
|
||||
import com.jero.modules.system.entity.SysDict;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.model.TreeSelectModel;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @Author zhangweijian
|
||||
* @since 2018-12-28
|
||||
*/
|
||||
public interface ISysDictService extends IService<SysDict> {
|
||||
|
||||
public List<DictModel> queryDictItemsByCode(String code);
|
||||
|
||||
public Map<String,List<DictModel>> queryAllDictItems();
|
||||
|
||||
@Deprecated
|
||||
List<DictModel> queryTableDictItemsByCode(String table, String text, String code);
|
||||
|
||||
@Deprecated
|
||||
public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql);
|
||||
|
||||
public String queryDictTextByKey(String code, String key);
|
||||
|
||||
@Deprecated
|
||||
String queryTableDictTextByKey(String table, String text, String code, String key);
|
||||
|
||||
@Deprecated
|
||||
List<String> queryTableDictByKeys(String table, String text, String code, String keys);
|
||||
|
||||
/**
|
||||
* 根据字典类型删除关联表中其对应的数据
|
||||
*
|
||||
* @param sysDict
|
||||
* @return
|
||||
*/
|
||||
boolean deleteByDictId(SysDict sysDict);
|
||||
|
||||
/**
|
||||
* 添加一对多
|
||||
*/
|
||||
public Integer saveMain(SysDict sysDict, List<SysDictItem> sysDictItemList);
|
||||
|
||||
/**
|
||||
* 查询所有部门 作为字典信息 id -->value,departName -->text
|
||||
* @return
|
||||
*/
|
||||
public List<DictModel> queryAllDepartBackDictModel();
|
||||
|
||||
/**
|
||||
* 查询所有用户 作为字典信息 username -->value,realname -->text
|
||||
* @return
|
||||
*/
|
||||
public List<DictModel> queryAllUserBackDictModel();
|
||||
|
||||
/**
|
||||
* 通过关键字查询字典表
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param keyword
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
public List<DictModel> queryTableDictItems(String table, String text, String code,String keyword);
|
||||
|
||||
/**
|
||||
* 查询字典表数据 只查询前10条
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param keyword
|
||||
* @return
|
||||
*/
|
||||
public List<DictModel> queryLittleTableDictItems(String table, String text, String code,String keyword, int pageSize);
|
||||
|
||||
/**
|
||||
* 根据表名、显示字段名、存储字段名 查询树
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param pidField
|
||||
* @param pid
|
||||
* @param hasChildField
|
||||
* @return
|
||||
*/
|
||||
List<TreeSelectModel> queryTreeList(String query,String table, String text, String code, String pidField,String pid,String hasChildField);
|
||||
|
||||
/**
|
||||
* 根据表名、显示字段名、存储字段名 和查询条件拼接树结构
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param pidField
|
||||
* @return
|
||||
*/
|
||||
List<TreeSelectModel> queryAllTreeData(String table, String text, String code, String pidField);
|
||||
|
||||
/**
|
||||
* 真实删除
|
||||
* @param id
|
||||
*/
|
||||
public void deleteOneDictPhysically(String id);
|
||||
|
||||
/**
|
||||
* 修改delFlag
|
||||
* @param delFlag
|
||||
* @param id
|
||||
*/
|
||||
public void updateDictDelFlag(int delFlag,String id);
|
||||
|
||||
/**
|
||||
* 查询被逻辑删除的数据
|
||||
* @return
|
||||
*/
|
||||
public List<SysDict> queryDeleteList();
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param query
|
||||
* @param pageSize
|
||||
* @param pageNo
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
public List<DictModel> queryDictTablePageList(DictQuery query,int pageSize, int pageNo);
|
||||
|
||||
}
|
||||
package com.jero.modules.system.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.jero.common.system.vo.DictModel;
|
||||
import com.jero.common.system.vo.DictQuery;
|
||||
import com.jero.modules.system.entity.SysDict;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.model.TreeSelectModel;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @Author zhangweijian
|
||||
* @since 2018-12-28
|
||||
*/
|
||||
public interface ISysDictService extends IService<SysDict> {
|
||||
|
||||
public List<DictModel> queryDictItemsByCode(String code);
|
||||
|
||||
public Map<String,List<DictModel>> queryAllDictItems();
|
||||
|
||||
@Deprecated
|
||||
List<DictModel> queryTableDictItemsByCode(String table, String text, String code);
|
||||
|
||||
@Deprecated
|
||||
public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql);
|
||||
|
||||
public String queryDictTextByKey(String code, String key);
|
||||
|
||||
@Deprecated
|
||||
String queryTableDictTextByKey(String table, String text, String code, String key);
|
||||
|
||||
@Deprecated
|
||||
List<String> queryTableDictByKeys(String table, String text, String code, String keys);
|
||||
|
||||
/**
|
||||
* 根据字典类型删除关联表中其对应的数据
|
||||
*
|
||||
* @param sysDict
|
||||
* @return
|
||||
*/
|
||||
boolean deleteByDictId(SysDict sysDict);
|
||||
|
||||
/**
|
||||
* 添加一对多
|
||||
*/
|
||||
public Integer saveMain(SysDict sysDict, List<SysDictItem> sysDictItemList);
|
||||
|
||||
/**
|
||||
* 查询所有部门 作为字典信息 id -->value,departName -->text
|
||||
* @return
|
||||
*/
|
||||
public List<DictModel> queryAllDepartBackDictModel();
|
||||
|
||||
/**
|
||||
* 查询所有用户 作为字典信息 username -->value,realname -->text
|
||||
* @return
|
||||
*/
|
||||
public List<DictModel> queryAllUserBackDictModel();
|
||||
|
||||
/**
|
||||
* 通过关键字查询字典表
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param keyword
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
public List<DictModel> queryTableDictItems(String table, String text, String code,String keyword);
|
||||
|
||||
/**
|
||||
* 查询字典表数据 只查询前10条
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param keyword
|
||||
* @return
|
||||
*/
|
||||
public List<DictModel> queryLittleTableDictItems(String table, String text, String code,String keyword, int pageSize);
|
||||
|
||||
/**
|
||||
* 根据表名、显示字段名、存储字段名 查询树
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param pidField
|
||||
* @param pid
|
||||
* @param hasChildField
|
||||
* @return
|
||||
*/
|
||||
List<TreeSelectModel> queryTreeList(String query,String table, String text, String code, String pidField,String pid,String hasChildField);
|
||||
|
||||
/**
|
||||
* 根据表名、显示字段名、存储字段名 和查询条件拼接树结构
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param pidField
|
||||
* @return
|
||||
*/
|
||||
List<TreeSelectModel> queryAllTreeData(String table, String text, String code, String pidField);
|
||||
|
||||
/**
|
||||
* 真实删除
|
||||
* @param id
|
||||
*/
|
||||
public void deleteOneDictPhysically(String id);
|
||||
|
||||
/**
|
||||
* 修改delFlag
|
||||
* @param delFlag
|
||||
* @param id
|
||||
*/
|
||||
public void updateDictDelFlag(int delFlag,String id);
|
||||
|
||||
/**
|
||||
* 查询被逻辑删除的数据
|
||||
* @return
|
||||
*/
|
||||
public List<SysDict> queryDeleteList();
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param query
|
||||
* @param pageSize
|
||||
* @param pageNo
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
public List<DictModel> queryDictTablePageList(DictQuery query,int pageSize, int pageNo);
|
||||
|
||||
/**
|
||||
* 刷新dict缓存
|
||||
* @date 2021/4/8 9:06
|
||||
* @return void
|
||||
*/
|
||||
void refreshCache();
|
||||
|
||||
}
|
||||
|
||||
+313
-290
@@ -1,290 +1,313 @@
|
||||
package com.jero.modules.system.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jero.common.constant.CacheConstant;
|
||||
import com.jero.common.constant.CommonConstant;
|
||||
import com.jero.common.system.vo.DictModel;
|
||||
import com.jero.common.system.vo.DictQuery;
|
||||
import com.jero.common.util.oConvertUtils;
|
||||
import com.jero.modules.system.entity.SysDict;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.mapper.SysDictItemMapper;
|
||||
import com.jero.modules.system.mapper.SysDictMapper;
|
||||
import com.jero.modules.system.model.TreeSelectModel;
|
||||
import com.jero.modules.system.service.ISysDictService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
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.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @Author zhangweijian
|
||||
* @since 2018-12-28
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements ISysDictService {
|
||||
|
||||
@Autowired
|
||||
private SysDictMapper sysDictMapper;
|
||||
@Autowired
|
||||
private SysDictItemMapper sysDictItemMapper;
|
||||
|
||||
/**
|
||||
* 通过查询指定code 获取字典
|
||||
* @param code
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Cacheable(value = CacheConstant.SYS_DICT_CACHE,key = "#code")
|
||||
public List<DictModel> queryDictItemsByCode(String code) {
|
||||
log.debug("无缓存dictCache的时候调用这里!");
|
||||
return sysDictMapper.queryDictItemsByCode(code);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, List<DictModel>> queryAllDictItems() {
|
||||
Map<String, List<DictModel>> res = new HashMap<String, List<DictModel>>();
|
||||
List<SysDict> ls = sysDictMapper.selectList(null);
|
||||
LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<SysDictItem>();
|
||||
queryWrapper.eq(SysDictItem::getStatus, 1);
|
||||
queryWrapper.orderByAsc(SysDictItem::getSortOrder);
|
||||
List<SysDictItem> sysDictItemList = sysDictItemMapper.selectList(queryWrapper);
|
||||
|
||||
for (SysDict d : ls) {
|
||||
List<DictModel> dictModelList = sysDictItemList.stream().filter(s -> d.getId().equals(s.getDictId())).map(item -> {
|
||||
DictModel dictModel = new DictModel();
|
||||
dictModel.setText(item.getItemText());
|
||||
dictModel.setValue(item.getItemValue());
|
||||
return dictModel;
|
||||
}).collect(Collectors.toList());
|
||||
res.put(d.getDictCode(), dictModelList);
|
||||
}
|
||||
log.debug("-------登录加载系统字典-----" + res.toString());
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过查询指定code 获取字典值text
|
||||
* @param code
|
||||
* @param key
|
||||
* @return
|
||||
*/
|
||||
|
||||
@Override
|
||||
@Cacheable(value = CacheConstant.SYS_DICT_CACHE,key = "#code+':'+#key")
|
||||
public String queryDictTextByKey(String code, String key) {
|
||||
log.debug("无缓存dictText的时候调用这里!");
|
||||
return sysDictMapper.queryDictTextByKey(code, key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过查询指定table的 text code 获取字典
|
||||
* dictTableCache采用redis缓存有效期10分钟
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
//@Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE)
|
||||
public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) {
|
||||
log.debug("无缓存dictTableList的时候调用这里!");
|
||||
return sysDictMapper.queryTableDictItemsByCode(table,text,code);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql) {
|
||||
log.debug("无缓存dictTableList的时候调用这里!");
|
||||
return sysDictMapper.queryTableDictItemsByCodeAndFilter(table,text,code,filterSql);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过查询指定table的 text code 获取字典值text
|
||||
* dictTableCache采用redis缓存有效期10分钟
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param key
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE)
|
||||
public String queryTableDictTextByKey(String table,String text,String code, String key) {
|
||||
log.debug("无缓存dictTable的时候调用这里!");
|
||||
return sysDictMapper.queryTableDictTextByKey(table,text,code,key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过查询指定table的 text code 获取字典,包含text和value
|
||||
* dictTableCache采用redis缓存有效期10分钟
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param keys (逗号分隔)
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
//update-begin--Author:lvdandan Date:20201204 for:JT-36【online】树形列表bug修改后,还是显示原来值 暂时去掉缓存
|
||||
//@Cacheable(value = CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE)
|
||||
//update-end--Author:lvdandan Date:20201204 for:JT-36【online】树形列表bug修改后,还是显示原来值 暂时去掉缓存
|
||||
public List<String> queryTableDictByKeys(String table, String text, String code, String keys) {
|
||||
if(oConvertUtils.isEmpty(keys)){
|
||||
return null;
|
||||
}
|
||||
String[] keyArray = keys.split(",");
|
||||
List<DictModel> dicts = sysDictMapper.queryTableDictByKeys(table, text, code, keyArray);
|
||||
List<String> texts = new ArrayList<>(dicts.size());
|
||||
// 查询出来的顺序可能是乱的,需要排个序
|
||||
for (String key : keyArray) {
|
||||
for (DictModel dict : dicts) {
|
||||
if (key.equals(dict.getValue())) {
|
||||
texts.add(dict.getText());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return texts;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据字典类型id删除关联表中其对应的数据
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteByDictId(SysDict sysDict) {
|
||||
sysDict.setDelFlag(CommonConstant.DEL_FLAG_1);
|
||||
return this.updateById(sysDict);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Integer saveMain(SysDict sysDict, List<SysDictItem> sysDictItemList) {
|
||||
int insert=0;
|
||||
try{
|
||||
insert = sysDictMapper.insert(sysDict);
|
||||
if (sysDictItemList != null) {
|
||||
for (SysDictItem entity : sysDictItemList) {
|
||||
entity.setDictId(sysDict.getId());
|
||||
entity.setStatus(1);
|
||||
sysDictItemMapper.insert(entity);
|
||||
}
|
||||
}
|
||||
}catch(Exception e){
|
||||
return insert;
|
||||
}
|
||||
return insert;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryAllDepartBackDictModel() {
|
||||
return baseMapper.queryAllDepartBackDictModel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryAllUserBackDictModel() {
|
||||
return baseMapper.queryAllUserBackDictModel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryTableDictItems(String table, String text, String code, String keyword) {
|
||||
return baseMapper.queryTableDictItems(table, text, code, "%"+keyword+"%");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryLittleTableDictItems(String table, String text, String code, String keyword, int pageSize) {
|
||||
Page<DictModel> page = new Page<DictModel>(1, pageSize);
|
||||
IPage<DictModel> pageList = baseMapper.queryTableDictItems(page, table, text, code, "%"+keyword+"%");
|
||||
return pageList.getRecords();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TreeSelectModel> queryTreeList(String query,String table, String text, String code, String pidField, String pid, String hasChildField) {
|
||||
return baseMapper.queryTreeList(query, table, text, code, pidField, pid,hasChildField);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TreeSelectModel> queryAllTreeData(String table, String text, String code, String pidField) {
|
||||
// 先查出要查询的数据
|
||||
List<TreeSelectModel> serachTreeNode = this.baseMapper.queryTreeDataByKeyword(table, text, code, pidField);
|
||||
|
||||
// 构建一个HashMap,按ID为key存储全部查询出的数据结构
|
||||
HashMap<String, TreeSelectModel> resultMap = new HashMap<>();
|
||||
for (TreeSelectModel treeSelectModel : serachTreeNode){
|
||||
resultMap.put(treeSelectModel.getKey(), treeSelectModel);
|
||||
|
||||
TreeSelectModel copyTreeSelectModel = treeSelectModel;
|
||||
// 叠加的查询父节点
|
||||
while (StringUtils.isNotEmpty(copyTreeSelectModel.getParentId())){
|
||||
if (resultMap.get(copyTreeSelectModel.getParentId()) != null){
|
||||
break;
|
||||
}
|
||||
|
||||
TreeSelectModel newTreeSelectModel = this.baseMapper.queryTreeDataItemById(copyTreeSelectModel.getParentId(), table, text, code, pidField);
|
||||
if(newTreeSelectModel == null){
|
||||
break;
|
||||
}
|
||||
|
||||
resultMap.put(newTreeSelectModel.getKey(), newTreeSelectModel);
|
||||
|
||||
copyTreeSelectModel = newTreeSelectModel;
|
||||
}
|
||||
}
|
||||
System.out.println("aaa");
|
||||
|
||||
// 遍历map里全部的节点,取出父节点放入list,并循环添加他的子节点
|
||||
List<TreeSelectModel> treeNodeList = new ArrayList<>();
|
||||
for (String key : resultMap.keySet()){
|
||||
TreeSelectModel curTreeSelectModel = resultMap.get(key);
|
||||
if (StringUtils.isEmpty(curTreeSelectModel.getParentId())){
|
||||
treeNodeList.add(curTreeSelectModel);
|
||||
} else {
|
||||
// 如果有父节点,则找出自己的父节点,把自己添加进父节点的children属性里
|
||||
TreeSelectModel existParentNode = resultMap.get(curTreeSelectModel.getParentId());
|
||||
if (existParentNode != null){
|
||||
existParentNode.getChildren().add(curTreeSelectModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return treeNodeList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteOneDictPhysically(String id) {
|
||||
this.baseMapper.deleteOneById(id);
|
||||
this.sysDictItemMapper.delete(new LambdaQueryWrapper<SysDictItem>().eq(SysDictItem::getDictId,id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDictDelFlag(int delFlag, String id) {
|
||||
baseMapper.updateDictDelFlag(delFlag,id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysDict> queryDeleteList() {
|
||||
return baseMapper.queryDeleteList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryDictTablePageList(DictQuery query, int pageSize, int pageNo) {
|
||||
Page page = new Page(pageNo,pageSize,false);
|
||||
Page<DictModel> pageList = baseMapper.queryDictTablePageList(page, query);
|
||||
return pageList.getRecords();
|
||||
}
|
||||
}
|
||||
package com.jero.modules.system.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jero.common.constant.CacheConstant;
|
||||
import com.jero.common.constant.CommonConstant;
|
||||
import com.jero.common.system.vo.DictModel;
|
||||
import com.jero.common.system.vo.DictQuery;
|
||||
import com.jero.common.util.oConvertUtils;
|
||||
import com.jero.modules.system.entity.SysDict;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.mapper.SysDictItemMapper;
|
||||
import com.jero.modules.system.mapper.SysDictMapper;
|
||||
import com.jero.modules.system.model.TreeSelectModel;
|
||||
import com.jero.modules.system.service.ISysDictService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @Author zhangweijian
|
||||
* @since 2018-12-28
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements ISysDictService {
|
||||
|
||||
@Autowired
|
||||
private SysDictMapper sysDictMapper;
|
||||
@Autowired
|
||||
private SysDictItemMapper sysDictItemMapper;
|
||||
@Resource
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
/**
|
||||
* 通过查询指定code 获取字典
|
||||
* @param code
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Cacheable(value = CacheConstant.SYS_DICT_CACHE,key = "#code")
|
||||
public List<DictModel> queryDictItemsByCode(String code) {
|
||||
log.debug("无缓存dictCache的时候调用这里!");
|
||||
return sysDictMapper.queryDictItemsByCode(code);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, List<DictModel>> queryAllDictItems() {
|
||||
Map<String, List<DictModel>> res = new HashMap<String, List<DictModel>>();
|
||||
List<SysDict> ls = sysDictMapper.selectList(null);
|
||||
LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<SysDictItem>();
|
||||
queryWrapper.eq(SysDictItem::getStatus, 1);
|
||||
queryWrapper.orderByAsc(SysDictItem::getSortOrder);
|
||||
List<SysDictItem> sysDictItemList = sysDictItemMapper.selectList(queryWrapper);
|
||||
|
||||
for (SysDict d : ls) {
|
||||
List<DictModel> dictModelList = sysDictItemList.stream().filter(s -> d.getId().equals(s.getDictId())).map(item -> {
|
||||
DictModel dictModel = new DictModel();
|
||||
dictModel.setText(item.getItemText());
|
||||
dictModel.setValue(item.getItemValue());
|
||||
return dictModel;
|
||||
}).collect(Collectors.toList());
|
||||
res.put(d.getDictCode(), dictModelList);
|
||||
}
|
||||
log.debug("-------登录加载系统字典-----" + res.toString());
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过查询指定code 获取字典值text
|
||||
* @param code
|
||||
* @param key
|
||||
* @return
|
||||
*/
|
||||
|
||||
@Override
|
||||
@Cacheable(value = CacheConstant.SYS_DICT_CACHE,key = "#code+':'+#key")
|
||||
public String queryDictTextByKey(String code, String key) {
|
||||
log.debug("无缓存dictText的时候调用这里!");
|
||||
return sysDictMapper.queryDictTextByKey(code, key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过查询指定table的 text code 获取字典
|
||||
* dictTableCache采用redis缓存有效期10分钟
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
//@Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE)
|
||||
public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) {
|
||||
log.debug("无缓存dictTableList的时候调用这里!");
|
||||
return sysDictMapper.queryTableDictItemsByCode(table,text,code);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql) {
|
||||
log.debug("无缓存dictTableList的时候调用这里!");
|
||||
return sysDictMapper.queryTableDictItemsByCodeAndFilter(table,text,code,filterSql);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过查询指定table的 text code 获取字典值text
|
||||
* dictTableCache采用redis缓存有效期10分钟
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param key
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE)
|
||||
public String queryTableDictTextByKey(String table,String text,String code, String key) {
|
||||
log.debug("无缓存dictTable的时候调用这里!");
|
||||
return sysDictMapper.queryTableDictTextByKey(table,text,code,key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过查询指定table的 text code 获取字典,包含text和value
|
||||
* dictTableCache采用redis缓存有效期10分钟
|
||||
* @param table
|
||||
* @param text
|
||||
* @param code
|
||||
* @param keys (逗号分隔)
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
//update-begin--Author:lvdandan Date:20201204 for:JT-36【online】树形列表bug修改后,还是显示原来值 暂时去掉缓存
|
||||
//@Cacheable(value = CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE)
|
||||
//update-end--Author:lvdandan Date:20201204 for:JT-36【online】树形列表bug修改后,还是显示原来值 暂时去掉缓存
|
||||
public List<String> queryTableDictByKeys(String table, String text, String code, String keys) {
|
||||
if(oConvertUtils.isEmpty(keys)){
|
||||
return null;
|
||||
}
|
||||
String[] keyArray = keys.split(",");
|
||||
List<DictModel> dicts = sysDictMapper.queryTableDictByKeys(table, text, code, keyArray);
|
||||
List<String> texts = new ArrayList<>(dicts.size());
|
||||
// 查询出来的顺序可能是乱的,需要排个序
|
||||
for (String key : keyArray) {
|
||||
for (DictModel dict : dicts) {
|
||||
if (key.equals(dict.getValue())) {
|
||||
texts.add(dict.getText());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return texts;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据字典类型id删除关联表中其对应的数据
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteByDictId(SysDict sysDict) {
|
||||
sysDict.setDelFlag(CommonConstant.DEL_FLAG_1);
|
||||
return this.updateById(sysDict);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Integer saveMain(SysDict sysDict, List<SysDictItem> sysDictItemList) {
|
||||
int insert=0;
|
||||
try{
|
||||
insert = sysDictMapper.insert(sysDict);
|
||||
if (sysDictItemList != null) {
|
||||
for (SysDictItem entity : sysDictItemList) {
|
||||
entity.setDictId(sysDict.getId());
|
||||
entity.setStatus(1);
|
||||
sysDictItemMapper.insert(entity);
|
||||
}
|
||||
}
|
||||
}catch(Exception e){
|
||||
return insert;
|
||||
}
|
||||
return insert;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryAllDepartBackDictModel() {
|
||||
return baseMapper.queryAllDepartBackDictModel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryAllUserBackDictModel() {
|
||||
return baseMapper.queryAllUserBackDictModel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryTableDictItems(String table, String text, String code, String keyword) {
|
||||
return baseMapper.queryTableDictItems(table, text, code, "%"+keyword+"%");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryLittleTableDictItems(String table, String text, String code, String keyword, int pageSize) {
|
||||
Page<DictModel> page = new Page<DictModel>(1, pageSize);
|
||||
IPage<DictModel> pageList = baseMapper.queryTableDictItems(page, table, text, code, "%"+keyword+"%");
|
||||
return pageList.getRecords();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TreeSelectModel> queryTreeList(String query,String table, String text, String code, String pidField, String pid, String hasChildField) {
|
||||
return baseMapper.queryTreeList(query, table, text, code, pidField, pid,hasChildField);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TreeSelectModel> queryAllTreeData(String table, String text, String code, String pidField) {
|
||||
// 先查出要查询的数据
|
||||
List<TreeSelectModel> serachTreeNode = this.baseMapper.queryTreeDataByKeyword(table, text, code, pidField);
|
||||
|
||||
// 构建一个HashMap,按ID为key存储全部查询出的数据结构
|
||||
HashMap<String, TreeSelectModel> resultMap = new HashMap<>();
|
||||
for (TreeSelectModel treeSelectModel : serachTreeNode){
|
||||
resultMap.put(treeSelectModel.getKey(), treeSelectModel);
|
||||
|
||||
TreeSelectModel copyTreeSelectModel = treeSelectModel;
|
||||
// 叠加的查询父节点
|
||||
while (StringUtils.isNotEmpty(copyTreeSelectModel.getParentId())){
|
||||
if (resultMap.get(copyTreeSelectModel.getParentId()) != null){
|
||||
break;
|
||||
}
|
||||
|
||||
TreeSelectModel newTreeSelectModel = this.baseMapper.queryTreeDataItemById(copyTreeSelectModel.getParentId(), table, text, code, pidField);
|
||||
if(newTreeSelectModel == null){
|
||||
break;
|
||||
}
|
||||
|
||||
resultMap.put(newTreeSelectModel.getKey(), newTreeSelectModel);
|
||||
|
||||
copyTreeSelectModel = newTreeSelectModel;
|
||||
}
|
||||
}
|
||||
System.out.println("aaa");
|
||||
|
||||
// 遍历map里全部的节点,取出父节点放入list,并循环添加他的子节点
|
||||
List<TreeSelectModel> treeNodeList = new ArrayList<>();
|
||||
for (String key : resultMap.keySet()){
|
||||
TreeSelectModel curTreeSelectModel = resultMap.get(key);
|
||||
if (StringUtils.isEmpty(curTreeSelectModel.getParentId())){
|
||||
treeNodeList.add(curTreeSelectModel);
|
||||
} else {
|
||||
// 如果有父节点,则找出自己的父节点,把自己添加进父节点的children属性里
|
||||
TreeSelectModel existParentNode = resultMap.get(curTreeSelectModel.getParentId());
|
||||
if (existParentNode != null){
|
||||
existParentNode.getChildren().add(curTreeSelectModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return treeNodeList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteOneDictPhysically(String id) {
|
||||
this.baseMapper.deleteOneById(id);
|
||||
this.sysDictItemMapper.delete(new LambdaQueryWrapper<SysDictItem>().eq(SysDictItem::getDictId,id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDictDelFlag(int delFlag, String id) {
|
||||
baseMapper.updateDictDelFlag(delFlag,id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysDict> queryDeleteList() {
|
||||
return baseMapper.queryDeleteList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DictModel> queryDictTablePageList(DictQuery query, int pageSize, int pageNo) {
|
||||
Page page = new Page(pageNo,pageSize,false);
|
||||
Page<DictModel> pageList = baseMapper.queryDictTablePageList(page, query);
|
||||
return pageList.getRecords();
|
||||
}
|
||||
/**
|
||||
* 刷新dict缓存
|
||||
* @date 2021/4/8 9:07
|
||||
* @param
|
||||
* @return void
|
||||
*/
|
||||
@Override
|
||||
public void refreshCache() {
|
||||
//清空字典缓存
|
||||
Set keys = redisTemplate.keys(CacheConstant.SYS_DICT_CACHE + "*");
|
||||
Set keys2 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_CACHE + "*");
|
||||
Set keys3 = redisTemplate.keys(CacheConstant.SYS_DEPARTS_CACHE + "*");
|
||||
Set keys4 = redisTemplate.keys(CacheConstant.SYS_DEPART_IDS_CACHE + "*");
|
||||
Set keys5 = redisTemplate.keys( "jmreport:cache:dict*");
|
||||
Set keys6 = redisTemplate.keys( "jmreport:cache:dictTable*");
|
||||
redisTemplate.delete(keys);
|
||||
redisTemplate.delete(keys2);
|
||||
redisTemplate.delete(keys3);
|
||||
redisTemplate.delete(keys4);
|
||||
redisTemplate.delete(keys5);
|
||||
redisTemplate.delete(keys6);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user