|
|
@@ -12,15 +12,15 @@ import com.ydtech.core.page.PageResult;
|
|
|
import com.ydtech.exception.SystemException;
|
|
|
import com.ydtech.modules.admin.dao.SysAreaMapper;
|
|
|
import com.ydtech.modules.admin.dao.SysDeptMapper;
|
|
|
+import com.ydtech.modules.admin.dao.SysUserDeptRelationshipMapper;
|
|
|
+import com.ydtech.modules.admin.dao.SysUserMapper;
|
|
|
import com.ydtech.modules.admin.model.SysArea;
|
|
|
import com.ydtech.modules.admin.model.SysDept;
|
|
|
+import com.ydtech.modules.admin.model.po.SysUserDeptRelationship;
|
|
|
import com.ydtech.modules.admin.model.report.financialReceivables.FinancialReceivablesMonthVo;
|
|
|
-import com.ydtech.modules.admin.model.vo.SysDeptRemoveVo;
|
|
|
+import com.ydtech.modules.admin.model.vo.*;
|
|
|
import com.ydtech.modules.admin.model.SysUser;
|
|
|
import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel;
|
|
|
-import com.ydtech.modules.admin.model.vo.SysDeptTreeVo;
|
|
|
-import com.ydtech.modules.admin.model.vo.SysDeptVo;
|
|
|
-import com.ydtech.modules.admin.model.vo.TreeSysDeptVO;
|
|
|
import com.ydtech.modules.admin.service.SysAreaService;
|
|
|
import com.ydtech.modules.admin.service.SysDeptService;
|
|
|
import com.ydtech.modules.admin.service.SysUserTreeShowLevelService;
|
|
|
@@ -53,6 +53,11 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
|
|
|
|
|
|
@Autowired
|
|
|
private SysUserTreeShowLevelService sysUserTreeShowLevelService;
|
|
|
+ @Autowired
|
|
|
+ private SysUserMapper sysUserMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysUserDeptRelationshipMapper sysUserDeptRelationshipMapper;
|
|
|
|
|
|
|
|
|
|
|
|
@@ -728,6 +733,22 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<SysDeptTreeVo> getFiveLevelDept(SysDeptVo sysDeptVo) {
|
|
|
+ SysDept sysDept = getById("9");
|
|
|
+ List<SysDept> sysDeptList = baseMapper.getFiveLevelDept(sysDeptVo);
|
|
|
+ sysDeptList.add(sysDept);//添加总部 总部没有等级机构
|
|
|
+ List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(sysDeptList, SysDeptTreeVo.class);
|
|
|
+ Map<String, List<SysDeptTreeVo>> map = sysDeptTreeVos.stream().sorted(Comparator.comparing(SysDeptTreeVo::getId))
|
|
|
+ .collect(Collectors.groupingBy(SysDeptTreeVo::getParentId));
|
|
|
+ sysDeptTreeVos.forEach(i -> {
|
|
|
+ i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()));
|
|
|
+ i.setDeptCount(i.getChildren().size());
|
|
|
+ });
|
|
|
+ return map.get(sysDept.getParentId());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private void buildDeptTree(SysDept dept, Map<String, SysDept> deptMap) {
|
|
|
List<SysDept> children = new ArrayList<>();
|
|
|
dept.setChildren(children);
|
|
|
@@ -740,6 +761,93 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 前线只要机构 后线人员(按照领导人) 机构
|
|
|
+ * @param sysDeptVo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public KztUserDeptTreeDto getUserDeptTree(SysDeptVo sysDeptVo) {
|
|
|
+ KztUserDeptTreeDto kztUserDeptTreeDto = new KztUserDeptTreeDto();
|
|
|
+ String userId = BaseController.getUserId();
|
|
|
+ if (userId.contains("M")) {
|
|
|
+ kztUserDeptTreeDto.setType("1"); //前线
|
|
|
+ } else {
|
|
|
+ kztUserDeptTreeDto.setType("2"); //代理
|
|
|
+ }
|
|
|
+ SysUser byUserId = sysUserMapper.getByUserId(userId);
|
|
|
+ List<SysDeptTreeVo> resultDeptList = this.getFiveLevelDeptKzt(byUserId);
|
|
|
+ kztUserDeptTreeDto.setDeptList(resultDeptList);
|
|
|
+ if (!userId.contains("M")) {
|
|
|
+ List<SysUser> resultList =this.getUserTreeHx(byUserId);
|
|
|
+ kztUserDeptTreeDto.setUserList(resultList);
|
|
|
+ }
|
|
|
+
|
|
|
+ return kztUserDeptTreeDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<SysUser> getUserTreeHx(SysUser sysUser) {
|
|
|
+ //获取领导字段不为空的人的ID
|
|
|
+ QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.isNotNull("leader_id");
|
|
|
+
|
|
|
+ List<SysUser> users = sysUserMapper.selectList(queryWrapper);
|
|
|
+ if (users == null || users.size() == 0) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ List<SysUser> topUsers = new ArrayList<>(); //存放1级用户,即没有直接上级的用户
|
|
|
+ // 根据组织结构展示级别,筛选顶层节点并构建组织结构树
|
|
|
+ if("admin".equals(sysUser.getName())){
|
|
|
+ topUsers.add(sysUserMapper.selectById("99D1501"));
|
|
|
+ }else {
|
|
|
+ topUsers.add(sysUser);
|
|
|
+ }
|
|
|
+ // 递归构建用户树结构
|
|
|
+ buildUserTree(topUsers, users);
|
|
|
+ return topUsers;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<SysDeptTreeVo> getFiveLevelDeptKzt(SysUser byUserId) {
|
|
|
+ SysDept sysDept = getById("9");
|
|
|
+ SysDeptVo sysDeptVo = new SysDeptVo();
|
|
|
+ String id = byUserId.getId();
|
|
|
+ List<String> deptIds = new ArrayList<>();
|
|
|
+ if("admin".equals(byUserId.getId())){
|
|
|
+ List<SysDept> sysDeptList = baseMapper.getFiveLevelDept(sysDeptVo);
|
|
|
+ deptIds.addAll(sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList()));
|
|
|
+ }else {
|
|
|
+ List<SysUserDeptRelationship> relationships = sysUserDeptRelationshipMapper.selectList(new QueryWrapper<SysUserDeptRelationship>().eq("user_id", id));
|
|
|
+ deptIds.addAll(relationships.stream().map(SysUserDeptRelationship::getDeptId).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ List<SysDept> sysDeptList = baseMapper.getFiveLevelDept(sysDeptVo);
|
|
|
+ sysDept.setComlevel("1");
|
|
|
+ sysDeptList.add(sysDept);
|
|
|
+
|
|
|
+ List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(sysDeptList, SysDeptTreeVo.class);
|
|
|
+ Map<String, List<SysDeptTreeVo>> map = sysDeptTreeVos.stream().sorted(Comparator.comparing(SysDeptTreeVo::getId))
|
|
|
+ .collect(Collectors.groupingBy(SysDeptTreeVo::getParentId));
|
|
|
+ sysDeptTreeVos.forEach(i -> {
|
|
|
+ if(Integer.parseInt(i.getComlevel())<=5){
|
|
|
+ i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()));
|
|
|
+ i.setDeptCount(i.getChildren().size());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return map.get(sysDept.getParentId());
|
|
|
+ }
|
|
|
+ private void buildUserTree(List<SysUser> topUsers, List<SysUser> users) {
|
|
|
+ for (SysUser user : topUsers) {
|
|
|
+ List<SysUser> children = new ArrayList<>();
|
|
|
+ for (SysUser childUser : users) {
|
|
|
+ if (user.getId().equals(childUser.getLeaderId())) {
|
|
|
+ children.add(childUser);
|
|
|
+ // 递归查找下一级
|
|
|
+ buildUserTree(children, users);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ user.setChildren(children);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|