package com.zzg.system.service.system.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.zzg.common.core.domain.entity.system.SysDictData;
|
import com.zzg.common.utils.DictUtils;
|
import com.zzg.common.utils.uuid.IdUtils;
|
import com.zzg.system.mapper.system.SysDictDataMapper;
|
import com.zzg.system.service.system.ISysDictDataService;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 字典 业务层处理
|
*
|
* @author ruoyi
|
*/
|
@Service
|
public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService {
|
@Resource
|
private SysDictDataMapper dictDataMapper;
|
|
/**
|
* 根据条件分页查询字典数据
|
*
|
* @param dictData 字典数据信息
|
* @return 字典数据集合信息
|
*/
|
@Override
|
public List<SysDictData> selectDictDataList(SysDictData dictData) {
|
return dictDataMapper.selectDictDataList(dictData);
|
}
|
|
/**
|
* 根据字典类型和字典键值查询字典数据信息
|
*
|
* @param dictType 字典类型
|
* @param dictValue 字典键值
|
* @return 字典标签
|
*/
|
@Override
|
public String selectDictLabel(String dictType, String dictValue) {
|
return dictDataMapper.selectDictLabel(dictType, dictValue);
|
}
|
|
/**
|
* 根据字典数据ID查询信息
|
*
|
* @param dictCode 字典数据ID
|
* @return 字典数据
|
*/
|
@Override
|
public SysDictData selectDictDataById(String dictCode) {
|
return dictDataMapper.selectDictDataById(dictCode);
|
}
|
|
/**
|
* 批量删除字典数据信息
|
*
|
* @param dictCodes 需要删除的字典数据ID
|
*/
|
@Override
|
public void deleteDictDataByIds(String[] dictCodes) {
|
for (String dictCode : dictCodes) {
|
SysDictData data = selectDictDataById(dictCode);
|
dictDataMapper.deleteDictDataById(dictCode);
|
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
|
DictUtils.setDictCache(data.getDictType(), dictDatas);
|
}
|
}
|
|
/**
|
* 新增保存字典数据信息
|
*
|
* @param data 字典数据信息
|
* @return 结果
|
*/
|
@Override
|
public int insertDictData(SysDictData data) {
|
data.setDictCode(IdUtils.fastSimpleUUID());
|
int row = dictDataMapper.insertDictData(data);
|
if (row > 0) {
|
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
|
DictUtils.setDictCache(data.getDictType(), dictDatas);
|
}
|
return row;
|
}
|
|
/**
|
* 修改保存字典数据信息
|
*
|
* @param data 字典数据信息
|
* @return 结果
|
*/
|
@Override
|
public int updateDictData(SysDictData data) {
|
int row = dictDataMapper.updateDictData(data);
|
if (row > 0) {
|
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
|
DictUtils.setDictCache(data.getDictType(), dictDatas);
|
}
|
return row;
|
}
|
|
@Override
|
public List<SysDictData> getList(SysDictData dictData) {
|
List<SysDictData> dataList = lambdaQuery().eq(SysDictData::getParentCode, "0")
|
.like(StringUtils.isNotEmpty(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
|
.like(StringUtils.isNotEmpty(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
|
.eq(dictData.getStatus() != null, SysDictData::getStatus, dictData.getStatus())
|
.orderByAsc(SysDictData::getDictSort).list();
|
|
if (dataList != null && !dataList.isEmpty()) {
|
//所有父级code
|
List<String> codes = dataList.stream().map(SysDictData::getDictCode).collect(Collectors.toList());
|
|
List<SysDictData> childs = Optional.ofNullable(this.list(new LambdaQueryWrapper<SysDictData>()
|
.in(SysDictData::getParentCode, codes))).orElse(new ArrayList<>());
|
if (!childs.isEmpty()) {
|
Map<String, List<SysDictData>> listMap = childs.stream().collect(Collectors.groupingBy(SysDictData::getParentCode));
|
for (SysDictData data : dataList) {
|
List<SysDictData> childList = Optional.ofNullable(listMap.get(data.getDictCode())).orElse(new ArrayList<>());
|
data.setChildList(childList.stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList()));
|
}
|
}
|
}
|
|
return dataList;
|
}
|
}
|