package com.oying.modules.system.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.oying.modules.system.domain.Dict; import com.oying.modules.system.domain.DictDetail; import com.oying.modules.system.domain.dto.DictQueryCriteria; import com.oying.modules.system.mapper.DictDetailMapper; import com.oying.modules.system.mapper.DictMapper; import com.oying.utils.*; import lombok.RequiredArgsConstructor; import com.oying.modules.system.service.DictService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; /** * @author Z * @date 2019-04-10 */ @Service @RequiredArgsConstructor public class DictServiceImpl extends ServiceImpl implements DictService { private final DictMapper dictMapper; private final RedisUtils redisUtils; private final DictDetailMapper deleteDetail; private final DictDetailMapper dictDetailMapper; @Override public PageResult queryAll(DictQueryCriteria criteria, Page page){ IPage dicts = dictMapper.findAll(criteria, page); return PageUtil.toPage(dicts); } @Override public List queryAll(DictQueryCriteria criteria) { return dictMapper.findAll(criteria); } @Override @Transactional(rollbackFor = Exception.class) public void create(Dict resources) { save(resources); } @Override @Transactional(rollbackFor = Exception.class) public void update(Dict resources) { // 清理缓存 delCaches(resources); Dict dict = getById(resources.getId()); dict.setName(resources.getName()); dict.setDescription(resources.getDescription()); saveOrUpdate(dict); } @Override @Transactional(rollbackFor = Exception.class) public void delete(Set ids) { // 清理缓存 List dicts = dictMapper.selectBatchIds(ids); for (Dict dict : dicts) { delCaches(dict); } // 删除字典 dictMapper.deleteBatchIds(ids); // 删除字典详情 deleteDetail.deleteByDictBatchIds(ids); } @Override public void download(List dicts, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); for (Dict dict : dicts) { List dictDetails = dictDetailMapper.findByDictName(dict.getName()); if(CollectionUtil.isNotEmpty(dictDetails)){ for (DictDetail dictDetail : dictDetails) { Map map = new LinkedHashMap<>(); map.put("字典名称", dict.getName()); map.put("字典描述", dict.getDescription()); map.put("字典标签", dictDetail.getLabel()); map.put("字典值", dictDetail.getValue()); map.put("创建日期", dictDetail.getCreateTime()); list.add(map); } } else { Map map = new LinkedHashMap<>(); map.put("字典名称", dict.getName()); map.put("字典描述", dict.getDescription()); map.put("字典标签", null); map.put("字典值", null); map.put("创建日期", dict.getCreateTime()); list.add(map); } } FileUtil.downloadExcel(list, response); } public void delCaches(Dict dict){ redisUtils.del(CacheKey.DICT_NAME + dict.getName()); } }