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] =?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