From 351c5ce4d6f229e133b9877b3ec371e5c580e76a Mon Sep 17 00:00:00 2001 From: thkim Date: Thu, 16 Apr 2026 16:14:46 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=97=91=EC=85=80=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=ED=86=A0=EC=82=AC=EC=8B=9C=ED=97=98=20>=20=EC=95=95=EB=B0=80?= =?UTF-8?q?=EC=8B=9C=ED=97=98=20=EB=B6=80=EC=A0=95=EB=B3=B4=20=EC=97=85?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=20=EC=95=88=20=EB=90=98=EB=8A=94=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ManageExcelUploadProc03Controller.java | 69 ++++++++++++++++++- 1 file changed, 67 insertions(+), 2 deletions(-) diff --git a/src/main/java/geoinfo/regi/manageList/ManageExcelUploadProc03Controller.java b/src/main/java/geoinfo/regi/manageList/ManageExcelUploadProc03Controller.java index 054bb6bf..da32ac91 100644 --- a/src/main/java/geoinfo/regi/manageList/ManageExcelUploadProc03Controller.java +++ b/src/main/java/geoinfo/regi/manageList/ManageExcelUploadProc03Controller.java @@ -677,14 +677,69 @@ public class ManageExcelUploadProc03Controller { sandService.insertTempCbrCompac(map); } } - listMap = ("".equals(saveMap.get("co5List")))?null:(List>) saveMap.get("co5List"); + + Object co5Obj = saveMap.get("co5List"); + listMap = null; + + if (co5Obj != null) { + if (co5Obj instanceof List) { + // 1. 이미 List 타입인 경우 안전하게 형변환 + listMap = (List>) co5Obj; + + } else if (co5Obj instanceof String) { + // 2. String 타입인 경우 양옆 공백 제거 + String strCo5 = ((String) co5Obj).trim(); + + // 3. 에러 원인 원천 차단: 빈 문자열이 아니고, 반드시 '['로 시작할 때만 파싱 + if (!strCo5.isEmpty() && strCo5.startsWith("[")) { + JSONArray jsonArray = JSONArray.fromObject(strCo5); + // 필요에 따라 JSONArray를 List으로 변환 + listMap = (List>) JSONArray.toCollection(jsonArray, HashMap.class); + } else { + // '['로 시작하지 않거나 빈 문자열인 경우의 예외 처리 (로그 출력 등) + // listMap은 초기값인 null을 유지합니다. + System.out.println("Invalid or empty JSON Array string: " + strCo5); + } + } + } if(null != listMap){ for(HashMap map : listMap){ logger.debug("=====>co5List:" + map.toString()); sandService.insertTempConsolidationUsual(map); } } - listMap = ("".equals(saveMap.get("co5List")))?null:(List>) saveMap.get("co5sList"); + + // "co5sList"를 기준으로 데이터를 안전하게 가져오고 파싱합니다. + Object co5sObj = saveMap.get("co5sList"); + listMap = null; + + if (co5sObj != null) { + if (co5sObj instanceof List) { + // 1. 이미 List 형태인 경우 바로 캐스팅 + listMap = (List>) co5sObj; + + } else if (co5sObj instanceof String) { + // 2. String 형태인 경우 JSON 배열 형식인지 검사 후 파싱 + String strCo5s = ((String) co5sObj).trim(); + + if (!strCo5s.isEmpty() && strCo5s.startsWith("[")) { + JSONArray jsonArray = JSONArray.fromObject(strCo5s); + listMap = (List>) JSONArray.toCollection(jsonArray, HashMap.class); + } else { + // 올바른 JSON 배열 형태가 아닐 경우의 예외 처리 + System.out.println("Invalid or empty JSON Array string for co5sList: " + strCo5s); + resultMsg = "토사시험정보 > 압밀시험 부정보가 없습니다."; + params.put("resultMsg",resultMsg); + resultMsg = URLEncoder.encode(resultMsg, "utf-8"); + JSONObject jsonData = getJsonFromMap(resultMap); + logger.debug("jsonData==>"+ jsonData.toString()); + JSONObject jsonObj = new JSONObject(); + jsonObj.put("resultData", jsonData.toString()); + + return new ObjectMapper().writeValueAsString(jsonObj); + } + } + } if(null != listMap){ for(HashMap map : listMap){ logger.debug("=====>co5sList:" + map.toString()); @@ -4756,12 +4811,22 @@ public class ManageExcelUploadProc03Controller { final int sampleInfoCount = _sampleInfoList.size(); String testNoCheck[] = new String[consolidationTestCount]; + /* if( consolidationTestCount != sampleInfoCount){ params.put("resultMsg", String.format(fmtMsg, "기본물성시험정보의 시료 갯수"+consolidationTestCount != sampleInfoCount+"개와 같지 않습니다.")); return params; }; */ + + if( consolidationTestCount == 0 ){ + params.put("resultMsg", String.format(fmtMsg, "[토사시험정보 - 압밀시험정보] 개수가 0개입니다. 1개 이상 입력하십시오.")); + return params; + }; + if( sampleInfoCount < consolidationTestCount ){ + params.put("resultMsg", String.format(fmtMsg, "[토사시험정보 - 압밀시험정보] 개수가 " + consolidationTestCount + "개입니다. 기본물성시험 개수인 " + sampleInfoCount+"개를 초과하여 입력할 수 없습니다.")); + return params; + }; int testNo2 =1; int testNo = 1;