chore: resolve merge conflict
commit
2856b4a956
|
|
@ -22,7 +22,29 @@ import javax.crypto.spec.IvParameterSpec;
|
|||
import javax.crypto.spec.PBEKeySpec;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
import egovframework.com.cmm.service.EgovProperties;
|
||||
|
||||
public class CryptoUtil {
|
||||
// ===== [고정 키 AES - 빠른 버전] =====
|
||||
private static SecretKeySpec FIXED_SECRET_KEY;
|
||||
|
||||
/**
|
||||
* encryptQuickAES key
|
||||
* 서버 기동시 1회 자동 실행됨
|
||||
*/
|
||||
static {
|
||||
try {
|
||||
String key = EgovProperties.getProperty("SHA256.secret_key").trim();
|
||||
|
||||
MessageDigest sha = MessageDigest.getInstance("SHA-256");
|
||||
byte[] keyBytes = sha.digest(key.getBytes("UTF-8"));
|
||||
|
||||
FIXED_SECRET_KEY = new SecretKeySpec(keyBytes, "AES");
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("CryptoUtil AES key initialization failed", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* MD5 로 해시 한다.
|
||||
*
|
||||
|
|
@ -142,4 +164,27 @@ public class CryptoUtil {
|
|||
byte[] decryptedTextBytes = cipher.doFinal(encryoptedTextBytes);
|
||||
return new String(decryptedTextBytes);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* AES 고정 키 암호화 (빠름)
|
||||
*/
|
||||
public static String encryptQuickAES(String plainText) throws Exception {
|
||||
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
|
||||
cipher.init(Cipher.ENCRYPT_MODE, FIXED_SECRET_KEY);
|
||||
return Base64.getEncoder()
|
||||
.encodeToString(cipher.doFinal(plainText.getBytes("UTF-8")));
|
||||
}
|
||||
|
||||
/**
|
||||
* AES 고정 키 복호화
|
||||
*/
|
||||
public static String decryptQuickAES(String cipherText) throws Exception {
|
||||
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
|
||||
cipher.init(Cipher.DECRYPT_MODE, FIXED_SECRET_KEY);
|
||||
return new String(
|
||||
cipher.doFinal(Base64.getDecoder().decode(cipherText)),
|
||||
"UTF-8"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -170,6 +170,76 @@ public class DrillingInputController {
|
|||
|
||||
return jSONOResponse;
|
||||
}
|
||||
|
||||
// 발주기관 건설사목록 가져오기
|
||||
@ResponseBody
|
||||
@RequestMapping(value = "/drilling-company-list", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
|
||||
public String getDrillingCompanyList(HttpServletRequest request, HttpServletResponse response, @RequestParam HashMap<String,Object> params) throws Exception {
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
strUtil sUtil = new strUtil();
|
||||
|
||||
String projectName = sUtil.checkNull((String)params.get("companyName"));
|
||||
|
||||
JSONArray jsonListObject = new JSONArray();
|
||||
|
||||
if( projectName == ""){
|
||||
jsonObject.put("resultMessage", "OK");
|
||||
jsonObject.put("resultCode", 200);
|
||||
jsonObject.put("result", new JSONObject().put("list", jsonListObject));
|
||||
} else {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("list", drillingInputService.selectConstructCompanyList(params));
|
||||
|
||||
jsonObject.put("resultMessage", "OK");
|
||||
jsonObject.put("resultCode", 200);
|
||||
jsonObject.put("result", result);
|
||||
}
|
||||
|
||||
response.setContentType("application/json; charset=UTF-8"); // 응답 헤더 설정
|
||||
response.setCharacterEncoding("UTF-8"); // 응답 데이터 인코딩 설정 (중요)
|
||||
|
||||
try (OutputStream os = response.getOutputStream()) { // OutputStream 사용
|
||||
os.write(jsonObject.toString().getBytes("UTF-8")); // UTF-8 인코딩하여 출력
|
||||
}
|
||||
|
||||
return null; // @ResponseBody이므로 반환 값은 필요 없습니다.
|
||||
}
|
||||
|
||||
// [발주기관 > 건설현장입력] 건설사 계정 선택시 이름, 연락처 자동셋팅
|
||||
@ResponseBody
|
||||
@RequestMapping(value = "/const-user-info", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
|
||||
public String getConstUserInfo(HttpServletRequest request, HttpServletResponse response, @RequestParam HashMap<String,Object> params) throws Exception {
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
strUtil sUtil = new strUtil();
|
||||
|
||||
String userid = sUtil.checkNull((String)params.get("encUserid"));
|
||||
|
||||
JSONArray jsonListObject = new JSONArray();
|
||||
|
||||
if( userid == ""){
|
||||
jsonObject.put("resultMessage", "OK");
|
||||
jsonObject.put("resultCode", 200);
|
||||
jsonObject.put("result", new JSONObject().put("data", jsonListObject));
|
||||
} else {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("data", drillingInputService.selectConstructUserInfo(params));
|
||||
|
||||
jsonObject.put("resultMessage", "OK");
|
||||
jsonObject.put("resultCode", 200);
|
||||
jsonObject.put("result", result);
|
||||
}
|
||||
|
||||
response.setContentType("application/json; charset=UTF-8"); // 응답 헤더 설정
|
||||
response.setCharacterEncoding("UTF-8"); // 응답 데이터 인코딩 설정 (중요)
|
||||
|
||||
try (OutputStream os = response.getOutputStream()) { // OutputStream 사용
|
||||
os.write(jsonObject.toString().getBytes("UTF-8")); // UTF-8 인코딩하여 출력
|
||||
}
|
||||
|
||||
return null; // @ResponseBody이므로 반환 값은 필요 없습니다.
|
||||
}
|
||||
|
||||
/**
|
||||
* 발주 기관 사용자의 소속을 가져온다.
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ public interface DrillingInputMapper {
|
|||
|
||||
public void spGetMasterCompanyDistrict(HashMap<String, Object> spGetMasterCompanyDistrictParams) throws SQLException;
|
||||
|
||||
public List<EgovMap> selectConstructCompanyList(HashMap<String, Object> params) throws SQLException;
|
||||
public EgovMap getDepartments(HashMap<String, Object> params) throws SQLException;
|
||||
public HashMap<String, Object> spUdtTblCsi(HashMap<String, Object> params) throws SQLException;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,23 @@
|
|||
package geoinfo.drilling.input.service;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||
|
||||
|
||||
public interface DrillingInputService {
|
||||
HashMap<String, Object> getOrganizationUserGlGmGsGfCodes(String userId) throws Exception;
|
||||
HashMap<String, Object> drillingInputAdd(HttpServletRequest request, HttpServletResponse response, HashMap<String, Object> params) throws Exception;
|
||||
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;
|
||||
HashMap<String, Object> updateProjectCodeAndProjectStateCodeByCid(HttpServletRequest request, HashMap<String, Object> params) throws Exception;
|
||||
HashMap<String, Object> updateProjectCodeAndProjectStateCodeByProjectCode(HttpServletRequest request, HashMap<String, Object> params) throws Exception;
|
||||
|
|
|
|||
|
|
@ -6,27 +6,26 @@ 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;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||
import geoinfo.com.CryptoUtil;
|
||||
|
||||
@Service("drillingInputService")
|
||||
public class DrillingInputServiceImpl implements DrillingInputService {
|
||||
|
|
@ -43,8 +42,9 @@ public class DrillingInputServiceImpl implements DrillingInputService {
|
|||
@Resource(name ="commonService")
|
||||
private CommonService commonService;
|
||||
|
||||
@Autowired
|
||||
private ProjectListController projectListController;
|
||||
|
||||
@Resource(name = "projectListService")
|
||||
private ProjectListService projectListService;
|
||||
|
||||
|
||||
|
||||
|
|
@ -89,6 +89,11 @@ public class DrillingInputServiceImpl implements DrillingInputService {
|
|||
params.put("masterCompanyThCode", MyUtil.getStringFromObject( spGetMasterCompanyDistrictParams.get("v_gs") ));
|
||||
params.put("masterCompanyName", MyUtil.getStringFromObject( spGetMasterCompanyDistrictParams.get("v_gf") ));
|
||||
|
||||
// 건설사 계정 연결(암호화된 userid 복호화)
|
||||
String encryptId = MyUtil.getStringFromObject( params.get("encUserid") );
|
||||
String decryptId = CryptoUtil.decryptQuickAES(encryptId);
|
||||
|
||||
params.put("constUserid", decryptId);
|
||||
|
||||
|
||||
try {
|
||||
|
|
@ -107,7 +112,50 @@ public class DrillingInputServiceImpl implements DrillingInputService {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EgovMap> selectConstructCompanyList(HashMap<String, Object> params) throws Exception {
|
||||
List<EgovMap> list = new ArrayList<EgovMap>();
|
||||
list = drillingInputMapper.selectConstructCompanyList(params);
|
||||
|
||||
for (EgovMap map : list) {
|
||||
|
||||
String userid = (String) map.get("userid");
|
||||
if (userid == null) continue;
|
||||
|
||||
// 암호화
|
||||
// String encryptId = CryptoUtil.encryptAES256(userid, secret_key);
|
||||
String encryptId = CryptoUtil.encryptQuickAES(userid);
|
||||
// userid 제거
|
||||
map.remove("userid");
|
||||
|
||||
// 복호화 (검증 or 필요 시)
|
||||
// String decryptId = CryptoUtil.decryptAES256(encryptId, secret_key);
|
||||
|
||||
map.put("encryptId", encryptId);
|
||||
// map.put("decryptId", decryptId);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> selectConstructUserInfo(HashMap<String, Object> params) throws Exception {
|
||||
Map<String, Object> result = new HashMap<String, Object>();
|
||||
// 건설사 계정 연결(암호화된 userid 복호화)
|
||||
String encryptId = MyUtil.getStringFromObject( params.get("encUserid") );
|
||||
String decryptId = CryptoUtil.decryptQuickAES(encryptId);
|
||||
params.put("userid", decryptId);
|
||||
|
||||
Map<String, Object> infoData = loginMapper.selectWebMemberIn(params);
|
||||
|
||||
if (result != infoData) {
|
||||
result.put("phone", infoData.get("phone"));
|
||||
result.put("userName", infoData.get("user_name"));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getDepartments(HttpServletRequest request, HashMap<String, Object> params, JSONObject jsonResponse) throws Exception {
|
||||
|
||||
|
|
@ -271,7 +319,12 @@ public class DrillingInputServiceImpl implements DrillingInputService {
|
|||
findConstCompanyCodeByConstCompanyNameParams.put("masterCompanyTwCode", MyUtil.getStringFromObject( findConstCompanyCodeByConstCompanyNameParams.get("v_gm") ));
|
||||
findConstCompanyCodeByConstCompanyNameParams.put("masterCompanyThCode", MyUtil.getStringFromObject( findConstCompanyCodeByConstCompanyNameParams.get("v_gs") ));
|
||||
findConstCompanyCodeByConstCompanyNameParams.put("masterCompanyName", MyUtil.getStringFromObject( findConstCompanyCodeByConstCompanyNameParams.get("v_gf") ));
|
||||
|
||||
// 건설사 계정 연결(암호화된 userid 복호화)
|
||||
String encryptId = MyUtil.getStringFromObject( params.get("encUserid") );
|
||||
String decryptId = CryptoUtil.decryptQuickAES(encryptId);
|
||||
|
||||
params.put("constUserid", decryptId);
|
||||
|
||||
try {
|
||||
|
||||
|
|
@ -376,7 +429,7 @@ public class DrillingInputServiceImpl implements DrillingInputService {
|
|||
ModelAndView model = new ModelAndView();
|
||||
|
||||
|
||||
model = projectListController.insertMeta(metaParams, model, request, response); // insertMeta 호출 시 발생되는 오류는 조치하기.
|
||||
model = projectListService.insertMeta(metaParams, model, request, response); // insertMeta 호출 시 발생되는 오류는 조치하기.
|
||||
return model;
|
||||
}
|
||||
|
||||
|
|
@ -394,7 +447,7 @@ public class DrillingInputServiceImpl implements DrillingInputService {
|
|||
// 2. ProjectListController의 deleteAll 호출
|
||||
ModelAndView model = new ModelAndView();
|
||||
|
||||
model = projectListController.deleteAll(deleteParams, model, request, response); // deleteAll 호출 시 발생되는 오류는 조치하기.
|
||||
model = projectListService.deleteAll(deleteParams, model, request, response); // deleteAll 호출 시 발생되는 오류는 조치하기.
|
||||
return model;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package geoinfo.regi.projectList;
|
|||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
|
@ -12,7 +11,6 @@ import javax.servlet.http.HttpServletResponse;
|
|||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
|
@ -120,215 +118,14 @@ public class ProjectListController {
|
|||
// 지반정보등록
|
||||
@RequestMapping(value = "/insertMeta.do")
|
||||
public ModelAndView insertMeta(@RequestParam HashMap<String,Object> params, ModelAndView model ,HttpServletRequest request, HttpServletResponse response) throws Exception{
|
||||
UrlPathHelper urlPathHelper = new UrlPathHelper();
|
||||
String topPath = urlPathHelper.getOriginatingRequestUri(request);
|
||||
//변수선언
|
||||
WebUtil wUtil = new WebUtil();
|
||||
strUtil sUtil = new strUtil();
|
||||
int affectRow = 0;
|
||||
String rUrl = sUtil.checkNull(String.valueOf(params.get("rUrl")));
|
||||
//request
|
||||
String oPROJECT_CODE = sUtil.checkNull(String.valueOf(params.get("PROJECT_CODE")));
|
||||
String oINPUT_COMPANY = sUtil.checkNull(String.valueOf(request.getParameter("INPUT_COMPANY")));
|
||||
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 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")));
|
||||
String oINPUTDATE = wUtil.getToday();
|
||||
String oPROJECT_NAME = sUtil.checkNull(String.valueOf(request.getParameter("PROJECT_NAME")));
|
||||
String oHOLE_NUMBER = sUtil.checkNull(String.valueOf(params.get("HOLE_NUMBER")));
|
||||
String oHOLE_ADMIN_NAME = sUtil.checkNull(String.valueOf(request.getParameter("HOLE_ADMIN_NAME")));
|
||||
String oHOLE_COMPANY = sUtil.checkNull(String.valueOf(request.getParameter("HOLE_COMPANY")));
|
||||
String oHOLE_TYPE = "Boring";
|
||||
String oHOLE_SPOT_SD = sUtil.checkNull(String.valueOf(params.get("HOLE_SPOT_SD")));
|
||||
String oHOLE_SPOT_SGG = sUtil.checkNull(String.valueOf(params.get("HOLE_SPOT_SGG")));
|
||||
String oHOLE_SPOT = sUtil.checkNull(String.valueOf(request.getParameter("HOLE_SPOT")));
|
||||
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)){
|
||||
HashMap prjCd = new HashMap();
|
||||
prjCd=masterService.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<HashMap<String, Object>> arrProjectCodeAndProjectName = masterService.getProjectCodeAndProjectNameByProjectName(params);
|
||||
if( 0 < arrProjectCodeAndProjectName.size() ) {
|
||||
//여기에서 프로젝트 중복되어서 다른 이름으로 지정해야한다는 메시지를 사용자에게 보여줘야 함.
|
||||
model.addObject("result", "false");
|
||||
model.addObject("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력 해주세요.");
|
||||
model.setViewName("redirect:/index_db.do");
|
||||
return model;
|
||||
}
|
||||
|
||||
affectRow = masterService.insertMeta(params);
|
||||
masterService.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);
|
||||
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"));
|
||||
affectRow =masterService.updateMeta(params);
|
||||
}
|
||||
|
||||
if( oTEMP_CONSTRUCT_SITE_INFO_CID != null ) {
|
||||
|
||||
params.put("PROJECT_CODE", oPROJECT_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 메소드 참고.
|
||||
|
||||
drillingInputService.updateProjectCodeAndProjectStateCodeByCid(request, params);
|
||||
// TEMP_CONSTRUCT_SITE_INFO 테이블의 cid 해당하는 record의 PROJECT_CODE를 update한다.
|
||||
}
|
||||
|
||||
model.addObject("result", "true");
|
||||
model.addObject("oREPORT_TYPE", oREPORT_TYPE);
|
||||
model.addObject("affectRow", affectRow);
|
||||
model.addObject("oPROJECT_CODE", oPROJECT_CODE);
|
||||
model.setViewName("redirect:/index_db.do");
|
||||
model.addObject("rUrl",rUrl);
|
||||
|
||||
masterService.insertMeta(params, model, request, response);
|
||||
return model;
|
||||
}
|
||||
|
||||
// 지반정보등록 (관리자)
|
||||
@RequestMapping(value = "/deleteAll.do")
|
||||
public ModelAndView deleteAll(@RequestParam HashMap<String,Object> params, ModelAndView model ,HttpServletRequest request, HttpServletResponse response) throws Exception{
|
||||
strUtil sUtil = new strUtil();
|
||||
int affectRow = 0;
|
||||
UrlPathHelper urlPathHelper = new UrlPathHelper();
|
||||
String topPath = urlPathHelper.getOriginatingRequestUri(request);
|
||||
String PROJECT_CODE = sUtil.checkNull(String.valueOf(params.get("PROJECT_CODE")));
|
||||
|
||||
// 2018-11-07 모의해킹 조치. 조현석 차장.
|
||||
// 1. 프로젝트 코드 검사 유무
|
||||
if ( null != PROJECT_CODE && ! "".equals(PROJECT_CODE)) {
|
||||
// 2. 관리자인지.
|
||||
boolean ischk = false;
|
||||
if ( request.getSession().getAttribute("CLS") != null && "9".equals(request.getSession().getAttribute("CLS") ) ) {
|
||||
ischk = true;
|
||||
}
|
||||
if ( request.getSession().getAttribute("CLS") != null && "1".equals(request.getSession().getAttribute("CLS") ) ) {
|
||||
// 기업회원일 경우 본인 프로젝트인지 확인.
|
||||
String userId = (String) request.getSession().getAttribute("USERID");
|
||||
if ( userId != null && ! "".equals(userId)) {
|
||||
HashMap projectMap = masterService.getInfo(params);
|
||||
if ( projectMap != null && ! projectMap.isEmpty() ) {
|
||||
String tmpID = (String) projectMap.get("USERID");
|
||||
System.out.println("userId - " + userId + " , tmpID = " + tmpID );
|
||||
// 프로젝트 생성 아이디가 같다면 삭제 권한 가능..
|
||||
if ( userId.equals( tmpID ) ) {
|
||||
ischk = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
//getInfo
|
||||
}
|
||||
|
||||
//3. 권한이 있는 경우에만 삭제가 가능하다.
|
||||
if ( ischk ) {
|
||||
String tableTemp[] = {"TEMP_META_INFO", "TEMP_PROJECT_INFO", "TEMP_TOPO_GEOLOGY", "TEMP_HEADER", "TEMP_HEADER_CORE",
|
||||
"TEMP_SELECTCLASS_INFO", "TEMP_REFERENCE", "TEMP_LAYER_INFO", "TEMP_SPT", "TEMP_RQD", "TEMP_DSF",
|
||||
"TEMP_FIELD_PRESSUREMETER", "TEMP_SLICKENSIDE_INFO", "TEMP_Q", "TEMP_RMR", "TEMP_FIELD_WATERPRESSURE",
|
||||
"TEMP_WP_TEST", "TEMP_FIELD_PERMEABILITY", "TEMP_FIELDPER_SUB", "TEMP_FIELD_CONE_PENETRATION",
|
||||
"TEMP_CONE_PENETRATION_IMAGES", "TEMP_SAMPLE_INFO", "TEMP_CLASSIFICATION", "TEMP_CONSOLIDATION_USUAL",
|
||||
"TEMP_CONSOLIDATION", "TEMP_CBR_COMPAC", "TEMP_UNCONFINED_USUAL", "TEMP_TRIAXIAL_USUAL", "TEMP_TRIAXIAL_CU",
|
||||
"TEMP_TRIAXIAL_UU", "TEMP_RESONANT_USUAL", "TEMP_RESONANT", "TEMP_REPEATED_TRIAXIAL_USUAL",
|
||||
"TEMP_REPEATED_TRIAXIAL", "TEMP_ROCK_POINTLOAD", "TEMP_ROCK_JOINTSHEAR", "TEMP_ROCK_UNIAXIAL",
|
||||
"TEMP_ROCK_TRIAXIAL", "TEMP_ROCK_RESONANT_USUAL", "TEMP_ROCK_RESONANT", "TEMP_ROCK_REPEATED_TRIAXIAL_U",
|
||||
"TEMP_ROCK_REPEATED_TRIAXIAL", "TEMP_EXPERT_OPINION", "TEMP_RESISTIVITY_SURVEY", "TEMP_RESISTIVITY_SURVEY_SUB",
|
||||
"TEMP_RESISTIVITY_SURVEY_FILE", "TEMP_REFRACTION_SURVEY", "TEMP_REFRACTION_SURVEY_SUB",
|
||||
"TEMP_REFRACTION_SURVEY_FILE", "TEMP_BOREHOLE_WAVE", "TEMP_BOREHOLE_WAVE_PS", "TEMP_DOWNHOLE",
|
||||
"TEMP_DOWNHOLE_PS", "TEMP_DENSITY", "TEMP_DENSITY_SUB"};
|
||||
params.put("PROJECT_CODE", PROJECT_CODE);
|
||||
for(int i = 0; i<tableTemp.length;i++){
|
||||
params.put("tableName", tableTemp[i]);
|
||||
affectRow += masterService.deleteProject(params);
|
||||
}
|
||||
affectRow += masterService.deleteWebData(params);
|
||||
|
||||
//발주기관에서 등록한 프로젝트와 연결이 된 경우, 해당 내용을 초기화 한다.
|
||||
params.put("PROJECT_CODE", null);
|
||||
params.put("WHERE_PROJECT_CODE", PROJECT_CODE);
|
||||
params.put("PROJECT_STATE_CODE", 0); // 입력상태 0 = 미입력. 하드코딩되어있음 -> src\main\java\geoinfo\drilling\inquiry\service\impl\DrillingInquiryServiceImpl.java의 drillingInquiryList 메소드 참고.
|
||||
drillingInputService.updateProjectCodeAndProjectStateCodeByProjectCode(request, params);
|
||||
|
||||
model.addObject("MODE", "DEL");
|
||||
model.addObject("affectRow", affectRow);
|
||||
model.addObject("PROJECT_CODE", PROJECT_CODE);
|
||||
model.setViewName("redirect:/index_db.do");
|
||||
} else {
|
||||
model.addObject("MODE", "DEL");
|
||||
model.addObject("affectRow", -1);
|
||||
model.addObject("PROJECT_CODE", PROJECT_CODE);
|
||||
model.setViewName("redirect:/index_db.do");
|
||||
}
|
||||
|
||||
} else {
|
||||
model.addObject("MODE", "DEL");
|
||||
model.addObject("affectRow", 0);
|
||||
model.addObject("PROJECT_CODE", null);
|
||||
model.setViewName("redirect:/index_db.do");
|
||||
}
|
||||
|
||||
masterService.deleteAll(params, model, request, response);
|
||||
return model;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,18 @@ package geoinfo.regi.projectList.service;
|
|||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
|
||||
public interface ProjectListService {
|
||||
|
||||
//170615
|
||||
public int insertMeta(HashMap<String, Object> params) throws Exception;
|
||||
public ModelAndView insertMeta(@RequestParam HashMap<String,Object> params, ModelAndView model ,HttpServletRequest request, HttpServletResponse response) throws Exception;
|
||||
public int insertWebData(HashMap<String, Object> params) throws Exception;
|
||||
public int insertProject(HashMap<String, Object> params) throws Exception;
|
||||
public int updateMeta(HashMap<String, Object> params) throws Exception;
|
||||
|
|
@ -52,4 +59,7 @@ public interface ProjectListService {
|
|||
public ArrayList<HashMap<String, Object>> getProjectCodeAndProjectNameByProjectName(HashMap<String, Object> params);
|
||||
public ArrayList<HashMap<String, Object>> getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo(HashMap<String, Object> params);
|
||||
public ArrayList<HashMap<String, Object>> getConstNameByProjectNameFromTempConstructSiteInfo(HashMap<String, Object> params);
|
||||
|
||||
public ModelAndView deleteAll(@RequestParam HashMap<String,Object> params, ModelAndView model ,HttpServletRequest request, HttpServletResponse response) throws Exception;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,23 @@
|
|||
package geoinfo.regi.projectList.service.impl;
|
||||
|
||||
import geoinfo.drilling.input.service.DrillingInputService;
|
||||
import geoinfo.regi.projectList.service.ProjectListMapper;
|
||||
import geoinfo.regi.projectList.service.ProjectListService;
|
||||
import ictway.comm.util.strUtil;
|
||||
import ictway.comm.web.WebUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
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;
|
||||
|
||||
@Service("projectListService")
|
||||
public class ProjectListServiceImpl implements ProjectListService {
|
||||
|
|
@ -16,11 +25,146 @@ public class ProjectListServiceImpl implements ProjectListService {
|
|||
@Resource(name = "projectListMapper")
|
||||
private ProjectListMapper projectListMapper;
|
||||
|
||||
@Autowired
|
||||
private DrillingInputService drillingInputService;
|
||||
|
||||
//170615
|
||||
@Override
|
||||
public int insertMeta(HashMap<String, Object> params) throws Exception {
|
||||
return projectListMapper.insertMeta(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelAndView insertMeta(@RequestParam HashMap<String,Object> params, ModelAndView model ,HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
|
||||
UrlPathHelper urlPathHelper = new UrlPathHelper();
|
||||
String topPath = urlPathHelper.getOriginatingRequestUri(request);
|
||||
//변수선언
|
||||
WebUtil wUtil = new WebUtil();
|
||||
strUtil sUtil = new strUtil();
|
||||
int affectRow = 0;
|
||||
String rUrl = sUtil.checkNull(String.valueOf(params.get("rUrl")));
|
||||
//request
|
||||
String oPROJECT_CODE = sUtil.checkNull(String.valueOf(params.get("PROJECT_CODE")));
|
||||
String oINPUT_COMPANY = sUtil.checkNull(String.valueOf(request.getParameter("INPUT_COMPANY")));
|
||||
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 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")));
|
||||
String oINPUTDATE = wUtil.getToday();
|
||||
String oPROJECT_NAME = sUtil.checkNull(String.valueOf(request.getParameter("PROJECT_NAME")));
|
||||
String oHOLE_NUMBER = sUtil.checkNull(String.valueOf(params.get("HOLE_NUMBER")));
|
||||
String oHOLE_ADMIN_NAME = sUtil.checkNull(String.valueOf(request.getParameter("HOLE_ADMIN_NAME")));
|
||||
String oHOLE_COMPANY = sUtil.checkNull(String.valueOf(request.getParameter("HOLE_COMPANY")));
|
||||
String oHOLE_TYPE = "Boring";
|
||||
String oHOLE_SPOT_SD = sUtil.checkNull(String.valueOf(params.get("HOLE_SPOT_SD")));
|
||||
String oHOLE_SPOT_SGG = sUtil.checkNull(String.valueOf(params.get("HOLE_SPOT_SGG")));
|
||||
String oHOLE_SPOT = sUtil.checkNull(String.valueOf(request.getParameter("HOLE_SPOT")));
|
||||
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)){
|
||||
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<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);
|
||||
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"));
|
||||
affectRow = updateMeta(params);
|
||||
}
|
||||
|
||||
if( oTEMP_CONSTRUCT_SITE_INFO_CID != null ) {
|
||||
|
||||
params.put("PROJECT_CODE", oPROJECT_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 메소드 참고.
|
||||
|
||||
drillingInputService.updateProjectCodeAndProjectStateCodeByCid(request, params);
|
||||
// TEMP_CONSTRUCT_SITE_INFO 테이블의 cid 해당하는 record의 PROJECT_CODE를 update한다.
|
||||
}
|
||||
|
||||
model.addObject("result", "true");
|
||||
model.addObject("oREPORT_TYPE", oREPORT_TYPE);
|
||||
model.addObject("affectRow", affectRow);
|
||||
model.addObject("oPROJECT_CODE", oPROJECT_CODE);
|
||||
model.setViewName("redirect:/index_db.do");
|
||||
model.addObject("rUrl",rUrl);
|
||||
return model;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertWebData(HashMap<String, Object> params) throws Exception {
|
||||
return projectListMapper.insertWebData(params);
|
||||
|
|
@ -225,6 +369,87 @@ public class ProjectListServiceImpl implements ProjectListService {
|
|||
return projectListMapper.getConstNameByProjectNameFromTempConstructSiteInfo(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelAndView deleteAll(@RequestParam HashMap<String,Object> params, ModelAndView model ,HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
strUtil sUtil = new strUtil();
|
||||
int affectRow = 0;
|
||||
UrlPathHelper urlPathHelper = new UrlPathHelper();
|
||||
String topPath = urlPathHelper.getOriginatingRequestUri(request);
|
||||
String PROJECT_CODE = sUtil.checkNull(String.valueOf(params.get("PROJECT_CODE")));
|
||||
|
||||
// 2018-11-07 모의해킹 조치. 조현석 차장.
|
||||
// 1. 프로젝트 코드 검사 유무
|
||||
if ( null != PROJECT_CODE && ! "".equals(PROJECT_CODE)) {
|
||||
// 2. 관리자인지.
|
||||
boolean ischk = false;
|
||||
if ( request.getSession().getAttribute("CLS") != null && "9".equals(request.getSession().getAttribute("CLS") ) ) {
|
||||
ischk = true;
|
||||
}
|
||||
if ( request.getSession().getAttribute("CLS") != null && "1".equals(request.getSession().getAttribute("CLS") ) ) {
|
||||
// 기업회원일 경우 본인 프로젝트인지 확인.
|
||||
String userId = (String) request.getSession().getAttribute("USERID");
|
||||
if ( userId != null && ! "".equals(userId)) {
|
||||
HashMap projectMap = getInfo(params);
|
||||
if ( projectMap != null && ! projectMap.isEmpty() ) {
|
||||
String tmpID = (String) projectMap.get("USERID");
|
||||
System.out.println("userId - " + userId + " , tmpID = " + tmpID );
|
||||
// 프로젝트 생성 아이디가 같다면 삭제 권한 가능..
|
||||
if ( userId.equals( tmpID ) ) {
|
||||
ischk = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
//getInfo
|
||||
}
|
||||
|
||||
//3. 권한이 있는 경우에만 삭제가 가능하다.
|
||||
if ( ischk ) {
|
||||
String tableTemp[] = {"TEMP_META_INFO", "TEMP_PROJECT_INFO", "TEMP_TOPO_GEOLOGY", "TEMP_HEADER", "TEMP_HEADER_CORE",
|
||||
"TEMP_SELECTCLASS_INFO", "TEMP_REFERENCE", "TEMP_LAYER_INFO", "TEMP_SPT", "TEMP_RQD", "TEMP_DSF",
|
||||
"TEMP_FIELD_PRESSUREMETER", "TEMP_SLICKENSIDE_INFO", "TEMP_Q", "TEMP_RMR", "TEMP_FIELD_WATERPRESSURE",
|
||||
"TEMP_WP_TEST", "TEMP_FIELD_PERMEABILITY", "TEMP_FIELDPER_SUB", "TEMP_FIELD_CONE_PENETRATION",
|
||||
"TEMP_CONE_PENETRATION_IMAGES", "TEMP_SAMPLE_INFO", "TEMP_CLASSIFICATION", "TEMP_CONSOLIDATION_USUAL",
|
||||
"TEMP_CONSOLIDATION", "TEMP_CBR_COMPAC", "TEMP_UNCONFINED_USUAL", "TEMP_TRIAXIAL_USUAL", "TEMP_TRIAXIAL_CU",
|
||||
"TEMP_TRIAXIAL_UU", "TEMP_RESONANT_USUAL", "TEMP_RESONANT", "TEMP_REPEATED_TRIAXIAL_USUAL",
|
||||
"TEMP_REPEATED_TRIAXIAL", "TEMP_ROCK_POINTLOAD", "TEMP_ROCK_JOINTSHEAR", "TEMP_ROCK_UNIAXIAL",
|
||||
"TEMP_ROCK_TRIAXIAL", "TEMP_ROCK_RESONANT_USUAL", "TEMP_ROCK_RESONANT", "TEMP_ROCK_REPEATED_TRIAXIAL_U",
|
||||
"TEMP_ROCK_REPEATED_TRIAXIAL", "TEMP_EXPERT_OPINION", "TEMP_RESISTIVITY_SURVEY", "TEMP_RESISTIVITY_SURVEY_SUB",
|
||||
"TEMP_RESISTIVITY_SURVEY_FILE", "TEMP_REFRACTION_SURVEY", "TEMP_REFRACTION_SURVEY_SUB",
|
||||
"TEMP_REFRACTION_SURVEY_FILE", "TEMP_BOREHOLE_WAVE", "TEMP_BOREHOLE_WAVE_PS", "TEMP_DOWNHOLE",
|
||||
"TEMP_DOWNHOLE_PS", "TEMP_DENSITY", "TEMP_DENSITY_SUB"};
|
||||
params.put("PROJECT_CODE", PROJECT_CODE);
|
||||
for(int i = 0; i<tableTemp.length;i++){
|
||||
params.put("tableName", tableTemp[i]);
|
||||
affectRow += deleteProject(params);
|
||||
}
|
||||
affectRow += deleteWebData(params);
|
||||
|
||||
//발주기관에서 등록한 프로젝트와 연결이 된 경우, 해당 내용을 초기화 한다.
|
||||
params.put("PROJECT_CODE", null);
|
||||
params.put("WHERE_PROJECT_CODE", PROJECT_CODE);
|
||||
params.put("PROJECT_STATE_CODE", 0); // 입력상태 0 = 미입력. 하드코딩되어있음 -> src\main\java\geoinfo\drilling\inquiry\service\impl\DrillingInquiryServiceImpl.java의 drillingInquiryList 메소드 참고.
|
||||
drillingInputService.updateProjectCodeAndProjectStateCodeByProjectCode(request, params);
|
||||
|
||||
model.addObject("MODE", "DEL");
|
||||
model.addObject("affectRow", affectRow);
|
||||
model.addObject("PROJECT_CODE", PROJECT_CODE);
|
||||
model.setViewName("redirect:/index_db.do");
|
||||
} else {
|
||||
model.addObject("MODE", "DEL");
|
||||
model.addObject("affectRow", -1);
|
||||
model.addObject("PROJECT_CODE", PROJECT_CODE);
|
||||
model.setViewName("redirect:/index_db.do");
|
||||
}
|
||||
|
||||
} else {
|
||||
model.addObject("MODE", "DEL");
|
||||
model.addObject("affectRow", 0);
|
||||
model.addObject("PROJECT_CODE", null);
|
||||
model.setViewName("redirect:/index_db.do");
|
||||
}
|
||||
return model;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -37,4 +37,9 @@ JWT.secret_key=RnrxhWlQksportalSystem!@!@$#@!@#@!$12442321
|
|||
# The token expires in 1,800,000 milliseconds, which is equal to 30 minutes.
|
||||
JWT.access_expired=1800000
|
||||
O2MAP.wms.url=http://10.dbnt.co.kr:2936/o2map/services/wms
|
||||
LOCAL.wms.url=http://10.dbnt.co.kr:2936/o2map/services/wms
|
||||
LOCAL.wms.url=http://10.dbnt.co.kr:2936/o2map/services/wms
|
||||
|
||||
###############################################
|
||||
################### SHA256 #################
|
||||
###############################################
|
||||
SHA256.secret_key=RnrxhwlQksportalSystem!@34$%
|
||||
|
|
@ -34,6 +34,7 @@
|
|||
#{constCompanyTel},
|
||||
'C',
|
||||
#{userId},
|
||||
#{constUserid},
|
||||
#{v_CID, mode=OUT, jdbcType=INTEGER},
|
||||
#{v_RetCode, mode=OUT, jdbcType=INTEGER},
|
||||
#{v_RetMsg, mode=OUT, jdbcType=VARCHAR}
|
||||
|
|
@ -61,6 +62,23 @@
|
|||
) }
|
||||
</select>
|
||||
|
||||
<select id="selectConstructCompanyList" parameterType="map" resultType="egovMap">
|
||||
SELECT
|
||||
TRIM(wmi.COMPANY_NAME) AS COMPANY_NAME,
|
||||
wmi.USERID,
|
||||
SUBSTR(wmi.USERID, 1, 2) || '****' || SUBSTR(wmi.USERID, LENGTH(wmi.USERID)-1, 2) AS MaskedID,
|
||||
TRIM(wmi.NEW_ADDRESS) AS NEW_ADDRESS,
|
||||
TRIM(wmi.PART_NAME) AS PART_NAME,
|
||||
wmi.COMPANY_REGIST_NO
|
||||
FROM
|
||||
web_member_in wmi
|
||||
WHERE
|
||||
wmi.CLS = 1
|
||||
and wmi.COMPANY_NAME NOT IN ('111', 'a')
|
||||
and wmi.COMPANY_NAME is not NULL
|
||||
and wmi.COMPANY_NAME LIKE '%' || #{companyName} || '%'
|
||||
</select>
|
||||
|
||||
<select id="getDepartments" parameterType="map" resultType="egovMap">
|
||||
SELECT
|
||||
(SELECT tgd.GL_DISTRICT
|
||||
|
|
@ -101,6 +119,7 @@
|
|||
#{constCompanyAdmin},
|
||||
#{constCompanyTel},
|
||||
#{userId},
|
||||
#{constUserid},
|
||||
#{v_RetCode, mode=OUT, jdbcType=INTEGER},
|
||||
#{v_RetMsg, mode=OUT, jdbcType=VARCHAR}
|
||||
) }
|
||||
|
|
|
|||
|
|
@ -35,6 +35,36 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
<c:import url="/drilling/common/includeTopMenu.do" charEncoding="UTF-8" />
|
||||
<!-- header end-->
|
||||
|
||||
<style>
|
||||
.table-scrollable {
|
||||
overflow: visible;
|
||||
}
|
||||
.info-row {
|
||||
position: relative;
|
||||
}
|
||||
.suggestionList {
|
||||
border: 1px solid #ccc;
|
||||
width: 300px; /* 입력창 너비에 맞춰 조절 */
|
||||
height: 160px;
|
||||
overflow-y: scroll;
|
||||
position: absolute;
|
||||
top: 39px;
|
||||
left: 6px;
|
||||
background-color: white;
|
||||
display: none;
|
||||
z-index: 3;
|
||||
}
|
||||
.suggestionList div {
|
||||
padding: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.suggestionList div:hover {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
.suggestionList div .organizational-structure {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
<iframe class="iframe-body-none" name="hiddenFrame"></iframe>
|
||||
|
||||
|
||||
|
|
@ -87,6 +117,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
<button class="btn-green btn-excel-download" type="button" id="excel-download-btn"
|
||||
onclick="javascript:fileDownload('발주기관_건설현장입력_양식.xls', 'drilling_construction_input_form.xls')">엑셀 양식 다운로드</button>
|
||||
</div>
|
||||
<div id="suggestionList"></div>
|
||||
<div id="table-container">
|
||||
</div>
|
||||
<div class="bottom-buttons">
|
||||
|
|
@ -229,13 +260,15 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
</tr>
|
||||
<tr>
|
||||
<th>건설사</th>
|
||||
<td colspan="3">
|
||||
<input type="text" value="" class="input-box information1" id="const-company-dept-` + tableId + `" placeholder="건설사명">
|
||||
<td colspan="3" class="info-row">
|
||||
<input type="hidden" value="" id="const-user-id-` + tableId + `" name="const-user-id" />
|
||||
<input type="text" value="" class="input-box information1 const-company-dept" id="const-company-dept-` + tableId + `" placeholder="건설사명">
|
||||
<input type="text" value="" class="input-box information2" id="const-company-admin-` + tableId + `" placeholder="담당자">
|
||||
<input type="text" value="010-0000-0000" class="input-box information3" id="const-company-tel-` + tableId + `" placeholder="담당자 연락처">
|
||||
<label class="check-box unselected-constructor-label" for="unselected-constructor-` + tableId + `"><input type="checkbox" id="unselected-constructor-` + tableId + `">
|
||||
<span class="unselected-constructor-label-text">건설사 미선정</span>
|
||||
</label>
|
||||
<div style="display: none;" class="suggestionList"></div>
|
||||
</td>
|
||||
</tr>`;
|
||||
if (tableId > 1) {
|
||||
|
|
@ -338,6 +371,99 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
|
||||
});
|
||||
|
||||
document.querySelectorAll('.const-company-dept').forEach(function (companyNameInput) {
|
||||
document.addEventListener('keyup', function (e) {
|
||||
if (!e.target.classList.contains('const-company-dept')) return;
|
||||
|
||||
const companyNameInput = e.target;
|
||||
const companyName = companyNameInput.value.trim();
|
||||
const suggestionListDiv = companyNameInput
|
||||
.closest('td')
|
||||
.querySelector('.suggestionList');
|
||||
const hiddenUserIdInput = companyNameInput
|
||||
.closest('td')
|
||||
.querySelector('input[type="hidden"][name="const-user-id"]');
|
||||
const tableContainerDiv = companyNameInput
|
||||
.closest('div')
|
||||
if (!suggestionListDiv) return;
|
||||
|
||||
if (companyName.length === 0) {
|
||||
suggestionListDiv.style.display = 'none';
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: '/drilling-company-list.json',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
companyName: companyName,
|
||||
isProjectNameChecking: 'true'
|
||||
},
|
||||
success: function (json) {
|
||||
|
||||
suggestionListDiv.innerHTML = '';
|
||||
suggestionListDiv.style.display = 'none';
|
||||
|
||||
const list = json?.result?.list || [];
|
||||
if (list.length === 0) return;
|
||||
|
||||
list.forEach(function (item) {
|
||||
|
||||
const suggestionItem = document.createElement('div');
|
||||
let maskedid = '';
|
||||
let partName = '';
|
||||
let newAddress = '';
|
||||
if (item.maskedid) maskedid = item.maskedid;
|
||||
if (item.partName) partName = item.partName;
|
||||
if (item.newAddress) newAddress = item.newAddress;
|
||||
|
||||
const keyword = companyName;
|
||||
const regex = new RegExp(keyword, 'gi');
|
||||
const boldCompanyName = item.companyName.replace(
|
||||
regex,
|
||||
'<b style="background:yellow">' + keyword + '</b>'
|
||||
);
|
||||
|
||||
suggestionItem.innerHTML =
|
||||
'<span class="organizational-structure">' + boldCompanyName + '</span><br />' +
|
||||
'<span>' + maskedid + '(' + partName + ')' + '/' + newAddress
|
||||
'</span>';
|
||||
|
||||
suggestionItem.addEventListener('click', function () {
|
||||
companyNameInput.value = item.companyName;
|
||||
hiddenUserIdInput.value = item.encryptId;
|
||||
suggestionListDiv.style.display = 'none';
|
||||
setConstInfo(item.encryptId, tableContainerDiv); // 건설사 계정 선택시 이름, 연락처 자동 셋팅
|
||||
});
|
||||
|
||||
suggestionListDiv.appendChild(suggestionItem);
|
||||
});
|
||||
|
||||
const rect = companyNameInput.getBoundingClientRect();
|
||||
suggestionListDiv.style.display = 'block';
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// 사용자가 추천 목록 외부를 클릭하면 목록 숨기기 (선택적)
|
||||
/* document.onclick = function(event) {
|
||||
if (event.target !== companyNameInput && event.target !== suggestionListDiv && !suggestionListDiv.contains(event.target)) {
|
||||
suggestionListDiv.style.display = "none";
|
||||
}
|
||||
};*/
|
||||
document.addEventListener('click', function (e) {
|
||||
document.querySelectorAll('.suggestionList').forEach(function (list) {
|
||||
|
||||
if (list.contains(e.target)) return;
|
||||
|
||||
const input = list.closest('td')?.querySelector('.const-company-dept');
|
||||
if (input && input === e.target) return;
|
||||
|
||||
list.style.display = 'none';
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// 사업 등록 처리
|
||||
|
|
@ -390,6 +516,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
var constCompanyNameEle = document.getElementById('const-company-dept-' + dataIndexValue);
|
||||
if (constCompanyNameEle) {
|
||||
jsonItem.constCompanyName = constCompanyNameEle.value;
|
||||
jsonItem.constCompanyName = constCompanyNameEle.value;
|
||||
}
|
||||
// 건설사 - 담당자
|
||||
var constCompanyAdminEle = document.getElementById('const-company-admin-' + dataIndexValue);
|
||||
|
|
@ -401,7 +528,10 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
if (constCompanyTelEle) {
|
||||
jsonItem.constCompanyTel = constCompanyTelEle.value;
|
||||
}
|
||||
|
||||
|
||||
// 건설사 - 선택한 건설사 userid
|
||||
var hiddenUseridEle = document.getElementById('const-user-id-' + dataIndexValue);
|
||||
jsonItem.encUserid = hiddenUseridEle.value;
|
||||
if (cid) {
|
||||
jsonItem.cid=cid;
|
||||
}
|
||||
|
|
@ -571,6 +701,24 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
xhr.send();
|
||||
}
|
||||
|
||||
function setConstInfo(encId, tblIdx) {
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: '/const-user-info.json',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
encUserid: encId
|
||||
},
|
||||
success: function (json) {
|
||||
// console.log(json)
|
||||
let data = json.result.data
|
||||
tblIdx.querySelector('input[id*=const-company-admin-]').value = data.userName;
|
||||
tblIdx.querySelector('input[id*=const-company-tel-]').value = data.phone;
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function triggerExcelUpload() {
|
||||
// 숨겨진 파일 선택 input을 클릭시킴
|
||||
document.getElementById('excel-file-input').click();
|
||||
|
|
@ -704,13 +852,15 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
</tr>
|
||||
<tr>
|
||||
<th>건설사</th>
|
||||
<td colspan="3">
|
||||
<input type="text" value="` + const_company_dept + `" class="input-box information1" id="const-company-dept-` + tableId + `" placeholder="건설사명">
|
||||
<td colspan="3" class="info-row">
|
||||
<input type="hidden" value="" id="const-user-id-` + tableId + `" name="const-user-id" />
|
||||
<input type="text" value="` + const_company_dept + `" class="input-box information1 const-company-dept" id="const-company-dept-` + tableId + `" placeholder="건설사명">
|
||||
<input type="text" value="` + const_company_name + `" class="input-box information2" id="const-company-admin-` + tableId + `" placeholder="담당자">
|
||||
<input type="text" value="` + const_company_tel + `" class="input-box information3" id="const-company-tel-` + tableId + `" placeholder="담당자 연락처">
|
||||
<label class="check-box unselected-constructor-label" for="unselected-constructor-` + tableId + `"><input type="checkbox" id="unselected-constructor-` + tableId + `" ` + fin_const_company + `>
|
||||
<span class="unselected-constructor-label-text">건설사 미선정</span>
|
||||
</label>
|
||||
<div style="display: none;" class="suggestionList"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
|||
Loading…
Reference in New Issue