| | |
| | | import com.ruoyi.common.constant.UserConstants; |
| | | import com.ruoyi.common.core.domain.entity.*; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.DtoConversionUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.TreeUtils; |
| | | import com.ruoyi.common.utils.bean.BeanValidators; |
| | | import com.ruoyi.common.utils.spring.SpringUtils; |
| | | import com.ruoyi.system.domain.SysPost; |
| | | import com.ruoyi.system.domain.SysUserPost; |
| | | import com.ruoyi.system.mapper.*; |
| | | import com.ruoyi.system.service.ISysConfigService; |
| | | import com.ruoyi.system.service.ISysDeptService; |
| | | import com.ruoyi.system.service.ISysUserService; |
| | | import com.ruoyi.common.core.service.IUserExtInfoService; |
| | | import com.ruoyi.system.mapper.SysUserDeptMapper; |
| | |
| | | |
| | | @Autowired |
| | | private SysUserMapper userMapper; |
| | | |
| | | @Autowired |
| | | private ISysDeptService sysDeptService; |
| | | |
| | | @Autowired |
| | | private SysDeptMapper sysDeptMapper; |
| | |
| | | SysUserDept sysUserDept = new SysUserDept(); |
| | | sysUserDept.setUserId(sysUser.getUserId()); |
| | | sysUserDept.setDeptType(sysUser.getSearchscope()); |
| | | sysUserDept.setOrgid(sysUser.getOrgid()); |
| | | List<SysUserDept> sysUserDeptKSs = null; |
| | | List<SysUserDept> sysUserDeptBQs = null; |
| | | if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("0")) { |
| | | sysUserDept.setDeptType("1"); |
| | | sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); |
| | | sysUserDeptKSs = selectLeafSysDeptList(sysUserDept); |
| | | sysUserDept.setDeptType("2"); |
| | | sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); |
| | | sysUserDeptBQs = selectLeafSysDeptList(sysUserDept); |
| | | } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("1")) { |
| | | sysUserDept.setDeptType("1"); |
| | | sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); |
| | | sysUserDeptKSs = selectLeafSysDeptList(sysUserDept); |
| | | } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("2")) { |
| | | sysUserDept.setDeptType("2"); |
| | | sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); |
| | | sysUserDeptBQs = selectLeafSysDeptList(sysUserDept); |
| | | } |
| | | |
| | | sysUser.setDepts(deptIds); |
| | |
| | | String[] split = userName.split("&"); |
| | | SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], null); |
| | | if (Objects.isNull(sysUser)) return sysUser; |
| | | //这里只卡用户类型为“患者”的 |
| | | if (sysUser.getUserType().equals("患者") && StringUtils.isNotEmpty(split[3]) && !split[3].equals("null") && !sysUser.getUserType().equals(split[3].trim())) |
| | | throw new BaseException("当前用户类型与登录用户类型不一致"); |
| | | |
| | | boolean isAdmin = StringUtils.isNotEmpty(split[0]) && "admin".equals(split[0]); |
| | | IUserExtInfoService userExtInfoService = SpringUtils.getBean(IUserExtInfoService.class); |
| | | Executor executor = SpringUtils.getBean("threadPoolTaskExecutor"); |
| | | |
| | | // === 并行查询: 用户机构信息 + 部门列表 === |
| | | CompletableFuture<Map<String, String>> orgInfoFuture = CompletableFuture.supplyAsync(() -> |
| | | userExtInfoService.getUserOrgInfo(sysUser.getUserId().toString(), split[1], split[2]), executor); |
| | | CompletableFuture<Map<String, String>> orgInfoFuture = CompletableFuture.supplyAsync(() -> userExtInfoService.getUserOrgInfo(sysUser.getUserId().toString(), split[1], split[2]), executor); |
| | | |
| | | CompletableFuture<List<SysDept>> deptsFuture; |
| | | if (isAdmin) { |
| | |
| | | SysDept deptBQ = new SysDept(); |
| | | deptBQ.setOrgid(split[1]); |
| | | deptBQ.setDeptType("2"); |
| | | CompletableFuture<List<SysDept>> ksFuture = CompletableFuture.supplyAsync(() -> sysDeptMapper.selectDeptList(deptKS), executor); |
| | | CompletableFuture<List<SysDept>> bqFuture = CompletableFuture.supplyAsync(() -> sysDeptMapper.selectDeptList(deptBQ), executor); |
| | | CompletableFuture<List<SysDept>> ksFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptForAdmin(deptKS), executor); |
| | | CompletableFuture<List<SysDept>> bqFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptForAdmin(deptBQ), executor); |
| | | try { |
| | | sysUserDeptKSs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(ksFuture.get(5, TimeUnit.SECONDS), SysUserDept.class)); |
| | | sysUserDeptBQs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(bqFuture.get(5, TimeUnit.SECONDS), SysUserDept.class)); |
| | |
| | | queryBQ.setUserId(sysUser.getUserId()); |
| | | queryBQ.setDeptType("2"); |
| | | queryBQ.setOrgid(split[1]); |
| | | CompletableFuture<List<SysUserDept>> ksFuture = CompletableFuture.supplyAsync(() -> sysUserDeptMapper.selectSysUserDeptList(queryKS), executor); |
| | | CompletableFuture<List<SysUserDept>> bqFuture = CompletableFuture.supplyAsync(() -> sysUserDeptMapper.selectSysUserDeptList(queryBQ), executor); |
| | | CompletableFuture<List<SysUserDept>> ksFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptList(queryKS), executor); |
| | | CompletableFuture<List<SysUserDept>> bqFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptList(queryBQ), executor); |
| | | try { |
| | | sysUserDeptKSs = ksFuture.get(5, TimeUnit.SECONDS); |
| | | sysUserDeptBQs = bqFuture.get(5, TimeUnit.SECONDS); |
| | |
| | | queryKS.setUserId(sysUser.getUserId()); |
| | | queryKS.setDeptType("1"); |
| | | queryKS.setOrgid(split[1]); |
| | | sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(queryKS); |
| | | sysUserDeptKSs = selectLeafSysDeptList(queryKS); |
| | | } else if ("2".equals(sysUser.getSearchscope())) { |
| | | SysUserDept queryBQ = new SysUserDept(); |
| | | queryBQ.setUserId(sysUser.getUserId()); |
| | | queryBQ.setDeptType("2"); |
| | | queryBQ.setOrgid(split[1]); |
| | | sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(queryBQ); |
| | | sysUserDeptBQs = selectLeafSysDeptList(queryBQ); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | //获取当前登陆人的机构和院�? |
| | | IUserExtInfoService userExtInfoService2 = SpringUtils.getBean(IUserExtInfoService.class); |
| | | Map<String, String> userOrgInfo2 = userExtInfoService2.getUserOrgInfo( |
| | | sysUser.getUserId().toString(), |
| | | split[1], |
| | | split[3]); |
| | | Map<String, String> userOrgInfo2 = userExtInfoService2.getUserOrgInfo(sysUser.getUserId().toString(), split[1], split[3]); |
| | | if (!userOrgInfo2.isEmpty()) { |
| | | sysUser.setOrgid(userOrgInfo2.get("orgid")); |
| | | sysUser.setCampusid(userOrgInfo2.get("campusid")); |
| | |
| | | sysUserDept.setUserId(null); |
| | | } |
| | | sysUserDept.setDeptType("1"); |
| | | sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); |
| | | sysUserDeptKSs = selectLeafSysDeptList(sysUserDept); |
| | | sysUserDept.setDeptType("2"); |
| | | sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); |
| | | sysUserDeptBQs = selectLeafSysDeptList(sysUserDept); |
| | | //如果是admin,需要对sysUserDeptBQs,sysUserDeptBQs去重 |
| | | if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) { |
| | | //如果是admin,只能去sys_dept去取数据 |
| | | SysDept dept = new SysDept(); |
| | | dept.setOrgid(split[1]); |
| | | dept.setDeptType("1"); |
| | | sysDepts = sysDeptMapper.selectDeptList(dept); |
| | | sysDepts = selectLeafSysDeptForAdmin(dept); |
| | | sysUserDeptKSs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class); |
| | | |
| | | dept.setDeptType("2"); |
| | | sysDepts = sysDeptMapper.selectDeptList(dept); |
| | | sysDepts = selectLeafSysDeptForAdmin(dept); |
| | | sysUserDeptBQs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class); |
| | | |
| | | List<SysUserDept> distinctUserDepts = new ArrayList<>(); |
| | |
| | | } |
| | | return successMsg.toString(); |
| | | } |
| | | |
| | | public List<SysUserDept> selectLeafSysDeptList(SysUserDept sysUserDept){ |
| | | List<SysDept> list = sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept); |
| | | if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){ |
| | | list = TreeUtils.getLeafDepts(list); |
| | | } |
| | | List<SysUserDept> list1 = DtoConversionUtils.sourceToTarget(list, SysUserDept.class); |
| | | return list1; |
| | | } |
| | | |
| | | public List<SysDept> selectLeafSysDeptForAdmin(SysDept sysDept){ |
| | | SysUserDept sysUserDept = DtoConversionUtils.sourceToTarget(sysDept, SysUserDept.class); |
| | | List<SysDept> list = sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept); |
| | | if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){ |
| | | list = TreeUtils.getLeafDepts(list); |
| | | } |
| | | return list; |
| | | } |
| | | } |