feat: add employee fields (birthDate, education, residence) + emergency contacts

This commit is contained in:
pray4skylark
2026-06-02 18:11:05 +09:00
parent 65a82db0e0
commit d205a447a1
12 changed files with 747 additions and 112 deletions
@@ -4,10 +4,12 @@ import com.srsystem.dto.ChangePasswordRequest;
import com.srsystem.dto.EmployeeSearchResult;
import com.srsystem.dto.EmployeeSummary;
import com.srsystem.entity.Employee;
import com.srsystem.entity.EmployeeEmergencyContact;
import com.srsystem.entity.enums.EmpStatus;
import com.srsystem.exception.BusinessException;
import com.srsystem.exception.ErrorCode;
import com.srsystem.repository.DispatchHistoryRepository;
import com.srsystem.repository.EmployeeEmergencyContactRepository;
import com.srsystem.repository.EmployeeRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
@@ -28,6 +30,7 @@ public class EmployeeService {
private final EmployeeRepository employeeRepository;
private final DispatchHistoryRepository dispatchHistoryRepository;
private final EmployeeEmergencyContactRepository emergencyContactRepository;
private final PasswordEncoder passwordEncoder;
public Page<Employee> findAll(EmpStatus status, Pageable pageable) {
@@ -101,6 +104,11 @@ public class EmployeeService {
employee.setDispatchStatus(updateRequest.getDispatchStatus());
employee.setJoinedDate(updateRequest.getJoinedDate());
employee.setLeftDate(updateRequest.getLeftDate());
employee.setBirthDate(updateRequest.getBirthDate());
employee.setEducation(updateRequest.getEducation());
employee.setMajor(updateRequest.getMajor());
employee.setGraduationDate(updateRequest.getGraduationDate());
employee.setResidence(updateRequest.getResidence());
if (updateRequest.getPassword() != null && !updateRequest.getPassword().isBlank()) {
employee.setPassword(passwordEncoder.encode(updateRequest.getPassword()));
@@ -130,10 +138,48 @@ public class EmployeeService {
employee.getEmpStatus(),
employee.getDispatchStatus(),
employee.getJoinedDate(),
employee.getLeftDate()
employee.getLeftDate(),
employee.getBirthDate(),
employee.getEducation(),
employee.getMajor(),
employee.getGraduationDate(),
employee.getResidence()
);
}
// ---- Emergency Contact CRUD ----
public List<EmployeeEmergencyContact> getEmergencyContacts(Long empId) {
return emergencyContactRepository.findByEmployeeEmpIdOrderBySortOrderAsc(empId);
}
@Transactional
public EmployeeEmergencyContact createEmergencyContact(Long empId, EmployeeEmergencyContact contact) {
Employee employee = findById(empId);
contact.setEmployee(employee);
if (contact.getSortOrder() == null) contact.setSortOrder(0);
return emergencyContactRepository.save(contact);
}
@Transactional
public EmployeeEmergencyContact updateEmergencyContact(Long contactId, EmployeeEmergencyContact update) {
EmployeeEmergencyContact contact = emergencyContactRepository.findById(contactId)
.orElseThrow(() -> new BusinessException(ErrorCode.CODE_NOT_FOUND));
if (update.getName() != null) contact.setName(update.getName());
if (update.getRelation() != null) contact.setRelation(update.getRelation());
if (update.getPhone() != null) contact.setPhone(update.getPhone());
if (update.getSortOrder() != null) contact.setSortOrder(update.getSortOrder());
return emergencyContactRepository.save(contact);
}
@Transactional
public void deleteEmergencyContact(Long contactId) {
EmployeeEmergencyContact contact = emergencyContactRepository.findById(contactId)
.orElseThrow(() -> new BusinessException(ErrorCode.CODE_NOT_FOUND));
contact.setIsDeleted('Y');
emergencyContactRepository.save(contact);
}
@Transactional
public void changePassword(Long empId, ChangePasswordRequest request) {
Employee employee = findById(empId);