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 { @Autowired private SysDictTypeService dictTypeService; public List page(QueryFilter queryFilter) { return query(queryFilter); } public List getByType(Long dictTypeId) { return baseDao.selectList(new QueryWrapper().eq(Constant.TableColumn.IS_DELETE, Constant.Bool.NO) .lambda().eq(SysDictData::getDictTypeId, dictTypeId).orderByAsc(SysDictData::getSort)); } public List getByTypes(Set dictTypeIds) { return baseDao.selectList(new QueryWrapper().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 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);// 清除缓存 } }