feat: 건설현장관리기능 연계 작업 중간 저장

main
thkim 2025-05-21 17:53:13 +09:00
parent f34e18fba2
commit 5c18871ab9
25 changed files with 1064 additions and 357 deletions

View File

@ -2,7 +2,33 @@ src\main\resources\egovframework\egovProps\globals.properties
#src\main\java\geoinfo\regi\manageList\ManageExcelUploadProc01Controller.java
#src\main\webapp\WEB-INF\views\web\input\excel_step00.jsp
#src\main\webapp\WEB-INF\views\web\input\excel_step31.jsp
src\main\webapp\com\css\common.v2.0.css
src\main\webapp\com\css\common.v2.0.css.map
#src\main\webapp\com\css\common.v2.0.css
#src\main\webapp\com\css\common.v2.0.css.map
src\main\webapp\WEB-INF\views\web\input\meta_info1.jsp
src\main\webapp\WEB-INF\views\web\manage\list_reg.jsp
src\main\webapp\js\map\main\map.js
src\main\java\geoinfo\drilling\home\DrillingHomeController.java
src\main\java\geoinfo\drilling\home\service\DrillingHomeService.java
src\main\java\geoinfo\drilling\home\service\impl\DrillingHomeServiceImpl.java
src\main\java\geoinfo\drilling\home\service\DrillingHomeMapper.java
src\main\resources\egovframework\sqlmap\mapper\drilling\home\DrillingHomeMapper.xml
src\main\webapp\images\map\drilling-pin-35-50.png
src\main\java\geoinfo\drilling\common\DrillingCommonController.java
src\main\webapp\WEB-INF\views\drilling\common\includeTopMenu.jsp
src\main\webapp\com\js\drilling\drilling-common.js
src\main\webapp\WEB-INF\views\drilling\home\drilling_index.jsp
src\main\webapp\proxyo2map.jsp
src\main\java\geoinfo\main\login\LoginController.java
src\main\webapp\WEB-INF\views\web\input\meta_info1.jsp
src\main\java\geoinfo\regi\projectList\ProjectListController.java
src\main\java\geoinfo\drilling\inquiry\service\DrillingInquiryService.java
src\main\java\geoinfo\drilling\inquiry\service\impl\DrillingInquiryServiceImpl.java
src\main\java\geoinfo\drilling\inquiry\service\DrillingInquiryMapper.java
src\main\resources\egovframework\sqlmap\mapper\drilling\inquiry\DrillingInquiryMapper.xml
src\main\java\geoinfo\drilling\input\service\DrillingInputService.java
src\main\java\geoinfo\drilling\input\service\impl\DrillingInputServiceImpl.java
src\main\java\geoinfo\drilling\input\service\DrillingInputMapper.java
src\main\resources\egovframework\sqlmap\mapper\drilling\input\DrillingInputMapper.xml

View File

@ -2,7 +2,9 @@ package geoinfo.drilling.common;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -13,11 +15,16 @@ import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import geoinfo.main.login.service.LoginService;
@Controller
public class DrillingCommonController {
private static final Logger LOGGER = LoggerFactory.getLogger(DrillingCommonController.class);
@Resource(name = "loginService")
private LoginService loginService;
@RequestMapping(value = "/drilling/common/includeTopMenu.do")
public String memberRegi(@RequestParam HashMap<String, Object> params, ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {
@ -30,6 +37,14 @@ public class DrillingCommonController {
model.put("cls", String.valueOf(request.getSession().getAttribute("CLS")));
model.put("companyName", request.getSession().getAttribute("COMPANYNAME"));
Map<String, Object> map = new HashMap<String, Object>();
map.put("userid", String.valueOf(request.getSession().getAttribute("USERID")));
Map<String, Object> result = loginService.selectWebMemberIn(map);
model.put("masterCompanyCode", result.get("master_company_code"));
return "/drilling/common/includeTopMenu";
}
}

View File

@ -45,6 +45,7 @@ import geoinfo.com.WebConfirm;
import geoinfo.drilling.home.service.DrillingHomeService;
import geoinfo.drilling.input.service.DrillingInputService;
import geoinfo.drilling.inquiry.service.DrillingInquiryService;
import geoinfo.main.login.service.LoginService;
import geoinfo.map.mapControl.service.MapControlService;
import geoinfo.regi.selectClassInfo.service.SelectClassService;
import geoinfo.regi.status.service.RegiPageService;
@ -60,6 +61,9 @@ public class DrillingHomeController {
private static final Logger LOGGER = LoggerFactory.getLogger(DrillingHomeController.class);
@Resource(name = "loginService")
private LoginService loginService;
@Autowired
DrillingHomeService drillingHomeService;
@ -83,6 +87,22 @@ public class DrillingHomeController {
try {
HashMap<String, Object> spGetProjectMbrParams = drillingInquiryService.spGetProjectMbr( request, params, userId );
model.addAttribute("mbr", spGetProjectMbrParams);
if(request.getSession().getAttribute("USERNAME") == null){
return "isError";
}
model.put("userName", String.valueOf(request.getSession().getAttribute("USERNAME")));
model.put("cls", String.valueOf(request.getSession().getAttribute("CLS")));
model.put("companyName", request.getSession().getAttribute("COMPANYNAME"));
Map<String, Object> map = new HashMap<String, Object>();
map.put("userid", String.valueOf(request.getSession().getAttribute("USERID")));
Map<String, Object> result = loginService.selectWebMemberIn(map);
model.put("masterCompanyCode", result.get("master_company_code"));
} catch (Exception e) {
// TODO Auto-generated catch block
String strTxt =
@ -98,4 +118,12 @@ public class DrillingHomeController {
return "/drilling/home/drilling_index";
}
// 지도에서 발주기관 소속 시추공 표시
@RequestMapping(value = "/drilling/map/searchHole.do", method = RequestMethod.GET)
public String drillingMapSearchHole(String projectCode, ModelMap model) throws Exception {
model.put("data", drillingHomeService.drillingMapSearchHole(projectCode));
System.out.println("jsonView log 확인");
return "jsonView";
}
}

View File

@ -9,7 +9,7 @@ import egovframework.rte.psl.dataaccess.util.EgovMap;
@Mapper("drillingHomeMapper")
public interface DrillingHomeMapper {
List<EgovMap> drillingMapSearchHole(String projectCode);
}

View File

@ -1,13 +1,16 @@
package geoinfo.drilling.home.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.json.simple.JSONObject;
import egovframework.rte.psl.dataaccess.util.EgovMap;
public interface DrillingHomeService {
public List<EgovMap> drillingMapSearchHole(String projectCode);
}

View File

@ -33,5 +33,10 @@ public class DrillingHomeServiceImpl implements DrillingHomeService {
@Resource(name="drillingHomeMapper")
private DrillingHomeMapper drillingHomeMapper;
@Override
public List<EgovMap> drillingMapSearchHole(String projectCode) {
return drillingHomeMapper.drillingMapSearchHole(projectCode);
}
}

View File

@ -2,6 +2,7 @@ package geoinfo.drilling.input.service;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
import egovframework.rte.psl.dataaccess.util.EgovMap;
@ -15,6 +16,12 @@ public interface DrillingInputMapper {
public void spGetMasterCompanyDistrict(HashMap<String, Object> spGetMasterCompanyDistrictParams) throws SQLException;
public EgovMap getDepartments(HashMap<String, Object> params) throws SQLException;
public HashMap<String, Object> spUdtTblCsi(HashMap<String, Object> params) throws SQLException;
public List<EgovMap> sPGetTblCsiByCid(HashMap<String, Object> params) throws SQLException;
public EgovMap getItemByCid(HashMap<String, Object> params) throws SQLException;
public int updateProjectCode(HashMap<String, Object> params) throws SQLException;
}

View File

@ -11,4 +11,5 @@ public interface DrillingInputService {
HashMap<String, Object> getOrganizationUserGlGmGsGfCodes(String userId) throws Exception;
HashMap<String, Object> drillingInputAdd(HttpServletRequest request, HashMap<String, Object> params) throws Exception;
void getDepartments(HttpServletRequest request, HashMap<String, Object> params, JSONObject jsonResponse) throws Exception;
HashMap<String, Object> updateProjectCode(HttpServletRequest request, HashMap<String, Object> params) throws Exception;
}

View File

@ -120,4 +120,44 @@ public class DrillingInputServiceImpl implements DrillingInputService {
}
@Override
public HashMap<String, Object> updateProjectCode(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
String userId = (String)request.getSession().getAttribute("USERID");
params.put("userId", userId);
try {
/*
List<EgovMap> sPGetTblCsiByCidParams = drillingInputMapper.sPGetTblCsiByCid( params );
if( sPGetTblCsiByCidParams.size() == 0 ) {
return params;
}
EgovMap tbl = sPGetTblCsiByCidParams.get(0);
*/
EgovMap tbl = drillingInputMapper.getItemByCid( params );
HashMap<String, Object> updateProjectCodeParams = new HashMap<String, Object>();
updateProjectCodeParams.put("userId", userId);
updateProjectCodeParams.put("PROJECT_CODE", params.get("PROJECT_CODE"));
updateProjectCodeParams.put("CID", params.get("CID"));
int nResult = drillingInputMapper.updateProjectCode(updateProjectCodeParams);
if( nResult == 0 ) {
if( tbl.get("projectCode") != null && !tbl.get("projectCode").equals(params.get("PROJECT_CODE")) ) {
throw new Exception( "해당 프로젝트는 이미 다른 프로젝트와 연결되어 있습니다." );
}
}
return params;
} catch (SQLException e) {
throw new Exception( e.getMessage() );
}
}
}

View File

@ -14,7 +14,7 @@ public interface DrillingInquiryMapper {
public List<EgovMap> spGetTblCsiByKeyword(HashMap<String, Object> params) throws SQLException;
public String spGetConstCompanyName(Long constCompanyCode) throws SQLException;
public String spGetProjectMbr(HashMap<String, Object> params) throws SQLException;
public List<EgovMap> drillingInquiryAutocompleteList(HashMap<String, Object> params) throws SQLException;
}

View File

@ -1,15 +1,19 @@
package geoinfo.drilling.inquiry.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.json.simple.JSONObject;
import egovframework.rte.psl.dataaccess.util.EgovMap;
public interface DrillingInquiryService {
JSONObject drillingInquiryList(HttpServletRequest request, HashMap<String, Object> params) throws Exception;
HashMap<String, Object> spGetProjectMbr(HttpServletRequest request, HashMap<String, Object> params, String userId) throws Exception;
List<EgovMap> drillingInquiryAutocompleteList(HttpServletRequest request, HashMap<String, Object> params) throws Exception;
}

View File

@ -294,4 +294,40 @@ public class DrillingInquiryServiceImpl implements DrillingInquiryService {
}
@Override
public List<EgovMap> drillingInquiryAutocompleteList(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
String userId = MyUtil.getStringFromObject( request.getSession().getAttribute("USERID") );
if( userId == null){
throw new Exception( "로그인이 필요한 서비스입니다." );
}
try {
try {
List<EgovMap> list = drillingInquiryMapper.drillingInquiryAutocompleteList(params);
return list;
} catch (SQLException e) {
String strTxt =
"---------- BUG REPORTING START ----------" + "\n" +
"에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
"params:[\n" + params.toString() + "\n]\n" +
"e.getMessage():[\n" + e.getMessage() + "\n]\n" + "\n" +
"new Date().toString():[" + new Date().toString() + "]\n" + "\n" +
"---------- BUG REPORTING END ----------" + "\n" +
"";
System.out.println(strTxt);
throw new Exception( "오류가 발생하였습니다." + "\n" + "SQLException" );
}
} catch (org.json.simple.parser.ParseException e) {
// TODO Auto-generated catch block
throw new Exception( e.getMessage() );
}
}
}

View File

@ -1076,6 +1076,11 @@ public class LoginController {
url = "home/main_sitemap.jsp";
else
url = "index.do?cntyn=0";
} else if (cls.equals("2")) { // 발주기관일경우
if (location.equals("left"))
url = "left.do";
else
url = "drilling/index.do";
} else if (cls.equals("9")) { // 관리자일경우
if (location.equals("left"))
url = "left.do";

View File

@ -165,8 +165,7 @@ public class ManageListController {
model.addAttribute("L_DIS", mapDis.get("L_DIS"));
return "/web/input/meta_info";
}
else{
} else {
// 지반정보등록 (신규)
int count = 0;

View File

@ -9,7 +9,9 @@ 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.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
@ -21,6 +23,8 @@ import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.util.UrlPathHelper;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import geoinfo.drilling.input.service.DrillingInputService;
import geoinfo.drilling.inquiry.service.DrillingInquiryService;
import geoinfo.regi.header.service.HeaderService;
import geoinfo.regi.projectList.service.ProjectListService;
import geoinfo.regi.status.service.RegiPageService;
@ -39,6 +43,13 @@ public class ProjectListController {
@Resource(name = "headerService")
private HeaderService headerService;
@Autowired
private DrillingInquiryService drillingInquiryService;
@Autowired
private DrillingInputService drillingInputService;
//프로젝트명 중복여부를 체크한다.
@ResponseBody
@RequestMapping(value = "/project-duplicate-check", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
@ -81,7 +92,7 @@ public class ProjectListController {
jsonObject.put("resultCode", "The name already exists.");
jsonObject.put("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력해 주세요. code 2");
}
} else if( 0 < arrConstNameByProjectNameFromTempConstructSiteInfo.size() ) {
} else if( false && 0 < arrConstNameByProjectNameFromTempConstructSiteInfo.size() ) {
jsonObject.put("result", "false");
jsonObject.put("resultCode", "The name already exists.");
jsonObject.put("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력해 주세요. code 3");
@ -128,14 +139,15 @@ public class ProjectListController {
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_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 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);
@ -185,7 +197,7 @@ public class ProjectListController {
model.addObject("result", "false");
model.addObject("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력 해주세요.");
model.setViewName("redirect:/index_db.do");
return null;
return model;
}
affectRow = masterService.insertMeta(params);
@ -216,6 +228,15 @@ public class ProjectListController {
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);
drillingInputService.updateProjectCode(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);
@ -527,5 +548,42 @@ public class ProjectListController {
return "/web/project/checklist_db";
}
// 발주기관 프로젝트목록 가져오기
@ResponseBody
@RequestMapping(value = "/drilling-project-list", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
public String getDrillingProjectList(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("projectName"));
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", drillingInquiryService.drillingInquiryAutocompleteList(request, 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이므로 반환 값은 필요 없습니다.
}
}

View File

@ -3,4 +3,30 @@
<mapper namespace="geoinfo.drilling.home.service.DrillingHomeMapper">
<resultMap id="holeLocationResultMap" type="egovMap">
<id property="gid" column="GID" />
<result property="wkt" column="WKT" javaType="java.lang.String" />
</resultMap>
<select id="drillingMapSearchHole" parameterType="String" resultMap="holeLocationResultMap">
SELECT
HOLE.GID,
HOLE.HOLE_CODE AS CODE,
HOLE.THE_GEOM.GET_WKT() AS WKT
FROM TBL_HEADER_HOLE HOLE
WHERE HOLE.PROJECT_CODE IN (
SELECT TRIM(tpi.PROJECT_CODE)
FROM
TBL_PROJECT_INFO tpi
WHERE
tpi.PROJECT_MASTER_COMPANY_CODE IN
(
SELECT
tmc.COM_CODE
FROM
TBL_MASTER_COMPANY tmc
WHERE
tmc.COM_CODE IN (TRIM(#{value}))
)
)
</select>
</mapper>

View File

@ -61,7 +61,6 @@
) }
</select>
<select id="getDepartments" parameterType="map" resultType="egovMap">
SELECT
(SELECT tgd.GL_DISTRICT
@ -79,6 +78,51 @@
FROM DUAL
</select>
<resultMap id="spUdtTblCsiResult" type="java.util.HashMap">
<result property="resultCode" column="p_result_code" jdbcType="VARCHAR"/>
<result property="errMsg" column="p_err_msg" jdbcType="VARCHAR"/>
</resultMap>
<select id="spUdtTblCsi" parameterType="map" statementType="CALLABLE" resultMap="spUdtTblCsiResult">
{ CALL SP_UDT_TBL_CSI(
#{cid},
#{constName},
#{constStartDate},
#{constEndDate},
#{constStateCode},
#{masterCompanyOCode},
#{masterCompanyTwCode},
#{masterCompanyThCode},
#{masterCompanyName},
#{masterCompanyDept},
#{masterCompanyAdmin},
#{masterCompanyTel},
#{constCompanyCode},
#{constCompanyAdmin},
#{constCompanyTel},
#{userId},
#{v_RetCode, mode=OUT, jdbcType=INTEGER},
#{v_RetMsg, mode=OUT, jdbcType=VARCHAR}
) }
</select>
<select id="sPGetTblCsiByCid" parameterType="map" resultType="egovMap">
<![CDATA[
select * FROM TABLE(SP_GET_TBL_CSI_BY_CID(#{CID}))
]]>
</select>
<select id="getItemByCid" parameterType="map" resultType="egovMap">
<![CDATA[
SELECT * FROM TEMP_CONSTRUCT_SITE_INFO WHERE TRIM(CID) = #{CID}
]]>
</select>
<update id="updateProjectCode" parameterType="map">
<![CDATA[
UPDATE TEMP_CONSTRUCT_SITE_INFO SET PROJECT_CODE = #{PROJECT_CODE} WHERE TRIM(CID) = #{CID} AND PROJECT_CODE IS NULL
]]>
</update>
</mapper>

View File

@ -46,5 +46,53 @@
) }
</select>
<select id="drillingInquiryAutocompleteList" parameterType="map" resultType="egovMap">
SELECT
tgld.GL_DISTRICT,
tgmd.GM_DISTRICT,
tgsd.GS_DISTRICT,
tcsi.CID,
tcsi.CONST_NAME
FROM
TEMP_CONSTRUCT_SITE_INFO tcsi
LEFT JOIN (
SELECT
*
FROM
tbl_gl_district
WHERE
use_yn = 'Y'
ORDER BY
gl_code
) tgld ON tcsi.MASTER_COMPANY_O_CODE = tgld.GL_CODE
LEFT JOIN (
SELECT
*
FROM
tbl_gm_district
WHERE
use_yn = 'Y'
ORDER BY
gm_code
) tgmd ON tcsi.MASTER_COMPANY_O_CODE = tgmd.GL_CODE AND tcsi.MASTER_COMPANY_TW_CODE = tgmd.GM_CODE
LEFT JOIN (
SELECT
*
FROM
tbl_gs_district
WHERE
use_yn = 'Y'
ORDER BY
gs_code
) tgsd ON
tcsi.MASTER_COMPANY_O_CODE = tgsd.GL_CODE AND
tcsi.MASTER_COMPANY_TW_CODE = tgsd.GM_CODE AND
tcsi.MASTER_COMPANY_TH_CODE = tgsd.GS_CODE
WHERE
tcsi.PROJECT_CODE IS NULL AND
tcsi.CONST_NAME LIKE '%' || #{projectName} || '%'
ORDER BY tcsi.CRT_DT DESC
</select>
</mapper>

View File

@ -16,13 +16,20 @@
<input type="hidden" id="gs-district" name="gs-district" value="" />
<input type="hidden" id="gf-district" name="gf-district" value="" />
<input type="hidden" id="last-team-name" name="last-team-name" value="" />
<input type="hidden" id="master-company-code" name="master-company-code" value="<c:out value="${masterCompanyCode}"/>" />
<!-- header -------------------------------------------->
<header class="drilling-wrap-header">
<div id="header_cont">
<div class="wrap_header_top">
<!-- logo -->
<h1 class="logo logo-01"><a href="/drilling/index.do">서울지방국토관리청</a></h1>
<c:if test="${'025' == masterCompanyCode}">
<h1 class="logo logo-05"><a href="/drilling/index.do">서울지방국토관리청</a></h1>
</c:if>
<c:if test="${'709' == masterCompanyCode}">
<h1 class="logo logo-03"><a href="/drilling/index.do">서울지방국토관리청</a></h1>
</c:if>
<!-- //logo -->
<div class="search_top_hd">
<a href="javascript:void(0)" class="search_btn">검색영역열기</a>
@ -455,6 +462,138 @@
</li>
</ul>
</div>
</li>
<li class="">
<a href="/drilling/input.do">
로그아웃
</a>
<div class="depth2_box">
<ul class="depth2">
<li>
<a href="https://www.molit.go.kr/wrocm/USR/BORD0201/m_15958/BRD.jsp">
<i>공지사항</i>
</a>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/BORD0201/m_15959/BRD.jsp">
<i>국토관리청공고</i>
</a>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/phc040301_b/m_15961/lst.jsp" class="has_sub">
<i>사업·입찰안내</i>
</a>
<ul class="depth3">
<li>
<a href="https://www.molit.go.kr/wrocm/USR/phc040301_b/m_15961/lst.jsp">
<i>사업현황</i>
</a>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/tender/m_15962/lst.jsp">
<i>입찰안내</i>
</a>
</li>
</ul>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/BORD0201/m_21982/BRD.jsp">
<i>원주국토청 보도자료</i>
</a>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/N0201/m_15955/lst.jsp">
<i>국토부 보도자료</i>
</a>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/INSA/m_15972/lst.jsp" class="has_sub">
<i>인사/채용</i>
</a>
<ul class="depth3">
<li>
<a href="https://www.molit.go.kr/wrocm/USR/INSA/m_15972/lst.jsp">
<i>인사발령</i>
</a>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/BORD0201/m_15974/BRD.jsp">
<i>직원채용정보</i>
</a>
</li>
</ul>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/standard/m_34928/lst.jsp">
<i>사전규격공고</i>
</a>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/ordinance/m_15983/lst.jsp" class="has_sub">
<i>법령자료</i>
</a>
<ul class="depth3">
<li>
<a href="https://www.molit.go.kr/wrocm/USR/ordinance/m_15983/lst.jsp">
<i>법률</i>
</a>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/ordinance/m_15984/lst.jsp">
<i>대통령령</i>
</a>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/ordinance/m_15985/lst.jsp">
<i>부령</i>
</a>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/I0204/m_15986/lst.jsp">
<i>훈령/지침/고시</i>
</a>
</li>
<li>
<a href="https://www.molit.go.kr/wrocm/USR/law/m_22725/lst.jsp">
<i>입법예고</i>
</a>
</li>
</ul>
</li>
</ul>
</div>
</li>

View File

@ -18,7 +18,7 @@
<img src="/com/img/drilling/maps/01_active.svg" class="my-map rok region" id="my-map-rok-region-01" alt="서울지방국토관리청 영역"title="서울지방국토관리청 영역" />
<div class="region-item" id="region-item-01">
<div class="region-alone active" id="region-alone-01" title="서울지방국토관리청 영역"></div>
<div class="region-alone" id="region-alone-01" title="서울지방국토관리청 영역"></div>
<div class="region-logo" id="region-logo-01" title="서울지방국토관리청"></div>
</div>
@ -32,7 +32,16 @@
<img src="/com/img/drilling/maps/03_active.svg" class="my-map rok region" id="my-map-rok-region-03" alt="원주지방국토관리청에 오신것을 진심으로 환영합니다. WONJU REGIONAL OFFICE OF CONSTRUCTION MANAGEMENT" />
<div class="region-item" id="region-item-03">
<div class="region-logo" id="region-logo-03" title="대전지방국토관리청"></div>
<c:choose>
<c:when test="${'709' == masterCompanyCode}">
<%-- <div class="region-alone active" id="region-alone-03" title="대전지방국토관리청 영역"></div> --%>
<div class="region-alone" id="region-alone-03" title="대전지방국토관리청 영역"></div>
</c:when>
<c:otherwise>
<%-- masterCompanyCode가 '709'가 아닌 경우의 기본 처리 --%>
<div class="region-alone" id="region-alone-03" title="대전지방국토관리청 영역"></div>
</c:otherwise>
</c:choose>
</div>
<img src="/com/img/drilling/maps/04_active.svg" class="my-map rok region" id="my-map-rok-region-04" alt="원주지방국토관리청에 오신것을 진심으로 환영합니다. WONJU REGIONAL OFFICE OF CONSTRUCTION MANAGEMENT" />
@ -44,7 +53,16 @@
<img src="/com/img/drilling/maps/05_active.svg" class="my-map rok region" id="my-map-rok-region-05" alt="원주지방국토관리청에 오신것을 진심으로 환영합니다. WONJU REGIONAL OFFICE OF CONSTRUCTION MANAGEMENT" />
<div class="region-item" id="region-item-05">
<div class="region-logo" id="region-logo-05" title="부산지방국토관리청"></div>
<c:choose>
<c:when test="${'025' == masterCompanyCode}">
<%-- <div class="region-alone active" id="region-alone-05" title="부산지방국토관리청 영역"></div> --%>
<div class="region-alone" id="region-alone-05" title="부산지방국토관리청 영역"></div>
</c:when>
<c:otherwise>
<%-- masterCompanyCode가 '709'가 아닌 경우의 기본 처리 --%>
<div class="region-alone" id="region-alone-05" title="부산지방국토관리청 영역"></div>
</c:otherwise>
</c:choose>
</div>
<img src="/com/img/drilling/maps/02.png" class="my-map rok region" alt="원주지방국토관리청에 오신것을 진심으로 환영합니다. WONJU REGIONAL OFFICE OF CONSTRUCTION MANAGEMENT" />

View File

@ -68,6 +68,26 @@
to {bottom: 0; opacity: 0;}
}
#suggestionList {
border: 1px solid #ccc;
width: 300px; /* 입력창 너비에 맞춰 조절 */
position_: absolute;
background-color: white;
display: none;
}
#suggestionList div {
padding: 5px;
cursor: pointer;
}
#suggestionList div:hover {
background-color: #f0f0f0;
}
#suggestionList div .organizational-structure {
color: red;
}
</style>
<script type="text/javaScript">
@ -312,6 +332,7 @@ window.onload = function() {
});
var projectNameInput = document.getElementById("PROJECT_NAME");
var suggestionListDiv = document.getElementById("suggestionList");
projectNameInput.addEventListener('focusout', function() {
var projectName = this.value;
@ -332,6 +353,11 @@ window.onload = function() {
} else {
return true;
}
// 약간의 딜레이를 주어 suggestionItem의 onclick 이벤트가 먼저 발생하도록 처리
setTimeout(function() {
suggestionListDiv.style.display = "none";
}, 100);
},
error: function(xhr, option, error){
alert(xhr.status); //오류코드
@ -340,6 +366,102 @@ window.onload = function() {
});
});
var preProjectList = [
"새로운 웹사이트 개발 프로젝트",
"새로운 나라만들기 프로젝트",
"모바일 앱 개편",
"데이터베이스 마이그레이션",
"클라우드 인프라 구축",
"인공지능 기반 서비스 개발",
"머신러닝 모델 학습",
"빅데이터 분석 플랫폼 구축",
"사이버 보안 강화 프로젝트",
"소프트웨어 품질 개선",
"사용자 인터페이스 디자인 개선"
];
projectNameInput.onkeyup = function() {
var projectName = this.value;
if (projectName.length > 0) {
$.ajax({
type : "GET",
data : {
projectName : projectName,
isProjectNameChecking : "true"
},
url : "/drilling-project-list.json",
dataType : "json",
success : function( json ) {
suggestionListDiv.innerHTML = ""; // 이전 목록 비우기
suggestionListDiv.style.display = "none";
var list = json.result.list;
var matchingProjects = [];
for (var i = 0; i < list.length; i++) {
matchingProjects.push(list[i]);
}
if (matchingProjects.length > 0) {
for (var i = 0; i < matchingProjects.length; i++) {
var suggestionItem = document.createElement("div");
var organHierarchy = " " + matchingProjects[i].glDistrict !== null ? matchingProjects[i].glDistrict : "";
if( matchingProjects[i].gmDistrict !== null ) {
organHierarchy = organHierarchy + " &gt; " + matchingProjects[i].gmDistrict;
}
if( matchingProjects[i].gsDistrict !== null ) {
organHierarchy = organHierarchy + " &gt; " + matchingProjects[i].gsDistrict;
}
suggestionItem.setAttribute('data-const-name', matchingProjects[i].constName);
suggestionItem.setAttribute('data-cid', matchingProjects[i].cid);
suggestionItem.innerHTML =
'<span>' + matchingProjects[i].constName + '</span><br />\n' +
'<span class="organizational-structure" data->' +
"발주처: " + organHierarchy
'</span>';
suggestionItem.onclick = function() {
projectNameInput.value = this.getAttribute('data-const-name');
document.getElementById("TEMP_CONSTRUCT_SITE_INFO-CID").value = this.getAttribute('data-cid');
suggestionListDiv.style.display = "none";
};
suggestionListDiv.appendChild(suggestionItem);
}
// suggestionListDiv 위치 설정
var rect = projectNameInput.getBoundingClientRect();
suggestionListDiv.style.position = 'absolute';
//suggestionListDiv.style.left = rect.left + 'px';
//suggestionListDiv.style.top = (rect.bottom + window.scrollY) + 'px';
//suggestionListDiv.style.float = 'left';
suggestionListDiv.style.width = rect.width + 'px';
suggestionListDiv.style.display = "block";
}
},
error: function(xhr, option, error){
alert(xhr.status); //오류코드
alert(error); //오류내용
}
});
}
};
// 사용자가 추천 목록 외부를 클릭하면 목록 숨기기 (선택적)
document.onclick = function(event) {
if (event.target !== projectNameInput && event.target !== suggestionListDiv && !suggestionListDiv.contains(event.target)) {
suggestionListDiv.style.display = "none";
}
};
};
@ -451,6 +573,8 @@ function fn_help_tour(){
<form name="frmMeta" id="frmMeta" action="/insertMeta.do" method="post">
<input type="hidden" id="REPORT_TYPE" name="REPORT_TYPE" value="CH" />
<input type="hidden" id="PROJECT_CODE" name="PROJECT_CODE" value="${mapMetaInfo.PROJECT_CODE }" />
<input type="hidden" id="TEMP_CONSTRUCT_SITE_INFO-CID" name="TEMP_CONSTRUCT_SITE_INFO-CID" />
<table class="table table-bordered">
<colgroup>
@ -496,7 +620,10 @@ function fn_help_tour(){
</tr>
<tr>
<th class="td-head">사업명</th>
<td colspan="3"><input id="PROJECT_NAME" name="PROJECT_NAME" maxlength="2000" type="text" value="${mapMetaInfo.PROJECT_NAME}" valid="notnull" validNm="사업명" /></td>
<td colspan="3">
<input id="PROJECT_NAME" name="PROJECT_NAME" maxlength="2000" type="text" value="${mapMetaInfo.PROJECT_NAME}" valid="notnull" validNm="사업명" />
<div id="suggestionList"></div>
</td>
</tr>
<tr>
<th class="td-head">총 시추공수</th>

View File

@ -23,11 +23,12 @@ function onClickBtnViewOnMap() {
const gs = document.getElementById('gs-district').value;
const gf = document.getElementById('gf-district').value;
const lastTeamName = document.getElementById('last-team-name').value;
const masterCompanyCode = document.getElementById('master-company-code').value;
openMap('${sessionScope.USERID}','${cls}', gl, gm, gs, gf, lastTeamName, projectMasterCompanyName, maxX-minX, maxY-minY);
openMap('${sessionScope.USERID}','${cls}', gl, gm, gs, gf, lastTeamName, projectMasterCompanyName, maxX-minX, maxY-minY, masterCompanyCode);
}
function openMap(userid,cls, gl = null, gm = null, gs = null, gf = null, lastTeamName = null, projectMasterCompanyName = null, positionX= null, positionY= null)
function openMap(userid,cls, gl = null, gm = null, gs = null, gf = null, lastTeamName = null, projectMasterCompanyName = null, positionX= null, positionY= null, masterCompanyCode=null)
{
win = 'map';
sizeX=window.screen.width;
@ -41,7 +42,7 @@ function openMap(userid,cls, gl = null, gm = null, gs = null, gf = null, lastTea
userArea = "부산광역시";
}
}
var mapWin = window.open("/map/mapMain.do?userArea=" + encodeURIComponent(userArea) + "&gl=" + gl + "&gm=" + gm + "&gs=" + gs + "&gf=" + gf + "&lastTeamName=" + lastTeamName + "&positionX=" + positionX + "&positionY=" + positionY + "#tab_1_1","mapWin","toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=" + sizeX + ",height=" + sizeY + ",left=0,top=0");
var mapWin = window.open("/map/mapMain.do?userArea=" + encodeURIComponent(userArea) + "&gl=" + gl + "&gm=" + gm + "&gs=" + gs + "&gf=" + gf + "&lastTeamName=" + lastTeamName + "&masterCompanyCode=" + masterCompanyCode + "&positionX=" + positionX + "&positionY=" + positionY + "#tab_1_1","mapWin","toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=" + sizeX + ",height=" + sizeY + ",left=0,top=0");
mapWin.focus();
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -121,6 +121,8 @@ var HOLE_AREA; // 영역 선택
var HOLE_DRAW; // 그리기 도구
var HOLE_TOOLTIP; // 툴팁
var HOLE_DRILLING; // 발주기관 시추공
// ------------------------
// 관정 관련
// ------------------------
@ -545,12 +547,39 @@ function initApp(param){
BASE_MAP.addControl(CTL_MEASURE2.PATH);
BASE_MAP.addControl(CTL_MEASURE.AREA);
BASE_MAP.addControl(CTL_MEASURE5.PATH);
HOLE_DRILLING = new OpenLayers.Layer.Vector("DRILLING");
// 새로운 스타일 객체 생성
var holeImageStyle = new OpenLayers.Style(
{
fontFamily : "맑은 고딕"
},
{
rules: [
new OpenLayers.Rule({
symbolizer: {
externalGraphic : "/images/map/drilling-pin-35-50.png",
graphicWidth : 35,
graphicHeight : 50,
graphicXOffset : -18,
graphicYOffset : -55
}
})
]
}
);
//스타일 적용
HOLE_DRILLING.styleMap = new OpenLayers.StyleMap(holeImageStyle);
BASE_MAP.addLayer(HOLE_DRILLING);
// 객체 선택
HOLE_SELECT = new OpenLayers.Layer.Vector("SELECT");
HOLE_SELECT.styleMap = new OpenLayers.StyleMap(getStyleSELECT());
BASE_MAP.addLayer(HOLE_SELECT);
CTL_SELECT = new OpenLayers.Control.WMSGetFeatureInfo({
url: O2MAP_URL,
crs: "EPSG:3857",
@ -854,6 +883,7 @@ function initApp(param){
const gs = getQueryString("gs");
const gf = getQueryString("gf");
const lastTeamName = getQueryString("lastTeamName");
const masterCompanyCode = getQueryString("masterCompanyCode");
const positionX = Number(getQueryString("positionX"));
const positionY = Number(getQueryString("positionY"));
@ -913,7 +943,7 @@ function initApp(param){
const getGuList2Callback = function () {
onSichAllCheck();
const selectedXY = getMiddleXY(document.getElementById("cmb_sido_all").value);
BASE_MAP.zoomToExtent(new OpenLayers.Bounds(selectedXY.minX, selectedXY.minY, selectedXY.maxX, selectedXY.maxY).transform('EPSG:5186', 'EPSG:3857'), true);
//BASE_MAP.zoomToExtent(new OpenLayers.Bounds(selectedXY.minX, selectedXY.minY, selectedXY.maxX, selectedXY.maxY).transform('EPSG:5186', 'EPSG:3857'), true);
}
getGuList2(getGuList2Callback);
} else if( gl === "재난관리책임기관" ) {
@ -923,12 +953,12 @@ function initApp(param){
if( gf === null || gf.trim() === "" ) {
onSichAllCheck();
const selectedXY = getMiddleXY(document.getElementById("cmb_sido_all").value);
BASE_MAP.zoomToExtent(new OpenLayers.Bounds(selectedXY.minX, selectedXY.minY, selectedXY.maxX, selectedXY.maxY).transform('EPSG:5186', 'EPSG:3857'), true);
//BASE_MAP.zoomToExtent(new OpenLayers.Bounds(selectedXY.minX, selectedXY.minY, selectedXY.maxX, selectedXY.maxY).transform('EPSG:5186', 'EPSG:3857'), true);
} else {
selectOptionByText(gf, document.getElementById("cmb_gungu_all"));
onSichAllCheck();
const selectedXY = getMiddleXY(document.getElementById("cmb_gungu_all").value);
BASE_MAP.zoomToExtent(new OpenLayers.Bounds(selectedXY.minX, selectedXY.minY, selectedXY.maxX, selectedXY.maxY).transform('EPSG:5186', 'EPSG:3857'), true);
//BASE_MAP.zoomToExtent(new OpenLayers.Bounds(selectedXY.minX, selectedXY.minY, selectedXY.maxX, selectedXY.maxY).transform('EPSG:5186', 'EPSG:3857'), true);
}
}
getGuList2(getGuList2Callback);
@ -940,7 +970,7 @@ function initApp(param){
if( gs === null || gs.trim() === "" ) {
onSichAllCheck();
const selectedSidoXY = getMiddleXY(document.getElementById("cmb_sido_all").value);
BASE_MAP.zoomToExtent(new OpenLayers.Bounds(selectedSidoXY.minX, selectedSidoXY.minY, selectedSidoXY.maxX, selectedSidoXY.maxY).transform('EPSG:5186', 'EPSG:3857'), true);
//BASE_MAP.zoomToExtent(new OpenLayers.Bounds(selectedSidoXY.minX, selectedSidoXY.minY, selectedSidoXY.maxX, selectedSidoXY.maxY).transform('EPSG:5186', 'EPSG:3857'), true);
} else {
selectOptionByText(gs, document.getElementById("cmb_gungu_all"));
const getDongList2Callback = function () {
@ -948,12 +978,12 @@ function initApp(param){
onSichAllCheck();
const selectedGunguXY = getMiddleXY(document.getElementById("cmb_gungu_all").value);
var move_bound = new OpenLayers.Bounds(selectedGunguXY.minX, selectedGunguXY.minY, selectedGunguXY.maxX, selectedGunguXY.maxY).transform('EPSG:5186', 'EPSG:3857'); //5174
BASE_MAP.zoomToExtent(move_bound, true);
//BASE_MAP.zoomToExtent(move_bound, true);
} else {
selectOptionByText(gf, document.getElementById("cmb_dong_all"));
onSichAllCheck();
const selectedDongXY = getMiddleXY(document.getElementById("cmb_dong_all").value);
BASE_MAP.zoomToExtent(new OpenLayers.Bounds(selectedDongXY.minX, selectedDongXY.minY, selectedDongXY.maxX, selectedDongXY.maxY).transform('EPSG:5186', 'EPSG:3857'), true);
//BASE_MAP.zoomToExtent(new OpenLayers.Bounds(selectedDongXY.minX, selectedDongXY.minY, selectedDongXY.maxX, selectedDongXY.maxY).transform('EPSG:5186', 'EPSG:3857'), true);
}
}
getDongList2(getDongList2Callback);
@ -963,6 +993,10 @@ function initApp(param){
getGuList2(getGuList2Callback);
}
if( masterCompanyCode ) {
addDrillingHoles(masterCompanyCode);
}
} else {
@ -1565,6 +1599,49 @@ function addProjectHoles(projectCode) {
});
}
function addDrillingHoles(companyCode) {
HOLE_DRILLING.removeAllFeatures();
HOLE_SELECT.removeAllFeatures();
HOLE_SELECT2.removeAllFeatures();
var bbox = {
minx: Infinity,
miny: Infinity,
maxx: -Infinity,
maxy: -Infinity
};
console.log("addProjectHoles projectCode ::: " + companyCode);
$.get("/drilling/map/searchHole.do", { projectCode : companyCode }).done(function(response) {
if(response && response.data) {
var format = new OpenLayers.Format.WKT();
var features = [];
for(var i=0, len=response.data.length; i < len; i++) {
var row = response.data[i];
var feature = format.read(row.wkt);
feature.attributes.CODE = row.code;
//feature.geometry.x의 최솟값 구한다.
bbox.minx = Math.min(bbox.minx, feature.geometry.x);
//feature.geometry.x의 최댓값 구한다.
bbox.maxx = Math.max(bbox.maxx, feature.geometry.x);
//feature.geometry.y의 최솟값 구한다.
bbox.miny = Math.min(bbox.miny, feature.geometry.y);
//feature.geometry.y의 최댓값 구한다.
bbox.maxy = Math.max(bbox.maxy, feature.geometry.y);
feature.geometry.transform('EPSG:5186', 'EPSG:3857');
features.push(feature);
}
if(features.length > 0) {
moveToExtent(bbox.minx, bbox.miny, bbox.maxx, bbox.maxy);
HOLE_DRILLING.addFeatures(features);
}
}
});
}
function getStyleSELECT(){

View File

@ -12,7 +12,7 @@
// 한글인코딩
request.setCharacterEncoding("UTF-8");
final String O2MAP_WMS_URL = EgovProperties.getProperty("O2MAP.wms.url").trim();
final String O2MAP_WMS_URL = EgovProperties.getProperty("O2MAP.wms.url") == null ? null : EgovProperties.getProperty("O2MAP.wms.url").trim();
// post, get에서 쓸 url
String reqUrl = "http://218.232.234.166/o2map/services/wms";