qt5107 2 vuotta sitten
vanhempi
commit
4eb814a58d

+ 296 - 249
bladex/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java

@@ -18,12 +18,21 @@ package org.springblade.system.feign;
 
 import org.springblade.core.launch.constant.AppConstant;
 import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.*;
+import org.springblade.system.entity.Dept;
+import org.springblade.system.entity.Menu;
+import org.springblade.system.entity.Param;
+import org.springblade.system.entity.Post;
+import org.springblade.system.entity.Region;
+import org.springblade.system.entity.Role;
+import org.springblade.system.entity.Tenant;
+import org.springblade.system.entity.TenantPackage;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Feign接口类
@@ -31,256 +40,294 @@ import java.util.List;
  * @author Chill
  */
 @FeignClient(
-	value = AppConstant.APPLICATION_SYSTEM_NAME,
-	fallback = ISysClientFallback.class
+        value = AppConstant.APPLICATION_SYSTEM_NAME,
+        fallback = ISysClientFallback.class
 )
 public interface ISysClient {
 
-	String API_PREFIX = "/client";
-	String MENU = API_PREFIX + "/menu";
-	String DEPT = API_PREFIX + "/dept";
-	String DEPT_IDS = API_PREFIX + "/dept-ids";
-	String DEPT_IDS_FUZZY = API_PREFIX + "/dept-ids-fuzzy";
-	String DEPT_NAME = API_PREFIX + "/dept-name";
-	String DEPT_NAMES = API_PREFIX + "/dept-names";
-	String DEPT_CHILD = API_PREFIX + "/dept-child";
-	String POST = API_PREFIX + "/post";
-	String POST_IDS = API_PREFIX + "/post-ids";
-	String POST_IDS_FUZZY = API_PREFIX + "/post-ids-fuzzy";
-	String POST_NAME = API_PREFIX + "/post-name";
-	String POST_NAMES = API_PREFIX + "/post-names";
-	String ROLE = API_PREFIX + "/role";
-	String ROLE_IDS = API_PREFIX + "/role-ids";
-	String ROLE_NAME = API_PREFIX + "/role-name";
-	String ROLE_NAMES = API_PREFIX + "/role-names";
-	String ROLE_ALIAS = API_PREFIX + "/role-alias";
-	String ROLE_ALIASES = API_PREFIX + "/role-aliases";
-	String TENANT = API_PREFIX + "/tenant";
-	String TENANT_ID = API_PREFIX + "/tenant-id";
-	String TENANT_PACKAGE = API_PREFIX + "/tenant-package";
-	String PARAM = API_PREFIX + "/param";
-	String PARAM_VALUE = API_PREFIX + "/param-value";
-	String REGION = API_PREFIX + "/region";
-
-	/**
-	 * 获取菜单
-	 *
-	 * @param id 主键
-	 * @return Menu
-	 */
-	@GetMapping(MENU)
-	R<Menu> getMenu(@RequestParam("id") Long id);
-
-	/**
-	 * 获取部门
-	 *
-	 * @param id 主键
-	 * @return Dept
-	 */
-	@GetMapping(DEPT)
-	R<Dept> getDept(@RequestParam("id") Long id);
-
-	/**
-	 * 获取部门id
-	 *
-	 * @param tenantId  租户id
-	 * @param deptNames 部门名
-	 * @return 部门id
-	 */
-	@GetMapping(DEPT_IDS)
-	R<String> getDeptIds(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
-
-	/**
-	 * 获取部门id
-	 *
-	 * @param tenantId  租户id
-	 * @param deptNames 部门名
-	 * @return 部门id
-	 */
-	@GetMapping(DEPT_IDS_FUZZY)
-	R<String> getDeptIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
-
-	/**
-	 * 获取部门名
-	 *
-	 * @param id 主键
-	 * @return 部门名
-	 */
-	@GetMapping(DEPT_NAME)
-	R<String> getDeptName(@RequestParam("id") Long id);
-
-	/**
-	 * 获取部门名
-	 *
-	 * @param deptIds 主键
-	 * @return
-	 */
-	@GetMapping(DEPT_NAMES)
-	R<List<String>> getDeptNames(@RequestParam("deptIds") String deptIds);
-
-	/**
-	 * 获取子部门ID
-	 *
-	 * @param deptId
-	 * @return
-	 */
-	@GetMapping(DEPT_CHILD)
-	R<List<Dept>> getDeptChild(@RequestParam("deptId") Long deptId);
-
-	/**
-	 * 获取岗位
-	 *
-	 * @param id 主键
-	 * @return Post
-	 */
-	@GetMapping(POST)
-	R<Post> getPost(@RequestParam("id") Long id);
-
-	/**
-	 * 获取岗位id
-	 *
-	 * @param tenantId  租户id
-	 * @param postNames 岗位名
-	 * @return 岗位id
-	 */
-	@GetMapping(POST_IDS)
-	R<String> getPostIds(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
-
-	/**
-	 * 获取岗位id
-	 *
-	 * @param tenantId  租户id
-	 * @param postNames 岗位名
-	 * @return 岗位id
-	 */
-	@GetMapping(POST_IDS_FUZZY)
-	R<String> getPostIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
-
-	/**
-	 * 获取岗位名
-	 *
-	 * @param id 主键
-	 * @return 岗位名
-	 */
-	@GetMapping(POST_NAME)
-	R<String> getPostName(@RequestParam("id") Long id);
-
-	/**
-	 * 获取岗位名
-	 *
-	 * @param postIds 主键
-	 * @return
-	 */
-	@GetMapping(POST_NAMES)
-	R<List<String>> getPostNames(@RequestParam("postIds") String postIds);
-
-	/**
-	 * 获取角色
-	 *
-	 * @param id 主键
-	 * @return Role
-	 */
-	@GetMapping(ROLE)
-	R<Role> getRole(@RequestParam("id") Long id);
-
-	/**
-	 * 获取角色id
-	 *
-	 * @param tenantId  租户id
-	 * @param roleNames 角色名
-	 * @return 角色id
-	 */
-	@GetMapping(ROLE_IDS)
-	R<String> getRoleIds(@RequestParam("tenantId") String tenantId, @RequestParam("roleNames") String roleNames);
-
-	/**
-	 * 获取角色名
-	 *
-	 * @param id 主键
-	 * @return 角色名
-	 */
-	@GetMapping(ROLE_NAME)
-	R<String> getRoleName(@RequestParam("id") Long id);
-
-	/**
-	 * 获取角色别名
-	 *
-	 * @param id 主键
-	 * @return 角色别名
-	 */
-	@GetMapping(ROLE_ALIAS)
-	R<String> getRoleAlias(@RequestParam("id") Long id);
-
-	/**
-	 * 获取角色名
-	 *
-	 * @param roleIds 主键
-	 * @return
-	 */
-	@GetMapping(ROLE_NAMES)
-	R<List<String>> getRoleNames(@RequestParam("roleIds") String roleIds);
-
-	/**
-	 * 获取角色别名
-	 *
-	 * @param roleIds 主键
-	 * @return 角色别名
-	 */
-	@GetMapping(ROLE_ALIASES)
-	R<List<String>> getRoleAliases(@RequestParam("roleIds") String roleIds);
-
-	/**
-	 * 获取租户
-	 *
-	 * @param id 主键
-	 * @return Tenant
-	 */
-	@GetMapping(TENANT)
-	R<Tenant> getTenant(@RequestParam("id") Long id);
-
-	/**
-	 * 获取租户
-	 *
-	 * @param tenantId 租户id
-	 * @return Tenant
-	 */
-	@GetMapping(TENANT_ID)
-	R<Tenant> getTenant(@RequestParam("tenantId") String tenantId);
-
-	/**
-	 * 获取租户产品包
-	 *
-	 * @param tenantId 租户id
-	 * @return Tenant
-	 */
-	@GetMapping(TENANT_PACKAGE)
-	R<TenantPackage> getTenantPackage(@RequestParam("tenantId") String tenantId);
-
-	/**
-	 * 获取参数
-	 *
-	 * @param id 主键
-	 * @return Param
-	 */
-	@GetMapping(PARAM)
-	R<Param> getParam(@RequestParam("id") Long id);
-
-	/**
-	 * 获取参数配置
-	 *
-	 * @param paramKey 参数key
-	 * @return String
-	 */
-	@GetMapping(PARAM_VALUE)
-	R<String> getParamValue(@RequestParam("paramKey") String paramKey);
-
-	/**
-	 * 获取行政区划
-	 *
-	 * @param code 主键
-	 * @return Region
-	 */
-	@GetMapping(REGION)
-	R<Region> getRegion(@RequestParam("code") String code);
+    String API_PREFIX = "/client";
+    String MENU = API_PREFIX + "/menu";
+    String DEPT = API_PREFIX + "/dept";
+    String DEPT_IDS = API_PREFIX + "/dept-ids";
+    String DEPT_IDS_FUZZY = API_PREFIX + "/dept-ids-fuzzy";
+    String DEPT_NAME = API_PREFIX + "/dept-name";
+    String DEPT_NAMES = API_PREFIX + "/dept-names";
+    String DEPT_CHILD = API_PREFIX + "/dept-child";
+    String POST = API_PREFIX + "/post";
+    String POST_IDS = API_PREFIX + "/post-ids";
+    String POST_IDS_FUZZY = API_PREFIX + "/post-ids-fuzzy";
+    String POST_NAME = API_PREFIX + "/post-name";
+    String POST_NAMES = API_PREFIX + "/post-names";
+    String ROLE = API_PREFIX + "/role";
+    String ROLE_IDS = API_PREFIX + "/role-ids";
+    String ROLE_NAME = API_PREFIX + "/role-name";
+    String ROLE_NAMES = API_PREFIX + "/role-names";
+    String ROLE_ALIAS = API_PREFIX + "/role-alias";
+    String ROLE_ALIASES = API_PREFIX + "/role-aliases";
+    String TENANT = API_PREFIX + "/tenant";
+    String TENANT_ID = API_PREFIX + "/tenant-id";
+    String TENANT_PACKAGE = API_PREFIX + "/tenant-package";
+    String PARAM = API_PREFIX + "/param";
+    String PARAM_VALUE = API_PREFIX + "/param-value";
+    String REGION = API_PREFIX + "/region";
+    String GET_DEPTS = API_PREFIX + "/getDepts";
+    String GET_DEPT_BY_IDS = API_PREFIX + "/getDeptByIds";
+    String GET_DEPT_BY_IDS_TO_MAP = API_PREFIX + "/getDeptByIdsToMap";
+    String GET_DEPT_ANCESTORS_BY_ID = API_PREFIX + "/getDeptAncestorsById";
 
+    /**
+     * 获取菜单
+     *
+     * @param id 主键
+     * @return Menu
+     */
+    @GetMapping(MENU)
+    R<Menu> getMenu(@RequestParam("id") Long id);
+
+    /**
+     * 获取部门
+     *
+     * @param id 主键
+     * @return Dept
+     */
+    @GetMapping(DEPT)
+    R<Dept> getDept(@RequestParam("id") Long id);
+
+    /**
+     * 获取部门id
+     *
+     * @param tenantId  租户id
+     * @param deptNames 部门名
+     * @return 部门id
+     */
+    @GetMapping(DEPT_IDS)
+    R<String> getDeptIds(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
+
+    /**
+     * 获取部门id
+     *
+     * @param tenantId  租户id
+     * @param deptNames 部门名
+     * @return 部门id
+     */
+    @GetMapping(DEPT_IDS_FUZZY)
+    R<String> getDeptIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
+
+    /**
+     * 获取部门名
+     *
+     * @param id 主键
+     * @return 部门名
+     */
+    @GetMapping(DEPT_NAME)
+    R<String> getDeptName(@RequestParam("id") Long id);
+
+    /**
+     * 获取部门名
+     *
+     * @param deptIds 主键
+     * @return
+     */
+    @GetMapping(DEPT_NAMES)
+    R<List<String>> getDeptNames(@RequestParam("deptIds") String deptIds);
+
+    /**
+     * 获取子部门ID
+     *
+     * @param deptId
+     * @return
+     */
+    @GetMapping(DEPT_CHILD)
+    R<List<Dept>> getDeptChild(@RequestParam("deptId") Long deptId);
+
+    /**
+     * 获取岗位
+     *
+     * @param id 主键
+     * @return Post
+     */
+    @GetMapping(POST)
+    R<Post> getPost(@RequestParam("id") Long id);
+
+    /**
+     * 获取岗位id
+     *
+     * @param tenantId  租户id
+     * @param postNames 岗位名
+     * @return 岗位id
+     */
+    @GetMapping(POST_IDS)
+    R<String> getPostIds(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
+
+    /**
+     * 获取岗位id
+     *
+     * @param tenantId  租户id
+     * @param postNames 岗位名
+     * @return 岗位id
+     */
+    @GetMapping(POST_IDS_FUZZY)
+    R<String> getPostIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
+
+    /**
+     * 获取岗位名
+     *
+     * @param id 主键
+     * @return 岗位名
+     */
+    @GetMapping(POST_NAME)
+    R<String> getPostName(@RequestParam("id") Long id);
+
+    /**
+     * 获取岗位名
+     *
+     * @param postIds 主键
+     * @return
+     */
+    @GetMapping(POST_NAMES)
+    R<List<String>> getPostNames(@RequestParam("postIds") String postIds);
+
+    /**
+     * 获取角色
+     *
+     * @param id 主键
+     * @return Role
+     */
+    @GetMapping(ROLE)
+    R<Role> getRole(@RequestParam("id") Long id);
+
+    /**
+     * 获取角色id
+     *
+     * @param tenantId  租户id
+     * @param roleNames 角色名
+     * @return 角色id
+     */
+    @GetMapping(ROLE_IDS)
+    R<String> getRoleIds(@RequestParam("tenantId") String tenantId, @RequestParam("roleNames") String roleNames);
+
+    /**
+     * 获取角色名
+     *
+     * @param id 主键
+     * @return 角色名
+     */
+    @GetMapping(ROLE_NAME)
+    R<String> getRoleName(@RequestParam("id") Long id);
+
+    /**
+     * 获取角色别名
+     *
+     * @param id 主键
+     * @return 角色别名
+     */
+    @GetMapping(ROLE_ALIAS)
+    R<String> getRoleAlias(@RequestParam("id") Long id);
+
+    /**
+     * 获取角色名
+     *
+     * @param roleIds 主键
+     * @return
+     */
+    @GetMapping(ROLE_NAMES)
+    R<List<String>> getRoleNames(@RequestParam("roleIds") String roleIds);
+
+    /**
+     * 获取角色别名
+     *
+     * @param roleIds 主键
+     * @return 角色别名
+     */
+    @GetMapping(ROLE_ALIASES)
+    R<List<String>> getRoleAliases(@RequestParam("roleIds") String roleIds);
+
+    /**
+     * 获取租户
+     *
+     * @param id 主键
+     * @return Tenant
+     */
+    @GetMapping(TENANT)
+    R<Tenant> getTenant(@RequestParam("id") Long id);
+
+    /**
+     * 获取租户
+     *
+     * @param tenantId 租户id
+     * @return Tenant
+     */
+    @GetMapping(TENANT_ID)
+    R<Tenant> getTenant(@RequestParam("tenantId") String tenantId);
+
+    /**
+     * 获取租户产品包
+     *
+     * @param tenantId 租户id
+     * @return Tenant
+     */
+    @GetMapping(TENANT_PACKAGE)
+    R<TenantPackage> getTenantPackage(@RequestParam("tenantId") String tenantId);
+
+    /**
+     * 获取参数
+     *
+     * @param id 主键
+     * @return Param
+     */
+    @GetMapping(PARAM)
+    R<Param> getParam(@RequestParam("id") Long id);
+
+    /**
+     * 获取参数配置
+     *
+     * @param paramKey 参数key
+     * @return String
+     */
+    @GetMapping(PARAM_VALUE)
+    R<String> getParamValue(@RequestParam("paramKey") String paramKey);
+
+    /**
+     * 获取行政区划
+     *
+     * @param code 主键
+     * @return Region
+     */
+    @GetMapping(REGION)
+    R<Region> getRegion(@RequestParam("code") String code);
+
+    /**
+     * 获取部门
+     *
+     * @return
+     */
+    @GetMapping(GET_DEPTS)
+    List<Dept> getDepts();
+
+    /**
+     * 根据部门ID查询部门
+     *
+     * @param deptIds 部门ID集合
+     * @return
+     */
+    @GetMapping(GET_DEPT_BY_IDS)
+    List<Dept> getDeptByIds(@RequestBody List<Long> deptIds);
+
+    /**
+     * 根据部门ID查询部门
+     *
+     * @param deptIds 部门ID集合
+     * @return
+     */
+    @GetMapping(GET_DEPT_BY_IDS_TO_MAP)
+    Map<Long, Dept> getDeptByIdsToMap(@RequestBody List<Long> deptIds);
+
+    /**
+     * 根据部门ID查询所有子级部门
+     *
+     * @param deptId 部门ID
+     * @return
+     */
+    @GetMapping(GET_DEPT_ANCESTORS_BY_ID)
+    List<Dept> getDeptAncestorsById(@RequestParam("deptId") Long deptId);
 }

+ 171 - 122
bladex/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java

@@ -17,10 +17,18 @@
 package org.springblade.system.feign;
 
 import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.*;
+import org.springblade.system.entity.Dept;
+import org.springblade.system.entity.Menu;
+import org.springblade.system.entity.Param;
+import org.springblade.system.entity.Post;
+import org.springblade.system.entity.Region;
+import org.springblade.system.entity.Role;
+import org.springblade.system.entity.Tenant;
+import org.springblade.system.entity.TenantPackage;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Feign失败配置
@@ -30,125 +38,166 @@ import java.util.List;
 @Component
 public class ISysClientFallback implements ISysClient {
 
-	@Override
-	public R<Menu> getMenu(Long id) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<Dept> getDept(Long id) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<String> getDeptIds(String tenantId, String deptNames) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<String> getDeptIdsByFuzzy(String tenantId, String deptNames) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<String> getDeptName(Long id) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<List<String>> getDeptNames(String deptIds) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<List<Dept>> getDeptChild(Long deptId) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<Post> getPost(Long id) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<String> getPostIds(String tenantId, String postNames) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<String> getPostIdsByFuzzy(String tenantId, String postNames) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<String> getPostName(Long id) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<List<String>> getPostNames(String postIds) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<Role> getRole(Long id) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<String> getRoleIds(String tenantId, String roleNames) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<String> getRoleName(Long id) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<String> getRoleAlias(Long id) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<List<String>> getRoleNames(String roleIds) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<List<String>> getRoleAliases(String roleIds) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<Tenant> getTenant(Long id) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<Tenant> getTenant(String tenantId) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<TenantPackage> getTenantPackage(String tenantId) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<Param> getParam(Long id) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<String> getParamValue(String paramKey) {
-		return R.fail("获取数据失败");
-	}
-
-	@Override
-	public R<Region> getRegion(String code) {
-		return R.fail("获取数据失败");
-	}
-
-
+    @Override
+    public R<Menu> getMenu(Long id) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<Dept> getDept(Long id) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<String> getDeptIds(String tenantId, String deptNames) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<String> getDeptIdsByFuzzy(String tenantId, String deptNames) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<String> getDeptName(Long id) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<List<String>> getDeptNames(String deptIds) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<List<Dept>> getDeptChild(Long deptId) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<Post> getPost(Long id) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<String> getPostIds(String tenantId, String postNames) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<String> getPostIdsByFuzzy(String tenantId, String postNames) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<String> getPostName(Long id) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<List<String>> getPostNames(String postIds) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<Role> getRole(Long id) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<String> getRoleIds(String tenantId, String roleNames) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<String> getRoleName(Long id) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<String> getRoleAlias(Long id) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<List<String>> getRoleNames(String roleIds) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<List<String>> getRoleAliases(String roleIds) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<Tenant> getTenant(Long id) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<Tenant> getTenant(String tenantId) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<TenantPackage> getTenantPackage(String tenantId) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<Param> getParam(Long id) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<String> getParamValue(String paramKey) {
+        return R.fail("获取数据失败");
+    }
+
+    @Override
+    public R<Region> getRegion(String code) {
+        return R.fail("获取数据失败");
+    }
+
+    /**
+     * 获取部门
+     *
+     * @return
+     */
+    @Override
+    public List<Dept> getDepts() {
+        return null;
+    }
+
+    /**
+     * 根据ID查询部门
+     *
+     * @param deptIds 部门ID集合
+     * @return
+     */
+    @Override
+    public List<Dept> getDeptByIds(List<Long> deptIds) {
+        return null;
+    }
+
+    /**
+     * 根据ID查询部门
+     *
+     * @param deptIds 部门ID集合
+     * @return
+     */
+    @Override
+    public Map<Long, Dept> getDeptByIdsToMap(List<Long> deptIds) {
+        return null;
+    }
+
+    /**
+     * 根据部门ID查询所有子级部门
+     *
+     * @param deptId 部门ID
+     * @return
+     */
+    @Override
+    public List<Dept> getDeptAncestorsById(Long deptId) {
+        return null;
+    }
 }

+ 212 - 156
bladex/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java

@@ -19,13 +19,28 @@ package org.springblade.system.feign;
 import lombok.AllArgsConstructor;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.*;
-import org.springblade.system.service.*;
+import org.springblade.system.entity.Dept;
+import org.springblade.system.entity.Menu;
+import org.springblade.system.entity.Param;
+import org.springblade.system.entity.Post;
+import org.springblade.system.entity.Region;
+import org.springblade.system.entity.Role;
+import org.springblade.system.entity.Tenant;
+import org.springblade.system.entity.TenantPackage;
+import org.springblade.system.service.IDeptService;
+import org.springblade.system.service.IMenuService;
+import org.springblade.system.service.IParamService;
+import org.springblade.system.service.IPostService;
+import org.springblade.system.service.IRegionService;
+import org.springblade.system.service.IRoleService;
+import org.springblade.system.service.ITenantPackageService;
+import org.springblade.system.service.ITenantService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 系统服务Feign实现类
@@ -38,158 +53,199 @@ import java.util.List;
 @AllArgsConstructor
 public class SysClient implements ISysClient {
 
-	private final IDeptService deptService;
-
-	private final IPostService postService;
-
-	private final IRoleService roleService;
-
-	private final IMenuService menuService;
-
-	private final ITenantService tenantService;
-
-	private final ITenantPackageService tenantPackageService;
-
-	private final IParamService paramService;
-
-	private final IRegionService regionService;
-
-	@Override
-	@GetMapping(MENU)
-	public R<Menu> getMenu(Long id) {
-		return R.data(menuService.getById(id));
-	}
-
-	@Override
-	@GetMapping(DEPT)
-	public R<Dept> getDept(Long id) {
-		return R.data(deptService.getById(id));
-	}
-
-	@Override
-	public R<String> getDeptIds(String tenantId, String deptNames) {
-		return R.data(deptService.getDeptIds(tenantId, deptNames));
-	}
-
-	@Override
-	public R<String> getDeptIdsByFuzzy(String tenantId, String deptNames) {
-		return R.data(deptService.getDeptIdsByFuzzy(tenantId, deptNames));
-	}
-
-	@Override
-	@GetMapping(DEPT_NAME)
-	public R<String> getDeptName(Long id) {
-		return R.data(deptService.getById(id).getDeptName());
-	}
-
-	@Override
-	@GetMapping(DEPT_NAMES)
-	public R<List<String>> getDeptNames(String deptIds) {
-		return R.data(deptService.getDeptNames(deptIds));
-	}
-
-	@Override
-	@GetMapping(DEPT_CHILD)
-	public R<List<Dept>> getDeptChild(Long deptId) {
-		return R.data(deptService.getDeptChild(deptId));
-	}
-
-	@Override
-	public R<Post> getPost(Long id) {
-		return R.data(postService.getById(id));
-	}
-
-	@Override
-	public R<String> getPostIds(String tenantId, String postNames) {
-		return R.data(postService.getPostIds(tenantId, postNames));
-	}
-
-	@Override
-	public R<String> getPostIdsByFuzzy(String tenantId, String postNames) {
-		return R.data(postService.getPostIdsByFuzzy(tenantId, postNames));
-	}
-
-	@Override
-	public R<String> getPostName(Long id) {
-		return R.data(postService.getById(id).getPostName());
-	}
-
-	@Override
-	public R<List<String>> getPostNames(String postIds) {
-		return R.data(postService.getPostNames(postIds));
-	}
-
-	@Override
-	@GetMapping(ROLE)
-	public R<Role> getRole(Long id) {
-		return R.data(roleService.getById(id));
-	}
-
-	@Override
-	public R<String> getRoleIds(String tenantId, String roleNames) {
-		return R.data(roleService.getRoleIds(tenantId, roleNames));
-	}
-
-	@Override
-	@GetMapping(ROLE_NAME)
-	public R<String> getRoleName(Long id) {
-		return R.data(roleService.getById(id).getRoleName());
-	}
-
-	@Override
-	@GetMapping(ROLE_ALIAS)
-	public R<String> getRoleAlias(Long id) {
-		return R.data(roleService.getById(id).getRoleAlias());
-	}
-
-	@Override
-	@GetMapping(ROLE_NAMES)
-	public R<List<String>> getRoleNames(String roleIds) {
-		return R.data(roleService.getRoleNames(roleIds));
-	}
-
-	@Override
-	@GetMapping(ROLE_ALIASES)
-	public R<List<String>> getRoleAliases(String roleIds) {
-		return R.data(roleService.getRoleAliases(roleIds));
-	}
-
-	@Override
-	@GetMapping(TENANT)
-	public R<Tenant> getTenant(Long id) {
-		return R.data(tenantService.getById(id));
-	}
-
-	@Override
-	@GetMapping(TENANT_ID)
-	public R<Tenant> getTenant(String tenantId) {
-		return R.data(tenantService.getByTenantId(tenantId));
-	}
-
-	@Override
-	@GetMapping(TENANT_PACKAGE)
-	public R<TenantPackage> getTenantPackage(String tenantId) {
-		Tenant tenant = tenantService.getByTenantId(tenantId);
-		return R.data(tenantPackageService.getById(tenant.getPackageId()));
-	}
-
-	@Override
-	@GetMapping(PARAM)
-	public R<Param> getParam(Long id) {
-		return R.data(paramService.getById(id));
-	}
-
-	@Override
-	@GetMapping(PARAM_VALUE)
-	public R<String> getParamValue(String paramKey) {
-		return R.data(paramService.getValue(paramKey));
-	}
-
-	@Override
-	@GetMapping(REGION)
-	public R<Region> getRegion(String code) {
-		return R.data(regionService.getById(code));
-	}
-
-
+    private final IDeptService deptService;
+
+    private final IPostService postService;
+
+    private final IRoleService roleService;
+
+    private final IMenuService menuService;
+
+    private final ITenantService tenantService;
+
+    private final ITenantPackageService tenantPackageService;
+
+    private final IParamService paramService;
+
+    private final IRegionService regionService;
+
+    @Override
+    @GetMapping(MENU)
+    public R<Menu> getMenu(Long id) {
+        return R.data(menuService.getById(id));
+    }
+
+    @Override
+    @GetMapping(DEPT)
+    public R<Dept> getDept(Long id) {
+        return R.data(deptService.getById(id));
+    }
+
+    @Override
+    public R<String> getDeptIds(String tenantId, String deptNames) {
+        return R.data(deptService.getDeptIds(tenantId, deptNames));
+    }
+
+    @Override
+    public R<String> getDeptIdsByFuzzy(String tenantId, String deptNames) {
+        return R.data(deptService.getDeptIdsByFuzzy(tenantId, deptNames));
+    }
+
+    @Override
+    @GetMapping(DEPT_NAME)
+    public R<String> getDeptName(Long id) {
+        return R.data(deptService.getById(id).getDeptName());
+    }
+
+    @Override
+    @GetMapping(DEPT_NAMES)
+    public R<List<String>> getDeptNames(String deptIds) {
+        return R.data(deptService.getDeptNames(deptIds));
+    }
+
+    @Override
+    @GetMapping(DEPT_CHILD)
+    public R<List<Dept>> getDeptChild(Long deptId) {
+        return R.data(deptService.getDeptChild(deptId));
+    }
+
+    @Override
+    public R<Post> getPost(Long id) {
+        return R.data(postService.getById(id));
+    }
+
+    @Override
+    public R<String> getPostIds(String tenantId, String postNames) {
+        return R.data(postService.getPostIds(tenantId, postNames));
+    }
+
+    @Override
+    public R<String> getPostIdsByFuzzy(String tenantId, String postNames) {
+        return R.data(postService.getPostIdsByFuzzy(tenantId, postNames));
+    }
+
+    @Override
+    public R<String> getPostName(Long id) {
+        return R.data(postService.getById(id).getPostName());
+    }
+
+    @Override
+    public R<List<String>> getPostNames(String postIds) {
+        return R.data(postService.getPostNames(postIds));
+    }
+
+    @Override
+    @GetMapping(ROLE)
+    public R<Role> getRole(Long id) {
+        return R.data(roleService.getById(id));
+    }
+
+    @Override
+    public R<String> getRoleIds(String tenantId, String roleNames) {
+        return R.data(roleService.getRoleIds(tenantId, roleNames));
+    }
+
+    @Override
+    @GetMapping(ROLE_NAME)
+    public R<String> getRoleName(Long id) {
+        return R.data(roleService.getById(id).getRoleName());
+    }
+
+    @Override
+    @GetMapping(ROLE_ALIAS)
+    public R<String> getRoleAlias(Long id) {
+        return R.data(roleService.getById(id).getRoleAlias());
+    }
+
+    @Override
+    @GetMapping(ROLE_NAMES)
+    public R<List<String>> getRoleNames(String roleIds) {
+        return R.data(roleService.getRoleNames(roleIds));
+    }
+
+    @Override
+    @GetMapping(ROLE_ALIASES)
+    public R<List<String>> getRoleAliases(String roleIds) {
+        return R.data(roleService.getRoleAliases(roleIds));
+    }
+
+    @Override
+    @GetMapping(TENANT)
+    public R<Tenant> getTenant(Long id) {
+        return R.data(tenantService.getById(id));
+    }
+
+    @Override
+    @GetMapping(TENANT_ID)
+    public R<Tenant> getTenant(String tenantId) {
+        return R.data(tenantService.getByTenantId(tenantId));
+    }
+
+    @Override
+    @GetMapping(TENANT_PACKAGE)
+    public R<TenantPackage> getTenantPackage(String tenantId) {
+        Tenant tenant = tenantService.getByTenantId(tenantId);
+        return R.data(tenantPackageService.getById(tenant.getPackageId()));
+    }
+
+    @Override
+    @GetMapping(PARAM)
+    public R<Param> getParam(Long id) {
+        return R.data(paramService.getById(id));
+    }
+
+    @Override
+    @GetMapping(PARAM_VALUE)
+    public R<String> getParamValue(String paramKey) {
+        return R.data(paramService.getValue(paramKey));
+    }
+
+    @Override
+    @GetMapping(REGION)
+    public R<Region> getRegion(String code) {
+        return R.data(regionService.getById(code));
+    }
+
+    /**
+     * 获取部门
+     *
+     * @return
+     */
+    @Override
+    public List<Dept> getDepts() {
+        return deptService.getDepts();
+    }
+
+    /**
+     * 根据部门ID查询部门
+     *
+     * @param deptIds 部门ID集合
+     * @return
+     */
+    @Override
+    public List<Dept> getDeptByIds(List<Long> deptIds) {
+        return deptService.getDeptByIds(deptIds);
+    }
+
+    /**
+     * 根据部门ID查询部门
+     *
+     * @param deptIds 部门ID集合
+     * @return
+     */
+    @Override
+    public Map<Long, Dept> getDeptByIdsToMap(List<Long> deptIds) {
+        return deptService.getDeptByIdsToMap(deptIds);
+    }
+
+    /**
+     * 根据部门ID查询所有子级部门
+     *
+     * @param deptId 部门ID
+     * @return
+     */
+    @Override
+    public List<Dept> getDeptAncestorsById(Long deptId) {
+        return deptService.getDeptAncestorsById(deptId);
+    }
 }

+ 115 - 85
bladex/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java

@@ -30,90 +30,120 @@ import java.util.Map;
  */
 public interface IDeptService extends IService<Dept> {
 
-	/**
-	 * 懒加载部门列表
-	 *
-	 * @param tenantId
-	 * @param parentId
-	 * @param param
-	 * @return
-	 */
-	List<DeptVO> lazyList(String tenantId, Long parentId, Map<String, Object> param);
-
-	/**
-	 * 树形结构
-	 *
-	 * @param tenantId
-	 * @return
-	 */
-	List<DeptVO> tree(String tenantId);
-
-	/**
-	 * 懒加载树形结构
-	 *
-	 * @param tenantId
-	 * @param parentId
-	 * @return
-	 */
-	List<DeptVO> lazyTree(String tenantId, Long parentId);
-
-	/**
-	 * 获取部门ID
-	 *
-	 * @param tenantId
-	 * @param deptNames
-	 * @return
-	 */
-	String getDeptIds(String tenantId, String deptNames);
-
-	/**
-	 * 获取部门ID
-	 *
-	 * @param tenantId
-	 * @param deptNames
-	 * @return
-	 */
-	String getDeptIdsByFuzzy(String tenantId, String deptNames);
-
-	/**
-	 * 获取部门名
-	 *
-	 * @param deptIds
-	 * @return
-	 */
-	List<String> getDeptNames(String deptIds);
-
-	/**
-	 * 获取子部门
-	 *
-	 * @param deptId
-	 * @return
-	 */
-	List<Dept> getDeptChild(Long deptId);
-
-	/**
-	 * 删除部门
-	 *
-	 * @param ids
-	 * @return
-	 */
-	boolean removeDept(String ids);
-
-	/**
-	 * 提交
-	 *
-	 * @param dept
-	 * @return
-	 */
-	boolean submit(Dept dept);
-
-	/**
-	 * 部门信息查询
-	 *
-	 * @param deptName
-	 * @param parentId
-	 * @return
-	 */
-	List<DeptVO> search(String deptName, Long parentId);
+    /**
+     * 懒加载部门列表
+     *
+     * @param tenantId
+     * @param parentId
+     * @param param
+     * @return
+     */
+    List<DeptVO> lazyList(String tenantId, Long parentId, Map<String, Object> param);
 
+    /**
+     * 树形结构
+     *
+     * @param tenantId
+     * @return
+     */
+    List<DeptVO> tree(String tenantId);
+
+    /**
+     * 懒加载树形结构
+     *
+     * @param tenantId
+     * @param parentId
+     * @return
+     */
+    List<DeptVO> lazyTree(String tenantId, Long parentId);
+
+    /**
+     * 获取部门ID
+     *
+     * @param tenantId
+     * @param deptNames
+     * @return
+     */
+    String getDeptIds(String tenantId, String deptNames);
+
+    /**
+     * 获取部门ID
+     *
+     * @param tenantId
+     * @param deptNames
+     * @return
+     */
+    String getDeptIdsByFuzzy(String tenantId, String deptNames);
+
+    /**
+     * 获取部门名
+     *
+     * @param deptIds
+     * @return
+     */
+    List<String> getDeptNames(String deptIds);
+
+    /**
+     * 获取子部门
+     *
+     * @param deptId
+     * @return
+     */
+    List<Dept> getDeptChild(Long deptId);
+
+    /**
+     * 删除部门
+     *
+     * @param ids
+     * @return
+     */
+    boolean removeDept(String ids);
+
+    /**
+     * 提交
+     *
+     * @param dept
+     * @return
+     */
+    boolean submit(Dept dept);
+
+    /**
+     * 部门信息查询
+     *
+     * @param deptName
+     * @param parentId
+     * @return
+     */
+    List<DeptVO> search(String deptName, Long parentId);
+
+    /**
+     * 获取部门
+     *
+     * @return
+     */
+    List<Dept> getDepts();
+
+    /**
+     * 根据ID查询
+     *
+     * @param ids
+     * @return
+     */
+    List<Dept> getDeptByIds(List<Long> ids);
+
+    /**
+     * 根据ID查询
+     *
+     * @param ids
+     * @return
+     */
+    Map<Long, Dept> getDeptByIdsToMap(List<Long> ids);
+
+    /**
+     * 根据部门ID查询所有子级部门
+     *
+     * @param deptId 部门ID
+     * @return
+     */
+    List<Dept> getDeptAncestorsById(Long deptId);
 }

+ 54 - 0
bladex/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java

@@ -37,8 +37,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -198,4 +200,56 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
         return DeptWrapper.build().listNodeVO(deptList);
     }
 
+    /**
+     * 获取部门
+     *
+     * @return
+     */
+    @Override
+    public List<Dept> getDepts() {
+        return lambdaQuery().eq(Dept::getTenantId, AuthUtil.getTenantId()).orderByAsc(Dept::getSort).list();
+    }
+
+    /**
+     * 根据ID查询部门
+     *
+     * @param ids
+     * @return
+     */
+    @Override
+    public List<Dept> getDeptByIds(List<Long> ids) {
+        if (Func.isEmpty(ids)) {
+            return new ArrayList<>();
+        }
+        return lambdaQuery().eq(Dept::getTenantId, AuthUtil.getTenantId()).in(Dept::getId, ids).list();
+    }
+
+    /**
+     * 根据ID查询部门
+     *
+     * @param ids
+     * @return
+     */
+    @Override
+    public Map<Long, Dept> getDeptByIdsToMap(List<Long> ids) {
+        List<Dept> list = getDeptByIds(ids);
+        if (Func.isEmpty(list)) {
+            return new HashMap<>();
+        }
+        return list.stream().collect(Collectors.toMap(Dept::getId, Function.identity(), (key1, key2) -> key2));
+    }
+
+    /**
+     * 根据部门ID查询所有子级部门
+     *
+     * @param deptId 部门ID
+     * @return
+     */
+    @Override
+    public List<Dept> getDeptAncestorsById(Long deptId) {
+        if (Func.isEmpty(deptId)) {
+            return new ArrayList<>();
+        }
+        return lambdaQuery().eq(Dept::getTenantId, AuthUtil.getTenantId()).apply("FIND_IN_SET(" + deptId + ", ancestors)").list();
+    }
 }

+ 12 - 6
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/material/Material.java

@@ -1,12 +1,9 @@
 package com.fjhx.entity.material;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.fjhx.base.BaseEntity;
-import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -44,7 +41,7 @@ public class Material extends BaseEntity {
     private String name;
 
     /**
-     * 单位 
+     * 单位
      */
     private String unit;
 
@@ -54,11 +51,20 @@ public class Material extends BaseEntity {
     private String introduce;
 
     /**
+     * 部门ID
+     */
+    private Long deptId;
+
+    /**
      * 逻辑删除 0未删除 1已删除
      */
     @TableField(fill = FieldFill.INSERT)
     @TableLogic
     private Integer delFlag;
 
-
+    /**
+     * 部门名称
+     */
+    @TableField(exist = false)
+    private String deptName;
 }

+ 5 - 0
hx-service/victoriatourist/pom.xml

@@ -28,6 +28,11 @@
             <artifactId>common-client-util</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-system-api</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 36 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/common/CommonController.java

@@ -0,0 +1,36 @@
+package com.fjhx.controller.common;
+
+import com.fjhx.service.common.CommonService;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 公共 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-11-24
+ */
+@RestController
+@RequestMapping("/common")
+public class CommonController {
+
+    @Autowired
+    private CommonService commonService;
+
+    /**
+     * 获取部门树
+     *
+     * @return
+     */
+    @PostMapping("/dept/tree")
+    public R deptTree() {
+        return R.success(commonService.deptTree());
+    }
+
+}
+

+ 22 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/common/CommonService.java

@@ -0,0 +1,22 @@
+package com.fjhx.service.common;
+
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @ClassName: CommonService
+ * @Author: linqt
+ * @Date: 2022/11/29 11:56
+ * @Version: 1.0
+ */
+public interface CommonService {
+
+    /**
+     * 获取部门树
+     *
+     * @return
+     */
+    List<JSONObject> deptTree();
+}

+ 42 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/common/impl/CommonServiceImpl.java

@@ -0,0 +1,42 @@
+package com.fjhx.service.common.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fjhx.service.common.CommonService;
+import com.fjhx.utils.TreeUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.system.entity.Dept;
+import org.springblade.system.feign.ISysClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @ClassName: CommonServiceImpl
+ * @Author: linqt
+ * @Date: 2022/11/29 11:57
+ * @Version: 1.0
+ */
+@Service
+public class CommonServiceImpl implements CommonService {
+
+    @Autowired
+    private ISysClient iSysClient;
+
+    /**
+     * 获取部门树
+     *
+     * @return
+     */
+    @Override
+    public List<JSONObject> deptTree() {
+        List<Dept> depts = iSysClient.getDepts();
+        if (Func.isEmpty(depts)) {
+            return new ArrayList<>();
+        }
+
+        return TreeUtil.buildTreeObj(depts);
+    }
+}

+ 32 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/service/material/impl/MaterialServiceImpl.java

@@ -17,6 +17,8 @@ import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.redis.lock.RedisLockClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.system.entity.Dept;
+import org.springblade.system.feign.ISysClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -47,6 +49,9 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> i
     @Autowired
     private RedisLockClient redisLockClient;
 
+    @Autowired
+    private ISysClient iSysClient;
+
     private final String REDIS_LOCK_CACHE_KEY = "seq:lock:" + AuthUtil.getTenantId() + ":material:";
 
     @Override
@@ -65,14 +70,40 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> i
             }
         }
 
+        //处理部门
+        List<Long> deptIds = new ArrayList<>();
+        if (Func.isNotEmpty(condition.get("deptId"))) {
+            deptIds.add(Convert.toLong(condition.get("deptId")));
+            //查询所有子级
+            List<Dept> depts = iSysClient.getDeptAncestorsById(Convert.toLong(condition.get("deptId")));
+            if (Func.isNotEmpty(depts)) {
+                deptIds.addAll(depts.stream().map(Dept::getId).distinct().collect(Collectors.toList()));
+            }
+        }
+
         wrapper.eq(Material::getType)
                 .in(Material::getClassifyId, classifyIds)
+                .in(Material::getDeptId, deptIds)
                 .apply(Func.isNotEmpty(condition.get("code")), "instr(`code`, '" + condition.get("code") + "') > 0")
                 .apply(Func.isNotEmpty(condition.get("name")), "instr(`name`, '" + condition.get("name") + "') > 0")
                 .and(Func.isNotEmpty(condition.get("keyword")), o -> o.apply("instr(`code`, '" + condition.get("keyword") + "') > 0").or().apply("instr(`name`, '" + condition.get("keyword") + "') > 0"))
                 .orderByDesc(Material::getId);
 
-        return page(condition, wrapper);
+        Page<Material> page = page(condition, wrapper);
+        if (Func.isNotEmpty(page.getRecords())) {
+            deptIds = page.getRecords().stream().map(Material::getDeptId).distinct().collect(Collectors.toList());
+            //查询部门
+            Map<Long, Dept> deptMap = iSysClient.getDeptByIdsToMap(deptIds);
+
+            for (Material record : page.getRecords()) {
+                if (Func.isNotEmpty(deptMap) && Func.isEmpty(deptMap.get(record.getDeptId()))) {
+                    Dept dept = deptMap.get(record.getDeptId());
+                    record.setDeptName(dept.getDeptName());
+                }
+            }
+        }
+
+        return page;
     }
 
     @Override