Переглянути джерело

系统管理-用户管理:部门搜索优化,针对数据权限

ZhangWenQiang 4 роки тому
батько
коміт
982e5cb882

+ 190 - 189
happy-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java

@@ -50,7 +50,7 @@ import lombok.extern.slf4j.Slf4j;
  * <p>
  * 部门表 前端控制器
  * <p>
- * 
+ *
  * @Author: Steve @Since: 2019-01-22
  */
 @RestController
@@ -58,183 +58,184 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class SysDepartController {
 
-	@Autowired
-	private ISysDepartService sysDepartService;
+    @Autowired
+    private ISysDepartService sysDepartService;
 
-	/**
-	 * 查询数据 查出所有部门,并以树结构数据格式响应给前端
-	 * 
-	 * @return
-	 */
-	@RequestMapping(value = "/queryTreeList", method = RequestMethod.GET)
-	@PermissionData
-	public Result<List<SysDepartTreeModel>> queryTreeList(SysDepart sysDepart,HttpServletRequest req) {
-		Result<List<SysDepartTreeModel>> result = new Result<>();
-		try {
-			QueryWrapper<SysDepart> queryWrapper = QueryGenerator.initQueryWrapper(sysDepart, req.getParameterMap());
-			List<SysDepartTreeModel> list = sysDepartService.queryTreeList(queryWrapper);
-			result.setResult(list);
-			result.setSuccess(true);
-		} catch (Exception e) {
-			log.error(e.getMessage(),e);
-		}
-		return result;
-	}
+    /**
+     * 查询数据 查出所有部门,并以树结构数据格式响应给前端
+     *
+     * @return
+     */
+    @RequestMapping(value = "/queryTreeList", method = RequestMethod.GET)
+    @PermissionData
+    public Result<List<SysDepartTreeModel>> queryTreeList(SysDepart sysDepart, HttpServletRequest req) {
+        Result<List<SysDepartTreeModel>> result = new Result<>();
+        try {
+            QueryWrapper<SysDepart> queryWrapper = QueryGenerator.initQueryWrapper(sysDepart, req.getParameterMap());
+            List<SysDepartTreeModel> list = sysDepartService.queryTreeList(queryWrapper);
+            result.setResult(list);
+            result.setSuccess(true);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return result;
+    }
 
-	/**
-	 * 添加新数据 添加用户新建的部门对象数据,并保存到数据库
-	 * 
-	 * @param sysDepart
-	 * @return
-	 */
-	@RequestMapping(value = "/add", method = RequestMethod.POST)
-	@CacheEvict(value= {CacheConstant.DEPART_INFO_CACHE,CacheConstant.DEPART_IDMODEL_CACHE}, allEntries=true)
-	public Result<SysDepart> add(@RequestBody SysDepart sysDepart, HttpServletRequest request) {
-		Result<SysDepart> result = new Result<SysDepart>();
-		String username = JwtUtil.getUserNameByToken(request);
-		try {
-			sysDepart.setCreateBy(username);
-			sysDepartService.saveDepartData(sysDepart, username);
-			//清除部门树内存
-			// FindsDepartsChildrenUtil.clearSysDepartTreeList();
-			// FindsDepartsChildrenUtil.clearDepartIdModel();
-			result.success("添加成功!");
-		} catch (Exception e) {
-			log.error(e.getMessage(),e);
-			result.error500("操作失败");
-		}
-		return result;
-	}
+    /**
+     * 添加新数据 添加用户新建的部门对象数据,并保存到数据库
+     *
+     * @param sysDepart
+     * @return
+     */
+    @RequestMapping(value = "/add", method = RequestMethod.POST)
+    @CacheEvict(value = {CacheConstant.DEPART_INFO_CACHE, CacheConstant.DEPART_IDMODEL_CACHE}, allEntries = true)
+    public Result<SysDepart> add(@RequestBody SysDepart sysDepart, HttpServletRequest request) {
+        Result<SysDepart> result = new Result<SysDepart>();
+        String username = JwtUtil.getUserNameByToken(request);
+        try {
+            sysDepart.setCreateBy(username);
+            sysDepartService.saveDepartData(sysDepart, username);
+            //清除部门树内存
+            // FindsDepartsChildrenUtil.clearSysDepartTreeList();
+            // FindsDepartsChildrenUtil.clearDepartIdModel();
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
 
-	/**
-	 * 编辑数据 编辑部门的部分数据,并保存到数据库
-	 * 
-	 * @param sysDepart
-	 * @return
-	 */
-	@RequestMapping(value = "/edit", method = RequestMethod.PUT)
-	@CacheEvict(value= {CacheConstant.DEPART_INFO_CACHE,CacheConstant.DEPART_IDMODEL_CACHE}, allEntries=true)
-	public Result<SysDepart> edit(@RequestBody SysDepart sysDepart, HttpServletRequest request) {
-		String username = JwtUtil.getUserNameByToken(request);
-		sysDepart.setUpdateBy(username);
-		Result<SysDepart> result = new Result<SysDepart>();
-		SysDepart sysDepartEntity = sysDepartService.getById(sysDepart.getId());
-		if (sysDepartEntity == null) {
-			result.error500("未找到对应实体");
-		} else {
-			boolean ok = sysDepartService.updateDepartDataById(sysDepart, username);
-			// TODO 返回false说明什么?
-			if (ok) {
-				//清除部门树内存
-				//FindsDepartsChildrenUtil.clearSysDepartTreeList();
-				//FindsDepartsChildrenUtil.clearDepartIdModel();
-				result.success("修改成功!");
-			}
-		}
-		return result;
-	}
-	
-	 /**
-     *   通过id删除
-    * @param id
-    * @return
-    */
+    /**
+     * 编辑数据 编辑部门的部分数据,并保存到数据库
+     *
+     * @param sysDepart
+     * @return
+     */
+    @RequestMapping(value = "/edit", method = RequestMethod.PUT)
+    @CacheEvict(value = {CacheConstant.DEPART_INFO_CACHE, CacheConstant.DEPART_IDMODEL_CACHE}, allEntries = true)
+    public Result<SysDepart> edit(@RequestBody SysDepart sysDepart, HttpServletRequest request) {
+        String username = JwtUtil.getUserNameByToken(request);
+        sysDepart.setUpdateBy(username);
+        Result<SysDepart> result = new Result<SysDepart>();
+        SysDepart sysDepartEntity = sysDepartService.getById(sysDepart.getId());
+        if (sysDepartEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = sysDepartService.updateDepartDataById(sysDepart, username);
+            // TODO 返回false说明什么?
+            if (ok) {
+                //清除部门树内存
+                //FindsDepartsChildrenUtil.clearSysDepartTreeList();
+                //FindsDepartsChildrenUtil.clearDepartIdModel();
+                result.success("修改成功!");
+            }
+        }
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
     @RequestMapping(value = "/delete", method = RequestMethod.DELETE)
-	@CacheEvict(value= {CacheConstant.DEPART_INFO_CACHE,CacheConstant.DEPART_IDMODEL_CACHE}, allEntries=true)
-   public Result<SysDepart> delete(@RequestParam(name="id",required=true) String id) {
+    @CacheEvict(value = {CacheConstant.DEPART_INFO_CACHE, CacheConstant.DEPART_IDMODEL_CACHE}, allEntries = true)
+    public Result<SysDepart> delete(@RequestParam(name = "id", required = true) String id) {
+
+        Result<SysDepart> result = new Result<SysDepart>();
+        SysDepart sysDepart = sysDepartService.getById(id);
+        if (sysDepart == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = sysDepartService.delete(id);
+            if (ok) {
+                //清除部门树内存
+                //FindsDepartsChildrenUtil.clearSysDepartTreeList();
+                // FindsDepartsChildrenUtil.clearDepartIdModel();
+                result.success("删除成功!");
+            }
+        }
+        return result;
+    }
 
-       Result<SysDepart> result = new Result<SysDepart>();
-       SysDepart sysDepart = sysDepartService.getById(id);
-       if(sysDepart==null) {
-           result.error500("未找到对应实体");
-       }else {
-           boolean ok = sysDepartService.delete(id);
-           if(ok) {
-	            //清除部门树内存
-	   		   //FindsDepartsChildrenUtil.clearSysDepartTreeList();
-	   		   // FindsDepartsChildrenUtil.clearDepartIdModel();
-               result.success("删除成功!");
-           }
-       }
-       return result;
-   }
 
+    /**
+     * 批量删除 根据前端请求的多个ID,对数据库执行删除相关部门数据的操作
+     *
+     * @param ids
+     * @return
+     */
+    @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE)
+    @CacheEvict(value = {CacheConstant.DEPART_INFO_CACHE, CacheConstant.DEPART_IDMODEL_CACHE}, allEntries = true)
+    public Result<SysDepart> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
 
-	/**
-	 * 批量删除 根据前端请求的多个ID,对数据库执行删除相关部门数据的操作
-	 * 
-	 * @param ids
-	 * @return
-	 */
-	@RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE)
-	@CacheEvict(value= {CacheConstant.DEPART_INFO_CACHE,CacheConstant.DEPART_IDMODEL_CACHE}, allEntries=true)
-	public Result<SysDepart> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<SysDepart> result = new Result<SysDepart>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.sysDepartService.deleteBatchWithChildren(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
 
-		Result<SysDepart> result = new Result<SysDepart>();
-		if (ids == null || "".equals(ids.trim())) {
-			result.error500("参数不识别!");
-		} else {
-			this.sysDepartService.deleteBatchWithChildren(Arrays.asList(ids.split(",")));
-			result.success("删除成功!");
-		}
-		return result;
-	}
+    /**
+     * 查询数据 添加或编辑页面对该方法发起请求,以树结构形式加载所有部门的名称,方便用户的操作
+     *
+     * @return
+     */
+    @RequestMapping(value = "/queryIdTree", method = RequestMethod.GET)
+    @PermissionData
+    public Result<List<DepartIdModel>> queryIdTree(SysDepart sysDepart, HttpServletRequest req) {
+        Result<List<DepartIdModel>> result = new Result<>();
+        try {
+            QueryWrapper<SysDepart> queryWrapper = QueryGenerator.initQueryWrapper(sysDepart, req.getParameterMap());
+            List<DepartIdModel> list = sysDepartService.queryDepartIdTreeList(sysDepart, queryWrapper);
+            result.setResult(list);
+            result.setSuccess(true);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return result;
+    }
 
-	/**
-	 * 查询数据 添加或编辑页面对该方法发起请求,以树结构形式加载所有部门的名称,方便用户的操作
-	 * 
-	 * @return
-	 */
-	@RequestMapping(value = "/queryIdTree", method = RequestMethod.GET)
-	@PermissionData
-	public Result<List<DepartIdModel>> queryIdTree(SysDepart sysDepart,HttpServletRequest req) {
-		Result<List<DepartIdModel>> result = new Result<>();
-		try {
-			QueryWrapper<SysDepart> queryWrapper = QueryGenerator.initQueryWrapper(sysDepart, req.getParameterMap());
-			List<DepartIdModel> list = sysDepartService.queryDepartIdTreeList(queryWrapper);
-			result.setResult(list);
-			result.setSuccess(true);
-		} catch (Exception e) {
-			log.error(e.getMessage(),e);
-		}
-		return result;
-	}
-	 
-	/**
-	 * <p>
-	 * 部门搜索功能方法,根据关键字模糊搜索相关部门
-	 * </p>
-	 * 
-	 * @param keyWord
-	 * @return
-	 */
-	@RequestMapping(value = "/searchBy", method = RequestMethod.GET)
-	public Result<List<SysDepartTreeModel>> searchBy(@RequestParam(name = "keyWord", required = true) String keyWord) {
-		Result<List<SysDepartTreeModel>> result = new Result<List<SysDepartTreeModel>>();
-		try {
-			List<SysDepartTreeModel> treeList = this.sysDepartService.searhBy(keyWord);
-			if (treeList.size() == 0 || treeList == null) {
-				throw new Exception();
-			}
-			result.setSuccess(true);
-			result.setResult(treeList);
-			return result;
-		} catch (Exception e) {
-			e.fillInStackTrace();
-			result.setSuccess(false);
-			result.setMessage("查询失败或没有您想要的任何数据!");
-			return result;
-		}
-	}
+    /**
+     * <p>
+     * 部门搜索功能方法,根据关键字模糊搜索相关部门
+     * </p>
+     *
+     * @param keyWord
+     * @return
+     */
+    @RequestMapping(value = "/searchBy", method = RequestMethod.GET)
+    public Result<List<SysDepartTreeModel>> searchBy(@RequestParam(name = "keyWord", required = true) String keyWord) {
+        Result<List<SysDepartTreeModel>> result = new Result<List<SysDepartTreeModel>>();
+        try {
+            List<SysDepartTreeModel> treeList = this.sysDepartService.searhBy(keyWord);
+            if (treeList.size() == 0 || treeList == null) {
+                throw new Exception();
+            }
+            result.setSuccess(true);
+            result.setResult(treeList);
+            return result;
+        } catch (Exception e) {
+            e.fillInStackTrace();
+            result.setSuccess(false);
+            result.setMessage("查询失败或没有您想要的任何数据!");
+            return result;
+        }
+    }
 
 
-	/**
+    /**
      * 导出excel
      *
      * @param request
      */
     @RequestMapping(value = "/exportXls")
-    public ModelAndView exportXls(SysDepart sysDepart,HttpServletRequest request) {
+    public ModelAndView exportXls(SysDepart sysDepart, HttpServletRequest request) {
         // Step.1 组装查询条件
         QueryWrapper<SysDepart> queryWrapper = QueryGenerator.initQueryWrapper(sysDepart, request.getParameterMap());
         //Step.2 AutoPoi 导出Excel
@@ -243,15 +244,15 @@ public class SysDepartController {
         //按字典排序
         Collections.sort(pageList, new Comparator<SysDepart>() {
             @Override
-			public int compare(SysDepart arg0, SysDepart arg1) {
-            	return arg0.getOrgCode().compareTo(arg1.getOrgCode());
+            public int compare(SysDepart arg0, SysDepart arg1) {
+                return arg0.getOrgCode().compareTo(arg1.getOrgCode());
             }
         });
         //导出文件名称
         mv.addObject(NormalExcelConstants.FILE_NAME, "部门列表");
         mv.addObject(NormalExcelConstants.CLASS, SysDepart.class);
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("部门列表数据", "导出人:"+user.getRealname(), "导出信息"));
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("部门列表数据", "导出人:" + user.getRealname(), "导出信息"));
         mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
         return mv;
     }
@@ -274,41 +275,41 @@ public class SysDepartController {
             params.setHeadRows(1);
             params.setNeedSave(true);
             try {
-            	// orgCode编码长度
-            	int codeLength = 3;
+                // orgCode编码长度
+                int codeLength = 3;
                 List<SysDepart> listSysDeparts = ExcelImportUtil.importExcel(file.getInputStream(), SysDepart.class, params);
                 //按长度排序
                 Collections.sort(listSysDeparts, new Comparator<SysDepart>() {
                     @Override
-					public int compare(SysDepart arg0, SysDepart arg1) {
-                    	return arg0.getOrgCode().length() - arg1.getOrgCode().length();
+                    public int compare(SysDepart arg0, SysDepart arg1) {
+                        return arg0.getOrgCode().length() - arg1.getOrgCode().length();
                     }
                 });
                 for (SysDepart sysDepart : listSysDeparts) {
-                	String orgCode = sysDepart.getOrgCode();
-                	if(orgCode.length() > codeLength) {
-                		String parentCode = orgCode.substring(0, orgCode.length()-codeLength);
-                		QueryWrapper<SysDepart> queryWrapper = new QueryWrapper<SysDepart>();
-                		queryWrapper.eq("org_code", parentCode);
-                		try {
-                		SysDepart parentDept = sysDepartService.getOne(queryWrapper);
-                		if(!parentDept.equals(null)) {
-							sysDepart.setParentId(parentDept.getId());
-						} else {
-							sysDepart.setParentId("");
-						}
-                		}catch (Exception e) {
-                			//没有查找到parentDept
-                		}
-                	}else{
-                		sysDepart.setParentId("");
-					}
+                    String orgCode = sysDepart.getOrgCode();
+                    if (orgCode.length() > codeLength) {
+                        String parentCode = orgCode.substring(0, orgCode.length() - codeLength);
+                        QueryWrapper<SysDepart> queryWrapper = new QueryWrapper<SysDepart>();
+                        queryWrapper.eq("org_code", parentCode);
+                        try {
+                            SysDepart parentDept = sysDepartService.getOne(queryWrapper);
+                            if (!parentDept.equals(null)) {
+                                sysDepart.setParentId(parentDept.getId());
+                            } else {
+                                sysDepart.setParentId("");
+                            }
+                        } catch (Exception e) {
+                            //没有查找到parentDept
+                        }
+                    } else {
+                        sysDepart.setParentId("");
+                    }
                     sysDepartService.save(sysDepart);
                 }
                 return Result.ok("文件导入成功!数据行数:" + listSysDeparts.size());
             } catch (Exception e) {
-                log.error(e.getMessage(),e);
-                return Result.error("文件导入失败:"+e.getMessage());
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
             } finally {
                 try {
                     file.getInputStream().close();

+ 1 - 1
happy-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java

@@ -32,7 +32,7 @@ public interface ISysDepartService extends IService<SysDepart> {
      *
      * @return
      */
-    public List<DepartIdModel> queryDepartIdTreeList(QueryWrapper<SysDepart> queryWrapper);
+    public List<DepartIdModel> queryDepartIdTreeList(SysDepart sysDepart, QueryWrapper<SysDepart> queryWrapper);
 
     /**
      * 保存部门数据

+ 21 - 11
happy-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java

@@ -7,6 +7,7 @@ import java.util.UUID;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.constant.CacheConstant;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.util.YouBianCodeUtil;
@@ -42,10 +43,7 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
     @Cacheable(value = CacheConstant.DEPART_INFO_CACHE)
     @Override
     public List<SysDepartTreeModel> queryTreeList(QueryWrapper<SysDepart> queryWrapper) {
-//        LambdaQueryWrapper<SysDepart> query = new LambdaQueryWrapper<SysDepart>();
-//        query.eq(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
-//        query.orderByAsc(SysDepart::getDepartOrder);
-        queryWrapper.eq("del_flag",CommonConstant.DEL_FLAG_0.toString());
+        queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0.toString());
         queryWrapper.orderByAsc("depart_order");
         List<SysDepart> list = this.list(queryWrapper);
         // 调用wrapTreeDataToTreeList方法生成树状数据
@@ -55,15 +53,27 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
 
     @Cacheable(value = CacheConstant.DEPART_IDMODEL_CACHE)
     @Override
-    public List<DepartIdModel> queryDepartIdTreeList(QueryWrapper<SysDepart> queryWrapper) {
-//        LambdaQueryWrapper<SysDepart> query = new LambdaQueryWrapper<SysDepart>();
-//        query.eq(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
-//        query.orderByAsc(SysDepart::getDepartOrder);
-        queryWrapper.eq("del_flag",CommonConstant.DEL_FLAG_0.toString());
+    public List<DepartIdModel> queryDepartIdTreeList(SysDepart sysDepart, QueryWrapper<SysDepart> queryWrapper) {
+        queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0.toString());
         queryWrapper.orderByAsc("depart_order");
         List<SysDepart> list = this.list(queryWrapper);
-        // 调用wrapTreeDataToTreeList方法生成树状数据
-        List<DepartIdModel> listResult = FindsDepartsChildrenUtil.wrapTreeDataToDepartIdTreeList(list);
+        List<DepartIdModel> listResult = new ArrayList<>();
+        //搜索条件不为空,则不进行树状处理
+        if (StringUtils.isNotBlank(sysDepart.getDepartName())) {
+            //update-begin--Author:huangzhilin  Date:20140417 for:[bugfree号]组织机构搜索回显优化--------------------
+            DepartIdModel model = new DepartIdModel();
+            if (list.size() > 0) {
+                for (SysDepart depart : list) {
+                    model = new DepartIdModel().convertByUserDepart(depart);
+                    model.setChildren(null);
+                    //update-end--Author:huangzhilin  Date:20140417 for:[bugfree号]组织机构搜索功回显优化----------------------
+                    listResult.add(model);
+                }
+            }
+        } else {
+            // 调用wrapTreeDataToTreeList方法生成树状数据
+            listResult = FindsDepartsChildrenUtil.wrapTreeDataToDepartIdTreeList(list);
+        }
         return listResult;
     }