TaskEntity.java

역할


주요 필드

구분 필드 타입 설명
PK id Long 업무 고유 ID
기본 정보 title, description, dueDate String/LocalDate 제목, 상세, 마감일
상태/우선순위 status, priority, visibility Enum 상태(TODO 등), 우선순위(MEDIUM 등), 공개 범위(DEPARTMENT 등)
상태 사유 holdReason, cancelReason String ON_HOLD/CANCELED 상태 시 이유
삭제 isDeleted, deletedAt boolean/LocalDateTime soft delete 여부 + 삭제 시각
작성자/담당자 createdBy, assignee UserEntity 작성자(필수), 담당자(선택)
부서 ownerDepartment, workDepartment DepartmentEntity 업무 소유 부서, 실제 처리 부서
시간 createdAt, updatedAt LocalDateTime 생성/수정 시각

기본값 세팅 (PrePersist / PreUpdate)

@PrePersist
void prePersist() {
    LocalDateTime now = LocalDateTime.now();
    createdAt = now;
    updatedAt = now;

    if (status == null) status = TaskStatus.TODO;
    if (priority == null) priority = TaskPriority.MEDIUM;
    if (visibility == null) visibility = TaskVisibility.DEPARTMENT;

    if (createdBy != null && ownerDepartment == null) {
        ownerDepartment = createdBy.getDepartment();
    }
    if (workDepartment == null) {
        workDepartment = (assignee != null) ? assignee.getDepartment() : ownerDepartment;
    }
}

@PreUpdate
void preUpdate() {
    updatedAt = LocalDateTime.now();
}

설명:


DTO와의 연결