diff --git a/src/main/java/com/kamco/cd/kamcoback/Innopam/dto/DetectMastDto.java b/src/main/java/com/kamco/cd/kamcoback/Innopam/dto/DetectMastDto.java index 77ef145e..3ec944e7 100644 --- a/src/main/java/com/kamco/cd/kamcoback/Innopam/dto/DetectMastDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/Innopam/dto/DetectMastDto.java @@ -7,10 +7,6 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor public class DetectMastDto { @Getter @@ -71,21 +67,13 @@ public class DetectMastDto { private String featureId; } - /** before 연도 */ - private String cprsBfYr; + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class FeaturePnuDto { - /** after 연도 */ - private String cprsAdYr; - - /** 차수 */ - private Integer dtctSno; - - /** shp 파일경로 */ - private String pathNm; - - /** 등록한 사람 사번 */ - private String crtEpno; - - /** 등록한 사람 ip */ - private String crtIp; + private String featureId; // polygon_id + private String pnu; // 랜덤 생성 + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/Innopam/service/DetectMastService.java b/src/main/java/com/kamco/cd/kamcoback/Innopam/service/DetectMastService.java index 9b1c9d08..6924fa90 100644 --- a/src/main/java/com/kamco/cd/kamcoback/Innopam/service/DetectMastService.java +++ b/src/main/java/com/kamco/cd/kamcoback/Innopam/service/DetectMastService.java @@ -1,10 +1,15 @@ package com.kamco.cd.kamcoback.Innopam.service; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.kamco.cd.kamcoback.Innopam.dto.DetectMastDto.Basic; import com.kamco.cd.kamcoback.Innopam.dto.DetectMastDto.DetectMastReq; import com.kamco.cd.kamcoback.Innopam.dto.DetectMastDto.DetectMastSearch; +import com.kamco.cd.kamcoback.Innopam.dto.DetectMastDto.FeaturePnuDto; import com.kamco.cd.kamcoback.Innopam.postgres.core.DetectMastCoreService; import java.io.File; +import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.ThreadLocalRandom; import lombok.RequiredArgsConstructor; @@ -32,21 +37,13 @@ public class DetectMastService { } public void findPnuData(DetectMastSearch detectMast) { - String pathNm = detectMastCoreService.findPnuData(detectMast); - - File dir = new File(pathNm); - if (dir.exists() && dir.isDirectory()) { - File[] files = dir.listFiles(); - - if (files != null) { - for (File file : files) { - System.out.println(file.getName()); - } - } - } + // String pathNm = detectMastCoreService.findPnuData(detectMast); + String pathNm = "/Users/bokmin/detect/result/2023_2024/4"; + File geoJson = new File(pathNm); + List list = this.extractFeaturePnus(geoJson); } - public static String randomPnu() { + private String randomPnu() { ThreadLocalRandom r = ThreadLocalRandom.current(); String lawCode = String.valueOf(r.nextLong(1000000000L, 9999999999L)); // 10자리 @@ -56,4 +53,38 @@ public class DetectMastService { return lawCode + sanFlag + bon + bu; } + + private List extractFeaturePnus(File geoJsonFile) { + + ObjectMapper mapper = new ObjectMapper(); + JsonNode root = null; + try { + mapper.readTree(geoJsonFile); + } catch (IOException e) { + throw new RuntimeException(e); + } + + JsonNode features = root.get("features"); + List result = new ArrayList<>(); + + if (features != null && features.isArray()) { + for (JsonNode feature : features) { + JsonNode properties = feature.get("properties"); + if (properties == null) { + continue; + } + + String polygonId = properties.path("polygon_id").asText(null); + if (polygonId == null) { + continue; + } + + String pnu = this.randomPnu(); + + result.add(new FeaturePnuDto(polygonId, pnu)); + } + } + + return result; + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/common/enums/SyncCheckStateType.java b/src/main/java/com/kamco/cd/kamcoback/common/enums/SyncCheckStateType.java new file mode 100644 index 00000000..2b4f1e81 --- /dev/null +++ b/src/main/java/com/kamco/cd/kamcoback/common/enums/SyncCheckStateType.java @@ -0,0 +1,26 @@ +package com.kamco.cd.kamcoback.common.enums; + +import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose; +import com.kamco.cd.kamcoback.common.utils.enums.EnumType; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@CodeExpose +@Getter +@AllArgsConstructor +public enum SyncCheckStateType implements EnumType { + NOTYET("미처리"), + DONE("완료"); + + private final String desc; + + @Override + public String getId() { + return name(); + } + + @Override + public String getText() { + return desc; + } +} diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngHstEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngHstEntity.java index 2cf1f359..c5482e28 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngHstEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngHstEntity.java @@ -3,12 +3,9 @@ package com.kamco.cd.kamcoback.postgres.entity; import com.kamco.cd.kamcoback.postgres.CommonDateEntity; import jakarta.persistence.Column; import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import jakarta.validation.constraints.Size; import java.time.ZonedDateTime; @@ -69,10 +66,11 @@ public class MapSheetMngHstEntity extends CommonDateEntity { private Integer mngYyyy; // 년도 // JPA 연관관계: MapInkx5k 참조 (PK 기반) 소속도엽번호 1:5k + /* @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "map_sheet_code", referencedColumnName = "fid") private MapInkx5kEntity mapInkx5kByCode; - + */ // TODO 1:5k 관련 정보 추후 제거 필요 @Column(name = "map_sheet_num") private String mapSheetNum; // 도엽번호 diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngFileCheckerRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngFileCheckerRepositoryImpl.java index b23d9f47..28a7f9dc 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngFileCheckerRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngFileCheckerRepositoryImpl.java @@ -8,7 +8,6 @@ import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngHstEntity; import com.querydsl.core.BooleanBuilder; import com.querydsl.core.types.Projections; import com.querydsl.core.types.dsl.Expressions; -import com.querydsl.core.types.dsl.NumberExpression; import com.querydsl.core.types.dsl.StringExpression; import com.querydsl.jpa.impl.JPAQueryFactory; import jakarta.validation.Valid; @@ -76,8 +75,11 @@ public class MapSheetMngFileCheckerRepositoryImpl extends QuerydslRepositorySupp return new PageImpl<>(foundContent, pageable, countQuery); } + /* private NumberExpression rowNum() { return Expressions.numberTemplate( Integer.class, "row_number() over(order by {0} desc)", mapSheetMngHstEntity.createdDate); } + + */ } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java index 8fc981c8..59c86dce 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java @@ -1,6 +1,5 @@ package com.kamco.cd.kamcoback.postgres.repository.mapsheet; -import static com.kamco.cd.kamcoback.postgres.entity.QMapInkx50kEntity.mapInkx50kEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapInkx5kEntity.mapInkx5kEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetMngEntity.mapSheetMngEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetMngFileEntity.mapSheetMngFileEntity; @@ -393,9 +392,8 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport queryFactory .select(mapSheetMngHstEntity.hstUid.count()) .from(mapSheetMngHstEntity) - .innerJoin(mapInkx5kEntity, mapSheetMngHstEntity.mapInkx5kByCode) - .fetchJoin() - .leftJoin(mapInkx5kEntity.mapInkx50k, mapInkx50kEntity) + .innerJoin(mapInkx5kEntity) + .on(mapSheetMngHstEntity.mapSheetNum.eq(mapInkx5kEntity.mapidcdNo)) .where(whereBuilder) .fetchOne();