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 { @Autowired private ParamService paramService; @Autowired private MdmRoleService roleService; @Autowired private MdmDeptService deptService; public Long getUserIdByName(String name) { List users = this.lambdaQuery().eq(MdmUser::getName, name).eq(MdmUser::getStatus, 1).orderByDesc(MdmUser::getCreateTime).list(); Long userId = null; if (!users.isEmpty()) { userId = users.get(0).getId(); } return userId; } /** * 所有审批用户列表 * @return */ public List listByDeptAndRoleAlias() { List approveRoleAliasList = Func.split(paramService.getApproveRoleAlias(),','); List approveUserList = userListByRoleAlias(approveRoleAliasList); //查询程序管理员用户列表 List managerAliasList = Func.split(paramService.getProgramManagerRoleAlias(),','); List mgrUserList = userListByRoleAlias(managerAliasList); for(MdmUser approveUser : approveUserList) { for(MdmUser manager : mgrUserList) { if(approveUser.getId().equals(manager.getId())) { approveUser.setManager(true); break; } } } return approveUserList; } private List userListByRoleAlias(List approveRoleAliasList) { List approveRoles = roleService.listRoleAlias(approveRoleAliasList); List userList= this.getBaseMapper().selectByRoleIds(approveRoles.stream().map(MdmRole::getId).map(rid -> rid+"").toList()); return userList; } /** * 审批用户树 * @return 根节点列表 */ public List flowUserTree() { List rootNodeVOS = new ArrayList<>(); List users = listByDeptAndRoleAlias(); Map> userMap = users.stream().collect(Collectors.groupingBy(MdmUser::getDeptId)); List deptIds = new ArrayList<>(); userMap.keySet().stream().forEach(deptId -> { deptIds.addAll(Func.toLongList(deptId)); }); List 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; } }