Quellcode durchsuchen

pref: selectUserList

shc vor 8 Monaten
Ursprung
Commit
da3a7e9a34

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysUserController.java

@@ -1029,7 +1029,7 @@ public class SysUserController {
 
         HnqzUser user = SecurityUtils.getUser();
 
-        Page<UserVO> userVosPage = userService.selectUserList(new Page<>(userDTO.getCurrent(), userDTO.getSize()), userDTO, user);
+        Page<UserVO> userVosPage = userService.selectUserList2(new Page<>(userDTO.getCurrent(), userDTO.getSize()), userDTO, user);
 
         Set<Integer> userIds = userVosPage.getRecords().stream().map(UserVO::getUserId).collect(Collectors.toSet());
 

+ 6 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/SysUserMapper.java

@@ -59,8 +59,14 @@ public interface SysUserMapper extends DataScopeMapper<SysUser> {
     @SqlParser(filter = true)
     List<UserVO> selectByDeptId(@Param("query") UserDTO userDTO);
 
+    @SqlParser(filter = true)
+    List<UserVO> selectByDeptId1(@Param("query") UserDTO userDTO);
+
     UserVO selectByUserId(@Param("query") UserDTO userDTO);
 
+
+    UserVO selectByUserId1(@Param("query") UserDTO userDTO);
+
     void updateByPrimaryKeySelective(SysUser sysUser);
 
 

+ 1 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SysUserService.java

@@ -46,6 +46,7 @@ public interface SysUserService extends IService<SysUser> {
     Page<UserVO> selectUserList(Page<UserVO> page, UserDTO userDTO, HnqzUser user);
 
     Page<UserVO> selectUserList1(Page<UserVO> page, UserDTO userDTO, HnqzUser user);
+    Page<UserVO> selectUserList2(Page<UserVO> page, UserDTO userDTO, HnqzUser user);
 
     /**
      * 删除用户

+ 143 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserServiceImpl.java

@@ -877,6 +877,149 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return page1;
     }
 
+    @Override
+    public Page<UserVO> selectUserList2(Page<UserVO> page, UserDTO userDTO, HnqzUser user) {
+
+        List<Long> areas;
+        if (CollUtil.isNotEmpty(userDTO.getAreaCodes())) {
+            areas = userDTO.getAreaCodes();
+        } else {
+            areas = userAreaService.listUserAreas(Long.valueOf(user.getId()));
+            if (CollUtil.isNotEmpty(areas)) {
+                areas = areaEntityService.list(Wrappers.<SysAreaEntity>lambdaQuery()
+                                .in(SysAreaEntity::getAreaId, areas)
+                                .eq(SysAreaEntity::getAreaStatus, Boolean.TRUE)
+                                .eq(SysAreaEntity::getAreaType, UpmsType.AreaType.DISTRICT))
+                        .stream()
+                        .mapToLong(SysAreaEntity::getAreaId).boxed().distinct().collect(Collectors.toList());
+            }
+
+        }
+
+        List<Integer> userid = userAreaService.listAreaUser(areas).stream().map(Long::intValue).collect(Collectors.toList());
+
+        userDTO.setUserIdList(userid);
+
+        if (SecurityUtils.getRoles().contains(1)) {
+            return baseMapper.getUserVosPage(page, userDTO, new DataScope());
+        }
+        // 系统管理员
+        else if (SecurityUtils.getRoles().contains(50)){
+
+            // 3营管理员
+            // 4域管理员
+            // 5职学术推广员
+            // 37服务供应商管理员
+            // 38营销中心分管领导
+            // 39事业部总经理
+            // 40商务管理员
+            // 41事业部分管领导
+            // 42市场管理员
+            // 43地市管理员
+            // 44安全管理员
+            // 45审计管理员
+            // 47事业部医药代表备案管理员
+            // 48平台监察员
+            // 49生产企业监察员
+            // 50事业部管理员
+
+            List<Integer> role = userDTO.getRole();
+            if (CollUtil.isEmpty(role)) {
+                userDTO.setRole(ListUtil.of( 3, 4, 5, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50));
+            }
+
+            return baseMapper.getUserVosPage(page, userDTO, new DataScope());
+        }
+        else if (SecurityUtils.getRoles().contains(2) /*|| SecurityUtils.getRoles().contains(35)*/) {
+            // 人数据权限
+            List<Integer> bcRoles = Stream.of(2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 19, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50).collect(Collectors.toList());
+            if (CollUtil.isNotEmpty(userDTO.getRole())) {
+                Collection<Integer> intersection = CollUtil.intersectionDistinct(bcRoles, userDTO.getRole());
+                if (CollUtil.isEmpty(intersection)) {
+                    return page;
+                }
+                userDTO.setRole(new ArrayList<>(intersection));
+            } else {
+                userDTO.setRole(bcRoles);
+            }
+            return baseMapper.getUserVosPage(page, userDTO, new DataScope());
+        }
+        // 备案管理员
+        else if (SecurityUtils.getRoles().contains(47)) {
+            userDTO.setRole(ListUtil.of(5, 6));
+            return baseMapper.getUserVosPage(page, userDTO, new DataScope());
+        }
+
+
+        Integer deptId = userDTO.getDeptId();
+        userDTO.setDeptId(SecurityUtils.getUser().getDeptId());
+        List<UserVO> userList = sysUserMapper.selectByDeptId1(userDTO);
+
+        // 查询下游企业
+        SysDeptRelation sysDeptRelation = new SysDeptRelation();
+        sysDeptRelation.setAncestor(userDTO.getDeptId());
+        List<SysDeptRelation> sysDeptRelationList = sysDeptRelationMapper.selectListByAncestor(sysDeptRelation);
+        List<Integer> ids1 = sysDeptRelationList.stream().map(SysDeptRelation::getDescendant).collect(Collectors.toList());
+
+
+        List<UserVO> userList2 = new ArrayList<>();
+
+        // for (Integer id : ids1) {
+        //     userDTO.setDeptId(id);
+        //     List<UserVO> userList3 = sysUserMapper.selectByDeptId1(userDTO);
+        //     userList1.addAll(userList3);
+        // }
+
+        List<UserVO> userList1 = ids1.parallelStream().flatMap(id -> {
+            userDTO.setDeptId(id);
+            return sysUserMapper.selectByDeptId1(userDTO).stream();
+        }).collect(Collectors.toList());
+
+        List<Integer> ids2 = userList1.stream().map(UserVO::getUserId).collect(Collectors.toList());
+
+        for (int i = 0; i < userList1.size(); i++) {
+            if (CollUtil.isNotEmpty(userList1.get(i).getRoleList())) {
+                if (userList1.get(i).getRoleList().get(0).getRoleId().equals(4)) {
+                    userDTO.setUserId(ids2.get(i));
+                    UserVO userVO = sysUserMapper.selectByUserId1(userDTO);
+                    userList2.add(userVO);
+                }
+            }
+        }
+        userList.addAll(userList2);
+
+        List<Integer> ids = userList.stream().map(UserVO::getUserId).collect(Collectors.toList());
+        for (int i = 0; i < userList.size(); i++) {
+            List<SysRole> sysRoleList1 = sysRoleService.findRolesByUserId(ids.get(i));
+            userList.get(i).setRoleList(sysRoleList1);
+        }
+
+        if (null != deptId) {
+            userList = userList.stream().filter(item -> deptId.equals(item.getDeptId())).collect(Collectors.toList());
+        }
+
+
+        // 每页数据条数
+        Page<UserVO> page1 = new Page<>();
+        int current = Long.valueOf(page.getCurrent()).intValue();
+        int size = Long.valueOf(page.getSize()).intValue();
+
+        int count = userList.size();
+        List<UserVO> pageList = new ArrayList<>();
+        // 计算当前页第一条数据的下标
+        int currId = current > 1 ? (current - 1) * size : 0;
+        for (int i = 0; i < size && i < count - currId; i++) {
+            pageList.add(userList.get(currId + i));
+        }
+        page1.setSize(size);
+        page1.setCurrent(current);
+        page1.setTotal(count);
+        // 计算分页总页数
+        page1.setPages(count % 10 == 0 ? count / 10 : count / 10 + 1);
+        page1.setRecords(pageList);
+        return page1;
+    }
+
     @Override
     public Page<UserVO> selectUserList1(Page<UserVO> page, UserDTO userDTO, HnqzUser user) {
 

+ 70 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/SysUserMapper.xml

@@ -229,6 +229,45 @@
         </if>
     </select>
 
+    <select id="selectByDeptId1" resultMap="userVoResultMap">
+        SELECT
+        *
+        FROM
+        sys_user u
+        LEFT JOIN sys_dept d ON d.dept_id = u.dept_id
+        LEFT JOIN sys_user_role ur ON ur.user_id = u.user_id
+#         LEFT JOIN sys_role r ON r.role_id = ur.role_id
+#         LEFT JOIN sys_dept_sub s ON s.dept_id = u.dept_id and s.enable_flag = '1'
+        where
+        u.del_flag = '0'
+        <if test="query.username != null and query.username !=''">
+            AND u.username like CONCAT('%',#{query.username},'%')
+        </if>
+        <if test="query.realname != null and query.realname !=''">
+            AND u.realname like CONCAT('%',#{query.realname},'%')
+        </if>
+        <if test="query.deptId != null and query.deptId != ''">
+            AND u.dept_id = #{query.deptId}
+        </if>
+        <if test="query.lockFlag != null and query.lockFlag != ''">
+            AND u.lock_flag = #{query.lockFlag}
+        </if>
+        <if test="query.role != null and query.role.size()>0">
+            AND ur.role_id in (
+            <foreach collection="query.role" item="pid" index="index" separator=",">
+                #{pid}
+            </foreach>
+            )
+        </if>
+        <if test="query.userIdList != null and query.userIdList.size() > 0">
+            AND u.user_id in (
+            <foreach collection="query.userIdList" item="userId" index="index" separator=",">
+                #{userId}
+            </foreach>
+            )
+        </if>
+    </select>
+
     <select id="selectByPhone" resultMap="userVoResultMap">
         SELECT
         *
@@ -309,6 +348,37 @@
         </if>
     </select>
 
+    <select id="selectByUserId1" resultMap="userVoResultMap">
+        SELECT
+        *
+        FROM
+        sys_user u
+        LEFT JOIN sys_dept d ON d.dept_id = u.dept_id
+        LEFT JOIN sys_user_role ur ON ur.user_id = u.user_id
+#         LEFT JOIN sys_role r ON r.role_id = ur.role_id
+        where
+        u.del_flag = '0'
+        <if test="query.username != null and query.username !=''">
+            AND u.username like CONCAT('%',#{query.username},'%')
+        </if>
+        <if test="query.realname != null and query.realname !=''">
+            AND u.realname like CONCAT('%',#{query.realname},'%')
+        </if>
+        <if test="query.userId != null and query.userId != ''">
+            AND u.user_id = #{query.userId}
+        </if>
+        <if test="query.lockFlag != null and query.lockFlag != ''">
+            AND u.lock_flag = #{query.lockFlag}
+        </if>
+        <if test="query.role != null and query.role.size()>0">
+            AND ur.role_id in (
+            <foreach collection="query.role" item="pid" index="index" separator=",">
+                #{pid}
+            </foreach>
+            )
+        </if>
+    </select>
+
     <select id="selectUserByName" resultMap="userResultMap">
         SELECT
         *