| ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-admin/src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -64,6 +64,9 @@ @Qualifier("sysUserDeptSystemMapper") private SysUserDeptMapper sysUserDeptMapper; @Autowired private ISysDeptService sysDeptService; @Value("${isAdmin}") private List<Long> isAdmin; @@ -147,17 +150,19 @@ } List<SysUserDept> sysUserDeptKSs = null; List<SysUserDept> sysUserDeptBQs = null; List<SysDept> sysDeptKSs = null; List<SysDept> sysDeptBQs = null; SysUserDept sysUserDept = new SysUserDept(); sysUserDept.setUserId(userId); sysUserDept.setDeptType("1"); sysUserDept.setOrgid(user.getOrgid()); sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); ajax.put("belongDepts", sysUserDeptKSs); sysDeptKSs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept); ajax.put("belongDepts", sysDeptKSs); sysUserDept.setDeptType("2"); sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); ajax.put("belongWards", sysUserDeptBQs); sysDeptBQs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept); ajax.put("belongWards", sysDeptBQs); return ajax; } ruoyi-admin/src/main/resources/application.yml
@@ -75,7 +75,7 @@ # å½é åèµæºæä»¶è·¯å¾ basename: i18n/messages profiles: active: druid active: ls # æä»¶ä¸ä¼ servlet: ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,88 @@ package com.ruoyi.common.utils; import com.ruoyi.common.core.domain.entity.SysDept; import java.util.*; import java.util.function.BiConsumer; import java.util.function.Function; import java.util.stream.Collectors; /** * æ ç»æå·¥å ·ç±»ï¼æ ¹æ® parentId æé æ ã䏿¬¡æ§è·åææå¶åèç¹ã * æ ¸å¿æ¹æ³ä¸ºæ³åå®ç°ï¼id / parentId / children éè¿å½æ°æ³¨å ¥ï¼å¯å¤ç¨äºä»»ä½èç¹ç±»åã */ public class TreeUtils { private TreeUtils() { } /* ================== éç¨æ¹æ³ ================== */ /** * æ ¹æ® parentId æé æ ï¼O(n) 䏿¬¡éåã * æ ¹èç¹ä¸ºãç¶Idä¸å¨éåä¸ãçèç¹ï¼è¥ä¸å卿 ¹èç¹ï¼å¦å ¨æ¯èªå¼ç¨çç¯ï¼ååæ ·è¿åã * * @param nodes èç¹å表 * @param idGetter åèç¹id * @param parentIdGetter åç¶èç¹id * @param childrenSetter 设置åèç¹å表 */ public static <T, K> List<T> buildTree( List<T> nodes, Function<T, K> idGetter, Function<T, K> parentIdGetter, BiConsumer<T, List<T>> childrenSetter) { if (nodes == null || nodes.isEmpty()) { return new ArrayList<>(); } // æç¶Idåç»ï¼ä¸æ¬¡éåæ¿å°æ¯ä¸ªèç¹çåå表 Map<K, List<T>> byParent = nodes.stream().collect(Collectors.groupingBy(parentIdGetter)); for (T node : nodes) { childrenSetter.accept(node, byParent.getOrDefault(idGetter.apply(node), new ArrayList<>())); } Set<K> ids = nodes.stream().map(idGetter).filter(Objects::nonNull).collect(Collectors.toSet()); List<T> roots = nodes.stream() .filter(n -> !ids.contains(parentIdGetter.apply(n))) .collect(Collectors.toList()); return roots.isEmpty() ? nodes : roots; } /** * 䏿¬¡æ§è·åææå¶åèç¹ï¼å³ãid ä¸åºç°å¨ä»»ä½èç¹ç parentId ä¸ãçèç¹ï¼O(n) 䏿¬¡éåã * * @param nodes èç¹å表 * @param idGetter åèç¹id * @param parentIdGetter åç¶èç¹id */ public static <T, K> List<T> getLeafNodes( List<T> nodes, Function<T, K> idGetter, Function<T, K> parentIdGetter) { if (nodes == null || nodes.isEmpty()) { return new ArrayList<>(); } Set<K> parentIds = nodes.stream() .map(parentIdGetter) .filter(Objects::nonNull) .collect(Collectors.toSet()); return nodes.stream() .filter(n -> !parentIds.contains(idGetter.apply(n))) .collect(Collectors.toList()); } /* ================== SysDept ä¾¿æ·æ¹æ³ ================== */ /** * æ ¹æ® SysDept.parentId æé é¨é¨æ */ public static List<SysDept> buildDeptTree(List<SysDept> depts) { return buildTree(depts, SysDept::getDeptId, SysDept::getParentId, SysDept::setChildren); } /** * 䏿¬¡æ§è·åææé¨é¨å¶åèç¹ */ public static List<SysDept> getLeafDepts(List<SysDept> depts) { return getLeafNodes(depts, SysDept::getHisDeptId, SysDept::getHisParentId); } } ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
@@ -2,6 +2,7 @@ import java.util.List; import com.ruoyi.common.core.domain.entity.SysUserDept; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import com.ruoyi.common.core.domain.entity.SysDept; @@ -120,4 +121,12 @@ * @return ç»æ */ public int deleteDeptById(Long deptId); /** * æ ¹æ®UserIDæ¥è¯¢ææåé¨é¨ * * @param sysUserDept é¨é¨gå ³ç³» * @return é¨é¨å表 */ public List<SysDept> selectSysDeptListBySysUserDept(SysUserDept sysUserDept); } ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
@@ -5,6 +5,7 @@ import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUserDept; /** * é¨é¨ç®¡ç æå¡å± @@ -129,4 +130,13 @@ * @return ç»æ */ public int deleteDeptById(Long deptId); /** * è·åå¶åç§å®¤ * * @param sysUserDept * @return ç»æ */ public List<SysDept> selectLeafSysDeptListBySysUserDept(SysUserDept sysUserDept); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -3,6 +3,10 @@ import java.util.*; import java.util.stream.Collectors; import cn.hutool.core.lang.tree.TreeUtil; import com.ruoyi.common.core.domain.entity.SysUserDept; import com.ruoyi.common.utils.TreeUtils; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -315,4 +319,14 @@ private boolean hasChild(List<SysDept> list, SysDept t) { return getChildList(list, t).size() > 0; } public List<SysDept> selectLeafSysDeptListBySysUserDept(SysUserDept sysUserDept){ List<SysDept> list = deptMapper.selectSysDeptListBySysUserDept(sysUserDept); if(CollectionUtils.isNotEmpty(list)){ List<SysDept> tree = TreeUtils.buildDeptTree(list); list = TreeUtils.getLeafDepts(tree); } return list; } } ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -178,6 +178,8 @@ where find_in_set(#{deptId}, ancestors) </select> <select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int"> select count(*) from sys_dept @@ -280,4 +282,17 @@ where dept_id = #{deptId} </delete> <select id="selectSysDeptListBySysUserDept" parameterType="com.ruoyi.common.core.domain.entity.SysUserDept" resultMap="SysDeptResult"> <include refid="selectDeptVo"/> inner join sys_user_dept ud on d.dept_code = ud.dept_code where 1=1 and d.del_flag = 0 and ud.del_flag = 0 <if test="orgid != null">and d.orgid = #{orgid} and ud.orgid = #{orgid}</if> <if test="campusid != null">and d.campusid = #{campusid} and ud.campusid = #{campusid}</if> <if test="userId != null">and ud.user_id = #{userId}</if> <if test="deptType != null and deptType != ''">and d.dept_type = #{deptType}</if> </select> </mapper> smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
@@ -265,8 +265,11 @@ List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform); if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) { ServiceSubtaskPreachform ssp = serviceSubtaskPreachforms.get(0); ssp.setSendstate("3"); serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp); //人工æ -3å·²é¢åç¶æ(service_subtask_preachform.sendstate = 3) if(StringUtils.isNotEmpty(ssp.getPreachform()) && !ssp.getPreachform().equals("1")){ ssp.setSendstate("3"); serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp); } } } if (serviceTask != null) {