diff --git a/src/main/java/geoinfo/com/WebConfirm.java b/src/main/java/geoinfo/com/WebConfirm.java index f784d5db..9017232a 100644 --- a/src/main/java/geoinfo/com/WebConfirm.java +++ b/src/main/java/geoinfo/com/WebConfirm.java @@ -29,7 +29,7 @@ public class WebConfirm //String url = "jdbc:oracle:thin:@192.168.0.71:1521:orcl"; /*String url = "jdbc:oracle:thin:@192.168.0.29:1521:xe";이전*/ //String url = "jdbc:oracle:thin:@192.168.0.8:3452:orcl"; // 실서버 - String url = "jdbc:oracle:thin:@118.219.150.34:1521:ORAGEODEV"; + String url = "jdbc:oracle:thin:@118.219.150.34:1521:ORAGEODEV"; // DBNT 개발 서버 /* * public WebConfirm() { this.connection = null; this.connectionPool = null; * this.query = null; this.resultSet = null; this.sql = ""; this.resultCnt = 0; @@ -177,7 +177,13 @@ public class WebConfirm resultCnt += query.executeUpdate(connection); query.close(); - exeQuery(sql = "DELETE FROM TBL_HEADER_HOLE WHERE HOLE_CODE = [HOLE_CODE]", resultSet.getString("HOLE_CODE")); + + final StringBuffer sbQueryDeleteTblHeaderHole = new StringBuffer(); + sbQueryDeleteTblHeaderHole.append("DELETE FROM TBL_HEADER_HOLE WHERE HOLE_CODE = [HOLE_CODE]"); + (query = new DatabaseQuery(sbQueryDeleteTblHeaderHole.toString())).setParam("HOLE_CODE", resultSet.getString("HOLE_CODE")); + resultCnt += query.executeUpdate(connection); + query.close(); + final StringBuffer sbQuery = new StringBuffer(); sbQuery.append(" INSERT INTO TBL_HEADER_HOLE ( "); diff --git a/src/main/java/geoinfo/regi/sampleInfo/SampleInfoController.java b/src/main/java/geoinfo/regi/sampleInfo/SampleInfoController.java index f7301b7e..07639f52 100644 --- a/src/main/java/geoinfo/regi/sampleInfo/SampleInfoController.java +++ b/src/main/java/geoinfo/regi/sampleInfo/SampleInfoController.java @@ -101,7 +101,7 @@ public class SampleInfoController { WebUtil wUtil = new WebUtil(); strUtil sUtil = new strUtil(); int affectRow = 0; - String sJOB_TYPE = ""; + String message = ""; //request String changedData = String.valueOf(params.get("changedDataXML")); @@ -158,7 +158,7 @@ public class SampleInfoController { Element data = (Element)dataNodeDOC.item(i); String key; - if ("U".equals(job) || "I".equals(job)) { // delete, insert 처리 + if ("U".equals(job) || "I".equals(job) || "ignore".equals(job)) { // delete, insert 처리 NodeList nPROJECT_CODE=data.getElementsByTagName("projectCode"); NodeList nHOLE_CODE=data.getElementsByTagName("holeCode"); @@ -171,13 +171,20 @@ public class SampleInfoController { params.put("HOLE_CODE", wUtil.isNullNode(nHOLE_CODE )); params.put("SAMPLE_CODE", wUtil.isNullNode(nSAMPLE_CODE )); sampleService.deleteSampleInfo(params); + + if( "ignore".equals(job) == false ) { + //기존 기본물성시험이 없다고 넣은 데이터를 제거한다. + params.put("PROJECT_CODE", wUtil.isNullNode(nPROJECT_CODE)); + params.put("HOLE_CODE", wUtil.isNullNode(nHOLE_CODE )); + params.put("SAMPLE_CODE", wUtil.isNullNode(nHOLE_CODE ) + "-999"); + sampleService.deleteSampleInfo(params); + } } } - + for (int i = 0; i < jobNodeDOC.getLength(); i++) { String job = jobNodeDOC.item(i).getFirstChild().getNodeValue(); Element data = (Element)dataNodeDOC.item(i); - String key; if ("D".equals(job)) { @@ -185,15 +192,36 @@ public class SampleInfoController { NodeList nHOLE_CODE=data.getElementsByTagName("holeCode"); NodeList nSAMPLE_NUMBER=data.getElementsByTagName("sampleNumber"); - String sQry = ""; //DELETE params.put("PROJECT_CODE", wUtil.isNullNode(nPROJECT_CODE)); params.put("HOLE_CODE", wUtil.isNullNode(nHOLE_CODE )); params.put("SAMPLE_CODE", wUtil.isNullNode(nHOLE_CODE )+ wUtil.isNullNode(nSAMPLE_NUMBER )); affectRow = sampleService.deleteSampleInfo(params); + if( affectRow == 0) { + System.out.println( + "\n--------------------------------------------------------------\n" + + request.getRequestURI() + " " + " affectRow = sampleService.deleteSampleInfo(params); 실패 됨:" + + "\n--------------------------------------------------------------\n" + + "PROJECT_CODE:[" + wUtil.isNullNode(nPROJECT_CODE) + "]\n" + + "HOLE_CODE:[" + wUtil.isNullNode(nHOLE_CODE) + "]\n" + + "SAMPLE_CODE:[" + wUtil.isNullNode(nHOLE_CODE )+ wUtil.isNullNode(nSAMPLE_NUMBER ) + "]\n" + + "\n--------------------------------------------------------------\n" + ); + message = "기본물성시험 정보 삭제에 실패하였습니다. 담당자에게 문의 바랍니다." + "[" + wUtil.isNullNode(nHOLE_CODE )+ wUtil.isNullNode(nSAMPLE_NUMBER ) + "]"; + } - }else if ("U".equals(job) || "I".equals(job)) { // delete, insert 처리 + } + + } + + + for (int i = 0; i < jobNodeDOC.getLength(); i++) { + String job = jobNodeDOC.item(i).getFirstChild().getNodeValue(); + Element data = (Element)dataNodeDOC.item(i); + String key; + + if ("U".equals(job) || "I".equals(job) || "ignore".equals(job) ) { // delete, insert 처리 NodeList nPROJECT_CODE=data.getElementsByTagName("projectCode"); NodeList nHOLE_CODE=data.getElementsByTagName("holeCode"); @@ -209,18 +237,6 @@ public class SampleInfoController { NodeList nSAMPLE_PI=data.getElementsByTagName("samplePi"); NodeList nSAMPLE_RD=data.getElementsByTagName("sampleRd"); NodeList nSAMPLE_DESC=data.getElementsByTagName("sampleDesc"); - NodeList nSAMPLE_CODE=data.getElementsByTagName("sampleCode"); - - - /* 상단에서 처리. - //DELETE - sQry = "DELETE FROM TEMP_SAMPLE_INFO WHERE PROJECT_CODE=[PROJECT_CODE] AND HOLE_CODE=[HOLE_CODE] AND SAMPLE_CODE=[SAMPLE_CODE]"; - query = new DatabaseQuery(sQry); - params.put("PROJECT_CODE", wUtil.isNullNode(nPROJECT_CODE)); - params.put("HOLE_CODE", wUtil.isNullNode(nHOLE_CODE )); - params.put("SAMPLE_CODE", wUtil.isNullNode(nSAMPLE_CODE )); - query.executeUpdate(connection); - */ params.put("PROJECT_CODE", wUtil.isNullNode(nPROJECT_CODE )); params.put("HOLE_CODE", wUtil.isNullNode(nHOLE_CODE )); @@ -240,6 +256,19 @@ public class SampleInfoController { params.put("USERID", request.getSession().getAttribute("USERID")); affectRow = sampleService.insertSampleInfo(params); + + if( affectRow == 0) { + System.out.println( + "\n--------------------------------------------------------------\n" + + request.getRequestURI() + " " + "sampleService.insertSampleInfo(params) 실패 됨:" + + "\n--------------------------------------------------------------\n" + + "PROJECT_CODE:[" + wUtil.isNullNode(nPROJECT_CODE) + "]\n" + + "HOLE_CODE:[" + wUtil.isNullNode(nHOLE_CODE) + "]\n" + + "SAMPLE_CODE:[" + wUtil.isNullNode(nHOLE_CODE )+ wUtil.isNullNode(nSAMPLE_NUMBER ) + "]\n" + + "\n--------------------------------------------------------------\n" + ); + message = "기본물성시험 정보 삭제에 실패하였습니다. 담당자에게 문의 바랍니다." + "[" + wUtil.isNullNode(nHOLE_CODE )+ wUtil.isNullNode(nSAMPLE_NUMBER ) + "]"; + } } } @@ -274,6 +303,7 @@ public class SampleInfoController { affectRow = 0; } model.put("affectRow",affectRow); + model.put("message", message); // 오류가 난 원인을 사용자가 알 수 있게 수정 필요. 20240705 1606 return "/web/input/sampleInfoDb"; diff --git a/src/main/java/geoinfo/regi/status/RegiController.java b/src/main/java/geoinfo/regi/status/RegiController.java index cd14d56e..aab1f788 100644 --- a/src/main/java/geoinfo/regi/status/RegiController.java +++ b/src/main/java/geoinfo/regi/status/RegiController.java @@ -587,8 +587,7 @@ public class RegiController { HashMap result = masterService.getHistSeq(params); if (result == null) { - //웹 취약점 때문에 수정 -// } else { + //웹 취약점 때문에 수정 int insertResult = masterService.insertHistSeq(params); affectRow = affectRow + insertResult; diff --git a/src/main/resources/egovframework/egovProps/globals.properties b/src/main/resources/egovframework/egovProps/globals.properties index 01a16ae4..1178aaa0 100644 --- a/src/main/resources/egovframework/egovProps/globals.properties +++ b/src/main/resources/egovframework/egovProps/globals.properties @@ -8,7 +8,10 @@ Oracle.Driver=oracle.jdbc.driver.OracleDriver ################################################################ # Oracle.Url=jdbc:oracle:thin:@192.168.0.8:3452:orcl is prod #Oracle.Url=jdbc:oracle:thin:@192.168.0.8:3452:orcl +# dbnt devlop server Oracle.Url=jdbc:oracle:thin:@118.219.150.34:1521:ORAGEODEV +# develop local server +#Oracle.Url=jdbc:oracle:thin:@192.168.86.2:1521:xe ################################################################ #Oracle.Url=jdbc:oracle:thin:@192.168.0.29:1521:xe diff --git a/src/main/webapp/WEB-INF/views/home/index.jsp b/src/main/webapp/WEB-INF/views/home/index.jsp index 5bf5efc1..37874ff1 100644 --- a/src/main/webapp/WEB-INF/views/home/index.jsp +++ b/src/main/webapp/WEB-INF/views/home/index.jsp @@ -451,8 +451,8 @@ - - '22년 건설 시추정보
DB사용자
집합교육 자료
+
+ '23년 건설 시추정보
DB사용자
집합교육 자료
diff --git a/src/main/webapp/WEB-INF/views/web/input/sampleInfo.jsp b/src/main/webapp/WEB-INF/views/web/input/sampleInfo.jsp index 101ce8e5..974ba583 100644 --- a/src/main/webapp/WEB-INF/views/web/input/sampleInfo.jsp +++ b/src/main/webapp/WEB-INF/views/web/input/sampleInfo.jsp @@ -81,7 +81,7 @@ function fn_save(rUrl){ var kendoColCount = grid.columns.length; // 세로(열) 갯수 var kendoRowIdx = grid.dataSource._data[kendoRowCount -1]; // 마지막행 데이터 - var gridDataCount = gridData.length; + var gridDataCount = typeof gridData == 'undefined' ? 0 : gridData.length; if (!kendoRowCount == 0) { if (kendoRowIdx.sampleNumber == null || kendoRowIdx.sampleNumber == "") { @@ -197,6 +197,9 @@ function fn_save(rUrl){ for(var i=0; i < _delGridData.length; i++){ var row = _delGridData[i]; + if( typeof row == 'undefined') { + continue; + } var keys = Object.keys(row); change_data += "" + (data.length + i) + "\r\n"; @@ -270,6 +273,55 @@ function fn_save(rUrl){ change_data += ""; } + + if( data.length === 0 ) { + const answer = confirm("기본물성시험 정보가 없습니까?"); + + if (answer) { + console.log("네"); + // "네"를 선택했을 때 실행할 코드 + //그리드 저장 + var basicData = { + "projectCode" : "${oPROJECT_CODE}", + "holeCode" : "${oHOLE_CODE}", + "sampleCode" : "${oHOLE_CODE}" + "-999", + "sampleNumber" : "-999", + "userid" : "", + "datetime" : "", + } + + console.log(basicData); + + change_data += + "\r\n" + + "0\r\n" + + "ignore\r\n" + + "" + basicData.projectCode + "\r\n" + + "" + basicData.holeCode + "\r\n" + + "" + basicData.sampleCode + "\r\n" + + "" + basicData.sampleNumber + "\r\n" + + "-999\r\n" + + "-999\r\n" + + "-999\r\n" + + "-999\r\n" + + "-999\r\n" + + "-999\r\n" + + "-999\r\n" + + "-999\r\n" + + "-999\r\n" + + "-999\r\n" + + "-\r\n" + + "" + basicData.userid + "\r\n" + + "" + basicData.datetime + "\r\n" + + ""; + + setTimeout(function(){fn_submitAllToServerKendo("/web/input/sampleInfoDb.do", return_url, change_data);}, 500); + } else { + console.log("아니오"); + // "아니오"를 선택했을 때 실행할 코드 + return false; + } + } change_data += ""; @@ -281,9 +333,28 @@ function fn_save(rUrl){ }else{ return_url = rUrl; } - + + //그리드 저장 setTimeout(function(){fn_submitAllToServerKendo("/web/input/sampleInfoDb.do", return_url, change_data);}, 500); + +} + +// 현재 시분초를 5자리 숫자로 변환하는 로직 +function getCurrentTimeInFiveDigits() { + var now = new Date(); + var hours = now.getHours(); + var minutes = now.getMinutes(); + var seconds = now.getSeconds(); + + // 5자리 숫자로 변환 (HHmmss 형태) + var timeInFiveDigits = + (hours < 10 ? "0" : "") + hours + + (minutes < 10 ? "0" : "") + minutes + + (seconds < 10 ? "0" : "") + seconds.toString().charAt(0); // 초의 첫 번째 자리만 사용 + timeInFiveDigits = parseInt(timeInFiveDigits); // 문자열을 숫자로 변환 + + return timeInFiveDigits; } //행추가 @@ -686,6 +757,39 @@ function fn_grid_refresh(){ function fn_kendoGrid() { var nullTypeString = 'test'; + + if( gridData.length == 1 && gridData[0].sampleNumber == '-999' ) { + gridData = undefined; + + // table-top-control 클래스를 가진 첫 번째 요소 찾기 + var tableTopControlElement = document.getElementsByClassName('table-top-control')[0]; + + if (tableTopControlElement) { + // 추가할 div 요소 생성 + var newDiv = document.createElement('div'); + newDiv.textContent = '기본물성시험 데이터가 없는 사업'; // div 내용 설정 (선택 사항) + + // 스타일 적용 (선택 사항) + newDiv.style.backgroundColor = '#e53535'; + newDiv.style.color = '#ffffff'; + newDiv.style.fontWeight = '600'; + newDiv.style.padding = '5px 20px'; + newDiv.style.display = 'inline-block'; + newDiv.style.width = 'auto'; + newDiv.style.height = '34px'; + newDiv.style.borderRadius = '5px'; + newDiv.style.margin = '0px auto'; + newDiv.id = 'no-basic-property-test-business' + + // table-top-control 요소에 새로운 div 추가 + tableTopControlElement.appendChild(newDiv); + + var gridRowCntElement = document.getElementById('GridRowCnt'); + gridRowCntElement.value = 0; + } else { + console.log('table-top-control 클래스를 가진 요소를 찾을 수 없습니다.'); + } + } var kictDataSource = new kendo.data.DataSource ({ data: gridData, schema: { @@ -1004,3 +1108,4 @@ function fn_grid_refresh(){ + diff --git a/src/main/webapp/WEB-INF/views/web/input/sampleInfoDb.jsp b/src/main/webapp/WEB-INF/views/web/input/sampleInfoDb.jsp index ecfa5339..d3069907 100644 --- a/src/main/webapp/WEB-INF/views/web/input/sampleInfoDb.jsp +++ b/src/main/webapp/WEB-INF/views/web/input/sampleInfoDb.jsp @@ -3,6 +3,9 @@ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 오류입니다. + +${message} + 저장 되었습니다. diff --git a/src/main/webapp/com/css/apply.bat b/src/main/webapp/com/css/apply.bat index 6cb1cd8a..2472088a 100644 --- a/src/main/webapp/com/css/apply.bat +++ b/src/main/webapp/com/css/apply.bat @@ -1,2 +1,2 @@ -copy *.css /y ..\..\..\..\..\..\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\geoinfo_eGov_work\com\css\ -copy *.map /y ..\..\..\..\..\..\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\geoinfo_eGov_work\com\css\ \ No newline at end of file +copy *.css /y C:\Users\dbnt\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\geoinfo_eGov_work\com\css\ +copy *.map /y C:\Users\dbnt\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\geoinfo_eGov_work\com\css\ \ No newline at end of file diff --git a/src/main/webapp/com/css/open_target.bat b/src/main/webapp/com/css/open_target.bat index fcd8186b..bea0eb2e 100644 --- a/src/main/webapp/com/css/open_target.bat +++ b/src/main/webapp/com/css/open_target.bat @@ -1 +1 @@ -explorer ..\..\..\..\..\..\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\geoinfo_eGov_work\com\css\ +explorer C:\Users\dbnt\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\geoinfo_eGov_work\com\css\