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;
|
if (!users.isEmpty()) {
|
userId = users.get(0).getId();
|
}
|
|
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());
|
if(u.isManager()){
|
userNode.setNodeType("manager");
|
}else {
|
userNode.setNodeType("user");
|
}
|
deptNode.getChildren().add(userNode);
|
}
|
}
|
});
|
|
rootNodeVOS.add(deptNode);
|
}
|
|
return rootNodeVOS;
|
}
|
}
|