From b27cd632dac5f903a607e7b1fd0de5337ff111e4 Mon Sep 17 00:00:00 2001 From: a121255 Date: Wed, 22 Jan 2025 18:19:02 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EC=9E=84=EC=8B=9C=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/project/ProgressStep.java | 53 +++++++++++-------- .../com/checkping/domain/project/Project.java | 22 ++++++-- .../project/ProgressStepRepository.java | 7 +++ .../com/checkping/dto/ProjectRequest.java | 20 ++++--- .../com/checkping/dto/ProjectResponse.java | 8 +-- .../service/project/ProjectServiceImpl.java | 51 ++++++++++++++---- 6 files changed, 115 insertions(+), 46 deletions(-) create mode 100644 module-infra/src/main/java/com/checkping/infra/repository/project/ProgressStepRepository.java diff --git a/module-domain/src/main/java/com/checkping/domain/project/ProgressStep.java b/module-domain/src/main/java/com/checkping/domain/project/ProgressStep.java index 319d92e89..49c103c50 100644 --- a/module-domain/src/main/java/com/checkping/domain/project/ProgressStep.java +++ b/module-domain/src/main/java/com/checkping/domain/project/ProgressStep.java @@ -2,24 +2,17 @@ import com.checkping.domain.BaseEntity; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; +import jakarta.persistence.*; +import lombok.*; + import java.time.LocalDateTime; -import lombok.Getter; -import lombok.RequiredArgsConstructor; @Getter +@Builder @Table(name = "progress_step") @Entity +@AllArgsConstructor +@NoArgsConstructor public class ProgressStep extends BaseEntity { /* id : id @@ -34,35 +27,51 @@ public class ProgressStep extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id", nullable = false) + @Column(name = "id") private Long id; - @Column(name = "name", nullable = false, length = 100) + @Column(name = "name", length = 100) private String name; @Column(name = "description", length = 1000) private String description; - @Column(name = "step_order", nullable = false) + @Column(name = "step_order") private Integer stepOrder; @Enumerated(EnumType.STRING) - @Column(name = "status", nullable = false) + @Column(name = "status") private Project.Status status; - @Column(name = "start_at", nullable = false) + @Column(name = "start_at") private LocalDateTime startAt; - @Column(name = "close_at", nullable = false) + @Column(name = "close_at") private LocalDateTime closeAt; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "project_id", nullable = false) - private Project project; + @Column(name = "project_id") + private Long project_id; + + /*@ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "project_id") + private Project project;*/ @Getter @RequiredArgsConstructor public enum ProgressStatus { NOT_STARTED, IN_PROGRESS, COMPLETED, CANCELED } + + @Getter + @RequiredArgsConstructor + public enum CurrentStep { + REQUIREMENTS("요구사항 정의"), + SCREEN_DESIGN("화면설계"), + DESIGN( "디자인" ), + PUBLISHING("퍼블리싱"), + DEVELOPMENT("개발"), + REVIEW("검수"); + + private final String description; + } } diff --git a/module-domain/src/main/java/com/checkping/domain/project/Project.java b/module-domain/src/main/java/com/checkping/domain/project/Project.java index 6f24f6c91..dd5a63d8b 100644 --- a/module-domain/src/main/java/com/checkping/domain/project/Project.java +++ b/module-domain/src/main/java/com/checkping/domain/project/Project.java @@ -5,9 +5,12 @@ import com.checkping.domain.member.Organization; import jakarta.persistence.*; import lombok.*; +import org.springframework.data.annotation.LastModifiedDate; + import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.UUID; @Getter @@ -56,9 +59,16 @@ public class Project extends BaseEntity { @Column(name = "management_step", length = 100) private ManagementStep management_step; + @Column(name = "progress_step_id") + private Long progressStepId; + + @Column(name = "dev_owner_id", columnDefinition = "BINARY(16)") + private UUID devOwnerId; + @Column(name = "reg_at") private LocalDateTime regAt; + @LastModifiedDate @Column(name = "update_at") private LocalDateTime updateAt; @@ -68,11 +78,11 @@ public class Project extends BaseEntity { @Column(name = "close_at") private LocalDateTime closeAt; - @Column(name = "resister_id") - private Long resisterId; + @Column(name = "resister_id", columnDefinition = "BINARY(16)") + private UUID resisterId; - @Column(name = "updater_id") - private Long updaterId; + @Column(name = "updater_id", columnDefinition = "BINARY(16)") + private UUID updaterId; @Column(name = "deleted_yn") private String deletedYn; @@ -116,4 +126,8 @@ public enum ManagementStep { private final String description; } + public void updateProgressStep(Long id){ + this.progressStepId = id; + } + } \ No newline at end of file diff --git a/module-infra/src/main/java/com/checkping/infra/repository/project/ProgressStepRepository.java b/module-infra/src/main/java/com/checkping/infra/repository/project/ProgressStepRepository.java new file mode 100644 index 000000000..d11b9c547 --- /dev/null +++ b/module-infra/src/main/java/com/checkping/infra/repository/project/ProgressStepRepository.java @@ -0,0 +1,7 @@ +package com.checkping.infra.repository.project; + +import com.checkping.domain.project.ProgressStep; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ProgressStepRepository extends JpaRepository { +} diff --git a/module-service/src/main/java/com/checkping/dto/ProjectRequest.java b/module-service/src/main/java/com/checkping/dto/ProjectRequest.java index 73946069c..7944363ce 100644 --- a/module-service/src/main/java/com/checkping/dto/ProjectRequest.java +++ b/module-service/src/main/java/com/checkping/dto/ProjectRequest.java @@ -9,6 +9,7 @@ import java.time.LocalDateTime; import java.util.List; +import java.util.UUID; @Getter @NoArgsConstructor @@ -40,16 +41,18 @@ public static class ResisterDto { private String detail; private String status; private String managementStep; + private Long progressStepId; @Schema(description = "프로젝트 시작 일시", example = "yyyy-MM-dd HH:mm:ss" ) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime startAt; @Schema(description = "프로젝트 마감 일시", examples = {"2025-01-15 10:17:15", "2025-12-28 11:17:15"} ) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime closeAt; - private Long resisterId; + private UUID resisterId; + private UUID devOwnerId; - private String developerOrgId; - private String customerOrgId; + private UUID developerOrgId; + private UUID customerOrgId; private List members; @@ -64,6 +67,7 @@ public static Project toEntity(ResisterDto resisterDto, List organ .startAt(resisterDto.getStartAt()) .closeAt(resisterDto.getCloseAt()) .resisterId(resisterDto.getResisterId()) + .devOwnerId(resisterDto.getDevOwnerId()) .organizations(organizations) .members(members) .deletedYn("N") @@ -91,14 +95,16 @@ public static class UpdateDto { private String detail; private String status; private String managementStep; + private Long progressStepId; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime startAt; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime closeAt; - private Long updaterId; + private UUID updaterId; + private UUID devOwnerId; - private String developerOrgId; - private String customerOrgId; + private UUID developerOrgId; + private UUID customerOrgId; private List members; @@ -110,6 +116,8 @@ public static Project toEntity(UpdateDto updateDto, Project existingProject, Lis .detail(updateDto.getDetail()) .status(Project.Status.valueOf(updateDto.getStatus())) .management_step(Project.ManagementStep.valueOf(updateDto.getManagementStep())) + .progressStepId(updateDto.getProgressStepId()) + .devOwnerId(updateDto.getDevOwnerId()) .startAt(updateDto.getStartAt()) .closeAt(updateDto.getCloseAt()) .updateAt(LocalDateTime.now()) diff --git a/module-service/src/main/java/com/checkping/dto/ProjectResponse.java b/module-service/src/main/java/com/checkping/dto/ProjectResponse.java index 160a72092..e546b6c43 100644 --- a/module-service/src/main/java/com/checkping/dto/ProjectResponse.java +++ b/module-service/src/main/java/com/checkping/dto/ProjectResponse.java @@ -9,6 +9,7 @@ import lombok.ToString; import java.time.LocalDateTime; +import java.util.UUID; public class ProjectResponse { @@ -39,10 +40,10 @@ public static class ProjectDto { @Schema(description = "프로젝트 마감 일시") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime closeAt; - private Long resisterId; - private Long updaterId; + private UUID resisterId; + private UUID updaterId; private String deletedYn; - + private UUID devOwnerId; private String developerName; private String customerName; @@ -61,6 +62,7 @@ public static ProjectDto toDto(Project project) { projectDto.setResisterId(project.getResisterId()); projectDto.setUpdaterId(project.getUpdaterId()); projectDto.setDeletedYn(project.getDeletedYn()); + projectDto.setDevOwnerId(project.getDevOwnerId()); projectDto.setDeveloperName(project.getOrganizations().get(0).getName()); projectDto.setCustomerName(project.getOrganizations().get(1).getName()); return projectDto; diff --git a/module-service/src/main/java/com/checkping/service/project/ProjectServiceImpl.java b/module-service/src/main/java/com/checkping/service/project/ProjectServiceImpl.java index 742d064ff..9e5ebb9ea 100644 --- a/module-service/src/main/java/com/checkping/service/project/ProjectServiceImpl.java +++ b/module-service/src/main/java/com/checkping/service/project/ProjectServiceImpl.java @@ -4,15 +4,18 @@ import com.checkping.common.exception.BaseException; import com.checkping.domain.member.Member; import com.checkping.domain.member.Organization; +import com.checkping.domain.project.ProgressStep; import com.checkping.domain.project.Project; import com.checkping.dto.ProjectResponse; import com.checkping.infra.repository.member.MemberRepository; import com.checkping.infra.repository.member.OrganizationRepository; +import com.checkping.infra.repository.project.ProgressStepRepository; import com.checkping.infra.repository.project.ProjectRepository; import com.checkping.dto.ProjectRequest; import io.micrometer.common.util.StringUtils; import jakarta.persistence.Tuple; +import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -29,16 +32,13 @@ @RequiredArgsConstructor public class ProjectServiceImpl implements ProjectService { - @Autowired - private ProjectRepository projectRepository; - - @Autowired - private OrganizationRepository organizationRepository; - - @Autowired - private MemberRepository memberRepository; + private final ProjectRepository projectRepository; + private final OrganizationRepository organizationRepository; + private final MemberRepository memberRepository; + private final ProgressStepRepository progressStepRepository; @Override + @Transactional public ProjectResponse.ProjectDto registerProject(ProjectRequest.ResisterDto request) { if (StringUtils.isBlank(request.getName())) { throw new BaseException(ErrorCode.BAD_REQUEST); @@ -48,6 +48,34 @@ public ProjectResponse.ProjectDto registerProject(ProjectRequest.ResisterDto req List members = getMembers(request.getMembers()); Project project = projectRepository.save(ProjectRequest.ResisterDto.toEntity(request, organizations, members)); + + List steps = new ArrayList<>(); + + for (ProgressStep.CurrentStep step : ProgressStep.CurrentStep.values()) { + ProgressStep progressStep = ProgressStep.builder() + .project_id(project.getId()) + .name(step.getDescription()) + .build(); + + steps.add(progressStep); + } + + progressStepRepository.saveAll(steps); + + Long firstStepId = steps.get(0).getId(); + + System.out.println(":: " + project); + + /* project.toBuilder() + .progressStepId(firstStepId) + .build();*/ + + project.updateProgressStep(firstStepId); + + System.out.println(":: " + project); + + //projectRepository.save(project); + return ProjectResponse.ProjectDto.toDto(project); } @@ -114,12 +142,13 @@ public Map countProjectsByManagementStep() { tuple -> ((Project.ManagementStep) tuple.get("managementStep")).name(), tuple -> (Long) tuple.get("projectCount") )); + } - private List getOrganizations(String developerOrgId, String customerOrgId) { + private List getOrganizations(UUID developerOrgId, UUID customerOrgId) { return Arrays.asList( - organizationRepository.findById(UUID.fromString(developerOrgId)) + organizationRepository.findById(developerOrgId) .orElseThrow(() -> new BaseException(ErrorCode.NOT_FOUND)), - organizationRepository.findById(UUID.fromString(customerOrgId)) + organizationRepository.findById(customerOrgId) .orElseThrow(() -> new BaseException(ErrorCode.NOT_FOUND)) ); } From 2078298c3c90fe21825085f9c0741f347eba9eb4 Mon Sep 17 00:00:00 2001 From: a121255 Date: Wed, 22 Jan 2025 19:48:33 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore=20:=20=EC=A3=BC=EC=84=9D,=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=EB=AC=B8=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 주석, 출력문 코드 제거 --- .../checkping/service/project/ProjectServiceImpl.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/module-service/src/main/java/com/checkping/service/project/ProjectServiceImpl.java b/module-service/src/main/java/com/checkping/service/project/ProjectServiceImpl.java index 9e5ebb9ea..6c53b6512 100644 --- a/module-service/src/main/java/com/checkping/service/project/ProjectServiceImpl.java +++ b/module-service/src/main/java/com/checkping/service/project/ProjectServiceImpl.java @@ -18,7 +18,6 @@ import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; @@ -64,18 +63,8 @@ public ProjectResponse.ProjectDto registerProject(ProjectRequest.ResisterDto req Long firstStepId = steps.get(0).getId(); - System.out.println(":: " + project); - - /* project.toBuilder() - .progressStepId(firstStepId) - .build();*/ - project.updateProgressStep(firstStepId); - System.out.println(":: " + project); - - //projectRepository.save(project); - return ProjectResponse.ProjectDto.toDto(project); }