jinlin
2024-01-10 cdf29a8f6fb9990f82ccc1d3f47bfba48cfaf4fc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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);// 清除缓存
    }
}