From bf0cc86d1c0b662b5b64095da5f6e12397db59ba Mon Sep 17 00:00:00 2001 From: thkim Date: Fri, 10 Oct 2025 10:33:25 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20import=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 95 +++++++++++++- admin_list.txt | 35 ++---- .../admins/board/CommunityController.java | 3 +- .../admins/board/GroundReportController.java | 2 +- .../admins/board/RefrncRoomController.java | 30 ++++- .../admins/chLog/ChInfoController.java | 118 +----------------- .../admins/chLog/DownloadAppController.java | 2 +- .../service/impl/DownloadAppServiceImpl.java | 2 +- .../admins/notice/NoticeMngController.java | 2 +- .../admins/user/GeneralUserMngController.java | 2 +- .../java/geoinfo/com/file/FileController.java | 2 +- src/main/java/geoinfo/util/RsWrapper.java | 1 - src/main/resources/config/context-common.xml | 4 +- .../egovProps/globals.properties | 9 +- .../egovframework/spring/context-common.xml | 4 +- .../webapp/WEB-INF/lib/ICERTSecu_JDK17.jar | Bin 0 -> 28945 bytes 16 files changed, 150 insertions(+), 161 deletions(-) create mode 100644 src/main/webapp/WEB-INF/lib/ICERTSecu_JDK17.jar diff --git a/.classpath b/.classpath index 16fa6cf..36a4059 100644 --- a/.classpath +++ b/.classpath @@ -29,10 +29,99 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/admin_list.txt b/admin_list.txt index a89e5f6..b820422 100644 --- a/admin_list.txt +++ b/admin_list.txt @@ -1,26 +1,11 @@ -src\main\webapp\css\admins\style.css -src\main\webapp\css\admins\style.css.map -src\main\webapp\images\admins\frame\top_menu.gif -src\main\webapp\WEB-INF\views\admins\frame\top.jsp -src\main\webapp\WEB-INF\views\admins\main\index.jsp -src\main\webapp\WEB-INF\views\admins\main\main.jsp -src\main\webapp\WEB-INF\views\admins\constructionProjectManagement\00.jsp -src\main\webapp\WEB-INF\views\admins\constructionProjectManagement\left.jsp -src\main\webapp\WEB-INF\views\admins\constructionProjectManagement\construction-project-statistics-index.jsp -src\main\webapp\images\admins\constructionProjectManagement\1_tit_01.gif -src\main\java\geoinfo\admins\constructionProjectManagement\ConstructionProjectManagementController.java -src\main\webapp\js\admins\chart.js -#일반사용자관리 첫 화면 사용자 목록 안 보이도록 하기 -src\main\webapp\WEB-INF\views\admins\frame\top.jsp -src\main\webapp\WEB-INF\views\admins\main\index.jsp -src\main\webapp\WEB-INF\views\admins\main\main.jsp +#게시판 - 자료실에 파일 업로드 안 되는 문제 수정 건 +#src\main\resources\egovframework\egovProps\globals.properties +src\main\java\geoinfo\admins\board\CommunityController.java +src\main\java\geoinfo\admins\board\GroundReportController.java +src\main\java\geoinfo\admins\board\RefrncRoomController.java +src\main\java\geoinfo\admins\chLog\service\impl\DownloadAppServiceImpl.java +src\main\java\geoinfo\admins\chLog\ChInfoController.java +src\main\java\geoinfo\admins\chLog\DownloadAppController.java +src\main\java\geoinfo\admins\notice\NoticeMngController.java src\main\java\geoinfo\admins\user\GeneralUserMngController.java -src\main\webapp\WEB-INF\views\admins\user\00.jsp -src\main\webapp\js\admins\adlogin.js -src\main\webapp\WEB-INF\views\admins\main\index.jsp -src\main\webapp\WEB-INF\views\admins\frame\mainframe.jsp -src\main\resources\geoinfo\sqlmap\mappers\admins\main\Login_SQL.xml -src\main\java\geoinfo\admins\main\service\MainMapper.java -src\main\java\geoinfo\admins\main\service\impl\MainServiceImpl.java -src\main\java\geoinfo\admins\main\service\MainService.java -src\main\java\geoinfo\admins\main\MainController.java \ No newline at end of file +src\main\java\geoinfo\com\file\FileController.java diff --git a/src/main/java/geoinfo/admins/board/CommunityController.java b/src/main/java/geoinfo/admins/board/CommunityController.java index 7f6760c..2acbcda 100644 --- a/src/main/java/geoinfo/admins/board/CommunityController.java +++ b/src/main/java/geoinfo/admins/board/CommunityController.java @@ -33,7 +33,8 @@ import org.springframework.web.multipart.MultipartHttpServletRequest; public class CommunityController { @Resource(name = "communityService") private CommunityService masterService; - private final String savePath = EgovProperties.getProperty("Geoinfo.FilePath"); + private final String savePath = EgovProperties.getProperty("Geoinfo.FilePath.User"); + @RequestMapping(value = "admins/board/12.do") public String board00( @RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { diff --git a/src/main/java/geoinfo/admins/board/GroundReportController.java b/src/main/java/geoinfo/admins/board/GroundReportController.java index dd26ccf..db36ded 100644 --- a/src/main/java/geoinfo/admins/board/GroundReportController.java +++ b/src/main/java/geoinfo/admins/board/GroundReportController.java @@ -41,7 +41,7 @@ public class GroundReportController { private static final Logger LOGGER = Logger.getLogger(RefrncRoomController.class.getName()); // 운영서버 실제 경로 - private final String savePath = EgovProperties.getProperty("Geoinfo.FilePath"); + private final String savePath = EgovProperties.getProperty("Geoinfo.FilePath.User"); //private final String savePath = "C:\\app\\files\\ground_report"; @RequestMapping(value = "admins/greport/13.do") diff --git a/src/main/java/geoinfo/admins/board/RefrncRoomController.java b/src/main/java/geoinfo/admins/board/RefrncRoomController.java index 89c3c65..95735cf 100644 --- a/src/main/java/geoinfo/admins/board/RefrncRoomController.java +++ b/src/main/java/geoinfo/admins/board/RefrncRoomController.java @@ -41,7 +41,7 @@ public class RefrncRoomController { @Resource(name = "refrncRoomService") private RefrncRoomService masterService; - private final String savePath = EgovProperties.getProperty("Geoinfo.FilePath"); + private final String savePath = EgovProperties.getProperty("Geoinfo.FilePath.User"); @RequestMapping(value = "admins/board/01.do") public String board01( @RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { @@ -123,8 +123,34 @@ public class RefrncRoomController { params.put("saveName1", saveName1); params.put("fileName1", fileName1.getOriginalFilename()); + File directory = new File(savePath); + + if (directory.exists() && directory.isDirectory()) { + } else { + System.out.println("\n--------------------------------------------------------------\n" + + request.getRequestURI() + " OUT: 디렉토리가 존재하지 않습니다." + + "\n--------------------------------------------------------------\n" + + "EgovProperties.getProperty(\"Geoinfo.FilePath.User\"):[" + savePath + "]\n" + + "\n--------------------------------------------------------------\n"); + jsonMap.put("FilePath", savePath); + if (directory.mkdirs()) { + System.out.println("디렉토리가 성공적으로 생성되었습니다."); + } else { + // 디렉토리 생성 실패 + if (savePath.startsWith("D:\\")) { + File eDrive = new File("D:\\"); + if (!eDrive.exists()) { + throw new IOException("D: 드라이브가 존재하지 않습니다."); + } else { + throw new IOException("디렉토리 생성에 실패했습니다."); + } + } + throw new IOException("디렉토리 생성에 실패했습니다."); + } + } + File saveFile = new File(savePath, FilenameUtils.getName(saveName1)); - fileName1.transferTo(saveFile); + fileName1.transferTo(saveFile); } if(fileName2.getOriginalFilename().equals("")) { diff --git a/src/main/java/geoinfo/admins/chLog/ChInfoController.java b/src/main/java/geoinfo/admins/chLog/ChInfoController.java index 68ea22f..5befc3b 100644 --- a/src/main/java/geoinfo/admins/chLog/ChInfoController.java +++ b/src/main/java/geoinfo/admins/chLog/ChInfoController.java @@ -24,15 +24,11 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FilenameUtils; import org.apache.log4j.Logger; -import org.apache.poi.hssf.usermodel.HSSFRow; -import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Sheet; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.util.FileCopyUtils; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @@ -43,7 +39,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import egovframework.com.cmm.service.EgovProperties; import egovframework.rte.psl.dataaccess.util.EgovMap; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; -import geoinfo.admins.board.RefrncRoomController; import geoinfo.admins.chLog.service.ChInfoService; import geoinfo.com.EgovExcel; import geoinfo.com.GeoinfoCommon; @@ -72,12 +67,12 @@ public class ChInfoController { @Resource(name = "chInfoService") private ChInfoService masterService; - private static final Logger LOGGER = Logger.getLogger(RefrncRoomController.class.getName()); + private static final Logger LOGGER = Logger.getLogger(ChInfoController.class.getName()); // 운영서버 경로 // private final String savePath = "D:\\Tomcat6\\geoinfoEgov\\webapps\\geoinfo\\files"; // 개발서버 경로 - private final String savePath = EgovProperties.getProperty("Geoinfo.FilePath"); + private final String savePath = EgovProperties.getProperty("Geoinfo.FilePath.User"); /** * 관리자시스템 > 유통/공급 통계분석 > 유통정보 > 날짜별 리스트 @@ -865,113 +860,4 @@ public class ChInfoController { return transposedList; } - @RequestMapping(value = "admins/downloadExcel.do", method = RequestMethod.POST) - public void downloadExcel(@RequestParam HashMap params, HSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception { - - String pId = (String) params.get("pId"); - String resultListJson = (String) params.get("resultList"); - - ObjectMapper mapper = new ObjectMapper(); - List> result = mapper.readValue(resultListJson, new TypeReference>>(){}); - - String fileName = ""; - String sheetName = ""; - - switch (pId) { - case "11": - fileName = "공종별등록정보_"; - sheetName = "공종별등록정보"; - break; - case "12": - fileName = "공정별등록정보_"; - sheetName = "공정별등록정보"; - break; - case "13": - fileName = "시도별등록정보_"; - sheetName = "시도별등록정보"; - break; - case "14": - String sidoCode = (String) params.get("sidoCode"); - switch (sidoCode) { - case "04:": - fileName = "시군구별_서울특별시_"; - sheetName = "시군구별_서울특별시"; - break; - case "05:": - fileName = "시군구별_부산광역시_"; - sheetName = "시군구별_부산광역시"; - break; - case "06:": - fileName = "시군구별_광주광역시_"; - sheetName = "시군구별_광주광역시"; - break; - case "07:": - fileName = "시군구별_대전광역시_"; - sheetName = "시군구별_대전광역시"; - break; - case "08:": - fileName = "시군구별_대구광역시_"; - sheetName = "시군구별_대구광역시"; - break; - case "09:": - fileName = "시군구별_인천광역시_"; - sheetName = "시군구별_인천광역시"; - break; - case "10:": - fileName = "시군구별_울산광역시_"; - sheetName = "시군구별_울산광역시"; - break; - case "11:": - fileName = "시군구별_경기도_"; - sheetName = "시군구별_경기도"; - break; - case "12:": - fileName = "시군구별_강원도_"; - sheetName = "시군구별_강원도"; - break; - case "13:": - fileName = "시군구별_충청북도_"; - sheetName = "시군구별_충청북도"; - break; - case "14:": - fileName = "시군구별_충청남도_"; - sheetName = "시군구별_충청남도"; - break; - case "15:": - fileName = "시군구별_경상북도_"; - sheetName = "시군구별_경상북도"; - break; - case "16:": - fileName = "시군구별_경상남도_"; - sheetName = "시군구별_경상남도"; - break; - case "17:": - fileName = "시군구별_전라북도_"; - sheetName = "시군구별_전라북도"; - break; - case "18:": - fileName = "시군구별_전라남도_"; - sheetName = "시군구별_전라남도"; - break; - case "19:": - fileName = "시군구별_제주특별자치도_"; - sheetName = "시군구별_제주특별자치도"; - break; - case "20:": - fileName = "시군구별_세종특별자치시_"; - sheetName = "시군구별_세종특별자치시"; - break; - } - break; - } - - HashMap map = new HashMap(); - - map.put("selectInfoListExcel", result); - map.put("fileName", fileName); - map.put("sheetName", sheetName); - - buildExcelDocument(map, workbook, request, response); - } - } diff --git a/src/main/java/geoinfo/admins/chLog/DownloadAppController.java b/src/main/java/geoinfo/admins/chLog/DownloadAppController.java index cf8e978..8aba32b 100644 --- a/src/main/java/geoinfo/admins/chLog/DownloadAppController.java +++ b/src/main/java/geoinfo/admins/chLog/DownloadAppController.java @@ -283,7 +283,7 @@ public class DownloadAppController { // 한글 파일이름 깨질 경우 // String docName = new String(GeoinfoCommon.parseData(fileName).getBytes("8859_1"), "utf-8"); //String filePath = "D:\\Tomcat6\\geoinfoEgov\\webapps\\geoinfo\\files"; - String filePath = EgovProperties.getProperty("Geoinfo.FilePath"); + String filePath = EgovProperties.getProperty("Geoinfo.FilePath.User"); OutputStream os = response.getOutputStream(); FileInputStream fis = null; diff --git a/src/main/java/geoinfo/admins/chLog/service/impl/DownloadAppServiceImpl.java b/src/main/java/geoinfo/admins/chLog/service/impl/DownloadAppServiceImpl.java index 7977e89..1bad43a 100644 --- a/src/main/java/geoinfo/admins/chLog/service/impl/DownloadAppServiceImpl.java +++ b/src/main/java/geoinfo/admins/chLog/service/impl/DownloadAppServiceImpl.java @@ -208,7 +208,7 @@ public class DownloadAppServiceImpl implements DownloadAppService { HashMap params, MultipartHttpServletRequest multiRequest) throws Exception{ //String savePath = "D:\\Tomcat6\\geoinfoEgov\\webapps\\geoinfo\\files" - String savePath = EgovProperties.getProperty("Geoinfo.FilePath"); + String savePath = EgovProperties.getProperty("Geoinfo.FilePath.User"); Calendar calendar = Calendar.getInstance(); java.util.Date date = calendar.getTime(); String today = (new SimpleDateFormat("yyyyMMddHHmmss").format(date)); diff --git a/src/main/java/geoinfo/admins/notice/NoticeMngController.java b/src/main/java/geoinfo/admins/notice/NoticeMngController.java index 9643e49..73dbf67 100644 --- a/src/main/java/geoinfo/admins/notice/NoticeMngController.java +++ b/src/main/java/geoinfo/admins/notice/NoticeMngController.java @@ -49,7 +49,7 @@ public class NoticeMngController { @Resource(name = "noticeMngService") private NoticeMngService masterService; - private final String noticeFilePath = EgovProperties.getProperty("Geoinfo.FilePath"); + private final String noticeFilePath = EgovProperties.getProperty("Geoinfo.FilePath.User"); @RequestMapping(value = "admins/notice/00.do") public String selectInfoList(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { diff --git a/src/main/java/geoinfo/admins/user/GeneralUserMngController.java b/src/main/java/geoinfo/admins/user/GeneralUserMngController.java index 967f597..d122fb9 100644 --- a/src/main/java/geoinfo/admins/user/GeneralUserMngController.java +++ b/src/main/java/geoinfo/admins/user/GeneralUserMngController.java @@ -78,7 +78,7 @@ public class GeneralUserMngController { // 운영서버 경로 // private final String savePath = "D:\\Tomcat6\\geoinfoEgov\\webapps\\geoinfo\\files"; // 개발서버 경로 - private final String savePath = EgovProperties.getProperty("Geoinfo.FilePath"); + private final String savePath = EgovProperties.getProperty("Geoinfo.FilePath.User"); @RequestMapping(value = "admins/user/00.do") public String selectInfoList(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { diff --git a/src/main/java/geoinfo/com/file/FileController.java b/src/main/java/geoinfo/com/file/FileController.java index 4261cf2..3d8b248 100644 --- a/src/main/java/geoinfo/com/file/FileController.java +++ b/src/main/java/geoinfo/com/file/FileController.java @@ -31,7 +31,7 @@ public class FileController @Resource(name = "fileService") private FileService fileService; - public String filePath = EgovProperties.getProperty("Geoinfo.FilePath"); + public String filePath = EgovProperties.getProperty("Geoinfo.FilePath.User"); // 파일 다운로드 @RequestMapping(value = "file.do") diff --git a/src/main/java/geoinfo/util/RsWrapper.java b/src/main/java/geoinfo/util/RsWrapper.java index ba5fc61..c6ae8ed 100644 --- a/src/main/java/geoinfo/util/RsWrapper.java +++ b/src/main/java/geoinfo/util/RsWrapper.java @@ -20,7 +20,6 @@ import javax.servlet.http.HttpServletRequest; import org.jfree.util.Log; import org.slf4j.LoggerFactory; -import com.extentech.toolkit.Logger; public class RsWrapper implements java.io.Serializable { diff --git a/src/main/resources/config/context-common.xml b/src/main/resources/config/context-common.xml index e0c6447..5926547 100644 --- a/src/main/resources/config/context-common.xml +++ b/src/main/resources/config/context-common.xml @@ -72,12 +72,12 @@ - + diff --git a/src/main/resources/egovframework/egovProps/globals.properties b/src/main/resources/egovframework/egovProps/globals.properties index 217e0b7..fac45cb 100644 --- a/src/main/resources/egovframework/egovProps/globals.properties +++ b/src/main/resources/egovframework/egovProps/globals.properties @@ -13,7 +13,7 @@ Oracle.Driver=oracle.jdbc.driver.OracleDriver #Oracle.Url=jdbc:oracle:thin:@192.168.0.29:1521:xe #Oracle.Url=jdbc:oracle:thin:@192.168.0.8:3452:orcl -Oracle.Url=jdbc:oracle:thin:@118.219.150.34:1521:ORAGEODEV +Oracle.Url=jdbc:oracle:thin:@10.dbnt.co.kr:1521:ORAGEODEV # \uc2e4\uc11c\ubc84 -> 218.232.234.200:1521:orageodev #Oracle.Url=jdbc:oracle:thin:@218.232.234.200:1521:orageodev #Oracle.Url=jdbc:oracle:thin:@localhost:1521:xe @@ -28,5 +28,8 @@ Oracle.Password=geoinfo ################### \ud30c\uc77c\uad00\ub828 ################### ############################################### -Geoinfo.FilePath=D:\\app_geoinfo\\app\\eclipse\\workspace\\geoinfo_admin\\src\\main\\webapp\\files\\ -#Geoinfo.FilePath=D:\\gitaey\\geoinfo_eGov\\workspace\\geoinfo_eGov\\src\\main\\webapp\\files\\ \ No newline at end of file +#Geoinfo.FilePath=D:\\app_geoinfo\\app\\eclipse\\workspace\\geoinfo_admin\\src\\main\\webapp\\files\\ +#Geoinfo.FilePath=D:\\gitaey\\geoinfo_eGov\\workspace\\geoinfo_eGov\\src\\main\\webapp\\files\\ +Geoinfo.FilePath=C:\\geoinfo_admin_files\\ +Geoinfo.FilePath.Admin=C:\\geoinfo_files_admin\\ +Geoinfo.FilePath.User=C:\\geoinfo_files_user\\ \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/context-common.xml b/src/main/resources/egovframework/spring/context-common.xml index 68fdfcb..d5f583c 100644 --- a/src/main/resources/egovframework/spring/context-common.xml +++ b/src/main/resources/egovframework/spring/context-common.xml @@ -74,12 +74,12 @@ - + - + diff --git a/src/main/webapp/WEB-INF/lib/ICERTSecu_JDK17.jar b/src/main/webapp/WEB-INF/lib/ICERTSecu_JDK17.jar new file mode 100644 index 0000000000000000000000000000000000000000..c74e61420f830738782208184b95feab8bf680da GIT binary patch literal 28945 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

o$hTqFV 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