project-manage/src/main/java/com/waterquality/projectmanagement/service/DepartmentService.java

56 lines
2.2 KiB
Java

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<Department> getAllDepartment() {
return departmentRepository.findAll();
}
public Department getDepartmentDetailsById(Integer id) {
return departmentRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("部门不存在"));
}
}