SysPostServiceImpl.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. package com.ruoyi.system.service.impl;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.ruoyi.common.core.domain.PageQuery;
  6. import com.ruoyi.common.core.page.TableDataInfo;
  7. import com.ruoyi.common.exception.ServiceException;
  8. import com.ruoyi.common.utils.StringUtils;
  9. import com.ruoyi.system.domain.SysPost;
  10. import com.ruoyi.system.domain.SysUserPost;
  11. import com.ruoyi.system.mapper.SysPostMapper;
  12. import com.ruoyi.system.mapper.SysUserPostMapper;
  13. import com.ruoyi.system.service.ISysPostService;
  14. import lombok.RequiredArgsConstructor;
  15. import org.springframework.stereotype.Service;
  16. import java.util.Arrays;
  17. import java.util.List;
  18. /**
  19. * 岗位信息 服务层处理
  20. *
  21. * @author Lion Li
  22. */
  23. @RequiredArgsConstructor
  24. @Service
  25. public class SysPostServiceImpl implements ISysPostService {
  26. private final SysPostMapper baseMapper;
  27. private final SysUserPostMapper userPostMapper;
  28. @Override
  29. public TableDataInfo<SysPost> selectPagePostList(SysPost post, PageQuery pageQuery) {
  30. LambdaQueryWrapper<SysPost> lqw = new LambdaQueryWrapper<SysPost>()
  31. .like(StringUtils.isNotBlank(post.getPostCode()), SysPost::getPostCode, post.getPostCode())
  32. .eq(StringUtils.isNotBlank(post.getStatus()), SysPost::getStatus, post.getStatus())
  33. .like(StringUtils.isNotBlank(post.getPostName()), SysPost::getPostName, post.getPostName());
  34. Page<SysPost> page = baseMapper.selectPage(pageQuery.build(), lqw);
  35. return TableDataInfo.build(page);
  36. }
  37. /**
  38. * 查询岗位信息集合
  39. *
  40. * @param post 岗位信息
  41. * @return 岗位信息集合
  42. */
  43. @Override
  44. public List<SysPost> selectPostList(SysPost post) {
  45. return baseMapper.selectList(new LambdaQueryWrapper<SysPost>()
  46. .like(StringUtils.isNotBlank(post.getPostCode()), SysPost::getPostCode, post.getPostCode())
  47. .eq(StringUtils.isNotBlank(post.getStatus()), SysPost::getStatus, post.getStatus())
  48. .like(StringUtils.isNotBlank(post.getPostName()), SysPost::getPostName, post.getPostName()));
  49. }
  50. /**
  51. * 查询所有岗位
  52. *
  53. * @return 岗位列表
  54. */
  55. @Override
  56. public List<SysPost> selectPostAll() {
  57. return baseMapper.selectList();
  58. }
  59. /**
  60. * 通过岗位ID查询岗位信息
  61. *
  62. * @param postId 岗位ID
  63. * @return 角色对象信息
  64. */
  65. @Override
  66. public SysPost selectPostById(Long postId) {
  67. return baseMapper.selectById(postId);
  68. }
  69. /**
  70. * 根据用户ID获取岗位选择框列表
  71. *
  72. * @param userId 用户ID
  73. * @return 选中岗位ID列表
  74. */
  75. @Override
  76. public List<Long> selectPostListByUserId(Long userId) {
  77. return baseMapper.selectPostListByUserId(userId);
  78. }
  79. /**
  80. * 校验岗位名称是否唯一
  81. *
  82. * @param post 岗位信息
  83. * @return 结果
  84. */
  85. @Override
  86. public boolean checkPostNameUnique(SysPost post) {
  87. boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysPost>()
  88. .eq(SysPost::getPostName, post.getPostName())
  89. .ne(ObjectUtil.isNotNull(post.getPostId()), SysPost::getPostId, post.getPostId()));
  90. return !exist;
  91. }
  92. /**
  93. * 校验岗位编码是否唯一
  94. *
  95. * @param post 岗位信息
  96. * @return 结果
  97. */
  98. @Override
  99. public boolean checkPostCodeUnique(SysPost post) {
  100. boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysPost>()
  101. .eq(SysPost::getPostCode, post.getPostCode())
  102. .ne(ObjectUtil.isNotNull(post.getPostId()), SysPost::getPostId, post.getPostId()));
  103. return !exist;
  104. }
  105. /**
  106. * 通过岗位ID查询岗位使用数量
  107. *
  108. * @param postId 岗位ID
  109. * @return 结果
  110. */
  111. @Override
  112. public long countUserPostById(Long postId) {
  113. return userPostMapper.selectCount(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getPostId, postId));
  114. }
  115. /**
  116. * 删除岗位信息
  117. *
  118. * @param postId 岗位ID
  119. * @return 结果
  120. */
  121. @Override
  122. public int deletePostById(Long postId) {
  123. return baseMapper.deleteById(postId);
  124. }
  125. /**
  126. * 批量删除岗位信息
  127. *
  128. * @param postIds 需要删除的岗位ID
  129. * @return 结果
  130. */
  131. @Override
  132. public int deletePostByIds(Long[] postIds) {
  133. for (Long postId : postIds) {
  134. SysPost post = selectPostById(postId);
  135. if (countUserPostById(postId) > 0) {
  136. throw new ServiceException(String.format("%1$s已分配,不能删除", post.getPostName()));
  137. }
  138. }
  139. return baseMapper.deleteBatchIds(Arrays.asList(postIds));
  140. }
  141. /**
  142. * 新增保存岗位信息
  143. *
  144. * @param post 岗位信息
  145. * @return 结果
  146. */
  147. @Override
  148. public int insertPost(SysPost post) {
  149. return baseMapper.insert(post);
  150. }
  151. /**
  152. * 修改保存岗位信息
  153. *
  154. * @param post 岗位信息
  155. * @return 结果
  156. */
  157. @Override
  158. public int updatePost(SysPost post) {
  159. return baseMapper.updateById(post);
  160. }
  161. }