main
parent
df93148a51
commit
1047cbe2be
|
|
@ -1,6 +1,4 @@
|
||||||
/target
|
/target
|
||||||
#/src/main/webapp/**/**.jar
|
|
||||||
#/src/main/webapp/**/**.class
|
|
||||||
|
|
||||||
|
|
||||||
HELP.md
|
HELP.md
|
||||||
|
|
@ -14,7 +12,6 @@ build/
|
||||||
.apt_generated
|
.apt_generated
|
||||||
.classpath
|
.classpath
|
||||||
.factorypath
|
.factorypath
|
||||||
#.project
|
|
||||||
.settings
|
.settings
|
||||||
.springBeans
|
.springBeans
|
||||||
.sts4-cache
|
.sts4-cache
|
||||||
|
|
@ -64,7 +61,6 @@ out/
|
||||||
.mtj.tmp/
|
.mtj.tmp/
|
||||||
|
|
||||||
# Package Files #
|
# Package Files #
|
||||||
#*.jar
|
|
||||||
*.war
|
*.war
|
||||||
*.nar
|
*.nar
|
||||||
*.ear
|
*.ear
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
|
|
@ -29,6 +30,7 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.ui.ModelMap;
|
import org.springframework.ui.ModelMap;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
@ -55,64 +57,83 @@ import ictway.whois.whoisSMS;
|
||||||
@Controller
|
@Controller
|
||||||
public class DrillingInquiryController {
|
public class DrillingInquiryController {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(DrillingInquiryController.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(DrillingInquiryController.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
DrillingInquiryService drillingInquiryService;
|
DrillingInquiryService drillingInquiryService;
|
||||||
|
|
||||||
@RequestMapping(value = "/drilling/inquiry.do")
|
@RequestMapping(value = "/drilling/inquiry.do")
|
||||||
public String memberRegi(@RequestParam HashMap<String, Object> params, ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
public String memberRegi(@RequestParam HashMap<String, Object> params, ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||||
|
|
||||||
if(request.getSession().getAttribute("USERNAME") == null){
|
if(request.getSession().getAttribute("USERNAME") == null){
|
||||||
return "isError";
|
return "isError";
|
||||||
}
|
}
|
||||||
|
|
||||||
return "/drilling/inquiry/drilling_inquiry";
|
return "/drilling/inquiry/drilling_inquiry";
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/drilling/inquiry/list.do", method = RequestMethod.GET)
|
@RequestMapping(value = "/drilling/inquiry/list.do", method = RequestMethod.GET, produces = { "application/json; charset=utf-8" })
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public JSONObject drillingInquiryList (
|
public ResponseEntity<JSONObject> drillingInquiryList (
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
@RequestParam HashMap<String, Object> params,
|
@RequestParam HashMap<String, Object> params,
|
||||||
HttpServletResponse response
|
HttpServletResponse response
|
||||||
) {
|
) {
|
||||||
|
|
||||||
System.out.println(
|
System.out.println(
|
||||||
"\n--------------------------------------------------------------\n" +
|
"\n--------------------------------------------------------------\n" +
|
||||||
request.getRequestURI() + " IN:" +
|
request.getRequestURI() + " IN:" +
|
||||||
"\n--------------------------------------------------------------\n" +
|
"\n--------------------------------------------------------------\n" +
|
||||||
"params" + params.toString() + "\n" +
|
"params" + params.toString() + "\n" +
|
||||||
"\n--------------------------------------------------------------\n"
|
"\n--------------------------------------------------------------\n"
|
||||||
);
|
);
|
||||||
|
|
||||||
JSONObject jSONOResponse = null;
|
JSONObject jSONOResponse = null;
|
||||||
try {
|
try {
|
||||||
jSONOResponse = drillingInquiryService.drillingInquiryList( request, params );
|
jSONOResponse = drillingInquiryService.drillingInquiryList( request, params );
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
jSONOResponse = new JSONObject();
|
jSONOResponse = new JSONObject();
|
||||||
String strTxt =
|
String strTxt =
|
||||||
"---------- BUG REPORTING START ----------" + "\n" +
|
"---------- BUG REPORTING START ----------" + "\n" +
|
||||||
"에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
|
"에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
|
||||||
"params:[\n" + params.toString() + "\n]\n" +
|
"params:[\n" + params.toString() + "\n]\n" +
|
||||||
"e.getMessage():[\n" + e.getMessage() + "\n]\n" + "\n" +
|
"e.getMessage():[\n" + e.getMessage() + "\n]\n" + "\n" +
|
||||||
"new Date().toString():[" + new Date().toString() + "]\n" + "\n" +
|
"new Date().toString():[" + new Date().toString() + "]\n" + "\n" +
|
||||||
"---------- BUG REPORTING END ----------" + "\n" +
|
"---------- BUG REPORTING END ----------" + "\n" +
|
||||||
"";
|
"";
|
||||||
System.out.println(strTxt);
|
System.out.println(strTxt);
|
||||||
jSONOResponse.put("resultCode", -1);
|
jSONOResponse.put("resultCode", -1);
|
||||||
jSONOResponse.put("result", "false");
|
jSONOResponse.put("result", "false");
|
||||||
jSONOResponse.put("message", e.getMessage());
|
jSONOResponse.put("message", e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
System.out.println("\n--------------------------------------------------------------\n" +
|
System.out.println("\n--------------------------------------------------------------\n" +
|
||||||
request.getRequestURI() + " OUT:" +
|
request.getRequestURI() + " OUT:" +
|
||||||
"\n--------------------------------------------------------------\n" +
|
"\n--------------------------------------------------------------\n" +
|
||||||
"jSONOResponse.toJSONString():[" + jSONOResponse.toJSONString() + "]\n" +
|
"jSONOResponse.toJSONString():[" + jSONOResponse.toJSONString() + "]\n" +
|
||||||
"\n--------------------------------------------------------------\n");
|
"\n--------------------------------------------------------------\n");
|
||||||
|
|
||||||
return jSONOResponse;
|
|
||||||
}
|
int contentLength = 0;
|
||||||
|
try {
|
||||||
|
contentLength = jSONOResponse.toJSONString().getBytes("UTF-8").length;
|
||||||
|
} catch (UnsupportedEncodingException e1) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
response.setStatus(HttpServletResponse.SC_OK);
|
||||||
|
response.setCharacterEncoding("UTF-8");
|
||||||
|
response.setHeader("Content-Type", "application/json; charset=utf-8");
|
||||||
|
response.setContentLength(contentLength); // Content-Length 설정
|
||||||
|
try {
|
||||||
|
response.getWriter().print(jSONOResponse);
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,9 @@ import geoinfo.drilling.inquiry.service.DrillingInquiryMapper;
|
||||||
import geoinfo.drilling.inquiry.service.DrillingInquiryService;
|
import geoinfo.drilling.inquiry.service.DrillingInquiryService;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -19,44 +22,65 @@ import org.springframework.stereotype.Service;
|
||||||
public class DrillingInquiryServiceImpl implements DrillingInquiryService {
|
public class DrillingInquiryServiceImpl implements DrillingInquiryService {
|
||||||
|
|
||||||
|
|
||||||
@Resource(name="drillingInquiryMapper")
|
@Resource(name="drillingInquiryMapper")
|
||||||
private DrillingInquiryMapper drillingInquiryMapper;
|
private DrillingInquiryMapper drillingInquiryMapper;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject drillingInquiryList(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
|
public JSONObject drillingInquiryList(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
|
||||||
|
|
||||||
JSONObject jsonResponse = new JSONObject();
|
JSONObject jsonResponse = new JSONObject();
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
|
Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
|
||||||
List<HashMap<String, Object>> data = drillingInquiryMapper.sPGetTblCsiByKeyword(params);
|
List<HashMap<String, Object>> datas = drillingInquiryMapper.sPGetTblCsiByKeyword(params);
|
||||||
jsonResponse.put("count", count);
|
|
||||||
jsonResponse.put("data", data);
|
String crtDtKey = "crtDt";
|
||||||
return jsonResponse;
|
|
||||||
} catch (SQLException e) {
|
for( HashMap<String, Object> data : datas ) {
|
||||||
throw new Exception( e.getMessage() );
|
|
||||||
|
|
||||||
|
//TIMESTAMP oracleTimestamp = (TIMESTAMP)data.get(crtDtKey);
|
||||||
|
//Timestamp javaTimestamp = oracleTimestamp.timestampValue();
|
||||||
|
//String formattedDate = dateFormat.format(javaTimestamp);
|
||||||
|
//data.put(crtDtKey, formattedDate);
|
||||||
|
}
|
||||||
|
jsonResponse.put("count", count);
|
||||||
|
jsonResponse.put("datas", datas);
|
||||||
|
return jsonResponse;
|
||||||
|
} 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) {
|
} catch (org.json.simple.parser.ParseException e) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
throw new Exception( e.getMessage() );
|
throw new Exception( e.getMessage() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* @Override
|
* @Override
|
||||||
public JSONObject drillingInquiryList(HttpServletRequest request, String strJSON) throws Exception {
|
public JSONObject drillingInquiryList(HttpServletRequest request, String strJSON) throws Exception {
|
||||||
|
|
||||||
JSONObject jsonResponse = new JSONObject();
|
JSONObject jsonResponse = new JSONObject();
|
||||||
JSONParser jsonParser = new JSONParser();
|
JSONParser jsonParser = new JSONParser();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
JSONObject jsonObject = (JSONObject)jsonParser.parse(strJSON);
|
JSONObject jsonObject = (JSONObject)jsonParser.parse(strJSON);
|
||||||
|
|
||||||
// JSONObject를 HashMap으로 변환
|
// JSONObject를 HashMap으로 변환
|
||||||
HashMap<String, Object> params = new HashMap<>();
|
HashMap<String, Object> params = new HashMap<>();
|
||||||
|
|
@ -66,22 +90,22 @@ public class DrillingInquiryServiceImpl implements DrillingInquiryService {
|
||||||
params.put(keyStr, value);
|
params.put(keyStr, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
|
Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
|
||||||
List<HashMap<String, Object>> data = drillingInquiryMapper.sPGetTblCsiByKeyword(params);
|
List<HashMap<String, Object>> data = drillingInquiryMapper.sPGetTblCsiByKeyword(params);
|
||||||
jsonResponse.put("count", count);
|
jsonResponse.put("count", count);
|
||||||
jsonResponse.put("data", data);
|
jsonResponse.put("data", data);
|
||||||
return jsonResponse;
|
return jsonResponse;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new Exception( e.getMessage() );
|
throw new Exception( e.getMessage() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} catch (org.json.simple.parser.ParseException e) {
|
} catch (org.json.simple.parser.ParseException e) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
throw new Exception( e.getMessage() );
|
throw new Exception( e.getMessage() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
||||||
<tr>
|
<tr>
|
||||||
<th>사업명</th>
|
<th>사업명</th>
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
<input type="text" value="사업명 20240816 1634 " class="input-box" id="const-name-` + tableId + `" placeholder="사업명">
|
<input type="text" value="사업명 20240820 1154 " class="input-box" id="const-name-` + tableId + `" placeholder="사업명">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ if (request.getSession().getAttribute("USERID") == null) {
|
||||||
%>
|
%>
|
||||||
<script>alert('로그인후 이용하실 수 있습니다.');window.location.href='/index.do';</script>
|
<script>alert('로그인후 이용하실 수 있습니다.');window.location.href='/index.do';</script>
|
||||||
<%
|
<%
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
<%
|
<%
|
||||||
|
|
@ -21,7 +21,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
||||||
%>
|
%>
|
||||||
<script>alert('발주 기관 회원만 이용가능합니다.');window.location.href='/index.do';</script>
|
<script>alert('발주 기관 회원만 이용가능합니다.');window.location.href='/index.do';</script>
|
||||||
<%
|
<%
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
|
|
||||||
|
|
@ -37,44 +37,67 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
||||||
<!-- javascript start-->
|
<!-- javascript start-->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
|
||||||
document.getElementById('btn-search').addEventListener('click', function() {
|
document.getElementById('btn-search').addEventListener('click', function() {
|
||||||
|
|
||||||
var jsonData = {
|
var jsonData = {
|
||||||
"test" : "1234"
|
"test" : "1234"
|
||||||
}
|
}
|
||||||
|
|
||||||
let xhr;
|
let xhr;
|
||||||
if(window.XMLHttpRequest) {
|
if(window.XMLHttpRequest) {
|
||||||
xhr = new XMLHttpRequest();
|
xhr = new XMLHttpRequest();
|
||||||
} else {
|
} else {
|
||||||
// IE5, IE6 일때
|
// IE5, IE6 일때
|
||||||
xhr = new ActiveXObject("Microsoft.XMLHTTP");
|
xhr = new ActiveXObject("Microsoft.XMLHTTP");
|
||||||
}
|
}
|
||||||
|
|
||||||
xhr.open('GET', '/drilling/inquiry/list.do', true);
|
xhr.open('GET', '/drilling/inquiry/list.do', true);
|
||||||
xhr.setRequestHeader('Content-type', 'application/json');
|
xhr.setRequestHeader('Content-type', 'application/json');
|
||||||
|
|
||||||
xhr.onreadystatechange = function() {
|
xhr.onreadystatechange = function() {
|
||||||
if (xhr.readyState === 4 && xhr.status === 200) {
|
if (xhr.readyState === 4 && xhr.status === 200) {
|
||||||
// 요청 성공 시 처리
|
// 요청 성공 시 처리
|
||||||
console.log(xhr.responseText);
|
console.log('%o', xhr.responseText);
|
||||||
const obj = JSON.parse(xhr.responseText);
|
const obj = JSON.parse(xhr.responseText);
|
||||||
alert(obj.message)
|
var dataListEle = document.getElementById('data-list');
|
||||||
} else if (xhr.readyState === 4) {
|
dataListEle.innerHTML = '';
|
||||||
// 요청 실패 시 처리
|
|
||||||
console.error('요청 실패:', xhr.status);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
xhr.send(JSON.stringify(jsonData));
|
|
||||||
});
|
|
||||||
|
|
||||||
// 초기 테이블 추가 트리거
|
var content = '';
|
||||||
document.getElementById('btn-search').click();
|
|
||||||
|
|
||||||
});
|
for( idx in obj.data ) {
|
||||||
|
content +=
|
||||||
|
`
|
||||||
|
<tr>
|
||||||
|
<td>1</td>
|
||||||
|
<td style="text-align: left; text-indent: 10px;">` + obj.data[idx].constName + `</td>
|
||||||
|
<td>` + obj.data[idx].constStateCode + `</td>
|
||||||
|
<td>` + obj.data[idx].constStartDate + ` ~ ` + obj.data[idx].constEndDate + `</td>
|
||||||
|
<td>` + obj.data[idx].constName + `</td>
|
||||||
|
<td>` + obj.data[idx].masterCompanyDept + `</td>
|
||||||
|
<td>` + obj.data[idx].masterCompanyAdmin + `</td>
|
||||||
|
<td>` + obj.data[idx].masterCompanyTel + `</td>
|
||||||
|
<td>` + obj.data[idx].coinstCompanyDept + `</td>
|
||||||
|
<td>` + obj.data[idx].constCompanyAdmin + `</td>
|
||||||
|
<td>` + obj.data[idx].constCompanyTel + `</td>
|
||||||
|
</tr>
|
||||||
|
`;
|
||||||
|
dataListEle.innerHTML = tt;
|
||||||
|
} else if (xhr.readyState === 4) {
|
||||||
|
// 요청 실패 시 처리
|
||||||
|
console.error('요청 실패:', xhr.status);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
xhr.send(JSON.stringify(jsonData));
|
||||||
|
});
|
||||||
|
|
||||||
|
// 초기 테이블 추가 트리거
|
||||||
|
document.getElementById('btn-search').click();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<!-- javascript end-->
|
<!-- javascript end-->
|
||||||
|
|
@ -164,137 +187,8 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
||||||
<th>담당연락처</th>
|
<th>담당연락처</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody id="data-list">
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
|
||||||
<td>미입력</td>
|
|
||||||
<td>2020.01~2027.12</td>
|
|
||||||
<td>유지관리 단계</td>
|
|
||||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
<td>계롱건설산업(주)</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
|
||||||
<td>미입력</td>
|
|
||||||
<td>2020.01~2027.12</td>
|
|
||||||
<td>유지관리 단계</td>
|
|
||||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
<td>계롱건설산업(주)</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
|
||||||
<td>미입력</td>
|
|
||||||
<td>2020.01~2027.12</td>
|
|
||||||
<td>유지관리 단계</td>
|
|
||||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
<td>계롱건설산업(주)</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
|
||||||
<td>미입력</td>
|
|
||||||
<td>2020.01~2027.12</td>
|
|
||||||
<td>유지관리 단계</td>
|
|
||||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
<td>계롱건설산업(주)</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
|
||||||
<td>미입력</td>
|
|
||||||
<td>2020.01~2027.12</td>
|
|
||||||
<td>유지관리 단계</td>
|
|
||||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
<td>계롱건설산업(주)</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
|
||||||
<td>미입력</td>
|
|
||||||
<td>2020.01~2027.12</td>
|
|
||||||
<td>유지관리 단계</td>
|
|
||||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
<td>계롱건설산업(주)</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
|
||||||
<td>미입력</td>
|
|
||||||
<td>2020.01~2027.12</td>
|
|
||||||
<td>유지관리 단계</td>
|
|
||||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
<td>계롱건설산업(주)</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
|
||||||
<td>미입력</td>
|
|
||||||
<td>2020.01~2027.12</td>
|
|
||||||
<td>유지관리 단계</td>
|
|
||||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
<td>계롱건설산업(주)</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
|
||||||
<td>미입력</td>
|
|
||||||
<td>2020.01~2027.12</td>
|
|
||||||
<td>유지관리 단계</td>
|
|
||||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
<td>계롱건설산업(주)</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
|
||||||
<td>미입력</td>
|
|
||||||
<td>2020.01~2027.12</td>
|
|
||||||
<td>유지관리 단계</td>
|
|
||||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
<td>계롱건설산업(주)</td>
|
|
||||||
<td>남궁길동</td>
|
|
||||||
<td>070-123-4567</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue