yangys
2025-09-18 79e81a02076cdd1e828eb06029cd51eb37522f42
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java
@@ -1,18 +1,24 @@
package org.springblade.mdm.basesetting.producedivision.service;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.basesetting.producedivision.entity.MdmDept;
import org.springblade.mdm.basesetting.producedivision.entity.MdmRole;
import org.springblade.mdm.basesetting.producedivision.entity.MdmUser;
import org.springblade.mdm.basesetting.producedivision.mapper.MdmUserMapper;
import org.springblade.mdm.commons.service.ParamService;
import org.springblade.mdm.gkw.programnode.vo.ProgramNodeVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.stream.Collectors;
@Service
public class MdmUserService extends ServiceImpl<MdmUserMapper, MdmUser> {
@@ -20,6 +26,8 @@
   private ParamService paramService;
   @Autowired
   private MdmRoleService roleService;
   @Autowired
   private MdmDeptService deptService;
   public Long getUserIdByName(String name) {
      List<MdmUser> users = this.lambdaQuery().eq(MdmUser::getName, name).eq(MdmUser::getStatus, 1).orderByDesc(MdmUser::getCreateTime).list();
      Long userId = null;
@@ -30,6 +38,10 @@
      return userId;
   }
   /**
    * 所有审批用户列表
    * @return
    */
   public List<MdmUser> listByDeptAndRoleAlias() {
      List<String> approveRoleAliasList = Func.split(paramService.getApproveRoleAlias(),',');
      List<MdmUser> approveUserList = userListByRoleAlias(approveRoleAliasList);
@@ -55,4 +67,49 @@
      return userList;
   }
   /**
    * 审批用户树
    * @return 根节点列表
    */
   public List<ProgramNodeVO> flowUserTree() {
      List<ProgramNodeVO> rootNodeVOS = new ArrayList<>();
      List<MdmUser> users = listByDeptAndRoleAlias();
      Map<String,List<MdmUser>> userMap = users.stream().collect(Collectors.groupingBy(MdmUser::getDeptId));
      List<Long> deptIds = new ArrayList<>();
      userMap.keySet().stream().forEach(deptId -> {
         deptIds.addAll(Func.toLongList(deptId));
      });
      List<MdmDept> deptList = deptService.lambdaQuery().in(MdmDept::getId,deptIds).list();
      for(MdmDept dept : deptList) {
         String strDeptId = String.valueOf(dept.getId());
         ProgramNodeVO deptNode = new ProgramNodeVO();
         deptNode.setId(strDeptId);
         deptNode.setName(dept.getDeptName());
         deptNode.setNodeType("dept");
         deptNode.setChildren(new ArrayList<>());
         userMap.forEach((k, usersInDept) -> {
            if(k.contains(strDeptId)){
               for(MdmUser u : usersInDept) {
                  ProgramNodeVO userNode = new ProgramNodeVO();
                  userNode.setId(String.valueOf(u.getId()));
                  userNode.setName(u.getName());
                  if(u.isManager()){
                     userNode.setNodeType("manager");
                  }else {
                     userNode.setNodeType("user");
                  }
                  deptNode.getChildren().add(userNode);
               }
            }
         });
         rootNodeVOS.add(deptNode);
      }
      return rootNodeVOS;
   }
}