From 86846e3c3b3a8c974ed84389e0b3a05ee51a3ad6 Mon Sep 17 00:00:00 2001 From: teddy Date: Thu, 15 Jan 2026 09:57:27 +0900 Subject: [PATCH] =?UTF-8?q?[KC-103]=20=EA=B2=B0=EA=B3=BC=20=ED=85=8C?= =?UTF-8?q?=EC=9D=B4=EB=B8=94=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InferenceResultShpApiController.java | 8 ++- .../service/InferenceResultShpService.java | 4 +- .../core/InferenceResultCoreService.java | 4 -- .../core/InferenceResultShpCoreService.java | 12 ++-- .../InferenceResultRepositoryCustom.java | 2 +- .../InferenceResultRepositoryImpl.java | 72 +++++++++---------- 6 files changed, 50 insertions(+), 52 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultShpApiController.java b/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultShpApiController.java index f2c83c6f..3b48f13d 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultShpApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultShpApiController.java @@ -10,6 +10,7 @@ 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.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -36,9 +37,10 @@ public class InferenceResultShpApiController { @ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) - @PostMapping("/save") - public ApiResponseDto saveInferenceData() { - return ApiResponseDto.createOK(inferenceResultShpService.saveInferenceResultData()); + @PostMapping("/save/{id}") + public ApiResponseDto saveInferenceData( + @PathVariable Long id) { + return ApiResponseDto.createOK(inferenceResultShpService.saveInferenceResultData(id)); } @Operation(summary = "shp 파일 생성", description = "shp 파일 생성") diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java index 980a5a22..3a16f960 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java @@ -22,8 +22,8 @@ public class InferenceResultShpService { /** inference_results 테이블을 기준으로 분석 결과 테이블과 도형 테이블을 최신 상태로 반영한다. */ @Transactional - public InferenceResultShpDto.InferenceCntDto saveInferenceResultData() { - return coreService.buildInferenceData(); + public InferenceResultShpDto.InferenceCntDto saveInferenceResultData(Long id) { + return coreService.buildInferenceData(id); } /** diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java index 0a521c4d..5600297f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java @@ -414,8 +414,4 @@ public class InferenceResultCoreService { public Page getInferenceGeomList(String uuid, SearchGeoReq searchGeoReq) { return mapSheetLearnRepository.getInferenceGeomList(uuid, searchGeoReq); } - - public void upsertGeomsFromInferenceResults(Long id) { - int inferenceGeomCnt = inferenceResultRepository.upsertGeomsFromInferenceResults(); - } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultShpCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultShpCoreService.java index 53f41d14..5c8e8949 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultShpCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultShpCoreService.java @@ -19,14 +19,14 @@ public class InferenceResultShpCoreService { * tb_map_sheet_anal_data_inference_geom 테이블을 최신 상태로 구성한다. */ @Transactional - public InferenceResultShpDto.InferenceCntDto buildInferenceData() { - int sheetAnalDataCnt = repo.upsertGroupsFromMapSheetAnal(); - int inferenceCnt = repo.upsertGroupsFromInferenceResults(); - int inferenceGeomCnt = repo.upsertGeomsFromInferenceResults(); + public InferenceResultShpDto.InferenceCntDto buildInferenceData(Long id) { + // int sheetAnalDataCnt = repo.upsertGroupsFromMapSheetAnal(); + // int inferenceCnt = repo.upsertGroupsFromInferenceResults(); + int inferenceGeomCnt = repo.upsertGeomsFromInferenceResults(id); InferenceResultShpDto.InferenceCntDto cntDto = new InferenceResultShpDto.InferenceCntDto(); - cntDto.setSheetAnalDataCnt(sheetAnalDataCnt); - cntDto.setInferenceCnt(inferenceCnt); + // cntDto.setSheetAnalDataCnt(sheetAnalDataCnt); + // cntDto.setInferenceCnt(inferenceCnt); cntDto.setInferenceGeomCnt(inferenceGeomCnt); return cntDto; diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java index 41b72849..e5a90fe9 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java @@ -9,7 +9,7 @@ public interface InferenceResultRepositoryCustom { int upsertGroupsFromInferenceResults(); - int upsertGeomsFromInferenceResults(); + int upsertGeomsFromInferenceResults(Long id); List findPendingDataUids(int limit); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java index 559243f2..175ccd73 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java @@ -126,7 +126,7 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC * @return 반영된 행 수 */ @Override - public int upsertGeomsFromInferenceResults() { + public int upsertGeomsFromInferenceResults(Long id) { String sql = """ @@ -145,9 +145,7 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC geom_center, area, data_uid, - file_created_yn, - created_dttm, - updated_dttm + created_dttm ) SELECT x.uuid, @@ -164,38 +162,40 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC ST_Centroid(x.geom), x.area, x.data_uid, - false, - x.created_dttm, - x.updated_dttm + x.created_dttm FROM ( - SELECT DISTINCT ON (r.uuid) - r.uuid, - r.stage, - r.cd_prob, - r.input1 AS compare_yyyy, - r.input2 AS target_yyyy, - r.map_id AS map_sheet_num, - r.before_class AS class_before_cd, - r.before_probability AS class_before_prob, - r.after_class AS class_after_cd, - r.after_probability AS class_after_prob, - CASE - WHEN r.geometry IS NULL THEN NULL - WHEN LEFT(r.geometry, 2) = '01' - THEN ST_SetSRID(ST_GeomFromWKB(decode(r.geometry, 'hex')), 5186) - ELSE ST_GeomFromText(r.geometry, 5186) - END AS geom, - r.area, - di.data_uid, - r.created_dttm, - r.updated_dttm - FROM inference_results r - JOIN tb_map_sheet_anal_data_inference di - ON di.stage = r.stage - AND di.compare_yyyy = r.input1 - AND di.target_yyyy = r.input2 - AND di.map_sheet_num = r.map_id - ORDER BY r.uuid, r.updated_dttm DESC NULLS LAST, r.uid DESC + SELECT DISTINCT ON (r.uid) + r.uid AS uuid, + di.stage AS stage, + r.cd_prob, + r.input1 AS compare_yyyy, + r.input2 AS target_yyyy, + CASE + WHEN r.map_id ~ '^[0-9]+$' THEN r.map_id::bigint + ELSE NULL + END AS map_sheet_num, + r.before_c AS class_before_cd, + r.before_p AS class_before_prob, + r.after_c AS class_after_cd, + r.after_p AS class_after_prob, + CASE + WHEN r.geometry IS NULL THEN NULL + WHEN LEFT(r.geometry, 2) = '01' + THEN ST_SetSRID(ST_GeomFromWKB(decode(r.geometry, 'hex')), 5186) + ELSE ST_SetSRID(ST_GeomFromText(r.geometry), 5186) + END AS geom, + r.area, + di.id AS data_uid, + r.created_date AS created_dttm + FROM inference_results_testing r + JOIN tb_map_sheet_learn di + ON r.batch_id IN ( + di.m1_model_batch_id, + di.m2_model_batch_id, + di.m3_model_batch_id + ) + where di.id = :id + ORDER BY r.uid, r.created_date DESC NULLS LAST ) x ON CONFLICT (uuid) DO UPDATE SET @@ -214,7 +214,7 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC updated_dttm = now() """; - return em.createNativeQuery(sql).executeUpdate(); + return em.createNativeQuery(sql).setParameter("id", id).executeUpdate(); } // ===============================