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);// 清除缓存 
 | 
    } 
 | 
} 
 |