From 78f3ef9304dea886ab599bb2e5f3d3fa93b7c4cd Mon Sep 17 00:00:00 2001 From: thkim Date: Wed, 11 Mar 2026 13:21:48 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B3=84=EC=B8=A1=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=20=EC=A7=80=ED=91=9C=EC=B9=A8=ED=95=98=ED=8C=90=20=EB=B6=80?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EB=8B=A8=EC=9C=84=20=EB=A1=9C=EB=94=A9=20?= =?UTF-8?q?=EC=95=88=20=EB=90=98=EB=8A=94=20=EB=B2=84=EA=B7=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EA=B1=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- list.txt | 5 +- .../java/sgis/adm/web/AdmMainController.java | 30 ++- .../impl/AppInstrumentServiceImpl.java | 1 + .../java/sgis/app/web/AppBasicController.java | 114 ++++++---- .../java/sgis/app/web/AppGpController.java | 18 +- .../sgis/app/web/AppInstrumentController.java | 205 +++++++++++------- .../java/sgis/app/web/AppLineController.java | 12 +- .../java/sgis/app/web/AppRockController.java | 90 +++++--- .../sgis/app/web/AppSGPlanController.java | 12 +- .../java/sgis/app/web/AppSandController.java | 78 ++++--- .../sgis/app/web/AppSoftGroundController.java | 6 +- src/main/java/sgis/com/util/ExcelUtil.java | 12 +- .../java/sgis/map/web/MapMainController.java | 119 +++++++--- .../constInfo/popup/includeSurSetSubInfo.jsp | 6 +- .../jsp/tiles/attribute/app.submenu.jsp | 7 + src/main/webapp/com/js/main.map.js | 23 +- src/main/webapp/com/js/map.js | 4 +- .../sgis/adm/web/AdmMainController.class | Bin 9819 -> 9849 bytes .../sgis/app/web/AppBasicController.class | Bin 56960 -> 57613 bytes .../sgis/app/web/AppGpController.class | Bin 16585 -> 16926 bytes .../app/web/AppInstrumentController.class | Bin 43564 -> 44315 bytes .../sgis/app/web/AppLineController.class | Bin 10500 -> 10823 bytes .../sgis/app/web/AppRockController.class | Bin 48013 -> 48617 bytes .../sgis/app/web/AppSGPlanController.class | Bin 7546 -> 7869 bytes .../sgis/app/web/AppSandController.class | Bin 58537 -> 59036 bytes .../app/web/AppSoftGroundController.class | Bin 9319 -> 9627 bytes target/classes/sgis/com/util/ExcelUtil.class | Bin 72688 -> 72986 bytes .../sgis/map/web/MapMainController.class | Bin 17794 -> 19589 bytes 28 files changed, 498 insertions(+), 244 deletions(-) diff --git a/list.txt b/list.txt index fea6fc9..e5288ab 100644 --- a/list.txt +++ b/list.txt @@ -1,2 +1,3 @@ -src\main\resources\egovframework\mapper\sgis\app\AppMainMapper.xml -src\main\webapp\WEB-INF\jsp\sgis\popup\cordinateSaupMap.jsp \ No newline at end of file +src\main\webapp\com\js\main.map.js +src\main\webapp\WEB-INF\jsp\tiles\attribute\app.submenu.jsp +src\main\webapp\WEB-INF\jsp\sgis\app\constInfo\popup\includeSurSetSubInfo.jsp \ No newline at end of file diff --git a/src/main/java/sgis/adm/web/AdmMainController.java b/src/main/java/sgis/adm/web/AdmMainController.java index 5c7c13f..7ff7eec 100644 --- a/src/main/java/sgis/adm/web/AdmMainController.java +++ b/src/main/java/sgis/adm/web/AdmMainController.java @@ -107,7 +107,7 @@ public class AdmMainController extends BaseController { //비밀번호초기화 @RequestMapping(value="/app/adm/pwInit.do") @ResponseBody - public String pwInit(@RequestParam HashMap param, ModelMap model,HttpServletRequest request, HttpServletResponse response, Member m) throws Exception{ + public JSONObject pwInit(@RequestParam HashMap param, ModelMap model,HttpServletRequest request, HttpServletResponse response, Member m) throws Exception{ String initPw = ""; String retStr = ""; @@ -133,13 +133,15 @@ public class AdmMainController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //관리자 회원가입 @RequestMapping(value="/app/adm/newAdmInsert.do") @ResponseBody - public String newAdmInsert(@RequestParam HashMap param, ModelMap model,HttpServletRequest request, HttpServletResponse response, Member m) throws Exception{ + public JSONObject newAdmInsert(@RequestParam HashMap param, ModelMap model,HttpServletRequest request, HttpServletResponse response, Member m) throws Exception{ String retStr = ""; @@ -161,13 +163,15 @@ public class AdmMainController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //관리자 회원정보 수정 @RequestMapping(value="/app/adm/updateUser.do") @ResponseBody - public String updateUser(@RequestParam HashMap param, ModelMap model,HttpServletRequest request, HttpServletResponse response, Member m) throws Exception{ + public JSONObject updateUser(@RequestParam HashMap param, ModelMap model,HttpServletRequest request, HttpServletResponse response, Member m) throws Exception{ String retStr = ""; @@ -188,13 +192,15 @@ public class AdmMainController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //관리자 회원정보 삭제 @RequestMapping(value="/app/adm/deleteUser.do") @ResponseBody - public String deleteUser(@RequestParam HashMap param, ModelMap model,HttpServletRequest request, HttpServletResponse response, Member m) throws Exception{ + public JSONObject deleteUser(@RequestParam HashMap param, ModelMap model,HttpServletRequest request, HttpServletResponse response, Member m) throws Exception{ String retStr = ""; @@ -215,7 +221,9 @@ public class AdmMainController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @RequestMapping(value="/app/adm/deleteListUser.do", method=RequestMethod.POST) @@ -252,7 +260,7 @@ public class AdmMainController extends BaseController { //관리자 회원정보 삭제 @RequestMapping(value="/app/adm/deleteListUser.do") @ResponseBody - public String deleteListUser(@RequestParam HashMap param, ModelMap model,HttpServletRequest request, HttpServletResponse response, Member m) throws Exception{ + public JSONObject deleteListUser(@RequestParam HashMap param, ModelMap model,HttpServletRequest request, HttpServletResponse response, Member m) throws Exception{ String retStr = ""; @@ -273,6 +281,8 @@ public class AdmMainController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; } \ No newline at end of file diff --git a/src/main/java/sgis/app/service/impl/AppInstrumentServiceImpl.java b/src/main/java/sgis/app/service/impl/AppInstrumentServiceImpl.java index f16d357..354e574 100644 --- a/src/main/java/sgis/app/service/impl/AppInstrumentServiceImpl.java +++ b/src/main/java/sgis/app/service/impl/AppInstrumentServiceImpl.java @@ -422,6 +422,7 @@ public class AppInstrumentServiceImpl implements AppInstrumentService{ List unitCodeList = ComCodeMapper.selectComCodeList(codeVO); List> listMap = (List>) unitCodeList; for(int k=0; k < unitCodeList.size(); k++) { + //단위를 설정한다. 단위는 우측 쿼리 참고 요망: select cc2.* from COMTB_CODE02 cc2 where cc2.cd_grp = 'unit_code' and cc2.code_val = '11'; if(StringUtil.nullToBlank((String)params.get("mUnit")).equals(listMap.get(k).get("label"))) { params.put("mUnit", (String) listMap.get(k).get("code")); } diff --git a/src/main/java/sgis/app/web/AppBasicController.java b/src/main/java/sgis/app/web/AppBasicController.java index dc677dd..00016c7 100644 --- a/src/main/java/sgis/app/web/AppBasicController.java +++ b/src/main/java/sgis/app/web/AppBasicController.java @@ -233,7 +233,7 @@ public class AppBasicController extends BaseController { //표준관입시험 정보 저장 @RequestMapping(value="/app/basic/insertSptInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertSptInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertSptInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -282,7 +282,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //사업 기본현장 시험정보(TCR/RQD) @@ -316,7 +318,7 @@ public class AppBasicController extends BaseController { // TCR/RQD 시험 정보 저장 @RequestMapping(value="/app/basic/insertTcrrqdInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertTcrrqdInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertTcrrqdInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -364,7 +366,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //사업 기본현장 시험정보(DSF) @@ -398,7 +402,7 @@ public class AppBasicController extends BaseController { // TCR/RQD 시험 정보 저장 @RequestMapping(value="/app/basic/insertDsfInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertDsfInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertDsfInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -445,7 +449,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //사업 기본현장 시험정보(공내재하) @@ -489,7 +495,7 @@ public class AppBasicController extends BaseController { // 공내재하시험 정보 저장 @RequestMapping(value="/app/basic/insertFieldPressuremeterInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertFieldPressuremeterInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertFieldPressuremeterInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -542,7 +548,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //사업 기본현장 시험정보(공내재하) @@ -576,7 +584,7 @@ public class AppBasicController extends BaseController { // 절리정보시험 정보 저장 @RequestMapping(value="/app/basic/insertSlickensideInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertSlickensideInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertSlickensideInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -627,7 +635,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //사업 기본현장 시험정보(Q) @@ -662,7 +672,7 @@ public class AppBasicController extends BaseController { // Q시험 정보 저장 @RequestMapping(value="/app/basic/insertQInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertQInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertQInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -717,7 +727,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //사업 기본현장 시험정보(RMR) @@ -752,7 +764,7 @@ public class AppBasicController extends BaseController { //RMR 시험 정보 저장 @RequestMapping(value="/app/basic/insertRmrInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertRmrInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertRmrInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -813,7 +825,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //사업 기본현장 시험정보(현장수압시험) @@ -848,7 +862,7 @@ public class AppBasicController extends BaseController { // 현장수압시험 주정보 저장 @RequestMapping(value="/app/basic/insertFieldWaterPressureInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertFieldWaterPressureInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertFieldWaterPressureInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -906,13 +920,15 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; // 현장수압시험 주정보 삭제 @RequestMapping(value="/app/basic/deleteFieldWaterPressureInfo.do", method=RequestMethod.POST) @ResponseBody - public String deleteFieldWaterPressureInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deleteFieldWaterPressureInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -982,13 +998,15 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; // 현장수압시험 주정보 저장여부 @RequestMapping(value="/app/basic/confirmWpInfo.do", method=RequestMethod.POST) @ResponseBody - public String confirmWpInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject confirmWpInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1004,7 +1022,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; // 현장수압시험 부정보 @@ -1054,7 +1074,7 @@ public class AppBasicController extends BaseController { // 현장수압시험 부정보 저장 @RequestMapping(value="/app/basic/insertFieldWpSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertFieldWpSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertFieldWpSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1104,7 +1124,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //사업 기본현장 시험정보(현장투수시험) @@ -1139,7 +1161,7 @@ public class AppBasicController extends BaseController { // 현장투수시험 주정보 저장 @RequestMapping(value="/app/basic/insertFieldPermeablityInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertFieldPermeablityInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertFieldPermeablityInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1191,13 +1213,15 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; // 현장투수시험 주정보 삭제 @RequestMapping(value="/app/basic/deleteFieldPermeablityInfo.do", method=RequestMethod.POST) @ResponseBody - public String deleteFieldPermeablityInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deleteFieldPermeablityInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1265,13 +1289,15 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; // 현장투수시험 주정보 저장여부 @RequestMapping(value="/app/basic/confirmPreInfo.do", method=RequestMethod.POST) @ResponseBody - public String confirmPreInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject confirmPreInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1287,7 +1313,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; // 현장투수시험 부정보 @@ -1337,7 +1365,7 @@ public class AppBasicController extends BaseController { // 현장투수시험 부정보 저장 @RequestMapping(value="/app/basic/insertFieldPerSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertFieldPerSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertFieldPerSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1375,7 +1403,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //사업 기본현장 시험정보(콘관입시험) @@ -1411,7 +1441,7 @@ public class AppBasicController extends BaseController { // 콘관입시험 주정보 저장 @RequestMapping(value="/app/basic/insertFieldConePenetrationInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertFieldConePenetrationInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertFieldConePenetrationInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1484,13 +1514,15 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; // 콘관입시험 주정보 삭제 @RequestMapping(value="/app/basic/deleteFieldConePenetrationInfo.do", method=RequestMethod.POST) @ResponseBody - public String deleteFieldConePenetrationInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deleteFieldConePenetrationInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1536,7 +1568,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //사업 기본현장 시험정보(베인시험) @@ -1572,7 +1606,7 @@ public class AppBasicController extends BaseController { // 베인시험 정보 저장 @RequestMapping(value="/app/basic/insertFieldVaneInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertFieldVaneInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertFieldVaneInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1626,7 +1660,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //사업 기본현장 시험정보(간극수압소산 시험) @@ -1662,7 +1698,7 @@ public class AppBasicController extends BaseController { // 간극수압소산시험 정보 저장 @RequestMapping(value="/app/basic/insertFieldPoreWaterPressureInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertFieldPoreWaterPressureInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertFieldPoreWaterPressureInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1706,7 +1742,9 @@ public class AppBasicController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; } diff --git a/src/main/java/sgis/app/web/AppGpController.java b/src/main/java/sgis/app/web/AppGpController.java index 9d7984d..961203e 100644 --- a/src/main/java/sgis/app/web/AppGpController.java +++ b/src/main/java/sgis/app/web/AppGpController.java @@ -97,7 +97,7 @@ public class AppGpController extends BaseController { //물리검층_PS검층 저장 @RequestMapping(value="/app/gpInfo/insertBoreholeWaveInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertBoreholeWaveInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertBoreholeWaveInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -168,7 +168,9 @@ public class AppGpController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //물리검층_하향식탄성파 @@ -211,7 +213,7 @@ public class AppGpController extends BaseController { //물리검층_하향식탄성파 저장 @RequestMapping(value="/app/gpInfo/insertDownholeInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertDownholeInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertDownholeInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -282,7 +284,9 @@ public class AppGpController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //물리검층_밀도검층 @@ -327,7 +331,7 @@ public class AppGpController extends BaseController { //물리검층_밀도검층 저장 @RequestMapping(value="/app/gpInfo/insertDensityInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertDensityInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertDensityInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -389,6 +393,8 @@ public class AppGpController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; } diff --git a/src/main/java/sgis/app/web/AppInstrumentController.java b/src/main/java/sgis/app/web/AppInstrumentController.java index b383151..077c634 100644 --- a/src/main/java/sgis/app/web/AppInstrumentController.java +++ b/src/main/java/sgis/app/web/AppInstrumentController.java @@ -176,53 +176,55 @@ public class AppInstrumentController extends BaseController{ response.getWriter().print(json); }; - //계측정보 저장 - @RequestMapping(value="/app/const/insertSurSetInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertSurSetInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ +//계측정보 저장 +@RequestMapping(value="/app/const/insertSurSetInfo.do", method=RequestMethod.POST) +public @ResponseBody JSONObject insertSurSetInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ - String retStr = ""; + String retStr = ""; - try { - SessionVO sessionVO = getSessionInfo(); - String sysRegId = sessionVO.getsUserId(); //사용자 ID - int cnt = Integer.parseInt((String)params.get("itemCnt")); + try { + SessionVO sessionVO = getSessionInfo(); + String sysRegId = sessionVO.getsUserId(); //사용자 ID + int cnt = Integer.parseInt((String)params.get("itemCnt")); - EgovMap saupDetailInfo = AppMainService.selectAppSaupDetail(params); + EgovMap saupDetailInfo = AppMainService.selectAppSaupDetail(params); - //기존데이터 삭제 - AppInstrumentService.deleteSurSetInfo(params); + //기존데이터 삭제 + AppInstrumentService.deleteSurSetInfo(params); - for(int i=0;i insertMap = new HashMap(); - // data정보 - insertMap.put("businessName", saupDetailInfo.get("businessName")); - insertMap.put("businessCode", params.get("businessCode")); - insertMap.put("surSetCode", params.get("surSetCode_"+ i)); - insertMap.put("zoneCode", params.get("zoneCode_" + i )); - insertMap.put("epsgCodeType", params.get("epsgCodeType_"+i)); - insertMap.put("pointX", Float.valueOf((String)params.get("pointX_"+i))); - insertMap.put("pointY", Float.valueOf((String)params.get("pointY_"+i))); - insertMap.put("sysRegId", sysRegId); - insertMap.put("consCode", params.get("consCode_"+i)); - AppInstrumentService.insertSurSetInfo(insertMap); - } + HashMap insertMap = new HashMap(); + // data정보 + insertMap.put("businessName", saupDetailInfo.get("businessName")); + insertMap.put("businessCode", params.get("businessCode")); + insertMap.put("surSetCode", params.get("surSetCode_"+ i)); + insertMap.put("zoneCode", params.get("zoneCode_" + i )); + insertMap.put("epsgCodeType", params.get("epsgCodeType_"+i)); + insertMap.put("pointX", Float.valueOf((String)params.get("pointX_"+i))); + insertMap.put("pointY", Float.valueOf((String)params.get("pointY_"+i))); + insertMap.put("sysRegId", sysRegId); + insertMap.put("consCode", params.get("consCode_"+i)); + AppInstrumentService.insertSurSetInfo(insertMap); + } - retStr = "success"; + retStr = "success"; - }catch (Exception e) { - // TODO: handle exception - retStr = "fail"; - } + }catch (Exception e) { + // TODO: handle exception + retStr = "fail"; + } - return "{\"result\":\""+retStr+"\"}"; - }; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; +}; @RequestMapping(value="/app/const/deleteSurSetInfo.do", method=RequestMethod.POST) @ResponseBody - public String deleteSurSetInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deleteSurSetInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -264,13 +266,15 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; // 지표침하판 주정보 저장여부 @RequestMapping(value="/app/const/confirmSurSetInfo.do", method=RequestMethod.POST) @ResponseBody - public String confirmSurSetInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject confirmSurSetInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; try { @@ -287,7 +291,10 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; + }; //지표침하판 부정보 @@ -321,7 +328,7 @@ public class AppInstrumentController extends BaseController{ //지표침하판 부정보 저장 @RequestMapping(value="/app/const/insertSurSetSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertSurSetSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertSurSetSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -376,7 +383,9 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @RequestMapping(value="/app/const/selectsurPinInfo.do") @@ -410,7 +419,7 @@ public class AppInstrumentController extends BaseController{ //계측정보 저장 @RequestMapping(value="/app/const/insertSurPinInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertSurPinInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertSurPinInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -449,12 +458,14 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @RequestMapping(value="/app/const/deleteSurPinInfo.do", method=RequestMethod.POST) @ResponseBody - public String deleteSurPinInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deleteSurPinInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -502,13 +513,15 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; // 지표침하핀 주정보 저장여부 @RequestMapping(value="/app/const/confirmSurPinInfo.do", method=RequestMethod.POST) @ResponseBody - public String confirmSurPinInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject confirmSurPinInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ model.put("params", params); @@ -527,7 +540,9 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //지표침하핀 부정보 @@ -560,7 +575,7 @@ public class AppInstrumentController extends BaseController{ //지표침하핀 부정보 저장 @RequestMapping(value="/app/const/insertSurPinSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertSurPinSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertSurPinSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -610,7 +625,9 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @RequestMapping(value="/app/const/selectverIncInfo.do") @@ -643,7 +660,7 @@ public class AppInstrumentController extends BaseController{ //계측정보 저장 @RequestMapping(value="/app/const/insertVerIncInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertVerIncInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertVerIncInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -685,12 +702,14 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @RequestMapping(value="/app/const/deleteVerIncInfo.do", method=RequestMethod.POST) @ResponseBody - public String deleteVerIncInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deleteVerIncInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -740,13 +759,15 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; // 지중경사계 주정보 저장여부 @RequestMapping(value="/app/const/confirmVerIncInfo.do", method=RequestMethod.POST) @ResponseBody - public String confirmVerIncInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject confirmVerIncInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ model.put("params", params); @@ -765,7 +786,9 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //지중경사계 부정보 @@ -798,7 +821,7 @@ public class AppInstrumentController extends BaseController{ //지중경사계 부정보 저장 @RequestMapping(value="/app/const/insertVerIncSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertVerIncSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertVerIncSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -831,7 +854,9 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @@ -865,7 +890,7 @@ public class AppInstrumentController extends BaseController{ //계측정보 저장 @RequestMapping(value="/app/const/insertSetExtInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertSetExtInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertSetExtInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -905,12 +930,14 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @RequestMapping(value="/app/const/deleteSetExtInfo.do", method=RequestMethod.POST) @ResponseBody - public String deleteSetExtInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deleteSetExtInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -958,13 +985,15 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //층별침하계 주정보 저장여부 @RequestMapping(value="/app/const/confirmSetExtInfo.do", method=RequestMethod.POST) @ResponseBody - public String confirmSetExtInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject confirmSetExtInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ model.put("params", params); @@ -983,7 +1012,9 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //층별침하계 부정보 @@ -1017,7 +1048,7 @@ public class AppInstrumentController extends BaseController{ //층별침하계 부정보 저장 @RequestMapping(value="/app/const/insertSetExtSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertSetExtSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertSetExtSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1061,7 +1092,9 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @RequestMapping(value="/app/const/selectwatPreInfo.do") @@ -1094,7 +1127,7 @@ public class AppInstrumentController extends BaseController{ //계측정보 저장 @RequestMapping(value="/app/const/insertWatPreInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertwatPreInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertwatPreInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1135,12 +1168,14 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @RequestMapping(value="/app/const/deleteWatPreInfo.do", method=RequestMethod.POST) @ResponseBody - public String deleteWatPreInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deleteWatPreInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1189,13 +1224,15 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //층별침하계 주정보 저장여부 @RequestMapping(value="/app/const/confirmWatPreInfo.do", method=RequestMethod.POST) @ResponseBody - public String confirmWatPreInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject confirmWatPreInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ model.put("params", params); @@ -1214,7 +1251,9 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //간극수압계 부정보 @@ -1248,7 +1287,7 @@ public class AppInstrumentController extends BaseController{ //간극수압계 부정보 저장 @RequestMapping(value="/app/const/insertWatPreSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertWatPreSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertWatPreSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1286,7 +1325,9 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @RequestMapping(value="/app/const/selectwatLevInfo.do") @@ -1319,7 +1360,7 @@ public class AppInstrumentController extends BaseController{ //계측정보 저장 @RequestMapping(value="/app/const/insertWatLevInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertwatLevInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertwatLevInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1360,12 +1401,14 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @RequestMapping(value="/app/const/deleteWatLevInfo.do", method=RequestMethod.POST) @ResponseBody - public String deleteWatLevInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deleteWatLevInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1414,13 +1457,15 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //층별침하계 주정보 저장여부 @RequestMapping(value="/app/const/confirmWatLevInfo.do", method=RequestMethod.POST) @ResponseBody - public String confirmWatLevInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject confirmWatLevInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ model.put("params", params); @@ -1439,7 +1484,9 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //층별침하계 부정보 @@ -1473,7 +1520,7 @@ public class AppInstrumentController extends BaseController{ //지하수위계 부정보 저장 @RequestMapping(value="/app/const/insertWatLevSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertWatLevSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertWatLevSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1508,7 +1555,9 @@ public class AppInstrumentController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; diff --git a/src/main/java/sgis/app/web/AppLineController.java b/src/main/java/sgis/app/web/AppLineController.java index 97cd146..dcb9865 100644 --- a/src/main/java/sgis/app/web/AppLineController.java +++ b/src/main/java/sgis/app/web/AppLineController.java @@ -147,7 +147,7 @@ public class AppLineController extends BaseController { //지표물리탐사_전기비저항탐사 저장 @RequestMapping(value="/app/line/insertResistivityInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertResistivityInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertResistivityInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -202,7 +202,9 @@ public class AppLineController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //지표물리탐사_굴절법탄성파 @@ -256,7 +258,7 @@ public class AppLineController extends BaseController { //지표물리탐사_굴절법탄성파 저장 @RequestMapping(value="/app/line/insertRefractionInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertRefractionInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertRefractionInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -311,6 +313,8 @@ public class AppLineController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; } diff --git a/src/main/java/sgis/app/web/AppRockController.java b/src/main/java/sgis/app/web/AppRockController.java index db4929c..ac97570 100644 --- a/src/main/java/sgis/app/web/AppRockController.java +++ b/src/main/java/sgis/app/web/AppRockController.java @@ -86,7 +86,7 @@ public class AppRockController extends BaseController { //샘플정보 입력 시 샘플정보 생성 @RequestMapping(value="/app/rock/insertRockUniaxialSampleInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertRockUniaxialSampleInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertRockUniaxialSampleInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; SessionVO sessionVO = getSessionInfo(); @@ -137,7 +137,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //일축압축시험 데이터 호출 @@ -167,7 +169,7 @@ public class AppRockController extends BaseController { //입도분석 정보 저장 @RequestMapping(value="/app/rock/insertRockUniaxialInfoInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertRockUniaxialInfoInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertRockUniaxialInfoInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -230,7 +232,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //암석_삼축압축 @@ -258,7 +262,7 @@ public class AppRockController extends BaseController { //샘플정보 입력 시 샘플정보 생성 @RequestMapping(value="/app/rock/insertRockTriaxialSampleInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertRockTriaxialSampleInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertRockTriaxialSampleInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -317,7 +321,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //삼축압축시험 데이터 호출 @@ -347,7 +353,7 @@ public class AppRockController extends BaseController { //삼축압축시험 정보 저장 @RequestMapping(value="/app/rock/insertRockTriaxialInfoInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertRockTriaxialInfoInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertRockTriaxialInfoInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -442,7 +448,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //암석_점하중 @@ -470,7 +478,7 @@ public class AppRockController extends BaseController { //샘플정보 입력 시 샘플정보 생성 @RequestMapping(value="/app/rock/insertRockPointloadSampleInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertRockPointloadSampleInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertRockPointloadSampleInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -518,7 +526,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //점하중시험 데이터 호출 @@ -548,7 +558,7 @@ public class AppRockController extends BaseController { //점하중시험 정보 저장 @RequestMapping(value="/app/rock/insertRockPointloadInfoInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertRockPointloadInfoInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertRockPointloadInfoInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -611,7 +621,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //암석_절리면전단 @@ -639,7 +651,7 @@ public class AppRockController extends BaseController { //샘플정보 입력 시 샘플정보 생성 @RequestMapping(value="/app/rock/insertRockJointshearSampleInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertRockJointshearSampleInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertRockJointshearSampleInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -689,7 +701,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //절리면전단시험 데이터 호출 @@ -719,7 +733,7 @@ public class AppRockController extends BaseController { //절리면전단시험 정보 저장 @RequestMapping(value="/app/rock/insertRockJointshearInfoInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertRockJointshearInfoInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertRockJointshearInfoInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -791,13 +805,15 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //암석 주정보 저장여부 @RequestMapping(value="/app/rock/confirmInfo.do", method=RequestMethod.POST) @ResponseBody - public String confirmInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject confirmInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -820,7 +836,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //암석_공진주 @@ -855,7 +873,7 @@ public class AppRockController extends BaseController { //암석_공진주 주정보 저장 @RequestMapping(value="/app/rock/insertRockResonantUsualInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertRockResonantUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertRockResonantUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -919,13 +937,15 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //암석_공진주 주정보 삭제 @RequestMapping(value="/app/rock/deleteRockResonantUsualInfo.do", method=RequestMethod.POST) @ResponseBody - public String deleteRockResonantUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deleteRockResonantUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -991,7 +1011,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //암석_공진주 부정보 @@ -1050,7 +1072,7 @@ public class AppRockController extends BaseController { //암석_공진주 시험정보_부정보 저장 @RequestMapping(value="/app/rock/insertResonantUsualSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertResonantUsualSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertResonantUsualSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1097,7 +1119,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @@ -1133,7 +1157,7 @@ public class AppRockController extends BaseController { //암석_반복삼축 주정보 저장 @RequestMapping(value="/app/rock/insertRockRepeatedTriaxialUsualInfo.do", method=RequestMethod.POST) @ResponseBody - public String insertRockRepeatedTriaxialUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertRockRepeatedTriaxialUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1193,13 +1217,15 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //암석_반복삼축 주정보 삭제 @RequestMapping(value="/app/rock/deleteRockRepeatedTriaxialUsualInfo.do", method=RequestMethod.POST) @ResponseBody - public String deleteRockRepeatedTriaxialUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deleteRockRepeatedTriaxialUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1267,7 +1293,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //암석_반복삼축 부정보 @@ -1327,7 +1355,7 @@ public class AppRockController extends BaseController { //암석_반복삼축 시험정보_부정보 저장 @RequestMapping(value="/app/rock/insertRepeatedTriaxialUsualSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertRepeatedTriaxialUsualSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertRepeatedTriaxialUsualSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1363,7 +1391,9 @@ public class AppRockController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; } diff --git a/src/main/java/sgis/app/web/AppSGPlanController.java b/src/main/java/sgis/app/web/AppSGPlanController.java index f1093c5..a018e8d 100644 --- a/src/main/java/sgis/app/web/AppSGPlanController.java +++ b/src/main/java/sgis/app/web/AppSGPlanController.java @@ -96,7 +96,7 @@ public class AppSGPlanController extends BaseController{ //성토 정보 저장 @RequestMapping(value="/app/const/insertSgImpPlanInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertPbdLawInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertPbdLawInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; try { @@ -134,12 +134,14 @@ public class AppSGPlanController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; @RequestMapping(value="/app/const/deleteSgImpPlanInfo.do", method=RequestMethod.POST) @ResponseBody - public String deletePbdLawInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject deletePbdLawInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -174,7 +176,9 @@ public class AppSGPlanController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; } \ No newline at end of file diff --git a/src/main/java/sgis/app/web/AppSandController.java b/src/main/java/sgis/app/web/AppSandController.java index cf94a5f..289b366 100644 --- a/src/main/java/sgis/app/web/AppSandController.java +++ b/src/main/java/sgis/app/web/AppSandController.java @@ -140,7 +140,7 @@ public class AppSandController extends BaseController { //입도분석 정보 저장 @RequestMapping(value="/app/sand/insertClasInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertClasInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertClasInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -202,7 +202,9 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //CBR @@ -288,7 +290,7 @@ public class AppSandController extends BaseController { //CBR 정보 저장 @RequestMapping(value="/app/sand/insertCbrInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertCbrInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertCbrInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -354,7 +356,9 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //압밀시험 @@ -434,7 +438,7 @@ public class AppSandController extends BaseController { //압밀시험 정보 저장 @RequestMapping(value="/app/sand/insertConsolidationInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertConsolidationInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertConsolidationInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -502,7 +506,9 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //압밀시험 부정보 @@ -540,7 +546,7 @@ public class AppSandController extends BaseController { //압밀시험 부정보 저장 @RequestMapping(value="/app/sand/insertConsolidationSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertConsolidationSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertConsolidationSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -607,7 +613,9 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //일축압축 @@ -691,7 +699,7 @@ public class AppSandController extends BaseController { //일축압축 정보 저장 @RequestMapping(value="/app/sand/insertUnconfinedUsualInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertUnconfinedUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertUnconfinedUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -770,7 +778,9 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //삼축압축 @@ -847,7 +857,7 @@ public class AppSandController extends BaseController { //삼축압축 정보 저장 @RequestMapping(value="/app/sand/insertTriaxialUsualInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertTriaxialUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertTriaxialUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -900,7 +910,9 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //삼축압축 CU부정보 @@ -949,7 +961,7 @@ public class AppSandController extends BaseController { //삼축압축 부정보 저장 @RequestMapping(value="/app/sand/insertTriaxialUsualSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertTriaxialUsualSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertTriaxialUsualSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1038,7 +1050,9 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //공진주 @@ -1084,7 +1098,7 @@ public class AppSandController extends BaseController { //공진주 정보 저장 @RequestMapping(value="/app/sand/insertResonantUsualInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertResonantUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertResonantUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1145,13 +1159,15 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; // 공진주 주정보 저장여부 @RequestMapping(value="/app/sand/confirmResoInfo.do", method=RequestMethod.POST) @ResponseBody - public String confirmResoInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject confirmResoInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1168,7 +1184,9 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //공진주 부정보 @@ -1208,7 +1226,7 @@ public class AppSandController extends BaseController { //공진주 부정보 저장 @RequestMapping(value="/app/sand/insertResonantUsualSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertResonantUsualSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertResonantUsualSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1257,7 +1275,9 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //반복삼축 @@ -1303,7 +1323,7 @@ public class AppSandController extends BaseController { //반복삼축 정보 저장 @RequestMapping(value="/app/sand/insertRepeatedTriaxialUsualInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertRepeatedTriaxialUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertRepeatedTriaxialUsualInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1365,13 +1385,15 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //반복삼축 주정보 저장여부 @RequestMapping(value="/app/sand/confirmRtriInfo.do", method=RequestMethod.POST) @ResponseBody - public String confirmRtriInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject confirmRtriInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1388,7 +1410,9 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; //반복삼축 부정보 @@ -1421,7 +1445,7 @@ public class AppSandController extends BaseController { //반복삼축 부정보 저장 @RequestMapping(value="/app/sand/insertRepeatedTriaxialUsualSubInfo.do", produces="application/json;charset=utf-8") @ResponseBody - public String insertRepeatedTriaxialUsualSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public JSONObject insertRepeatedTriaxialUsualSubInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; @@ -1454,7 +1478,9 @@ public class AppSandController extends BaseController { retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; } diff --git a/src/main/java/sgis/app/web/AppSoftGroundController.java b/src/main/java/sgis/app/web/AppSoftGroundController.java index f5423d7..cf1f205 100644 --- a/src/main/java/sgis/app/web/AppSoftGroundController.java +++ b/src/main/java/sgis/app/web/AppSoftGroundController.java @@ -79,7 +79,7 @@ public class AppSoftGroundController extends BaseController{ }; @RequestMapping(value="/app/const/insertSoftGroundInfo.do", method=RequestMethod.POST) - public @ResponseBody String insertSoftGroundInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ + public @ResponseBody JSONObject insertSoftGroundInfo(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception{ String retStr = ""; try { SessionVO sessionVO = getSessionInfo(); @@ -136,6 +136,8 @@ public class AppSoftGroundController extends BaseController{ retStr = "fail"; } - return "{\"result\":\""+retStr+"\"}"; + JSONObject json = new JSONObject(); + json.put("result", retStr); + return json; }; } diff --git a/src/main/java/sgis/com/util/ExcelUtil.java b/src/main/java/sgis/com/util/ExcelUtil.java index 7bebd18..0e66c8d 100644 --- a/src/main/java/sgis/com/util/ExcelUtil.java +++ b/src/main/java/sgis/com/util/ExcelUtil.java @@ -3494,6 +3494,9 @@ public class ExcelUtil { for(int r = 3 ; r < 300; r++) { //한 줄씩 읽고 데이터 저장 Row rowList = sheet.getRow(r); + if( rowList == null ) { + break; + } Cell depth = rowList.getCell(0); if (rowList != null && checkedCellType(depth) != "") { @@ -3507,6 +3510,9 @@ public class ExcelUtil { } logger.debug("excelReadSetValue ============resultList "+listNum+" valueMap "+valueMap); + if( listNum == 205 ) { + logger.debug("excelReadSetValue ============resultList "+listNum+" valueMap "+valueMap); + } valueMap.put("projectCode", params.get("projectCode")); valueMap.put("businessCode", params.get("businessCode")); valueMap.put("consCode" , params.get("etcCode")); @@ -3864,11 +3870,13 @@ public class ExcelUtil { }else if(cellType == cellType.ERROR) { value = "" + cellData.getErrorCellValue(); // break; - }else if(cellType == cellType.FORMULA) { + }else if(cellType == cellType.FORMULA) { // 여기를 타면 엑셀 셀 번호가 그대로 리턴된다. 그럴 필요가 있나? value = cellData.getCellFormula(); // break; }else if(cellType == cellType.NUMERIC) { - if(HSSFDateUtil.isInternalDateFormat(cellData.getCellStyle().getDataFormat())) { + short dataFormat = cellData.getCellStyle().getDataFormat(); + System.out.println("cellData.getCellStyle().getDataFormat(): " + dataFormat); + if(HSSFDateUtil.isInternalDateFormat(dataFormat)) { value = sdf.format(cellData.getDateCellValue()); } else { diff --git a/src/main/java/sgis/map/web/MapMainController.java b/src/main/java/sgis/map/web/MapMainController.java index e1cf246..62ea304 100644 --- a/src/main/java/sgis/map/web/MapMainController.java +++ b/src/main/java/sgis/map/web/MapMainController.java @@ -3,6 +3,7 @@ package sgis.map.web; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -304,43 +305,101 @@ public class MapMainController extends BaseController { @SuppressWarnings("unchecked") @RequestMapping(value = "/map/makePredictionData.do", method = {RequestMethod.POST, RequestMethod.GET}) - public void makePredictionData(@RequestParam HashMap params, ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception { + public void makePredictionData(@RequestParam HashMap params, ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception { - request.setCharacterEncoding("UTF-8"); - response.setContentType("text/html;charset=UTF-8"); + request.setCharacterEncoding("UTF-8"); + response.setContentType("text/html;charset=UTF-8"); - String pyPath = ""; - pyPath = getPropertyValue("Globals.File.PyPath") + "controller.py"; + String pyPath = getPropertyValue("Globals.File.PyPath") + "controller.py"; + String businessCode = (String) params.get("businessCode"); - //환경변수, python path, parameter - ProcessBuilder pb = new ProcessBuilder("python3", pyPath, (String) params.get("businessCode"), (String) params.get("consCode") ); - Process p = pb.start(); - BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream(), "euc-kr")); + // 1. consCode null 체크 및 기본값 로직 적용 + String consCode = (String) params.get("consCode"); + if( consCode == null || consCode.trim().isEmpty() ) { + System.out.println("DEBUG: consCode가 없어서 기본값 CONS001로 설정합니다."); + consCode = "CONS001"; + } - HashMap resultMap = new HashMap(); + // 2. 명령어 리스트 구성 + List cmdList = new ArrayList<>(); + cmdList.add("py"); + cmdList.add(pyPath); + cmdList.add(businessCode); + cmdList.add(consCode); - try { - String line = ""; - while((line = br.readLine()) != null) { - System.out.println(line); - } - resultMap.put("dataList1", "suss"); - } finally { - try { - if (br != null) { - br.close(); - } - }catch (Exception e) { - // TODO: handle exception - e.printStackTrace(); - } - } + System.out.println("========== Python 실행 시작 =========="); + System.out.println("실행 명령어 List: " + cmdList.toString()); - JSONObject json = new JSONObject(); - json.putAll( resultMap ); - response.getWriter().print(json); + ProcessBuilder pb = new ProcessBuilder(cmdList); - } + // 3. 에러 스트림 병합 (로그 확인용) + pb.redirectErrorStream(true); + + Process p = null; + BufferedReader br = null; + HashMap resultMap = new HashMap(); + + String validationErrorMsg = ""; // 유효성 에러 메시지 저장용 변수 + + try { + p = pb.start(); + + // 인코딩은 Windows 콘솔 기본값(euc-kr)에 맞춤 + br = new BufferedReader(new InputStreamReader(p.getInputStream(), "euc-kr")); + + String line; + StringBuilder outputBuilder = new StringBuilder(); + + while((line = br.readLine()) != null) { + // 디버깅 로그 출력 + System.out.println("[Python Log] " + line); + outputBuilder.append(line).append("\n"); + + // 파이썬 출력 내용 중 에러 메시지가 있는지 확인 + if(line.contains("누적침하량이 유효하지 않습니다.")) { + validationErrorMsg = "누적침하량이 유효하지 않습니다."; + } + } + + // 프로세스 종료 코드 확인 + int exitCode = p.waitFor(); + System.out.println("Process exit code: " + exitCode); + + if(exitCode == 0) { + // 프론트엔드 호환성을 위해 기존 키값(dataList1) 추가 + resultMap.put("dataList1", "suss"); + + resultMap.put("result", "success"); + resultMap.put("msg", "정상적으로 생성되었습니다."); + } else { + resultMap.put("result", "fail"); + // 특정 에러 메시지가 발견되었다면 그 메시지를, 아니면 기본 에러 메시지 사용 + if (!validationErrorMsg.isEmpty()) { + resultMap.put("msg", validationErrorMsg); + } else { + resultMap.put("msg", "Python 실행 중 오류가 발생했습니다. (Exit Code: " + exitCode + ")"); + } + } + + } catch (Exception e) { + e.printStackTrace(); + resultMap.put("result", "error"); + resultMap.put("msg", "Java 프로세스 실행 에러: " + e.getMessage()); + } finally { + if (br != null) { + try { br.close(); } catch (Exception e) {} + } + if (p != null && p.isAlive()) { + p.destroy(); + } + } + + System.out.println("========== Python 실행 종료 =========="); + + JSONObject json = new JSONObject(); + json.putAll( resultMap ); + response.getWriter().print(json); + } @SuppressWarnings("unchecked") @RequestMapping(value = "/map/predictionGraphInfo.do", method = {RequestMethod.POST, RequestMethod.GET}) diff --git a/src/main/webapp/WEB-INF/jsp/sgis/app/constInfo/popup/includeSurSetSubInfo.jsp b/src/main/webapp/WEB-INF/jsp/sgis/app/constInfo/popup/includeSurSetSubInfo.jsp index ca2456f..de82843 100644 --- a/src/main/webapp/WEB-INF/jsp/sgis/app/constInfo/popup/includeSurSetSubInfo.jsp +++ b/src/main/webapp/WEB-INF/jsp/sgis/app/constInfo/popup/includeSurSetSubInfo.jsp @@ -158,7 +158,7 @@ var columns = [ editor: chooseEditor, width: "10%", attributes: { style:"text-align: right" }, - headerTemplate: '
기간별침하량(-)
', + headerTemplate: '
기간별침하량(-)
', template: "
#= (subByPeriod == null) ? '0' : subByPeriod #
", }, { @@ -167,7 +167,7 @@ var columns = [ editor: chooseEditor, width: "10%", attributes: { style:"text-align: rig ht" }, - headerTemplate: '
누적침하량(-)
', + headerTemplate: '
누적침하량(-)
', template: "
#= (amountCumSub == null) ? '0' : amountCumSub #
", }, { @@ -209,7 +209,7 @@ var dataParams = { consCode : consCode, } -function selectChange(){ +function selectChange(e){ document.subForm.setUnit.value = document.getElementById("subDropdownList").value; document.subForm.setUnit2.value= document.getElementById("subDropdownList2").value; } diff --git a/src/main/webapp/WEB-INF/jsp/tiles/attribute/app.submenu.jsp b/src/main/webapp/WEB-INF/jsp/tiles/attribute/app.submenu.jsp index c93d9d6..271ed99 100644 --- a/src/main/webapp/WEB-INF/jsp/tiles/attribute/app.submenu.jsp +++ b/src/main/webapp/WEB-INF/jsp/tiles/attribute/app.submenu.jsp @@ -1227,6 +1227,13 @@ function popupSearchKendoGrid(dataList) { function onPopupDataBound(e) { var grid = $("#business_search_popup_grid").data("kendoGrid"); + if( typeof grid == 'undefined' ) { + //grid = $("#basicGrid").data("kendoGrid"); + //grid = $("#subGrid").data("kendoGrid"); + if( e ) { + grid = $("#" + e.sender.element[0].id + "").data("kendoGrid"); + } + } var rows = this.items(); //grid.refresh(); diff --git a/src/main/webapp/com/js/main.map.js b/src/main/webapp/com/js/main.map.js index 31b535f..47253cc 100644 --- a/src/main/webapp/com/js/main.map.js +++ b/src/main/webapp/com/js/main.map.js @@ -1,6 +1,5 @@ // 지도 전역 변수 var map; -//아으아아아 // 지도 배경 레이어 정의 var vworldBaseLayer; var vworldSatelliteLayer; @@ -921,7 +920,7 @@ function menutoolsEvent() { map.getView().setZoom(14); setTimeout(function(){ - map.updateSize();     + map.updateSize(); }, 200); }); @@ -932,7 +931,7 @@ function menutoolsEvent() { view.setZoom(zoom + 1); setTimeout(function(){ - map.updateSize();     + map.updateSize(); }, 200); }); @@ -1221,7 +1220,6 @@ function addInteraction2(){ } function selectFeatureInfo(){ - debugger; //thkim var businessCode = document.mapForm.businessCode.value; var holeCode = document.mapForm.holeCode.value; var consCode = document.mapForm.consCode.value; @@ -3558,6 +3556,10 @@ function instrumentationInfo(consCode, businessCode){ if(graphData.length > 0){ instrumentationGraphInfoPopupData.center(); instrumentationGraphInfoPopupData.open(); + var form = document.forms["mapForm"]; + if (form && form.elements["consCode"]) { + form.elements["consCode"].value = consCode; + } }else{ alert("등록된 계측데이터가 없습니다."); } @@ -3801,6 +3803,13 @@ function makePredictionData(){ let businessCode = document.mapForm.businessCode.value; let consCode = document.mapForm.consCode.value; + // 1. 계측 데이터 개수 확인 (차트에 사용된 arrFillingData 배열 활용) + // instrumentationInfo 함수가 실행되어 팝업이 열린 상태에서 실행되므로 arrFillingData를 참조합니다. + if (typeof arrFillingData === "undefined" || arrFillingData.length < 2) { + alert("예측을 위해서 최소 계측데이터가 2개 이상 필요합니다."); + return; // 데이터가 부족하면 여기서 함수 종료 + } + if(confirm("예측데이터를 생성하시겠습니까?")){ $.ajax({ url : "/map/makePredictionData.do", @@ -3813,15 +3822,15 @@ function makePredictionData(){ consCode : consCode, }, success : function(data){ - + loading("#instrumentationGraphInfoPopup","false"); resultData = $.parseJSON(data); let result = resultData.dataList1; + if(result == "suss"){ - loading("#instrumentationGraphInfoPopup","false"); alert("예측데이터 생성에 성공했습니다."); }else{ - alert("예측데이터 생성에 실패했습니다."); + alert("예측데이터 생성에 실패했습니다.\n\n원인:[" + resultData.msg + "]"); } }, diff --git a/src/main/webapp/com/js/map.js b/src/main/webapp/com/js/map.js index ca92919..327646b 100644 --- a/src/main/webapp/com/js/map.js +++ b/src/main/webapp/com/js/map.js @@ -399,8 +399,8 @@ $(window).scroll(function() { //브라우저 리사이즈 시, 업데이트 $(window).resize(function(){ -    setTimeout(function(){ - map.updateSize();     + setTimeout(function(){ + map.updateSize(); }, 200); }); /*==============================================================*/ diff --git a/target/classes/sgis/adm/web/AdmMainController.class b/target/classes/sgis/adm/web/AdmMainController.class index b25a911f25afa708d58110c3846f81135c7a4855..ecb4c20107af2d8bdfd2425972f6716716b68f70 100644 GIT binary patch delta 2158 zcmd6oX>3$g6vzK(mUrL0c~je&4)!r^r<4{tEVhNxmZ?kx6B0J90c|i4sqIiY6xwu3 z5gb!LkhsKX;uUcZ)I^XFgaR$4YD-)`7>yCPL`60gkVRw@T)^|*w1Y}C@f*oZ=Da)S zo^$`dd(L@Z&%Qic`{2r+w*izhYrbzvU%uf$BDF4HljF|*aJlb}5Jlc9+Lu>Pj7B~8E zPRDtf=8HHk>-bex`zqutpGQ99`;;7VNoKBMN0uNVpU52LQIMsPLYhu)(q(_<#8GJk zU#zyhws=KbV^i_e*4Elpvm4`W8hK1tJ7wtDLSC8W50?3{NYF4o!8QLmwJmPSqTzxJ zLfW-;GlWh7%9cz0c?;~6t5cBj2#$E;>L|fp6q=z@K0i0HBWs`noeI&&G3ujD(YB~5 z(2SwdXm+Y=u8*n|BG{Ujsx+1$mPO<7+6G=6zvHOC%jwz+2Q+5>u6{~#Z1gW5xb6H*XhWR71>id;&==X;c?{i+G^-#5R60t|C-hTl<`i} zsz4=dmNg0Guv=CeR&X@)--9>=C))`e#t|r->j8YnmcVe7;B~fCOoAWn_#Q6Yi2#1U zQC^E@!-G|vSjA)xqz@)LfG}IfoT`o_6k!O4qF7Lb3B|!6W~87@Lpn!) znpfBIiJrwUtV0f-V;s+;6fZD@7g2?m5W&lshV{I+6Zhj)EXHeS#zt1M$pYB|w|UAG z$OJluNG4Jw6HFvYGJzqIi4@5sKa*qx7c7#cgZxy?8ssN9X%e6K3%&&3nuU*#FdmL8 zhzM+z=W~nbqJ{Do6Qyeji&WVoCYJ|?(M);441KU3ePBIKzYJEH}kD9%mOY7Z*{FOIXfp58^jGir*n|1siY`ZxC5Gu*Ry` zF0<;)AqjNREjS|gjU3%k%u~yY^;AN|JhcK?N2N4@r&a-;q={6<9a4$al#i8skSg3p zlX!kd1$#geSj)>uWt3<7(TpGw*Z9xw{XaEKE;#tr=A|?QDIJBBfe?8y rj(jMgVf@a{LNytfN7-0NIcT8V8=;1a{Whv%UN*Xw8G?xtO#%J{w1S`p delta 2153 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 literal 56960 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 z zUm!o=cghd>gYqT*g#4Iqm!I+%P8E!?zG72L6uf7T4C*@$Lc>U^eX$N>yyfUt>%-;{;lAX zV*6@_HHdPoJj{!s)Xy4*{@KdF@)y0ph|}0d{Y&AWdjkdQ-Mo0Bb>mc9O9T#xnB}b%7rWgbL22Xwto^b6PJ`D z49!6)Xz~rs=oB<#49%e_Xv`&IGVT(wm~V$Ro2$fRimSxpz{tQYh~;@-x!Co)pAwg3 zm8{0Y5%aPBLDm?O)>z844ug^yPra?fslPRu4zi}uLTf6WhP`YXt?Bf_ta1ulOR1f; zj5=Et)ZMDm-P>vh_T=oewdIhhIVa$c3lqbx(eF$cxcxXpj}Ubc0C!|bq%!Z zDL=b*otHvzf*$bvv|wFUXD8xkO^@l>jZD54z_VmZ3HF zmO}M<-;iqhI|1s}WqE9hEvjI%$Z_%2EtaWvy2{dEc3|laY|7GPvm^zZ)BWGp+BI1< zekoY{ZuOT{_+5jle21ypo1~asQUz;~TAxU$k^+SBdusU@?6FmMa=MYlbb7OF;wXY_&NOV!YL-nL zMUc%ohRu1+vWcSzvbn&pxu{t-aTGx|YYm%An`IM65oEK@uvydOfn=1{QtAlKe zJj8(|6{)^9hL*m=m%!4GvRDJHAs#w6xJz&BeD@?Tk7`0uQT_&=?!BHwyg zoMJs9p0T#ccGjbEj`f(l#(G@7V?ALB>q)DF^^~=jwbtrmJ%jgn&f3pI)R-e4?B10I}&Pw{DY;a%*nRIX}h2Ip?Q%xaa&jQuow&u4UgA!|r7Ne|$F$ zZ{Z28NP6`CyF${un8Ul_^hZ?j%k*01Rgq?s{BQAZIP>?vD$+bw_}|e{KjF-uJUVTt zy&)~AEv^RCR$n3>kS5e-PkB%~6%-4aHy3vWQqu-W*C#cK@$Tc5B|)~5)v{GFX) zea3FH{=r_d{>k33zF;3%Z?b<_->`43Z#lQV=V5CXkA#SK2nlWWS7Wz0q}Mh3crs=m zPwr-~0j}9cn!DMnk8AdEgSz{{kxyK+k57-7Yr$BfWAS z8TK@TGLJVGl({*@gbxN~Zu!YUnT>HlnNTK$Ls`@=6rs+cHq<@Tu9br_zf3zQqqpL> z%GbE%?X3`$33aB7&>oZ%>PkIAd*NG_-Dr5I2aOK(q=L}iG$YjOXAjEUnL==aL7BVK zvJ~M7PEbY^G-oO9Hrud1@hpYA@i_I@xLfbQum39?sp1#-3`Zb4E`Fh1eyvhdhe7zE zDcA(!7rXU=-K__T!$SMhsL%m4E`-Ij(1BDGI*8_lM$(#4K5Yn% zrtP7F>HW|ltZnE}HY9WqJ2*6+O$$w6M~4n)m7$63#Ly&mLufMF6q>^R9Gc2yXd0gq zn$FjTX7JZSh5YN#5h4^S5*dP7P_K8!rM*Ld-c5CA5q1BhlllVc#EIn z#66S3GzT%=vp*TrJr|GZN`dL3z;tE6bc=!M%3B%Jy^uDhd$IKv+J4;{n63tx?l@q& zdSE*2<_)a?rdtI}w;Gu4cxc`ees)avatgr-V!Gd?h3P`CJD85IZw}MFVlZ7n3o+fa zR$6EaqNqC&dT2I$@GoB_lI9$jj627b1OUZR1R;kx>LufjdL>~KM-gOWPJ_v~(_l&1 z#8CvPi-*u+r;*d&QPyz2u>54Qv;@dj)ecMqEB51fWh15i2>Kt3 z&I3?7A3*5>0Hq57lrF+_y%<1gEr8M`07{nvD6OTtL+k0$&=vGj=t}x)=qhH1u4Y3+ z*RYi#9NG$9$3vkFd|K#wz94iXFAJT=YeKj1hS05ib?7#Ja_G(&7~<>6EHmKAjW>Wd zJ*JLGBh5Wrw%!Fp{8AST@ntR;;zxO4XtD=}_V>WhKo1P<;enwX4-Cz7zz|=Z2!?c< z95AG~IbcZfaKMn_;esK2JhC;x5MWTz|6mZa!>pY?3V#b@O>n*xcoq0&k!OeKP38p0&(CQ diff --git a/target/classes/sgis/app/web/AppGpController.class b/target/classes/sgis/app/web/AppGpController.class index 9b9fa6d20745b4f0f378c36586073ca76aaa28f8..15286b6fdc8c92c14f04daeedcb9f7726cef9052 100644 GIT binary patch literal 16926 zcmeHO3wTu3wO(uHB^LilyFPi)>n zf=LJ0uL-ORY;f{y)bwaF-lkzxia-J;71QR&Qhco)X7NoCU|vakD6BQdA#}SIPt6;j z){HIByxw$TdX8=!!!e;qC^3u4T{fWwvI(Vo$W0?u8b+laI*3NfbTHF_*@raG)SF79 z=vzz$9a_RXJf?AF#`gW;K%~Q89S-Pv)r8(>TtG}?RLY}#rXlsAh_)!%)vCpt12{ax zDB1$ymOwlt+E%BO=nUaBzm-0L9Hxhz4%fA?)|QwXjcc9Ju(m9)POFQwN13j*Bugej zVgG`F-U;)n%4r+PkiP+%2pa_EVG8YrwS>Pjk%;*h;D9g#pH8Ha`*&aszcdb4))EN)!` ztyInWX6!ikofHS!8j1unua2Q$97W7jR^GZmI0+SuGu%%{OdKvQW3DqlB8X!@B-1r4 z2?!UE(Bc_BVtP(H=tmxdO_c{`JVm9W;1{V-$0g9(6AfA<$#im#1KMY*pU|SvbQnYu zmv?oWacAM?R63d}nTA4+r5F%*d5U4iOw*m0(lWc8J9b*WSmhY_h?vlr?x9&UTc+dS zjSXjz*KuUD%Dd1M1r4U8lOX?oB}LnIv{-$O|^-&Pf)3mnoLbM zYVAwXGC*P{b4$}gkxSw7Ta!9GovxeGR?{+-mJ2>!oEZ4bbqp)Cl1UN%%O*ZirIQ44 zu}QqZ8d7LA{DpZ7PHc7fJRxX6rB*RVn5Ix&ji$E=&l^-}D0vI1ojPUeU^*o82udSqET3^@-9-Y&&CqhFygw$~1k1OtU4hz16w2!Pg=c5cR8ro=QH z=fT2x=5+~IEkg4Eb_rTJZn|rx!wp^=j40lpUx%1+&Gg+&=Gpc)$@22Jn{BqWB6{|r z1;ncQs58)QjM>5N=-yi$q6WRum(R78Y z+CTuhW37cY)1@+f7p`)kh0GIG=`!0ji6mc(B${E$!qZ%#(hxeJkglYwWx9%KRO*)7 zp2nF6t2BD&0YM;ygw0L?p@x7FOI7d3ZitPBILF0~~I^ z*ffMN#~>Z-L~IaX%rLavn}szw-KJo2O!+MIRytT)$#9?dFQs%bRZJcpLM|K6kz?QN z)Zo{bWA}ad5dO&=GWNN31IAcK^L6CT{q7_q1}4fF@)x0M=$m_Td^hL%cQEvKW(phIot1(p4Qvc<533xlE7QxtXEWI(Q1a z0jTr~dK_UEX{L^JAp2U_IaHl+B2TLH6g>_5L&Qf8Ki84(nDPwIakjX{GX1i5GAS}E zkxcFp-e3t{4>eDijAHL=x|z*Xa$J{)1^mO3enTsg|XHvMRkvZz0Ev zB*Wq6=v=6FZB~wJtI)jhhVHGdLVBBiFVj0X*>uh<1QrSNyTU=$<;;xV#~V$00(_A| ze}G#H2U@joA-zWnJ+z2EQt7|wkML&5xdLIm4|lgxq5l?1oY<{Ge}+>-gwhoHi+K{F zdx}DzfQ>3aXKq%9XDqIegS;Wmzg(pHQspe{hk1%+(#9Fj)v@Mj_sPK`nx7N;d4~V9i zM0%QNs!5dU0TDp*kk-y6(U6WnsW*xjL4{{RrmRko0y!7Ab~bftfjB^OGMv;E2KvQx zXCDahT87RQ(PX4UPf^Y`cxH5h6e!r(XGAx40YGc)(`aINo}t9*POWXN7MzQ1E)a&b zQE${b>Vh6Vp6g{^nB})p4p!v`arPc~WPK@uaa|A&k{7FVKRpeX%_peb$Z%)gWDF-A z!~<-ot*)y>z(A%&x!mM{>AU&Tb9D13_Wj>)z*gdv4nac$cJp|C>RMMj5X zK<<>lOl-WjyTftlX7p+Sw$FrRDa9f~aJPvt#C7-^0!QJHdQSiXwp=(YF=;)xn9g1f z!-X0dT7emrjcf4|6V= zlLo5_Yd%Zm^#TxhO)b{+EqHGNi^X{=pD!{7ubDA8StxuVE?_Y2v=qJwN9pLm9lZoL zWAzAE1x(~gH8FgdF(K`k6uts_4`#ZmD@~%5V^a8PlPJ{#PS--m!E9G`J#JK1CrG!z zRRuHLlEOC{)3aRF4~)(XucR;l4|ryDg6FN)J}p=EBWs_wtJ-R4D&?xg;rv+TvxR2y z-Y6b~YBYn^Joz!s6Ye!`*wkHEAspDK#aD}hi11iHQTZP6fLSCGFkCtF@lxUYMBZsU z^PU(q7g6{DyTIglFtP?s35GdZ4%0i-DOfHN%WQV4e21{Sp_XCwxw&5B7K5Lv{IH=N z%kI()6h>lfCNoDNz2iq!eoQ2A9y5Vksl{Puzkt5ux+A_m0UL63;KZK7iCI0uGWUQ( zs)^xe;3ngGz0k12&myo`4GjI-nrWT&3)W2gtY5+r#C7YeMQBm@H-sW;%gQDosdlv->Zcsy`yrE(3Pjj zD3X~WYMAjbkggdXAyOBniky!sh%|96n!uw25^}o?Sw&+Bz8qD{Jo1WC6TVy`okwp0 zzVq>~$LK30)#@w6zeV_4tWzO~@pjRBU1bUnFES9-<$PZwak3D#w?LDvS*j zqh})iPFh8*(-GvySdkz*5+CM&5Q7UaRYo&ZUNLb}H%%`0PMg?GGbVbgD!S>|WxJ?) z#SW^i%=6_{c;|J~g59*Jo0f=Hv)yVDtrd1_l`qeGayOk){s6W4@_I;fQDy!_?^<8J z;OFhS2aCC(e1c4c_<0LlnejIVs!07_Gzg2zViU^Rkmo{M~v_o5!U#6{50 zDDc`& zcR?-VVQ6+=LQM`g>FK_Zc_oetIB>Vjnc59|@(V727Qo z%Z6fU2e{`pTTd0(7Q^hH_U^3AEAOU^8r~L z;!{gto=#0=DC4{$E-mtTdf3Hu^XIn->ii1)1!H0EqOG8pK3wReT- za_qTk#V#&hQNjo8U~j3?&BMBRge5bNw22O}hz`pn^6u>B@z;~gTWNG|3LNOpG@A() zQN@64vM4gyOtRSc2V|2)k;!JV#pb91*j8E<1MJ_r|;ZmhkzWLMZ z$}1*y^O8#CK5q8G6jzq;>dL&WtrQAjN2lw25w%E~1!pCEYA-p5J}5+L?$?DJMQ4i3fcIwLN>mvkc}@hWJ}WHz`^Z^8XoB;?%+;1{1MXS zfZS^kcg9H(0OmD_Xp^Po9Of=Wl3J;TBUlq<9%(j5@l{BT(hQCvW~nH#xALi&Q3QF5 zI1bJVq|IZU6O<2mi;ak8rUm8Dxsce5XeQr#ZN8jL@!d!&uR|!ln-1QKV=0h{WvY{D zmQ3f%v{|M_GTv#Boa{vyEAC@dradyfZTzVN>8CW;@u%9gmu{t^K};o=vGk(7bnxKl z-6p-vqxK?i+`okL#GGeB`xW)gv?zbS7w%h>-}}~x`&kBLhlis<0w>Yzs*&}pshhY?Y1=(N`M!|1c2)7lhts<)ui$$+8R&`Izxpc9M8(;JHBfKI$=A3-Pn z_CA14Pa%XnjR5rwfXlNmisuk?p9jEs0nq71K&O|!Zs>$(v_V2AK4+goCq8#Sbn@

5DBkn=^@WAh0ZoOg5KVY%U*=O%_Eao9|g{t{RX{7DXnT zYb-X`4ag>oB9qMx7Mt%6$R>*-lg&*Qn;#CyCW|7I%`Fz2+XiHlMUlzoc0i}w`-M*1 z{%z3dHALt)khZ@C==2W!_`Ar_-ve}dAJFLoK&L+-OnwOH^bw%b9|4;F1nBfJpwpiL zo&Eyo^jAQqzX3Y^9nk3?fKLAebovO;>2pA*y^LSw;1Af%pRnX|bDpb=^IcJvUEQp> zKH~y+4SU>|aH0DJRwW-7NvCkJ6yqV%CLRjt^saOzmr7fBxO6Lzkhbwb(p@}Kx{pUo zyLgQB1XkV;o%TZ~;K%*wtQVf%kIn$yzY^a6D$wbUK|`lI`+`mfTF^<)4V}tMc>Ba| zzWYl;sC)Z?Q1_=H)D%1l5trfFcLELJavIJR_`lVTpu^cu)A&fL=E-ydPoWh&mD+h4 zMR|q;M(HUSrKez&o`O+&3P$M`j5-`x!mL2G=YUayhY6z|95jqF3MKoX0>wMNI*j63 zr0{Vxl;_eYuA%WYmu~8)o{#_9VN}ncVbnu|f>CmbS%Gpd?7srVyG$76 z`tXZYpy>H;NCnEQ(TJ>$`YePQ#h*t8S^U{M0cEof|t`Fypqaz6;0+7X(pdUwfG&tI$lkU9H8agMrR^j--7r3-P}QM zqFx~J8vI6T0KXF&<=GtLMW_R;Lj~Yr)?E@OT!(VfwT9QZPUH2ii+O|V2HxnpgHLn4 z$fvvB<}=*Ho7{!G(p}2uxJU81?s0s+yPPj{`}rdGRNm}9mcQ#>z?Y^IcK1R%IN-~A zW5btK>%f=w#)dDe*5RIS*E-x|>{^H0Yu7qlAKSGK*K2mI!}Ww+>u^10*E(E1cCCZn zFl!y|QFg7v?YCI*KR4vyYg<(T!QU)EjxdpwD|_+8ZFjNhT+_lW)luq}5o literal 16585 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 diff --git a/target/classes/sgis/app/web/AppInstrumentController.class b/target/classes/sgis/app/web/AppInstrumentController.class index 3d606e9487861339e90d308ce3e8505cc1cc5c6e..86130c44430a3fb0b85302ffd9ab213add414cab 100644 GIT binary patch literal 44315 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 YdbGe7M({Zjd}Abte*^fP`!|XHAL1Dn{{R30 literal 43564 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 delta 2190 zcmcIlYiyHM7=E5^Yrl5i##q~RS2{Mv*o`tSL#qfI3>f3O&9TX3t6MjUT|3)uGQf-o zCK&vKCq{|EONf&AL-3LbY6O266aVQ>uFBsCOUT<<9cf<}?C@$hPiW!( zaGkfSro(~@_``&YggxBl3%lBb-LAf%tKJ(9`+|YSRXYB}C1tfvGhWv56NXf!HG4LO zbpk`;)7#VGiFoV0VP81n>+?nWYXY4?jRwNxi+H;i1|k;5(`aIX+HFmXGf`8oSPP97 zorx0bb8F7ZB*Gl=h9j#&9o~?M69~sfPoKx-_XN6J^^uS-&{fsz^NUjBL}}!jZL5XJ zwCb3My-~@oGmQ>aWh>4}W`@p8T#_~;!O;-WDzbI#V~%>a4&rz9Zfm^BE`+6;@8lg8|FW9_c0^TyOuZmym>rk)n7 zK8gXUOPY!1NF8k>x`@`FVL42f0XxjJo9)_*!{x;#WrLjQHowk_3@P+(D=Xaz`(be# ztz76%7;U3k5@aL{a*378^T_uZSv?C?o);W|Q+9VCDT*#~ zFO1|jYuo7QX<52Czo>t5@2B~S8|n{QWXmk#!i^fjmuok zHPA4CPgy6D8M|Ct%yR`zBumG0@q9LjM3R*C%4mh_N*rtZFvto%&&%YyfQ(<=L1J@Co9sfw|uG=E^ z#xZL8W2t$S*nu&1&&}1LF?A$XeJf)3{eQ$}f{;=OXOR~wlRAo-gbJnzD^szAHmso? z4Rm0=yfEF&Mu<7sN+%v=E_N{=dpHIAS%8l@6{lIqBu?W@7ID730?X(W#?D|1%h|zM wGF5XJ;9Q33zHx>IgoFQeh_>Cv5ZyRK)>{lwvE9IaDbc{qGL(?XBewv511Wa>GXMYp diff --git a/target/classes/sgis/app/web/AppRockController.class b/target/classes/sgis/app/web/AppRockController.class index ab9c6907167bc5ce7cffa5e25c20b1a0f7564fa8..b2e636a678af83bf0c8f2335fed206b9afeb4403 100644 GIT binary patch literal 48617 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 literal 48013 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 diff --git a/target/classes/sgis/app/web/AppSGPlanController.class b/target/classes/sgis/app/web/AppSGPlanController.class index 3fa28e97c3fb6c94f3f1fd7e71117be4438d7714..e63348ccfa7d3e99c2639030dc2769694cffaebf 100644 GIT binary patch delta 2127 zcma)-du&s66vw}3ecao-wqti}vuwjKiNI=tA#<80VCKZQh#77ZLWY)ZyNnB^n{Btm zMbked#301P8zeQ0I$z@@4jA3W0EdbwK2h=ge&JhS$V;7`dvDiu$QJ)-dd}~Bf9H4Z z`F+m47kvBYN=JtG9sp2Eo}JPn7jr$=JQliPuB08*H?bxPeJEv;PTz8aiCqTpw zf}lo~)fJ(rgt@2`u#+%pWuPrEI~WKx&8~@t)lid!-Pj|bM?2}tvn0@~N$wf;ekb-~ zK)cp`)%5)YXMJl#4JnaGMRTJf;(3DD-W*bNPryM!zIN1|e}#w_367C~U&0^`IpM}V zx^>uzSMaKK&|M-9;x#8;#~a#^d%Eu}&ZVwysa>HqtP*jQ6O4GA;9VRO@E##+wC0*CM8;%&S!tx=*Pe&=UQIvhI5p@lcx=)ZM-t%xBmcVYE>|AMOWcj5vD_((MrQD%jsHLbPb%Fyy=5r1*wNNYm_-;;=8f^~U77Iw9RlZZiUFemHeAg z2Z~?|?&5z1VMMT1%gXn}EZiMkNCWaVpUo>jo4|8}=wTg}l=pe%eJoAjmc{HH@D5;biTpw@Udj~`csYS1qro@L;M-$^#v$*-k_kRE zH6LF}lazdFN6U07;VBS zuY79MJMEQE8{Sf*eP_J#nPgD!xkv2BxeTlkC|Ag}cMflm|Mc0q;PBbyzkRj=tmRv{ z-)HyO<$pZ31Yxnq-VFwZI_NPJ!-@jF_?4KVSv<>Pv;*s?4-YU2KnpVUt40x~vZq^h zxRbZ)mLJQQ6Wt1+9u~uDKqIHKQZEr@zy_Jtk%g>`%;j`9+1L``r3SKd7LhtxDUb*| zpXovzkFajm3O*+GGIo%a;D_&Ed=+d$;NxEPc4UySvd z^k<7tgt0e=GP%!u**?J|tSw7KH=IA2d2;7oK8Uwd925!e#xFy+yJ0=@+k4DpY zlH_!_$C0GNJ&q(D?u#Yn7)f$E-4|;NxFtCq?r|jPa9>JdFe;ghIw;qXYmapfANs$L zw$r^SNb7MKBk&M2wh=NmF{5$JWNzl51J~hEl%o?>c!EKB5)a}j?84JHhG%dNT~vV0 zG!I)SfUOh@qJ!G7o!a@U8RM7Yeb`Ow(L)boj{*J~29n`OfgewSA5VcFPk|rD2>2UQ z;IBx6Ka;A-$-^LE4&6*SG?_WRW*(Ir)8Ifkd5vk1xQvl$Sf84P(P7XF(1*d$YxzaR hVmFiD%_Fas7Znzb%s~d_af31_-*}nZc`mqN{{oTFQc3^- delta 2148 zcma)-drVt(6vw}(w7s{Nj@FCN@z|yn-9o3t1<^D?f;b~l!vvh!i0cYm;JU8Nwh%>^ z{-J-FESlVynXzO;oy@7Ymt}yk>D<&g=X1W_ulbzY#Mh?ix%ZY*CXoF>d(Q8Cf9D*2 zzt8z~xcszVIy5#o0-%%%cSuWTX-BedE8Rwbh^GjG8dFwRg<}%RQ7zyZg8TMhXRss` z47Zll#Ug6BRl*MJ60lPXxNiAJm1n-vkm z1hK0Hsd z*EpBDdQE+s+O$f<>zrWR;{H;g}NX z42DE}z}==T1Vns9ur;-JDiIN%5bTD@%b#(nh|;2lLVN}yz92{`m&0H2u2_3aPx%e+ zGE81RMwk@~Mp~6vof=-H#`Ue=6SC6Q!mX_Pk&iy2MAbSaCgNxQACnG;e&NuPYpxC4 zw76cxNp5#Z?c%_VHI>PgU%9WkTLSg9rrwPj(U*mU(m+iEIh*Q4={h zi%31Jlqi#a}st=sWYXgxJ=ZG=QnhN7l zuARx9ch7{eFPpOXocXf-LY|OK?gYtxF{8}UOa5`Vr95d8+|net9h2dfWE1YVY|uRs zP2)+D)8U>*k`DJYl61JwmY8EC$?0^Ttuf%1tmBe6FG8uJHjw8n&?-@IA z?vQrT+7zVAnHJzdW=(^PhnUs%Sb&H5f!%GpLilcap-`*`$ zfXC@-^imMclqc;-A|%Ka=w@|+Eh}(HOc%J_Q_vcR; diff --git a/target/classes/sgis/app/web/AppSandController.class b/target/classes/sgis/app/web/AppSandController.class index f2beb2c73232af55fd9a2bf9dc578a80412b098f..3e8c2699c9262742b8b034dd0ebb6ef09fe19ccd 100644 GIT binary patch literal 59036 zcmeHw2VfP&_Wqff-Fr951tk$NNE4K*1}TvyN(Uu?NdN@}Lvn#&nkgXmg1tQ(*xOU_ z*(-|J8}{D&d-h%)c7^{pWovG7ugd%XUO`MUJA3w<*(qnv`KIjS>+igWhz416lw^WDl%bMHPeu@I-!bQ%z%K zb#g{!L*=}xdTY3Yt%Av?`laLMX?$}z`FM(G zRKGH1a+n^jItIa8+8RT z+OD@Mf`Y2Dngs=8s>&J~hWBY+&soH%TY_wgG1_c$WleHQQ}w)LeQ6mgP&JJ5vZ@(n z^_BA4L|TmtD^a7}{8~ua0P(I{H6*K&<&7%w%K4S$sxeHenP1Cjg~?r0V`Wvr#IlBk zXlBDxwvndFf+Cbgl@idEDoeO3*;uf!v9YdTB7VtgKtyr!fTm@?UW*FKwmWK9#JIe#eMX?ub0Eb{esg9fUTbIpP7St?R@&Rx_{TT@Zi zSjOnse`UK!TS%@F#dvjXii~9VW@&3KZ9aad&PR5;_}Z#jsVX%UgHl>pTLF!cGJCD4 zq9XMmnwvFkYDp=&$AodE4$VeWonAVAhaow%FTs491C5!{P?n(m2o=2r)WMjA=%D4$ zmE&rlgrI&IwGZ|>qiAGzE{CDem^@GpkkwVg%kdzd-^FAgNekjMpHa_r8PN5cpoKCA zZDkH%TqbK8OVOaEu3D6!{Ry3~EsTzmBzkOZjULpUe7^f4Y*(5D{X|=1|>f6&{C?)75IvImQO;c4> zY3*n{yniH7w-IPX6F|r4cnqDIpws9t(Dl%SWmT}@LJi2x@GMz3XC&xMIt!%+{fYrv znsB<5UDobjWffd5-(^zDvc3|oj9+aqU2^COI?AEHp&<20 zGZyCFLWi!w7;hqW>hI8X{^dYi-r!#r;_@csLJN;+a_AQSYJo$yd7@Kl2RU?m;Ih!6 z)q%?)4y{2`(?C;dWwLh%uOWVK;CcY=-ygV^`Fb#LJqXti2d)R>dTroZX8f_h_0G6{ z!Yc-uJ|dn9Mo7eG0uckG#B-<^H_QF|_aE%g3*ndn4!z{X6ep|8>i2i(6_ioK(uU&X zf=LzG^cuYpr`J(yURw_;iUhq$Zy}@TRSnZ&#!rGO-U3=B+Go(c>*$>Xy{npPC2ab7 z)rq*I@qKd!M{HZq4kMLwmA zH#XT&?$GDbmV{ZmkA7j-iII)`%LIKT+i$LJztXRh=}K6KzCj`qMI{oae=_PQO%yqH z7c^8#!?a-clBrX4pUb9iX)F2b`vmlbZc&~w@DAE&x{;O($5L{g?>d6 zD4?13l^7JD@!j&NtSy)ZU&h=($6pUMM;lyECVV@=7z3GLOFIwml2RdH#LQ~Y3Vy~^ zB-Da(N48-uHC4$jt!v6twiplF`ubFs39?j$KX@g8>xxrhR>_D>l6o0N^^7uE1kGz5 zkLZ-tBdWGErX|alQ71KOr!H$`C1^{^=SK7$iP#B|JRAE(y#vz8(43J-!vaWVm}v27 zuZUzO2QZ_EgN)WvU*HSV>au|y2e=-*O*YnF$snhn79P%#Nr=j9zOwDH9p-NbH)-%C+NyE*NhFisi`Z|oztWN@(z{z3#*bZ^F zJ)_Q^_N|6XpR5m4dI`28D^M=3vb;1Ms5@Gp-XSI6CGS!yUbDu_?}V2}CZw0_uz}Du zRb}&%RSp|0{Wl%EGgLH;+GLy!g?@=@`O!_4RTas4hoPyNfkzG5bF~V%O}Pp*jPEvIE}UXW;Pp7r^eZYka=cwG_=wlake{X zGCzOgt7^*{6Kpao!aFJ|WGXCc*D?*7U%|0UJ%xgSE;U2{*q!>%b=aQ%^+0)D;$Iia z>*>&YdKenhgv*)!>n2rpuQ z%m9W^FGA%IK8P1FNJ>C^dl7?W1PoL!LcK(FAYx}JQR`KzGC&Y>KrlwZHUwf|frAp@21FNpA zT)PzAe5IS>J~Xex;0x%v4D{^+O%jDMHZPx7FVO<*NM|25dJ~wkC0v$Zf0Y(o8!uUH zIM%T%66{LZM%oznM}s@;DkuwpX^(+jEqma+da#RQ=0QDOD@zVHiz^&>k-wR8(!*{wn4^SE#7AsY((D4tqdH4G28ZqOi`{_Nd zpF@=U+>@@5|J>8MpmZmcCI4)KJ*UdojIwU|z90uIWp2+yYwYOPU`S3iiI?@*CI^s# z4to{FrUny);a12|Pu>~qus7X12*2&$8Q`#Y{i{I^`-je>9$6d)uR&E%aRu}UTn2S9 zp#c|g7&Z%6CnBZSVCoZBpPNcj4}WPc)WcuvhXYj#@o)9RvQBZePS?6$sfhbtmnq_O zDI*GQf^1cT2fM|LxSw^LU$2ORn;_eWSFwm%?~3`4a`^8O&ac|J4u@kPANA@MQI;zf zcr+$QmU;EQisep%XQ}EnDppr7hIZ4@F#A$lRSE6uaYozvRo#M&taRQc#45<1R9M@E|Rt|hCS<@;)GaF+o z%N*VjV@oh{VzP3i4M$nA*(9A1d* zm_E9*!-u$c5FX~=8S3y6?j3|j`gaN)zMFqF#Nng87cw1~kHx?mENYZL+V6M_Lcv&F z0k|1;a!fAmwU-R zrqT`cpIHe$TUCYWKf&VGW9BxxmrSZDuWG80v-*CADruUhWp?zNdPrI)XS$z}Ruu%3 zu)t?yW$&u1t!t_)sBA5juBqU>4mSvu-q+7ZtForol_z+G9F@DKPz1nG)k|K0{Wn3G2{%bt**Ydq6sDxCJw1zyT+zRAYMs$?~ocZV;Q6G5u7OT1VJ zALzBI(xK1;2T6sjq;QGbhj_`1bNFFiGUIUT2v2R5E~#Az4Rw^)kyHdkmU$11TI}#+ zy`)Ah#?9lsn`3bEMDOMpdGloNW)W_l>fJ1oH~->gY7d8>;Ysd+TPQYD62)~6U+z6u zT!)+IKqJ&^PLZDn3?0Ue3!rc{$)r@k`1;yv_;YNGtc{Bke4(rjNK1waip;6f^wR)X ztc$RAMK_@7m|Llt56Zb>dIKnO-F|xd?YBiK)qk$UOk}wKG^N7plp@yaFpT>6$+aeE zddt-b4jWd!n|Zg?=ytn@?#0h^I0)}{5$R$yf?G9R9ML3zYV; ze%5QKmM z&;vj43fpT(i2VpN;ySxtm3pJ@CtkgI_w+dZnU{ihV(&=TZo-S!tsun@tjSLc~NI1ArnC71e}}Y^aM6BQ;)%XMw#E*>ZMedz5Syuns;!gh%^Rv`>6c>V*nyR0RRL`pFc!5oZ6+g|smN<)>0^Ob6su#i zxPTrFjO;CoX)P)`B*f-Qi;Db&=qO*#So+N}=Lp#9c7>WU6fo4=09($8*UoRm(lbZE zTJPXRVKC9lF)Q><81Ff_Ii(hw3o9BO0sB3Uh-nKer#k}XyNwG>C<@r_SqP%ppwMNR z_f3d?DqFg9mqyFN5j(iXIiB;&DTQ&~>{(Ub{av*%$PpM5W9kjj1_wdg0nvX&$W z+KUUnBksbOPvEZml8BKeJ!0fr;!2wIxRM;EfJvW?uzpX~xOPj3QR+o?<0=ilj2@1| zrf*2Vv+7zheUX-5Hbz>#{y0W_4C-J)>n3pO)Vk}2Y>e?#GAPjkUqOe&Q)Ov@%F`am z({$vih*AHrSrIbJTS%{SD&Ro(2w3HsMD-xOt&gl0{_)Ht72oYlY%QK;%*_GQFzN zi2PNHxDgP!LZ>_yueegDJXXHq-*oguL|>z$C(7vSbo6xO^9CI~eZEphHzmXjrH*v7 zFUA`3nzEY4*2c4DGO9DfW)7@$lD;)uktkNjW^sWI8|W4-i!ikoL4Fg&*)W0JTxA?{Npquq^WP>y&2C8^BGLPtD=8gFQtXL`#csK5Gh)$*mA z=7>j8e}M?p$m3`fCZ-hTz?0}--X(5>QQk~m*ECc%E}c|UQrXz#h-YDMMIs^kycVrr zDhc74ns5^@YSCaML}6aHt1mCARql@3D}O1S|` z!X5D@Y_3#y@X*^R33*GciV^Rs*9?q*|44|tWU)%_aDHWdwJcXX?sf79kjOpM2v(1Y z4-?`exjrmguMeA*tcQvTkCvfY@)T}Mqa|L)Z=u1_64rTZL{aKgI;VmQwC})x)T*Ru ze_tiU*8!R+nr3KB`Zgi{85onIvLTu%_02%%OVKU-vXQph4+-&OU`$E{=!l%V%n9++HwPK}F;7 zz|K;?Hjb)qsH;a+4OOqIuT=9Kp0M&m`W1Fii~7~vLmhyY3t8eGl z+-L_xjS_ewkG4Z3b{gXMmH^%jf>;PoZTsF%9s1_7J1GA)>Uxt(avK@1GS{0d>W4&o zQ+LG4jL17ZXj}ZnDk$oStoK4#j##~^FG3vh@&(!=W_$eXFq>Ed?MMZPYa_+_BcT72 z**FuA+W6bGZ@=wV(N2AH2jkDqxY%J84c|U@*M6&L)XdxoH$p_9$Ow6t;=7`Nc0;~K z;f+R9CmN&jH%LR7`~eg)laQng?M{0jZ!$EQiqyMxr71KO$xlP9elsb*C*&CwQ%Q<9 zD^+jS8TYpbmVUG8G-EdLB+aC~~JG_I-b0h&c-t< z@Ju{EKFnD|N9=t&T`(+56lSl)I<{ds`B}La_RGBx2&?GgnYg;7U+yLT)uH)L`|Q

-RXty@j0^tLKiuPT;h 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 literal 58537 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 delta 3504 zcmX|?d0Z7$8^_Nx1G30@1}}?nZ=$#rf;(uUqKS$Nf}(z0K*7v1SMJQ6J9nMYa!Cy} zCttKO-!$n>!oW!oH8q#qGSjlnwX!sqL|aIG#pcd+`iIZq`<(N;-}B6wGjHq)X{ZZ{ zJl?cxFCiqI6>1`5dxl4{li0#AcCxy^XIHj}ouc0D*|u466kEbhQ?2P~&8A1O&#^Pq z-1PLs7oymizyoPEc3i>myqxARk)0LA&SvMR>(jGB=0&md)pO|`v=$jOHuCh3B$Ol( zqU38&4UY!M()x_($^fb_=GqwV9c@YODu8L~mGcB!I8kVW)!Nm%+Z5|ECb|AHi*(@OUFPL4e%|vq7E{IF@dvH-HmCfpRMX?46HHA54PK&L~E&)FpQTdnwY4D)kZ;Gx0V80KnXb7MF$ zkqcF$$F@@cD@CZ6>QfkUPyK{Xj5^;bv1Kh;V{vUEr_}`qCaJ4;rK%12DQeomCqp6a zokyWs)@~PN<0B4h^+*3~t2EL|dl>z|PHB}rfo`)W(+}-kXtli;t+5yCd#Fgzd+CO4fJb)rQZlG=(j>FJtQR2 zb3!sbFASm=gwgbpFoj+gX3}2-o?aDv^qR1U{wl1ZH-z={rm&gb5-RC$LM?3&_Rzb+ z5&FAun*J&LK>rf1(njGf{abiI?>WNheMdBX;K-nVIkISz<2h7_Lqc#YN5-)MSw|&? zIJVISM?Ho)_F%Z<0!BD)U~|Xc7$veu#R%lYSd12v&?0uh7%?4V#iub&%*J>z7h8&x zFhQJ#iQ*Eywi=%hYcWYYhONc(m@Hn$w&E>4qY*oZ_pzhXhEFioO7_dlgA!TC-!tM#B}F!%y5=tFXu+=?L4H{PGY9>ckCxM!~RktW=Ux{ zK+42{Qh!X9hGDie5(i6jaERo=9BC;Ilh)vHX&sJ~He;?-g?ZA)m@gf~(UNim$4Fml;)a1`7Y6y0sn>3#|&cTaS=`=Q%C96jza=yf~M zskjxC-CJ;hdnYb*pTL*g7x88HOmE0*^(?~wc*?Nc^9HW-Y{K=PBYN#LzU67ex4n_L(c22&@uuP? zZx<}{K8;(veNn0K7U6r|S@^zJ!mZwyu+sYqR(Vz2=G}nR-YTr|YPj87hnn{Qe&juY zJG|dwt@kq4`9iVA$Kftt2JZ0?# zp7Xzf=lxZ9(Z3rn`S;>+|55zWe*%B<-^45a`}m6-hF4_^UXv5>y4((L$er<)+#i3F zv+=f^gAH;4-jNIOt~?WemrL;vd97aCh>fyx81Kp7;(hrBK9HO6p%R5n3WwJeD+fv| zj#08WR>|eU$rFUcIN@&KOHEn@zSw~gWI|s8#;70kCrn_(wuS+OB@xO{whfz1LP(sF z$+l(N>EHQYN+Jw|XGk;BM~R0)`Y3EF>8Hd%wmu9e1C(eO3`0l+`9R(bLvg08h zqenL*#G!&CeL$SMQC_ZfpirJ>1m}?3;2SZ43pUwhuBe+jz5&0pwPv?9xHMmcw z(@b$LG*g_*Nv2}7D?wUowoBS<%1BkFjI`gBk&c)#(it;GI%mqbzK1r!Zn>^Ne6U-t zn}ES?x$c|Ya)+DUaw`_IUG5HMyWBm^cDehR?egT9f}ZiFpr_ar^zf#j$88FF7MX&c zGE>mI7(#>H@~Y%!pj!%w@opeL2HWMWHe4snibK=SyC`5y^e19U0DnFY5eGO2zFA*vr zLejHB_4{LA`8*r6Yx7oO$ac181+nfXDU<5hUa9qLZy>d7-&&G6>OJBwudzXrGBq%3 zNClyKc^DAAkQ*Q)D@cY;@_^K{1weMP6W5a#opmxb5b>-&twZW|_W64DMTY2fuCdY* zSowSfiF{1bs&yNd*z~^zB$g145|%@P97p2079@$Y5G9$5BWYYb8OSA&kz67v=4@mZ z_XM$XNyNvsCS_b3vW`n8Z*uL(yIgxx$)%85t`qr~>l(N_NqTV0gXv9=E*L&KmX4CW;zwdiO;0<2vxGA#cObqpx= diff --git a/target/classes/sgis/map/web/MapMainController.class b/target/classes/sgis/map/web/MapMainController.class index 3f72341c78012a64eec720eee0e995551aef6b41..88902617baa7a27a116aa4337203f64bf2cd1ad7 100644 GIT binary patch delta 6940 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 aahp--QN+bwJl+nP{LatI7sVZx(EkOSQ6K;S delta 5061 zcmai23wTx4m0th8k8^T!2_ZKLIe91KO-Oji>w-W?0z^YV2!ucwxg=KzToNQf2m)83 zRck4V2jA5C=$Jn60nrNqL9rGU3hLO7DB7ws(~fntpwn8lCG($ilW1o;_Dk}ez1RNN z+I#=&vG>lm@5PSq!gK1etAnW{YCd3#ul4ktu3xXllSrRV4n-|SHP%0Q^2Y*uS1 zST?_FexP%;M*xo(vGAG&2{YVrUJOON8A=$R??QrC5~WE;B4kK&dt2v*_E0Fep=^DZ z2QDOgF&ru8$%HAo3#neDA>EAe<+?RwLQ>4pM#@qh*${1gSLf>XwsAUgA>Nf6J6hX< z9UYbJEkPZ55S@nYo(CBy;DjiIBo{5KT@$!2P#y}jttwyGxuLaf)s*7J7NppV5{xu= zC*@+4c_1mxSq?GGoMd0zf?%K}xWR)l7^h*Zc`+&3aT&&&p5##}6Cv*4#^zCLIb4Rx z)+~NVNs*bIoMg5nCr>NIR7-d{IVy_I+}d6qHOP5mFdY>dWmTI6F3W zbXddlyqGUZ5La`ky(8$6Y%K6%p(Pn=8(G*HXkJ^tA#N&CK`VwWjeqgtb^OvimAfb&|H_?S z7ux8-Ig7nF&GHdr!Z;66OIm-8Rkd%!yRcV-P8)Q^(`vXtFlzKSzeG6&b17T_?y^U80^$k{y=sOgkxSc%TiaY z%2S12Riqe#ZZ7i5pe-u#s*#pRr)Y5?v@sZ~Qq(A~DpM>P+Uh_@U2t=!9hyr$Do%~@ zsJk?UozY?TKjEZuU0JT5oN5!unRy!0T7Z>G6hXl@s0{hk!dZ8BDFr@1{ecZbXq zlk34|BUb#34e+3Q-q%;{1=3uCHxh_ zUnTrCdxExc-5KY^D{o4Yye*mXj+Dx;Wt{wmw7n}e@_x_Q%l4t>0~-B3jebOftFlLD8 zh?8N6XSE+D!;vT>kR;_ukx4LQCQ_vq>9PnJtk#*b8d(P?)gmX4TKUu}6dpiQfD##v zQkjfVG6QAQC^y?mrkndGn_=}CgJcK~;l5D`i+ZI&iQ!CG-YZut@xkGD9fhm0#0M>c zn8O%y2*Z5vMUWJMVU1-pYRBY!qr-=+g^fP(!z*`(q9Lq$F75b=~6edkt>{R~fO-{yp(gSx58jevjcXVj{BM zaE5z@3B@U7^8s-%K%eH1FmO)D3zE%9I49@%b&5f0o1}?gJh`1fZYN1HCd*h%l@?qs zYcWlBVutKOrR+f!omwsX`0d7QImom05U!ACaHX8UTset(avE33SzHm8*C{+l;X4$* z&-3y_)XOJWB$v>@w0(B!;^3=Ly6l-lz1 zyz2FZB}F{njHDR^`pAO!AK(bHrp$KtadrR5sMK0WaRANcg_0tL7V|`Lq51lZa#wI< zFIJgaMPZ!P3Mui&7%m^$&8Zb*$2ZaY%jx~AC6&{SKr?f(g_(7YRAZIQL#r&q8o34` zX~#Ob4sEgn>&-_hYO<~+%Wf%`dTe0DuqyL37J?c&VVM*W6FalK_*&U9h^ZaK)DB=+ zpslmN1D)oLRlcN+LI+;B(J+t8Bqu@UTGj@uwB)6EMr6T{zjwnXq9zq?y9{hDp2TM`Fb zp8ggS{(DSvncU#RZBH^J6J>=oV~_n^2h;v;8qBC^yygiu%1~@#ee04;URd&Qz0BhG zDr}P#*e*fbAnTBHBMIFpoA52^!cDRr-(l^%)x4*2;_^GW*P*fvo9%c{l+D=9mYZdI zCho%BBq@jG?;hMs8iRH~-$z-y-MXKxuKpm`?9lewxwT6wuuq&=VU|`Io-J1JTJigR zb6(Z(wEnIYn0sn8m^F4N0T18@mS2h=wEdFDD9j@RQNKJSSJ6K~9s>1v*!I*T_@Q~M zs-XFwA%2(Pa#&vZaRfh&-~e6pH*V7g3YTu^J{&ADSdO2H;BbSXKS?J$?CO-tEemdE zeD0AHGF^zfxb3@TI_@!NRZpz6Xwt=xUL0XrNRbj8wP`ApG@Ck&hgAZeVUFuxBVuNh z2u9tpZ-~0%jJlLNW_f&g_NxWCEhb4>#;l2H*5p>`&q|)c&kbiUUQ}X}rhT=>WKtp6PtqPEX-}{OJ}KjIz$}g4{jSt`ZhW82Gl_Kaj^)%G89bD1l@U>4Su z^28kF7~6}p4ryTLl~GQs6K2m^IrsP)Ymn0liC;zV2J_U1x2*Ja4Q!L=st<27hM2hw z3U+>NxSWHXcMX@z?hN2Nl4z~!zwC}>q+5pC0u~b6rt5gT=fNoGV}fEhQ+N>d z@c_#0w-ew3X*@i@%_nw!W?KA_NBURd&nWg-+46;Te;7png<{?qeCRV`?TPIKiXQKG zNj`lPVKq1`LvS?Ar|U7v#c@{n6EX!Sr4BDi177BNe@d>!X%?X~ax>2ISbaqv!fUc0 zuglZ;r96*c$*U~E=kX?w;kV>-KBzRj4G$kw$#|FlZ+MUI<@Zs}$I}%2mXGz{p@vVU zMSL!;;5#YA2ht|QT*OX%%3AhE^SzqkVXM0FeZl%yfjb#tN!Y5u^mcG*i_4CBp2ao9X8O=($g~d_>pOoL%WF3D+VpC!TDpq;9_*|xk zQbVldz;15A!~Tw=Dz5R6ik~~OR}EuLbaqQKvsMjJnMqls|u(f=NT$&7ZbzN+t8!IVL?kF_w}7EHCz!jy1|;j7TjAJQI}bDAsP#1 zzrrt%24ie@(PVH(B@ zq#ON4_E8vBy}lxj-doDo!+&VqFtQMBQS`EYGME%OUn)NuR|39}RJ+ dX`EK6>Gna!I<96UuwOwT7ohU6Ma^`_{0~