diff --git a/src/main/java/com/kamco/cd/kamcoback/common/enums/CommonUseStatus.java b/src/main/java/com/kamco/cd/kamcoback/common/enums/CommonUseStatus.java
index c099d74f..75596c54 100644
--- a/src/main/java/com/kamco/cd/kamcoback/common/enums/CommonUseStatus.java
+++ b/src/main/java/com/kamco/cd/kamcoback/common/enums/CommonUseStatus.java
@@ -1,5 +1,7 @@
package com.kamco.cd.kamcoback.common.enums;
+import com.kamco.cd.kamcoback.common.enums.ApiConfigEnum.EnumDto;
+import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose;
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
import java.util.Arrays;
import lombok.AllArgsConstructor;
@@ -11,18 +13,19 @@ import lombok.Getter;
*
This enum represents whether a resource is active, excluded from processing, or inactive. It
* is commonly used for filtering, business rules, and status management.
*/
+@CodeExpose
@Getter
@AllArgsConstructor
public enum CommonUseStatus implements EnumType {
// @formatter:off
- USE("USE", "Active", 100)
+ USE("USE", "사용중", 100)
/** Actively used and available */
,
- EXCEPT("EXCEPT", "Excluded", 200)
+ EXCEPT("EXCEPT", "영구 추론제외", 200)
/** Explicitly excluded from use or processing */
,
- NOT_USE("NOT_USE", "Inactive", 999)
+ NOT_USE("NOT_USE", "사용안", 999)
/** Not used or disabled */
;
// @formatter:on
@@ -37,4 +40,8 @@ public enum CommonUseStatus implements EnumType {
.findFirst()
.orElse(CommonUseStatus.NOT_USE);
}
+
+ public EnumDto getEnumDto() {
+ return new EnumDto<>(this, this.id, this.text);
+ }
}
diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapInkxMngCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapInkxMngCoreService.java
index 67e2dfa3..78aecaa1 100644
--- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapInkxMngCoreService.java
+++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapInkxMngCoreService.java
@@ -9,6 +9,7 @@ import com.kamco.cd.kamcoback.postgres.entity.MapInkx5kEntity;
import com.kamco.cd.kamcoback.postgres.repository.scene.MapInkx50kRepository;
import com.kamco.cd.kamcoback.postgres.repository.scene.MapInkx5kRepository;
import com.kamco.cd.kamcoback.scene.dto.MapInkxMngDto;
+import com.kamco.cd.kamcoback.scene.dto.MapInkxMngDto.MapListEntity;
import com.kamco.cd.kamcoback.scene.dto.MapInkxMngDto.UseInferReq;
import jakarta.persistence.EntityNotFoundException;
import jakarta.validation.Valid;
@@ -101,4 +102,11 @@ public class MapInkxMngCoreService {
return getScene5k.toEntity();
}
+
+ public Page getSceneListByPage(
+ CommonUseStatus useInference, String searchVal, MapInkxMngDto.searchReq searchReq) {
+ return mapInkx5kRepository
+ .getSceneListByPage(useInference, searchVal, searchReq)
+ .map(MapInkx5kEntity::toDto);
+ }
}
diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapInkx50kEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapInkx50kEntity.java
index 95649a18..df11dee0 100644
--- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapInkx50kEntity.java
+++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapInkx50kEntity.java
@@ -1,5 +1,6 @@
package com.kamco.cd.kamcoback.postgres.entity;
+import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheet;
import com.kamco.cd.kamcoback.postgres.CommonDateEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
@@ -46,4 +47,8 @@ public class MapInkx50kEntity extends CommonDateEntity {
this.mapidNo = mapidNo;
this.geom = geom;
}
+
+ public MapSheet toEntity() {
+ return new MapSheet(mapidcdNo, mapidNm);
+ }
}
diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapInkx5kEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapInkx5kEntity.java
index 80247365..b4d26049 100644
--- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapInkx5kEntity.java
+++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapInkx5kEntity.java
@@ -4,6 +4,7 @@ import com.kamco.cd.kamcoback.common.enums.CommonUseStatus;
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheet;
import com.kamco.cd.kamcoback.postgres.CommonDateEntity;
+import com.kamco.cd.kamcoback.scene.dto.MapInkxMngDto.MapListEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
@@ -73,4 +74,14 @@ public class MapInkx5kEntity extends CommonDateEntity {
public InferenceResultDto.MapSheet toEntity() {
return new MapSheet(mapidcdNo, mapidNm);
}
+
+ public MapListEntity toDto() {
+ return MapListEntity.builder()
+ .scene5k(this.toEntity())
+ .scene50k(this.mapInkx50k.toEntity())
+ .useInference(useInference)
+ .createdDttm(super.getCreatedDate())
+ .updatedDttm(super.getModifiedDate())
+ .build();
+ }
}
diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scene/MapInkx5kRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scene/MapInkx5kRepositoryCustom.java
index 50bdf94f..ee971c5c 100644
--- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scene/MapInkx5kRepositoryCustom.java
+++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scene/MapInkx5kRepositoryCustom.java
@@ -4,6 +4,7 @@ import com.kamco.cd.kamcoback.common.enums.CommonUseStatus;
import com.kamco.cd.kamcoback.postgres.entity.MapInkx5kEntity;
import com.kamco.cd.kamcoback.scene.dto.MapInkxMngDto;
import com.kamco.cd.kamcoback.scene.dto.MapInkxMngDto.MapList;
+import com.kamco.cd.kamcoback.scene.dto.MapInkxMngDto.searchReq;
import java.util.List;
import java.util.Optional;
import org.springframework.data.domain.Page;
@@ -18,4 +19,7 @@ public interface MapInkx5kRepositoryCustom {
Long findByMapidCdNoExists(String mapidcdNo);
Optional findByMapidCdNoInfo(String mapidcdNo);
+
+ Page getSceneListByPage(
+ CommonUseStatus useInference, String searchVal, searchReq searchReq);
}
diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scene/MapInkx5kRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scene/MapInkx5kRepositoryImpl.java
index 6485e9c1..6e3789d3 100644
--- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scene/MapInkx5kRepositoryImpl.java
+++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scene/MapInkx5kRepositoryImpl.java
@@ -102,6 +102,31 @@ public class MapInkx5kRepositoryImpl extends QuerydslRepositorySupport
.fetchOne());
}
+ @Override
+ public Page getSceneListByPage(
+ CommonUseStatus useInference, String searchVal, searchReq searchReq) {
+ Pageable pageable = searchReq.toPageable();
+ List content =
+ queryFactory
+ .selectFrom(mapInkx5kEntity)
+ .innerJoin(mapInkx5kEntity.mapInkx50k, mapInkx50kEntity)
+ .fetchJoin()
+ .where(searchUseInference(useInference), searchValueMapCdNm(searchVal))
+ .offset(pageable.getOffset())
+ .limit(pageable.getPageSize())
+ .orderBy(mapInkx5kEntity.mapidcdNo.asc())
+ .fetch();
+ Long count =
+ queryFactory
+ .select(mapInkx5kEntity.count())
+ .from(mapInkx5kEntity)
+ .innerJoin(mapInkx5kEntity.mapInkx50k, mapInkx50kEntity)
+ .where(searchUseInference(useInference), searchValueMapCdNm(searchVal))
+ .fetchOne();
+
+ return new PageImpl<>(content, pageable, count);
+ }
+
private BooleanExpression searchUseInference(CommonUseStatus useInference) {
if (Objects.isNull(useInference)) {
return null;
diff --git a/src/main/java/com/kamco/cd/kamcoback/scene/MapInkxMngApiV2Controller.java b/src/main/java/com/kamco/cd/kamcoback/scene/MapInkxMngApiV2Controller.java
new file mode 100644
index 00000000..39a1dae7
--- /dev/null
+++ b/src/main/java/com/kamco/cd/kamcoback/scene/MapInkxMngApiV2Controller.java
@@ -0,0 +1,52 @@
+package com.kamco.cd.kamcoback.scene;
+
+import com.kamco.cd.kamcoback.code.dto.CommonCodeDto;
+import com.kamco.cd.kamcoback.common.enums.CommonUseStatus;
+import com.kamco.cd.kamcoback.config.api.ApiResponseDto;
+import com.kamco.cd.kamcoback.scene.dto.MapInkxMngDto;
+import com.kamco.cd.kamcoback.scene.service.MapInkxMngService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@Tag(name = "도엽 관리", description = "도엽 관리 API")
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/v2/scene")
+public class MapInkxMngApiV2Controller {
+
+ private final MapInkxMngService mapInkxMngService;
+
+ @Operation(summary = "목록 조회", description = "도엽 목록 조회")
+ @ApiResponses(
+ value = {
+ @ApiResponse(
+ responseCode = "200",
+ description = "조회 성공",
+ content =
+ @Content(
+ mediaType = "application/json",
+ schema = @Schema(implementation = CommonCodeDto.Basic.class))),
+ @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content),
+ @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
+ })
+ @GetMapping
+ public ApiResponseDto> findMapInkxMngList(
+ @RequestParam(defaultValue = "0") int page,
+ @RequestParam(defaultValue = "20") int size,
+ @RequestParam(required = false) CommonUseStatus useInference,
+ @RequestParam(required = false) String searchVal) {
+ MapInkxMngDto.searchReq searchReq = new MapInkxMngDto.searchReq(page, size, "");
+ return ApiResponseDto.ok(
+ mapInkxMngService.findMapInkxMngLists(useInference, searchVal, searchReq));
+ }
+}
diff --git a/src/main/java/com/kamco/cd/kamcoback/scene/dto/MapInkxMngDto.java b/src/main/java/com/kamco/cd/kamcoback/scene/dto/MapInkxMngDto.java
index caa995a6..32464f83 100644
--- a/src/main/java/com/kamco/cd/kamcoback/scene/dto/MapInkxMngDto.java
+++ b/src/main/java/com/kamco/cd/kamcoback/scene/dto/MapInkxMngDto.java
@@ -1,15 +1,17 @@
package com.kamco.cd.kamcoback.scene.dto;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.JsonNode;
+import com.kamco.cd.kamcoback.common.enums.ApiConfigEnum.EnumDto;
import com.kamco.cd.kamcoback.common.enums.CommonUseStatus;
-import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose;
-import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
+import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.persistence.EntityNotFoundException;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import lombok.AllArgsConstructor;
+import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@@ -19,25 +21,26 @@ import org.springframework.data.domain.Sort;
public class MapInkxMngDto {
- @CodeExpose
- @Getter
- @AllArgsConstructor
- public enum UseInferenceType implements EnumType {
- USE("사용중"),
- EXCEPT("영구 추론제외");
-
- private final String desc;
-
- @Override
- public String getId() {
- return name();
- }
-
- @Override
- public String getText() {
- return desc;
- }
- }
+ // CommonUseStatus class로 통합 20251230
+ // @CodeExpose
+ // @Getter
+ // @AllArgsConstructor
+ // public enum UseInferenceType implements EnumType {
+ // USE("사용중"),
+ // EXCEPT("영구 추론제외");
+ //
+ // private final String desc;
+ //
+ // @Override
+ // public String getId() {
+ // return name();
+ // }
+ //
+ // @Override
+ // public String getText() {
+ // return desc;
+ // }
+ // }
@Schema(name = "Basic", description = "Basic")
@Getter
@@ -55,6 +58,46 @@ public class MapInkxMngDto {
private ZonedDateTime updatedDttm;
}
+ @Getter
+ @Schema(name = "MapListEntity", description = "목록 항목")
+ public static class MapListEntity {
+
+ private InferenceResultDto.MapSheet scene50k;
+ private InferenceResultDto.MapSheet scene5k;
+ private CommonUseStatus useInference;
+
+ @JsonFormat(
+ shape = JsonFormat.Shape.STRING,
+ pattern = "yyyy-MM-dd'T'HH:mm:ssXXX",
+ timezone = "Asia/Seoul")
+ private ZonedDateTime createdDttm;
+
+ @JsonFormat(
+ shape = JsonFormat.Shape.STRING,
+ pattern = "yyyy-MM-dd'T'HH:mm:ssXXX",
+ timezone = "Asia/Seoul")
+ private ZonedDateTime updatedDttm;
+
+ public EnumDto getUseInference() {
+ EnumDto enumDto = useInference.getEnumDto();
+ return enumDto;
+ }
+
+ @Builder
+ public MapListEntity(
+ InferenceResultDto.MapSheet scene50k,
+ InferenceResultDto.MapSheet scene5k,
+ CommonUseStatus useInference,
+ ZonedDateTime createdDttm,
+ ZonedDateTime updatedDttm) {
+ this.scene50k = scene50k;
+ this.scene5k = scene5k;
+ this.useInference = useInference;
+ this.createdDttm = createdDttm;
+ this.updatedDttm = updatedDttm;
+ }
+ }
+
@Schema(name = "MapList", description = "목록 항목")
@Getter
@Setter
diff --git a/src/main/java/com/kamco/cd/kamcoback/scene/service/MapInkxMngService.java b/src/main/java/com/kamco/cd/kamcoback/scene/service/MapInkxMngService.java
index 5cd06c7c..bab97bbf 100644
--- a/src/main/java/com/kamco/cd/kamcoback/scene/service/MapInkxMngService.java
+++ b/src/main/java/com/kamco/cd/kamcoback/scene/service/MapInkxMngService.java
@@ -25,11 +25,18 @@ public class MapInkxMngService {
private final MapInkxMngCoreService mapInkxMngCoreService;
+ // 도엽의 리스트 조회
public Page findMapInkxMngList(
MapInkxMngDto.searchReq searchReq, CommonUseStatus useInference, String searchVal) {
return mapInkxMngCoreService.findMapInkxMngList(searchReq, useInference, searchVal);
}
+ // 도엽의 리스트 조회
+ public Page findMapInkxMngLists(
+ CommonUseStatus useInference, String searchVal, MapInkxMngDto.searchReq searchReq) {
+ return mapInkxMngCoreService.getSceneListByPage(useInference, searchVal, searchReq);
+ }
+
public ResponseObj saveMapInkx5k(@Valid MapInkxMngDto.AddMapReq req) {
String[] coordinates = req.getCoordinates().split("\\r?\\n");