From bb3c8a3499ec4a758f444ffb5ed15f4f3fc2961d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EC=A7=80=EC=9D=B8?= Date: Wed, 21 Jan 2026 16:25:01 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B0=9C=EC=A3=BC=EA=B8=B0=EA=B4=80>=20?= =?UTF-8?q?=EA=B1=B4=EC=84=A4=ED=98=84=EC=9E=A5=20=EC=88=98=EC=A0=95=20:?= =?UTF-8?q?=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=EC=8B=9C=20=EA=B1=B4=EC=84=A4=EC=82=AC=20=EC=A7=80=EC=A0=95=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC(=EC=A7=80=EC=A0=95=20=EA=B1=B4=EC=84=A4?= =?UTF-8?q?=EC=82=AC=20=EC=97=86=EC=9D=84=20=EB=95=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../input/DrillingInputController.java | 4 +- .../impl/DrillingInputServiceImpl.java | 56 +++++-- .../service/impl/ProjectListServiceImpl.java | 141 +++++++++++------- 3 files changed, 132 insertions(+), 69 deletions(-) diff --git a/src/main/java/geoinfo/drilling/input/DrillingInputController.java b/src/main/java/geoinfo/drilling/input/DrillingInputController.java index f5068555..8252bc2b 100644 --- a/src/main/java/geoinfo/drilling/input/DrillingInputController.java +++ b/src/main/java/geoinfo/drilling/input/DrillingInputController.java @@ -112,7 +112,7 @@ public class DrillingInputController { try { - HashMap hashMap = drillingInputService.drillingInputAdd(request, params); + HashMap hashMap = drillingInputService.drillingInputAdd(request, response, params); int nRetCode = MyUtil.getIntegerFromObject(hashMap.get("v_RetCode")); String lpszRetMsg = MyUtil.getStringFromObject(hashMap.get("v_RetMsg")); @@ -363,7 +363,7 @@ public class DrillingInputController { HashMap params = MyUtil.JSONObjectToHashMap(jsonObject); try { - HashMap hashMap = drillingInputService.drillingInputModify(request, params); + HashMap hashMap = drillingInputService.drillingInputModify(request, response, params); int nRetCode = MyUtil.getIntegerFromObject(hashMap.get("v_RetCode")); String lpszRetMsg = MyUtil.getStringFromObject(hashMap.get("v_RetMsg")); diff --git a/src/main/java/geoinfo/drilling/input/service/impl/DrillingInputServiceImpl.java b/src/main/java/geoinfo/drilling/input/service/impl/DrillingInputServiceImpl.java index 23257558..c99d2f9d 100644 --- a/src/main/java/geoinfo/drilling/input/service/impl/DrillingInputServiceImpl.java +++ b/src/main/java/geoinfo/drilling/input/service/impl/DrillingInputServiceImpl.java @@ -100,12 +100,18 @@ public class DrillingInputServiceImpl implements DrillingInputService { Long constCompanyCode = drillingInputMapper.findConstCompanyCodeByConstCompanyName(params); params.put("constCompanyCode", constCompanyCode); drillingInputMapper.spAddTblCsi(params); - // if( 기업사용자를 지정했다면 ) { - // String constUserId = "복호화된 기업 사용자 아이디"; - // params.put("constUserId", constUserId); - // params.put("CID", params.get("cid")); //drillingInputMapper.spAddTblCsi(params); 호출 후 생성된 cid 값 - // saveAndInsertMeta(params, request, response); - // } + /** + * 기업사용자를 지정했다면 + * : 기업사용자 프로젝트 목록에도 등록이 필요함. 등록시 필요한 파라미터를 셋팅한다. + * @constUserId 복호화된 기업 사용자 아이디 + * @holeNumber 시추공 수(기업사용자 프로젝트 등록시 필수입력값으로, 신규생성임을 표시하기 위해 -999 입력) + */ + if (!"".equals(encryptId)) { + String constUserId = decryptId; + params.put("constUserId", constUserId); + params.put("holeNumber", -999); + saveAndInsertMeta(params, request, response); + } return params; } catch (SQLException e) { throw new Exception( e.getMessage() ); @@ -366,6 +372,23 @@ public class DrillingInputServiceImpl implements DrillingInputService { // // saveAndInsertMeta(params, request, response); //} + + + if (!"".equals(encryptId)) { + EgovMap tbl = null; // cid로 발주기관 등록 건설현장 정보 조회(PROJECT_CODE 취득) + String constUserId = decryptId; + params.put("constUserId", constUserId); + tbl = drillingInputMapper.getItemByCid( params ); + if (tbl.get("projectCode") != null && !"".equals(tbl.get("projectCode"))) { // PROJECT_CODE가 존재하면 입력중인 프로젝트. + // 입력중인 프로젝트 + // 입력여부 판단 필요 + } else { // 입력된 정보 없음. INSERT 처리 후 끝 + params.put("constProjectCode", ""); + params.put("holeNumber", -999); + } + } + saveAndInsertMeta(params, request, response); + return spUdtTblCsiParams; } catch (SQLException e) { throw new Exception( e.getMessage() ); @@ -396,14 +419,15 @@ public class DrillingInputServiceImpl implements DrillingInputService { public ModelAndView saveAndInsertMeta(@RequestParam HashMap params, HttpServletRequest request, HttpServletResponse response) throws Exception { HashMap getProviderInfoParams = new HashMap(); - getProviderInfoParams.put("userid", params.get("constUserId")); + getProviderInfoParams.put("USERID", params.get("constUserId")); EgovMap constUserInfo = commonService.getProviderInfo(getProviderInfoParams); // 기업사용자 회원정보 // 1. 전달받은 파라미터 설정 HashMap metaParams = new HashMap(); metaParams.put("REPORT_TYPE", "CH"); metaParams.put("PROJECT_CODE", params.get("constProjectCode")); // 프로젝트코드 - metaParams.put("TEMP_CONSTRUCT_SITE_INFO-CID", params.get("CID")); + metaParams.put("TEMP_CONSTRUCT_SITE_INFO-CID", params.get("v_CID")); + metaParams.put("constUserId", params.get("constUserId")); // 발주기관 선택 건설사 계정 metaParams.put("INPUT_COMPANY", params.get("constCompanyName")); // 입력기관. metaParams.put("DEPT", constUserInfo.get("partName")); // 부서명. 해당 기업 사용자의 부서명 조회해서 넣기. @@ -414,15 +438,15 @@ public class DrillingInputServiceImpl implements DrillingInputService { metaParams.put("TEL", params.get("constCompanyTel")); // 전화번호 <- 건설현장 입력 시 사용된 전화번호를 넣는다. metaParams.put("PHONE", params.get("constCompanyTel")); // 핸드폰 <- 건설현장 입력 시 사용된 전화번호를 넣는다. - metaParams.put("SEARCHDATE", null); // 시추 날짜 + metaParams.put("SEARCHDATE", ""); // 시추 날짜 metaParams.put("PROJECT_NAME", params.get("constName")); // 사업명 - metaParams.put("HOLE_NUMBER", null); // 총 시추공수 - metaParams.put("HOLE_ADMIN_NAME", null); // 시추담당자 - metaParams.put("HOLE_COMPANY", null); // 시추업체 - metaParams.put("HOLE_SPOT_SD", null); // 시추지역 - 시도 - metaParams.put("HOLE_SPOT_SGG", null); // 시추지역 - 시군구 - metaParams.put("HOLE_SPOT", null); // 시추지역 - 지역명 - metaParams.put("REMARK", null); // 비고 + metaParams.put("HOLE_NUMBER", params.get("holeNumber")); // 총 시추공수 + metaParams.put("HOLE_ADMIN_NAME", ""); // 시추담당자 + metaParams.put("HOLE_COMPANY", ""); // 시추업체 + metaParams.put("HOLE_SPOT_SD", ""); // 시추지역 - 시도 + metaParams.put("HOLE_SPOT_SGG", ""); // 시추지역 - 시군구 + metaParams.put("HOLE_SPOT", ""); // 시추지역 - 지역명 + metaParams.put("REMARK", ""); // 비고 metaParams.put("rUrl", ""); // 2. ProjectListController의 insertMeta 호출 diff --git a/src/main/java/geoinfo/regi/projectList/service/impl/ProjectListServiceImpl.java b/src/main/java/geoinfo/regi/projectList/service/impl/ProjectListServiceImpl.java index 8f386cc4..950874d3 100644 --- a/src/main/java/geoinfo/regi/projectList/service/impl/ProjectListServiceImpl.java +++ b/src/main/java/geoinfo/regi/projectList/service/impl/ProjectListServiceImpl.java @@ -65,63 +65,102 @@ public class ProjectListServiceImpl implements ProjectListService { String oREMARK = sUtil.checkNull(String.valueOf(request.getParameter("REMARK"))); String oREPORT_TYPE =sUtil.checkNull(String.valueOf(params.get("REPORT_TYPE"))); String oTEMP_CONSTRUCT_SITE_INFO_CID =sUtil.checkNull(String.valueOf(params.get("TEMP_CONSTRUCT_SITE_INFO-CID"))); // 발주기관에서 생성한 프로젝트 식별 번호. TEMP_CONSTRUCT_SITE_INFO 테이블의 cid 컬럼 값. - if("".equals(oPROJECT_CODE)){ +// if("".equals(oPROJECT_CODE)){ + if(oPROJECT_CODE!= null || "".equals(oPROJECT_CODE)){ HashMap prjCd = new HashMap(); prjCd = getProjectCd(params); oPROJECT_CODE=(String)prjCd.get("P_CODE")+prjCd.get("P_NUM"); //System.out.println(oREPORT_TYPE); - params.put("PROJECT_CODE", oPROJECT_CODE); - params.put("PROJECT_NAME", oPROJECT_NAME); - params.put("INPUT_COMPANY", oINPUT_COMPANY); - params.put("DEPT", oDEPT); - params.put("ADMIN_NAME", oADMIN_NAME); - params.put("EMAIL", oEMAIL); - params.put("TEL", oTEL); - params.put("PHONE", oPHONE); - params.put("SEARCHDATE", oSEARCHDATE); - params.put("INPUTDATE", oINPUTDATE); - params.put("HOLE_NUMBER", oHOLE_NUMBER); - params.put("HOLE_ADMIN_NAME", oHOLE_ADMIN_NAME); - params.put("HOLE_COMPANY", oHOLE_COMPANY); - params.put("HOLE_TYPE", oHOLE_TYPE); - params.put("HOLE_SPOT_SD", oHOLE_SPOT_SD); - params.put("HOLE_SPOT_SGG", oHOLE_SPOT_SGG); - params.put("HOLE_SPOT", oHOLE_SPOT); - params.put("REMARK", oREMARK); - params.put("REPORT_TYPE", oREPORT_TYPE); - params.put("USERID",request.getSession().getAttribute("USERID")); - params.put("MODUSERID",request.getSession().getAttribute("USERID")); - //System.out.println("!!!!!!!!!!!params!!!!!!!!!!!!!!!+"+oPROJECT_NAME); - - //TEMP_PROJECT_INFO - params.put("PROJECT_START_SPOT_SD", oHOLE_SPOT_SD); - params.put("PROJECT_START_SPOT_SGG", oHOLE_SPOT_SGG); - params.put("PROJECT_START_SPOT", oHOLE_SPOT); - params.put("PROJECT_END_SPOT_SD", oHOLE_SPOT_SD); - params.put("PROJECT_END_SPOT_SGG", oHOLE_SPOT_SGG); - params.put("PROJECT_WORK_COMPANY", oHOLE_COMPANY); - params.put("PROJECT_HOLE_NUMBER", oHOLE_NUMBER); - params.put("STATE", "4"); - params.put("REPORT_TYPE", "CH"); - - // 사업명(프로젝트 명) 중복 검사를 수행한다. - - ArrayList> arrProjectCodeAndProjectName = getProjectCodeAndProjectNameByProjectName(params); - if( 0 < arrProjectCodeAndProjectName.size() ) { - //여기에서 프로젝트 중복되어서 다른 이름으로 지정해야한다는 메시지를 사용자에게 보여줘야 함. - model.addObject("result", "false"); - model.addObject("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력 해주세요."); - model.setViewName("redirect:/index_db.do"); - return model; - } - - affectRow = insertMeta(params); - insertProject(params); - if("/insertMeta.do".equals(topPath)){ - rUrl = "/meta_info.do?REPORT_TYPE="+oREPORT_TYPE+"&PROJECT_CODE="+oPROJECT_CODE; - } + params.put("PROJECT_CODE", oPROJECT_CODE); + // PROJECT_NAME, INPUT_COMPANY, DEPT ADMIN_NAME, EMAIL ==> 이동(아래 >>발주기관이 건설사 계정<< if else 블록으로 이동) +// params.put("PROJECT_NAME", oPROJECT_NAME); +// params.put("INPUT_COMPANY", oINPUT_COMPANY); +// params.put("DEPT", oDEPT); +// params.put("ADMIN_NAME", oADMIN_NAME); +// params.put("EMAIL", oEMAIL); + params.put("TEL", oTEL); + params.put("PHONE", oPHONE); + params.put("SEARCHDATE", oSEARCHDATE); + params.put("INPUTDATE", oINPUTDATE); + params.put("HOLE_NUMBER", oHOLE_NUMBER); +// params.put("HOLE_ADMIN_NAME", oHOLE_ADMIN_NAME); (아래 >>발주기관이 건설사 계정<< if else 블록으로 이동) +// params.put("HOLE_COMPANY", oHOLE_COMPANY); (아래 >>발주기관이 건설사 계정<< if else 블록으로 이동) + params.put("HOLE_TYPE", oHOLE_TYPE); + params.put("HOLE_SPOT_SD", oHOLE_SPOT_SD); + params.put("HOLE_SPOT_SGG", oHOLE_SPOT_SGG); +// params.put("HOLE_SPOT", oHOLE_SPOT); (아래 >>발주기관이 건설사 계정<< if else 블록으로 이동) +// params.put("REMARK", oREMARK); (아래 >>발주기관이 건설사 계정<< if else 블록으로 이동) + params.put("REPORT_TYPE", oREPORT_TYPE); + params.put("MODUSERID",request.getSession().getAttribute("USERID")); + //System.out.println("!!!!!!!!!!!params!!!!!!!!!!!!!!!+"+oPROJECT_NAME); + + if (params.get("constUserId") != null && !"".equals(params.get("constUserId"))) { + // 발주기관이 건설사 계정을 지정한 경우 건설사명, 부서, 담당자명, 이메일, 프로젝트명을 파라미터에서 넘어온 값으로 셋팅한다. + String INPUT_COMPANY = params.get("INPUT_COMPANY") != null ? (String)params.get("INPUT_COMPANY") : ""; + String DEPT = params.get("DEPT") != null ? (String)params.get("DEPT") : ""; + String ADMIN_NAME = params.get("ADMIN_NAME") != null ? (String)params.get("ADMIN_NAME") : ""; + String EMAIL = params.get("EMAIL") != null ? (String)params.get("EMAIL") : ""; + String PROJECT_NAME = params.get("PROJECT_NAME") != null ? (String)params.get("PROJECT_NAME") : ""; + String HOLE_ADMIN_NAME = params.get("HOLE_ADMIN_NAME") != null ? (String)params.get("HOLE_ADMIN_NAME") : ""; + String HOLE_COMPANY = params.get("HOLE_COMPANY") != null ? (String)params.get("HOLE_COMPANY") : ""; + String HOLE_SPOT = params.get("HOLE_SPOT") != null ? (String)params.get("HOLE_SPOT") : ""; + String REMARK = params.get("REMARK") != null ? (String)params.get("REMARK") : ""; + + params.put("USERID",params.get("constUserId")); + params.put("INPUT_COMPANY",INPUT_COMPANY); + params.put("DEPT",DEPT); + params.put("ADMIN_NAME",ADMIN_NAME); + params.put("EMAIL",EMAIL); + params.put("PROJECT_NAME",PROJECT_NAME); + params.put("HOLE_ADMIN_NAME", HOLE_ADMIN_NAME); + params.put("HOLE_COMPANY", HOLE_COMPANY); + params.put("HOLE_SPOT", HOLE_SPOT); + params.put("REMARK", REMARK); + + } else { + params.put("USERID",request.getSession().getAttribute("USERID")); + params.put("PROJECT_NAME", oPROJECT_NAME); + params.put("INPUT_COMPANY", oINPUT_COMPANY); + params.put("DEPT", oDEPT); + params.put("ADMIN_NAME", oADMIN_NAME); + params.put("EMAIL", oEMAIL); + params.put("TEL", oTEL); + params.put("HOLE_ADMIN_NAME", oHOLE_ADMIN_NAME); + params.put("HOLE_COMPANY", oHOLE_COMPANY); + params.put("HOLE_SPOT", oHOLE_SPOT); + params.put("REMARK", oREMARK); + params.put("PROJECT_WORK_COMPANY", oHOLE_COMPANY); + params.put("PROJECT_START_SPOT", oHOLE_SPOT); + } + //TEMP_PROJECT_INFO + params.put("PROJECT_START_SPOT_SD", oHOLE_SPOT_SD); + params.put("PROJECT_START_SPOT_SGG", oHOLE_SPOT_SGG); +// params.put("PROJECT_START_SPOT", oHOLE_SPOT); (상단 >>발주기관이 건설사 계정<< if else 블록으로 이동) + params.put("PROJECT_END_SPOT_SD", oHOLE_SPOT_SD); + params.put("PROJECT_END_SPOT_SGG", oHOLE_SPOT_SGG); +// params.put("PROJECT_WORK_COMPANY", oHOLE_COMPANY); (상단 >>발주기관이 건설사 계정<< if else 블록으로 이동) + params.put("PROJECT_HOLE_NUMBER", oHOLE_NUMBER); + params.put("STATE", "4"); + params.put("REPORT_TYPE", "CH"); + + // 사업명(프로젝트 명) 중복 검사를 수행한다. + + ArrayList> arrProjectCodeAndProjectName = getProjectCodeAndProjectNameByProjectName(params); + if( 0 < arrProjectCodeAndProjectName.size() ) { + //여기에서 프로젝트 중복되어서 다른 이름으로 지정해야한다는 메시지를 사용자에게 보여줘야 함. + model.addObject("result", "false"); + model.addObject("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력 해주세요."); + model.setViewName("redirect:/index_db.do"); + return model; + } + + affectRow = insertMeta(params); + insertProject(params); + if("/insertMeta.do".equals(topPath)){ + rUrl = "/meta_info.do?REPORT_TYPE="+oREPORT_TYPE+"&PROJECT_CODE="+oPROJECT_CODE; + } }else{ params.put("PROJECT_CODE", oPROJECT_CODE); params.put("PROJECT_NAME", oPROJECT_NAME);