Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/214 feature 프로젝트 생성수정 수정 #252

Merged
merged 3 commits into from
Jan 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;

Expand All @@ -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;
Expand Down Expand Up @@ -116,4 +126,8 @@ public enum ManagementStep {
private final String description;
}

public void updateProgressStep(Long id){
this.progressStepId = id;
}

}
Original file line number Diff line number Diff line change
@@ -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<ProgressStep, Long> {
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;

@Getter
@NoArgsConstructor
Expand Down Expand Up @@ -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<String> members;

Expand All @@ -64,6 +67,7 @@ public static Project toEntity(ResisterDto resisterDto, List<Organization> organ
.startAt(resisterDto.getStartAt())
.closeAt(resisterDto.getCloseAt())
.resisterId(resisterDto.getResisterId())
.devOwnerId(resisterDto.getDevOwnerId())
.organizations(organizations)
.members(members)
.deletedYn("N")
Expand Down Expand Up @@ -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<String> members;

Expand All @@ -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())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import lombok.ToString;

import java.time.LocalDateTime;
import java.util.UUID;

public class ProjectResponse {

Expand Down Expand Up @@ -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;

Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,20 @@
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;
import org.springframework.stereotype.Service;

import java.util.*;
Expand All @@ -29,16 +31,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);
Expand All @@ -48,8 +47,25 @@ public ProjectResponse.ProjectDto registerProject(ProjectRequest.ResisterDto req
request.getCustomerOrgId());
List<Member> members = getMembers(request.getMembers());

Project project = projectRepository.save(
ProjectRequest.ResisterDto.toEntity(request, organizations, members));
Project project = projectRepository.save(ProjectRequest.ResisterDto.toEntity(request, organizations, members));

List<ProgressStep> 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();

project.updateProgressStep(firstStepId);

return ProjectResponse.ProjectDto.toDto(project);
}

Expand Down Expand Up @@ -120,12 +136,12 @@ public Map<String, Long> countProjectsByManagementStep() {
));
}

private List<Organization> getOrganizations(String developerOrgId, String customerOrgId) {
private List<Organization> getOrganizations(UUID developerOrgId, UUID customerOrgId) {
return Arrays.asList(
organizationRepository.findById(UUID.fromString(developerOrgId))
.orElseThrow(() -> new BaseException(ErrorCode.NOT_FOUND)),
organizationRepository.findById(UUID.fromString(customerOrgId))
.orElseThrow(() -> new BaseException(ErrorCode.NOT_FOUND))
organizationRepository.findById(developerOrgId)
.orElseThrow(() -> new BaseException(ErrorCode.NOT_FOUND)),
organizationRepository.findById(customerOrgId)
.orElseThrow(() -> new BaseException(ErrorCode.NOT_FOUND))
);
}

Expand Down