From c8c16724bca38f250bd5e24f4b4e969183262713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dhji=28=EC=A7=80=EB=8C=80=ED=95=9C=29?= Date: Thu, 11 Jan 2024 15:41:13 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20code=20api=20=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 - .../api/com/controller/CodeController.java | 33 ----- .../code/controller/ComCodeController.java | 107 +++++++++++++++ .../kac/api/v1/com/code/model/CodeDTO.java | 76 +++++++++++ .../api/v1/com/code/model/CodeGroupDTO.java | 66 +++++++++ .../api/v1/com/code/model/CodeGroupRS.java | 32 +++++ .../api/v1/com/code/model/CodeLangDTO.java | 71 ++++++++++ .../kac/api/v1/com/code/model/CodeRS.java | 34 +++++ .../v1/com/code/model/FormCodeGroupRQ.java | 32 +++++ .../api/v1/com/code/model/FormCodeLangRQ.java | 39 ++++++ .../kac/api/v1/com/code/model/FormCodeRQ.java | 43 ++++++ .../v1/com/code/model/SearchCodeAllRQ.java | 15 +++ .../api/v1/com/code/model/SearchCodeRQ.java | 15 +++ .../v1/com/code/service/ComCodeService.java | 127 ++++++++++++++++++ .../palnet/kac/data/com/model/ComCdBas.java | 19 +-- .../kac/data/com/model/ComCdGroupBas.java | 8 +- .../kac/data/com/model/ComCdLangCtg.java | 12 +- .../com/repository/ComCdBasRepository.java | 4 +- .../repository/ComCdGroupBasRepository.java | 3 + .../com/service/ComCodeDomainService.java | 18 ++- .../src/main/resources/application.yml | 2 +- .../com/service/ComCodeDomainServiceTest.java | 2 +- http-client/test.http | 99 +++++++++++++- 23 files changed, 786 insertions(+), 74 deletions(-) delete mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/com/controller/CodeController.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/controller/ComCodeController.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeDTO.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeGroupDTO.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeGroupRS.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeLangDTO.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeRS.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeGroupRQ.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeLangRQ.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeRQ.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/SearchCodeAllRQ.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/SearchCodeRQ.java create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/service/ComCodeService.java diff --git a/README.md b/README.md index fc21841..71cb7b5 100644 --- a/README.md +++ b/README.md @@ -30,9 +30,6 @@ spring: ddl-auto: create ``` - - - ## 설정 정보 ### log4jdbc.log4j2.properties 속성 diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/com/controller/CodeController.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/com/controller/CodeController.java deleted file mode 100644 index 6fe225c..0000000 --- a/app/kac-app/src/main/java/kr/co/palnet/kac/api/com/controller/CodeController.java +++ /dev/null @@ -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); - // } - - -} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/controller/ComCodeController.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/controller/ComCodeController.java new file mode 100644 index 0000000..8c80c62 --- /dev/null +++ b/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> getAllGroup(SearchCodeAllRQ rq) { + List allCode = comCodeService.getAllGroup(rq); + return ResponseEntity.ok(allCode); + } + + // 그룹 목록 조회 - 코드 그룹만 + @GetMapping("/group") + public ResponseEntity> getAllGroupCode() { + List codeGroupRSList = comCodeService.getAllGroupCode(); + return ResponseEntity.ok(codeGroupRSList); + } + + // 코드 목록 조회 - 코드 - 언어 + @GetMapping("/code") + public ResponseEntity> getAllCodeByGroup(SearchCodeRQ rq) { + List list = comCodeService.getAllCodeByGroup(rq); + return ResponseEntity.ok(list); + } + + /* 관리 용도 */ + // 코드 그룹 등록 + @PostMapping("/group") + public ResponseEntity createCodeGroup(@RequestBody FormCodeGroupRQ rq) { + CodeGroupDTO codeGroup = comCodeService.createCodeGroup(rq); + return ResponseEntity.ok(codeGroup); + } + + // 코드 등록 + @PostMapping("/code") + public ResponseEntity createCode(@RequestBody FormCodeRQ rq) { + CodeDTO code = comCodeService.createCode(rq); + return ResponseEntity.ok(code); + } + + // 언어 등록 + @PostMapping("/lang") + public ResponseEntity createCodeLang(@RequestBody FormCodeLangRQ rq) { + CodeLangDTO lang = comCodeService.createCodeLang(rq); + return ResponseEntity.ok(lang); + } + + // 코드 그룹 수정 + @PutMapping("/group") + public ResponseEntity updateCodeGroup(@RequestBody FormCodeGroupRQ rq) { + CodeGroupDTO codeGroup = comCodeService.updateCodeGroup(rq); + return ResponseEntity.ok(codeGroup); + } + + // 코드 수정 + @PutMapping("/code") + public ResponseEntity updateCode(@RequestBody FormCodeRQ rq) { + CodeDTO code = comCodeService.updateCode(rq); + return ResponseEntity.ok(code); + } + + // 언어 수정 + @PutMapping("/lang") + public ResponseEntity 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); + } + + +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeDTO.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeDTO.java new file mode 100644 index 0000000..9853f8e --- /dev/null +++ b/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(); + } +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeGroupDTO.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeGroupDTO.java new file mode 100644 index 0000000..a7f561b --- /dev/null +++ b/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(); + } +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeGroupRS.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeGroupRS.java new file mode 100644 index 0000000..1ef4955 --- /dev/null +++ b/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 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(); + } +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeLangDTO.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeLangDTO.java new file mode 100644 index 0000000..e676311 --- /dev/null +++ b/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(); + } +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeRS.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/CodeRS.java new file mode 100644 index 0000000..3a08522 --- /dev/null +++ b/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 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(); + } +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeGroupRQ.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeGroupRQ.java new file mode 100644 index 0000000..20f25d2 --- /dev/null +++ b/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(); + } +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeLangRQ.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeLangRQ.java new file mode 100644 index 0000000..b0f92fb --- /dev/null +++ b/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(); + } +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeRQ.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/FormCodeRQ.java new file mode 100644 index 0000000..5cfebd8 --- /dev/null +++ b/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(); + } +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/SearchCodeAllRQ.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/SearchCodeAllRQ.java new file mode 100644 index 0000000..6c16327 --- /dev/null +++ b/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; +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/SearchCodeRQ.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/model/SearchCodeRQ.java new file mode 100644 index 0000000..687e4d9 --- /dev/null +++ b/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; +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/service/ComCodeService.java b/app/kac-app/src/main/java/kr/co/palnet/kac/api/v1/com/code/service/ComCodeService.java new file mode 100644 index 0000000..e3c811c --- /dev/null +++ b/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 getAllGroup(SearchCodeAllRQ rq) { + List comCdGroupBasList = comCodeDomainService.getComCdGroupBasList(rq.getSiteCd()); + List codeGroupRSList = comCdGroupBasList.stream().map(group -> { + + CodeGroupRS codeGroupRS = CodeGroupRS.fromEntity(group); + + List comCdBasList = group.getComCdBasList(); + if (comCdBasList != null && !comCdBasList.isEmpty()) { + // TODO 계층 구조 필요시 적용 + List 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 getAllGroupCode() { + List comCdGroupBasList = comCodeDomainService.getComCdGroupBasList(); + return comCdGroupBasList.stream().map(CodeGroupRS::fromEntity).toList(); + } + + // 코드 목록 조회 - 코드 - 언어 + public List getAllCodeByGroup(SearchCodeRQ rq) { + List 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); + } + +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdBas.java b/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdBas.java index 8bceff8..32a36d4 100644 --- a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdBas.java +++ b/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 comCdLangCtgList; + private List 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(); diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdGroupBas.java b/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdGroupBas.java index dd53e54..ee36a39 100644 --- a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdGroupBas.java +++ b/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 comCdBasList; + private List comCdBasList = new ArrayList<>(); public void update(ComCdGroupBas comCdGroupBas) { if(comCdGroupBas == null) return; diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdLangCtg.java b/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdLangCtg.java index 4e2ca64..0ccd0a2 100644 --- a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/model/ComCdLangCtg.java +++ b/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 diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdBasRepository.java b/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdBasRepository.java index 5bf8bbd..12eed30 100644 --- a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdBasRepository.java +++ b/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 { - List findByGroupCdAndUseYnOrderBySortOrdrAsc(String groupCd, String useYn); + + List findByGroupCdAndUseYnOrderBySortOrdrAsc(String groupCd, String y); ComCdBas findByGroupCdAndCdIdAndUseYn(String groupCd, String cdId, String useYn); + } diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdGroupBasRepository.java b/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdGroupBasRepository.java index f794cad..a18c50e 100644 --- a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/repository/ComCdGroupBasRepository.java +++ b/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 { + List findBySiteCd(String siteCd); } diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/service/ComCodeDomainService.java b/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/service/ComCodeDomainService.java index f7b8915..c863589 100644 --- a/app/kac-app/src/main/java/kr/co/palnet/kac/data/com/service/ComCodeDomainService.java +++ b/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 getComCdGroupBasList() { return comCdGroupBasRepository.findAll(); } + @Transactional(readOnly = true) + public List 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 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 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()) diff --git a/app/kac-app/src/main/resources/application.yml b/app/kac-app/src/main/resources/application.yml index d695a2a..842a141 100644 --- a/app/kac-app/src/main/resources/application.yml +++ b/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 diff --git a/app/kac-app/src/test/java/kr/co/palnet/kac/data/com/service/ComCodeDomainServiceTest.java b/app/kac-app/src/test/java/kr/co/palnet/kac/data/com/service/ComCodeDomainServiceTest.java index 474310b..d1042b7 100644 --- a/app/kac-app/src/test/java/kr/co/palnet/kac/data/com/service/ComCodeDomainServiceTest.java +++ b/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("그룹 조회 - 단건") diff --git a/http-client/test.http b/http-client/test.http index db14357..6a41a08 100644 --- a/http-client/test.http +++ b/http-client/test.http @@ -1,2 +1,97 @@ -### -GET http://localhost:8080/v1/com/code/test \ No newline at end of file + +### 전체 코드 조회 - 코드그룹-코드-언어 +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