mirror of https://gitee.com/stylefeng/roses
【标准方法修改】
parent
15ef9bdee4
commit
10a944c2e4
|
@ -17,54 +17,4 @@ import java.util.List;
|
|||
*/
|
||||
public interface DictMapper extends BaseMapper<SysDict> {
|
||||
|
||||
/**
|
||||
* 获取分页字典列表
|
||||
*
|
||||
* @param dictId 字典id
|
||||
* @return 字典列表
|
||||
* @author fengshuonan
|
||||
* @date 2020/10/29 17:21
|
||||
*/
|
||||
SysDict detail(@Param("dictId") Long dictId);
|
||||
|
||||
/**
|
||||
* 获取分页字典列表
|
||||
*
|
||||
* @param page 分页参数
|
||||
* @param dictRequest 查询条件对象
|
||||
* @return 字典列表
|
||||
* @author fengshuonan
|
||||
* @date 2020/10/29 17:21
|
||||
*/
|
||||
List<SysDict> findPage(@Param("page") Page<SysDict> page, @Param("dictRequest") DictRequest dictRequest);
|
||||
|
||||
/**
|
||||
* 获取字典下拉列表,用在新增和修改字典,选择字典的父级
|
||||
* <p>
|
||||
* 当传参数dictId是,查询结果会排除参数dictId字典的所有子级和dictId字典本身
|
||||
*
|
||||
* @param dictId 字典id
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/11 16:35
|
||||
*/
|
||||
List<SysDict> getDictListExcludeSub(@Param("dictId") Long dictId);
|
||||
|
||||
/**
|
||||
* 修改下级字典的pids
|
||||
*
|
||||
* @param parentIdsUpdateRequest 查询条件对象
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/11 17:21
|
||||
*/
|
||||
void updateSubPids(@Param("paramCondition") ParentIdsUpdateRequest parentIdsUpdateRequest);
|
||||
|
||||
/**
|
||||
* 删除自己和下级
|
||||
*
|
||||
* @param dictId 字典id
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/11 16:35
|
||||
*/
|
||||
void deleteSub(@Param("dictId") Long dictId);
|
||||
|
||||
}
|
||||
|
|
|
@ -47,12 +47,12 @@ public interface DictService extends IService<SysDict>, DictApi {
|
|||
/**
|
||||
* 查询字典详情
|
||||
*
|
||||
* @param dictId 字典id
|
||||
* @param dictRequest 字典id
|
||||
* @return 字典的详情
|
||||
* @author fengshuonan
|
||||
* @date 2020/10/30 16:15
|
||||
*/
|
||||
SysDict detail(Long dictId);
|
||||
SysDict detail(DictRequest dictRequest);
|
||||
|
||||
/**
|
||||
* 获取字典列表
|
||||
|
@ -74,16 +74,6 @@ public interface DictService extends IService<SysDict>, DictApi {
|
|||
*/
|
||||
PageResult<SysDict> findPage(DictRequest dictRequest);
|
||||
|
||||
/**
|
||||
* 获取字典下拉列表,用在新增和修改字典,选择字典的父级
|
||||
* <p>
|
||||
* 当传参数dictId是,查询结果会排除参数dictId字典的所有子级和dictId字典本身
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/11 16:35
|
||||
*/
|
||||
List<SysDict> getDictListExcludeSub(Long dictId);
|
||||
|
||||
/**
|
||||
* 获取树形字典列表(antdv在用)
|
||||
*
|
||||
|
@ -94,14 +84,5 @@ public interface DictService extends IService<SysDict>, DictApi {
|
|||
*/
|
||||
List<TreeDictInfo> getTreeDictList(DictRequest dictRequest);
|
||||
|
||||
/**
|
||||
* 字典的code校验重复
|
||||
*
|
||||
* @param dictRequest 查询条件
|
||||
* @return true-code没有重复,false-code存在重复
|
||||
* @author fengshuonan
|
||||
* @date 2020/10/29 18:50
|
||||
*/
|
||||
boolean validateCodeAvailable(DictRequest dictRequest);
|
||||
|
||||
}
|
||||
|
|
|
@ -81,13 +81,4 @@ public interface DictTypeService extends IService<SysDictType> {
|
|||
*/
|
||||
PageResult<SysDictType> findPage(DictTypeRequest dictTypeRequest);
|
||||
|
||||
/**
|
||||
* code校验重复
|
||||
*
|
||||
* @param dictTypeRequest 字典类型请求
|
||||
* @return true-没有重复,false-有重复的
|
||||
* @author fengshuonan
|
||||
* @date 2020/10/29 18:56
|
||||
*/
|
||||
boolean validateCodeAvailable(DictTypeRequest dictTypeRequest);
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import cn.stylefeng.roses.kernel.dict.api.exception.DictException;
|
|||
import cn.stylefeng.roses.kernel.dict.api.exception.enums.DictExceptionEnum;
|
||||
import cn.stylefeng.roses.kernel.dict.api.pojo.dict.request.ParentIdsUpdateRequest;
|
||||
import cn.stylefeng.roses.kernel.dict.modular.entity.SysDict;
|
||||
import cn.stylefeng.roses.kernel.dict.modular.entity.SysDictType;
|
||||
import cn.stylefeng.roses.kernel.dict.modular.mapper.DictMapper;
|
||||
import cn.stylefeng.roses.kernel.dict.modular.pojo.TreeDictInfo;
|
||||
import cn.stylefeng.roses.kernel.dict.modular.pojo.request.DictRequest;
|
||||
|
@ -50,119 +51,56 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, SysDict> implements
|
|||
@Resource
|
||||
private PinYinApi pinYinApi;
|
||||
|
||||
@Resource
|
||||
private DictMapper dictMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void add(DictRequest dictRequest) {
|
||||
|
||||
// 如果父节点为空,则填充为默认的父节点id
|
||||
if (dictRequest.getDictParentId() == null) {
|
||||
dictRequest.setDictParentId(DictConstants.DEFAULT_DICT_PARENT_ID);
|
||||
}
|
||||
|
||||
// 如果父节点不为空,并且不是-1,则判断父节点存不存在,防止脏数据
|
||||
else {
|
||||
if (!DictConstants.DEFAULT_DICT_PARENT_ID.equals(dictRequest.getDictParentId())) {
|
||||
DictRequest tempParam = new DictRequest();
|
||||
tempParam.setDictId(dictRequest.getDictParentId());
|
||||
this.querySysDict(tempParam);
|
||||
}
|
||||
}
|
||||
|
||||
// 赋值pids
|
||||
setPids(dictRequest);
|
||||
|
||||
// dto转化为实体
|
||||
SysDict sysDict = new SysDict();
|
||||
BeanUtil.copyProperties(dictRequest, sysDict);
|
||||
|
||||
// dictId是自动生成
|
||||
sysDict.setDictId(null);
|
||||
|
||||
// 设置状态启用
|
||||
sysDict.setDictParentId(DictConstants.DEFAULT_DICT_PARENT_ID);
|
||||
sysDict.setDictPids(StrUtil.BRACKET_START + DictConstants.DEFAULT_DICT_PARENT_ID + StrUtil.BRACKET_END + StrUtil.COMMA);
|
||||
sysDict.setStatusFlag(StatusEnum.ENABLE.getCode());
|
||||
sysDict.setDelFlag(YesOrNotEnum.N.getCode());
|
||||
|
||||
// 设置拼音
|
||||
sysDict.setDictNamePinyin(pinYinApi.parseEveryPinyinFirstLetter(sysDict.getDictName()));
|
||||
|
||||
this.baseMapper.insert(sysDict);
|
||||
this.save(sysDict);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void del(DictRequest dictRequest) {
|
||||
//删除自己和下级
|
||||
dictMapper.deleteSub(dictRequest.getDictId());
|
||||
SysDict sysDict = this.querySysDict(dictRequest);
|
||||
sysDict.setDelFlag(YesOrNotEnum.Y.getCode());
|
||||
this.updateById(sysDict);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void edit(DictRequest dictRequest) {
|
||||
|
||||
SysDict oldSysDict = this.querySysDict(dictRequest);
|
||||
SysDict sysDict = this.querySysDict(dictRequest);
|
||||
BeanUtil.copyProperties(dictRequest, sysDict);
|
||||
|
||||
// 不能修改字典类型和编码
|
||||
dictRequest.setDictTypeCode(null);
|
||||
dictRequest.setDictCode(null);
|
||||
sysDict.setDictTypeCode(null);
|
||||
sysDict.setDictCode(null);
|
||||
sysDict.setDictNamePinyin(pinYinApi.parseEveryPinyinFirstLetter(sysDict.getDictName()));
|
||||
|
||||
// 赋值pids,如果更新了pid,则字典的子pid都要更新
|
||||
setPids(dictRequest);
|
||||
if (!oldSysDict.getDictParentId().equals(dictRequest.getDictParentId())) {
|
||||
updateSubPids(dictRequest, oldSysDict);
|
||||
}
|
||||
|
||||
// model转化为entity
|
||||
BeanUtil.copyProperties(dictRequest, oldSysDict, CopyOptions.create().setIgnoreNullValue(true));
|
||||
|
||||
// 设置拼音
|
||||
oldSysDict.setDictNamePinyin(pinYinApi.parseEveryPinyinFirstLetter(oldSysDict.getDictName()));
|
||||
|
||||
this.updateById(oldSysDict);
|
||||
this.updateById(sysDict);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysDict detail(Long dictId) {
|
||||
SysDict dict = this.baseMapper.detail(dictId);
|
||||
// 获取父节点字典名称
|
||||
if (dict.getDictParentId().equals(TreeConstants.DEFAULT_PARENT_ID)) {
|
||||
dict.setParentName("顶级");
|
||||
} else {
|
||||
SysDict parentDict = this.getById(dict.getDictParentId());
|
||||
dict.setParentName(ObjectUtil.isNotEmpty(parentDict) ? parentDict.getDictName() : "");
|
||||
}
|
||||
return dict;
|
||||
public SysDict detail(DictRequest dictRequest) {
|
||||
return this.getOne(this.createWrapper(dictRequest), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysDict> findList(DictRequest dictRequest) {
|
||||
if (dictRequest == null) {
|
||||
dictRequest = new DictRequest();
|
||||
}
|
||||
|
||||
return baseMapper.findPage(null, dictRequest);
|
||||
return this.list(this.createWrapper(dictRequest));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<SysDict> findPage(DictRequest dictRequest) {
|
||||
if (dictRequest == null) {
|
||||
dictRequest = new DictRequest();
|
||||
}
|
||||
|
||||
Page<SysDict> page = PageFactory.defaultPage();
|
||||
List<SysDict> list = baseMapper.findPage(page, dictRequest);
|
||||
page.setRecords(list);
|
||||
Page<SysDict> page = this.page(PageFactory.defaultPage(), this.createWrapper(dictRequest));
|
||||
return PageResultFactory.createPageResult(page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysDict> getDictListExcludeSub(Long dictId) {
|
||||
if (dictId != null) {
|
||||
return dictMapper.getDictListExcludeSub(dictId);
|
||||
}
|
||||
return this.list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TreeDictInfo> getTreeDictList(DictRequest dictRequest) {
|
||||
|
@ -188,25 +126,6 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, SysDict> implements
|
|||
return new DefaultTreeBuildFactory<TreeDictInfo>().doTreeBuild(treeDictInfos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateCodeAvailable(DictRequest dictRequest) {
|
||||
|
||||
// 判断编码是否重复
|
||||
LambdaQueryWrapper<SysDict> codeRepeatWrapper = new LambdaQueryWrapper<>();
|
||||
codeRepeatWrapper.eq(SysDict::getDictCode, dictRequest.getDictCode());
|
||||
|
||||
// 如果传了字典id代表是编辑字典
|
||||
if (ObjectUtil.isNotEmpty(dictRequest.getDictId())) {
|
||||
codeRepeatWrapper.and(i -> i.ne(SysDict::getDictId, dictRequest.getDictId()));
|
||||
}
|
||||
|
||||
// 如果重复,抛出异常
|
||||
int codeCount = this.baseMapper.selectCount(codeRepeatWrapper);
|
||||
|
||||
// 如果是小于等于0,则这个编码可以用
|
||||
return codeCount <= 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDictName(String dictTypeCode, String dictCode) {
|
||||
LambdaQueryWrapper<SysDict> sysDictLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
|
@ -259,65 +178,6 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, SysDict> implements
|
|||
this.removeById(dictId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量修改pids的请求
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/26 12:19
|
||||
*/
|
||||
private static ParentIdsUpdateRequest createParenIdsUpdateRequest(String newParentIds, String oldParentIds) {
|
||||
ParentIdsUpdateRequest parentIdsUpdateRequest = new ParentIdsUpdateRequest();
|
||||
parentIdsUpdateRequest.setNewParentIds(newParentIds);
|
||||
parentIdsUpdateRequest.setOldParentIds(oldParentIds);
|
||||
parentIdsUpdateRequest.setUpdateTime(new Date());
|
||||
parentIdsUpdateRequest.setUpdateUser(LoginContext.me().getLoginUser().getUserId());
|
||||
return parentIdsUpdateRequest;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改pids,如果pids字段发生了变化,则子字典的所有pids都要变化
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/11 上午9:48
|
||||
*/
|
||||
private void updateSubPids(DictRequest dictRequest, SysDict oldSysDict) {
|
||||
|
||||
// 被替换的表达式,也就是通过这个条件匹配当前修改的字典的所有子字典,包含子字典的字典( pids + [pid] + , )
|
||||
String beReplacedRegex = oldSysDict.getDictPids()
|
||||
+ SymbolConstant.LEFT_SQUARE_BRACKETS + oldSysDict.getDictId() + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
||||
|
||||
// 新的表达式
|
||||
String newReplace = dictRequest.getDictPids();
|
||||
|
||||
// 更新所有子字典的pids字段
|
||||
ParentIdsUpdateRequest parentIdsUpdateRequest = createParenIdsUpdateRequest(newReplace, beReplacedRegex);
|
||||
dictMapper.updateSubPids(parentIdsUpdateRequest);
|
||||
}
|
||||
|
||||
/**
|
||||
* 给pids赋值
|
||||
* <p>
|
||||
* 如果pid是顶级节点,pids就是 [-1],
|
||||
* <p>
|
||||
* 如果pid不是顶级节点,pids就是父节点的pids + [pid] + ,
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/11 上午9:48
|
||||
*/
|
||||
private void setPids(DictRequest dictRequest) {
|
||||
Long dictParentId = dictRequest.getDictParentId();
|
||||
if (DictConstants.DEFAULT_DICT_PARENT_ID.equals(dictParentId)) {
|
||||
String pids = SymbolConstant.LEFT_SQUARE_BRACKETS + DictConstants.DEFAULT_DICT_PARENT_ID + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
||||
dictRequest.setDictPids(pids);
|
||||
} else {
|
||||
SysDict parentSysDict = dictMapper.selectById(dictParentId);
|
||||
if (parentSysDict != null) {
|
||||
String pids = parentSysDict.getDictPids() + SymbolConstant.LEFT_SQUARE_BRACKETS + dictRequest.getDictParentId() + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
||||
dictRequest.setDictPids(pids);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取详细信息
|
||||
*
|
||||
|
@ -340,6 +200,9 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, SysDict> implements
|
|||
*/
|
||||
private LambdaQueryWrapper<SysDict> createWrapper(DictRequest dictRequest) {
|
||||
LambdaQueryWrapper<SysDict> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
// SQL拼接
|
||||
queryWrapper.eq(ObjectUtil.isNotNull(dictRequest.getDictId()), SysDict::getDictId, dictRequest.getDictId());
|
||||
queryWrapper.eq(StrUtil.isNotBlank(dictRequest.getDictTypeCode()), SysDict::getDictTypeCode, dictRequest.getDictTypeCode());
|
||||
queryWrapper.eq(StrUtil.isNotBlank(dictRequest.getDictCode()), SysDict::getDictCode, dictRequest.getDictCode());
|
||||
queryWrapper.like(StrUtil.isNotBlank(dictRequest.getDictName()), SysDict::getDictName, dictRequest.getDictName());
|
||||
|
|
Loading…
Reference in New Issue