package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.common.PrintChina; import com.yuanchu.mom.dto.DepartmentDto; import com.yuanchu.mom.dto.UserDto; import com.yuanchu.mom.dto.UserPageDto; import com.yuanchu.mom.pojo.Department; import com.yuanchu.mom.mapper.DepartmentMapper; import com.yuanchu.mom.pojo.Device; import com.yuanchu.mom.pojo.User; import com.yuanchu.mom.service.DepartmentService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.mom.utils.QueryWrappers; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; 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; import java.util.stream.Collectors; /** *

* 部门明细 服务实现类 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2024-04-15 04:01:48 */ @Service @AllArgsConstructor @Transactional(rollbackFor = Exception.class) @Slf4j 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); } //根据选择的树展示相关的人员 @Override public Map showUserById(Page page, UserDto user) { //根据部门id,查询他的所有子类id List list = departmentMapper.selectSonById(Integer.parseInt(user.getDepartId())); List ids = list.stream() .map(Object::toString) //.collect(Collectors.joining(",")); .collect(Collectors.toList()); log.info(ids+"\n"); Map map = new HashMap<>(); map.put("head", PrintChina.printChina(UserDto.class)); map.put("body", departmentMapper.showUserById(page, ids, QueryWrappers.queryWrappers(user))); return map; } //判断是否有子类,直到没有为止 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; } }