| | |
| | | package cc.mrbird.febs.server.system.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.QueryRequest; |
| | | import cc.mrbird.febs.common.core.entity.Tree; |
| | | import cc.mrbird.febs.common.core.entity.constant.FebsConstant; |
| | | import cc.mrbird.febs.common.core.entity.constant.PageConstant; |
| | | import cc.mrbird.febs.common.core.entity.constant.StringConstant; |
| | | import cc.mrbird.febs.common.core.entity.system.Dept; |
| | | import cc.mrbird.febs.common.core.entity.system.DicItem; |
| | | import cc.mrbird.febs.common.core.entity.system.UserDataPermission; |
| | | import cc.mrbird.febs.common.core.utils.FebsUtil; |
| | | import cc.mrbird.febs.common.core.utils.SequenceUtil; |
| | | import cc.mrbird.febs.common.core.utils.SortUtil; |
| | | import cc.mrbird.febs.common.core.utils.TreeUtil; |
| | | import cc.mrbird.febs.common.redis.service.RedisService; |
| | | import cc.mrbird.febs.server.system.mapper.DeptMapper; |
| | | import cc.mrbird.febs.server.system.service.IDeptService; |
| | | import cc.mrbird.febs.server.system.service.IUserDataPermissionService; |
| | |
| | | @RequiredArgsConstructor |
| | | @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) |
| | | public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements IDeptService { |
| | | |
| | | private final RedisService redisService; |
| | | private final IUserDataPermissionService userDataPermissionService; |
| | | private final DeptMapper deptMapper; |
| | | |
| | | @Override |
| | | public Map<String, Object> findDepts(QueryRequest request, Dept dept) { |
| | |
| | | .ge(Dept::getCreateTime, dept.getCreateTimeFrom()) |
| | | .le(Dept::getCreateTime, dept.getCreateTimeTo()); |
| | | } |
| | | queryWrapper.lambda().in(Dept::getDeptId, userDataPermissionService.findByUserId(FebsUtil.getUserId()).split(StringConstant.COMMA)); |
| | | SortUtil.handleWrapperSort(request, queryWrapper, "orderNum", FebsConstant.ORDER_ASC, true); |
| | | return this.baseMapper.selectList(queryWrapper); |
| | | } |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void createDept(Dept dept) { |
| | | long deptId = SequenceUtil.generateId(0L, ModuleCode.FRAM_SYSTEM); |
| | | dept.setDeptId(deptId); |
| | | if (dept.getParentId() == null) { |
| | | dept.setParentId(Dept.TOP_DEPT_ID); |
| | | } |
| | | dept.setAllDeptName(createALlDeptName(dept)); |
| | | dept.setCreateTime(new Date()); |
| | | this.save(dept); |
| | | |
| | | UserDataPermission userDataPermission = new UserDataPermission(); |
| | | userDataPermission.setDeptId(deptId); |
| | | userDataPermission.setUserId(Long.parseLong(FebsUtil.getUserId())); |
| | | userDataPermissionService.save(userDataPermission); |
| | | } |
| | | |
| | | @Override |
| | |
| | | if (dept.getParentId() == null) { |
| | | dept.setParentId(Dept.TOP_DEPT_ID); |
| | | } |
| | | String oldAllName = dept.getAllDeptName(); |
| | | String newAllName = createALlDeptName(dept); |
| | | dept.setModifyTime(new Date()); |
| | | this.baseMapper.updateById(dept); |
| | | |
| | | deptMapper.changeAllDeptName(oldAllName,newAllName,oldAllName + "%"); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void deleteDepts(String[] deptIds) { |
| | | this.delete(Arrays.asList(deptIds)); |
| | | } |
| | | |
| | | @Override |
| | | public void setDeptRedis() { |
| | | LambdaQueryWrapper<Dept> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(Dept::getDelFlag, 0); |
| | | List<Dept> depts = this.baseMapper.selectList(queryWrapper); |
| | | redisService.del("depts"); |
| | | redisService.set("depts", depts); |
| | | } |
| | | |
| | | @Override |
| | | public List<Dept> findAllDepts(Dept dept) { |
| | | QueryWrapper<Dept> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.lambda().eq(Dept::getDelFlag,0); |
| | | if (StringUtils.isNotBlank(dept.getDeptName())) { |
| | | queryWrapper.lambda().like(Dept::getDeptName, dept.getDeptName()); |
| | | } |
| | | return this.baseMapper.selectList(queryWrapper); |
| | | } |
| | | |
| | | private void buildTrees(List<DeptTree> trees, List<Dept> depts) { |
| | |
| | | tree.setParentId(dept.getParentId().toString()); |
| | | tree.setLabel(dept.getDeptName()); |
| | | tree.setOrderNum(dept.getOrderNum()); |
| | | tree.setDeptFunction(dept.getDeptFunction()); |
| | | tree.setDeptType(dept.getDeptType()); |
| | | tree.setAllDeptName(dept.getAllDeptName()); |
| | | trees.add(tree); |
| | | }); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | private String createALlDeptName(Dept dept){ |
| | | Dept parent = this.getById(dept.getParentId()); |
| | | String parentName = parent.getAllDeptName(); |
| | | if(StringUtils.isNotBlank(parentName)) { |
| | | return parent.getAllDeptName() + "/" + dept.getDeptName(); |
| | | } else { |
| | | return dept.getDeptName(); |
| | | } |
| | | } |
| | | } |