增加部门
This commit is contained in:
parent
6e79e0faac
commit
74cb4a3255
@ -5,6 +5,7 @@ import com.qqchen.deploy.backend.framework.api.Response;
|
|||||||
import com.qqchen.deploy.backend.framework.controller.BaseController;
|
import com.qqchen.deploy.backend.framework.controller.BaseController;
|
||||||
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
||||||
import com.qqchen.deploy.backend.model.query.DepartmentQuery;
|
import com.qqchen.deploy.backend.model.query.DepartmentQuery;
|
||||||
|
import com.qqchen.deploy.backend.model.response.DepartmentResponse;
|
||||||
import com.qqchen.deploy.backend.service.IDepartmentService;
|
import com.qqchen.deploy.backend.service.IDepartmentService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@ -25,7 +26,7 @@ public class DepartmentApiController extends BaseController<Department, Departme
|
|||||||
|
|
||||||
@Operation(summary = "获取部门树")
|
@Operation(summary = "获取部门树")
|
||||||
@GetMapping("/tree")
|
@GetMapping("/tree")
|
||||||
public Response<List<DepartmentDTO>> getTree() {
|
public Response<List<DepartmentResponse>> getTree() {
|
||||||
return Response.success(departmentService.getTree());
|
return Response.success(departmentService.getTree());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -36,6 +36,12 @@ public class MenuApiController extends BaseController<Menu, MenuDTO, Long, MenuQ
|
|||||||
return Response.success(menuService.getUserMenus());
|
return Response.success(menuService.getUserMenus());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "获取菜单树")
|
||||||
|
@GetMapping("/tree")
|
||||||
|
public Response<List<MenuResponse>> getTree() {
|
||||||
|
return Response.success(menuService.getMenuTree());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void exportData(HttpServletResponse response, List<MenuDTO> data) {
|
protected void exportData(HttpServletResponse response, List<MenuDTO> data) {
|
||||||
|
|
||||||
|
|||||||
@ -3,10 +3,20 @@ package com.qqchen.deploy.backend.converter;
|
|||||||
import com.qqchen.deploy.backend.entity.Department;
|
import com.qqchen.deploy.backend.entity.Department;
|
||||||
import com.qqchen.deploy.backend.framework.converter.BaseConverter;
|
import com.qqchen.deploy.backend.framework.converter.BaseConverter;
|
||||||
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
||||||
|
import com.qqchen.deploy.backend.model.response.DepartmentResponse;
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.Mapping;
|
||||||
import org.mapstruct.ReportingPolicy;
|
import org.mapstruct.ReportingPolicy;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||||
public interface DepartmentConverter extends BaseConverter<Department, DepartmentDTO> {
|
public interface DepartmentConverter extends BaseConverter<Department, DepartmentDTO> {
|
||||||
// 继承了 BaseConverter 的方法,不需要再声明
|
// 继承了 BaseConverter 的方法,不需要再声明
|
||||||
|
|
||||||
|
@Mapping(target = "children", expression = "java(toResponseList(dto.getChildren()))")
|
||||||
|
DepartmentResponse toResponse(DepartmentDTO dto);
|
||||||
|
|
||||||
|
List<DepartmentResponse> toResponseList(List<DepartmentDTO> dtoList);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
package com.qqchen.deploy.backend.model.response;
|
||||||
|
|
||||||
|
import com.qqchen.deploy.backend.framework.dto.BaseResponse;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class DepartmentResponse extends BaseResponse {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门编码
|
||||||
|
*/
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门描述
|
||||||
|
*/
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上级部门ID
|
||||||
|
*/
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显示排序
|
||||||
|
*/
|
||||||
|
private Integer sort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否启用
|
||||||
|
*/
|
||||||
|
private Boolean enabled;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人ID
|
||||||
|
*/
|
||||||
|
private Long leaderId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人姓名
|
||||||
|
*/
|
||||||
|
private String leaderName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子部门列表
|
||||||
|
*/
|
||||||
|
private List<DepartmentResponse> children;
|
||||||
|
}
|
||||||
@ -3,6 +3,7 @@ package com.qqchen.deploy.backend.service;
|
|||||||
import com.qqchen.deploy.backend.entity.Department;
|
import com.qqchen.deploy.backend.entity.Department;
|
||||||
import com.qqchen.deploy.backend.framework.service.IBaseService;
|
import com.qqchen.deploy.backend.framework.service.IBaseService;
|
||||||
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
||||||
|
import com.qqchen.deploy.backend.model.response.DepartmentResponse;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -11,5 +12,5 @@ public interface IDepartmentService extends IBaseService<Department, DepartmentD
|
|||||||
/**
|
/**
|
||||||
* 获取部门树
|
* 获取部门树
|
||||||
*/
|
*/
|
||||||
List<DepartmentDTO> getTree();
|
List<DepartmentResponse> getTree();
|
||||||
}
|
}
|
||||||
@ -20,4 +20,9 @@ public interface IMenuService extends IBaseService<Menu, MenuDTO, Long> {
|
|||||||
* @return 用户菜单
|
* @return 用户菜单
|
||||||
*/
|
*/
|
||||||
List<MenuResponse> getUserMenus();
|
List<MenuResponse> getUserMenus();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取菜单树
|
||||||
|
*/
|
||||||
|
List<MenuDTO> getTree();
|
||||||
}
|
}
|
||||||
@ -6,6 +6,7 @@ import com.qqchen.deploy.backend.framework.enums.ResponseCode;
|
|||||||
import com.qqchen.deploy.backend.framework.exception.UniqueConstraintException;
|
import com.qqchen.deploy.backend.framework.exception.UniqueConstraintException;
|
||||||
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
|
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
|
||||||
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
||||||
|
import com.qqchen.deploy.backend.model.response.DepartmentResponse;
|
||||||
import com.qqchen.deploy.backend.repository.IDepartmentRepository;
|
import com.qqchen.deploy.backend.repository.IDepartmentRepository;
|
||||||
import com.qqchen.deploy.backend.service.IDepartmentService;
|
import com.qqchen.deploy.backend.service.IDepartmentService;
|
||||||
import com.qqchen.deploy.backend.framework.annotation.ServiceType;
|
import com.qqchen.deploy.backend.framework.annotation.ServiceType;
|
||||||
@ -42,9 +43,10 @@ public class DepartmentServiceImpl extends BaseServiceImpl<Department, Departmen
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DepartmentDTO> getTree() {
|
public List<DepartmentResponse> getTree() {
|
||||||
List<Department> departments = departmentRepository.findByDeletedFalseOrderBySort();
|
List<Department> departments = departmentRepository.findByDeletedFalseOrderBySort();
|
||||||
return buildTree(departments);
|
List<DepartmentDTO> dtoTree = buildTree(departments);
|
||||||
|
return departmentConverter.toResponseList(dtoTree);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<DepartmentDTO> buildTree(List<Department> departments) {
|
private List<DepartmentDTO> buildTree(List<Department> departments) {
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import java.util.Map;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
import static com.qqchen.deploy.backend.framework.annotation.ServiceType.Type.DATABASE;
|
import static com.qqchen.deploy.backend.framework.annotation.ServiceType.Type.DATABASE;
|
||||||
|
|
||||||
@ -66,6 +67,39 @@ public class MenuServiceImpl extends BaseServiceImpl<Menu, MenuDTO, Long> implem
|
|||||||
return menuConverter.toResponseList(menuTree);
|
return menuConverter.toResponseList(menuTree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<MenuDTO> getTree() {
|
||||||
|
List<Menu> menus = menuRepository.findByDeletedFalseOrderBySort();
|
||||||
|
return buildTree(menus);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<MenuDTO> buildTree(List<Menu> menus) {
|
||||||
|
Map<Long, MenuDTO> dtoMap = new HashMap<>();
|
||||||
|
List<MenuDTO> roots = new ArrayList<>();
|
||||||
|
|
||||||
|
// 转换为DTO并建立映射
|
||||||
|
menus.forEach(menu -> {
|
||||||
|
MenuDTO dto = menuConverter.toDto(menu);
|
||||||
|
dto.setChildren(new ArrayList<>());
|
||||||
|
dtoMap.put(dto.getId(), dto);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 构建树形结构
|
||||||
|
menus.forEach(menu -> {
|
||||||
|
MenuDTO dto = dtoMap.get(menu.getId());
|
||||||
|
if (menu.getParentId() == null || menu.getParentId() == 0) {
|
||||||
|
roots.add(dto);
|
||||||
|
} else {
|
||||||
|
MenuDTO parent = dtoMap.get(menu.getParentId());
|
||||||
|
if (parent != null) {
|
||||||
|
parent.getChildren().add(dto);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return roots;
|
||||||
|
}
|
||||||
|
|
||||||
private List<MenuDTO> buildMenuTree(List<MenuDTO> menus) {
|
private List<MenuDTO> buildMenuTree(List<MenuDTO> menus) {
|
||||||
// 使用Map存储所有菜单,便于查找
|
// 使用Map存储所有菜单,便于查找
|
||||||
Map<Long, MenuDTO> menuMap = menus.stream()
|
Map<Long, MenuDTO> menuMap = menus.stream()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user