[공통 코드] 중간 커밋밋
This commit is contained in:
		@@ -1,4 +1,47 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					    create table st_common_code (
 | 
				
			||||||
 | 
					        sort_order integer not null,
 | 
				
			||||||
 | 
					        use_flag boolean not null,
 | 
				
			||||||
 | 
					        created_at timestamp(6) not null,
 | 
				
			||||||
 | 
					        created_oid bigint,
 | 
				
			||||||
 | 
					        oid bigint not null,
 | 
				
			||||||
 | 
					        updated_at timestamp(6) not null,
 | 
				
			||||||
 | 
					        updated_oid bigint,
 | 
				
			||||||
 | 
					        code varchar(50) not null unique,
 | 
				
			||||||
 | 
					        group_code varchar(50) not null,
 | 
				
			||||||
 | 
					        parent_code varchar(50),
 | 
				
			||||||
 | 
					        character_ref1 varchar(100),
 | 
				
			||||||
 | 
					        character_ref2 varchar(100),
 | 
				
			||||||
 | 
					        character_ref3 varchar(100),
 | 
				
			||||||
 | 
					        character_ref4 varchar(100),
 | 
				
			||||||
 | 
					        character_ref5 varchar(100),
 | 
				
			||||||
 | 
					        name varchar(100) not null,
 | 
				
			||||||
 | 
					        description varchar(500),
 | 
				
			||||||
 | 
					        created_id varchar(255),
 | 
				
			||||||
 | 
					        updated_id varchar(255),
 | 
				
			||||||
 | 
					        primary key (oid)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    create table st_common_group_code (
 | 
				
			||||||
 | 
					        sort_order integer not null,
 | 
				
			||||||
 | 
					        use_flag boolean not null,
 | 
				
			||||||
 | 
					        created_at timestamp(6) not null,
 | 
				
			||||||
 | 
					        created_oid bigint,
 | 
				
			||||||
 | 
					        oid bigint not null,
 | 
				
			||||||
 | 
					        updated_at timestamp(6) not null,
 | 
				
			||||||
 | 
					        updated_oid bigint,
 | 
				
			||||||
 | 
					        code varchar(50) not null unique,
 | 
				
			||||||
 | 
					        character_ref1_title varchar(100),
 | 
				
			||||||
 | 
					        character_ref2_title varchar(100),
 | 
				
			||||||
 | 
					        character_ref3_title varchar(100),
 | 
				
			||||||
 | 
					        character_ref4_title varchar(100),
 | 
				
			||||||
 | 
					        character_ref5_title varchar(100),
 | 
				
			||||||
 | 
					        name varchar(100) not null,
 | 
				
			||||||
 | 
					        created_id varchar(255),
 | 
				
			||||||
 | 
					        updated_id varchar(255),
 | 
				
			||||||
 | 
					        primary key (oid)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    create table st_file (
 | 
					    create table st_file (
 | 
				
			||||||
        use_flag boolean not null,
 | 
					        use_flag boolean not null,
 | 
				
			||||||
        created_at timestamp(6) not null,
 | 
					        created_at timestamp(6) not null,
 | 
				
			||||||
@@ -38,5 +81,27 @@
 | 
				
			|||||||
        primary key (oid)
 | 
					        primary key (oid)
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    create index idx_common_code_code 
 | 
				
			||||||
 | 
					       on st_common_code (code);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    create index idx_common_code_group_code 
 | 
				
			||||||
 | 
					       on st_common_code (group_code);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    create index idx_common_code_parent_code 
 | 
				
			||||||
 | 
					       on st_common_code (parent_code);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    create index idx_common_group_code_code 
 | 
				
			||||||
 | 
					       on st_common_group_code (code);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    create index idx_member_user_id 
 | 
					    create index idx_member_user_id 
 | 
				
			||||||
       on st_member (user_id);
 | 
					       on st_member (user_id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    alter table if exists st_common_code 
 | 
				
			||||||
 | 
					       add constraint FKdk30t67v5e2vo1k7gl5sk1jp9 
 | 
				
			||||||
 | 
					       foreign key (group_code) 
 | 
				
			||||||
 | 
					       references st_common_group_code (code);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    alter table if exists st_common_code 
 | 
				
			||||||
 | 
					       add constraint FKgcyw9ydft76p31oox94ho93wf 
 | 
				
			||||||
 | 
					       foreign key (parent_code) 
 | 
				
			||||||
 | 
					       references st_common_code (code);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,208 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.controller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.*;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.service.CommonCodeService;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.mapper.CommonCodeMapper;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.mapper.CommonGroupCodeMapper;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.global.dto.ApiResponseDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.global.constants.ApiResponseCode;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.global.annotation.LogExecution;
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.Operation;
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.tags.Tag;
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.responses.ApiResponse;
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.responses.ApiResponses;
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.media.Content;
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.media.Schema;
 | 
				
			||||||
 | 
					import lombok.RequiredArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
 | 
					import org.springframework.http.HttpStatus;
 | 
				
			||||||
 | 
					import org.springframework.http.ResponseEntity;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import jakarta.validation.Valid;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Slf4j
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					@RequestMapping("/admin/common-code")
 | 
				
			||||||
 | 
					@RequiredArgsConstructor
 | 
				
			||||||
 | 
					@Tag(name = "공통 코드 관리", description = "공통 코드 및 그룹 코드 관리 API")
 | 
				
			||||||
 | 
					public class CommonCodeController {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private final CommonCodeService commonCodeService;
 | 
				
			||||||
 | 
					    private final CommonCodeMapper commonCodeMapper;
 | 
				
			||||||
 | 
					    private final CommonGroupCodeMapper commonGroupCodeMapper;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // 그룹 코드 관련 API
 | 
				
			||||||
 | 
					    @LogExecution("그룹 코드 생성")
 | 
				
			||||||
 | 
					    @Operation(summary = "그룹 코드 생성", description = "새로운 그룹 코드를 생성합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "201", description = "그룹 코드 생성 성공"),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content(schema = @Schema(implementation = ApiResponseDto.class))),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "409", description = "중복된 그룹 코드", content = @Content(schema = @Schema(implementation = ApiResponseDto.class)))
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @PostMapping("/group")
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<CreateCommonGroupCodeResponseDto>> createGroupCode(@RequestBody @Valid CreateCommonGroupCodeRequestDto requestDto) {
 | 
				
			||||||
 | 
					        CommonGroupCodeDto groupCodeDto = commonGroupCodeMapper.toCommonGroupCodeDto(requestDto);
 | 
				
			||||||
 | 
					        CommonGroupCodeDto createdGroupCode = commonCodeService.createGroupCode(groupCodeDto);
 | 
				
			||||||
 | 
					        CreateCommonGroupCodeResponseDto responseDto = commonGroupCodeMapper.toCreateCommonGroupCodeResponseDto(createdGroupCode);
 | 
				
			||||||
 | 
					        ApiResponseDto<CreateCommonGroupCodeResponseDto> apiResponse = ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_CREATED, responseDto);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        return ResponseEntity.status(HttpStatus.CREATED).body(apiResponse);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @LogExecution("그룹 코드 수정")
 | 
				
			||||||
 | 
					    @Operation(summary = "그룹 코드 수정", description = "기존 그룹 코드를 수정합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "200", description = "그룹 코드 수정 성공"),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content(schema = @Schema(implementation = ApiResponseDto.class))),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "404", description = "그룹 코드를 찾을 수 없음", content = @Content(schema = @Schema(implementation = ApiResponseDto.class)))
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @PutMapping("/group/{code}")
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<String>> updateGroupCode(
 | 
				
			||||||
 | 
					            @PathVariable String code, 
 | 
				
			||||||
 | 
					            @RequestBody @Valid UpdateCommonGroupCodeRequestDto requestDto) {
 | 
				
			||||||
 | 
					        CommonGroupCodeDto groupCodeDto = commonGroupCodeMapper.toCommonGroupCodeDto(requestDto);
 | 
				
			||||||
 | 
					        commonCodeService.updateGroupCode(code, groupCodeDto);
 | 
				
			||||||
 | 
					        return ResponseEntity.ok(ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_UPDATED));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @LogExecution("그룹 코드 삭제")
 | 
				
			||||||
 | 
					    @Operation(summary = "그룹 코드 삭제", description = "그룹 코드를 삭제합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "200", description = "그룹 코드 삭제 성공"),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "400", description = "하위 공통 코드가 존재하여 삭제할 수 없음", content = @Content(schema = @Schema(implementation = ApiResponseDto.class))),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "404", description = "그룹 코드를 찾을 수 없음", content = @Content(schema = @Schema(implementation = ApiResponseDto.class)))
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @DeleteMapping("/group/{code}")
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<Void>> deleteGroupCode(@PathVariable String code) {
 | 
				
			||||||
 | 
					        commonCodeService.deleteGroupCode(code);
 | 
				
			||||||
 | 
					        return ResponseEntity.ok(ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_DELETED));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @LogExecution("그룹 코드 조회")
 | 
				
			||||||
 | 
					    @Operation(summary = "그룹 코드 조회", description = "특정 그룹 코드를 조회합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "200", description = "그룹 코드 조회 성공"),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "404", description = "그룹 코드를 찾을 수 없음", content = @Content(schema = @Schema(implementation = ApiResponseDto.class)))
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @GetMapping("/group/{code}")
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<CommonGroupCodeDto>> getGroupCode(@PathVariable String code) {
 | 
				
			||||||
 | 
					        CommonGroupCodeDto groupCode = commonCodeService.getGroupCode(code);
 | 
				
			||||||
 | 
					        return ResponseEntity.ok(ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_RETRIEVED, groupCode));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @LogExecution("전체 그룹 코드 조회")
 | 
				
			||||||
 | 
					    @Operation(summary = "전체 그룹 코드 조회", description = "모든 그룹 코드를 조회합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "200", description = "전체 그룹 코드 조회 성공")
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @GetMapping("/group")
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<List<CommonGroupCodeDto>>> getAllGroupCodes() {
 | 
				
			||||||
 | 
					        List<CommonGroupCodeDto> groupCodes = commonCodeService.getAllGroupCodes();
 | 
				
			||||||
 | 
					        return ResponseEntity.ok(ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_RETRIEVED, groupCodes));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @LogExecution("활성 그룹 코드 조회")
 | 
				
			||||||
 | 
					    @Operation(summary = "활성 그룹 코드 조회", description = "사용 중인 그룹 코드만 조회합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "200", description = "활성 그룹 코드 조회 성공")
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @GetMapping("/group/active")
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<List<CommonGroupCodeDto>>> getActiveGroupCodes() {
 | 
				
			||||||
 | 
					        List<CommonGroupCodeDto> groupCodes = commonCodeService.getActiveGroupCodes();
 | 
				
			||||||
 | 
					        return ResponseEntity.ok(ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_RETRIEVED, groupCodes));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // 공통 코드 관련 API
 | 
				
			||||||
 | 
					    @LogExecution("공통 코드 생성")
 | 
				
			||||||
 | 
					    @Operation(summary = "공통 코드 생성", description = "새로운 공통 코드를 생성합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "201", description = "공통 코드 생성 성공"),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content(schema = @Schema(implementation = ApiResponseDto.class))),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "409", description = "중복된 공통 코드", content = @Content(schema = @Schema(implementation = ApiResponseDto.class)))
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @PostMapping
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<CreateCommonCodeResponseDto>> createCode(@RequestBody @Valid CreateCommonCodeRequestDto requestDto) {
 | 
				
			||||||
 | 
					        CommonCodeDto commonCodeDto = commonCodeMapper.toCommonCodeDto(requestDto);
 | 
				
			||||||
 | 
					        CommonCodeDto createdCommonCode = commonCodeService.createCode(commonCodeDto);
 | 
				
			||||||
 | 
					        CreateCommonCodeResponseDto responseDto = commonCodeMapper.toCreateCommonCodeResponseDto(createdCommonCode);
 | 
				
			||||||
 | 
					        ApiResponseDto<CreateCommonCodeResponseDto> apiResponse = ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_CREATED, responseDto);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        return ResponseEntity.status(HttpStatus.CREATED).body(apiResponse);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @LogExecution("공통 코드 수정")
 | 
				
			||||||
 | 
					    @Operation(summary = "공통 코드 수정", description = "기존 공통 코드를 수정합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "200", description = "공통 코드 수정 성공"),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content(schema = @Schema(implementation = ApiResponseDto.class))),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "404", description = "공통 코드를 찾을 수 없음", content = @Content(schema = @Schema(implementation = ApiResponseDto.class)))
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @PutMapping("/{code}")
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<String>> updateCode(
 | 
				
			||||||
 | 
					            @PathVariable String code, 
 | 
				
			||||||
 | 
					            @RequestBody @Valid UpdateCommonCodeRequestDto requestDto) {
 | 
				
			||||||
 | 
					        CommonCodeDto commonCodeDto = commonCodeMapper.toCommonCodeDto(requestDto);
 | 
				
			||||||
 | 
					        commonCodeService.updateCode(code, commonCodeDto);
 | 
				
			||||||
 | 
					        return ResponseEntity.ok(ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_UPDATED));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @LogExecution("공통 코드 삭제")
 | 
				
			||||||
 | 
					    @Operation(summary = "공통 코드 삭제", description = "공통 코드를 삭제합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "200", description = "공통 코드 삭제 성공"),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "400", description = "하위 공통 코드가 존재하여 삭제할 수 없음", content = @Content(schema = @Schema(implementation = ApiResponseDto.class))),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "404", description = "공통 코드를 찾을 수 없음", content = @Content(schema = @Schema(implementation = ApiResponseDto.class)))
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @DeleteMapping("/{code}")
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<Void>> deleteCode(@PathVariable String code) {
 | 
				
			||||||
 | 
					        commonCodeService.deleteCode(code);
 | 
				
			||||||
 | 
					        return ResponseEntity.ok(ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_DELETED));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @LogExecution("공통 코드 조회")
 | 
				
			||||||
 | 
					    @Operation(summary = "공통 코드 조회", description = "특정 공통 코드를 조회합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "200", description = "공통 코드 조회 성공"),
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "404", description = "공통 코드를 찾을 수 없음", content = @Content(schema = @Schema(implementation = ApiResponseDto.class)))
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @GetMapping("/{code}")
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<CommonCodeDto>> getCode(@PathVariable String code) {
 | 
				
			||||||
 | 
					        CommonCodeDto commonCode = commonCodeService.getCode(code);
 | 
				
			||||||
 | 
					        return ResponseEntity.ok(ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_RETRIEVED, commonCode));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @LogExecution("그룹별 공통 코드 조회")
 | 
				
			||||||
 | 
					    @Operation(summary = "그룹별 공통 코드 조회", description = "특정 그룹에 속한 공통 코드들을 조회합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "200", description = "그룹별 공통 코드 조회 성공")
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @GetMapping("/group/{groupCode}/codes")
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<List<CommonCodeDto>>> getCodesByGroupCode(@PathVariable String groupCode) {
 | 
				
			||||||
 | 
					        List<CommonCodeDto> commonCodes = commonCodeService.getActiveCodesByGroupCode(groupCode);
 | 
				
			||||||
 | 
					        return ResponseEntity.ok(ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_RETRIEVED, commonCodes));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @LogExecution("상위 코드별 공통 코드 조회")
 | 
				
			||||||
 | 
					    @Operation(summary = "상위 코드별 공통 코드 조회", description = "특정 상위 코드에 속한 공통 코드들을 조회합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "200", description = "상위 코드별 공통 코드 조회 성공")
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @GetMapping("/parent/{parentCode}/codes")
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<List<CommonCodeDto>>> getCodesByParentCode(@PathVariable String parentCode) {
 | 
				
			||||||
 | 
					        List<CommonCodeDto> commonCodes = commonCodeService.getActiveCodesByParentCode(parentCode);
 | 
				
			||||||
 | 
					        return ResponseEntity.ok(ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_RETRIEVED, commonCodes));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @LogExecution("전체 공통 코드 조회")
 | 
				
			||||||
 | 
					    @Operation(summary = "전체 공통 코드 조회", description = "모든 공통 코드를 조회합니다.")
 | 
				
			||||||
 | 
					    @ApiResponses({
 | 
				
			||||||
 | 
					        @ApiResponse(responseCode = "200", description = "전체 공통 코드 조회 성공")
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    @GetMapping
 | 
				
			||||||
 | 
					    public ResponseEntity<ApiResponseDto<List<CommonCodeDto>>> getAllCodes() {
 | 
				
			||||||
 | 
					        List<CommonCodeDto> commonCodes = commonCodeService.getAllCodes();
 | 
				
			||||||
 | 
					        return ResponseEntity.ok(ApiResponseDto.success(ApiResponseCode.COMMON_SUCCESS_RETRIEVED, commonCodes));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.dto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					public class CommonCodeDto {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private Long oid;
 | 
				
			||||||
 | 
					    private String code;
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					    private String description;
 | 
				
			||||||
 | 
					    private String groupCode;
 | 
				
			||||||
 | 
					    private String parentCode;
 | 
				
			||||||
 | 
					    private String characterRef1;
 | 
				
			||||||
 | 
					    private String characterRef2;
 | 
				
			||||||
 | 
					    private String characterRef3;
 | 
				
			||||||
 | 
					    private String characterRef4;
 | 
				
			||||||
 | 
					    private String characterRef5;
 | 
				
			||||||
 | 
					    private Integer sortOrder;
 | 
				
			||||||
 | 
					    private Boolean useFlag;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.dto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					public class CommonGroupCodeDto {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private Long oid;
 | 
				
			||||||
 | 
					    private String code;
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					    private String characterRef1Title;
 | 
				
			||||||
 | 
					    private String characterRef2Title;
 | 
				
			||||||
 | 
					    private String characterRef3Title;
 | 
				
			||||||
 | 
					    private String characterRef4Title;
 | 
				
			||||||
 | 
					    private String characterRef5Title;
 | 
				
			||||||
 | 
					    private Integer sortOrder;
 | 
				
			||||||
 | 
					    private Boolean useFlag;
 | 
				
			||||||
 | 
					    private LocalDateTime createdAt;
 | 
				
			||||||
 | 
					    private LocalDateTime updatedAt;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.dto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import jakarta.validation.constraints.NotBlank;
 | 
				
			||||||
 | 
					import jakarta.validation.constraints.Size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					public class CreateCommonCodeRequestDto {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @NotBlank(message = "코드는 필수입니다")
 | 
				
			||||||
 | 
					    @Size(max = 50, message = "코드는 50자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String code;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @NotBlank(message = "이름은 필수입니다")
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "이름은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 500, message = "설명은 500자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String description;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @NotBlank(message = "그룹 코드는 필수입니다")
 | 
				
			||||||
 | 
					    @Size(max = 50, message = "그룹 코드는 50자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String groupCode;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 50, message = "상위 코드는 50자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String parentCode;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조1은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef1;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조2는 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef2;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조3은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef3;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조4는 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef4;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조5는 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef5;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Builder.Default
 | 
				
			||||||
 | 
					    private Integer sortOrder = 0;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Builder.Default
 | 
				
			||||||
 | 
					    private Boolean useFlag = true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.dto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					public class CreateCommonCodeResponseDto {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private Long oid;
 | 
				
			||||||
 | 
					    private String code;
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					    private String description;
 | 
				
			||||||
 | 
					    private String groupCode;
 | 
				
			||||||
 | 
					    private String parentCode;
 | 
				
			||||||
 | 
					    private String characterRef1;
 | 
				
			||||||
 | 
					    private String characterRef2;
 | 
				
			||||||
 | 
					    private String characterRef3;
 | 
				
			||||||
 | 
					    private String characterRef4;
 | 
				
			||||||
 | 
					    private String characterRef5;
 | 
				
			||||||
 | 
					    private Integer sortOrder;
 | 
				
			||||||
 | 
					    private Boolean useFlag;
 | 
				
			||||||
 | 
					    private LocalDateTime createdAt;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.dto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import jakarta.validation.constraints.NotBlank;
 | 
				
			||||||
 | 
					import jakarta.validation.constraints.Size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					public class CreateCommonGroupCodeRequestDto {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @NotBlank(message = "코드는 필수입니다")
 | 
				
			||||||
 | 
					    @Size(max = 50, message = "코드는 50자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String code;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @NotBlank(message = "이름은 필수입니다")
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "이름은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "차트 참조1 제목은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef1Title;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "차트 참조2 제목은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef2Title;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "차트 참조3 제목은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef3Title;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "차트 참조4 제목은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef4Title;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "차트 참조5 제목은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef5Title;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Builder.Default
 | 
				
			||||||
 | 
					    private Integer sortOrder = 0;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Builder.Default
 | 
				
			||||||
 | 
					    private Boolean useFlag = true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.dto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					public class CreateCommonGroupCodeResponseDto {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private Long oid;
 | 
				
			||||||
 | 
					    private String code;
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					    private String characterRef1Title;
 | 
				
			||||||
 | 
					    private String characterRef2Title;
 | 
				
			||||||
 | 
					    private String characterRef3Title;
 | 
				
			||||||
 | 
					    private String characterRef4Title;
 | 
				
			||||||
 | 
					    private String characterRef5Title;
 | 
				
			||||||
 | 
					    private Integer sortOrder;
 | 
				
			||||||
 | 
					    private Boolean useFlag;
 | 
				
			||||||
 | 
					    private LocalDateTime createdAt;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.dto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import jakarta.validation.constraints.NotBlank;
 | 
				
			||||||
 | 
					import jakarta.validation.constraints.Size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					public class UpdateCommonCodeRequestDto {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @NotBlank(message = "이름은 필수입니다")
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "이름은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 500, message = "설명은 500자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String description;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @NotBlank(message = "그룹 코드는 필수입니다")
 | 
				
			||||||
 | 
					    @Size(max = 50, message = "그룹 코드는 50자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String groupCode;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 50, message = "상위 코드는 50자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String parentCode;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조1은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef1;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조2는 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef2;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조3은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef3;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조4는 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef4;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조5는 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef5;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private Integer sortOrder;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private Boolean useFlag;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.dto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import jakarta.validation.constraints.NotBlank;
 | 
				
			||||||
 | 
					import jakarta.validation.constraints.Size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					public class UpdateCommonGroupCodeRequestDto {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @NotBlank(message = "이름은 필수입니다")
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "이름은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조1 제목은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef1Title;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조2 제목은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef2Title;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조3 제목은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef3Title;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조4 제목은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef4Title;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Size(max = 100, message = "문자 참조5 제목은 100자를 초과할 수 없습니다")
 | 
				
			||||||
 | 
					    private String characterRef5Title;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private Integer sortOrder;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private Boolean useFlag;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,73 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bio.bio_backend.global.constants.AppConstants;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.global.entity.BaseEntity;
 | 
				
			||||||
 | 
					import jakarta.persistence.*;
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Getter;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Setter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Entity
 | 
				
			||||||
 | 
					@Getter @Setter
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@Table(
 | 
				
			||||||
 | 
					    name = AppConstants.TABLE_PREFIX + "common_code",
 | 
				
			||||||
 | 
					    indexes = {
 | 
				
			||||||
 | 
					        @Index(name = "idx_common_code_code", columnList = "code"),
 | 
				
			||||||
 | 
					        @Index(name = "idx_common_code_group_code", columnList = "group_code"),
 | 
				
			||||||
 | 
					        @Index(name = "idx_common_code_parent_code", columnList = "parent_code")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					public class CommonCode extends BaseEntity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "code", nullable = false, length = 50, unique = true)
 | 
				
			||||||
 | 
					    private String code;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "name", nullable = false, length = 100)
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "description", length = 500)
 | 
				
			||||||
 | 
					    private String description;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "group_code", nullable = false, length = 50)
 | 
				
			||||||
 | 
					    private String groupCode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "parent_code", length = 50)
 | 
				
			||||||
 | 
					    private String parentCode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "character_ref1", length = 100)
 | 
				
			||||||
 | 
					    private String characterRef1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "character_ref2", length = 100)
 | 
				
			||||||
 | 
					    private String characterRef2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "character_ref3", length = 100)
 | 
				
			||||||
 | 
					    private String characterRef3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "character_ref4", length = 100)
 | 
				
			||||||
 | 
					    private String characterRef4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "character_ref5", length = 100)
 | 
				
			||||||
 | 
					    private String characterRef5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "sort_order", nullable = false)
 | 
				
			||||||
 | 
					    @Builder.Default
 | 
				
			||||||
 | 
					    private Integer sortOrder = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "use_flag", nullable = false)
 | 
				
			||||||
 | 
					    @Builder.Default
 | 
				
			||||||
 | 
					    private Boolean useFlag = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 관계 설정
 | 
				
			||||||
 | 
					    @ManyToOne(fetch = FetchType.LAZY)
 | 
				
			||||||
 | 
					    @JoinColumn(name = "group_code", referencedColumnName = "code", insertable = false, updatable = false)
 | 
				
			||||||
 | 
					    private CommonGroupCode commonGroupCode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ManyToOne(fetch = FetchType.LAZY)
 | 
				
			||||||
 | 
					    @JoinColumn(name = "parent_code", referencedColumnName = "code", insertable = false, updatable = false)
 | 
				
			||||||
 | 
					    private CommonCode parentCodeEntity;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bio.bio_backend.global.constants.AppConstants;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.global.entity.BaseEntity;
 | 
				
			||||||
 | 
					import jakarta.persistence.*;
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Getter;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Setter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Entity
 | 
				
			||||||
 | 
					@Getter @Setter
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@Table(
 | 
				
			||||||
 | 
					    name = AppConstants.TABLE_PREFIX + "common_group_code",
 | 
				
			||||||
 | 
					    indexes = {
 | 
				
			||||||
 | 
					        @Index(name = "idx_common_group_code_code", columnList = "code")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					public class CommonGroupCode extends BaseEntity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "code", nullable = false, length = 50, unique = true)
 | 
				
			||||||
 | 
					    private String code;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "name", nullable = false, length = 100)
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "character_ref1_title", length = 100)
 | 
				
			||||||
 | 
					    private String characterRef1Title;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "character_ref2_title", length = 100)
 | 
				
			||||||
 | 
					    private String characterRef2Title;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "character_ref3_title", length = 100)
 | 
				
			||||||
 | 
					    private String characterRef3Title;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "character_ref4_title", length = 100)
 | 
				
			||||||
 | 
					    private String characterRef4Title;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "character_ref5_title", length = 100)
 | 
				
			||||||
 | 
					    private String characterRef5Title;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "sort_order", nullable = false)
 | 
				
			||||||
 | 
					    @Builder.Default
 | 
				
			||||||
 | 
					    private Integer sortOrder = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(name = "use_flag", nullable = false)
 | 
				
			||||||
 | 
					    @Builder.Default
 | 
				
			||||||
 | 
					    private Boolean useFlag = true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,68 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.mapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.CommonCodeDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.CreateCommonCodeRequestDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.CreateCommonCodeResponseDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.UpdateCommonCodeRequestDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.entity.CommonCode;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.global.annotation.IgnoreBaseEntityMapping;
 | 
				
			||||||
 | 
					import org.mapstruct.Mapper;
 | 
				
			||||||
 | 
					import org.mapstruct.Mapping;
 | 
				
			||||||
 | 
					import org.mapstruct.factory.Mappers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Mapper(componentModel = "spring")
 | 
				
			||||||
 | 
					public interface CommonCodeMapper {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    CommonCodeMapper INSTANCE = Mappers.getMapper(CommonCodeMapper.class);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonCode 엔티티를 CommonCodeDto로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    CommonCodeDto toCommonCodeDto(CommonCode entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonCodeDto를 CommonCode 엔티티로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Mapping(target = "commonGroupCode", ignore = true)
 | 
				
			||||||
 | 
					    @Mapping(target = "parentCodeEntity", ignore = true)
 | 
				
			||||||
 | 
					    CommonCode toCommonCode(CommonCodeDto dto);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonCode 엔티티 리스트를 CommonCodeDto 리스트로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    List<CommonCodeDto> toCommonCodeDtoList(List<CommonCode> entities);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonCodeDto 리스트를 CommonCode 엔티티 리스트로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    List<CommonCode> toCommonCodeList(List<CommonCodeDto> dtos);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonCodeDto를 CreateCommonCodeResponseDto로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Mapping(target = "createdAt", ignore = true)
 | 
				
			||||||
 | 
					    CreateCommonCodeResponseDto toCreateCommonCodeResponseDto(CommonCodeDto dto);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CreateCommonCodeRequestDto를 CommonCodeDto로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Mapping(target = "oid", ignore = true)
 | 
				
			||||||
 | 
					    CommonCodeDto toCommonCodeDto(CreateCommonCodeRequestDto requestDto);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * UpdateCommonCodeRequestDto를 CommonCodeDto로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Mapping(target = "code", ignore = true)
 | 
				
			||||||
 | 
					    @Mapping(target = "oid", ignore = true)
 | 
				
			||||||
 | 
					    CommonCodeDto toCommonCodeDto(UpdateCommonCodeRequestDto requestDto);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonCodeDto의 값으로 CommonCode 엔티티를 업데이트 (null 값은 무시)
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @IgnoreBaseEntityMapping
 | 
				
			||||||
 | 
					    @Mapping(target = "commonGroupCode", ignore = true)
 | 
				
			||||||
 | 
					    @Mapping(target = "parentCodeEntity", ignore = true)
 | 
				
			||||||
 | 
					    void updateCommonCodeFromDto(CommonCodeDto commonCodeDto, @org.mapstruct.MappingTarget CommonCode commonCode);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,67 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.mapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.CommonGroupCodeDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.CreateCommonGroupCodeRequestDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.CreateCommonGroupCodeResponseDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.UpdateCommonGroupCodeRequestDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.entity.CommonGroupCode;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.global.annotation.IgnoreBaseEntityMapping;
 | 
				
			||||||
 | 
					import org.mapstruct.Mapper;
 | 
				
			||||||
 | 
					import org.mapstruct.Mapping;
 | 
				
			||||||
 | 
					import org.mapstruct.factory.Mappers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Mapper(componentModel = "spring")
 | 
				
			||||||
 | 
					public interface CommonGroupCodeMapper {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    CommonGroupCodeMapper INSTANCE = Mappers.getMapper(CommonGroupCodeMapper.class);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonGroupCode 엔티티를 CommonGroupCodeDto로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    CommonGroupCodeDto toCommonGroupCodeDto(CommonGroupCode entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonGroupCodeDto를 CommonGroupCode 엔티티로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    CommonGroupCode toCommonGroupCode(CommonGroupCodeDto dto);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonGroupCode 엔티티 리스트를 CommonGroupCodeDto 리스트로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    List<CommonGroupCodeDto> toCommonGroupCodeDtoList(List<CommonGroupCode> entities);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonGroupCodeDto 리스트를 CommonGroupCode 엔티티 리스트로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    List<CommonGroupCode> toCommonGroupCodeList(List<CommonGroupCodeDto> dtos);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonGroupCodeDto를 CreateCommonGroupCodeResponseDto로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    CreateCommonGroupCodeResponseDto toCreateCommonGroupCodeResponseDto(CommonGroupCodeDto dto);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CreateCommonGroupCodeRequestDto를 CommonGroupCodeDto로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Mapping(target = "oid", ignore = true)
 | 
				
			||||||
 | 
					    @Mapping(target = "createdAt", ignore = true)
 | 
				
			||||||
 | 
					    @Mapping(target = "updatedAt", ignore = true)
 | 
				
			||||||
 | 
					    CommonGroupCodeDto toCommonGroupCodeDto(CreateCommonGroupCodeRequestDto requestDto);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * UpdateCommonGroupCodeRequestDto를 CommonGroupCodeDto로 변환
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Mapping(target = "oid", ignore = true)
 | 
				
			||||||
 | 
					    @Mapping(target = "code", ignore = true)
 | 
				
			||||||
 | 
					    @Mapping(target = "createdAt", ignore = true)
 | 
				
			||||||
 | 
					    @Mapping(target = "updatedAt", ignore = true)
 | 
				
			||||||
 | 
					    CommonGroupCodeDto toCommonGroupCodeDto(UpdateCommonGroupCodeRequestDto requestDto);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * CommonGroupCodeDto의 값으로 CommonGroupCode 엔티티를 업데이트 (null 값은 무시)
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @IgnoreBaseEntityMapping
 | 
				
			||||||
 | 
					    void updateCommonGroupCodeFromDto(CommonGroupCodeDto groupCodeDto, @org.mapstruct.MappingTarget CommonGroupCode groupCode);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.entity.CommonCode;
 | 
				
			||||||
 | 
					import org.springframework.data.jpa.repository.JpaRepository;
 | 
				
			||||||
 | 
					import org.springframework.data.jpa.repository.Query;
 | 
				
			||||||
 | 
					import org.springframework.data.repository.query.Param;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Optional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Repository
 | 
				
			||||||
 | 
					public interface CommonCodeRepository extends JpaRepository<CommonCode, Long> {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Optional<CommonCode> findByCode(String code);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    List<CommonCode> findByGroupCodeAndUseFlagOrderBySortOrderAsc(String groupCode, Boolean useFlag);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    List<CommonCode> findByParentCodeAndUseFlagOrderBySortOrderAsc(String parentCode, Boolean useFlag);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Query("SELECT cc FROM CommonCode cc WHERE cc.groupCode = :groupCode AND cc.useFlag = :useFlag ORDER BY cc.sortOrder ASC")
 | 
				
			||||||
 | 
					    List<CommonCode> findActiveCodesByGroupCodeOrderBySortOrder(@Param("groupCode") String groupCode, @Param("useFlag") Boolean useFlag);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Query("SELECT cc FROM CommonCode cc WHERE cc.parentCode = :parentCode AND cc.useFlag = :useFlag ORDER BY cc.sortOrder ASC")
 | 
				
			||||||
 | 
					    List<CommonCode> findActiveCodesByParentCodeOrderBySortOrder(@Param("parentCode") String parentCode, @Param("useFlag") Boolean useFlag);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    boolean existsByCode(String code);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    boolean existsByGroupCode(String groupCode);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    boolean existsByParentCode(String parentCode);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.entity.CommonGroupCode;
 | 
				
			||||||
 | 
					import org.springframework.data.jpa.repository.JpaRepository;
 | 
				
			||||||
 | 
					import org.springframework.data.jpa.repository.Query;
 | 
				
			||||||
 | 
					import org.springframework.data.repository.query.Param;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Optional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Repository
 | 
				
			||||||
 | 
					public interface CommonGroupCodeRepository extends JpaRepository<CommonGroupCode, Long> {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Optional<CommonGroupCode> findByCode(String code);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    List<CommonGroupCode> findByUseFlagOrderBySortOrderAsc(Boolean useFlag);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Query("SELECT cgc FROM CommonGroupCode cgc WHERE cgc.useFlag = :useFlag ORDER BY cgc.sortOrder ASC")
 | 
				
			||||||
 | 
					    List<CommonGroupCode> findActiveGroupCodesOrderBySortOrder(@Param("useFlag") Boolean useFlag);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    boolean existsByCode(String code);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.CommonCodeDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.CommonGroupCodeDto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public interface CommonCodeService {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // 그룹 코드 관련
 | 
				
			||||||
 | 
					    CommonGroupCodeDto createGroupCode(CommonGroupCodeDto groupCodeDto);
 | 
				
			||||||
 | 
					    void updateGroupCode(String code, CommonGroupCodeDto groupCodeDto);
 | 
				
			||||||
 | 
					    void deleteGroupCode(String code);
 | 
				
			||||||
 | 
					    CommonGroupCodeDto getGroupCode(String code);
 | 
				
			||||||
 | 
					    List<CommonGroupCodeDto> getAllGroupCodes();
 | 
				
			||||||
 | 
					    List<CommonGroupCodeDto> getActiveGroupCodes();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // 공통 코드 관련
 | 
				
			||||||
 | 
					    CommonCodeDto createCode(CommonCodeDto codeDto);
 | 
				
			||||||
 | 
					    void updateCode(String code, CommonCodeDto codeDto);
 | 
				
			||||||
 | 
					    void deleteCode(String code);
 | 
				
			||||||
 | 
					    CommonCodeDto getCode(String code);
 | 
				
			||||||
 | 
					    List<CommonCodeDto> getCodesByGroupCode(String groupCode);
 | 
				
			||||||
 | 
					    List<CommonCodeDto> getActiveCodesByGroupCode(String groupCode);
 | 
				
			||||||
 | 
					    List<CommonCodeDto> getCodesByParentCode(String parentCode);
 | 
				
			||||||
 | 
					    List<CommonCodeDto> getActiveCodesByParentCode(String parentCode);
 | 
				
			||||||
 | 
					    List<CommonCodeDto> getAllCodes();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,165 @@
 | 
				
			|||||||
 | 
					package com.bio.bio_backend.domain.admin.CommonCode.service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.CommonCodeDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.dto.CommonGroupCodeDto;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.entity.CommonCode;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.entity.CommonGroupCode;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.mapper.CommonCodeMapper;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.mapper.CommonGroupCodeMapper;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.repository.CommonCodeRepository;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.domain.admin.CommonCode.repository.CommonGroupCodeRepository;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.global.exception.ApiException;
 | 
				
			||||||
 | 
					import com.bio.bio_backend.global.constants.ApiResponseCode;
 | 
				
			||||||
 | 
					import lombok.RequiredArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					import org.springframework.transaction.annotation.Transactional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Slf4j
 | 
				
			||||||
 | 
					@Service
 | 
				
			||||||
 | 
					@RequiredArgsConstructor
 | 
				
			||||||
 | 
					@Transactional(readOnly = true)
 | 
				
			||||||
 | 
					public class CommonCodeServiceImpl implements CommonCodeService {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private final CommonGroupCodeRepository commonGroupCodeRepository;
 | 
				
			||||||
 | 
					    private final CommonCodeRepository commonCodeRepository;
 | 
				
			||||||
 | 
					    private final CommonCodeMapper commonCodeMapper;
 | 
				
			||||||
 | 
					    private final CommonGroupCodeMapper commonGroupCodeMapper;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // 그룹 코드 관련 메서드들
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    @Transactional
 | 
				
			||||||
 | 
					    public CommonGroupCodeDto createGroupCode(CommonGroupCodeDto groupCodeDto) {
 | 
				
			||||||
 | 
					        if (commonGroupCodeRepository.existsByCode(groupCodeDto.getCode())) {
 | 
				
			||||||
 | 
					            throw new ApiException(ApiResponseCode.USER_ID_DUPLICATE, "이미 존재하는 그룹 코드입니다: " + groupCodeDto.getCode());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        CommonGroupCode groupCode = commonGroupCodeMapper.toCommonGroupCode(groupCodeDto);
 | 
				
			||||||
 | 
					        CommonGroupCode savedGroupCode = commonGroupCodeRepository.save(groupCode);
 | 
				
			||||||
 | 
					        return commonGroupCodeMapper.toCommonGroupCodeDto(savedGroupCode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    @Transactional
 | 
				
			||||||
 | 
					    public void updateGroupCode(String code, CommonGroupCodeDto groupCodeDto) {
 | 
				
			||||||
 | 
					        CommonGroupCode existingGroupCode = commonGroupCodeRepository.findByCode(code)
 | 
				
			||||||
 | 
					            .orElseThrow(() -> new ApiException(ApiResponseCode.COMMON_NOT_FOUND, "그룹 코드를 찾을 수 없습니다: " + code));
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        commonGroupCodeMapper.updateCommonGroupCodeFromDto(groupCodeDto, existingGroupCode);
 | 
				
			||||||
 | 
					        commonGroupCodeRepository.save(existingGroupCode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    @Transactional
 | 
				
			||||||
 | 
					    public void deleteGroupCode(String code) {
 | 
				
			||||||
 | 
					        CommonGroupCode groupCode = commonGroupCodeRepository.findByCode(code)
 | 
				
			||||||
 | 
					            .orElseThrow(() -> new ApiException(ApiResponseCode.COMMON_NOT_FOUND, "그룹 코드를 찾을 수 없습니다: " + code));
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // 하위 공통 코드가 있는지 확인
 | 
				
			||||||
 | 
					        if (commonCodeRepository.existsByGroupCode(code)) {
 | 
				
			||||||
 | 
					            throw new ApiException(ApiResponseCode.COMMON_BAD_REQUEST, "하위 공통 코드가 존재하여 삭제할 수 없습니다: " + code);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        commonGroupCodeRepository.delete(groupCode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public CommonGroupCodeDto getGroupCode(String code) {
 | 
				
			||||||
 | 
					        CommonGroupCode groupCode = commonGroupCodeRepository.findByCode(code)
 | 
				
			||||||
 | 
					            .orElseThrow(() -> new ApiException(ApiResponseCode.COMMON_NOT_FOUND, "그룹 코드를 찾을 수 없습니다: " + code));
 | 
				
			||||||
 | 
					        return commonGroupCodeMapper.toCommonGroupCodeDto(groupCode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<CommonGroupCodeDto> getAllGroupCodes() {
 | 
				
			||||||
 | 
					        List<CommonGroupCode> groupCodes = commonGroupCodeRepository.findAll();
 | 
				
			||||||
 | 
					        return commonGroupCodeMapper.toCommonGroupCodeDtoList(groupCodes);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<CommonGroupCodeDto> getActiveGroupCodes() {
 | 
				
			||||||
 | 
					        List<CommonGroupCode> groupCodes = commonGroupCodeRepository.findByUseFlagOrderBySortOrderAsc(true);
 | 
				
			||||||
 | 
					        return commonGroupCodeMapper.toCommonGroupCodeDtoList(groupCodes);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // 공통 코드 관련 메서드들
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    @Transactional
 | 
				
			||||||
 | 
					    public CommonCodeDto createCode(CommonCodeDto commonCodeDto) {
 | 
				
			||||||
 | 
					        if (commonCodeRepository.existsByCode(commonCodeDto.getCode())) {
 | 
				
			||||||
 | 
					            throw new ApiException(ApiResponseCode.USER_ID_DUPLICATE, "이미 존재하는 공통 코드입니다: " + commonCodeDto.getCode());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // 그룹 코드 존재 여부 확인
 | 
				
			||||||
 | 
					        if (!commonGroupCodeRepository.existsByCode(commonCodeDto.getGroupCode())) {
 | 
				
			||||||
 | 
					            throw new ApiException(ApiResponseCode.COMMON_BAD_REQUEST, "존재하지 않는 그룹 코드입니다: " + commonCodeDto.getGroupCode());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        CommonCode commonCode = commonCodeMapper.toCommonCode(commonCodeDto);
 | 
				
			||||||
 | 
					        CommonCode savedCommonCode = commonCodeRepository.save(commonCode);
 | 
				
			||||||
 | 
					        return commonCodeMapper.toCommonCodeDto(savedCommonCode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    @Transactional
 | 
				
			||||||
 | 
					    public void updateCode(String code, CommonCodeDto commonCodeDto) {
 | 
				
			||||||
 | 
					        CommonCode existingCommonCode = commonCodeRepository.findByCode(code)
 | 
				
			||||||
 | 
					            .orElseThrow(() -> new ApiException(ApiResponseCode.COMMON_NOT_FOUND, "공통 코드를 찾을 수 없습니다: " + code));
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        commonCodeMapper.updateCommonCodeFromDto(commonCodeDto, existingCommonCode);
 | 
				
			||||||
 | 
					        commonCodeRepository.save(existingCommonCode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    @Transactional
 | 
				
			||||||
 | 
					    public void deleteCode(String code) {
 | 
				
			||||||
 | 
					        CommonCode commonCode = commonCodeRepository.findByCode(code)
 | 
				
			||||||
 | 
					            .orElseThrow(() -> new ApiException(ApiResponseCode.COMMON_NOT_FOUND, "공통 코드를 찾을 수 없습니다: " + code));
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // 하위 공통 코드가 있는지 확인
 | 
				
			||||||
 | 
					        if (commonCodeRepository.existsByParentCode(code)) {
 | 
				
			||||||
 | 
					            throw new ApiException(ApiResponseCode.COMMON_BAD_REQUEST, "하위 공통 코드가 존재하여 삭제할 수 없습니다: " + code);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        commonCodeRepository.delete(commonCode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public CommonCodeDto getCode(String code) {
 | 
				
			||||||
 | 
					        CommonCode commonCode = commonCodeRepository.findByCode(code)
 | 
				
			||||||
 | 
					            .orElseThrow(() -> new ApiException(ApiResponseCode.COMMON_NOT_FOUND, "공통 코드를 찾을 수 없습니다: " + code));
 | 
				
			||||||
 | 
					        return commonCodeMapper.toCommonCodeDto(commonCode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<CommonCodeDto> getCodesByGroupCode(String groupCode) {
 | 
				
			||||||
 | 
					        List<CommonCode> commonCodes = commonCodeRepository.findByGroupCodeAndUseFlagOrderBySortOrderAsc(groupCode, true);
 | 
				
			||||||
 | 
					        return commonCodeMapper.toCommonCodeDtoList(commonCodes);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<CommonCodeDto> getActiveCodesByGroupCode(String groupCode) {
 | 
				
			||||||
 | 
					        List<CommonCode> commonCodes = commonCodeRepository.findActiveCodesByGroupCodeOrderBySortOrder(groupCode, true);
 | 
				
			||||||
 | 
					        return commonCodeMapper.toCommonCodeDtoList(commonCodes);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<CommonCodeDto> getCodesByParentCode(String parentCode) {
 | 
				
			||||||
 | 
					        List<CommonCode> commonCodes = commonCodeRepository.findByParentCodeAndUseFlagOrderBySortOrderAsc(parentCode, true);
 | 
				
			||||||
 | 
					        return commonCodeMapper.toCommonCodeDtoList(commonCodes);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<CommonCodeDto> getActiveCodesByParentCode(String parentCode) {
 | 
				
			||||||
 | 
					        List<CommonCode> commonCodes = commonCodeRepository.findActiveCodesByParentCodeOrderBySortOrder(parentCode, true);
 | 
				
			||||||
 | 
					        return commonCodeMapper.toCommonCodeDtoList(commonCodes);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<CommonCodeDto> getAllCodes() {
 | 
				
			||||||
 | 
					        List<CommonCode> commonCodes = commonCodeRepository.findAll();
 | 
				
			||||||
 | 
					        return commonCodeMapper.toCommonCodeDtoList(commonCodes);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user