하관우 하관우 05-02
2025-05-02 하관우 API 수정
@d98ab41ece7de09bebc723f18d4400ae3180f0ac
build.gradle
--- build.gradle
+++ build.gradle
@@ -55,6 +55,10 @@
 	// Log4j2 스타터
 	implementation 'org.springframework.boot:spring-boot-starter-log4j2'
 	// https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310
+	// Jackson 라이브러리 추가
+	implementation 'com.fasterxml.jackson.core:jackson-databind'
+	implementation 'com.fasterxml.jackson.core:jackson-annotations'
+	implementation 'com.fasterxml.jackson.core:jackson-core'
 	implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
 
 	// 웹 푸시 라이브러리
src/main/java/com/takensoft/taken_bi_manager/openAPI/service/impl/OpenApiServiceImpl.java
--- src/main/java/com/takensoft/taken_bi_manager/openAPI/service/impl/OpenApiServiceImpl.java
+++ src/main/java/com/takensoft/taken_bi_manager/openAPI/service/impl/OpenApiServiceImpl.java
@@ -175,17 +175,17 @@
 
         // param으로  Query 조건문 만들기
         param.remove("serviceKey");
-        if (param.get("currentPage") != null && CommonUtil.parseInt(param.get("currentPage")) > 0) {
+        if (param.get("pageNo") != null && CommonUtil.parseInt(param.get("pageNo")) > 0) {
             // OFFSET 계산
-            int currentPage = CommonUtil.parseInt(param.get("currentPage"));
-            int perPage = CommonUtil.parseInt(param.get("perPage") != null ? param.get("perPage") : 30); // 기본값 30
+            int currentPage = CommonUtil.parseInt(param.get("pageNo"));
+            int perPage = CommonUtil.parseInt(param.get("numOfRows") != null ? param.get("numOfRows") : 30); // 기본값 30
             int offset = (currentPage - 1) * perPage;
             dataTable.setOffset(offset); // OFFSET 설정
-            param.remove("currentPage");
+            param.remove("pageNo");
         }
-        if (param.get("perPage") != null && CommonUtil.parseInt(param.get("perPage")) > 0) {
-            dataTable.setPerPage(CommonUtil.parseInt(param.get("perPage")));
-            param.remove("perPage");
+        if (param.get("numOfRows") != null && CommonUtil.parseInt(param.get("numOfRows")) > 0) {
+            dataTable.setPerPage(CommonUtil.parseInt(param.get("numOfRows")));
+            param.remove("numOfRows");
         }
         String query = buildQueryCondition(param , dataTable.getColumnDatas());
         System.out.println("조건문 쿼리문 " + query);
src/main/java/com/takensoft/taken_bi_manager/openAPI/web/OpenApiController.java
--- src/main/java/com/takensoft/taken_bi_manager/openAPI/web/OpenApiController.java
+++ src/main/java/com/takensoft/taken_bi_manager/openAPI/web/OpenApiController.java
@@ -1,12 +1,15 @@
 package com.takensoft.taken_bi_manager.openAPI.web;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.takensoft.taken_bi_manager.common.connection.db.util.DBConnectionUtil;
 import com.takensoft.taken_bi_manager.common.connection.db.vo.ConnectionDB;
 import com.takensoft.taken_bi_manager.common.util.CommonUtil;
 import com.takensoft.taken_bi_manager.common.util.StringUtil;
 import com.takensoft.taken_bi_manager.common.vo.CheckMessage;
 import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
 import com.takensoft.taken_bi_manager.common.vo.SearchVO;
+import com.takensoft.taken_bi_manager.controller.data.DataController;
+import com.takensoft.taken_bi_manager.data.dao.DataDAO;
 import com.takensoft.taken_bi_manager.data.dao.DatasetDAO;
 import com.takensoft.taken_bi_manager.data.service.DatasetService;
 import com.takensoft.taken_bi_manager.data.vo.ColumnData;
@@ -21,6 +24,8 @@
 import jakarta.servlet.http.HttpSession;
 import kr.co.smartguru.apim.gateway.util.APIMGatewayUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 import org.w3c.dom.Document;
@@ -45,6 +50,9 @@
 
     @Autowired
     private DatasetDAO datasetDAO;
+
+    @Autowired
+    private DataDAO dataDAO;
 
     private static HashMap<String, HashMap<String, String>> apiCodeMap;
 
@@ -160,25 +168,71 @@
      *
      * 배포 url json 정보 확인
      */
-    @GetMapping("/openapi/{datasetPostId}/{datasetId}/{exportId}/getData")
-    public CustomeResultMap getData (@PathVariable String datasetPostId, @PathVariable String datasetId, @PathVariable String exportId, @RequestParam HashMap<String, Object> param) throws Exception {
-        CustomeResultMap result = new CustomeResultMap();
+    @RequestMapping("/openapi/{datasetPostId}/{datasetId}/{exportId}/getData")
+    public ResponseEntity getData (@PathVariable String datasetPostId, @PathVariable String datasetId, @PathVariable String exportId, @RequestParam HashMap<String, Object> param) throws Exception {
+
+        ModelAndView mav = new ModelAndView("jsonView");
+        //최종 객체
+        Map<String, Object> result = new HashMap<>(1);
+        //최종 하위 객체
+        Map<String, Object> response = new HashMap<>(2);
+
+        String resultCode = "00";
+        String resultMsg = apiCodeMap.get(resultCode).get("errorEng");
+
+        Map<String, Object> header = new HashMap<>();
+        Map<String, Object> body = new HashMap<>();
+
         System.out.println("params입니다 "+ param);
         if(param.get("serviceKey").toString() == null) {
-            result.getCheckMessage().setMessage("서비스 키가 필요합니다.");
+            mav.addObject("message", "서비스 키가 필요합니다.");
         }else{
             int serviceKeyCkeck = openApiService.openApiKeyCheck(param.get("serviceKey").toString());
             if( serviceKeyCkeck >0){
-                // body에 rowData를 담는다
-                List<LinkedHashMap<String, Object>> rowData = openApiService.openApiGetINRowDataAll(datasetPostId , param);
+                try{
+                    Dataset dataset = datasetDAO.selectDatasetByPostId(datasetPostId);
+                    ConnectionDB connectionDB = dataDAO.selectDbConnectionOne(dataset.getDbConectId());
+                    DataTable dataTable = new DataTable(dataset);
+                    DBConnectionUtil dbUtil = new DBConnectionUtil();
+                    connectionDB.decodingData();
+                    dbUtil.getRowDataTotalRows(connectionDB,dataTable);
+                    body.put("totalCount", dbUtil.getRowDataTotalRows(connectionDB,dataTable));
+                    body.put("pageNo", param.get("pageNo"));
+                    body.put("numOfRows", param.get("numOfRows"));
 
-                result.getResultData().put("body", rowData);
+                    // body에 rowData를 담는다
+                    List<LinkedHashMap<String, Object>> rowData = openApiService.openApiGetINRowDataAll(datasetPostId , param);
+                    Map<String, List<LinkedHashMap<String, Object>>> items = new HashMap<>(0);
+                    items.put("item", rowData);
+                    body.put("items", items);
+
+                    response.put("body", body);
+                } catch (Exception e) {
+                    e.printStackTrace();
+
+                    // 어플리케이션 에러
+                    resultCode = "2";
+                    resultMsg = apiCodeMap.get(resultCode).get("errorEng");
+                } finally {
+                    /* header에 '결과 코드' 담기 */
+                    header.put("resultCode", resultCode);
+                    header.put("resultMsg", resultMsg);
+
+                    /** header 데이터 담기 **/
+                    //mav.addObject("header", header);
+                    response.put("header", header);
+
+
+                    /** 최종 API 데이터 담기 **/
+                    result.put("response", response);
+                    mav.addObject("result", result);
+                }
             } else {
-                result.getCheckMessage().setMessage("서비스 키가 유효하지 않습니다.");
+                mav.addObject("message", "서비스 키가 유효하지 않습니다.");
             }
         }
 
-        return result;
+        return ResponseEntity.ok(result);
     }
     /**
      * @author 하관우
src/main/resources/spring/mapper/sql/mariadb-SQL.xml
--- src/main/resources/spring/mapper/sql/mariadb-SQL.xml
+++ src/main/resources/spring/mapper/sql/mariadb-SQL.xml
@@ -496,7 +496,7 @@
 			WHERE 1
 			${query}
 		</if>
-		<if test="perPage != null and perPage > 10">
+		<if test="offset != null and offset > 0">
 			LIMIT #{perPage} OFFSET #{offset}
 		</if>
 	</select>
src/main/resources/spring/mapper/sql/mysql-SQL.xml
--- src/main/resources/spring/mapper/sql/mysql-SQL.xml
+++ src/main/resources/spring/mapper/sql/mysql-SQL.xml
@@ -495,7 +495,7 @@
             WHERE 1
             ${query}
         </if>
-        <if test="perPage != null and perPage > 10">
+        <if test="offset != null and offset > 0">
             LIMIT #{perPage} OFFSET #{offset}
         </if>
     </select>
src/main/resources/spring/mapper/sql/postgre-SQL.xml
--- src/main/resources/spring/mapper/sql/postgre-SQL.xml
+++ src/main/resources/spring/mapper/sql/postgre-SQL.xml
@@ -589,7 +589,7 @@
 			<!-- 		AND -->
 			${query}
 		</if>
-		<if test="perPage != null and perPage > 10">
+		<if test="offset != null and offset > 0">
 			LIMIT #{perPage} OFFSET #{offset}
 		</if>
 	</select>
Add a comment
List