Browse Source

feat: code api 구성

pull/2/head
지대한 8 months ago
parent
commit
c8c16724bc
  1. 3
      README.md
  2. 33
      app/kac-app/src/main/java/kr/co/palnet/kac/api/com/controller/CodeController.java
  3. 107
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/controller/ComCodeController.java
  4. 76
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeDTO.java
  5. 66
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeGroupDTO.java
  6. 32
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeGroupRS.java
  7. 71
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeLangDTO.java
  8. 34
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeRS.java
  9. 32
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeGroupRQ.java
  10. 39
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeLangRQ.java
  11. 43
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeRQ.java
  12. 15
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/SearchCodeAllRQ.java
  13. 15
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/SearchCodeRQ.java
  14. 127
      app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/service/ComCodeService.java
  15. 19
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdBas.java
  16. 8
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdGroupBas.java
  17. 12
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdLangCtg.java
  18. 4
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdBasRepository.java
  19. 3
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdGroupBasRepository.java
  20. 18
      app/kac-app/src/main/java/kr/co/palnet/kac/data/com/service/ComCodeDomainService.java
  21. 2
      app/kac-app/src/main/resources/application.yml
  22. 2
      app/kac-app/src/test/java/kr/co/palnet/kac/data/com/service/ComCodeDomainServiceTest.java
  23. 99
      http-client/test.http

3
README.md

@ -30,9 +30,6 @@ spring:
ddl-auto: create
```
## 설정 정보
### log4jdbc.log4j2.properties 속성

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

@ -1,33 +0,0 @@
package kr.co.palnet.kac.api.com.controller;
import kr.co.palnet.kac.app.exception.AppException;
import kr.co.palnet.kac.app.exception.ExceptionCode;
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";
}
// @GetMapping("/exception")
// public void exception(){
// throw new AppException(ExceptionCode.ALREADY_CERT);
// }
}

107
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/controller/ComCodeController.java

@ -0,0 +1,107 @@
package kr.co.palnet.kac.api.v1.com.code.controller;
import kr.co.palnet.kac.api.v1.com.code.service.ComCodeService;
import kr.co.palnet.kac.api.v1.com.code.model.*;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RequiredArgsConstructor
@RequestMapping("/v1/com/code")
@RestController
public class ComCodeController {
private final ComCodeService comCodeService;
/* 사용 용도 */
// 전체 코드 조회 - 코드그룹-코드-언어
@GetMapping("/all")
public ResponseEntity<List<CodeGroupRS>> getAllGroup(SearchCodeAllRQ rq) {
List<CodeGroupRS> allCode = comCodeService.getAllGroup(rq);
return ResponseEntity.ok(allCode);
}
// 그룹 목록 조회 - 코드 그룹만
@GetMapping("/group")
public ResponseEntity<List<CodeGroupRS>> getAllGroupCode() {
List<CodeGroupRS> codeGroupRSList = comCodeService.getAllGroupCode();
return ResponseEntity.ok(codeGroupRSList);
}
// 코드 목록 조회 - 코드 - 언어
@GetMapping("/code")
public ResponseEntity<List<CodeRS>> getAllCodeByGroup(SearchCodeRQ rq) {
List<CodeRS> list = comCodeService.getAllCodeByGroup(rq);
return ResponseEntity.ok(list);
}
/* 관리 용도 */
// 코드 그룹 등록
@PostMapping("/group")
public ResponseEntity<CodeGroupDTO> createCodeGroup(@RequestBody FormCodeGroupRQ rq) {
CodeGroupDTO codeGroup = comCodeService.createCodeGroup(rq);
return ResponseEntity.ok(codeGroup);
}
// 코드 등록
@PostMapping("/code")
public ResponseEntity<CodeDTO> createCode(@RequestBody FormCodeRQ rq) {
CodeDTO code = comCodeService.createCode(rq);
return ResponseEntity.ok(code);
}
// 언어 등록
@PostMapping("/lang")
public ResponseEntity<CodeLangDTO> createCodeLang(@RequestBody FormCodeLangRQ rq) {
CodeLangDTO lang = comCodeService.createCodeLang(rq);
return ResponseEntity.ok(lang);
}
// 코드 그룹 수정
@PutMapping("/group")
public ResponseEntity<CodeGroupDTO> updateCodeGroup(@RequestBody FormCodeGroupRQ rq) {
CodeGroupDTO codeGroup = comCodeService.updateCodeGroup(rq);
return ResponseEntity.ok(codeGroup);
}
// 코드 수정
@PutMapping("/code")
public ResponseEntity<CodeDTO> updateCode(@RequestBody FormCodeRQ rq) {
CodeDTO code = comCodeService.updateCode(rq);
return ResponseEntity.ok(code);
}
// 언어 수정
@PutMapping("/lang")
public ResponseEntity<CodeLangDTO> updateCodeLang(@RequestBody FormCodeLangRQ rq) {
CodeLangDTO lang = comCodeService.updateCodeLang(rq);
return ResponseEntity.ok(lang);
}
// 코드 그룹 삭제
@DeleteMapping("/group")
public void deleteCodeGroup(@RequestParam("groupCd") String groupCd) {
comCodeService.deleteCodeGroup(groupCd);
}
// 코드 삭제
@DeleteMapping("/code")
public void deleteCode(
@RequestParam("groupCd") String groupCd,
@RequestParam("cdId") String cdId) {
comCodeService.deleteCode(groupCd, cdId);
}
// 언어 삭제
@DeleteMapping("/lang")
public void deleteLang(
@RequestParam("groupCd") String groupCd,
@RequestParam("cdId") String cdId,
@RequestParam("langDivCd") String langDivCd) {
comCodeService.deleteLang(groupCd, cdId, langDivCd);
}
}

76
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeDTO.java

@ -0,0 +1,76 @@
package kr.co.palnet.kac.api.v1.com.code.model;
import kr.co.palnet.kac.data.com.model.ComCdBas;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CodeDTO {
// 그룹코드
private String groupCd;
// 코드ID
private String cdId;
// 상위코드
private String upperCd;
// 정렬순서
private Integer sortOrdr;
// 추가정보값
private String addInfoValue;
// 사용여부
private String useYn;
// 생성사용자ID
private String createUserId;
// 생성일시
private LocalDateTime createDt;
// 수정사용자ID
private String updateUserId;
// 수정일시
private LocalDateTime updateDt;
public static CodeDTO fromEntity(ComCdBas entity) {
return CodeDTO.builder()
.groupCd(entity.getGroupCd())
.cdId(entity.getCdId())
.upperCd(entity.getUpperCd())
.sortOrdr(entity.getSortOrdr())
.addInfoValue(entity.getAddInfoValue())
.useYn(entity.getUseYn())
.createUserId(entity.getCreateUserId())
.createDt(entity.getCreateDt())
.updateUserId(entity.getUpdateUserId())
.updateDt(entity.getUpdateDt())
.build();
}
public ComCdBas toEntity() {
return ComCdBas.builder()
.groupCd(groupCd)
.cdId(cdId)
.upperCd(upperCd)
.sortOrdr(sortOrdr)
.addInfoValue(addInfoValue)
.useYn(useYn)
.createUserId(createUserId)
.createDt(createDt)
.updateUserId(updateUserId)
.updateDt(updateDt)
.build();
}
}

66
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeGroupDTO.java

@ -0,0 +1,66 @@
package kr.co.palnet.kac.api.v1.com.code.model;
import kr.co.palnet.kac.data.com.model.ComCdGroupBas;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CodeGroupDTO {
// 그룹코드
private String groupCd;
// 사이트코드
private String siteCd;
// 그룹코드명
private String groupCdNm;
// 비고
private String rm;
// 생성사용자ID
private String createUserId;
// 생성일시
private LocalDateTime createDt;
// 수정사용자ID
private String updateUserId;
// 수정일시
private LocalDateTime updateDt;
public static CodeGroupDTO fromEntity(ComCdGroupBas entity){
return CodeGroupDTO.builder()
.groupCd(entity.getGroupCd())
.siteCd(entity.getSiteCd())
.groupCdNm(entity.getGroupCdNm())
.rm(entity.getRm())
.createUserId(entity.getCreateUserId())
.createDt(entity.getCreateDt())
.updateUserId(entity.getUpdateUserId())
.updateDt(entity.getUpdateDt())
.build();
}
public ComCdGroupBas toEntity(){
return ComCdGroupBas.builder()
.groupCd(groupCd)
.siteCd(siteCd)
.groupCdNm(groupCdNm)
.rm(rm)
.createUserId(createUserId)
.createDt(createDt)
.updateUserId(updateUserId)
.updateDt(updateDt)
.build();
}
}

32
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeGroupRS.java

@ -0,0 +1,32 @@
package kr.co.palnet.kac.api.v1.com.code.model;
import kr.co.palnet.kac.data.com.model.ComCdGroupBas;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CodeGroupRS {
private String groupCd;
private String siteCd;
private String groupCdNm;
private String rm;
private List<CodeRS> codeList = new ArrayList<>();
// ComCdGroupBas을 받아서 CodeGroupRS로 변환
public static CodeGroupRS fromEntity(ComCdGroupBas comCdGroupBas) {
return CodeGroupRS.builder()
.groupCd(comCdGroupBas.getGroupCd())
.siteCd(comCdGroupBas.getSiteCd())
.groupCdNm(comCdGroupBas.getGroupCdNm())
.rm(comCdGroupBas.getRm())
.build();
}
}

71
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeLangDTO.java

@ -0,0 +1,71 @@
package kr.co.palnet.kac.api.v1.com.code.model;
import kr.co.palnet.kac.data.com.model.ComCdLangCtg;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CodeLangDTO {
// 그룹코드
private String groupCd;
// 코드ID
private String cdId;
// 언어구분코드
private String langDivCd;
// 코드명
private String cdNm;
// 비고
private String rm;
// 생성사용자ID
private String createUserId;
// 생성일시
private LocalDateTime createDt;
// 수정사용자ID
private String updateUserId;
// 수정일시
private LocalDateTime updateDt;
public static CodeLangDTO fromEntity(ComCdLangCtg entity) {
return CodeLangDTO.builder()
.groupCd(entity.getGroupCd())
.cdId(entity.getCdId())
.langDivCd(entity.getLangDivCd())
.cdNm(entity.getCdNm())
.rm(entity.getRm())
.createUserId(entity.getCreateUserId())
.createDt(entity.getCreateDt())
.updateUserId(entity.getUpdateUserId())
.updateDt(entity.getUpdateDt())
.build();
}
public ComCdLangCtg toEntity() {
return ComCdLangCtg.builder()
.groupCd(groupCd)
.cdId(cdId)
.langDivCd(langDivCd)
.cdNm(cdNm)
.rm(rm)
.createUserId(createUserId)
.createDt(createDt)
.updateUserId(updateUserId)
.updateDt(updateDt)
.build();
}
}

34
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeRS.java

@ -0,0 +1,34 @@
package kr.co.palnet.kac.api.v1.com.code.model;
import kr.co.palnet.kac.data.com.model.ComCdBas;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CodeRS {
private String groupCd;
private String cdId;
private String cdNm;
private String upperCd;
private Integer sortOrdr;
private String addInfoValue;
private List<CodeRS> children = new ArrayList<>();
public static CodeRS fromEntity(ComCdBas comCdBas) {
return CodeRS.builder()
.groupCd(comCdBas.getComCdGroupBas().getGroupCd())
.cdId(comCdBas.getCdId())
.upperCd(comCdBas.getUpperCd())
.sortOrdr(comCdBas.getSortOrdr())
.addInfoValue(comCdBas.getAddInfoValue())
.build();
}
}

32
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeGroupRQ.java

@ -0,0 +1,32 @@
package kr.co.palnet.kac.api.v1.com.code.model;
import kr.co.palnet.kac.data.com.model.ComCdGroupBas;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class FormCodeGroupRQ {
// 그룹코드
private String groupCd;
// 사이트코드
private String siteCd;
// 그룹코드명
private String groupCdNm;
// 비고
private String rm;
public ComCdGroupBas toEntity() {
return ComCdGroupBas.builder()
.groupCd(this.getGroupCd())
.siteCd(this.getSiteCd())
.groupCdNm(this.getGroupCdNm())
.rm(this.getRm())
.build();
}
}

39
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeLangRQ.java

@ -0,0 +1,39 @@
package kr.co.palnet.kac.api.v1.com.code.model;
import kr.co.palnet.kac.data.com.model.ComCdLangCtg;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class FormCodeLangRQ {
// 그룹코드
private String groupCd;
// 코드ID
private String cdId;
// 언어구분코드
private String langDivCd;
// 코드명
private String cdNm;
// 비고
private String rm;
public ComCdLangCtg toEntity() {
return ComCdLangCtg.builder()
.groupCd(groupCd)
.cdId(cdId)
.langDivCd(langDivCd)
.cdNm(cdNm)
.rm(rm)
.build();
}
}

43
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeRQ.java

@ -0,0 +1,43 @@
package kr.co.palnet.kac.api.v1.com.code.model;
import kr.co.palnet.kac.data.com.model.ComCdBas;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class FormCodeRQ {
// 코드ID, 그룹코드
private String groupCd;
// 코드ID
private String cdId;
// 상위코드
private String upperCd;
// 정렬순서
private Integer sortOrdr;
// 추가정보값
private String addInfoValue;
// 사용여부
private String useYn;
public ComCdBas toEntity() {
return ComCdBas.builder()
.groupCd(this.getGroupCd())
.cdId(this.getCdId())
.upperCd(this.getUpperCd())
.sortOrdr(this.getSortOrdr())
.addInfoValue(this.getAddInfoValue())
.useYn(this.getUseYn())
.build();
}
}

15
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/SearchCodeAllRQ.java

@ -0,0 +1,15 @@
package kr.co.palnet.kac.api.v1.com.code.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SearchCodeAllRQ {
private String siteCd;
private String langDivCd;
}

15
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/SearchCodeRQ.java

@ -0,0 +1,15 @@
package kr.co.palnet.kac.api.v1.com.code.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SearchCodeRQ {
private String groupCd;
private String langDivCd;
}

127
app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/service/ComCodeService.java

@ -0,0 +1,127 @@
package kr.co.palnet.kac.api.v1.com.code.service;
import kr.co.palnet.kac.api.v1.com.code.model.*;
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.service.ComCodeDomainService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.List;
@Slf4j
@RequiredArgsConstructor
@Service
public class ComCodeService {
private final ComCodeDomainService comCodeDomainService;
// 모든 코드 조회
public List<CodeGroupRS> getAllGroup(SearchCodeAllRQ rq) {
List<ComCdGroupBas> comCdGroupBasList = comCodeDomainService.getComCdGroupBasList(rq.getSiteCd());
List<CodeGroupRS> codeGroupRSList = comCdGroupBasList.stream().map(group -> {
CodeGroupRS codeGroupRS = CodeGroupRS.fromEntity(group);
List<ComCdBas> comCdBasList = group.getComCdBasList();
if (comCdBasList != null && !comCdBasList.isEmpty()) {
// TODO 계층 구조 필요시 적용
List<CodeRS> codeRSList = comCdBasList.stream().map(code -> {
CodeRS codeRS = CodeRS.fromEntity(code);
if (code.getComCdLangCtgList() != null && !code.getComCdLangCtgList().isEmpty()) {
code.getComCdLangCtgList().stream().filter(lang ->
lang.getLangDivCd().equals(rq.getLangDivCd())
).findFirst().ifPresent(lang -> codeRS.setCdNm(lang.getCdNm()));
}
return codeRS;
}).sorted(Comparator.comparing(CodeRS::getSortOrdr)).toList();
codeGroupRS.setCodeList(codeRSList);
}
return codeGroupRS;
}).toList();
return codeGroupRSList;
}
// 그룹 목록 조회 - 코드 그룹만
public List<CodeGroupRS> getAllGroupCode() {
List<ComCdGroupBas> comCdGroupBasList = comCodeDomainService.getComCdGroupBasList();
return comCdGroupBasList.stream().map(CodeGroupRS::fromEntity).toList();
}
// 코드 목록 조회 - 코드 - 언어
public List<CodeRS> getAllCodeByGroup(SearchCodeRQ rq) {
List<ComCdBas> comCdBasList = comCodeDomainService.getComCdBasList(rq.getGroupCd());
return comCdBasList.stream().map(entity -> {
CodeRS codeRS = CodeRS.fromEntity(entity);
if (entity.getComCdLangCtgList() != null && !entity.getComCdLangCtgList().isEmpty()) {
entity.getComCdLangCtgList().stream().filter(lang ->
lang.getLangDivCd().equals(rq.getLangDivCd())
).findFirst().ifPresent(lang -> codeRS.setCdNm(lang.getCdNm()));
}
return codeRS;
}).toList();
}
// 코드 그룹 등록
public CodeGroupDTO createCodeGroup(FormCodeGroupRQ rq) {
ComCdGroupBas entity = rq.toEntity();
ComCdGroupBas comCdGroupBas = comCodeDomainService.createComCdGroupBas(entity);
return CodeGroupDTO.fromEntity(comCdGroupBas);
}
// 코드 등록
public CodeDTO createCode(FormCodeRQ rq) {
ComCdBas entity = rq.toEntity();
ComCdBas comCdBas = comCodeDomainService.createComCdBas(entity);
return CodeDTO.fromEntity(comCdBas);
}
// 언어 등록
public CodeLangDTO createCodeLang(FormCodeLangRQ rq) {
ComCdLangCtg entity = rq.toEntity();
ComCdLangCtg comCdLangCtg = comCodeDomainService.createComCdLangCtg(entity);
return CodeLangDTO.fromEntity(comCdLangCtg);
}
// 코드 그룹 수정
public CodeGroupDTO updateCodeGroup(FormCodeGroupRQ rq) {
ComCdGroupBas entity = rq.toEntity();
ComCdGroupBas comCdGroupBas = comCodeDomainService.updateComCdGroupBas(entity);
return CodeGroupDTO.fromEntity(comCdGroupBas);
}
// 코드 수정
public CodeDTO updateCode(FormCodeRQ rq) {
ComCdBas entity = rq.toEntity();
ComCdBas comCdBas = comCodeDomainService.updateComCdBas(entity);
return CodeDTO.fromEntity(comCdBas);
}
// 언어 수정
public CodeLangDTO updateCodeLang(FormCodeLangRQ rq) {
ComCdLangCtg entity = rq.toEntity();
ComCdLangCtg comCdLangCtg = comCodeDomainService.updateComCdLangCtg(entity);
return CodeLangDTO.fromEntity(comCdLangCtg);
}
// 코드 그룹 삭제
public void deleteCodeGroup(String groupCd) {
comCodeDomainService.deleteComCdGroupBas(groupCd);
}
// 코드 삭제
public void deleteCode(String groupCd, String cdId) {
comCodeDomainService.deleteComCdBas(groupCd, cdId);
}
// 언어 삭제
public void deleteLang(String groupCd, String cdId, String langDivCd) {
comCodeDomainService.deleteComCdLangCtg(groupCd, cdId, langDivCd);
}
}

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

@ -2,13 +2,11 @@ package kr.co.palnet.kac.data.com.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@ -16,6 +14,7 @@ import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString(exclude = {"comCdGroupBas", "comCdLangCtgList"})
@IdClass(ComCdBas.ComCdBasId.class)
@Entity
@Table(name = "COM_CD_BAS")
@ -26,7 +25,6 @@ public class ComCdBas {
@NoArgsConstructor
@AllArgsConstructor
@Builder
// @Embeddable
public static class ComCdBasId implements Serializable {
// 그룹코드
@Column(name = "GROUP_CD")
@ -37,9 +35,7 @@ public class ComCdBas {
private String cdId;
}
// 코드ID, 그룹코드
// @EmbeddedId
// private ComCdBasId id;
// 그룹코드
@Id
@Column(name = "GROUP_CD", length = 20)
private String groupCd;
@ -82,7 +78,6 @@ public class ComCdBas {
private LocalDateTime updateDt;
@JsonIgnore
// @MapsId("groupCd")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(
name = "GROUP_CD", updatable = false, insertable = false,
@ -91,15 +86,11 @@ public class ComCdBas {
private ComCdGroupBas comCdGroupBas;
@OneToMany(mappedBy = "comCdBas", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private List<ComCdLangCtg> comCdLangCtgList;
private List<ComCdLangCtg> comCdLangCtgList = new ArrayList<>();
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();

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

@ -1,12 +1,10 @@
package kr.co.palnet.kac.data.com.model;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@ -53,7 +51,7 @@ public class ComCdGroupBas {
private LocalDateTime updateDt;
@OneToMany(mappedBy = "comCdGroupBas", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private List<ComCdBas> comCdBasList;
private List<ComCdBas> comCdBasList = new ArrayList<>();
public void update(ComCdGroupBas comCdGroupBas) {
if(comCdGroupBas == null) return;

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

@ -2,10 +2,7 @@ package kr.co.palnet.kac.data.com.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.*;
import java.io.Serializable;
import java.time.Instant;
@ -15,6 +12,7 @@ import java.time.LocalDateTime;
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString(exclude = {"comCdBas"})
@IdClass(ComCdLangCtg.ComCdLangCtgId.class)
@Entity
@Table(name = "COM_CD_LANG_CTG")
@ -24,11 +22,8 @@ public class ComCdLangCtg {
@NoArgsConstructor
@AllArgsConstructor
@Builder
// @Embeddable
public static class ComCdLangCtgId implements Serializable {
// private ComCdBas.ComCdBasId comCdBasId;
// 그룹코드
@Column(name = "GROUP_CD")
private String groupCd;
@ -42,9 +37,6 @@ public class ComCdLangCtg {
private String langDivCd;
}
// // 코드ID, 그룹코드, 언어구분코드
// @EmbeddedId
// private ComCdLangCtgId id;
// 그룹코드
@Id

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

@ -6,7 +6,9 @@ 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);
List<ComCdBas> findByGroupCdAndUseYnOrderBySortOrdrAsc(String groupCd, String y);
ComCdBas findByGroupCdAndCdIdAndUseYn(String groupCd, String cdId, String useYn);
}

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

@ -3,5 +3,8 @@ package kr.co.palnet.kac.data.com.repository;
import kr.co.palnet.kac.data.com.model.ComCdGroupBas;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface ComCdGroupBasRepository extends JpaRepository<ComCdGroupBas, String> {
List<ComCdGroupBas> findBySiteCd(String siteCd);
}

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

@ -9,11 +9,13 @@ import kr.co.palnet.kac.data.com.repository.ComCdLangCtgRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
@Slf4j
@Transactional
@RequiredArgsConstructor
@Service
public class ComCodeDomainService {
@ -22,30 +24,41 @@ public class ComCodeDomainService {
private final ComCdBasRepository comCdBasRepository;
private final ComCdLangCtgRepository comCdLangCtgRepository;
// 그룹 조회
@Transactional(readOnly = true)
public List<ComCdGroupBas> getComCdGroupBasList() {
return comCdGroupBasRepository.findAll();
}
@Transactional(readOnly = true)
public List<ComCdGroupBas> getComCdGroupBasList(String siteCd) {
return comCdGroupBasRepository.findBySiteCd(siteCd);
}
@Transactional(readOnly = true)
public ComCdGroupBas getComCdGroupBas(String groupCd) {
return comCdGroupBasRepository.findById(groupCd).orElse(null);
}
// TODO 코드 조회시 UPPER 기반 계층구조로 변경
// 코드 조회
@Transactional(readOnly = true)
public List<ComCdBas> getComCdBasList(String groupCd) {
return comCdBasRepository.findByGroupCdAndUseYnOrderBySortOrdrAsc(groupCd, "Y");
}
@Transactional(readOnly = true)
public ComCdBas getComCdBas(String groupCd, String cdId) {
return comCdBasRepository.findByGroupCdAndCdIdAndUseYn(groupCd, cdId, "Y");
}
// 언어 조회
@Transactional(readOnly = true)
public List<ComCdLangCtg> getComCdLangCtgList(String groupCd, String cdId) {
return comCdLangCtgRepository.findByGroupCdAndCdId(groupCd, cdId);
}
@Transactional(readOnly = true)
public ComCdLangCtg getComCdLangCtg(String groupCd, String cdId, String langDivCd) {
ComCdLangCtg.ComCdLangCtgId id = ComCdLangCtg.ComCdLangCtgId.builder()
.groupCd(groupCd)
@ -76,9 +89,6 @@ public class ComCodeDomainService {
// 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())

2
app/kac-app/src/main/resources/application.yml

@ -7,7 +7,7 @@ spring:
enabled: true
jpa:
hibernate:
ddl-auto: create
ddl-auto: update
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

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

@ -101,7 +101,7 @@ class ComCodeDomainServiceTest {
@DisplayName("그룹 조회 - 목록")
@Test
void getComCdGroupBasList() {
comCodeDomainService.getComCdGroupBasList().forEach(comCdGroupBas -> log.info("{}", comCdGroupBas));
comCodeDomainService.getComCdGroupBasList(null).forEach(comCdGroupBas -> log.info("{}", comCdGroupBas));
}
@DisplayName("그룹 조회 - 단건")

99
http-client/test.http

@ -1,2 +1,97 @@
###
GET http://localhost:8080/v1/com/code/test
### 전체 코드 조회 - 코드그룹-코드-언어
GET http://localhost:8080/v1/com/code/all
?siteCd=KAC&langDivCd=ko_KR
### 그룹 목록 조회 - 코드 그룹만
GET http://localhost:8080/v1/com/code/group
### 코드 목록 조회 - 코드 - 언어
GET http://localhost:8080/v1/com/code/code
?groupCd=TEST1&langDivCd=ko_KR
### 코드 그룹 등록
POST http://localhost:8080/v1/com/code/group
Content-Type: application/json
{
"groupCd": "NEW_GROUP001",
"siteCd": "KAC",
"groupCdNm": "신규그룹001",
"rm": "비고...."
}
### 코드 등록
POST http://localhost:8080/v1/com/code/code
Content-Type: application/json
{
"groupCd": "NEW_GROUP001",
"cdId": "NEW_CODE001",
"upperCd": null,
"sortOrdr": 0,
"addInfoValue": "추가!!",
"useYn": "Y"
}
### 언어 등록
POST http://localhost:8080/v1/com/code/lang
Content-Type: application/json
{
"groupCd": "NEW_GROUP001",
"cdId": "NEW_CODE001",
"langDivCd": "ko_KR",
"cdNm": "신규코드001",
"rm": "비고...."
}
### 코드 그룹 수정
PUT http://localhost:8080/v1/com/code/group
Content-Type: application/json
{
"groupCd": "NEW_GROUP001",
"siteCd": "KAC",
"groupCdNm": "신규그룹001",
"rm": "비고..asdfasdf.."
}
### 코드 수정
PUT http://localhost:8080/v1/com/code/code
Content-Type: application/json
{
"groupCd": "NEW_GROUP001",
"cdId": "NEW_CODE001",
"upperCd": null,
"sortOrdr": 0,
"addInfoValue": "추가!ccccc!",
"useYn": "Y"
}
### 언어 수정
PUT http://localhost:8080/v1/com/code/lang
Content-Type: application/json
{
"groupCd": "NEW_GROUP001",
"cdId": "NEW_CODE001",
"langDivCd": "ko_KR",
"cdNm": "신규코드001",
"rm": "비고.ffff..."
}
### 코드 그룹 삭제
DELETE http://localhost:8080/v1/com/code/group
?groupCd=NEW_GROUP001
### 코드 삭제
DELETE http://localhost:8080/v1/com/code/code
?groupCd=NEW_GROUP001&cdId=NEW_CODE001
### 언어 삭제
DELETE http://localhost:8080/v1/com/code/lang
?groupCd=NEW_GROUP001&cdId=NEW_CODE001&langDivCd=ko_KR

Loading…
Cancel
Save