| package com.zt.modules.sys.service; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.zt.common.constant.CacheKey; | 
| import com.zt.common.constant.Constant; | 
| import com.zt.common.db.query.QueryFilter; | 
| import com.zt.common.service.BaseService; | 
| import com.zt.common.utils.CacheUtils; | 
| import com.zt.core.sys.dto.DictItemDto; | 
| import com.zt.modules.sys.dao.SysDictDataDao; | 
| import com.zt.modules.sys.model.SysDictData; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.util.Comparator; | 
| import java.util.List; | 
| import java.util.Set; | 
|   | 
| /** | 
|  * 数据字典 | 
|  * | 
|  * @author hehz | 
|  */ | 
| @Service | 
| public class SysDictDataService extends BaseService<SysDictDataDao, SysDictData> { | 
|   | 
|     @Autowired | 
|     private SysDictTypeService dictTypeService; | 
|   | 
|     public List<SysDictData> page(QueryFilter queryFilter) { | 
|         return query(queryFilter); | 
|     } | 
|   | 
|     public List<SysDictData> getByType(Long dictTypeId) { | 
|         return baseDao.selectList(new QueryWrapper<SysDictData>().eq(Constant.TableColumn.IS_DELETE, Constant.Bool.NO) | 
|                 .lambda().eq(SysDictData::getDictTypeId, dictTypeId).orderByAsc(SysDictData::getSort)); | 
|     } | 
|   | 
|     public List<SysDictData> getByTypes(Set<Long> dictTypeIds) { | 
|         return baseDao.selectList(new QueryWrapper<SysDictData>().eq(Constant.TableColumn.IS_DELETE, Constant.Bool.NO) | 
|                 .lambda().in(SysDictData::getDictTypeId, dictTypeIds).orderByAsc(SysDictData::getSort)); | 
|     } | 
|   | 
|     @Transactional(rollbackFor = Exception.class) | 
|     public void insert(SysDictData entity) { | 
|         if (entity.getDictValue()==null ||entity.getDictValue()==0) { | 
|             Integer maxId = 0; | 
|             List<DictItemDto> dictDataList = dictTypeService.getDictItemsOfDictTree(entity.getDictTypeId()); | 
|             if (dictDataList.size() > 0) { | 
|                 maxId = Integer.parseInt(dictDataList.stream() | 
|                         .max(Comparator.comparingLong(item -> Integer.parseInt(item.getDictValue()))).get().getDictValue()); | 
|             } | 
|             entity.setDictValue(maxId + 1);// value自动+1 | 
|         } | 
|         super.insert(entity); | 
|         CacheUtils.remove(Constant.Cache.SYS, CacheKey.SYS_DICT);// 清除缓存 | 
|     } | 
|   | 
|     @Override | 
|     public void update(SysDictData entity) { | 
|         super.update(entity); | 
|   | 
|         CacheUtils.remove(Constant.Cache.SYS, CacheKey.SYS_DICT);// 清除缓存 | 
|     } | 
|   | 
|     @Override | 
|     public void deleteLogic(Long[] ids) { | 
|         super.deleteLogic(ids); | 
|   | 
|         CacheUtils.remove(Constant.Cache.SYS, CacheKey.SYS_DICT);// 清除缓存 | 
|     } | 
| } |