| | |
| | | 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> { |
| | | |
| | | @Autowired |
| | | 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; |
| | |
| | | |
| | | return userId; |
| | | } |
| | | |
| | | /** |
| | | * 所有审批用户列表 |
| | | * @return |
| | | */ |
| | | public List<MdmUser> listByDeptAndRoleAlias() { |
| | | List<String> approveRoleAliasList = Func.split(paramService.getApproveRoleAlias(),','); |
| | | List<MdmUser> approveUserList = userListByRoleAlias(approveRoleAliasList); |
| | | |
| | | //查询程序管理员用户列表 |
| | | List<String> managerAliasList = Func.split(paramService.getProgramManagerRoleAlias(),','); |
| | | List<MdmUser> 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<MdmUser> userListByRoleAlias(List<String> approveRoleAliasList) { |
| | | List<MdmRole> approveRoles = roleService.listRoleAlias(approveRoleAliasList); |
| | | List<MdmUser> userList= this.getBaseMapper().selectByRoleIds(approveRoles.stream().map(MdmRole::getId).map(rid -> rid+"").toList()); |
| | | 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()); |
| | | userNode.setNodeType("user"); |
| | | deptNode.getChildren().add(userNode); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | rootNodeVOS.add(deptNode); |
| | | } |
| | | |
| | | return rootNodeVOS; |
| | | } |
| | | } |