|
@@ -1,23 +1,28 @@
|
|
|
package com.zhongzheng.modules.top.user.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.lang.Validator;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.github.pagehelper.Page;
|
|
|
-import com.zhongzheng.modules.top.user.bo.TopSysDictTypeAddBo;
|
|
|
-import com.zhongzheng.modules.top.user.bo.TopSysDictTypeEditBo;
|
|
|
-import com.zhongzheng.modules.top.user.bo.TopSysDictTypeQueryBo;
|
|
|
+import com.zhongzheng.common.constant.UserConstants;
|
|
|
+import com.zhongzheng.common.core.domain.entity.SysDictData;
|
|
|
+import com.zhongzheng.common.exception.CustomException;
|
|
|
+import com.zhongzheng.common.utils.DictUtils;
|
|
|
+import com.zhongzheng.modules.top.user.domain.TopSysDictData;
|
|
|
import com.zhongzheng.modules.top.user.domain.TopSysDictType;
|
|
|
+import com.zhongzheng.modules.top.user.mapper.TopSysDictDataMapper;
|
|
|
import com.zhongzheng.modules.top.user.mapper.TopSysDictTypeMapper;
|
|
|
import com.zhongzheng.modules.top.user.service.ITopSysDictTypeService;
|
|
|
-import com.zhongzheng.modules.top.user.vo.TopSysDictTypeVo;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.Collection;
|
|
|
-import java.util.Date;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -29,72 +34,146 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class TopSysDictTypeServiceImpl extends ServiceImpl<TopSysDictTypeMapper, TopSysDictType> implements ITopSysDictTypeService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private TopSysDictDataMapper dictDataMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据条件分页查询字典类型
|
|
|
+ *
|
|
|
+ * @param dictType 字典类型信息
|
|
|
+ * @return 字典类型集合信息
|
|
|
+ */
|
|
|
@Override
|
|
|
- public TopSysDictTypeVo queryById(Long dictId){
|
|
|
- TopSysDictType db = this.baseMapper.selectById(dictId);
|
|
|
- return BeanUtil.toBean(db, TopSysDictTypeVo.class);
|
|
|
+ public List<TopSysDictType> selectDictTypeList(TopSysDictType dictType) {
|
|
|
+ Map<String, Object> params = dictType.getParams();
|
|
|
+ return list(new LambdaQueryWrapper<TopSysDictType>()
|
|
|
+ .like(StrUtil.isNotBlank(dictType.getDictName()),TopSysDictType::getDictName, dictType.getDictName())
|
|
|
+ .eq(StrUtil.isNotBlank(dictType.getStatus()),TopSysDictType::getStatus, dictType.getStatus())
|
|
|
+ .in(dictType.getStatusArray()!=null,TopSysDictType::getStatus, dictType.getStatusArray())
|
|
|
+ .like(StrUtil.isNotBlank(dictType.getDictType()),TopSysDictType::getDictType, dictType.getDictType())
|
|
|
+ .apply(Validator.isNotEmpty(params.get("beginTime")),
|
|
|
+ "date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
|
|
|
+ params.get("beginTime"))
|
|
|
+ .apply(Validator.isNotEmpty(params.get("endTime")),
|
|
|
+ "date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
|
|
|
+ params.get("endTime")));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据字典类型ID查询信息
|
|
|
+ *
|
|
|
+ * @param dictId 字典类型ID
|
|
|
+ * @return 字典类型
|
|
|
+ */
|
|
|
@Override
|
|
|
- public List<TopSysDictTypeVo> queryList(TopSysDictTypeQueryBo bo) {
|
|
|
- LambdaQueryWrapper<TopSysDictType> lqw = Wrappers.lambdaQuery();
|
|
|
- lqw.like(StrUtil.isNotBlank(bo.getDictName()), TopSysDictType::getDictName, bo.getDictName());
|
|
|
- lqw.eq(StrUtil.isNotBlank(bo.getDictType()), TopSysDictType::getDictType, bo.getDictType());
|
|
|
- lqw.eq(StrUtil.isNotBlank(bo.getStatus()), TopSysDictType::getStatus, bo.getStatus());
|
|
|
- return entity2Vo(this.list(lqw));
|
|
|
+ public TopSysDictType selectDictTypeById(Long dictId) {
|
|
|
+ return getById(dictId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 实体类转化成视图对象
|
|
|
- *
|
|
|
- * @param collection 实体类集合
|
|
|
- * @return
|
|
|
- */
|
|
|
- private List<TopSysDictTypeVo> entity2Vo(Collection<TopSysDictType> collection) {
|
|
|
- List<TopSysDictTypeVo> voList = collection.stream()
|
|
|
- .map(any -> BeanUtil.toBean(any, TopSysDictTypeVo.class))
|
|
|
- .collect(Collectors.toList());
|
|
|
- if (collection instanceof Page) {
|
|
|
- Page<TopSysDictType> page = (Page<TopSysDictType>)collection;
|
|
|
- Page<TopSysDictTypeVo> pageVo = new Page<>();
|
|
|
- BeanUtil.copyProperties(page,pageVo);
|
|
|
- pageVo.addAll(voList);
|
|
|
- voList = pageVo;
|
|
|
+ * 批量删除字典类型信息
|
|
|
+ *
|
|
|
+ * @param dictIds 需要删除的字典ID
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int deleteDictTypeByIds(Long[] dictIds) {
|
|
|
+ for (Long dictId : dictIds) {
|
|
|
+ TopSysDictType dictType = selectDictTypeById(dictId);
|
|
|
+ if (dictDataMapper.selectCount(new LambdaQueryWrapper<TopSysDictData>()
|
|
|
+ .eq(TopSysDictData::getDictType, dictType.getDictType())) > 0) {
|
|
|
+ throw new CustomException(String.format("%1$s已分配,不能删除", dictType.getDictName()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ int count = baseMapper.deleteBatchIds(Arrays.asList(dictIds));
|
|
|
+ if (count > 0) {
|
|
|
+ DictUtils.clearDictCache();
|
|
|
}
|
|
|
- return voList;
|
|
|
+ return count;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 清空缓存数据
|
|
|
+ */
|
|
|
@Override
|
|
|
- public Boolean insertByAddBo(TopSysDictTypeAddBo bo) {
|
|
|
- TopSysDictType add = BeanUtil.toBean(bo, TopSysDictType.class);
|
|
|
- validEntityBeforeSave(add);
|
|
|
- add.setCreateTime(new Date());
|
|
|
- add.setUpdateTime(new Date());
|
|
|
- return this.save(add);
|
|
|
+ public void clearCache() {
|
|
|
+ DictUtils.clearDictCache();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 新增保存字典类型信息
|
|
|
+ *
|
|
|
+ * @param dictType 字典类型信息
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
@Override
|
|
|
- public Boolean updateByEditBo(TopSysDictTypeEditBo bo) {
|
|
|
- TopSysDictType update = BeanUtil.toBean(bo, TopSysDictType.class);
|
|
|
- validEntityBeforeSave(update);
|
|
|
- update.setUpdateTime(new Date());
|
|
|
- return this.updateById(update);
|
|
|
+ public int insertDictType(TopSysDictType dictType) {
|
|
|
+ int row = baseMapper.insert(dictType);
|
|
|
+ if (row > 0) {
|
|
|
+ DictUtils.clearDictCache();
|
|
|
+ }
|
|
|
+ return row;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 保存前的数据校验
|
|
|
+ * 根据字典类型查询字典数据
|
|
|
*
|
|
|
- * @param entity 实体类数据
|
|
|
+ * @param dictType 字典类型
|
|
|
+ * @return 字典数据集合信息
|
|
|
*/
|
|
|
- private void validEntityBeforeSave(TopSysDictType entity){
|
|
|
- //TODO 做一些数据校验,如唯一约束
|
|
|
+ @Override
|
|
|
+ public List<TopSysDictData> selectDictDataByType(String dictType) {
|
|
|
+ List<SysDictData> dictDatas = DictUtils.getTopDictCache(dictType);
|
|
|
+ if (CollUtil.isNotEmpty(dictDatas)) {
|
|
|
+ return dictDatas.stream().map(item -> BeanUtil.toBean(item,TopSysDictData.class)).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ List<TopSysDictData> dictDataList = dictDataMapper.selectList(new LambdaQueryWrapper<TopSysDictData>()
|
|
|
+ .eq(TopSysDictData::getStatus, 0)
|
|
|
+ .eq(TopSysDictData::getDictType, dictType)
|
|
|
+ .orderByAsc(TopSysDictData::getDictSort));
|
|
|
+ if (CollUtil.isNotEmpty(dictDataList)) {
|
|
|
+ DictUtils.setTopDictCache(dictType, dictDataList.stream().map(item -> BeanUtil.toBean(item,SysDictData.class)).collect(Collectors.toList()));
|
|
|
+ return dictDataList;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 修改保存字典类型信息
|
|
|
+ *
|
|
|
+ * @param dictType 字典类型信息
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public int updateDictType(TopSysDictType dictType) {
|
|
|
+ TopSysDictType oldDict = getById(dictType.getDictId());
|
|
|
+ dictDataMapper.update(null, new LambdaUpdateWrapper<TopSysDictData>()
|
|
|
+ .set(TopSysDictData::getDictType, dictType.getDictType())
|
|
|
+ .eq(TopSysDictData::getDictType, oldDict.getDictType()));
|
|
|
+ int row = baseMapper.updateById(dictType);
|
|
|
+ if (row > 0) {
|
|
|
+ DictUtils.clearDictCache();
|
|
|
+ }
|
|
|
+ return row;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 校验字典类型称是否唯一
|
|
|
+ *
|
|
|
+ * @param dict 字典类型
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
@Override
|
|
|
- public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
|
- if(isValid){
|
|
|
- //TODO 做一些业务上的校验,判断是否需要校验
|
|
|
+ public String checkDictTypeUnique(TopSysDictType dict) {
|
|
|
+ Long dictId = Validator.isNull(dict.getDictId()) ? -1L : dict.getDictId();
|
|
|
+ TopSysDictType dictType = getOne(new LambdaQueryWrapper<TopSysDictType>()
|
|
|
+ .eq(TopSysDictType::getDictType, dict.getDictType())
|
|
|
+ .last("limit 1"));
|
|
|
+ if (Validator.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) {
|
|
|
+ return UserConstants.NOT_UNIQUE;
|
|
|
}
|
|
|
- return this.removeByIds(ids);
|
|
|
+ return UserConstants.UNIQUE;
|
|
|
}
|
|
|
}
|