Files
youlai-boot/src/main/java/com/youlai/system/service/impl/SysDictServiceImpl.java
2023-04-29 17:49:07 +08:00

186 lines
5.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.youlai.system.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.converter.DictConverter;
import com.youlai.system.mapper.SysDictMapper;
import com.youlai.system.pojo.entity.SysDict;
import com.youlai.system.pojo.form.DictForm;
import com.youlai.system.pojo.query.DictPageQuery;
import com.youlai.system.pojo.vo.DictPageVO;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.service.SysDictService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 数据字典项业务实现类
*
* @author haoxr
* @date 2022/10/12
*/
@Service
@RequiredArgsConstructor
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements SysDictService {
private final DictConverter dictConverter;
/**
* 字典数据项分页列表
*
* @param queryParams
* @return
*/
@Override
public Page<DictPageVO> getDictPage(DictPageQuery queryParams) {
// 查询参数
int pageNum = queryParams.getPageNum();
int pageSize = queryParams.getPageSize();
String keywords = queryParams.getKeywords();
String typeCode = queryParams.getTypeCode();
// 查询数据
Page<SysDict> dictItemPage = this.page(
new Page<>(pageNum, pageSize),
new LambdaQueryWrapper<SysDict>()
.like(StrUtil.isNotBlank(keywords), SysDict::getName, keywords)
.eq(StrUtil.isNotBlank(typeCode), SysDict::getTypeCode, typeCode)
.select(SysDict::getId, SysDict::getName, SysDict::getValue, SysDict::getStatus)
);
// 实体转换
Page<DictPageVO> pageResult = dictConverter.entity2Page(dictItemPage);
return pageResult;
}
/**
* 字典数据项表单详情
*
* @param id 字典数据项ID
* @return
*/
@Override
public DictForm getDictForm(Long id) {
// 获取entity
SysDict entity = this.getOne(new LambdaQueryWrapper<SysDict>()
.eq(SysDict::getId, id)
.select(
SysDict::getId,
SysDict::getTypeCode,
SysDict::getName,
SysDict::getValue,
SysDict::getStatus,
SysDict::getSort,
SysDict::getRemark
));
Assert.isTrue(entity != null, "字典数据项不存在");
// 实体转换
DictForm dictForm = dictConverter.entity2Form(entity);
return dictForm;
}
/**
* 新增字典数据项
*
* @param dictForm 字典数据项表单
* @return
*/
@Override
public boolean saveDict(DictForm dictForm) {
// 实体对象转换 form->entity
SysDict entity = dictConverter.form2Entity(dictForm);
// 持久化
boolean result = this.save(entity);
return result;
}
/**
* 修改字典数据项
*
* @param id 字典数据项ID
* @param dictForm 字典数据项表单
* @return
*/
@Override
public boolean updateDict(Long id, DictForm dictForm) {
SysDict entity = dictConverter.form2Entity(dictForm);
boolean result = this.updateById(entity);
return result;
}
/**
* 删除字典数据项
*
* @param idsStr 字典数据项ID多个以英文逗号(,)分割
* @return
*/
@Override
public boolean deleteDict(String idsStr) {
Assert.isTrue(StrUtil.isNotBlank(idsStr), "删除数据为空");
//
List<Long> ids = Arrays.asList(idsStr.split(","))
.stream()
.map(id -> Long.parseLong(id))
.collect(Collectors.toList());
// 删除字典数据项
boolean result = this.removeByIds(ids);
return result;
}
/**
* 获取字典下拉列表
*
* @param typeCode
* @return
*/
@Override
public List<Option> listDictOptions(String typeCode) {
// 数据字典项
List<SysDict> dictList = this.list(new LambdaQueryWrapper<SysDict>()
.eq(SysDict::getTypeCode, typeCode)
.select(SysDict::getValue, SysDict::getName)
);
// 转换下拉数据
List<Option> options = CollectionUtil.emptyIfNull(dictList)
.stream()
.map(dictItem -> new Option(dictItem.getValue(), dictItem.getName()))
.collect(Collectors.toList());
return options;
}
/**
* 修改字典类型编码(多数据源测试)
*
* @param originalTypeCode
* @param newTypeCode
* @return
*/
@DS("slave")
@Override
public boolean updateSlave(String originalTypeCode, String newTypeCode) {
boolean result = this.update(new LambdaUpdateWrapper<SysDict>()
.eq(SysDict::getTypeCode, originalTypeCode)
.set(SysDict::getTypeCode, newTypeCode)
);
return result;
}
}