From 48e6a7175d35994d54d2dd86d7ee12f3f0cc50f3 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期五, 16 九月 2022 10:42:44 +0800 Subject: [PATCH] # --- src/main/java/com/zy/crm/common/utils/TreeUtils.java | 105 ++++++++++++++++++++++++++-------- src/main/java/com/zy/crm/manager/controller/TagController.java | 4 src/main/java/com/zy/crm/system/controller/DeptController.java | 17 +++++ src/main/java/com/zy/crm/system/mapper/UserMapper.java | 6 - src/main/webapp/static/js/cstmr/cstmr.js | 7 ++ src/main/webapp/views/cstmr/cstmr.html | 3 src/main/java/com/zy/crm/system/service/UserService.java | 2 src/main/java/com/zy/crm/system/service/impl/UserServiceImpl.java | 4 src/main/java/com/zy/crm/common/utils/ListUtils.java | 4 src/main/java/com/zy/crm/manager/controller/NodeController.java | 4 src/main/resources/mapper/UserMapper.xml | 13 ++++ 11 files changed, 127 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/zy/crm/common/utils/ListUtils.java b/src/main/java/com/zy/crm/common/utils/ListUtils.java index 8c19dce..6f56ddf 100644 --- a/src/main/java/com/zy/crm/common/utils/ListUtils.java +++ b/src/main/java/com/zy/crm/common/utils/ListUtils.java @@ -9,7 +9,7 @@ */ public class ListUtils { - public static List<Map> deepCopy(List<Map> src) throws IOException, ClassNotFoundException { + public static List<Map<String, Object>> deepCopy(List<Map<String, Object>> src) throws IOException, ClassNotFoundException { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(src); @@ -17,7 +17,7 @@ ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream in = new ObjectInputStream(byteIn); @SuppressWarnings("unchecked") - List<Map> dest = (List<Map>) in.readObject(); + List<Map<String, Object>> dest = (List<Map<String, Object>>) in.readObject(); return dest; } diff --git a/src/main/java/com/zy/crm/common/utils/TreeUtils.java b/src/main/java/com/zy/crm/common/utils/TreeUtils.java index 4c97962..0520963 100644 --- a/src/main/java/com/zy/crm/common/utils/TreeUtils.java +++ b/src/main/java/com/zy/crm/common/utils/TreeUtils.java @@ -2,15 +2,17 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; -import com.zy.crm.system.entity.Dept; -import com.zy.crm.system.service.DeptService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.stereotype.Component; import com.zy.crm.manager.entity.Node; import com.zy.crm.manager.entity.Tag; import com.zy.crm.manager.service.NodeService; import com.zy.crm.manager.service.TagService; +import com.zy.crm.system.entity.Dept; +import com.zy.crm.system.entity.User; +import com.zy.crm.system.service.DeptService; +import com.zy.crm.system.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Component; import java.util.*; @@ -27,6 +29,8 @@ private NodeService nodeService; @Autowired private DeptService deptService; + @Autowired + private UserService userService; /******************************** 褰掔被鏍� *********************************/ @@ -34,15 +38,15 @@ * 鑾峰彇鏍戝浘鏁版嵁缁撴瀯 */ @Cacheable(cacheNames="tagTree",key="#id") - public ArrayList<Map> getTree(String id, Long hostId){ - ArrayList<Map> result = new ArrayList<>(); + public ArrayList<Map<String, Object>> getTree(String id, Long hostId){ + ArrayList<Map<String, Object>> result = new ArrayList<>(); Tag tag = tagService.selectById(id); // 涓昏妭鐐� Map<String, Object> map = new HashMap<>(); map.put("title", tag.getName()); map.put("id", tag.getId()); map.put("spread", true); - List<Map> childrens = new ArrayList<>(); + List<Map<String, Object>> childrens = new ArrayList<>(); map.put("children", childrens); dealTag(tag, childrens, hostId); result.add(map); @@ -54,7 +58,7 @@ /** * 閫掑綊鑾峰彇瀛愯妭鐐规暟鎹� */ - public void dealTag(Tag parent, List<Map> list, Long hostId) { + public void dealTag(Tag parent, List<Map<String, Object>> list, Long hostId) { Wrapper<Tag> wrapper = new EntityWrapper<Tag>() .eq("parent_id", parent.getId()) .eq("status", "1"); @@ -67,7 +71,7 @@ map.put("title", tag.getName()); map.put("id", tag.getId()); map.put("spread", true); - List<Map> childrens = new ArrayList<>(); + List<Map<String, Object>> childrens = new ArrayList<>(); map.put("children", childrens); dealTag(tag, childrens, hostId); list.add(map); @@ -80,15 +84,15 @@ * 鑾峰彇鏍戝浘鏁版嵁缁撴瀯 */ @Cacheable(cacheNames="nodeTree",key="#id") - public ArrayList<Map> getNodeTree(String id, Long hostId){ - ArrayList<Map> result = new ArrayList<>(); + public ArrayList<Map<String, Object>> getNodeTree(String id, Long hostId){ + ArrayList<Map<String, Object>> result = new ArrayList<>(); Node node = nodeService.selectById(id); // 涓昏妭鐐� Map<String, Object> map = new HashMap<>(); map.put("title", node.getName()); map.put("id", node.getId()); map.put("spread", true); - List<Map> childrens = new ArrayList<>(); + List<Map<String, Object>> childrens = new ArrayList<>(); map.put("children", childrens); dealNode(node, childrens, hostId); result.add(map); @@ -100,7 +104,7 @@ /** * 閫掑綊鑾峰彇瀛愯妭鐐规暟鎹� */ - public void dealNode(Node parent, List<Map> list, Long hostId) { + public void dealNode(Node parent, List<Map<String, Object>> list, Long hostId) { Wrapper<Node> wrapper = new EntityWrapper<Node>() .eq("parent_id", parent.getId()) .eq("status", "1"); @@ -113,7 +117,7 @@ map.put("title", node.getName()); map.put("id", node.getId()); map.put("spread", true); - List<Map> childrens = new ArrayList<>(); + List<Map<String, Object>> childrens = new ArrayList<>(); map.put("children", childrens); dealNode(node, childrens, hostId); list.add(map); @@ -126,15 +130,15 @@ * 鑾峰彇鏍戝浘鏁版嵁缁撴瀯 */ @Cacheable(cacheNames="deptTree",key="#id") - public ArrayList<Map> getDeptTree(String id, Long hostId){ - ArrayList<Map> result = new ArrayList<>(); + public ArrayList<Map<String, Object>> getDeptTree(String id, Long hostId){ + ArrayList<Map<String, Object>> result = new ArrayList<>(); Dept dept = deptService.selectById(id); // 涓昏妭鐐� Map<String, Object> map = new HashMap<>(); map.put("title", dept.getName()); map.put("id", dept.getId()); map.put("spread", true); - List<Map> childrens = new ArrayList<>(); + List<Map<String, Object>> childrens = new ArrayList<>(); map.put("children", childrens); dealDept(dept, childrens, hostId); result.add(map); @@ -146,10 +150,10 @@ /** * 閫掑綊鑾峰彇瀛愯妭鐐规暟鎹� */ - public void dealDept(Dept parent, List<Map> list, Long hostId) { + public void dealDept(Dept parent, List<Map<String, Object>> list, Long hostId) { Wrapper<Dept> wrapper = new EntityWrapper<Dept>() .eq("parent_id", parent.getId()) - .eq("status", "1"); + .eq("status", 1); if (hostId != null) { wrapper.eq("host_id", hostId); } @@ -159,13 +163,64 @@ map.put("title", dept.getName()); map.put("id", dept.getId()); map.put("spread", true); - List<Map> childrens = new ArrayList<>(); + List<Map<String, Object>> childrens = new ArrayList<>(); map.put("children", childrens); dealDept(dept, childrens, hostId); list.add(map); } } + /******************************** 閮ㄩ棬 + 鍛樺伐 鏍� *********************************/ + + /** + * 鑾峰彇鏍戝浘鏁版嵁缁撴瀯 + */ + @Cacheable(cacheNames="deptUserTree",key="#id") + public ArrayList<Map<String, Object>> getDeptUserTree(String id, Long hostId){ + ArrayList<Map<String, Object>> result = new ArrayList<>(); + Dept dept = deptService.selectById(id); + // 涓昏妭鐐� + Map<String, Object> map = new HashMap<>(); + map.put("title", dept.getName()); + map.put("id", dept.getId()); + map.put("spread", true); + map.put("type", 0); + List<Map<String, Object>> childrens = new ArrayList<>(); + map.put("children", childrens); + dealUserDept(dept, childrens, hostId); + result.add(map); + return result; + } + + public void dealUserDept(Dept parent, List<Map<String, Object>> list, Long hostId) { + Wrapper<Dept> wrapper = new EntityWrapper<Dept>() + .eq("parent_id", parent.getId()) + .eq("status", 1); + if (hostId != null) { + wrapper.eq("host_id", hostId); + } + List<Dept> depts = deptService.selectList(wrapper); + + List<User> users = userService.getUserByDept(hostId, parent.getId()); + for (User user : users) { + Map<String, Object> map = new HashMap<>(); + map.put("title", user.getNickname()); + map.put("id", user.getId()); + map.put("type", 1); + list.add(map); + } + + for (Dept dept : depts) { + Map<String, Object> map = new HashMap<>(); + map.put("title", dept.getName()); + map.put("id", dept.getId()); + map.put("spread", true); + List<Map<String, Object>> childrens = new ArrayList<>(); + map.put("children", childrens); + dealUserDept(dept, childrens, hostId); + list.add(map); + } + } // ------------------------------------------------------------------------------------------------------- @@ -173,12 +228,12 @@ * 鏉′欢绛涢�� */ @SuppressWarnings("unchecked") - public void remove(String condition, List<Map> list) { - Iterator<Map> iterator = list.iterator(); + public void remove(String condition, List<Map<String, Object>> list) { + Iterator<Map<String, Object>> iterator = list.iterator(); while (iterator.hasNext()) { - Map map = iterator.next(); + Map<String, Object> map = iterator.next(); if (map.get("children") != null) { - List<Map> children = (List<Map>) map.get("children"); + List<Map<String, Object>> children = (List<Map<String, Object>>) map.get("children"); if (children.size() > 0) { remove(condition, children); } else { diff --git a/src/main/java/com/zy/crm/manager/controller/NodeController.java b/src/main/java/com/zy/crm/manager/controller/NodeController.java index 6a847f9..716d25c 100644 --- a/src/main/java/com/zy/crm/manager/controller/NodeController.java +++ b/src/main/java/com/zy/crm/manager/controller/NodeController.java @@ -238,9 +238,9 @@ @PostMapping(value = "/node/tree/auth") @ManagerAuth public R tree(@RequestParam(required = false, defaultValue = "") String condition) throws IOException, ClassNotFoundException { - ArrayList<Map> tree = treeUtils.getNodeTree(String.valueOf(getOriginNode().getId()), getHostId()); + ArrayList<Map<String, Object>> tree = treeUtils.getNodeTree(String.valueOf(getOriginNode().getId()), getHostId()); // 娣辨嫹璐� - List<Map> result = ListUtils.deepCopy(tree); + List<Map<String, Object>> result = ListUtils.deepCopy(tree); if (!Cools.isEmpty(condition)) { treeUtils.remove(condition, result); treeUtils.remove(condition, result); diff --git a/src/main/java/com/zy/crm/manager/controller/TagController.java b/src/main/java/com/zy/crm/manager/controller/TagController.java index 4f8b707..416c719 100644 --- a/src/main/java/com/zy/crm/manager/controller/TagController.java +++ b/src/main/java/com/zy/crm/manager/controller/TagController.java @@ -181,9 +181,9 @@ @PostMapping(value = "/tag/tree/auth") @ManagerAuth public R tree(@RequestParam(required = false, defaultValue = "") String condition) throws IOException, ClassNotFoundException { - ArrayList<Map> tree = treeUtils.getTree(String.valueOf(getOriginTag().getId()), getHostId()); + ArrayList<Map<String, Object>> tree = treeUtils.getTree(String.valueOf(getOriginTag().getId()), getHostId()); // 娣辨嫹璐� - List<Map> result = ListUtils.deepCopy(tree); + List<Map<String, Object>> result = ListUtils.deepCopy(tree); if (!Cools.isEmpty(condition)) { treeUtils.remove(condition, result); treeUtils.remove(condition, result); diff --git a/src/main/java/com/zy/crm/system/controller/DeptController.java b/src/main/java/com/zy/crm/system/controller/DeptController.java index b753f51..c4f4143 100644 --- a/src/main/java/com/zy/crm/system/controller/DeptController.java +++ b/src/main/java/com/zy/crm/system/controller/DeptController.java @@ -172,9 +172,22 @@ @PostMapping(value = "/dept/tree/auth") @ManagerAuth public R tree(@RequestParam(required = false, defaultValue = "") String condition) throws IOException, ClassNotFoundException { - ArrayList<Map> tree = treeUtils.getDeptTree(String.valueOf(getDeptId()), getHostId()); + ArrayList<Map<String, Object>> tree = treeUtils.getDeptTree(String.valueOf(getDeptId()), getHostId()); // 娣辨嫹璐� - List<Map> result = ListUtils.deepCopy(tree); + List<Map<String, Object>> result = ListUtils.deepCopy(tree); + if (!Cools.isEmpty(condition)) { + treeUtils.remove(condition, result); + treeUtils.remove(condition, result); + } + return R.ok(result); + } + + @PostMapping(value = "/dept/user/tree/auth") + @ManagerAuth + public R deptUserTree(@RequestParam(required = false, defaultValue = "") String condition) throws IOException, ClassNotFoundException { + ArrayList<Map<String, Object>> tree = treeUtils.getDeptUserTree(String.valueOf(getDeptId()), getHostId()); + // 娣辨嫹璐� + List<Map<String, Object>> result = ListUtils.deepCopy(tree); if (!Cools.isEmpty(condition)) { treeUtils.remove(condition, result); treeUtils.remove(condition, result); diff --git a/src/main/java/com/zy/crm/system/mapper/UserMapper.java b/src/main/java/com/zy/crm/system/mapper/UserMapper.java index bef5e5c..74937e2 100644 --- a/src/main/java/com/zy/crm/system/mapper/UserMapper.java +++ b/src/main/java/com/zy/crm/system/mapper/UserMapper.java @@ -2,11 +2,10 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.baomidou.mybatisplus.plugins.Page; +import com.zy.crm.system.entity.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; -import com.zy.crm.system.entity.User; import java.util.List; @@ -16,7 +15,6 @@ List<User> listByPage(Page page, @Param("hostId")Long hostId, @Param("deptId") String deptId, @Param("username") Object username, @Param("mobile") Object mobile); - @Select("select sys_user.* from sys_user left join sys_dept on sys_user.dept_id = sys_dept.id where sys_dept.parent_id = 1") - List<User> getUserByDept(Long deptId); + List<User> getUserByDept(@Param("hostId")Long hostId, @Param("deptId")Long deptId); } diff --git a/src/main/java/com/zy/crm/system/service/UserService.java b/src/main/java/com/zy/crm/system/service/UserService.java index 07d100f..c10e037 100644 --- a/src/main/java/com/zy/crm/system/service/UserService.java +++ b/src/main/java/com/zy/crm/system/service/UserService.java @@ -10,6 +10,6 @@ Page<User> getPage(Page page, Long hostId, String deptId, Object username, Object mobile); - List<User> getUserByDept(Long deptParentId); + List<User> getUserByDept(Long hostId, Long deptParentId); } diff --git a/src/main/java/com/zy/crm/system/service/impl/UserServiceImpl.java b/src/main/java/com/zy/crm/system/service/impl/UserServiceImpl.java index a67ff2f..62cff18 100644 --- a/src/main/java/com/zy/crm/system/service/impl/UserServiceImpl.java +++ b/src/main/java/com/zy/crm/system/service/impl/UserServiceImpl.java @@ -18,7 +18,7 @@ } @Override - public List<User> getUserByDept(Long dept) { - return this.baseMapper.getUserByDept(dept); + public List<User> getUserByDept(Long hostId, Long dept) { + return this.baseMapper.getUserByDept(hostId, dept); } } diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index 4265998..27edca6 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -38,4 +38,17 @@ ORDER BY su.create_time DESC </select> + <select id="getUserByDept" resultMap="BaseResultMap"> + SELECT + * + FROM sys_user + where 1=1 + <if test="hostId != null and hostId != ''"> + and host_id = #{hostId} + </if> + <if test="deptId != null and deptId != ''"> + and dept_id = #{deptId} + </if> + </select> + </mapper> diff --git a/src/main/webapp/static/js/cstmr/cstmr.js b/src/main/webapp/static/js/cstmr/cstmr.js index f12dc04..84c476b 100644 --- a/src/main/webapp/static/js/cstmr/cstmr.js +++ b/src/main/webapp/static/js/cstmr/cstmr.js @@ -18,9 +18,10 @@ // 鏍戝舰鍥� var organizationTree; + var selObj; window.loadTree = function(condition){ $.ajax({ - url: baseUrl+"/dept/tree/auth", + url: baseUrl+"/dept/user/tree/auth", headers: {'token': localStorage.getItem('token')}, data: { 'condition': condition @@ -37,6 +38,10 @@ selObj = obj; $('#organizationTree').find('.ew-tree-click').removeClass('ew-tree-click'); $(obj.elem).children('.layui-tree-entry').addClass('ew-tree-click'); + tableIns.reload({ + where: {dept_id: obj.data.id}, + page: {curr: 1} + }); } }); treeData = res.data; diff --git a/src/main/webapp/views/cstmr/cstmr.html b/src/main/webapp/views/cstmr/cstmr.html index 735cdf3..1495a17 100644 --- a/src/main/webapp/views/cstmr/cstmr.html +++ b/src/main/webapp/views/cstmr/cstmr.html @@ -99,8 +99,9 @@ <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> -<script type="text/javascript" src="../../static/js/cstmr/cstmr.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/layui/lay/modules/cascader/citys-data.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/cstmr/cstmr.js" charset="utf-8"></script> + </body> <!-- 琛ㄥ崟寮圭獥 --> <script type="text/html" id="editDialog"> -- Gitblit v1.9.1