thkim 2026-01-27 10:15:42 +09:00
commit ab07630626
8 changed files with 436 additions and 99 deletions

View File

@ -112,7 +112,7 @@ public class DrillingInputController {
try {
HashMap<String, Object> hashMap = drillingInputService.drillingInputAdd(request, params);
HashMap<String, Object> 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<String, Object> params = MyUtil.JSONObjectToHashMap(jsonObject);
try {
HashMap<String, Object> hashMap = drillingInputService.drillingInputModify(request, params);
HashMap<String, Object> hashMap = drillingInputService.drillingInputModify(request, response, params);
int nRetCode = MyUtil.getIntegerFromObject(hashMap.get("v_RetCode"));
String lpszRetMsg = MyUtil.getStringFromObject(hashMap.get("v_RetMsg"));
@ -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<String, Object> params, HttpServletResponse response) throws Exception {
JSONObject jsonResult = new JSONObject();
// HashMap<String, Object> 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이므로 반환 값은 필요 없습니다.
}
}

View File

@ -22,6 +22,8 @@ public interface DrillingInputMapper {
public List<EgovMap> sPGetTblCsiByCid(HashMap<String, Object> params) throws SQLException;
public EgovMap getItemByCid(HashMap<String, Object> params) throws SQLException;
public EgovMap getItemByProjectCode(HashMap<String, Object> params) throws SQLException;
public int selectConstructCompanyProjectByProjectCodeCnt(HashMap<String, Object> params) throws SQLException;
public EgovMap selectConstructCompanyProjectWriting(HashMap<String, Object> params) throws SQLException;
public int updateProjectCodeAndProjectStateCodeByCid(HashMap<String, Object> params) throws SQLException;
public int updateProjectCodeAndProjectStateCodeByProjectCode(HashMap<String, Object> params) throws SQLException;
@ -33,6 +35,9 @@ public interface DrillingInputMapper {
* @throws SQLException
*/
public int insertConstructSiteHist(HashMap<String, Object> params) throws SQLException;
public int deleteTempMetaInfo(HashMap<String, Object> params) throws SQLException;
public int deleteTempProjectInfo(HashMap<String, Object> params) throws SQLException;
public int updateTempConstructSiteInfoSetPROJECT_CODE_NULL(HashMap<String, Object> params) throws SQLException;
}

View File

@ -19,9 +19,13 @@ public interface DrillingInputService {
List<EgovMap> selectConstructCompanyList(HashMap<String, Object> params) throws Exception;
Map<String, Object> selectConstructUserInfo(HashMap<String, Object> params) throws Exception;
void getDepartments(HttpServletRequest request, HashMap<String, Object> params, JSONObject jsonResponse) throws Exception;
public int selectConstructCompanyProjectByProjectCodeCnt(HashMap<String, Object> params) throws Exception;
HashMap<String, Object> updateProjectCodeAndProjectStateCodeByCid(HttpServletRequest request, HashMap<String, Object> params) throws Exception;
HashMap<String, Object> updateProjectCodeAndProjectStateCodeByProjectCode(HttpServletRequest request, HashMap<String, Object> params) throws Exception;
HashMap<String, Object> drillingInputModify(HttpServletRequest request, HttpServletResponse response, HashMap<String, Object> params) throws Exception;
public int deleteTempMetaInfo(HashMap<String, Object> params) throws Exception;
public int deleteTempProjectInfo(HashMap<String, Object> params) throws Exception;
public int updateTempConstructSiteInfoSetPROJECT_CODE_NULL(HashMap<String, Object> params) throws Exception;
}

View File

@ -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 {
@ -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() );
@ -194,8 +200,12 @@ public class DrillingInputServiceImpl implements DrillingInputService {
}
}
@Override
public int selectConstructCompanyProjectByProjectCodeCnt(HashMap<String, Object> params) throws Exception {
return drillingInputMapper.selectConstructCompanyProjectByProjectCodeCnt(params);
}
@Override
public HashMap<String, Object> updateProjectCodeAndProjectStateCodeByCid(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
@ -299,7 +309,7 @@ public class DrillingInputServiceImpl implements DrillingInputService {
@Override
public HashMap<String, Object> drillingInputModify(HttpServletRequest request, HttpServletResponse response, HashMap<String, Object> 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"));
@ -341,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( 기업사용자를 지정했다면 ) {
@ -366,6 +376,68 @@ public class DrillingInputServiceImpl implements DrillingInputService {
//
// saveAndInsertMeta(params, request, response);
//}
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);
}
}
return spUdtTblCsiParams;
} catch (SQLException e) {
throw new Exception( e.getMessage() );
@ -388,7 +460,23 @@ public class DrillingInputServiceImpl implements DrillingInputService {
return drillingInputMapper.insertConstructSiteHist(histParams);
}
@Override
public int deleteTempMetaInfo(HashMap<String, Object> params) throws Exception {
return drillingInputMapper.deleteTempMetaInfo(params);
}
@Override
public int deleteTempProjectInfo(HashMap<String, Object> params) throws Exception {
return drillingInputMapper.deleteTempProjectInfo(params);
}
@Override
public int updateTempConstructSiteInfoSetPROJECT_CODE_NULL(HashMap<String, Object> params) throws Exception {
return drillingInputMapper.updateTempConstructSiteInfoSetPROJECT_CODE_NULL(params);
}
/**
* , () ,
@ -396,14 +484,18 @@ public class DrillingInputServiceImpl implements DrillingInputService {
public ModelAndView saveAndInsertMeta(@RequestParam HashMap<String, Object> params, HttpServletRequest request, HttpServletResponse response) throws Exception {
HashMap<String,Object> getProviderInfoParams = new HashMap<String, Object>();
getProviderInfoParams.put("userid", params.get("constUserId"));
getProviderInfoParams.put("USERID", params.get("constUserId"));
EgovMap constUserInfo = commonService.getProviderInfo(getProviderInfoParams); // 기업사용자 회원정보
// 1. 전달받은 파라미터 설정
HashMap<String, Object> metaParams = new HashMap<String, Object>();
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")); // 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")); // 입력기관.
metaParams.put("DEPT", constUserInfo.get("partName")); // 부서명. 해당 기업 사용자의 부서명 조회해서 넣기.
@ -414,15 +506,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 호출

View File

@ -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<EgovMap> 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);

View File

@ -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<String, Object> 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,63 +74,118 @@ 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)){
int constProjCnt = 0; // 발주기관이 등록한 건설현장에 연동된 TEMP_META_INFO, TEMP_PROJECT_INFO 정보 유무 확인(존재시 2건)
if (oPROJECT_CODE!= null && (!"null".equals(oPROJECT_CODE) && !"".equals(oPROJECT_CODE))) {
HashMap<String, Object> projCntParams = new HashMap<>();
projCntParams.put("PROJECT_CODE", oPROJECT_CODE);
constProjCnt = drillingInputService.selectConstructCompanyProjectByProjectCodeCnt(projCntParams);
}
// if("".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);
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<HashMap<String, Object>> 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);
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"));
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<HashMap<String, Object>> 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);
@ -147,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한다.

View File

@ -144,11 +144,39 @@
]]>
</select>
<select id="selectConstructCompanyProjectByProjectCodeCnt" parameterType="map" resultType="int">
SELECT COUNT(*) AS proj_cnt
FROM (
SELECT PROJECT_CODE
FROM TEMP_META_INFO
WHERE PROJECT_CODE = #{PROJECT_CODE}
UNION ALL
SELECT PROJECT_CODE
FROM TEMP_PROJECT_INFO
WHERE PROJECT_CODE = #{PROJECT_CODE}
)
</select>
<select id="selectConstructCompanyProjectWriting" parameterType="map" resultType="egovMap">
SELECT tpi.PROJECT_CODE
FROM GEOINFO.TEMP_PROJECT_INFO tpi
WHERE HOLE_CB_NUMBER IS NULL
AND HOLE_SB_NUMBER IS NULL
AND HOLE_BB_NUMBER IS NULL
AND HOLE_TB_NUMBER IS NULL
AND HOLE_BH_NUMBER IS NULL
AND PROJECT_TESTPITT_NUMBER IS NULL
AND PROJECT_ORGERBORING_NUMBER IS NULL
AND tpi.PROJECT_CODE = #{projectCode}
</select>
<update id="updateProjectCodeAndProjectStateCodeByCid" parameterType="map">
<![CDATA[
UPDATE TEMP_CONSTRUCT_SITE_INFO SET PROJECT_CODE = #{PROJECT_CODE}, PROJECT_STATE_CODE= #{PROJECT_STATE_CODE} WHERE TRIM(CID) = #{CID} AND PROJECT_CODE IS NULL
UPDATE TEMP_CONSTRUCT_SITE_INFO
SET PROJECT_CODE = #{PROJECT_CODE}
,PROJECT_STATE_CODE = #{PROJECT_STATE_CODE}
WHERE TRIM(CID) = #{CID}
AND (PROJECT_CODE IS NULL OR PROJECT_CODE = #{PROJECT_CODE})
]]>
</update>
@ -180,4 +208,28 @@
)
</insert>
<delete id="deleteTempMetaInfo" parameterType="map">
DELETE
FROM TEMP_META_INFO
WHERE PROJECT_CODE = #{projectCode}
</delete>
<delete id="deleteTempProjectInfo" parameterType="map">
DELETE
FROM TEMP_PROJECT_INFO
WHERE PROJECT_CODE = #{projectCode}
</delete>
<update id="updateTempConstructSiteInfoSetPROJECT_CODE_NULL" parameterType="map">
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}
</update>
</mapper>

View File

@ -145,7 +145,12 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
<script type="text/javascript">
var tableId = 0;
var orgConstName = ""; // 수정시 원 사업명
var orgPrjCd = ""; // 수정시 프로젝트코드
var orgConstUsr = ""; // 수정시 원건설사 계정
var orgConstCompany = ""; // 수정시 원건설사명
var orgConstTel = ""; // 수정시 원건설사 담당자연락처
function getQueryString(paramName) {
var searchString = decodeURI(window.location.search).substring(1),
i, val, params = searchString.split("&");
@ -463,6 +468,72 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
list.style.display = 'none';
});
// 건설사 미지정 체크시 건설사(계정)정보 초기화
document.querySelectorAll('input[id*=unselected-constructor-]').forEach(function (list) {
if (!list.contains(e.target)) return;
let chgChk = e.target.checked // false: 체크박스해제, true: 체크
const userid = list.closest('td')?.querySelector('input[id*=const-user-id]'); // hidden 사용자 id
const company = list.closest('td')?.querySelector('input[id*=const-company-dept-]'); // 건설사명
const admin = list.closest('td')?.querySelector('input[id*=const-company-admin-]'); // 담당자
const tel = list.closest('td')?.querySelector('input[id*=const-company-tel-]'); // 담당자 연락처
const pageType = location.href.includes("modify.do") ? "edit" : "add";
if (chgChk) { // 건설사 미지정에 체크시 입력정보 초기화
if (pageType == 'edit' && orgConstUsr != "") { // 수정하면서 원건설사를 미지정할때 확인진행
if (!confirm("건설사에서 입력중인 경우 입력내용이 삭제됩니다. 건설사를 미지정하시겠습니까?")) {
return;
} else {
// $.ajax({
// type: 'POST',
// url: '/drilling/input/uncheckConstCompany.do',
// dataType: 'json',
// data: {
// projectCode: orgPrjCd,
// encUserId: orgConstUsr
// },
// success: function (json) {
// if(json.result == "SUCCESS") {
// alert(json.message);
// orgConstUsr = "";
// document.getElementById('const-user-id-1').value = ''
// } else { //json.result == "FAIL"
// alert(json.message);
// return;
// }
// }, error: function(res) {
// alert(res);
// console.log(res);
// return;
// }
// });
document.getElementById('const-user-id-1').value = ''
}
}
// 건설사 미지정 처리
// 입력값 초기화
userid.value = '';
company.value = '';
admin.value = '';
tel.value = '';
// 입력 불가
userid.disabled = true;
company.disabled = true;
admin.disabled = true;
tel.disabled = true;
} else {
userid.value = orgConstUsr;
company.value = orgConstCompany;
admin.value = orgConstName;
tel.value = orgConstTel;
// 입력 허용
userid.disabled = false;
company.disabled = false;
admin.disabled = false;
tel.disabled = false;
}
});
});
});
@ -682,6 +753,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
const item = obj.datas[0]; // 첫 번째 데이터 객체를 사용
// 매핑 정보에 따라 값 할당
document.getElementById('const-user-id-1').value = item.constUserid || '';
document.getElementById('const-name-1').value = item.constName || '';
document.getElementById('const-start-date-1').value = item.constStartDate || '';
document.getElementById('const-end-date-1').value = item.constEndDate || '';
@ -692,6 +764,11 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
document.getElementById('const-company-dept-1').value = item.constCompanyName || '';
document.getElementById('const-company-admin-1').value = item.constCompanyAdmin || '';
document.getElementById('const-company-tel-1').value = item.constCompanyTel || '';
orgConstUsr = item.constUserid ? item.constUserid : "";
orgConstCompany = item.constCompanyName ? item.constCompanyName : "";
orgConstName = item.constCompanyAdmin ? item.constCompanyAdmin : "";
orgConstTel = item.constCompanyTel ? item.constCompanyTel : "";
orgPrjCd = item.projectCode ? item.projectCode : "";
}
} else if (xhr.readyState === 4) {
  // 요청 실패 시 처리