Browse Source

feat: data - code 구성

pull/1/head
지대한 8 months ago
parent
commit
087d11efa1
  1. 21
      app/kac-app/src/main/java/kr/co/palnet/kac/api/com/controller/CodeController.java
  2. 2
      app/kac-app/src/main/java/kr/co/palnet/kac/app/config/KacJpaConfig.java
  3. 63
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdBas.java
  4. 20
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdGroupBas.java
  5. 76
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdLangCtg.java
  6. 12
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdBasRepository.java
  7. 7
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdGroupBasRepository.java
  8. 10
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdLangCtgRepository.java
  9. 202
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/service/ComCodeDomainService.java
  10. 234
      app/kac-app/src/test/java/kr/co/palnet/kac/data/com/service/ComCodeDomainServiceTest.java
  11. 2
      http-client/test.http

21
app/kac-app/src/main/java/kr/co/palnet/kac/api/com/controller/CodeController.java

@ -0,0 +1,21 @@
package kr.co.palnet.kac.api.com.controller;
import kr.co.palnet.kac.data.com.service.ComCodeDomainService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor
@RequestMapping("/v1/com/code")
@RestController
public class CodeController {
private final ComCodeDomainService comCodeDomainService;
@GetMapping("/test")
public String test() {
var test = comCodeDomainService.getComCdGroupBas("test");
return "test";
}
}

2
app/kac-app/src/main/java/kr/co/palnet/kac/app/config/KacJpaConfig.java

@ -56,7 +56,7 @@ public class KacJpaConfig {
.build(); .build();
} }
@Bean @Bean(name = "kacTransactionManager")
@Primary @Primary
public PlatformTransactionManager kacTransactionManager(EntityManagerFactoryBuilder builder) { public PlatformTransactionManager kacTransactionManager(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(Objects.requireNonNull(kacEntityManagerFactory(builder).getObject())); return new JpaTransactionManager(Objects.requireNonNull(kacEntityManagerFactory(builder).getObject()));

63
app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdBas.java

@ -1,5 +1,6 @@
package kr.co.palnet.kac.data.com.model; package kr.co.palnet.kac.data.com.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@ -7,7 +8,6 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@ -16,28 +16,38 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Builder @Builder
@IdClass(ComCdBas.ComCdBasId.class)
@Entity @Entity
@Table(name = "COM_CD_BAS") @Table(name = "COM_CD_BAS")
public class ComCdBas { public class ComCdBas {
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Builder @Builder
@Embeddable // @Embeddable
public static class ComCdBasId implements Serializable { public static class ComCdBasId implements Serializable {
// 그룹코드 // 그룹코드
// @Column(name = "GROUP_CD", length = 20) @Column(name = "GROUP_CD")
private String groupCd; private String groupCd;
// 코드ID // 코드ID
@Column(name = "CD_ID", length = 30) @Column(name = "CD_ID")
private String cdId; private String cdId;
} }
// 코드ID, 그룹코드 // 코드ID, 그룹코드
@EmbeddedId // @EmbeddedId
private ComCdBasId id; // private ComCdBasId id;
@Id
@Column(name = "GROUP_CD", length = 20)
private String groupCd;
// 코드ID
@Id
@Column(name = "CD_ID", length = 30)
private String cdId;
// 상위코드 // 상위코드
@Column(name = "UPPER_CD", length = 20) @Column(name = "UPPER_CD", length = 20)
@ -64,19 +74,18 @@ public class ComCdBas {
private LocalDateTime createDt; private LocalDateTime createDt;
// 수정사용자ID // 수정사용자ID
@Column(name = "UPDTE_USER_ID", length = 30, nullable = false) @Column(name = "UPDATE_USER_ID", length = 30, nullable = false)
private String updteUserId; private String updateUserId;
// 수정일시 // 수정일시
@Column(name = "UPDTE_DT", columnDefinition = "datetime", nullable = false) @Column(name = "UPDATE_DT", columnDefinition = "datetime", nullable = false)
private LocalDateTime updteDt; private LocalDateTime updateDt;
@MapsId("groupCd") @JsonIgnore
@ManyToOne // @MapsId("groupCd")
@JoinColumns( @ManyToOne(fetch = FetchType.LAZY)
value = { @JoinColumn(
@JoinColumn(name = "GROUP_CD") name = "GROUP_CD", updatable = false, insertable = false,
},
foreignKey = @ForeignKey(name = "FK_COM_CD_BAS_TO_COM_CD_GROUP_BAS") foreignKey = @ForeignKey(name = "FK_COM_CD_BAS_TO_COM_CD_GROUP_BAS")
) )
private ComCdGroupBas comCdGroupBas; private ComCdGroupBas comCdGroupBas;
@ -84,4 +93,24 @@ public class ComCdBas {
@OneToMany(mappedBy = "comCdBas", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE) @OneToMany(mappedBy = "comCdBas", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private List<ComCdLangCtg> comCdLangCtgList; private List<ComCdLangCtg> comCdLangCtgList;
public void update(ComCdBas comCdBas) {
if (comCdBas == null) return;
// if (comCdBas.getId() != null && comCdBas.getId().getGroupCd() != null && !comCdBas.getId().getGroupCd().isBlank())
// this.id.groupCd = comCdBas.getId().getGroupCd();
// if (comCdBas.getId() != null && comCdBas.getId().getCdId() != null && !comCdBas.getId().getCdId().isBlank())
// this.id.cdId = comCdBas.getId().getCdId();
if (comCdBas.getGroupCd() != null && !comCdBas.getGroupCd().isBlank()) this.groupCd = comCdBas.getGroupCd();
if (comCdBas.getCdId() != null && !comCdBas.getCdId().isBlank()) this.cdId = comCdBas.getCdId();
if (comCdBas.getUpperCd() != null && !comCdBas.getUpperCd().isBlank()) this.upperCd = comCdBas.getUpperCd();
if (comCdBas.getSortOrdr() != null) this.sortOrdr = comCdBas.getSortOrdr();
if (comCdBas.getAddInfoValue() != null && !comCdBas.getAddInfoValue().isBlank())
this.addInfoValue = comCdBas.getAddInfoValue();
if (comCdBas.getUseYn() != null && !comCdBas.getUseYn().isBlank()) this.useYn = comCdBas.getUseYn();
if (comCdBas.getUpdateUserId() != null && !comCdBas.getUpdateUserId().isBlank())
this.updateUserId = comCdBas.getUpdateUserId();
if (comCdBas.getUpdateDt() != null) this.updateDt = comCdBas.getUpdateDt();
}
} }

20
app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdGroupBas.java

@ -45,14 +45,26 @@ public class ComCdGroupBas {
private LocalDateTime createDt; private LocalDateTime createDt;
// 수정사용자ID // 수정사용자ID
@Column(name = "UPDTE_USER_ID", length = 30, nullable = false) @Column(name = "UPDATE_USER_ID", length = 30, nullable = false)
private String updteUserId; private String updateUserId;
// 수정일시 // 수정일시
@Column(name = "UPDTE_DT", columnDefinition = "datetime", nullable = false) @Column(name = "UPDATE_DT", columnDefinition = "datetime", nullable = false)
private LocalDateTime updteDt; private LocalDateTime updateDt;
@OneToMany(mappedBy = "comCdGroupBas", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE) @OneToMany(mappedBy = "comCdGroupBas", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private List<ComCdBas> comCdBasList; private List<ComCdBas> comCdBasList;
public void update(ComCdGroupBas comCdGroupBas) {
if(comCdGroupBas == null) return;
// if(comCdGroupBas.getGroupCd() != null && this.groupCd != null && !this.groupCd.equals(comCdGroupBas.getGroupCd())) return;
if(comCdGroupBas.getGroupCd() != null && !comCdGroupBas.getGroupCd().isBlank()) this.groupCd = comCdGroupBas.getGroupCd();
if(comCdGroupBas.getSiteCd() != null && !comCdGroupBas.getSiteCd().isBlank()) this.siteCd = comCdGroupBas.getSiteCd();
if(comCdGroupBas.getGroupCdNm() != null && !comCdGroupBas.getGroupCdNm().isBlank()) this.groupCdNm = comCdGroupBas.getGroupCdNm();
if(comCdGroupBas.getRm() != null && !comCdGroupBas.getRm().isBlank()) this.rm = comCdGroupBas.getRm();
if(comCdGroupBas.getUpdateUserId() != null && !comCdGroupBas.getUpdateUserId().isBlank()) this.updateUserId = comCdGroupBas.getUpdateUserId();
if(comCdGroupBas.getUpdateDt() != null) this.updateDt = comCdGroupBas.getUpdateDt();
}
} }

76
app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdLangCtg.java

@ -1,5 +1,6 @@
package kr.co.palnet.kac.data.com.model; package kr.co.palnet.kac.data.com.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@ -8,11 +9,13 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Builder @Builder
@IdClass(ComCdLangCtg.ComCdLangCtgId.class)
@Entity @Entity
@Table(name = "COM_CD_LANG_CTG") @Table(name = "COM_CD_LANG_CTG")
public class ComCdLangCtg { public class ComCdLangCtg {
@ -21,19 +24,42 @@ public class ComCdLangCtg {
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Builder @Builder
@Embeddable // @Embeddable
public static class ComCdLangCtgId implements Serializable { public static class ComCdLangCtgId implements Serializable {
private ComCdBas.ComCdBasId comCdBasId; // private ComCdBas.ComCdBasId comCdBasId;
// 그룹코드
@Column(name = "GROUP_CD")
private String groupCd;
// 코드ID
@Column(name = "CD_ID")
private String cdId;
// 언어구분코드 // 언어구분코드
@Column(name = "LANG_DIV_CD", length = 5) @Column(name = "LANG_DIV_CD")
private String langDivCd; private String langDivCd;
} }
// 코드ID, 그룹코드, 언어구분코드 // // 코드ID, 그룹코드, 언어구분코드
@EmbeddedId // @EmbeddedId
private ComCdLangCtgId id; // private ComCdLangCtgId id;
// 그룹코드
@Id
@Column(name = "GROUP_CD", length = 20)
private String groupCd;
// 코드ID
@Id
@Column(name = "CD_ID", length = 30)
private String cdId;
// 언어구분코드
@Id
@Column(name = "LANG_DIV_CD", length = 5)
private String langDivCd;
// 코드명 // 코드명
@Column(name = "CD_NM", length = 100, nullable = false) @Column(name = "CD_NM", length = 100, nullable = false)
@ -50,25 +76,47 @@ public class ComCdLangCtg {
// 생성일시 // 생성일시
@Column(name = "CREATE_DT", columnDefinition = "datetime", nullable = false, updatable = false) @Column(name = "CREATE_DT", columnDefinition = "datetime", nullable = false, updatable = false)
private Instant createDt; private LocalDateTime createDt;
// 수정사용자ID // 수정사용자ID
@Column(name = "UPDTE_USER_ID", length = 30, nullable = false) @Column(name = "UPDATE_USER_ID", length = 30, nullable = false)
private String updteUserId; private String updateUserId;
// 수정일시 // 수정일시
@Column(name = "UPDTE_DT", columnDefinition = "datetime", nullable = false) @Column(name = "UPDATE_DT", columnDefinition = "datetime", nullable = false)
private Instant updteDt; private LocalDateTime updateDt;
@JsonIgnore
@MapsId("comCdBasId") @MapsId("comCdBasId")
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumns( @JoinColumns(
value = { value = {
@JoinColumn(name = "GROUP_CD", referencedColumnName = "GROUP_CD"), @JoinColumn(name = "GROUP_CD", referencedColumnName = "GROUP_CD", insertable = false, updatable = false),
@JoinColumn(name = "CD_ID", referencedColumnName = "CD_ID") @JoinColumn(name = "CD_ID", referencedColumnName = "CD_ID", insertable = false, updatable = false)
}, },
foreignKey = @ForeignKey(name = "FK_COM_CD_LANG_CTG_COM_CD_BAS") foreignKey = @ForeignKey(name = "FK_COM_CD_LANG_CTG_COM_CD_BAS")
) )
private ComCdBas comCdBas; private ComCdBas comCdBas;
public void update(ComCdLangCtg comCdLangCtg) {
if (comCdLangCtg == null) return;
// if(comCdLangCtg.getId() != null) {
// if(comCdLangCtg.getId().getComCdBasId() != null) {
// if(comCdLangCtg.getId().getComCdBasId().getGroupCd() != null && !comCdLangCtg.getId().getComCdBasId().getGroupCd().isBlank()) this.id.comCdBasId.setGroupCd(comCdLangCtg.getId().getComCdBasId().getGroupCd());
// if(comCdLangCtg.getId().getComCdBasId().getCdId() != null && !comCdLangCtg.getId().getComCdBasId().getCdId().isBlank()) this.id.comCdBasId.setCdId(comCdLangCtg.getId().getComCdBasId().getCdId());
// }
// if(comCdLangCtg.getId().getLangDivCd() != null && !comCdLangCtg.getId().getLangDivCd().isBlank()) this.id.langDivCd = comCdLangCtg.getId().getLangDivCd();
// }
if (comCdLangCtg.getGroupCd() != null && !comCdLangCtg.getGroupCd().isBlank()) this.groupCd = comCdLangCtg.getGroupCd();
if (comCdLangCtg.getCdId() != null && !comCdLangCtg.getCdId().isBlank()) this.cdId = comCdLangCtg.getCdId();
if (comCdLangCtg.getLangDivCd() != null && !comCdLangCtg.getLangDivCd().isBlank())
this.langDivCd = comCdLangCtg.getLangDivCd();
if (comCdLangCtg.getCdNm() != null && !comCdLangCtg.getCdNm().isBlank()) this.cdNm = comCdLangCtg.getCdNm();
if (comCdLangCtg.getRm() != null && !comCdLangCtg.getRm().isBlank()) this.rm = comCdLangCtg.getRm();
if (comCdLangCtg.getUpdateUserId() != null && !comCdLangCtg.getUpdateUserId().isBlank())
this.updateUserId = comCdLangCtg.getUpdateUserId();
if (comCdLangCtg.getUpdateDt() != null) this.updateDt = comCdLangCtg.getUpdateDt();
}
} }

12
app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdBasRepository.java

@ -0,0 +1,12 @@
package kr.co.palnet.kac.data.com.repository;
import kr.co.palnet.kac.data.com.model.ComCdBas;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface ComCdBasRepository extends JpaRepository<ComCdBas, ComCdBas.ComCdBasId> {
List<ComCdBas> findByGroupCdAndUseYnOrderBySortOrdrAsc(String groupCd, String useYn);
ComCdBas findByGroupCdAndCdIdAndUseYn(String groupCd, String cdId, String useYn);
}

7
app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdGroupBasRepository.java

@ -0,0 +1,7 @@
package kr.co.palnet.kac.data.com.repository;
import kr.co.palnet.kac.data.com.model.ComCdGroupBas;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ComCdGroupBasRepository extends JpaRepository<ComCdGroupBas, String> {
}

10
app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdLangCtgRepository.java

@ -0,0 +1,10 @@
package kr.co.palnet.kac.data.com.repository;
import kr.co.palnet.kac.data.com.model.ComCdLangCtg;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface ComCdLangCtgRepository extends JpaRepository<ComCdLangCtg, ComCdLangCtg.ComCdLangCtgId> {
List<ComCdLangCtg> findByGroupCdAndCdId(String groupCd, String cdId);
}

202
app/kac-app/src/main/java/kr/co/palnet/kac/data/com/service/ComCodeDomainService.java

@ -0,0 +1,202 @@
package kr.co.palnet.kac.data.com.service;
import kr.co.palnet.kac.data.com.model.ComCdBas;
import kr.co.palnet.kac.data.com.model.ComCdGroupBas;
import kr.co.palnet.kac.data.com.model.ComCdLangCtg;
import kr.co.palnet.kac.data.com.repository.ComCdBasRepository;
import kr.co.palnet.kac.data.com.repository.ComCdGroupBasRepository;
import kr.co.palnet.kac.data.com.repository.ComCdLangCtgRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
@Slf4j
@RequiredArgsConstructor
@Service
public class ComCodeDomainService {
private final ComCdGroupBasRepository comCdGroupBasRepository;
private final ComCdBasRepository comCdBasRepository;
private final ComCdLangCtgRepository comCdLangCtgRepository;
// 그룹 조회
public List<ComCdGroupBas> getComCdGroupBasList() {
return comCdGroupBasRepository.findAll();
}
public ComCdGroupBas getComCdGroupBas(String groupCd) {
return comCdGroupBasRepository.findById(groupCd).orElse(null);
}
// TODO 코드 조회시 UPPER 기반 계층구조로 변경
// 코드 조회
public List<ComCdBas> getComCdBasList(String groupCd) {
return comCdBasRepository.findByGroupCdAndUseYnOrderBySortOrdrAsc(groupCd, "Y");
}
public ComCdBas getComCdBas(String groupCd, String cdId) {
return comCdBasRepository.findByGroupCdAndCdIdAndUseYn(groupCd, cdId, "Y");
}
// 언어 조회
public List<ComCdLangCtg> getComCdLangCtgList(String groupCd, String cdId) {
return comCdLangCtgRepository.findByGroupCdAndCdId(groupCd, cdId);
}
public ComCdLangCtg getComCdLangCtg(String groupCd, String cdId, String langDivCd) {
ComCdLangCtg.ComCdLangCtgId id = ComCdLangCtg.ComCdLangCtgId.builder()
.groupCd(groupCd)
.cdId(cdId)
.langDivCd(langDivCd)
.build();
return comCdLangCtgRepository.findById(id).orElse(null);
}
// TODO Exception 처리
// 그룹 등록
public ComCdGroupBas createComCdGroupBas(ComCdGroupBas comCdGroupBas) {
comCdGroupBasRepository.findById(comCdGroupBas.getGroupCd()).ifPresent(bas -> {
throw new RuntimeException("이미 존재하는 코드 그룹입니다.");
});
// TODO 일자 및 사용자 넣기
comCdGroupBas.setCreateDt(LocalDateTime.now());
comCdGroupBas.setCreateUserId("CREATE_USER");
comCdGroupBas.setUpdateDt(LocalDateTime.now());
comCdGroupBas.setUpdateUserId("CREATE_USER");
return comCdGroupBasRepository.save(comCdGroupBas);
}
// TODO 일자 및 사용자 넣기
// TODO Exception 처리
// 코드 등록
public ComCdBas createComCdBas(ComCdBas comCdBas) {
// comCdBasRepository.findById(comCdBas.getId()).ifPresent(bas -> {
// throw new RuntimeException("이미 존재하는 코드입니다.");
// });
var id = ComCdBas.ComCdBasId.builder()
.groupCd(comCdBas.getGroupCd())
.cdId(comCdBas.getCdId())
.build();
comCdBasRepository.findById(id).ifPresent(bas -> {
throw new RuntimeException("이미 존재하는 코드입니다.");
});
// TODO 일자 및 사용자 넣기
comCdBas.setCreateDt(LocalDateTime.now());
comCdBas.setCreateUserId("CREATE_USER");
comCdBas.setUpdateDt(LocalDateTime.now());
comCdBas.setUpdateUserId("CREATE_USER");
return comCdBasRepository.save(comCdBas);
}
// 언어 등록
public ComCdLangCtg createComCdLangCtg(ComCdLangCtg comCdLangCtg) {
// comCdLangCtgRepository.findById(comCdLangCtg.getId()).ifPresent(bas -> {
// throw new RuntimeException("이미 존재하는 코드 언어입니다.");
// });
var id = ComCdLangCtg.ComCdLangCtgId.builder()
.groupCd(comCdLangCtg.getGroupCd())
.cdId(comCdLangCtg.getCdId())
.langDivCd(comCdLangCtg.getLangDivCd())
.build();
comCdLangCtgRepository.findById(id).ifPresent(bas -> {
throw new RuntimeException("이미 존재하는 코드 언어입니다.");
});
// TODO 일자 및 사용자 넣기
comCdLangCtg.setCreateDt(LocalDateTime.now());
comCdLangCtg.setCreateUserId("CREATE_USER");
comCdLangCtg.setUpdateDt(LocalDateTime.now());
comCdLangCtg.setUpdateUserId("CREATE_USER");
return comCdLangCtgRepository.save(comCdLangCtg);
}
// TODO Exception 처리
// 그룹 수정
public ComCdGroupBas updateComCdGroupBas(ComCdGroupBas comCdGroupBas) {
var bas = comCdGroupBasRepository.findById(comCdGroupBas.getGroupCd()).orElseThrow(() -> {
throw new RuntimeException("존재하지 않는 코드 그룹입니다.");
});
bas.update(comCdGroupBas);
// TODO 일자 및 사용자 넣기
bas.setUpdateDt(LocalDateTime.now());
bas.setUpdateUserId("UPDATE_USER");
return comCdGroupBasRepository.save(bas);
}
// TODO 일자 및 사용자 넣기
// TODO Exception 처리
// 코드 수정
public ComCdBas updateComCdBas(ComCdBas comCdBas) {
var id = ComCdBas.ComCdBasId.builder()
.groupCd(comCdBas.getGroupCd())
.cdId(comCdBas.getCdId())
.build();
var bas = comCdBasRepository.findById(id).orElseThrow(() -> {
throw new RuntimeException("존재하지 않는 코드입니다.");
});
bas.update(comCdBas);
// TODO 일자 및 사용자 넣기
bas.setUpdateDt(LocalDateTime.now());
bas.setUpdateUserId("UPDATE_USER");
return comCdBasRepository.save(bas);
}
// TODO 일자 및 사용자 넣기
// TODO Exception 처리
// 언어 수정
public ComCdLangCtg updateComCdLangCtg(ComCdLangCtg comCdLangCtg) {
var id = ComCdLangCtg.ComCdLangCtgId.builder()
.groupCd(comCdLangCtg.getGroupCd())
.cdId(comCdLangCtg.getCdId())
.langDivCd(comCdLangCtg.getLangDivCd())
.build();
var bas = comCdLangCtgRepository.findById(id).orElseThrow(() -> {
throw new RuntimeException("존재하지 않는 코드 언어입니다.");
});
bas.update(comCdLangCtg);
// TODO 일자 및 사용자 넣기
bas.setUpdateDt(LocalDateTime.now());
bas.setUpdateUserId("UPDATE_USER");
return comCdLangCtgRepository.save(bas);
}
// 그룹 삭제
public void deleteComCdGroupBas(String groupCd) {
comCdGroupBasRepository.deleteById(groupCd);
}
// 코드 삭제
public void deleteComCdBas(String groupCd, String cdId) {
var id = ComCdBas.ComCdBasId.builder()
.groupCd(groupCd)
.cdId(cdId)
.build();
comCdBasRepository.deleteById(id);
}
// 언어 삭제
public void deleteComCdLangCtg(String groupCd, String cdId, String langDivCd) {
var id = ComCdLangCtg.ComCdLangCtgId.builder()
.groupCd(groupCd)
.cdId(cdId)
.langDivCd(langDivCd)
.build();
comCdLangCtgRepository.deleteById(id);
}
}

234
app/kac-app/src/test/java/kr/co/palnet/kac/data/com/service/ComCodeDomainServiceTest.java

@ -0,0 +1,234 @@
package kr.co.palnet.kac.data.com.service;
import kr.co.palnet.kac.app.KacAppApplication;
import kr.co.palnet.kac.data.com.model.ComCdBas;
import kr.co.palnet.kac.data.com.model.ComCdGroupBas;
import kr.co.palnet.kac.data.com.model.ComCdLangCtg;
import kr.co.palnet.kac.data.com.repository.ComCdBasRepository;
import kr.co.palnet.kac.data.com.repository.ComCdGroupBasRepository;
import kr.co.palnet.kac.data.com.repository.ComCdLangCtgRepository;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.time.LocalDateTime;
@Slf4j
@SpringBootTest(classes = KacAppApplication.class)
class ComCodeDomainServiceTest {
@Autowired
private ComCodeDomainService comCodeDomainService;
@Autowired
private ComCdGroupBasRepository comCdGroupBasRepository;
@Autowired
private ComCdBasRepository comCdBasRepository;
@Autowired
private ComCdLangCtgRepository comCdLangCtgRepository;
@BeforeEach
void before() {
log.info("before start");
this.comCdLangCtgRepository.deleteAll();
this.comCdBasRepository.deleteAll();
this.comCdGroupBasRepository.deleteAll();
for (int i = 0; i < 3; i++) {
ComCdGroupBas comCdGroupBas = ComCdGroupBas.builder()
.groupCd("TEST" + i)
.siteCd("KAC")
.groupCdNm("테스트" + i)
.rm("비고")
.createUserId("INIT_CREATE_USER")
.createDt(LocalDateTime.now())
.updateUserId("INIT_UPDATE_USER")
.updateDt(LocalDateTime.now())
.build();
ComCdGroupBas saveComCdGroupBas = comCdGroupBasRepository.save(comCdGroupBas);
for (int j = 0; j < 10; j++) {
ComCdBas comCdBas = ComCdBas.builder()
.groupCd("TEST" + i)
.cdId("TEST" + j)
.addInfoValue("add infomation.")
.sortOrdr(0)
.useYn("Y")
.createUserId("INIT_CREATE_USER")
.createDt(LocalDateTime.now())
.updateUserId("INIT_UPDATE_USER")
.updateDt(LocalDateTime.now())
.build();
// comCdBas.setComCdGroupBas(saveComCdGroupBas);
ComCdBas saveComCdBas = comCdBasRepository.save(comCdBas);
for (int k = 0; k < 2; k++) {
ComCdLangCtg comCdLangCtg = ComCdLangCtg.builder()
.groupCd("TEST" + i)
.cdId("TEST" + j)
.langDivCd(k != 1 ? "ko_KR" : "en_US")
.cdNm("테스트")
.createUserId("INIT_CREATE_USER")
.createDt(LocalDateTime.now())
.updateUserId("INIT_UPDATE_USER")
.updateDt(LocalDateTime.now())
.build();
// comCdLangCtg.setComCdBas(saveComCdBas);
comCdLangCtgRepository.save(comCdLangCtg);
}
}
}
log.info("before end");
}
@DisplayName("before...")
@Test
void testBefore() {
log.info("before...");
}
@DisplayName("그룹 조회 - 목록")
@Test
void getComCdGroupBasList() {
comCodeDomainService.getComCdGroupBasList().forEach(comCdGroupBas -> log.info("{}", comCdGroupBas));
}
@DisplayName("그룹 조회 - 단건")
@Test
void getComCdGroupBas() {
var comCdGroupBas = comCodeDomainService.getComCdGroupBas("TEST");
log.info("{}", comCdGroupBas);
}
@DisplayName("코드 조회 - 목록")
@Test
void getComCdBasList() {
comCodeDomainService.getComCdBasList("TEST").forEach(bas -> log.info("{}", bas));
}
@DisplayName("코드 조회 - 단건")
@Test
void getComCdBas() {
var comCdBas = comCodeDomainService.getComCdBas("TEST", "TEST");
log.info("{}", comCdBas);
}
@DisplayName("언어 조회 - 목록")
@Test
void getComCdLangCtgList() {
comCodeDomainService.getComCdLangCtgList("TEST", "TEST").forEach(lang -> log.info("{}", lang));
}
@DisplayName("언어 조회 - 단건")
@Test
void getComCdLangCtg() {
ComCdLangCtg comCdLangCtg = comCodeDomainService.getComCdLangCtg("TEST", "TEST", "ko_KR");
log.info("{}", comCdLangCtg);
}
@DisplayName("그룹 등록 - 단건")
@Test
void createComCdGroupBas() {
ComCdGroupBas entity = ComCdGroupBas.builder()
.groupCd("TEST100")
.siteCd("KAC")
.groupCdNm("테스트")
.rm("비고")
.build();
comCodeDomainService.createComCdGroupBas(entity);
}
@DisplayName("코드 등록 - 단건")
@Test
void createComCdBas() {
ComCdBas entity = ComCdBas.builder()
.groupCd("TEST1")
.cdId("TEST100")
.addInfoValue("add infomation.")
.sortOrdr(0)
.useYn("Y")
.build();
comCodeDomainService.createComCdBas(entity);
}
@DisplayName("언어 등록 - 단건")
@Test
void createComCdLangCtg() {
ComCdLangCtg entity = ComCdLangCtg.builder()
.groupCd("TEST1")
.cdId("TEST1")
.langDivCd("zh_CN")
.cdNm("테스트1")
.build();
ComCdLangCtg comCdLangCtg = comCodeDomainService.createComCdLangCtg(entity);
log.info("{}", comCdLangCtg);
}
@DisplayName("그룹 수정 - 단건")
@Test
void updateComCdGroupBas() {
ComCdGroupBas entity = ComCdGroupBas.builder()
.groupCd("TEST0")
.siteCd("KAC")
.groupCdNm("테스트")
.rm("비고-update")
.build();
ComCdGroupBas comCdGroupBas = comCodeDomainService.updateComCdGroupBas(entity);
log.info("{}", comCdGroupBas);
}
@DisplayName("코드 수정 - 단건")
@Test
void updateComCdBas() {
ComCdBas entity = ComCdBas.builder()
.groupCd("TEST0")
.cdId("TEST7")
.addInfoValue("add infomation - update.")
.build();
comCodeDomainService.updateComCdBas(entity);
}
@DisplayName("언어 수정 - 단건")
@Test
void updateComCdLangCtg() {
ComCdLangCtg entity = ComCdLangCtg.builder()
.groupCd("TEST0")
.cdId("TEST7")
.langDivCd("ko_KR")
.cdNm("테스트1 - update")
.build();
comCodeDomainService.updateComCdLangCtg(entity);
}
@DisplayName("그룹 삭제 - 단건")
@Test
void deleteComCdGroupBas() {
comCodeDomainService.deleteComCdGroupBas("TEST3");
}
@DisplayName("코드 삭제 - 단건")
@Test
void deleteComCdBas() {
comCodeDomainService.deleteComCdBas("TEST3", "TEST3");
}
@DisplayName("언어 삭제 - 단건")
@Test
void deleteComCdLangCtg() {
comCodeDomainService.deleteComCdLangCtg("TEST3", "TEST3", "en_US");
}
}

2
http-client/test.http

@ -0,0 +1,2 @@
###
GET http://localhost:8080/v1/com/code/test
Loading…
Cancel
Save