package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.yuanchu.mom.dto.DepartmentDto; import com.yuanchu.mom.pojo.Department; import com.yuanchu.mom.mapper.DepartmentMapper; import com.yuanchu.mom.service.DepartmentService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import lombok.var; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Wrapper; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 部门明细 服务实现类 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2024-04-15 04:01:48 */ @Service @AllArgsConstructor @Transactional(rollbackFor = Exception.class) public class DepartmentServiceImpl extends ServiceImpl implements DepartmentService { DepartmentMapper departmentMapper; //添加部门 @Override public int addDepartment(Department department) { departmentMapper.insert(department); return department.getId(); } //获取部门树 @Override public List selectDepartment() { List departments = departmentMapper.selectDepartment(); // 假设 resultSet 是从数据库查询返回的结果集 List departmentDtos = new ArrayList<>(); Map departmentMap = new HashMap<>(); for (Department department : departments) { DepartmentDto departmentDto = new DepartmentDto(department.getId(), department.getName(), department.getFatherId(), new ArrayList()); departmentMap.put(department.getId(), departmentDto); if (department.getFatherId() == null) { // 根部门 departmentDtos.add(departmentDto); } else { // 将当前部门添加到父部门的 children 列表中 DepartmentDto parent = departmentMap.get(department.getFatherId()); if (parent != null) { parent.getChildren().add(departmentDto); } } } return departmentDtos; } //删除部门 @Override public boolean delDepartment(Integer id) { //判断是否有子类,直到没有为止 List department = getDepartment(id); return removeBatchByIds(department); } //判断是否有子类,直到没有为止 public List getDepartment(Integer id){ List list = new ArrayList<>(); Department depart = baseMapper.selectById(id); list.add(depart); List departments = baseMapper.selectList(Wrappers.lambdaQuery().eq(Department::getFatherId, id)); if (ObjectUtils.isNotEmpty(departments)){ list.addAll(departments); for (Department department : departments){ list.addAll(getDepartment(department.getId())); } } return list; } }