파견 관리 UX 고도화, 비동기 알림 트리거 연동 보강, 스마트 라우팅 반영 작업
This commit is contained in:
@@ -26,6 +26,7 @@ public class DispatchHistoryService {
|
||||
private final DispatchHistoryRepository dispatchHistoryRepository;
|
||||
private final EmployeeRepository employeeRepository;
|
||||
private final ProjectRepository projectRepository;
|
||||
private final NotificationPublisher notificationPublisher;
|
||||
|
||||
public List<DispatchHistory> findByEmployeeId(Long empId) {
|
||||
employeeRepository.findById(empId)
|
||||
@@ -78,7 +79,22 @@ public class DispatchHistoryService {
|
||||
.startDate(request.startDate() != null ? request.startDate() : LocalDate.now())
|
||||
.build();
|
||||
|
||||
return dispatchHistoryRepository.save(history);
|
||||
DispatchHistory saved = dispatchHistoryRepository.save(history);
|
||||
|
||||
// Update employee dispatch status to DISPATCHED
|
||||
employee.setDispatchStatus(com.srsystem.entity.enums.DispatchStatus.DISPATCHED);
|
||||
employeeRepository.save(employee);
|
||||
|
||||
// Send notification
|
||||
notificationPublisher.publish(new com.srsystem.dto.NotificationEvent(
|
||||
"DISPATCH_ASSIGNED",
|
||||
"신규 파견 발령: " + project.getProjectName(),
|
||||
String.format("'%s' 프로젝트에 %s 역할로 파견 등록되었습니다.", project.getProjectName(), request.roleTitle()),
|
||||
"/dispatch",
|
||||
employee.getEmpId()
|
||||
));
|
||||
|
||||
return saved;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@@ -86,6 +102,16 @@ public class DispatchHistoryService {
|
||||
DispatchHistory history = dispatchHistoryRepository.findById(dispatchId)
|
||||
.orElseThrow(() -> new BusinessException(ErrorCode.DISPATCH_NOT_FOUND));
|
||||
history.setEndDate(LocalDate.now());
|
||||
return dispatchHistoryRepository.save(history);
|
||||
DispatchHistory saved = dispatchHistoryRepository.save(history);
|
||||
|
||||
// Check active dispatches remaining
|
||||
List<DispatchHistory> active = dispatchHistoryRepository.findByEmployee_EmpIdAndEndDateIsNull(history.getEmployee().getEmpId());
|
||||
if (active.isEmpty()) {
|
||||
Employee emp = history.getEmployee();
|
||||
emp.setDispatchStatus(com.srsystem.entity.enums.DispatchStatus.WAITING);
|
||||
employeeRepository.save(emp);
|
||||
}
|
||||
|
||||
return saved;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user