Skip to content

Commit

Permalink
[MERGE]
Browse files Browse the repository at this point in the history
  • Loading branch information
choi3179 committed Apr 8, 2024
2 parents 128b620 + 168ec40 commit 5891e7a
Show file tree
Hide file tree
Showing 15 changed files with 303 additions and 43 deletions.
6 changes: 6 additions & 0 deletions papplan/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,12 @@
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.2.0</version>
</dependency>

<!-- Jackson module -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
</dependencies>


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.boogle.papplan.config;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
Expand Down Expand Up @@ -49,4 +50,9 @@ public CorsFilter corsFilter() {
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}

@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
}
26 changes: 0 additions & 26 deletions papplan/src/main/java/com/boogle/papplan/config/WebConfig.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ public ResponseEntity<TaskDTO> getTaskById(@PathVariable Integer projNo, @PathVa
// 프로젝트와 태스크 ID에 해당하는 태스크를 업데이트하는 엔드포인트
@PostMapping("/project/{projNo}/task/{taskNo}")
public ResponseEntity<TaskDTO> updateTask(@PathVariable Integer projNo, @PathVariable Integer taskNo, @RequestBody TaskDTO taskDto) {
System.out.println(taskDto);
TaskDTO updatedTask = taskService.updateTask(projNo, taskNo, taskDto);
System.out.println("check utc time : " + taskDto.getTaskStartDate() + " <><><> " + taskDto.getTaskFinishDate());
if (updatedTask != null) {
return ResponseEntity.ok(updatedTask);
} else {
Expand Down Expand Up @@ -89,4 +91,13 @@ public ResponseEntity<List<TaskDTO>> searchTasks(@PathVariable Integer projNo,
return ResponseEntity.ok(taskDTOS);
}

// 특정 프로젝트 안의 특정 진행 상태에 해당하는 업무를 가져오는 엔드포인트
@GetMapping("project/{projNo}/status")
public ResponseEntity<List<TaskDTO>> findTasksByStatusId(
@PathVariable Integer projNo,
@RequestParam(required = false) String taskStatusId) {
List<TaskDTO> taskDTOS = taskService.findTasksByStatusIdDto(projNo, taskStatusId);
return ResponseEntity.ok(taskDTOS);
}

}
6 changes: 6 additions & 0 deletions papplan/src/main/java/com/boogle/papplan/dto/TaskDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,18 @@ public class TaskDTO {
@JsonProperty("end_date")
private Date taskEndDate;

@JsonProperty("finish_date")
private Date taskFinishDate;

@JsonProperty("task_percent")
private Integer taskPercent;

@JsonProperty("task_test")
private Boolean taskTest;

@JsonProperty("task_test_url")
private String taskTestUrl;

@JsonProperty("update_date")
private Date taskUpdateDate;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.boogle.papplan.entity;

import jakarta.persistence.*;
import lombok.Data;
import lombok.Getter;

import java.util.ArrayList;
import java.util.List;

@Entity(name = "ProjectPriority")
@Getter
@Data
public class ProjectPriority {

@Id
Expand Down
12 changes: 10 additions & 2 deletions papplan/src/main/java/com/boogle/papplan/entity/Task.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,11 @@ public class Task {

@Temporal(TemporalType.DATE)
@Column(name = "task_end_date", nullable = false)
private Date taskEndDate; // 업무종료일
private Date taskEndDate; // 업무종료 예정일

@Temporal(TemporalType.DATE)
@Column(name = "task_finish_date")
private Date taskFinishDate; // 실제 업무 종료일

@Column(name = "task_percent", nullable = false)
private Integer taskPercent; // 업무진행율
Expand All @@ -44,11 +48,15 @@ public class Task {
@Column(name = "task_create_date", nullable = false)
private Date taskCreateDate; // 업무작성일


@Column(name = "task_test", nullable = false)
private Boolean taskTest = false ; // 테스트 진행여부

@Column(name = "task_test_url")
private String taskTestUrl; // 테스트 요청 URL

@Temporal(TemporalType.DATE)
@Column(name = "task_update_date", nullable = true)
@Column(name = "task_update_date")
private Date taskUpdateDate; // 업무수정일

@Column(name = "task_desc", length=300, nullable = false)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.boogle.papplan.repository;

import com.boogle.papplan.entity.ProjectPriority;
import org.springframework.data.jpa.repository.JpaRepository;

public interface ProjectPriorityRepository extends JpaRepository<ProjectPriority, String> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.boogle.papplan.repository;

import com.boogle.papplan.entity.ProjectStatus;
import org.springframework.data.jpa.repository.JpaRepository;

public interface ProjectStatusRepository extends JpaRepository<ProjectStatus, String> {
}

Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,8 @@ public interface TaskRepository extends JpaRepository<Task, Integer> {
"LOWER(t.taskTitle) LIKE LOWER(:term) OR " +
"LOWER(t.assignee) LIKE LOWER(:term))")
List<Task> findByProjectIdAndTaskTitleOrAssignee(Integer projNo, String term, Pageable pageable);

// 업무 상태로 업무를 조회하는 메서드
@Query("SELECT t FROM Task t WHERE t.project.projNo = :projNo AND t.taskStatus.taskStatusId = :taskStatusId")
List<Task> findByProjectProjNoAndTaskStatusTaskStatusId(Integer projNo, String taskStatusId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
package com.boogle.papplan.service.task;

import com.boogle.papplan.dto.TaskDTO;
import com.boogle.papplan.entity.Task;

import java.util.List;

public interface TaskService {
Expand All @@ -23,4 +25,8 @@ public interface TaskService {

// 업무 검색
List<TaskDTO> searchTasks(Integer projNo, String term, int page, int pageSize);

List<Task> findTasksByStatusId(Integer projNo, String taskStatusId);

List<TaskDTO> findTasksByStatusIdDto(Integer projNo, String taskStatusId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;

Expand All @@ -27,6 +31,21 @@ public TaskServiceImpl(ProjectRepository projectRepository, TaskRepository taskR
this.taskRepository = taskRepository;
}

@Override
public List<Task> findTasksByStatusId(Integer projNo, String taskStatusId) {
if (taskStatusId == null || taskStatusId.isEmpty() || taskStatusId.equals("전체")) {
return taskRepository.findAll();
} else {
return taskRepository.findByProjectProjNoAndTaskStatusTaskStatusId(projNo, taskStatusId);
}
}

@Override
public List<TaskDTO> findTasksByStatusIdDto(Integer projNo, String taskStatusId) {
List<Task> tasks = taskRepository.findByProjectProjNoAndTaskStatusTaskStatusId(projNo, taskStatusId);
return tasks.stream().map(this::convertToDto).collect(Collectors.toList());
}

@Override
public List<TaskDTO> getTasksByProjectId(Integer projNo) {
List<Task> tasks = taskRepository.findAllByProjectProjNo(projNo);
Expand Down Expand Up @@ -69,17 +88,11 @@ public TaskDTO updateTask(Integer projNo, Integer taskNo, TaskDTO taskDto) {
// 프로젝트 ID와 태스크 ID를 사용하여 해당하는 태스크를 조회합니다.
Optional<Task> optionalTask = Optional.ofNullable(taskRepository.findByProjectProjNoAndTaskNo(projNo, taskNo));

if (optionalTask.isEmpty()) {
return null;
}

Task task = optionalTask.get();

// Project 번호
/* // Project 번호
Project project = task.getProject();
project.setProjNo(taskDto.getProjNo());
project.setProjNo(taskDto.getProjNo());*/

task.setTaskTitle(taskDto.getTaskTitle()); // 업무 제목
/*task.setTaskTitle(taskDto.getTaskTitle()); // 업무 제목
task.setAssignee(taskDto.getAssignee()); // 업무 담당자 이름
task.setTaskDesc(taskDto.getTaskDesc()); // 업무 설명
Expand All @@ -99,11 +112,40 @@ public TaskDTO updateTask(Integer projNo, Integer taskNo, TaskDTO taskDto) {
if(taskDto.getTaskTest() != null)
task.setTaskTest(taskDto.getTaskTest()); // 업무 테스트 진행 여부
task.setTaskCreateDate(taskDto.getTaskCreateDate()); // 업무 생성일
task.setTaskUpdateDate((taskDto.getTaskUpdateDate())); // 수정일
task.setTaskUpdateDate((taskDto.getTaskUpdateDate())); // 수정일*/

if (optionalTask.isEmpty()) {
return null;
}
else{
Task task = optionalTask.get();
String originTaskStatus = task.getTaskStatus().getTaskStatusId();
Date originTaskFinishDate = task.getTaskFinishDate();
System.out.println("[Update Task LOG] " + task.getTaskNo() + " >> " + " +(( " + originTaskStatus + " )) >> TO BE (( " + taskDto.getTaskStatus() + " ))");

// 진행도가 100%가 되었거나 진행 상태가 완료로 바뀐 경우 -> 업무 종료 시간 저장
if(!originTaskStatus.equals("DONE") && (taskDto.getTaskStatus().equals("DONE") || taskDto.getTaskPercent() >= 100)){
taskDto.setTaskFinishDate(new Date());
}
// 어떤 이유에 진행도가 다시 100 미만이 되거나 완료 상태가 아니게 되었을 경우 -> 종료 시간 삭제
else if(originTaskStatus.equals("DONE") && (!taskDto.getTaskStatus().equals("DONE") || taskDto.getTaskPercent() < 100)){
taskDto.setTaskFinishDate(null);
}

try{
taskDto.setTaskNo(taskNo);
Task updateTask = convertToEntity(taskDto);
taskRepository.save(updateTask);

return convertToDto(task);
}
catch(Exception e){
return null;
}

}

task = taskRepository.save(task);

return convertToDto(task);
}


Expand Down Expand Up @@ -149,7 +191,9 @@ private TaskDTO convertToDto(Task task) {
taskDto.setTaskStatus(task.getTaskStatus().getTaskStatusId()); // 업무 진행 상태
taskDto.setTaskStartDate(task.getTaskStartDate()); // 업무 시작일
taskDto.setTaskEndDate(task.getTaskEndDate()); // 업무 종료일
taskDto.setTaskFinishDate(task.getTaskFinishDate()); // 실제 업무 종료일
taskDto.setTaskTest(task.getTaskTest()); // 업무 테스트 여부
taskDto.setTaskTestUrl(task.getTaskTestUrl()); // 테스트 요청 URL
taskDto.setTaskPercent(task.getTaskPercent()); // 업무 진행도
taskDto.setTaskCreateDate(task.getTaskCreateDate()); // 업무 생성일
taskDto.setTaskUpdateDate(task.getTaskUpdateDate()); // 업무 수정일
Expand All @@ -164,6 +208,7 @@ private Task convertToEntity(TaskDTO taskDto) {
project.setProjNo(taskDto.getProjNo());
task.setProject(project);

task.setTaskNo(taskDto.getTaskNo());
task.setTaskTitle(taskDto.getTaskTitle()); // 업무 제목
task.setAssignee(taskDto.getAssignee()); // 업무 담당자 이름
task.setTaskDesc(taskDto.getTaskDesc()); // 업무 설명
Expand All @@ -179,10 +224,12 @@ private Task convertToEntity(TaskDTO taskDto) {
task.setTaskStatus(taskStatus);

task.setTaskStartDate(taskDto.getTaskStartDate()); // 업무 시작일
task.setTaskEndDate(taskDto.getTaskEndDate()); // 업무 종료일
task.setTaskEndDate(taskDto.getTaskEndDate()); // 업무 종료 예정일
task.setTaskFinishDate(taskDto.getTaskFinishDate()); // 실제 업무 종료일
task.setTaskPercent(taskDto.getTaskPercent()); // 업무 진행 정도(xx%)
if(taskDto.getTaskTest() != null)
task.setTaskTest(taskDto.getTaskTest()); // 업무 테스트 진행 여부
task.setTaskTest(taskDto.getTaskTest()); // 업무 테스트 진행 여부
task.setTaskTestUrl(taskDto.getTaskTestUrl()); // 테스트 요청 URL
task.setTaskCreateDate(taskDto.getTaskCreateDate()); // 업무 생성일
task.setTaskUpdateDate((taskDto.getTaskUpdateDate())); // 수정일

Expand Down
Loading

0 comments on commit 5891e7a

Please sign in to comment.