package cc.mrbird.febs.server.hr.service.impl;
|
|
import cc.mrbird.febs.common.core.constant.ModuleCode;
|
import cc.mrbird.febs.common.core.entity.DeptTree;
|
import cc.mrbird.febs.common.core.entity.Tree;
|
import cc.mrbird.febs.common.core.entity.constant.PageConstant;
|
import cc.mrbird.febs.common.core.entity.system.Dept;
|
import cc.mrbird.febs.common.core.utils.FebsUtil;
|
import cc.mrbird.febs.common.core.utils.SequenceUtil;
|
import cc.mrbird.febs.common.core.utils.TreeUtil;
|
import cc.mrbird.febs.server.hr.entity.FilesUpload;
|
import cc.mrbird.febs.server.hr.entity.Folder;
|
import cc.mrbird.febs.server.hr.entity.Label;
|
import cc.mrbird.febs.server.hr.mapper.FolderMapper;
|
import cc.mrbird.febs.server.hr.service.IFolderService;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Propagation;
|
import lombok.RequiredArgsConstructor;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import cc.mrbird.febs.common.core.entity.QueryRequest;
|
|
import java.util.*;
|
|
/**
|
* 文件夹 Service实现
|
*
|
* @author yz
|
* @date 2021-02-05 22:51:02
|
*/
|
@Service
|
@RequiredArgsConstructor
|
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
|
public class FolderServiceImpl extends ServiceImpl<FolderMapper, Folder> implements IFolderService {
|
|
private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
|
.map(u -> u.getUserId().toString())
|
.orElse("1");
|
@Override
|
public IPage<Folder> findFolders(QueryRequest request, Folder folder) {
|
LambdaQueryWrapper<Folder> queryWrapper = new LambdaQueryWrapper<>();
|
// TODO 设置查询条件
|
Page<Folder> page = new Page<>(request.getPageNum(), request.getPageSize());
|
return this.page(page, queryWrapper);
|
}
|
|
@Override
|
public Map<String, Object> folderTreeList(QueryRequest request, Folder folder) {
|
Map<String, Object> result = new HashMap<>(2);
|
try {
|
List<Folder> depts = findFolders(folder);
|
List<DeptTree> trees = new ArrayList<>();
|
buildTrees(trees, depts);
|
List<? extends Tree<?>> deptTree = TreeUtil.build(trees);
|
|
result.put(PageConstant.ROWS, deptTree);
|
result.put(PageConstant.TOTAL, depts.size());
|
} catch (Exception e) {
|
log.error("获取部门列表失败", e);
|
result.put(PageConstant.ROWS, null);
|
result.put(PageConstant.TOTAL, 0);
|
}
|
return result;
|
}
|
private void buildTrees(List<DeptTree> trees, List<Folder> depts) {
|
depts.forEach(dept -> {
|
DeptTree tree = new DeptTree();
|
tree.setId(dept.getFolderid().toString());
|
if(dept.getParentId()!=null){
|
tree.setParentId(dept.getParentId().toString());
|
}
|
tree.setLabel(dept.getFoldername());
|
tree.setOrderNum(dept.getSort());
|
trees.add(tree);
|
});
|
}
|
@Override
|
public List<Folder> findFolders(Folder folder) {
|
LambdaQueryWrapper<Folder> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(Folder::getDelFlag,0).orderByAsc(Folder::getSort);
|
return this.baseMapper.selectList(queryWrapper);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void createFolder(Folder folder) {
|
folder.setFolderid(SequenceUtil.generateId(0L, ModuleCode.HR_FIlE));
|
folder.setCreator(operatorId);
|
folder.setModifier(operatorId);
|
folder.setCreatetime(new Date());
|
folder.setModifytime(new Date());
|
folder.setVersion(0);
|
this.save(folder);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void updateFolder(Folder folder) {
|
this.saveOrUpdate(folder);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void deleteFolder(Folder folder) {
|
LambdaUpdateWrapper<Folder> wapper = new LambdaUpdateWrapper<>();
|
wapper.eq(Folder::getFolderid,folder.getFolderid());
|
wapper.set(Folder::getDelFlag,1);
|
wapper.set(Folder::getModifier,operatorId);
|
wapper.set(Folder::getModifytime,new Date());
|
this.update(wapper);
|
}
|
}
|