From 870976f6cf058b39213190b65733b286cc80bf7c Mon Sep 17 00:00:00 2001 From: wy <2168607338@qq.com> Date: Thu, 13 Jan 2022 20:04:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=84=E7=BB=87=E6=9C=BA?= =?UTF-8?q?=E6=9E=84=E5=B8=A6=E7=94=A8=E6=88=B7=E5=8A=A0=E8=BD=BD=E6=A0=91?= =?UTF-8?q?=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/sys/web/OfficeController.java | 30 +++++++++---------- .../sys/web/user/EmpUserController.java | 16 ++++++---- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/web/OfficeController.java b/modules/core/src/main/java/com/jeesite/modules/sys/web/OfficeController.java index f6516eb9..49317a62 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/web/OfficeController.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/web/OfficeController.java @@ -264,8 +264,8 @@ public class OfficeController extends BaseController { /** * 获取机构树结构数据 - * @param excludeCode 排除的ID - * @param parentCode 上级Code + * @param excludeCode 排除的ID + * @param parentCode 设置父级编码返回一级 * @param isAll 是否显示所有机构(true:不进行权限过滤) * @param officeTypes 机构类型(1:省级公司;2:市级公司;3:部门) * @param companyCode 仅查询公司下的机构 @@ -281,7 +281,7 @@ public class OfficeController extends BaseController { @ResponseBody public List> treeData(String excludeCode, String parentCode, Boolean isAll, String officeTypes, String companyCode, String isShowCode, String isShowFullName, - String isLoadUser, String postCode, String roleCode, String ctrlPermi) { + String isLoadUser, String userIdPrefix, String postCode, String roleCode, String ctrlPermi) { List> mapList = ListUtils.newArrayList(); Office where = new Office(); where.setStatus(Office.STATUS_NORMAL); @@ -297,6 +297,7 @@ public class OfficeController extends BaseController { if (StringUtils.isNotBlank(officeTypes)){ where.setOfficeType_in(officeTypes.split(",")); } + List idList = ListUtils.newArrayList(); List list = officeService.findList(where); for (int i = 0; i < list.size(); i++) { Office e = list.get(i); @@ -313,6 +314,7 @@ public class OfficeController extends BaseController { continue; } } + idList.add(e.getId()); Map map = MapUtils.newHashMap(); map.put("id", e.getId()); map.put("pId", e.getParentCode()); @@ -323,23 +325,21 @@ public class OfficeController extends BaseController { map.put("code", e.getViewCode()); map.put("name", StringUtils.getTreeNodeName(isShowCode, e.getViewCode(), name)); map.put("title", e.getFullName()); - // 如果需要加载用户,则处理用户数据 - if (StringUtils.inString(isLoadUser, "true", "lazy")) { - map.put("isParent", true); - // 一次性后台加载用户,若数据量比较大,建议使用懒加载 - if (StringUtils.equals(isLoadUser, "true")) { - List> userList = - empUserController.treeData("u_", e.getOfficeCode(), e.getOfficeCode(), - companyCode, postCode, roleCode, isAll, isShowCode, ctrlPermi); - mapList.addAll(userList); - } - } + // 返回是否是父节点,如果需要加载用户,则全部都是父节点,来加载用户数据 + map.put("isParent", !e.getIsTreeLeaf() || StringUtils.inString(isLoadUser, "true", "lazy")); mapList.add(map); } + // 一次性后台加载用户,若数据量比较大,建议使用懒加载 + if (StringUtils.equals(isLoadUser, "true") && idList.size() > 0) { + List> userList = + empUserController.treeData(userIdPrefix, idList.toArray(new String[idList.size()]), + companyCode, postCode, roleCode, isAll, isShowCode, ctrlPermi); + mapList.addAll(userList); + } // 懒加载用户,点击叶子节点的时候再去加载部门(懒加载无法回显,数据量大时,建议使用 listselect 实现列表选择用户) if (StringUtils.inString(isLoadUser, "lazy") && StringUtils.isNotBlank(parentCode)) { List> userList = - empUserController.treeData("u_", parentCode, parentCode, + empUserController.treeData(userIdPrefix, new String[]{parentCode}, companyCode, postCode, roleCode, isAll, isShowCode, ctrlPermi); mapList.addAll(userList); } diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/web/user/EmpUserController.java b/modules/core/src/main/java/com/jeesite/modules/sys/web/user/EmpUserController.java index f7ed2aa8..b863146d 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/web/user/EmpUserController.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/web/user/EmpUserController.java @@ -33,6 +33,7 @@ import com.jeesite.common.collect.MapUtils; import com.jeesite.common.config.Global; import com.jeesite.common.entity.Page; import com.jeesite.common.lang.DateUtils; +import com.jeesite.common.lang.ObjectUtils; import com.jeesite.common.lang.StringUtils; import com.jeesite.common.shiro.realm.AuthorizingRealm; import com.jeesite.common.utils.excel.ExcelExport; @@ -381,7 +382,6 @@ public class EmpUserController extends BaseController { /** * 根据机构查询用户树格式 * @param idPrefix id前缀,默认 u_ - * @param pId 父级编码,默认 0 * @param officeCode 机构Code * @param companyCode 公司Code * @param postCode 岗位Code @@ -393,13 +393,17 @@ public class EmpUserController extends BaseController { @RequiresPermissions("user") @RequestMapping(value = "treeData") @ResponseBody - public List> treeData(String idPrefix, String pId, - String officeCode, String companyCode, String postCode, String roleCode, + public List> treeData(String idPrefix, + String[] officeCode, String companyCode, String postCode, String roleCode, Boolean isAll, String isShowCode, String ctrlPermi) { List> mapList = ListUtils.newArrayList(); EmpUser empUser = new EmpUser(); Employee employee = empUser.getEmployee(); - employee.getOffice().setOfficeCode(officeCode); + if (officeCode != null && officeCode.length == 1) { + employee.getOffice().setOfficeCode(officeCode[0]); + }else { + employee.getOffice().setId_in(officeCode); + } employee.getOffice().setIsQueryChildren(false); employee.getCompany().setCompanyCode(companyCode); employee.getCompany().setIsQueryChildren(false); @@ -414,8 +418,8 @@ public class EmpUserController extends BaseController { for (int i = 0; i < list.size(); i++) { EmpUser e = list.get(i); Map map = MapUtils.newHashMap(); - map.put("id", StringUtils.defaultIfBlank(idPrefix, "u_") + e.getId()); - map.put("pId", StringUtils.defaultIfBlank(pId, "0")); + map.put("id", ObjectUtils.defaultIfNull(idPrefix, "u_") + e.getId()); + map.put("pId", StringUtils.defaultIfBlank(e.getEmployee().getOffice().getOfficeCode(), "0")); map.put("name", StringUtils.getTreeNodeName(isShowCode, e.getLoginCode(), e.getUserName())); mapList.add(map); }