DictDataServiceImpl.java 4.85 KB
package com.lhcredit.project.system.dict.service;

import java.util.List;

import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import com.lhcredit.common.utils.security.ShiroUtils;
import com.lhcredit.common.utils.text.Convert;
import com.lhcredit.project.system.dict.domain.DictData;
import com.lhcredit.project.system.dict.mapper.DictDataMapper;

/**
 * 字典 业务层处理
 */
@Service
public class DictDataServiceImpl implements IDictDataService {
    @Autowired
    private DictDataMapper dictDataMapper;
    private static final String DEMO_CACHE_NAME = "dict";
    /**
     * 根据条件分页查询字典数据
     *
     * @param dictData 字典数据信息
     * @return 字典数据集合信息
     */
    @Override
    public List<DictData> selectDictDataList(DictData dictData) {
        return dictDataMapper.selectDictDataList(dictData);
    }

    /**
     * 获取系统部门转为字典信息
     *
     * @return
     */
    @Override
    public List<DictData> getSysDictData() {
        return dictDataMapper.getSysDictData();
    }

    /**
     * 根据字典类型查询字典数据
     *
     * @param dictType 字典类型
     * @return 字典数据集合信息
     */
    @Override
    @Cacheable(value =DEMO_CACHE_NAME,key="'dict_type_'+#dictType" )
    public List<DictData> selectDictDataByType(String dictType) {
        return dictDataMapper.selectDictDataByType(dictType);
    }

    /**
     * 根据字典类型和字典键值查询字典数据信息
     *
     * @param dictType  字典类型
     * @param dictValue 字典键值
     * @return 字典标签
     */
    @Override
    @Cacheable(value =DEMO_CACHE_NAME,key="'dict_key_value_'+#dictType+'_'+#dictValue" )
    public String selectDictLabel(String dictType, String dictValue) {
//        System.err.println(">>>>>>>>>>");
        return dictDataMapper.selectDictLabel(dictType, dictValue);
    }

    @Override
    @Cacheable(value =DEMO_CACHE_NAME,key="'dict_value_key_'+#dictType+'_'+#dictLabel" )
    public String selectDictValue(String dictType, String dictLabel) {
//        System.err.println("未走缓存");
        return dictDataMapper.selectDictValue(dictType, dictLabel);
    }

    /**
     * 根据字典数据ID查询信息
     *
     * @param dictCode 字典数据ID
     * @return 字典数据
     */
    @Override
    public DictData selectDictDataById(Long dictCode) {
        return dictDataMapper.selectDictDataById(dictCode);
    }

    /**
     * 通过字典ID删除字典数据信息
     *
     * @param dictCode 字典数据ID
     * @return 结果
     */
    @Override
    public int deleteDictDataById(Long dictCode) {
        return dictDataMapper.deleteDictDataById(dictCode);
    }

    /**
     * 批量删除字典数据
     *
     * @param ids 需要删除的数据
     * @return 结果
     */
    @Override
    @CacheEvict(value = DEMO_CACHE_NAME ,allEntries=true)
    public int deleteDictDataByIds(String ids) {
        return dictDataMapper.deleteDictDataByIds(Convert.toStrArray(ids));
    }

    /**
     * 新增保存字典数据信息
     *
     * @param dictData 字典数据信息
     * @return 结果
     */
    @Override
    public int insertDictData(DictData dictData) {
        dictData.setCreateBy(ShiroUtils.getLoginName());
        return dictDataMapper.insertDictData(dictData);
    }

    /**
     * 修改保存字典数据信息
     *
     * @param dictData 字典数据信息
     * @return 结果
     */
    @Override
    @CacheEvict(value = DEMO_CACHE_NAME ,allEntries=true)
    public int updateDictData(DictData dictData) {
        dictData.setUpdateBy(ShiroUtils.getLoginName());
        return dictDataMapper.updateDictData(dictData);
    }


    /**
     * 根据 类型和值 查村字典数据
     *
     * @param dictType
     * @param dictValueArr
     * @return
     */
    @Override
    public List<DictData> selectDictDataByTypeAndVal(String dictType, String[] dictValueArr) {
        return dictDataMapper.selectDictDataByTypeAndVal(dictType,dictValueArr);
    }

    /**
     * 根据 字典value获取lable
     * @param ditType
     * @param dictValue
     * @return
     */
    @Override
    @Cacheable(value = DEMO_CACHE_NAME, key = "'dict_lable_'+#dictType+'_'+#dictValue")
    public String selectDictLable(String ditType ,String dictValue){

//        System.out.println("111111111");

        List<DictData> sysDictData = selectDictDataByType(ditType);
        //
        if (CollectionUtils.isNotEmpty(sysDictData)){
            for (DictData dictData : sysDictData) {
                if (dictData.getDictValue().equals(dictValue))
                    return dictData.getDictLabel();
            }
        }
        return null;
    }
}