From ad847473401730c14a5d667bd06afcb7d4575eb6 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期四, 22 二月 2024 09:33:40 +0800
Subject: [PATCH] #

---
 zy-asrs-flow/src/pages/system/menu/index.jsx                                    |  102 ++++++++++----------
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java                      |   40 ++++++++
 zy-asrs-flow/src/pages/system/dept/index.jsx                                    |   82 ++++++++--------
 zy-asrs-flow/src/pages/system/user/index.jsx                                    |   20 ++-
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/system/controller/DeptController.java |   13 +-
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/system/controller/MenuController.java |   15 ++-
 6 files changed, 163 insertions(+), 109 deletions(-)

diff --git a/zy-asrs-flow/src/pages/system/dept/index.jsx b/zy-asrs-flow/src/pages/system/dept/index.jsx
index 6b689dc..1db8636 100644
--- a/zy-asrs-flow/src/pages/system/dept/index.jsx
+++ b/zy-asrs-flow/src/pages/system/dept/index.jsx
@@ -110,12 +110,12 @@
             valueType: 'text',
             hidden: false,
             width: 240,
-            filterDropdown: (props) => <TextFilter
-                name='name'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-            />,
+            // filterDropdown: (props) => <TextFilter
+            //     name='name'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            // />,
         },
         {
             title: '涓婄骇閮ㄩ棬',
@@ -188,12 +188,12 @@
             valueType: 'text',
             hidden: false,
             width: 140,
-            filterDropdown: (props) => <TextFilter
-                name='leader'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-            />,
+            // filterDropdown: (props) => <TextFilter
+            //     name='leader'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            // />,
         },
         {
             title: '鏁伴噺',
@@ -214,12 +214,12 @@
             valueType: 'text',
             hidden: false,
             width: 140,
-            filterDropdown: (props) => <TextFilter
-                name='sort'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-            />,
+            // filterDropdown: (props) => <TextFilter
+            //     name='sort'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            // />,
             render: (_, record) => {
                 return <span style={{ fontWeight: "bold" }}>{_}</span>
             }
@@ -230,16 +230,16 @@
             valueType: 'text',
             hidden: false,
             width: 140,
-            filterDropdown: (props) => <SelectFilter
-                name='status'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-                data={[
-                    { label: '姝e父', value: 1 },
-                    { label: '绂佺敤', value: 0 },
-                ]}
-            />,
+            // filterDropdown: (props) => <SelectFilter
+            //     name='status'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            //     data={[
+            //         { label: '姝e父', value: 1 },
+            //         { label: '绂佺敤', value: 0 },
+            //     ]}
+            // />,
             render: (_, record) => {
                 const status = statusMap[record.status]
                 return <Tag color={status.color}>{status.text}</Tag>
@@ -251,12 +251,12 @@
             valueType: 'text',
             hidden: false,
             width: 140,
-            filterDropdown: (props) => <DatetimeRangeFilter
-                name='updateTime'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-            />,
+            // filterDropdown: (props) => <DatetimeRangeFilter
+            //     name='updateTime'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            // />,
         },
         {
             title: '淇敼浜哄憳',
@@ -264,13 +264,13 @@
             valueType: 'text',
             hidden: false,
             width: 140,
-            filterDropdown: (props) => <LinkFilter
-                name='updateBy'
-                major='user'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-            />,
+            // filterDropdown: (props) => <LinkFilter
+            //     name='updateBy'
+            //     major='user'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            // />,
         },
         {
             title: '澶囨敞',
diff --git a/zy-asrs-flow/src/pages/system/menu/index.jsx b/zy-asrs-flow/src/pages/system/menu/index.jsx
index d2ad362..c86ee75 100644
--- a/zy-asrs-flow/src/pages/system/menu/index.jsx
+++ b/zy-asrs-flow/src/pages/system/menu/index.jsx
@@ -122,12 +122,12 @@
             valueType: 'text',
             hidden: false,
             width: 240,
-            filterDropdown: (props) => <TextFilter
-                name='name'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-            />,
+            // filterDropdown: (props) => <TextFilter
+            //     name='name'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            // />,
         },
         {
             title: '涓婄骇鑿滃崟',
@@ -187,12 +187,12 @@
             valueType: 'text',
             hidden: false,
             width: 200,
-            filterDropdown: (props) => <TextFilter
-                name='route'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-            />,
+            // filterDropdown: (props) => <TextFilter
+            //     name='route'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            // />,
         },
         {
             title: '椤甸潰缁勪欢',
@@ -243,16 +243,16 @@
                 const type = typeMap[record.type]
                 return <Tag color={type.color}>{type.text}</Tag>
             },
-            filterDropdown: (props) => <SelectFilter
-                name='type'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-                data={[
-                    { label: '鑿滃崟', value: 0 },
-                    { label: '鎸夐挳', value: 1 },
-                ]}
-            />,
+            // filterDropdown: (props) => <SelectFilter
+            //     name='type'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            //     data={[
+            //         { label: '鑿滃崟', value: 0 },
+            //         { label: '鎸夐挳', value: 1 },
+            //     ]}
+            // />,
         },
         {
             title: '鏉冮檺鏍囪瘑',
@@ -260,12 +260,12 @@
             valueType: 'text',
             hidden: false,
             width: 140,
-            filterDropdown: (props) => <TextFilter
-                name='authority'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-            />,
+            // filterDropdown: (props) => <TextFilter
+            //     name='authority'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            // />,
         },
         {
             title: '鑿滃崟鍥炬爣',
@@ -310,16 +310,16 @@
                 const status = statusMap[record.status]
                 return <Tag color={status.color}>{status.text}</Tag>
             },
-            filterDropdown: (props) => <SelectFilter
-                name='status'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-                data={[
-                    { label: '姝e父', value: 1 },
-                    { label: '绂佺敤', value: 0 },
-                ]}
-            />,
+            // filterDropdown: (props) => <SelectFilter
+            //     name='status'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            //     data={[
+            //         { label: '姝e父', value: 1 },
+            //         { label: '绂佺敤', value: 0 },
+            //     ]}
+            // />,
         },
         {
             title: '娣诲姞鏃堕棿',
@@ -354,12 +354,12 @@
             valueType: 'text',
             hidden: false,
             width: 140,
-            filterDropdown: (props) => <DatetimeRangeFilter
-                name='updateTime'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-            />,
+            // filterDropdown: (props) => <DatetimeRangeFilter
+            //     name='updateTime'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            // />,
         },
         {
             title: '淇敼浜哄憳',
@@ -367,13 +367,13 @@
             valueType: 'text',
             hidden: false,
             width: 140,
-            filterDropdown: (props) => <LinkFilter
-                name='updateBy'
-                major='user'
-                {...props}
-                actionRef={actionRef}
-                setSearchParam={setSearchParam}
-            />,
+            // filterDropdown: (props) => <LinkFilter
+            //     name='updateBy'
+            //     major='user'
+            //     {...props}
+            //     actionRef={actionRef}
+            //     setSearchParam={setSearchParam}
+            // />,
         },
         {
             title: '澶囨敞',
diff --git a/zy-asrs-flow/src/pages/system/user/index.jsx b/zy-asrs-flow/src/pages/system/user/index.jsx
index 60919b4..dae8e2a 100644
--- a/zy-asrs-flow/src/pages/system/user/index.jsx
+++ b/zy-asrs-flow/src/pages/system/user/index.jsx
@@ -121,12 +121,8 @@
     const [deptExpandedKeys, setDeptExpandedKeys] = useState([]);
     const [pwdModalVisible, setPwdModalVisible] = useState(false);
 
-    useEffect(() => {
-        const handleResize = () => setBoxHeight(window.innerHeight - 368);
-        window.addEventListener('resize', handleResize);
-        handleResize();
-
-        Http.doPostPromise('/api/dept/tree', {}, (res) => {
+    const loadDeptTreeData = (param) => {
+        Http.doPostPromise('/api/dept/tree', param, (res) => {
             const rootMenu = { id: 0, name: '鍏ㄩ儴', value: 0, children: [] };
             rootMenu.children = res.data;
             // const treeData = transformTreeData([rootMenu]);
@@ -135,6 +131,14 @@
             const treeAllKeys = getTreeAllKeys(treeData);
             setDeptExpandedKeys(treeAllKeys);
         })
+    }
+
+    useEffect(() => {
+        const handleResize = () => setBoxHeight(window.innerHeight - 368);
+        window.addEventListener('resize', handleResize);
+        handleResize();
+
+        loadDeptTreeData();
 
         return () => window.removeEventListener('resize', handleResize);
     }, []);
@@ -485,7 +489,9 @@
                             placeholder="Search"
                             onChange={(e) => {
                                 const { value } = e.target;
-                                console.log(value);
+                                loadDeptTreeData({
+                                    condition: value
+                                })
                             }}
                         />
                         <div style={{height: 'calc(100vh - 350px)', overflowY: 'auto' }}>
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/system/controller/DeptController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/system/controller/DeptController.java
index 7d32bd4..5043785 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/system/controller/DeptController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/system/controller/DeptController.java
@@ -1,7 +1,6 @@
 package com.zy.asrs.wcs.system.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zy.asrs.framework.common.Cools;
 import com.zy.asrs.framework.common.R;
@@ -45,10 +44,14 @@
     @PreAuthorize("hasAuthority('system:dept:list')")
     @PostMapping("/dept/tree")
     public R tree(@RequestBody Map<String, Object> map) {
-        PageParam<Dept, BaseParam> param = new PageParam<>(buildParam(map, BaseParam.class), Dept.class);
-        QueryWrapper<Dept> wrapper = param.buildWrapper(true, queryWrapper -> queryWrapper.orderByAsc("sort"));
-        List<Dept> deptList = deptService.list(wrapper);
-        return R.ok().add(Utils.toTreeData(deptList, 0L, Dept::getParentId, Dept::getId, Dept::setChildren));
+//        PageParam<Dept, BaseParam> param = new PageParam<>(buildParam(map, BaseParam.class), Dept.class);
+//        QueryWrapper<Dept> wrapper = param.buildWrapper(true, queryWrapper -> queryWrapper.orderByAsc("sort"));
+        List<Dept> deptList = deptService.list(new LambdaQueryWrapper<Dept>().orderByAsc(Dept::getSort));
+        List<Dept> treeData = Utils.toTreeData(deptList, 0L, Dept::getParentId, Dept::getId, Dept::setChildren);
+        if (!Cools.isEmpty(map.get("condition"))) {
+            treeData = Utils.treeRemove(deptList, String.valueOf(map.get("condition")), Dept::getName, Dept::getChildren, Dept::setChildren);
+        }
+        return R.ok().add(treeData);
     }
 
     @PreAuthorize("hasAuthority('system:dept:list')")
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/system/controller/MenuController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/system/controller/MenuController.java
index 1335746..70787b8 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/system/controller/MenuController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/system/controller/MenuController.java
@@ -1,7 +1,6 @@
 package com.zy.asrs.wcs.system.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zy.asrs.framework.common.Cools;
 import com.zy.asrs.framework.common.R;
@@ -45,10 +44,16 @@
     @PreAuthorize("hasAuthority('system:menu:list')")
     @PostMapping("/menu/tree")
     public R tree(@RequestBody Map<String, Object> map) {
-        PageParam<Menu, BaseParam> param = new PageParam<>(buildParam(map, BaseParam.class), Menu.class);
-        QueryWrapper<Menu> wrapper = param.buildWrapper(true, queryWrapper -> queryWrapper.orderByAsc("sort"));
-        List<Menu> menus = menuService.list(wrapper);
-        return R.ok().add(Utils.toTreeData(menus, 0L, Menu::getParentId, Menu::getId, Menu::setChildren));
+//        PageParam<Menu, BaseParam> param = new PageParam<>(buildParam(map, BaseParam.class), Menu.class);
+//        QueryWrapper<Menu> wrapper = param.buildWrapper(true, queryWrapper -> queryWrapper.orderByAsc("sort"));
+//        List<Menu> menus = menuService.list(wrapper);
+//        return R.ok().add(Utils.toTreeData(menus, 0L, Menu::getParentId, Menu::getId, Menu::setChildren));
+        List<Menu> menuList = menuService.list(new LambdaQueryWrapper<Menu>().orderByAsc(Menu::getSort));
+        List<Menu> treeData = Utils.toTreeData(menuList, 0L, Menu::getParentId, Menu::getId, Menu::setChildren);
+        if (!Cools.isEmpty(map.get("condition"))) {
+            treeData = Utils.treeRemove(menuList, String.valueOf(map.get("condition")), Menu::getName, Menu::getChildren, Menu::setChildren);
+        }
+        return R.ok().add(treeData);
     }
 
     @PreAuthorize("hasAuthority('system:menu:list')")
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java
index fe7d834..fca97c6 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java
@@ -10,6 +10,7 @@
 import java.util.Optional;
 import java.util.function.BiConsumer;
 import java.util.function.Function;
+import java.util.function.Predicate;
 
 /**
  * Created by vincent on 2023/3/14
@@ -48,6 +49,45 @@
         return result;
     }
 
+//    public static <T> List<T> treeRemove(List<T> data, String condition,
+//                                         Function<? super T, ? extends String> fetcher,
+//                                         Function<T, List<T>> childrenGetter,
+//                                         BiConsumer<T, List<T>> childrenSetter) {
+//        List<T> result = new ArrayList<>();
+//        for (T node : data) {
+//            List<T> children = childrenGetter.apply(node);
+//
+//            if (children != null && !children.isEmpty()) {
+//                List<T> newChildren = treeRemove(children, condition, fetcher, childrenGetter, childrenSetter);
+//                childrenSetter.accept(node, newChildren);
+//            }
+//
+//            if (fetcher.apply(node).contains(condition)) {
+//                result.add(node);
+//            }
+//        }
+//        return result;
+//    }
+
+    public static <T> List<T> treeRemove(List<T> data, String condition,
+                                         Function<? super T, ? extends String> fetcher,
+                                         Function<T, List<T>> childrenGetter,
+                                         BiConsumer<T, List<T>> childrenSetter) {
+        List<T> result = new ArrayList<>();
+        Predicate<T> predicate = node -> fetcher.apply(node).contains(condition);
+        for (T node : data) {
+            List<T> children = childrenGetter.apply(node);
+            if (children != null && !children.isEmpty()) {
+                List<T> newChildren = treeRemove(children, condition, fetcher, childrenGetter, childrenSetter);
+                childrenSetter.accept(node, newChildren);
+            }
+            if (predicate.test(node)) {
+                result.add(node);
+            }
+        }
+        return result;
+    }
+
     /**
      * 鏁扮粍鍊掑簭
      * @param bytes

--
Gitblit v1.9.1