package com.pashanhoo.dictionary.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.pashanhoo.common.Result; import com.pashanhoo.dictionary.dao.SysDictMapper; import com.pashanhoo.dictionary.model.dto.SysDict; import com.pashanhoo.dictionary.model.vo.EditDictVo; import com.pashanhoo.dictionary.model.vo.GetSysDictParentVo; import com.pashanhoo.dictionary.model.vo.SysDictVo; import com.pashanhoo.dictionary.service.SysDictService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Service public class SysDictServiceImpl implements SysDictService { @Resource private SysDictMapper sysDictMapper; /** * 查询 * @param dictid * @return */ @Override public int deleteByPrimaryKey(String dictid) { return sysDictMapper.deleteByPrimaryKey(dictid); } /** * 插入 * @param record * @return */ @Override public int insert(SysDict record) { return sysDictMapper.insert(record); } /** * 插入 * @param record * @return */ @Override public int insertSelective(SysDict record) { return sysDictMapper.insertSelective(record); } /** * 查询 * @param dictid * @return */ @Override public SysDict selectByPrimaryKey(String dictid) { return sysDictMapper.selectByPrimaryKey(dictid); } /** * 更新 * @param record * @return */ @Override public int updateByPrimaryKeySelective(SysDict record) { return sysDictMapper.updateByPrimaryKeySelective(record); } /** * 更新 * @param record * @return */ @Override public int updateByPrimaryKey(SysDict record) { return sysDictMapper.updateByPrimaryKey(record); } /** * 批量更新 * @param list * @return */ @Override public int updateBatch(List<SysDict> list) { return sysDictMapper.updateBatch(list); } /** * 批量更新 * @param list * @return */ @Override public int updateBatchSelective(List<SysDict> list) { return sysDictMapper.updateBatchSelective(list); } /** * 批量插入 * @param list * @return */ @Override public int batchInsert(List<SysDict> list) { return sysDictMapper.batchInsert(list); } /** * 获取父级字典表 * @param request * @return */ @Override public PageInfo<GetSysDictParentVo> getSysDictParent(SysDictVo request) { PageHelper.startPage(request.getCurrentPage(), request.getPageSize()); List<GetSysDictParentVo> list = sysDictMapper.getSysDictParent(request); return new PageInfo<>(list); } /** * 根据typeId查询字典表 * @param typeId * @return */ @Override public List<SysDict> getSysDictByTypeId(String typeId) { return sysDictMapper.getSysDictByTypeId(typeId); } /** * root节点只做更新,子节点全部删除再批量插入 * @param request * @return */ @Override @Transactional(rollbackFor = Exception.class) public int editSysDict(EditDictVo request) { List<SysDict> editDicts = request.getEditDicts(); List<SysDict> parent = editDicts.stream().filter(item -> item.getParentId() == null).collect(Collectors.toList()); sysDictMapper.updateByPrimaryKey(parent.get(0)); List<SysDict> dictWithoutParent = editDicts.stream().filter(item -> item.getParentId() != null).collect(Collectors.toList()); List<SysDict> result = new ArrayList<>(); //递归所有子集 List<SysDict> resultList = getAllSysDict(dictWithoutParent,result); //删除除了根目录的所有子集 sysDictMapper.deleteByTypeId(resultList.get(0).getTypeId()); return sysDictMapper.batchInsert(resultList); } /** * 查询所有字典表 * @return */ @Override public List<SysDict> selectAll() { return sysDictMapper.selectAll(); } @Override public Result getSysDictChildByParentCode(String dcode) { List<SysDict> list=sysDictMapper.getSysDictChildByParentCode(dcode); return Result.ok(list); } private List<SysDict> getAllSysDict(List<SysDict> dicts, List<SysDict> result) { for (SysDict SYSDICT : dicts) { List<SysDict> children = SYSDICT.getChildren(); result.add(SYSDICT); if (children != null) { getAllSysDict(children, result); } } return result; } }