Explorar el Código

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

ZhangWenQiang hace 4 años
padre
commit
473143592d

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

@@ -1,322 +1,323 @@
-package org.jeecg.modules.system.controller;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.shiro.SecurityUtils;
-import org.apache.shiro.authz.annotation.RequiresRoles;
-import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.aspect.annotation.PermissionData;
-import org.jeecg.common.constant.CacheConstant;
-import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.system.util.JwtUtil;
-import org.jeecg.common.system.vo.LoginUser;
-import org.jeecg.modules.system.entity.SysDepart;
-import org.jeecg.modules.system.entity.SysRole;
-import org.jeecg.modules.system.entity.SysUser;
-import org.jeecg.modules.system.model.DepartIdModel;
-import org.jeecg.modules.system.model.SysDepartTreeModel;
-import org.jeecg.modules.system.service.ISysDepartService;
-import org.jeecg.modules.system.util.FindsDepartsChildrenUtil;
-import org.jeecgframework.poi.excel.ExcelImportUtil;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
-import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.annotation.CacheEvict;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-import org.springframework.web.servlet.ModelAndView;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * <p>
- * 部门表 前端控制器
- * <p>
- * 
- * @Author: Steve @Since: 2019-01-22
- */
-@RestController
-@RequestMapping("/sys/sysDepart")
-@Slf4j
-public class SysDepartController {
-
-	@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;
-	}
-
-	/**
-	 * 添加新数据 添加用户新建的部门对象数据,并保存到数据库
-	 * 
-	 * @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
-    */
-    @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) {
-
-       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) {
-
-		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(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;
-		}
-	}
-
-
-	/**
-     * 导出excel
-     *
-     * @param request
-     */
-    @RequestMapping(value = "/exportXls")
-    public ModelAndView exportXls(SysDepart sysDepart,HttpServletRequest request) {
-        // Step.1 组装查询条件
-        QueryWrapper<SysDepart> queryWrapper = QueryGenerator.initQueryWrapper(sysDepart, request.getParameterMap());
-        //Step.2 AutoPoi 导出Excel
-        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-        List<SysDepart> pageList = sysDepartService.list(queryWrapper);
-        //按字典排序
-        Collections.sort(pageList, new Comparator<SysDepart>() {
-            @Override
-			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.DATA_LIST, pageList);
-        return mv;
-    }
-
-    /**
-     * 通过excel导入数据
-     *
-     * @param request
-     * @param response
-     * @return
-     */
-    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
-        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
-            MultipartFile file = entity.getValue();// 获取上传文件对象
-            ImportParams params = new ImportParams();
-            params.setTitleRows(2);
-            params.setHeadRows(1);
-            params.setNeedSave(true);
-            try {
-            	// 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();
-                    }
-                });
-                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("");
-					}
-                    sysDepartService.save(sysDepart);
-                }
-                return Result.ok("文件导入成功!数据行数:" + listSysDeparts.size());
-            } catch (Exception e) {
-                log.error(e.getMessage(),e);
-                return Result.error("文件导入失败:"+e.getMessage());
-            } finally {
-                try {
-                    file.getInputStream().close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-        return Result.error("文件导入失败!");
-    }
-}
+package org.jeecg.modules.system.controller;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresRoles;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.PermissionData;
+import org.jeecg.common.constant.CacheConstant;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.util.JwtUtil;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.system.entity.SysDepart;
+import org.jeecg.modules.system.entity.SysRole;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.model.DepartIdModel;
+import org.jeecg.modules.system.model.SysDepartTreeModel;
+import org.jeecg.modules.system.service.ISysDepartService;
+import org.jeecg.modules.system.util.FindsDepartsChildrenUtil;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * <p>
+ * 部门表 前端控制器
+ * <p>
+ *
+ * @Author: Steve @Since: 2019-01-22
+ */
+@RestController
+@RequestMapping("/sys/sysDepart")
+@Slf4j
+public class SysDepartController {
+
+    @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(sysDepart, 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 = "/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) {
+
+        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) {
+
+        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;
+    }
+
+    /**
+     * <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) {
+        // Step.1 组装查询条件
+        QueryWrapper<SysDepart> queryWrapper = QueryGenerator.initQueryWrapper(sysDepart, request.getParameterMap());
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<SysDepart> pageList = sysDepartService.list(queryWrapper);
+        //按字典排序
+        Collections.sort(pageList, new Comparator<SysDepart>() {
+            @Override
+            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.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();// 获取上传文件对象
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                // 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();
+                    }
+                });
+                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("");
+                    }
+                    sysDepartService.save(sysDepart);
+                }
+                return Result.ok("文件导入成功!数据行数:" + listSysDeparts.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.error("文件导入失败!");
+    }
+}

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

@@ -1,106 +1,106 @@
-package org.jeecg.modules.system.service;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.jeecg.modules.system.entity.SysDepart;
-import org.jeecg.modules.system.model.DepartIdModel;
-import org.jeecg.modules.system.model.SysDepartTreeModel;
-
-import java.util.List;
-
-/**
- * <p>
- * 部门表 服务实现类
- * <p>
- *
- * @Author:Steve
- * @Since: 2019-01-22
- */
-public interface ISysDepartService extends IService<SysDepart> {
-
-
-    /**
-     * 查询所有部门信息,并分节点进行显示
-     *
-     * @return
-     */
-    List<SysDepartTreeModel> queryTreeList(QueryWrapper<SysDepart> queryWrapper);
-
-    /**
-     * 查询所有部门DepartId信息,并分节点进行显示
-     *
-     * @return
-     */
-    public List<DepartIdModel> queryDepartIdTreeList(QueryWrapper<SysDepart> queryWrapper);
-
-    /**
-     * 保存部门数据
-     *
-     * @param sysDepart
-     */
-    void saveDepartData(SysDepart sysDepart, String username);
-
-    /**
-     * 更新depart数据
-     *
-     * @param sysDepart
-     * @return
-     */
-    Boolean updateDepartDataById(SysDepart sysDepart, String username);
-
-    /**
-     * 删除depart数据
-     * @param id
-     * @return
-     */
-    /* boolean removeDepartDataById(String id); */
-
-    /**
-     * 根据关键字搜索相关的部门数据
-     *
-     * @param keyWord
-     * @return
-     */
-    List<SysDepartTreeModel> searhBy(String keyWord);
-
-    /**
-     * 根据部门id删除并删除其可能存在的子级部门
-     *
-     * @param id
-     * @return
-     */
-    boolean delete(String id);
-
-    /**
-     * 查询SysDepart集合
-     *
-     * @param userId
-     * @return
-     */
-    public List<SysDepart> queryUserDeparts(String userId);
-
-
-    /**
-     * 根据部门id批量删除并删除其可能存在的子级部门
-     *
-     * @param id
-     * @return
-     */
-    void deleteBatchWithChildren(List<String> ids);
-
-    /**
-     * 逻辑删除
-     *
-     * @param sysDepart
-     */
-    void deleteByCompany(SysDepart sysDepart);
-
-    /**
-     * 通过orgCode 获取当前机构对象
-     *
-     * @param orgCode
-     */
-    SysDepart getByCode(String orgCode);
-
-}
+package org.jeecg.modules.system.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.system.entity.SysDepart;
+import org.jeecg.modules.system.model.DepartIdModel;
+import org.jeecg.modules.system.model.SysDepartTreeModel;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 部门表 服务实现类
+ * <p>
+ *
+ * @Author:Steve
+ * @Since: 2019-01-22
+ */
+public interface ISysDepartService extends IService<SysDepart> {
+
+
+    /**
+     * 查询所有部门信息,并分节点进行显示
+     *
+     * @return
+     */
+    List<SysDepartTreeModel> queryTreeList(SysDepart sysDepart, QueryWrapper<SysDepart> queryWrapper);
+
+    /**
+     * 查询所有部门DepartId信息,并分节点进行显示
+     *
+     * @return
+     */
+    public List<DepartIdModel> queryDepartIdTreeList(SysDepart sysDepart, QueryWrapper<SysDepart> queryWrapper);
+
+    /**
+     * 保存部门数据
+     *
+     * @param sysDepart
+     */
+    void saveDepartData(SysDepart sysDepart, String username);
+
+    /**
+     * 更新depart数据
+     *
+     * @param sysDepart
+     * @return
+     */
+    Boolean updateDepartDataById(SysDepart sysDepart, String username);
+
+    /**
+     * 删除depart数据
+     * @param id
+     * @return
+     */
+    /* boolean removeDepartDataById(String id); */
+
+    /**
+     * 根据关键字搜索相关的部门数据
+     *
+     * @param keyWord
+     * @return
+     */
+    List<SysDepartTreeModel> searhBy(String keyWord);
+
+    /**
+     * 根据部门id删除并删除其可能存在的子级部门
+     *
+     * @param id
+     * @return
+     */
+    boolean delete(String id);
+
+    /**
+     * 查询SysDepart集合
+     *
+     * @param userId
+     * @return
+     */
+    public List<SysDepart> queryUserDeparts(String userId);
+
+
+    /**
+     * 根据部门id批量删除并删除其可能存在的子级部门
+     *
+     * @param id
+     * @return
+     */
+    void deleteBatchWithChildren(List<String> ids);
+
+    /**
+     * 逻辑删除
+     *
+     * @param sysDepart
+     */
+    void deleteByCompany(SysDepart sysDepart);
+
+    /**
+     * 通过orgCode 获取当前机构对象
+     *
+     * @param orgCode
+     */
+    SysDepart getByCode(String orgCode);
+
+}

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

@@ -1,285 +1,310 @@
-package org.jeecg.modules.system.service.impl;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.jeecg.common.constant.CacheConstant;
-import org.jeecg.common.constant.CommonConstant;
-import org.jeecg.common.util.YouBianCodeUtil;
-import org.jeecg.modules.system.entity.SysDepart;
-import org.jeecg.modules.system.mapper.SysDepartMapper;
-import org.jeecg.modules.system.model.DepartIdModel;
-import org.jeecg.modules.system.model.SysDepartTreeModel;
-import org.jeecg.modules.system.service.ISysDepartService;
-import org.jeecg.modules.system.util.FindsDepartsChildrenUtil;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
-import io.netty.util.internal.StringUtil;
-
-/**
- * <p>
- * 部门表 服务实现类
- * <p>
- *
- * @Author Steve
- * @Since 2019-01-22
- */
-@Service
-public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart> implements ISysDepartService {
-
-    /**
-     * queryTreeList 对应 queryTreeList 查询所有的部门数据,以树结构形式响应给前端
-     */
-    @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.orderByAsc("depart_order");
-        List<SysDepart> list = this.list(queryWrapper);
-        // 调用wrapTreeDataToTreeList方法生成树状数据
-        List<SysDepartTreeModel> listResult = FindsDepartsChildrenUtil.wrapTreeDataToTreeList(list);
-        return listResult;
-    }
-
-    @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());
-        queryWrapper.orderByAsc("depart_order");
-        List<SysDepart> list = this.list(queryWrapper);
-        // 调用wrapTreeDataToTreeList方法生成树状数据
-        List<DepartIdModel> listResult = FindsDepartsChildrenUtil.wrapTreeDataToDepartIdTreeList(list);
-        return listResult;
-    }
-
-    /**
-     * saveDepartData 对应 add 保存用户在页面添加的新的部门对象数据
-     */
-    @Override
-    @Transactional
-    public void saveDepartData(SysDepart sysDepart, String username) {
-        if (sysDepart != null && username != null) {
-            if (sysDepart.getParentId() == null) {
-                sysDepart.setParentId("");
-            }
-            String s = UUID.randomUUID().toString().replace("-", "");
-            sysDepart.setId(s);
-            // 先判断该对象有无父级ID,有则意味着不是最高级,否则意味着是最高级
-            // 获取父级ID
-            String parentId = sysDepart.getParentId();
-            String[] codeArray = generateOrgCode(parentId);
-            sysDepart.setOrgCode(codeArray[0]);
-            String orgType = codeArray[1];
-            sysDepart.setOrgType(String.valueOf(orgType));
-            sysDepart.setCreateTime(new Date());
-            sysDepart.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
-            this.save(sysDepart);
-        }
-
-    }
-
-    /**
-     * saveDepartData 的调用方法,生成部门编码和部门类型
-     *
-     * @param parentId
-     * @return
-     */
-    private String[] generateOrgCode(String parentId) {
-        //update-begin--Author:Steve  Date:20190201 for:组织机构添加数据代码调整
-        LambdaQueryWrapper<SysDepart> query = new LambdaQueryWrapper<SysDepart>();
-        LambdaQueryWrapper<SysDepart> query1 = new LambdaQueryWrapper<SysDepart>();
-        String[] strArray = new String[2];
-        // 创建一个List集合,存储查询返回的所有SysDepart对象
-        List<SysDepart> departList = new ArrayList<>();
-        // 定义新编码字符串
-        String newOrgCode = "";
-        // 定义旧编码字符串
-        String oldOrgCode = "";
-        // 定义部门类型
-        String orgType = "";
-        // 如果是最高级,则查询出同级的org_code, 调用工具类生成编码并返回
-        if (StringUtil.isNullOrEmpty(parentId)) {
-            // 线判断数据库中的表是否为空,空则直接返回初始编码
-            query1.eq(SysDepart::getParentId, "");
-            query1.orderByDesc(SysDepart::getOrgCode);
-            departList = this.list(query1);
-            if (departList == null || departList.size() == 0) {
-                strArray[0] = YouBianCodeUtil.getNextYouBianCode(null);
-                strArray[1] = "1";
-                return strArray;
-            } else {
-                SysDepart depart = departList.get(0);
-                oldOrgCode = depart.getOrgCode();
-                orgType = depart.getOrgType();
-                newOrgCode = YouBianCodeUtil.getNextYouBianCode(oldOrgCode);
-            }
-        } else { // 反之则查询出所有同级的部门,获取结果后有两种情况,有同级和没有同级
-            // 封装查询同级的条件
-            query.eq(SysDepart::getParentId, parentId);
-            // 降序排序
-            query.orderByDesc(SysDepart::getOrgCode);
-            // 查询出同级部门的集合
-            List<SysDepart> parentList = this.list(query);
-            // 查询出父级部门
-            SysDepart depart = this.getById(parentId);
-            // 获取父级部门的Code
-            String parentCode = depart.getOrgCode();
-            // 根据父级部门类型算出当前部门的类型
-            orgType = String.valueOf(Integer.valueOf(depart.getOrgType()) + 1);
-            // 处理同级部门为null的情况
-            if (parentList == null || parentList.size() == 0) {
-                // 直接生成当前的部门编码并返回
-                newOrgCode = YouBianCodeUtil.getSubYouBianCode(parentCode, null);
-            } else { //处理有同级部门的情况
-                // 获取同级部门的编码,利用工具类
-                String subCode = parentList.get(0).getOrgCode();
-                // 返回生成的当前部门编码
-                newOrgCode = YouBianCodeUtil.getSubYouBianCode(parentCode, subCode);
-            }
-        }
-        // 返回最终封装了部门编码和部门类型的数组
-        strArray[0] = newOrgCode;
-        strArray[1] = orgType;
-        return strArray;
-        //update-end--Author:Steve  Date:20190201 for:组织机构添加数据代码调整
-    }
-
-
-    /**
-     * removeDepartDataById 对应 delete方法 根据ID删除相关部门数据
-     *
-     */
-    /*
-     * @Override
-     *
-     * @Transactional public boolean removeDepartDataById(String id) {
-     * System.out.println("要删除的ID 为=============================>>>>>"+id); boolean
-     * flag = this.removeById(id); return flag; }
-     */
-
-    /**
-     * updateDepartDataById 对应 edit 根据部门主键来更新对应的部门数据
-     */
-    @Override
-    @Transactional
-    public Boolean updateDepartDataById(SysDepart sysDepart, String username) {
-        if (sysDepart != null && username != null) {
-            sysDepart.setUpdateTime(new Date());
-            sysDepart.setUpdateBy(username);
-            this.updateById(sysDepart);
-            return true;
-        } else {
-            return false;
-        }
-
-    }
-
-    @Override
-    @Transactional
-    public void deleteBatchWithChildren(List<String> ids) {
-        List<String> idList = new ArrayList<String>();
-        for (String id : ids) {
-            idList.add(id);
-            this.checkChildrenExists(id, idList);
-        }
-        this.removeByIds(idList);
-
-    }
-
-    @Override
-    @Transactional
-    public void deleteByCompany(SysDepart sysDepart) {
-        baseMapper.deleteByCompany(sysDepart);
-    }
-
-    /**
-     * 通过orgCode 获取当前机构对象
-     *
-     * @param orgCode
-     * @return
-     */
-    @Override
-    public SysDepart getByCode(String orgCode) {
-        return baseMapper.getByCode(orgCode);
-    }
-
-
-    /**
-     * <p>
-     * 根据关键字搜索相关的部门数据
-     * </p>
-     */
-    @Override
-    public List<SysDepartTreeModel> searhBy(String keyWord) {
-        LambdaQueryWrapper<SysDepart> query = new LambdaQueryWrapper<SysDepart>();
-        query.like(SysDepart::getDepartName, keyWord);
-        //update-begin--Author:huangzhilin  Date:20140417 for:[bugfree号]组织机构搜索回显优化--------------------
-        SysDepartTreeModel model = new SysDepartTreeModel();
-        List<SysDepart> departList = this.list(query);
-        List<SysDepartTreeModel> newList = new ArrayList<>();
-        if (departList.size() > 0) {
-            for (SysDepart depart : departList) {
-                model = new SysDepartTreeModel(depart);
-                model.setChildren(null);
-                //update-end--Author:huangzhilin  Date:20140417 for:[bugfree号]组织机构搜索功回显优化----------------------
-                newList.add(model);
-            }
-            return newList;
-        }
-        return null;
-    }
-
-    /**
-     * 根据部门id删除并且删除其可能存在的子级任何部门
-     */
-    @Override
-    public boolean delete(String id) {
-        List<String> idList = new ArrayList<>();
-        idList.add(id);
-        this.checkChildrenExists(id, idList);
-        //清空部门树内存
-        //FindsDepartsChildrenUtil.clearDepartIdModel();
-        boolean ok = this.removeByIds(idList);
-        return ok;
-    }
-
-    /**
-     * delete 方法调用
-     *
-     * @param id
-     * @param idList
-     */
-    private void checkChildrenExists(String id, List<String> idList) {
-        LambdaQueryWrapper<SysDepart> query = new LambdaQueryWrapper<SysDepart>();
-        query.eq(SysDepart::getParentId, id);
-        List<SysDepart> departList = this.list(query);
-        if (departList != null && departList.size() > 0) {
-            for (SysDepart depart : departList) {
-                idList.add(depart.getId());
-                this.checkChildrenExists(depart.getId(), idList);
-            }
-        }
-    }
-
-    @Override
-    public List<SysDepart> queryUserDeparts(String userId) {
-        return baseMapper.queryUserDeparts(userId);
-    }
-
-
-}
+package org.jeecg.modules.system.service.impl;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+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;
+import org.jeecg.modules.system.entity.SysDepart;
+import org.jeecg.modules.system.mapper.SysDepartMapper;
+import org.jeecg.modules.system.model.DepartIdModel;
+import org.jeecg.modules.system.model.SysDepartTreeModel;
+import org.jeecg.modules.system.service.ISysDepartService;
+import org.jeecg.modules.system.util.FindsDepartsChildrenUtil;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import io.netty.util.internal.StringUtil;
+
+/**
+ * <p>
+ * 部门表 服务实现类
+ * <p>
+ *
+ * @Author Steve
+ * @Since 2019-01-22
+ */
+@Service
+public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart> implements ISysDepartService {
+
+    /**
+     * queryTreeList 对应 queryTreeList 查询所有的部门数据,以树结构形式响应给前端
+     */
+    @Cacheable(value = CacheConstant.DEPART_INFO_CACHE)
+    @Override
+    public List<SysDepartTreeModel> queryTreeList(SysDepart sysDepart, QueryWrapper<SysDepart> queryWrapper) {
+        queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0.toString());
+        queryWrapper.orderByAsc("depart_order");
+        List<SysDepart> list = this.list(queryWrapper);
+        List<SysDepartTreeModel> listResult = new ArrayList<>();
+        //搜索条件不为空,则不进行树状处理
+        if (StringUtils.isNotBlank(sysDepart.getDepartName())) {
+            //update-begin--Author:huangzhilin  Date:20140417 for:[bugfree号]组织机构搜索回显优化--------------------
+            SysDepartTreeModel model = new SysDepartTreeModel();
+            if (list.size() > 0) {
+                for (SysDepart depart : list) {
+                    model = new SysDepartTreeModel(depart);
+                    model.setChildren(null);
+                    //update-end--Author:huangzhilin  Date:20140417 for:[bugfree号]组织机构搜索功回显优化----------------------
+                    listResult.add(model);
+                }
+            }
+        } else {
+            // 调用wrapTreeDataToTreeList方法生成树状数据
+            listResult = FindsDepartsChildrenUtil.wrapTreeDataToTreeList(list);
+        }
+        return listResult;
+    }
+
+    @Cacheable(value = CacheConstant.DEPART_IDMODEL_CACHE)
+    @Override
+    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);
+        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;
+    }
+
+    /**
+     * saveDepartData 对应 add 保存用户在页面添加的新的部门对象数据
+     */
+    @Override
+    @Transactional
+    public void saveDepartData(SysDepart sysDepart, String username) {
+        if (sysDepart != null && username != null) {
+            if (sysDepart.getParentId() == null) {
+                sysDepart.setParentId("");
+            }
+            String s = UUID.randomUUID().toString().replace("-", "");
+            sysDepart.setId(s);
+            // 先判断该对象有无父级ID,有则意味着不是最高级,否则意味着是最高级
+            // 获取父级ID
+            String parentId = sysDepart.getParentId();
+            String[] codeArray = generateOrgCode(parentId);
+            sysDepart.setOrgCode(codeArray[0]);
+            String orgType = codeArray[1];
+            sysDepart.setOrgType(String.valueOf(orgType));
+            sysDepart.setCreateTime(new Date());
+            sysDepart.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
+            this.save(sysDepart);
+        }
+
+    }
+
+    /**
+     * saveDepartData 的调用方法,生成部门编码和部门类型
+     *
+     * @param parentId
+     * @return
+     */
+    private String[] generateOrgCode(String parentId) {
+        //update-begin--Author:Steve  Date:20190201 for:组织机构添加数据代码调整
+        LambdaQueryWrapper<SysDepart> query = new LambdaQueryWrapper<SysDepart>();
+        LambdaQueryWrapper<SysDepart> query1 = new LambdaQueryWrapper<SysDepart>();
+        String[] strArray = new String[2];
+        // 创建一个List集合,存储查询返回的所有SysDepart对象
+        List<SysDepart> departList = new ArrayList<>();
+        // 定义新编码字符串
+        String newOrgCode = "";
+        // 定义旧编码字符串
+        String oldOrgCode = "";
+        // 定义部门类型
+        String orgType = "";
+        // 如果是最高级,则查询出同级的org_code, 调用工具类生成编码并返回
+        if (StringUtil.isNullOrEmpty(parentId)) {
+            // 线判断数据库中的表是否为空,空则直接返回初始编码
+            query1.eq(SysDepart::getParentId, "");
+            query1.orderByDesc(SysDepart::getOrgCode);
+            departList = this.list(query1);
+            if (departList == null || departList.size() == 0) {
+                strArray[0] = YouBianCodeUtil.getNextYouBianCode(null);
+                strArray[1] = "1";
+                return strArray;
+            } else {
+                SysDepart depart = departList.get(0);
+                oldOrgCode = depart.getOrgCode();
+                orgType = depart.getOrgType();
+                newOrgCode = YouBianCodeUtil.getNextYouBianCode(oldOrgCode);
+            }
+        } else { // 反之则查询出所有同级的部门,获取结果后有两种情况,有同级和没有同级
+            // 封装查询同级的条件
+            query.eq(SysDepart::getParentId, parentId);
+            // 降序排序
+            query.orderByDesc(SysDepart::getOrgCode);
+            // 查询出同级部门的集合
+            List<SysDepart> parentList = this.list(query);
+            // 查询出父级部门
+            SysDepart depart = this.getById(parentId);
+            // 获取父级部门的Code
+            String parentCode = depart.getOrgCode();
+            // 根据父级部门类型算出当前部门的类型
+            orgType = String.valueOf(Integer.valueOf(depart.getOrgType()) + 1);
+            // 处理同级部门为null的情况
+            if (parentList == null || parentList.size() == 0) {
+                // 直接生成当前的部门编码并返回
+                newOrgCode = YouBianCodeUtil.getSubYouBianCode(parentCode, null);
+            } else { //处理有同级部门的情况
+                // 获取同级部门的编码,利用工具类
+                String subCode = parentList.get(0).getOrgCode();
+                // 返回生成的当前部门编码
+                newOrgCode = YouBianCodeUtil.getSubYouBianCode(parentCode, subCode);
+            }
+        }
+        // 返回最终封装了部门编码和部门类型的数组
+        strArray[0] = newOrgCode;
+        strArray[1] = orgType;
+        return strArray;
+        //update-end--Author:Steve  Date:20190201 for:组织机构添加数据代码调整
+    }
+
+
+    /**
+     * removeDepartDataById 对应 delete方法 根据ID删除相关部门数据
+     *
+     */
+    /*
+     * @Override
+     *
+     * @Transactional public boolean removeDepartDataById(String id) {
+     * System.out.println("要删除的ID 为=============================>>>>>"+id); boolean
+     * flag = this.removeById(id); return flag; }
+     */
+
+    /**
+     * updateDepartDataById 对应 edit 根据部门主键来更新对应的部门数据
+     */
+    @Override
+    @Transactional
+    public Boolean updateDepartDataById(SysDepart sysDepart, String username) {
+        if (sysDepart != null && username != null) {
+            sysDepart.setUpdateTime(new Date());
+            sysDepart.setUpdateBy(username);
+            this.updateById(sysDepart);
+            return true;
+        } else {
+            return false;
+        }
+
+    }
+
+    @Override
+    @Transactional
+    public void deleteBatchWithChildren(List<String> ids) {
+        List<String> idList = new ArrayList<String>();
+        for (String id : ids) {
+            idList.add(id);
+            this.checkChildrenExists(id, idList);
+        }
+        this.removeByIds(idList);
+
+    }
+
+    @Override
+    @Transactional
+    public void deleteByCompany(SysDepart sysDepart) {
+        baseMapper.deleteByCompany(sysDepart);
+    }
+
+    /**
+     * 通过orgCode 获取当前机构对象
+     *
+     * @param orgCode
+     * @return
+     */
+    @Override
+    public SysDepart getByCode(String orgCode) {
+        return baseMapper.getByCode(orgCode);
+    }
+
+
+    /**
+     * <p>
+     * 根据关键字搜索相关的部门数据
+     * </p>
+     */
+    @Override
+    public List<SysDepartTreeModel> searhBy(String keyWord) {
+        LambdaQueryWrapper<SysDepart> query = new LambdaQueryWrapper<SysDepart>();
+        query.like(SysDepart::getDepartName, keyWord);
+        //update-begin--Author:huangzhilin  Date:20140417 for:[bugfree号]组织机构搜索回显优化--------------------
+        SysDepartTreeModel model = new SysDepartTreeModel();
+        List<SysDepart> departList = this.list(query);
+        List<SysDepartTreeModel> newList = new ArrayList<>();
+        if (departList.size() > 0) {
+            for (SysDepart depart : departList) {
+                model = new SysDepartTreeModel(depart);
+                model.setChildren(null);
+                //update-end--Author:huangzhilin  Date:20140417 for:[bugfree号]组织机构搜索功回显优化----------------------
+                newList.add(model);
+            }
+            return newList;
+        }
+        return null;
+    }
+
+    /**
+     * 根据部门id删除并且删除其可能存在的子级任何部门
+     */
+    @Override
+    public boolean delete(String id) {
+        List<String> idList = new ArrayList<>();
+        idList.add(id);
+        this.checkChildrenExists(id, idList);
+        //清空部门树内存
+        //FindsDepartsChildrenUtil.clearDepartIdModel();
+        boolean ok = this.removeByIds(idList);
+        return ok;
+    }
+
+    /**
+     * delete 方法调用
+     *
+     * @param id
+     * @param idList
+     */
+    private void checkChildrenExists(String id, List<String> idList) {
+        LambdaQueryWrapper<SysDepart> query = new LambdaQueryWrapper<SysDepart>();
+        query.eq(SysDepart::getParentId, id);
+        List<SysDepart> departList = this.list(query);
+        if (departList != null && departList.size() > 0) {
+            for (SysDepart depart : departList) {
+                idList.add(depart.getId());
+                this.checkChildrenExists(depart.getId(), idList);
+            }
+        }
+    }
+
+    @Override
+    public List<SysDepart> queryUserDeparts(String userId) {
+        return baseMapper.queryUserDeparts(userId);
+    }
+
+
+}