diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DepartmentController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DepartmentController.java index 239db7a1..26c7eb68 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DepartmentController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DepartmentController.java @@ -84,9 +84,11 @@ public class DepartmentController extends BaseController { /** * 搜索部门返回基本信息 * @param key 部门名称或代码 + * @param showAll 是否显示所有部门,默认false(不显示禁用的部门) */ @GetMapping("searchSimple") - public ApiResult> searchSimple(@RequestParam(required = false) String key) { - return ApiResult.success(departmentControllerService.searchSimple(key)); + public ApiResult> searchSimple(@RequestParam(required = false) String key + , @RequestParam(required = false,defaultValue = "false") Boolean showAll) { + return ApiResult.success(departmentControllerService.searchSimple(key,showAll)); } } \ No newline at end of file diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/DepartmentControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/DepartmentControllerService.java index 96059167..aa841226 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/DepartmentControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/DepartmentControllerService.java @@ -48,6 +48,7 @@ public class DepartmentControllerService { deptService.add(request); } + @Transactional public void update(DepartmentUpdateQO request) { Department department = deptService.getById(request.getId()); VUtil.trueThrowBusinessError(Objects.isNull(department)).throwMessage("部门不存在"); @@ -118,18 +119,24 @@ public class DepartmentControllerService { } } - public List searchSimple(String key) { - return deptService.searchSimple(key); + public List searchSimple(String key,Boolean showAll) { + return deptService.searchSimple(key,showAll); } + @Transactional public void enable(@Valid EnableQO request) { Department department = deptService.getById(request.getId()); VUtil.trueThrowBusinessError(Objects.isNull(department)).throwMessage("部门不存在"); - VUtil.trueThrowBusinessError(Objects.equals(department.getSource(), 1)).throwMessage("不能禁用启用从AD域同步的部门信息"); deptService.updateById(new Department() + .setId(request.getId()) .setEnable(request.getEnable()) .setUpdateBy(UserUtil.getUserName()) .setUpdateTime(LocalDateTime.now())); + + // 如果修改为禁用状态,级联禁用所有子部门及对应用户 + if (Boolean.FALSE.equals(request.getEnable())) { + deptService.disableWithChildren(request.getId()); + } } public PageData search(DepartmentSearchQO request) { diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IDepartmentService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IDepartmentService.java index 5cb1f2cb..2a966812 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IDepartmentService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IDepartmentService.java @@ -32,9 +32,11 @@ public interface IDepartmentService extends IService { void delete(Long id); - List searchSimple(String key); + List searchSimple(String key,Boolean showAll); PageData search(DepartmentSearchQO request); Set getWithChildren(Long deptId); + + void disableWithChildren(Long deptId); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DepartmentServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DepartmentServiceImpl.java index a64ce8cb..a0005be1 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DepartmentServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DepartmentServiceImpl.java @@ -11,12 +11,17 @@ import com.nflg.wms.common.pojo.qo.DepartmentSearchQO; import com.nflg.wms.common.pojo.qo.DepartmentUpdateQO; import com.nflg.wms.common.pojo.vo.DepartmentSimpleVO; import com.nflg.wms.common.pojo.vo.DepartmentVO; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.VUtil; import com.nflg.wms.repository.entity.Department; +import com.nflg.wms.repository.entity.User; +import com.nflg.wms.repository.entity.UserInterior; import com.nflg.wms.repository.mapper.DepartmentMapper; import com.nflg.wms.repository.service.IAuditLogService; import com.nflg.wms.repository.service.IDepartmentService; +import com.nflg.wms.repository.service.IUserInteriorService; +import com.nflg.wms.repository.service.IUserService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -39,6 +44,12 @@ public class DepartmentServiceImpl extends ServiceImpl searchSimple(String key) { + public List searchSimple(String key, Boolean showAll) { if (StrUtil.isBlank(key)) { - return getAllSimple(); + return getAllSimple(showAll); } else { - return searchSimpleByKey(key); + return searchSimpleByKey(key, showAll); } } @@ -124,6 +140,7 @@ public class DepartmentServiceImpl extends ServiceImpl departments = lambdaQuery() .like(StrUtil.isNotBlank(request.getName()), Department::getName, request.getName()) .like(StrUtil.isNotBlank(request.getNo()), Department::getSourceId, request.getNo()) + .orderByAsc(Department::getId) .list(); if (CollectionUtil.isEmpty(departments)) { return new PageData<>(); @@ -139,6 +156,42 @@ public class DepartmentServiceImpl extends ServiceImpl allDeptIds = getWithChildren(deptId); + Set childDeptIds = new HashSet<>(allDeptIds); + childDeptIds.remove(deptId); + + // 批量禁用子部门 + if (CollectionUtil.isNotEmpty(childDeptIds)) { + lambdaUpdate() + .set(Department::getEnable, false) + .in(Department::getId, childDeptIds) + .update(); + } + + // 查询所有相关部门下的用户ID + List userIds = userInteriorService.lambdaQuery() + .select(UserInterior::getUserId) + .in(UserInterior::getDeptId, allDeptIds) + .list() + .stream() + .map(UserInterior::getUserId) + .distinct() + .collect(Collectors.toList()); + + // 批量禁用用户 + if (CollectionUtil.isNotEmpty(userIds)) { + userService.update( + new LambdaUpdateWrapper() + .set(User::getState, 2) + .in(User::getId, userIds) + ); + } + } + @Override public Set getWithChildren(Long deptId) { Set ids = lambdaQuery() @@ -155,9 +208,10 @@ public class DepartmentServiceImpl extends ServiceImpl searchSimpleByKey(String key) { + private List searchSimpleByKey(String key, Boolean showAll) { List departments = lambdaQuery() .select(Department::getId, Department::getParentId, Department::getName) + .eq(!Objects.equals(showAll, true), Department::getEnable, true) .like(Department::getName, key) .list(); if (CollectionUtil.isEmpty(departments)) { @@ -213,6 +267,7 @@ public class DepartmentServiceImpl extends ServiceImpl departments = lambdaQuery() .eq(Objects.isNull(request.getDeptId()), Department::getParentId, 0L) .eq(Objects.nonNull(request.getDeptId()), Department::getId, request.getDeptId()) + .orderByAsc(Department::getId) .list(); List datas = Convert.toList(DepartmentVO.class, departments); datas = datas.stream().skip((long) (request.getPage() - 1) * request.getPageSize()).limit(request.getPageSize()).toList(); @@ -229,6 +284,7 @@ public class DepartmentServiceImpl extends ServiceImpl { List departments = lambdaQuery() .eq(Department::getParentId, dept.getId()) + .orderByAsc(Department::getId) .list(); if (CollectionUtil.isNotEmpty(departments)) { List children = Convert.toList(DepartmentVO.class, departments); @@ -238,24 +294,29 @@ public class DepartmentServiceImpl extends ServiceImpl getAllSimple() { + private List getAllSimple(Boolean showAll) { List departments = lambdaQuery() .eq(Department::getParentId, 0L) + .eq(Department::getEnable, true) + .eq(!Objects.equals(showAll, true), Department::getEnable, true) + .orderByAsc(Department::getId) .list(); List datas = Convert.toList(DepartmentSimpleVO.class, departments); - bindSimpleChildren(datas); + bindSimpleChildren(datas, showAll); return datas; } - private void bindSimpleChildren(List datas) { + private void bindSimpleChildren(List datas,Boolean showAll) { datas.forEach(dept -> { List departments = lambdaQuery() .eq(Department::getParentId, dept.getId()) + .eq(!Objects.equals(showAll, true), Department::getEnable, true) + .orderByAsc(Department::getId) .list(); if (CollectionUtil.isNotEmpty(departments)) { List children = Convert.toList(DepartmentSimpleVO.class, departments); dept.setChildren(children); - this.bindSimpleChildren(children); + this.bindSimpleChildren(children, showAll); } }); }