package com.waterquality.projectmanagement.service; import com.waterquality.projectmanagement.dto.DepartmentDTO; import com.waterquality.projectmanagement.entity.department.Department; import com.waterquality.projectmanagement.entity.employee.Employee; import com.waterquality.projectmanagement.exception.ResourceNotFoundException; import com.waterquality.projectmanagement.repository.DepartmentRepository; import com.waterquality.projectmanagement.repository.EmployeeRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @Service @RequiredArgsConstructor public class DepartmentService { private final DepartmentRepository departmentRepository; private final EmployeeRepository employeeRepository; @Transactional public Department createWithParent(DepartmentDTO dto) { Department parent = dto.getParentId() != null ? departmentRepository.findById(dto.getParentId()) .orElseThrow(() -> new ResourceNotFoundException("父部门不存在")) : null; Employee manager = dto.getManagerId() != null ? employeeRepository.findById(dto.getManagerId()) .orElseThrow(() -> new ResourceNotFoundException("负责人不存在")) : null; Department dept = new Department(); dept.setDepartmentName(dto.getName()); dept.setParent(parent); dept.setManager(manager); dept.setArea(dto.getArea()); return departmentRepository.save(dept); } public String getDepartmentNameById(Integer id) { return departmentRepository.findById(id) .map(Department::getDepartmentName) .orElseThrow(() -> new ResourceNotFoundException("部门不存在")); } public List getAllDepartment() { return departmentRepository.findAll(); } public Department getDepartmentDetailsById(Integer id) { return departmentRepository.findById(id) .orElseThrow(() -> new ResourceNotFoundException("部门不存在")); } }