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 1/2] =?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); From e638bc48e6a70087d4eb0f3d1aba295a41a290fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EC=A7=80=EC=9D=B8?= Date: Mon, 26 Jan 2026 15:39:41 +0900 Subject: [PATCH 2/2] =?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=EB=93=B1=EB=A1=9D?= =?UTF-8?q?=EC=8B=9C=20=EA=B1=B4=EC=84=A4=EC=82=AC=20=EC=9E=90=EB=8F=99?= =?UTF-8?q?=EA=B2=80=EC=83=89=20=ED=86=B5=ED=95=98=EC=97=AC=20=EC=A7=80?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=EA=B1=B4=EC=84=A4=EC=82=AC=20=EA=B3=84?= =?UTF-8?q?=EC=A0=95=EA=B3=BC=20=EC=97=B0=EB=8F=99=EC=9E=91=EC=97=85=20=20?= =?UTF-8?q?=20=20encryptId=20=EA=B0=92=20=EC=97=AC=EB=B6=80:=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=ED=95=98=EB=A9=B4=EC=84=9C=20=EA=B1=B4=EC=84=A4?= =?UTF-8?q?=EC=82=AC=20=EC=A7=80=EC=A0=95=20=EC=B2=98=EB=A6=AC=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80,=20orgConstUserid=20=EA=B0=92=20=EC=97=AC=EB=B6=80:?= =?UTF-8?q?=20=EC=B5=9C=EC=B4=88=20=EB=93=B1=EB=A1=9D=EC=8B=9C=EC=97=90=20?= =?UTF-8?q?=EA=B1=B4=EC=84=A4=EC=82=AC=20=EC=A7=80=EC=A0=95=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80=20=20=20=20=20=20=20=20*=201)=20encryptId=20=3D=3D=20?= =?UTF-8?q?""=20&&=20orgConstUserid=20=3D=3D=20""=20:=20=EA=B8=B0=EC=A7=80?= =?UTF-8?q?=EC=A0=95=20=ED=95=98=EC=A7=80=20=EC=95=8A=EC=95=98=EA=B3=A0=20?= =?UTF-8?q?=EC=83=88=EB=A1=9C=20=EC=A7=80=EC=A0=95=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EC=9D=8C=20->=20spUdtTblCsi=20=ED=98=B8=EC=B6=9C=20?= =?UTF-8?q?=20=20=20=20=20=20=20*=202)=20encryptId=20=3D=3D=20""=20&&=20or?= =?UTF-8?q?gConstUserid=20!=3D=20""=20:=20=EA=B8=B0=EC=A7=80=EC=A0=95?= =?UTF-8?q?=ED=96=88=EB=8A=94=EB=8D=B0=20=EB=AF=B8=EC=84=A0=EC=A0=95?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20->=20TEMP=5FMETA=5F~,=20TEMP=5FPROJECT=5F~=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EA=B7=B8=EB=A6=AC=EA=B3=A0=20TEMP=5FCONST?= =?UTF-8?q?RUCT=5F~=20UPDATE=20=EC=99=84=EB=A3=8C=20=ED=9B=84=20spUdtTblCs?= =?UTF-8?q?i=20=ED=98=B8=EC=B6=9C=20=20=20=20=20=20=20=20*=203)=20encryptI?= =?UTF-8?q?d=20!=3D=20""=20&&=20orgConstUserid=20=3D=3D=20""=20:=20?= =?UTF-8?q?=EA=B8=B0=EC=A7=80=EC=A0=95=20=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EC=95=98=EB=8A=94=EB=8D=B0=20=EC=83=88=EB=A1=9C=20=EC=A7=80?= =?UTF-8?q?=EC=A0=95=ED=95=A8=20=20=20=20=20=20=20->=20SaveAndInsertMeta?= =?UTF-8?q?=20=ED=98=B8=EC=B6=9C.=20(=EA=B8=B0=EC=A1=B4=EC=97=90=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EB=90=9C=20PROJECT=5FCODE=20=EC=97=86?= =?UTF-8?q?=EC=9D=8C,=20TEMP=5FMETA~,=20TEMP=5FPROJECT~=EC=97=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80)=20=EA=B7=B8=EB=A6=AC=EA=B3=A0=20spUdtTblCsi?= =?UTF-8?q?=20=ED=98=B8=EC=B6=9C=20=20=20=20=20=20=20=20*=204)=20encryptId?= =?UTF-8?q?=20!=3D=20""=20&&=20orgConstUserid=20!=3D=20""=20:=20=EA=B8=B0?= =?UTF-8?q?=EC=A7=80=EC=A0=95=ED=96=88=EA=B3=A0=20=EA=B7=B8=EB=8C=80?= =?UTF-8?q?=EB=A1=9C=20=EB=91=A0=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20->=20spUdtTblCsi=20=ED=98=B8=EC=B6=9C?= =?UTF-8?q?=20=20=20=20=20=20=20=20*=205)=20encryptId=20!=3D=20""=20&&=20o?= =?UTF-8?q?rgConstUserid=20!=3D=20""=20:=20=EA=B8=B0=EC=A7=80=EC=A0=95?= =?UTF-8?q?=ED=96=88=EB=8A=94=EB=8D=B0=20=EB=8B=A4=EB=A5=B8=20=EC=82=AC?= =?UTF-8?q?=EB=9E=8C=EC=9C=BC=EB=A1=9C=20=EC=A7=80=EC=A0=95=20=20=20=20=20?= =?UTF-8?q?=20=20=20->=20orgConstUser=20=EC=9E=85=EB=A0=A5=20=EC=A7=84?= =?UTF-8?q?=ED=96=89=20=EC=97=AC=EB=B6=80=20=ED=8C=90=EB=8B=A8=20=EC=BF=BC?= =?UTF-8?q?=EB=A6=AC=20=EC=88=98=ED=96=89()=20=20=20=20=20=20=20=20*=20=20?= =?UTF-8?q?=20=20=205-1)=20=20orgConstUser=EA=B0=80=20=EC=9E=85=EB=A0=A5?= =?UTF-8?q?=EC=9D=84=20=EC=8B=9C=EC=9E=91=ED=96=88=EC=9D=8C=20->=20spUdtTb?= =?UTF-8?q?lCsiParams.put("message",=20'=EA=B8=B0=EC=97=85=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=9E=90=20=EC=88=98=EC=A0=95=20=EB=B6=88=EA=B0=80.?= =?UTF-8?q?=20=EC=9D=B4=EC=A0=84=20=EA=B8=B0=EC=97=85=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=EA=B0=80=20=EC=9D=B4=EB=AF=B8=20=EC=9E=85=EB=A0=A5?= =?UTF-8?q?=EC=9D=84=20=EC=8B=9C=EC=9E=91=ED=95=9C=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=EC=A0=9D=ED=8A=B8=EC=9E=85=EB=8B=88=EB=8B=A4');=20//=20?= =?UTF-8?q?=EB=B0=9C=EC=A3=BC=EA=B8=B0=EA=B4=80=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=EC=97=90=EA=B2=8C=20=20=ED=95=B4=EB=8B=B9=20=EB=A9=94?= =?UTF-8?q?=EC=8B=9C=EC=A7=80=20=EB=B3=B4=EC=97=AC=EC=A3=BC=EA=B8=B0=20=20?= =?UTF-8?q?=20=20=20=20=20=20*=20=20=20=20=205-2)=20=20orgConstUser?= =?UTF-8?q?=EA=B0=80=20=EC=9E=85=EB=A0=A5=EC=9D=84=20=20=20=20=20=20?= =?UTF-8?q?=EC=A0=84=EC=9E=84=20->=20=EA=B8=B0=EC=A7=80=EC=A0=95=EA=B3=84?= =?UTF-8?q?=EC=A0=95=20=EC=82=AD=EC=A0=9C=ED=95=98=EA=B3=A0=20=20SaveAndIn?= =?UTF-8?q?sertMeta=20=ED=98=B8=EC=B6=9C.=20(=EA=B8=B0=EC=A1=B4=EC=97=90?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1=EB=90=9C=20PROJECT=5FCODE=20=EC=97=86?= =?UTF-8?q?=EC=9D=8C,=20TEMP=5FMETA~,=20TEMP=5FPROJECT~=EC=97=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80)=20=EA=B7=B8=EB=A6=AC=EA=B3=A0=20spUdtTblCsi?= =?UTF-8?q?=20=ED=98=B8=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../input/DrillingInputController.java | 35 ++++- .../input/service/DrillingInputMapper.java | 5 + .../input/service/DrillingInputService.java | 6 +- .../impl/DrillingInputServiceImpl.java | 122 ++++++++++++++---- .../impl/DrillingInquiryServiceImpl.java | 31 +++-- .../service/impl/ProjectListServiceImpl.java | 32 ++++- .../drilling/input/DrillingInputMapper.xml | 54 +++++++- .../views/drilling/input/drilling_input.jsp | 79 +++++++++++- 8 files changed, 319 insertions(+), 45 deletions(-) diff --git a/src/main/java/geoinfo/drilling/input/DrillingInputController.java b/src/main/java/geoinfo/drilling/input/DrillingInputController.java index 8252bc2b..56cad1e3 100644 --- a/src/main/java/geoinfo/drilling/input/DrillingInputController.java +++ b/src/main/java/geoinfo/drilling/input/DrillingInputController.java @@ -421,5 +421,38 @@ public class DrillingInputController { return jSONOResponse; } - + + /** + * 발주기관 건설현장 수정화면 - 건설사 미선정 처리 + * @param request + * @param strJSON + * @param response + * @return + * @throws Exception + */ + @RequestMapping(value = "/drilling/input/uncheckConstCompany.do", method = RequestMethod.POST) + @ResponseBody + public JSONObject modifyUncheckConstCompany( HttpServletRequest request, @RequestParam HashMap params, HttpServletResponse response) throws Exception { + + JSONObject jsonResult = new JSONObject(); +// HashMap params = new HashMap<>(); + int rowCnt = 0; // 처리 행 개수(3-정상:TEMP_META_INFO 정보, TEMP_PROJECT_INFO 정보 DELETE됨, TEMP_CONSTRUCTION_SITE_INFO 정보UPDATE됨) + + rowCnt = drillingInputService.deleteTempMetaInfo(params); + rowCnt += drillingInputService.deleteTempProjectInfo(params); + rowCnt += drillingInputService.updateTempConstructSiteInfoSetPROJECT_CODE_NULL(params); + + if (rowCnt < 3) { + jsonResult.put("resultCode", rowCnt); + jsonResult.put("result", "FAIL"); + jsonResult.put("message", "삭제처리 중 오류가 발생했습니다."); + } else { + jsonResult.put("resultCode", rowCnt); + jsonResult.put("result", "SUCCESS"); + jsonResult.put("message", "삭제되었습니다."); + } + + + return jsonResult; // @ResponseBody이므로 반환 값은 필요 없습니다. + } } diff --git a/src/main/java/geoinfo/drilling/input/service/DrillingInputMapper.java b/src/main/java/geoinfo/drilling/input/service/DrillingInputMapper.java index 272da038..5a0b65c8 100644 --- a/src/main/java/geoinfo/drilling/input/service/DrillingInputMapper.java +++ b/src/main/java/geoinfo/drilling/input/service/DrillingInputMapper.java @@ -22,6 +22,8 @@ public interface DrillingInputMapper { public List sPGetTblCsiByCid(HashMap params) throws SQLException; public EgovMap getItemByCid(HashMap params) throws SQLException; public EgovMap getItemByProjectCode(HashMap params) throws SQLException; + public int selectConstructCompanyProjectByProjectCodeCnt(HashMap params) throws SQLException; + public EgovMap selectConstructCompanyProjectWriting(HashMap params) throws SQLException; public int updateProjectCodeAndProjectStateCodeByCid(HashMap params) throws SQLException; public int updateProjectCodeAndProjectStateCodeByProjectCode(HashMap params) throws SQLException; @@ -33,6 +35,9 @@ public interface DrillingInputMapper { * @throws SQLException */ public int insertConstructSiteHist(HashMap params) throws SQLException; + public int deleteTempMetaInfo(HashMap params) throws SQLException; + public int deleteTempProjectInfo(HashMap params) throws SQLException; + public int updateTempConstructSiteInfoSetPROJECT_CODE_NULL(HashMap params) throws SQLException; } diff --git a/src/main/java/geoinfo/drilling/input/service/DrillingInputService.java b/src/main/java/geoinfo/drilling/input/service/DrillingInputService.java index 7509ead5..8992e0ed 100644 --- a/src/main/java/geoinfo/drilling/input/service/DrillingInputService.java +++ b/src/main/java/geoinfo/drilling/input/service/DrillingInputService.java @@ -19,9 +19,13 @@ public interface DrillingInputService { List selectConstructCompanyList(HashMap params) throws Exception; Map selectConstructUserInfo(HashMap params) throws Exception; void getDepartments(HttpServletRequest request, HashMap params, JSONObject jsonResponse) throws Exception; + public int selectConstructCompanyProjectByProjectCodeCnt(HashMap params) throws Exception; HashMap updateProjectCodeAndProjectStateCodeByCid(HttpServletRequest request, HashMap params) throws Exception; HashMap updateProjectCodeAndProjectStateCodeByProjectCode(HttpServletRequest request, HashMap params) throws Exception; HashMap drillingInputModify(HttpServletRequest request, HttpServletResponse response, HashMap params) throws Exception; - + + public int deleteTempMetaInfo(HashMap params) throws Exception; + public int deleteTempProjectInfo(HashMap params) throws Exception; + public int updateTempConstructSiteInfoSetPROJECT_CODE_NULL(HashMap params) throws Exception; } 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 c99d2f9d..7659f36f 100644 --- a/src/main/java/geoinfo/drilling/input/service/impl/DrillingInputServiceImpl.java +++ b/src/main/java/geoinfo/drilling/input/service/impl/DrillingInputServiceImpl.java @@ -1,13 +1,5 @@ package geoinfo.drilling.input.service.impl; -import geoinfo.drilling.input.service.DrillingInputMapper; -import geoinfo.drilling.input.service.DrillingInputService; -import geoinfo.drilling.inquiry.service.DrillingInquiryService; -import geoinfo.main.login.service.LoginMapper; -import geoinfo.regi.common.service.CommonService; -import geoinfo.regi.projectList.ProjectListController; -import geoinfo.regi.projectList.service.ProjectListService; -import geoinfo.util.MyUtil; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; @@ -26,6 +18,14 @@ import org.springframework.web.servlet.ModelAndView; import egovframework.rte.psl.dataaccess.util.EgovMap; import geoinfo.com.CryptoUtil; +import geoinfo.drilling.input.service.DrillingInputMapper; +import geoinfo.drilling.input.service.DrillingInputService; +import geoinfo.drilling.inquiry.service.DrillingInquiryService; +import geoinfo.main.login.service.LoginMapper; +import geoinfo.regi.common.service.CommonService; +import geoinfo.regi.projectList.service.ProjectListService; +import geoinfo.util.MyUtil; +import ictway.comm.util.strUtil; @Service("drillingInputService") public class DrillingInputServiceImpl implements DrillingInputService { @@ -200,8 +200,12 @@ public class DrillingInputServiceImpl implements DrillingInputService { } } - - + + @Override + public int selectConstructCompanyProjectByProjectCodeCnt(HashMap params) throws Exception { + return drillingInputMapper.selectConstructCompanyProjectByProjectCodeCnt(params); + } + @Override public HashMap updateProjectCodeAndProjectStateCodeByCid(HttpServletRequest request, HashMap params) throws Exception { @@ -305,7 +309,7 @@ public class DrillingInputServiceImpl implements DrillingInputService { @Override public HashMap drillingInputModify(HttpServletRequest request, HttpServletResponse response, HashMap params) throws Exception { - // TODO Auto-generated method stub + strUtil sUtil = new strUtil(); String userId = (String)request.getSession().getAttribute("USERID"); params.put("CID", params.get("cid")); @@ -347,7 +351,7 @@ public class DrillingInputServiceImpl implements DrillingInputService { spUdtTblCsiParams.put("crtUserid", oldTempConstructSiteInfo.get("crtUserid")); spUdtTblCsiParams.put("modUserid", userId); spUdtTblCsiParams.put("userId", userId); - drillingInputMapper.spUdtTblCsi(spUdtTblCsiParams); +// drillingInputMapper.spUdtTblCsi(spUdtTblCsiParams); // 건설현장 입력 시, 기업사용자를 지정했다면 해당 건설현장을 해당 기업사용자의 프로젝트목록에 추가한다. 로직이 복잡해질까봐 필요한 큰 로직만 넣었습니다. // if( 기업사용자를 지정했다면 ) { @@ -374,20 +378,65 @@ public class DrillingInputServiceImpl implements DrillingInputService { //} - 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); - } + String orgConstUserid = ""; // 기존에 발주기관이 지정한 건설사 계정 + if (oldTempConstructSiteInfo.get("constUserid") != null && !"".equals(oldTempConstructSiteInfo.get("constUserid"))) { + orgConstUserid = sUtil.checkNull((String) oldTempConstructSiteInfo.get("constUserid")); + } + /** encryptId 값 여부: 수정하면서 건설사 지정 처리 여부 + * 1) encryptId == "" && orgConstUserid == "" : 기지정 하지 않았고 새로 지정하지 않음 -> spUdtTblCsi 호출 + * 2) encryptId == "" && orgConstUserid != "" : 기지정했는데 미선정으로 수정 -> TEMP_META_~, TEMP_PROJECT_~ 삭제 그리고 TEMP_CONSTRUCT_~ UPDATE 완료 후 spUdtTblCsi 호출 + * 3) encryptId != "" && orgConstUserid == "" : 기지정 하지 않았는데 새로 지정함 -> SaveAndInsertMeta 호출. (기존에 생성된 PROJECT_CODE 없음, TEMP_META~, TEMP_PROJECT~에 추가) 그리고 spUdtTblCsi 호출 + * 4) encryptId != "" && orgConstUserid != "" : 기지정했고 그대로 둠 -> spUdtTblCsi 호출 + * 5) encryptId != "" && orgConstUserid != "" : 기지정했는데 다른 사람으로 지정 -> orgConstUser 입력 진행 여부 판단 쿼리 수행() + * 5-1) orgConstUser가 입력을 시작했음 -> spUdtTblCsiParams.put("message", '기업사용자 수정 불가. 이전 기업사용자가 이미 입력을 시작한 프로젝트입니다'); // 발주기관 사용자에게 해당 메시지 보여주기 + * 5-2) orgConstUser가 입력을 전임 -> 기지정계정 삭제하고 SaveAndInsertMeta 호출. (기존에 생성된 PROJECT_CODE 없음, TEMP_META~, TEMP_PROJECT~에 추가) 그리고 spUdtTblCsi 호출 + */ + + if ("".equals(encryptId)) { + if ("".equals(orgConstUserid)) { // 1) +// drillingInputMapper.spUdtTblCsi(spUdtTblCsiParams); + } else { // 2) + deleteTempMetaInfo(oldTempConstructSiteInfo); + deleteTempProjectInfo(oldTempConstructSiteInfo); + updateTempConstructSiteInfoSetPROJECT_CODE_NULL(oldTempConstructSiteInfo); + } + drillingInputMapper.spUdtTblCsi(spUdtTblCsiParams); + } else { // !"".equals(encryptId) + if (orgConstUserid != null && "".equals(orgConstUserid)) { // 3) + 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); + drillingInputMapper.spUdtTblCsi(spUdtTblCsiParams); + } else { // !"".equals(orgConstUserId) + if (encryptId.equals(orgConstUserid)) { // 4) + } else { // !encryptId.equals(orgConstUserid) 5) + // 기업사용자 입력 진행 여부: !NULL -> 입력 전, NULL -> 입력 중(삭제불가) + EgovMap constCompanyProjectWriting = drillingInputMapper.selectConstructCompanyProjectWriting(oldTempConstructSiteInfo); + if (constCompanyProjectWriting == null) { // 5-1) + spUdtTblCsiParams.put("v_RetCode", 11); + spUdtTblCsiParams.put("v_RetMsg", "기업사용자 수정 불가. 이전 기업사용자가 이미 입력을 시작한 프로젝트입니다."); + return spUdtTblCsiParams; + } else { // 5-2) + deleteTempMetaInfo(oldTempConstructSiteInfo); + deleteTempProjectInfo(oldTempConstructSiteInfo); + params.put("holeNumber", -999); + params.put("constProjectCode", oldTempConstructSiteInfo.get("projectCode")); // 기존에 부여된 PROJECT_CODE 유지 + params.put("constUserId", decryptId); // 새로 선정한 건설사계정 + saveAndInsertMeta(params, request, response); + } + } + drillingInputMapper.spUdtTblCsi(spUdtTblCsiParams); + } } - saveAndInsertMeta(params, request, response); return spUdtTblCsiParams; } catch (SQLException e) { @@ -411,7 +460,23 @@ public class DrillingInputServiceImpl implements DrillingInputService { return drillingInputMapper.insertConstructSiteHist(histParams); } - + + @Override + public int deleteTempMetaInfo(HashMap params) throws Exception { + return drillingInputMapper.deleteTempMetaInfo(params); + } + + + @Override + public int deleteTempProjectInfo(HashMap params) throws Exception { + return drillingInputMapper.deleteTempProjectInfo(params); + } + + + @Override + public int updateTempConstructSiteInfoSetPROJECT_CODE_NULL(HashMap params) throws Exception { + return drillingInputMapper.updateTempConstructSiteInfoSetPROJECT_CODE_NULL(params); + } /** * 건설현장 입력 시, 기업사용자(수주기관)를 선택하고 저장 시, 입력된 프로젝트가 기업사용자 프로젝트 목록에 추가하는 메서드 @@ -426,7 +491,10 @@ public class DrillingInputServiceImpl implements DrillingInputService { 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("v_CID")); + metaParams.put("TEMP_CONSTRUCT_SITE_INFO-CID", params.get("v_CID")); // Add처리에서 넘어온 cid 값 + if (params.get("cid") != null && !"".equals(params.get("cid"))) { // Modify처리에서 넘어온 cid 값 + metaParams.put("TEMP_CONSTRUCT_SITE_INFO-CID", params.get("CID")); + } metaParams.put("constUserId", params.get("constUserId")); // 발주기관 선택 건설사 계정 metaParams.put("INPUT_COMPANY", params.get("constCompanyName")); // 입력기관. diff --git a/src/main/java/geoinfo/drilling/inquiry/service/impl/DrillingInquiryServiceImpl.java b/src/main/java/geoinfo/drilling/inquiry/service/impl/DrillingInquiryServiceImpl.java index a3c47dc2..f835f238 100644 --- a/src/main/java/geoinfo/drilling/inquiry/service/impl/DrillingInquiryServiceImpl.java +++ b/src/main/java/geoinfo/drilling/inquiry/service/impl/DrillingInquiryServiceImpl.java @@ -1,13 +1,5 @@ package geoinfo.drilling.inquiry.service.impl; -import geoinfo.drilling.input.service.DrillingInputMapper; -import geoinfo.drilling.input.service.DrillingInputService; -import geoinfo.drilling.inquiry.service.DrillingInquiryMapper; -import geoinfo.drilling.inquiry.service.DrillingInquiryService; -import geoinfo.main.login.service.LoginMapper; -import geoinfo.main.login.service.LoginService; -import geoinfo.util.MyUtil; - import java.sql.SQLException; import java.sql.Timestamp; import java.text.SimpleDateFormat; @@ -19,13 +11,20 @@ import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import oracle.sql.TIMESTAMP; - import org.json.simple.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import egovframework.rte.psl.dataaccess.util.EgovMap; +import geoinfo.com.CryptoUtil; +import geoinfo.drilling.input.service.DrillingInputMapper; +import geoinfo.drilling.input.service.DrillingInputService; +import geoinfo.drilling.inquiry.service.DrillingInquiryMapper; +import geoinfo.drilling.inquiry.service.DrillingInquiryService; +import geoinfo.main.login.service.LoginMapper; +import geoinfo.main.login.service.LoginService; +import geoinfo.util.MyUtil; +import oracle.sql.TIMESTAMP; @Service("drillingInquiryService") public class DrillingInquiryServiceImpl implements DrillingInquiryService { @@ -285,7 +284,17 @@ public class DrillingInquiryServiceImpl implements DrillingInquiryService { List datas = drillingInputMapper.sPGetTblCsiByCid(params); for( EgovMap data : datas ) { - + String orgConstUserId = ""; + if (data.get("constUserid")!= null /*&& !"".equals(data.get("constUserid"))*/) { + orgConstUserId = (String) data.get("constUserid"); + data.put("orgConstUserId", orgConstUserId); + } + + String encryptId = ""; + if (data.get("constUserid")!= null /*&& !"".equals(data.get("constUserid"))*/) { + encryptId = CryptoUtil.encryptQuickAES((String) data.get("constUserid")); + data.put("constUserid", encryptId); + } Long nConstCompanyCodeKey = MyUtil.getLongFromObject(data.get("constCompanyCode")); if( nConstCompanyCodeKey != null ) { params.put("constCompanyCode", nConstCompanyCodeKey); 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 950874d3..b45fee29 100644 --- a/src/main/java/geoinfo/regi/projectList/service/impl/ProjectListServiceImpl.java +++ b/src/main/java/geoinfo/regi/projectList/service/impl/ProjectListServiceImpl.java @@ -1,8 +1,10 @@ package geoinfo.regi.projectList.service.impl; import geoinfo.drilling.input.service.DrillingInputService; +import geoinfo.drilling.inquiry.service.DrillingInquiryService; import geoinfo.regi.projectList.service.ProjectListMapper; import geoinfo.regi.projectList.service.ProjectListService; +import geoinfo.util.MyUtil; import ictway.comm.util.strUtil; import ictway.comm.web.WebUtil; @@ -13,12 +15,15 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.json.simple.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.util.UrlPathHelper; +import egovframework.rte.psl.dataaccess.util.EgovMap; + @Service("projectListService") public class ProjectListServiceImpl implements ProjectListService { @@ -28,6 +33,9 @@ public class ProjectListServiceImpl implements ProjectListService { @Autowired private DrillingInputService drillingInputService; + @Autowired + DrillingInquiryService drillingInquiryService; + //170615 @Override public int insertMeta(HashMap params) throws Exception { @@ -50,6 +58,7 @@ public class ProjectListServiceImpl implements ProjectListService { String oDEPT = sUtil.checkNull(String.valueOf(request.getParameter("DEPT"))); String oADMIN_NAME = sUtil.checkNull(String.valueOf(request.getParameter("ADMIN_NAME"))); String oEMAIL = sUtil.checkNull(String.valueOf(request.getParameter("EMAIL"))); + String USERID = sUtil.checkNull(String.valueOf(request.getParameter("USERID"))); String oTEL = sUtil.checkNull(String.valueOf(params.get("TEL"))); String oPHONE = sUtil.checkNull(String.valueOf(params.get("PHONE"))); String oSEARCHDATE = sUtil.checkNull(String.valueOf(params.get("SEARCHDATE"))); @@ -65,10 +74,21 @@ 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 컬럼 값. + int constProjCnt = 0; // 발주기관이 등록한 건설현장에 연동된 TEMP_META_INFO, TEMP_PROJECT_INFO 정보 유무 확인(존재시 2건) + if (oPROJECT_CODE!= null && (!"null".equals(oPROJECT_CODE) && !"".equals(oPROJECT_CODE))) { + HashMap projCntParams = new HashMap<>(); + projCntParams.put("PROJECT_CODE", oPROJECT_CODE); + constProjCnt = drillingInputService.selectConstructCompanyProjectByProjectCodeCnt(projCntParams); + } + // if("".equals(oPROJECT_CODE)){ - if(oPROJECT_CODE!= null || "".equals(oPROJECT_CODE)){ + if((oPROJECT_CODE!= null && ("null".equals(oPROJECT_CODE) || "".equals(oPROJECT_CODE))) // 발주기관이 최초로 등록, 발주기관이 기지정하지 않은 건설사를 지정하여 수정 + || (!"".equals(oPROJECT_CODE) /*&& constProjCnt > 1*/ && (params.get("constUserId") != null && !"".equals(params.get("constUserId")))) // 발주기관이 기지정한 건설사를 다른 건설사로 변경하여 수정 + ){ + HashMap prjCd = new HashMap(); prjCd = getProjectCd(params); + String orgOPROJECT_CODE = (!"null".equals(oPROJECT_CODE) && !"".equals(oPROJECT_CODE)) ? oPROJECT_CODE : ""; // constProjCnt가 2이면 기존 PROJECT_CODE를 사용. oPROJECT_CODE=(String)prjCd.get("P_CODE")+prjCd.get("P_NUM"); //System.out.println(oREPORT_TYPE); @@ -118,6 +138,11 @@ public class ProjectListServiceImpl implements ProjectListService { params.put("HOLE_COMPANY", HOLE_COMPANY); params.put("HOLE_SPOT", HOLE_SPOT); params.put("REMARK", REMARK); + if (constProjCnt > 1 // 발주기관 최초 등록 후 기업사용자 등이 수정할 때 + || (!"".equals(orgOPROJECT_CODE) && !"".equals(oPROJECT_CODE) // 발주기관이 건설현장 수정 중 건설사가 변경되어 건설사의 META, PROJECT 등록 처리 필요한 경우 + && (params.get("constUserId") != null && !"".equals(params.get("constUserId"))))) { // 발주기관이 기업사용자를 변경한 경우 + params.put("PROJECT_CODE", orgOPROJECT_CODE); + } } else { params.put("USERID",request.getSession().getAttribute("USERID")); @@ -186,10 +211,11 @@ public class ProjectListServiceImpl implements ProjectListService { } if( oTEMP_CONSTRUCT_SITE_INFO_CID != null ) { - - params.put("PROJECT_CODE", oPROJECT_CODE); + params.put("PROJECT_CODE", params.get("PROJECT_CODE")); params.put("CID", oTEMP_CONSTRUCT_SITE_INFO_CID); params.put("PROJECT_STATE_CODE", 1); // 입력상태 1 = 입력 중 하드코딩되어있음. src\main\java\geoinfo\drilling\inquiry\service\impl\DrillingInquiryServiceImpl.java의 drillingInquiryList 메소드 참고. + params.put("CONST_NAME", oPROJECT_NAME); + params.put("CONST_USERID", params.get("USERID")); drillingInputService.updateProjectCodeAndProjectStateCodeByCid(request, params); // TEMP_CONSTRUCT_SITE_INFO 테이블의 cid 해당하는 record의 PROJECT_CODE를 update한다. diff --git a/src/main/resources/egovframework/sqlmap/mapper/drilling/input/DrillingInputMapper.xml b/src/main/resources/egovframework/sqlmap/mapper/drilling/input/DrillingInputMapper.xml index e5affc49..0cf24483 100644 --- a/src/main/resources/egovframework/sqlmap/mapper/drilling/input/DrillingInputMapper.xml +++ b/src/main/resources/egovframework/sqlmap/mapper/drilling/input/DrillingInputMapper.xml @@ -144,11 +144,39 @@ ]]> + + @@ -180,4 +208,28 @@ ) + + + + DELETE + FROM TEMP_META_INFO + WHERE PROJECT_CODE = #{projectCode} + + + + DELETE + FROM TEMP_PROJECT_INFO + WHERE PROJECT_CODE = #{projectCode} + + + + UPDATE TEMP_CONSTRUCT_SITE_INFO + SET PROJECT_CODE = NULL + ,CONST_COMPANY_CODE = NULL + ,CONST_COMPANY_ADMIN = NULL + ,CONST_COMPANY_TEL = NULL + ,CONST_USERID = NULL + WHERE PROJECT_CODE = #{projectCode} + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/drilling/input/drilling_input.jsp b/src/main/webapp/WEB-INF/views/drilling/input/drilling_input.jsp index 17cbbdcd..217a0ccf 100644 --- a/src/main/webapp/WEB-INF/views/drilling/input/drilling_input.jsp +++ b/src/main/webapp/WEB-INF/views/drilling/input/drilling_input.jsp @@ -145,7 +145,12 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe