瀏覽代碼

用户选择控件实现可显示上级机构

jiawuxian 1 年之前
父節點
當前提交
77484c8144

+ 2 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java

@@ -258,6 +258,8 @@ public class SysUser extends BaseEntity {
     private Integer orgType;
     @TableField(exist = false)
     private String orgShortName;
+    @TableField(exist = false)
+    private List<Long> parentOrgIds;
     public boolean isAdmin() {
         return isAdmin(this.getId());
     }

+ 8 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysDeptController.java

@@ -160,6 +160,14 @@ public class SysDeptController extends BaseController {
     }
 
     /**
+     * 获取本机构及下级机构,且包含(与本机构)同类型的上级机构
+     */
+    @GetMapping("/deptTree/depttreewithsametypeup")
+    public AjaxResult deptTreeWithSametypeUp() {
+        return success(deptService.deptTreeWithSametypeUp());
+    }
+
+    /**
      * 获取登录用户机构及下级机构树列表+路径上的上级机构
      */
     @GetMapping("/deptTree/wholetree/bytype")
@@ -189,7 +197,6 @@ public class SysDeptController extends BaseController {
         return success(deptService.orgWholePathTree(request));
     }
 
-
     /**
      * 获取缓存的行社及行社上级机构
      */

+ 11 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java

@@ -14,6 +14,7 @@ import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
 import com.xunmei.common.security.annotation.InnerAuth;
@@ -114,6 +115,16 @@ public class SysUserController extends BaseController {
         return ajax;
     }
 
+    /**
+     * 获取用户列表
+     */
+    @RequiresPermissions("system:user:list")
+    @GetMapping("/userselector/list")
+    public AjaxResult userSelectorList(SysUser user) {
+        TableDataInfo<SysUser> sysUserTableDataInfo = userService.userSelectorList(user);
+        return success(sysUserTableDataInfo);
+    }
+
     @RequiresPermissions("system:user:list")
     @GetMapping("/dictionlist")
     public R<List<SysUser>> list2(SysUser user) {

+ 6 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysDeptService.java

@@ -40,6 +40,12 @@ public interface ISysDeptService extends IService<SysDept> {
      */
     List<SysOrgVO> selectTreeByOrgType(Boolean includeUp,Boolean includeBangshichu, OrgTypeEnum orgType);
 
+    /**
+     * 获取本机构及下级机构,且上级机构若与本机构同类型,也获取
+     * @return
+     */
+    List<SysOrgVO> deptTreeWithSametypeUp();
+
     List<SysOrgVO> selectBusinessTreeList(SysOrgTreeRequestDto request);
 
     /**

+ 7 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserService.java

@@ -26,6 +26,13 @@ public interface ISysUserService extends IService<SysUser> {
      */
     TableDataInfo<SysUser> selectUserList(SysUser user);
 
+    /**
+     * 用户选择窗口查询用户分页列表
+     * @param user
+     * @return
+     */
+    TableDataInfo<SysUser>  userSelectorList(SysUser user);
+
     List<SysUser> selectSyncUserList(SysUser user);
 
     /**

+ 43 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeptServiceImpl.java

@@ -164,6 +164,49 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         return r;
     }
 
+    /**
+     * 获取本机构及下级机构,且上级机构若与本机构同类型,也获取
+     * @return
+     */
+    @Override
+    public List<SysOrgVO> deptTreeWithSametypeUp(){
+        Map<Long,SysOrgVO> cacheList = getOrgCache().stream().collect(Collectors.toMap(SysOrgVO::getId,vo->vo));
+        Long orgId= SecurityUtils.getLoginUser().getOrgId();
+        if(!cacheList.containsKey(orgId)){
+            return  new ArrayList<>();
+        }
+
+        SysOrgVO sysOrgVO =cacheList.get(orgId);
+        List<SysOrgVO> orgs=new ArrayList<>();
+        for (SysOrgVO org : cacheList.values()) {
+            String path = org.getPath();
+            if (StringUtils.isEmpty(path) || !path.startsWith(sysOrgVO.getPath())) {
+                continue;
+            }
+
+            if (StringUtils.isEmpty(org.getShortName())) {
+                org.setShortName(org.getName());
+            }
+            if (org.getSort() == null) {
+                org.setSort(100000);
+            }
+            orgs.add(org);
+        }
+        while(true){
+            if(!cacheList.containsKey(sysOrgVO.getParentId())){
+                break;
+            }
+            SysOrgVO parentVo=cacheList.get(sysOrgVO.getParentId());
+            if(ObjectUtil.notEqual(parentVo.getType(), sysOrgVO.getType()) ){
+                break;
+            }
+            orgs.add(parentVo);
+            sysOrgVO=parentVo;
+        }
+        SysOrg sysOrg = orgMapper.selectById(sysOrgVO.getId());
+        return generateTree(orgs, sysOrg);
+    }
+
     @Override
     public List<SysOrgVO> selectBusinessTreeList(SysOrgTreeRequestDto request) {
         SysOrg sysOrg = null;

+ 59 - 12
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

@@ -1,10 +1,14 @@
 package com.xunmei.system.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.UserConstants;
+import com.xunmei.common.core.domain.OrgTreeReq;
+import com.xunmei.common.core.domain.OrgTreeResp;
+import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToRole;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.util.BeanHelper;
@@ -97,14 +101,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
         //查询条件
         QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>();
-        SysOrg org = null;
-        if (null == user.getOrgId()) {
-            queryWrapper.eq("parent_id", -1);
-            org = sysOrgMapper.selectOne(queryWrapper);
-        } else {
-            org = sysOrgMapper.selectById(user.getOrgId());
+        if (user.getCheckSub()) {
+            SysOrg org = null;
+            if (null == user.getOrgId()) {
+                queryWrapper.eq("parent_id", -1);
+                org = sysOrgMapper.selectOne(queryWrapper);
+            } else {
+                org = sysOrgMapper.selectById(user.getOrgId());
+            }
+            user.setOrgPath(org.getPath());
         }
-        user.setOrgPath(org.getPath());
 
         //获取数据
         page = userMapper.getPage(page, user);
@@ -122,6 +128,47 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     /**
+     * 用户选择窗口查询用户分页列表
+     *
+     * @param user
+     * @return
+     */
+    @Override
+    public TableDataInfo<SysUser> userSelectorList(SysUser user) {
+        OrgTreeReq req = new OrgTreeReq();
+        req.setOrgId(user.getOrgId());
+        req.setCheckSub(user.getCheckSub());
+        if (user.getCheckSub()) {
+            OrgTreeResp r = orgService.getOrgTreeReq(req);
+//            if(ObjectUtil.isNotNull(r.getOrgId())){
+//                user.setOrgId(r.getOrgId());
+//            }
+
+            user.setOrgPath(r.getOrgPath());
+            user.setParentOrgIds(r.getOrgIdList());
+        }
+        user.setDeleted(0);
+        Page<SysUser> page;
+        //分页
+        if (user.getPageNum() != null && user.getPageSize() != null) {
+            page = new Page<>(user.getPageNum(), user.getPageSize());
+        } else {
+            page = new Page<>();
+        }
+        page = userMapper.getPage(page, user);
+        return TableDataInfo.build(page);
+//        user.setDeleted(0);
+//        Page<SysUser> page;
+//        //分页
+//        if (user.getPageNum() != null && user.getPageSize() != null) {
+//            page = new Page<>(user.getPageNum(), user.getPageSize());
+//        } else {
+//            page = new Page<>();
+//        }
+
+    }
+
+    /**
      * 查询同步进来的用户信息
      *
      * @param user 用户信息
@@ -134,12 +181,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    public List<SysUser>  selectUserListData(SysUser user) {
+    public List<SysUser> selectUserListData(SysUser user) {
         LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(SysUser::getDeleted,0);
-        wrapper.eq(SysUser::getIsLock,0);
-        wrapper.eq(SysUser::getLocked,0);
-        wrapper.eq(SysUser::getOrgId,SecurityUtils.getLoginUser().getOrgId());
+        wrapper.eq(SysUser::getDeleted, 0);
+        wrapper.eq(SysUser::getIsLock, 0);
+        wrapper.eq(SysUser::getLocked, 0);
+        wrapper.eq(SysUser::getOrgId, SecurityUtils.getLoginUser().getOrgId());
         return baseMapper.selectList(wrapper);
     }
 

+ 51 - 52
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -330,39 +330,39 @@
             <if test="username != null and username != ''">
                 user_name = #{username},
             </if>
-<!--            <if test="nickname != null and nickname != ''">-->
-<!--                nick_name = #{nickname},-->
-<!--            </if>-->
-<!--            <if test="email != null ">-->
-<!--                email = #{email},-->
-<!--            </if>-->
+            <!--            <if test="nickname != null and nickname != ''">-->
+            <!--                nick_name = #{nickname},-->
+            <!--            </if>-->
+            <!--            <if test="email != null ">-->
+            <!--                email = #{email},-->
+            <!--            </if>-->
             <if test="phone != null ">
                 phone = #{phone},
             </if>
             <if test="gender != null and gender != ''">
                 gender = #{gender},
             </if>
-<!--            <if test="avatar != null and avatar != ''">-->
-<!--                avatar = #{avatar},-->
-<!--            </if>-->
+            <!--            <if test="avatar != null and avatar != ''">-->
+            <!--                avatar = #{avatar},-->
+            <!--            </if>-->
             <if test="password != null and password != ''">
                 password = #{password},
             </if>
-<!--            <if test="status != null and status != ''">-->
-<!--                status = #{status},-->
-<!--            </if>-->
-<!--            <if test="loginIp != null and loginIp != ''">-->
-<!--                login_ip = #{loginIp},-->
-<!--            </if>-->
-<!--            <if test="loginDate != null">-->
-<!--                login_date = #{loginDate},-->
-<!--            </if>-->
+            <!--            <if test="status != null and status != ''">-->
+            <!--                status = #{status},-->
+            <!--            </if>-->
+            <!--            <if test="loginIp != null and loginIp != ''">-->
+            <!--                login_ip = #{loginIp},-->
+            <!--            </if>-->
+            <!--            <if test="loginDate != null">-->
+            <!--                login_date = #{loginDate},-->
+            <!--            </if>-->
             <if test="updateBy != null and updateBy != ''">
                 update_by = #{updateBy},
             </if>
-<!--            <if test="remark != null">-->
-<!--                remark = #{remark},-->
-<!--            </if>-->
+            <!--            <if test="remark != null">-->
+            <!--                remark = #{remark},-->
+            <!--            </if>-->
             update_time = sysdate()
         </set>
         where id = #{id}
@@ -452,14 +452,22 @@
         FROM
         sys_user u
         LEFT JOIN sys_org o ON u.original_org_id = o.id
-        LEFT JOIN ( SELECT user_id FROM sys_user_role uo LEFT JOIN sys_role ro ON uo.role_id = ro.id WHERE ro.role_name LIKE '%安全保卫管理人员' ) h ON h.user_id = u.id
+        LEFT JOIN ( SELECT user_id FROM sys_user_role uo LEFT JOIN sys_role ro ON uo.role_id = ro.id WHERE ro.role_name
+        LIKE '%安全保卫管理人员' ) h ON h.user_id = u.id
         LEFT JOIN sys_user_role sro on u.id=sro.user_id
         LEFT JOIN sys_role sr on sro.role_id=sr.id
         where 1=1
         and u.deleted =0
         <choose>
             <when test="info.checkSub">
-                AND o.path like concat('%', #{info.orgPath}, '%')
+                AND (o.path like concat('%', #{info.orgPath}, '%')
+                <if test="info.parentOrgIds!=null and info.parentOrgIds.size()>0">
+                    or o.id in
+                    <foreach collection="info.parentOrgIds" separator="," open="(" close=")" item="orgId">
+                        #{orgId}
+                    </foreach>
+                </if>
+                )
             </when>
             <otherwise>
                 AND o.id = #{info.orgId}
@@ -497,16 +505,11 @@
         ORDER BY t.org_id DESC
     </select>
     <select id="selectrolesByOrgId" resultType="com.xunmei.system.api.domain.SysRole">
-        SELECT
-            r.*
-        FROM
-            sys_role r
-                LEFT JOIN sys_org o ON r.org_type = o.type
-        WHERE
-            1 = 1
-          AND o.id =#{orgId}
-
-
+        SELECT r.*
+        FROM sys_role r
+                 LEFT JOIN sys_org o ON r.org_type = o.type
+        WHERE 1 = 1
+          AND o.id = #{orgId}
     </select>
     <select id="getList" resultMap="SysUserResult">
         SELECT
@@ -550,7 +553,8 @@
         FROM
         sys_user u
         LEFT JOIN sys_org o ON u.original_org_id = o.id
-        LEFT JOIN ( SELECT user_id FROM sys_user_role uo LEFT JOIN sys_role ro ON uo.role_id = ro.id WHERE ro.role_name LIKE '%安全保卫管理人员' ) h ON h.user_id = u.id
+        LEFT JOIN ( SELECT user_id FROM sys_user_role uo LEFT JOIN sys_role ro ON uo.role_id = ro.id WHERE ro.role_name
+        LIKE '%安全保卫管理人员' ) h ON h.user_id = u.id
         LEFT JOIN sys_user_role sro on u.id=sro.user_id
         LEFT JOIN sys_role sr on sro.role_id=sr.id
         where 1=1
@@ -581,11 +585,10 @@
             AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{info.params.endTime},'%y%m%d')
         </if>
         ORDER BY u.update_time DESC
-
     </select>
     <select id="selectAllUser" resultType="com.xunmei.system.api.domain.SysUser">
-        select  * from
-            sys_user where  deleted=0 and is_lock =0 and locked=0
+        select * from
+        sys_user where deleted=0 and is_lock =0 and locked=0
         <if test="userName != null and userName != ''">
             AND name like concat('%', #{userName}, '%')
         </if>
@@ -598,22 +601,19 @@
         </foreach>
     </select>
     <select id="selectUserListByRoleAndOrg" resultType="com.xunmei.system.api.domain.SysUser">
-        SELECT DISTINCT
-            a.*
-        FROM
-            sys_user a
-                LEFT JOIN sys_org b ON a.org_id = b.id
-                LEFT JOIN sys_user_role c ON c.user_id = a.id
-                LEFT JOIN sys_role d ON d.id = c.role_id
-        WHERE
-            a.deleted = 0
+        SELECT DISTINCT a.*
+        FROM sys_user a
+                 LEFT JOIN sys_org b ON a.org_id = b.id
+                 LEFT JOIN sys_user_role c ON c.user_id = a.id
+                 LEFT JOIN sys_role d ON d.id = c.role_id
+        WHERE a.deleted = 0
           AND d.del_flag = 0
           AND b.id = #{sysRoleOrgDTO.orgId}
-          AND d.id IN (	SELECT role_id FROM core_resumption_plan_to_role WHERE plan_id=#{sysRoleOrgDTO.planId})
+          AND d.id IN (SELECT role_id FROM core_resumption_plan_to_role WHERE plan_id = #{sysRoleOrgDTO.planId})
     </select>
     <select id="select" resultType="com.xunmei.system.util.UserExport">
         SELECT
-        #         h.user_id AS is_manager,
+        # h.user_id AS is_manager,
         GROUP_CONCAT(sr.role_name) role_names,
         CONCAT(',',GROUP_CONCAT( sr.id ),',') as roleIds,
         u.id,
@@ -655,7 +655,8 @@
         FROM
         sys_user u
         LEFT JOIN sys_org o ON u.original_org_id = o.id
-        LEFT JOIN ( SELECT user_id FROM sys_user_role uo LEFT JOIN sys_role ro ON uo.role_id = ro.id WHERE ro.role_name LIKE '%安全保卫管理人员' ) h ON h.user_id = u.id
+        LEFT JOIN ( SELECT user_id FROM sys_user_role uo LEFT JOIN sys_role ro ON uo.role_id = ro.id WHERE ro.role_name
+        LIKE '%安全保卫管理人员' ) h ON h.user_id = u.id
         LEFT JOIN sys_user_role sro on u.id=sro.user_id
         LEFT JOIN sys_role sr on sro.role_id=sr.id
         where 1=1
@@ -695,13 +696,11 @@
             AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{info.params.endTime},'%y%m%d')
         </if>
         group by u.id
-
     </select>
     <select id="selectCountByNames" resultType="java.lang.String">
-        select u.name from sys_user u where u.deleted=0 and  u.name in
+        select u.name from sys_user u where u.deleted=0 and u.name in
         <foreach collection="names" item="name" open="(" separator="," close=")">
             #{name}
         </foreach>
     </select>
-
 </mapper>