SysUserLinkDeptInternalAgentServiceImpl.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package com.ydtech.modules.admin.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.ydtech.exception.SystemException;
  6. import com.ydtech.modules.admin.dao.SysDeptInternalAgentMapper;
  7. import com.ydtech.modules.admin.dao.SysUserLinkAreaMapper;
  8. import com.ydtech.modules.admin.dao.SysUserLinkDeptInternalAgentMapper;
  9. import com.ydtech.modules.admin.model.dto.SysUserDto;
  10. import com.ydtech.modules.admin.model.dto.SysUserLinkDeptInternalAgentDto;
  11. import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
  12. import com.ydtech.modules.admin.model.po.SysDeptInternalAgent;
  13. import com.ydtech.modules.admin.model.po.SysUserLinkDeptInternalAgent;
  14. import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
  15. import com.ydtech.modules.admin.model.vo.SysUserLinkDeptInternalAgentAddVo;
  16. import com.ydtech.modules.admin.model.vo.SysUserLinkDeptInternalAgentQueryVo;
  17. import com.ydtech.modules.admin.service.SysUserLinkDeptInternalAgentService;
  18. import com.ydtech.modules.admin.service.SysUserService;
  19. import com.ydtech.modules.base.controller.BaseController;
  20. import com.ydtech.modules.order.entity.BasePageResult;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import java.util.ArrayList;
  25. import java.util.Date;
  26. import java.util.List;
  27. import java.util.stream.Collectors;
  28. /**
  29. * @author Administrator
  30. * @description 针对表【sys_user_link_dept_internal_agent(后线人员配置内部机构表)】的数据库操作Service实现
  31. * @createDate 2024-06-26 17:28:11
  32. */
  33. @Service
  34. public class SysUserLinkDeptInternalAgentServiceImpl extends ServiceImpl<SysUserLinkDeptInternalAgentMapper, SysUserLinkDeptInternalAgent>
  35. implements SysUserLinkDeptInternalAgentService {
  36. @Autowired
  37. private SysUserLinkDeptInternalAgentMapper sysUserLinkDeptInternalAgentMapper;
  38. @Autowired
  39. private SysDeptInternalAgentMapper sysDeptInternalAgentMapper;
  40. @Autowired
  41. private SysUserService sysUserService;
  42. @Autowired
  43. private SysUserLinkAreaMapper sysUserLinkAreaMapper;
  44. /**
  45. * @version
  46. * @author: hxl
  47. * @Date: 2024/6/26 18:54
  48. * @Description: 查询内部机构树
  49. */
  50. @Override
  51. public List<SysDeptInternalAgent> queryOrgTree() {
  52. List<SysDeptInternalAgent> sysDeptAll =sysDeptInternalAgentMapper.queryDeptList(null,null);
  53. List<SysDeptInternalAgent> resultList =new ArrayList<SysDeptInternalAgent>();
  54. List<SysDeptInternalAgent> sysDeptTop = sysDeptAll.stream().filter(item ->"0".equals(item.getComlevel())).collect(Collectors.toList());
  55. for (SysDeptInternalAgent dept : sysDeptTop) {
  56. resultList.add(buildDeptTree(dept,sysDeptAll));
  57. }
  58. return resultList;
  59. }
  60. /**
  61. * @version
  62. * @author: hxl
  63. * @Date: 2024/6/27 8:42
  64. * @Description: 获取顶级机构的数据
  65. */
  66. private SysDeptInternalAgent buildDeptTree(SysDeptInternalAgent dept, List<SysDeptInternalAgent> deptList){
  67. for (SysDeptInternalAgent d : deptList) {
  68. if (dept.getId().equals(d.getParentId())) {
  69. if (null == dept.getChildren()) {
  70. dept.setChildren(new ArrayList<SysDeptInternalAgent>());
  71. }
  72. //递归调用
  73. dept.getChildren().add(buildDeptTree(d, deptList));
  74. }
  75. }
  76. return dept;
  77. }
  78. /**
  79. * @version
  80. * @author: hxl
  81. * @Date: 2024/6/26 18:54
  82. * @Description: 添加或修改
  83. */
  84. @Override
  85. public void addOrUpdate(SysUserLinkDeptInternalAgentAddVo sysUserLinkDeptInternalAgentAddVo) {
  86. String deptId = sysUserLinkDeptInternalAgentAddVo.getDeptId();
  87. List<String> userIds = sysUserLinkDeptInternalAgentAddVo.getUserIds();
  88. //删除数据重新添加
  89. sysUserLinkDeptInternalAgentMapper.deleteByDeptId(deptId);
  90. List<SysUserLinkDeptInternalAgent> addList= new ArrayList<>();
  91. //重新添加
  92. if(userIds!=null && userIds.size()>0){
  93. for (String userId : userIds) {
  94. SysUserLinkDeptInternalAgent add=new SysUserLinkDeptInternalAgent(userId,deptId,new Date(),
  95. new BaseController().getUser().getId(),new Date(),new BaseController().getUser().getId());
  96. addList.add(add);
  97. }
  98. }
  99. this.saveBatch(addList);
  100. }
  101. /**
  102. * @version
  103. * @author: hxl
  104. * @Date: 2024/6/26 18:54
  105. * @Description: 批量删除
  106. */
  107. @Override
  108. public void deleteByIds(List<String> ids) {
  109. sysUserLinkDeptInternalAgentMapper.deleteBatchIds(ids);
  110. }
  111. /**
  112. * @version
  113. * @author: hxl
  114. * @Date: 2024/6/26 18:55
  115. * @Description: 分页
  116. */
  117. @Override
  118. public BasePageResult<SysUserLinkDeptInternalAgentDto> queryPage(SysUserLinkDeptInternalAgentQueryVo sysUserLinkDeptInternalAgentQueryVo) {
  119. Page<SysUserLinkPtlAgreementDto> page = new Page<>(sysUserLinkDeptInternalAgentQueryVo.getPageNum(),
  120. sysUserLinkDeptInternalAgentQueryVo.getPageSize());
  121. Page<SysUserLinkDeptInternalAgentDto> pageResult = sysUserLinkDeptInternalAgentMapper.queryPage(page, sysUserLinkDeptInternalAgentQueryVo);
  122. return new BasePageResult<>(sysUserLinkDeptInternalAgentQueryVo.getPageNum(), page.getSize(), pageResult.getTotal(), page.getPages(),
  123. pageResult.getRecords());
  124. }
  125. /**
  126. * 根据userid获取对象
  127. * @param userId
  128. * @return
  129. */
  130. @Override
  131. public SysUserLinkDeptInternalAgent getByUserId(String userId) {
  132. LambdaQueryWrapper<SysUserLinkDeptInternalAgent> sysUserLinkDeptInternalAgentLambdaQueryWrapper = new LambdaQueryWrapper<>();
  133. sysUserLinkDeptInternalAgentLambdaQueryWrapper.eq(SysUserLinkDeptInternalAgent::getUserId,userId);
  134. SysUserLinkDeptInternalAgent sysUserLinkDeptInternalAgent = sysUserLinkDeptInternalAgentMapper.selectOne(sysUserLinkDeptInternalAgentLambdaQueryWrapper);
  135. return sysUserLinkDeptInternalAgent;
  136. }
  137. @Override
  138. public BasePageResult<SysUserBaseVO> findUserListByPage(SysUserDto sysUserDto) {
  139. if(StringUtils.isBlank(sysUserDto.getDeptNBId())){
  140. throw new SystemException("deptNBId内部机构不能为空");
  141. }
  142. Page<SysUserBaseVO> page = new Page<>(sysUserDto.getPageNum(),
  143. sysUserDto.getPageSize());
  144. Page<SysUserBaseVO> userPageResult = sysUserLinkDeptInternalAgentMapper.findUserListByDeptPage(page, sysUserDto);
  145. return new BasePageResult<>(sysUserDto.getPageNum(), page.getSize(), userPageResult.getTotal(), page.getPages(),
  146. userPageResult.getRecords());
  147. }
  148. /**
  149. * @version
  150. * @author: hxl
  151. * @Date: 2024/7/3 9:25
  152. * @Description: 根据内部机构id查询管理的用户
  153. */
  154. public List<String> getUserIdListByDeptId(String deptId) {
  155. SysDeptInternalAgent sysDeptInternalAgent = sysDeptInternalAgentMapper.selectById(deptId);
  156. if(sysDeptInternalAgent==null){
  157. return new ArrayList<String>();
  158. }
  159. List<String> hxUserIds = sysUserLinkDeptInternalAgentMapper.getUserIdListByDeptPrentIds(sysDeptInternalAgent.getParentIds());
  160. List<String> returnUserIds=new ArrayList<>();
  161. //查询后线人员管理的代理人和渠道
  162. if(hxUserIds!=null && hxUserIds.size()>0){
  163. for(String userId : hxUserIds){
  164. //通过用户id查询管理的渠道集合
  165. List<String> qdUserIds = sysUserService.getUserIdsByLeaderId(userId);
  166. returnUserIds.addAll(qdUserIds);
  167. //通过用户id查询管理的代理人
  168. //查询绑定的区域的代理人信息
  169. List<String> areaCodes = sysUserLinkAreaMapper.findAreaCodeByUserId(userId);
  170. if (areaCodes != null && !areaCodes.isEmpty()) {
  171. List<String> dlUserIds = sysUserLinkAreaMapper.findAreaIdsByAgentUserId(userId, areaCodes);
  172. returnUserIds.addAll(dlUserIds);
  173. }
  174. }
  175. returnUserIds = returnUserIds.stream().distinct().collect(Collectors.toList());
  176. }
  177. return returnUserIds;
  178. }
  179. }