thkim 2024-08-20 11:57:42 +09:00
parent df93148a51
commit 1047cbe2be
5 changed files with 210 additions and 275 deletions

4
.gitignore vendored
View File

@ -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

View File

@ -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")
public String memberRegi(@RequestParam HashMap<String, Object> params, ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {
if(request.getSession().getAttribute("USERNAME") == null){ @RequestMapping(value = "/drilling/inquiry.do")
return "isError"; public String memberRegi(@RequestParam HashMap<String, Object> params, ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {
}
return "/drilling/inquiry/drilling_inquiry"; if(request.getSession().getAttribute("USERNAME") == null){
} return "isError";
}
@RequestMapping(value = "/drilling/inquiry/list.do", method = RequestMethod.GET)
@ResponseBody return "/drilling/inquiry/drilling_inquiry";
public JSONObject drillingInquiryList ( }
HttpServletRequest request,
@RequestParam HashMap<String, Object> params, @RequestMapping(value = "/drilling/inquiry/list.do", method = RequestMethod.GET, produces = { "application/json; charset=utf-8" })
@ResponseBody
public ResponseEntity<JSONObject> drillingInquiryList (
HttpServletRequest request,
@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" +
request.getRequestURI() + " OUT:" +
"\n--------------------------------------------------------------\n" +
"jSONOResponse.toJSONString():[" + jSONOResponse.toJSONString() + "]\n" +
"\n--------------------------------------------------------------\n");
return jSONOResponse;
} System.out.println("\n--------------------------------------------------------------\n" +
request.getRequestURI() + " OUT:" +
"\n--------------------------------------------------------------\n" +
"jSONOResponse.toJSONString():[" + jSONOResponse.toJSONString() + "]\n" +
"\n--------------------------------------------------------------\n");
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;
}
} }

View File

@ -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;
@ -18,46 +21,67 @@ import org.springframework.stereotype.Service;
@Service("drillingInquiryService") @Service("drillingInquiryService")
public class DrillingInquiryServiceImpl implements DrillingInquiryService { public class DrillingInquiryServiceImpl implements DrillingInquiryService {
@Resource(name="drillingInquiryMapper")
private DrillingInquiryMapper drillingInquiryMapper;
@Resource(name="drillingInquiryMapper")
@Override private DrillingInquiryMapper drillingInquiryMapper;
public JSONObject drillingInquiryList(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
JSONObject jsonResponse = new JSONObject(); @Override
public JSONObject drillingInquiryList(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
try {
JSONObject jsonResponse = new JSONObject();
try { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
List<HashMap<String, Object>> data = drillingInquiryMapper.sPGetTblCsiByKeyword(params); try {
jsonResponse.put("count", count);
jsonResponse.put("data", data); try {
return jsonResponse; Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
} catch (SQLException e) { List<HashMap<String, Object>> datas = drillingInquiryMapper.sPGetTblCsiByKeyword(params);
throw new Exception( e.getMessage() );
String crtDtKey = "crtDt";
for( HashMap<String, Object> data : datas ) {
//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<>();
for (Object key : jsonObject.keySet()) { for (Object key : jsonObject.keySet()) {
@ -65,23 +89,23 @@ public class DrillingInquiryServiceImpl implements DrillingInquiryService {
Object value = jsonObject.get(keyStr); Object value = jsonObject.get(keyStr);
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() );
} }
} }
*/ */
} }

View File

@ -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>

View File

@ -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;
} }
%> %>
@ -36,46 +36,69 @@ 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.getElementById('btn-search').addEventListener('click', function() {
var jsonData = { document.addEventListener('DOMContentLoaded', function() {
"test" : "1234"
}
let xhr;
if(window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
// IE5, IE6 일때
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open('GET', '/drilling/inquiry/list.do', true);
xhr.setRequestHeader('Content-type', 'application/json');
xhr.onreadystatechange = function() { document.getElementById('btn-search').addEventListener('click', function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 요청 성공 시 처리 var jsonData = {
console.log(xhr.responseText); "test" : "1234"
const obj = JSON.parse(xhr.responseText); }
alert(obj.message)
} else if (xhr.readyState === 4) { let xhr;
// 요청 실패 시 처리 if(window.XMLHttpRequest) {
console.error('요청 실패:', xhr.status); xhr = new XMLHttpRequest();
} } else {
}; // IE5, IE6 일때
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open('GET', '/drilling/inquiry/list.do', true);
xhr.setRequestHeader('Content-type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 요청 성공 시 처리
console.log('%o', xhr.responseText);
const obj = JSON.parse(xhr.responseText);
var dataListEle = document.getElementById('data-list');
dataListEle.innerHTML = '';
var content = '';
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();
});
xhr.send(JSON.stringify(jsonData));
});
// 초기 테이블 추가 트리거
document.getElementById('btn-search').click();
});
</script> </script>
<!-- javascript end--> <!-- javascript end-->
@ -88,8 +111,8 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
<div class="treeview-project-name"> <div class="treeview-project-name">
<p class="project-title">건설현장 관리</p> <p class="project-title">건설현장 관리</p>
<p class="project-value"><a href="/drilling/search.do">프로젝트 조회</a></p> <p class="project-value"><a href="/drilling/search.do">프로젝트 조회</a></p>
<p class="project-value value-is-active">건설현장 조회</p> <p class="project-value value-is-active">건설현장 조회</p>
<p class="project-value"><a href="/drilling/input.do">건설현장 입력</a></p> <p class="project-value"><a href="/drilling/input.do">건설현장 입력</a></p>
</div> </div>
</div> </div>
</div> </div>
@ -113,13 +136,13 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
<div class="content1"> <div class="content1">
<div class="page-top-search"> <div class="page-top-search">
<form class="form-inline"> <form class="form-inline">
<label class="input-label-display">검색</label> <label class="input-label-display">검색</label>
<input type="search" id="name-input" name="q" class="input" placeholder="프로젝트명" title="" value=""> <input type="search" id="name-input" name="q" class="input" placeholder="프로젝트명" title="" value="">
<input type="date" data-placeholder="20240321" > <input type="date" data-placeholder="20240321" >
<span>~</span> <span>~</span>
<input type="date"> <input type="date">
</form> </form>
<form class="form-inline-row"> <form class="form-inline-row">
<input type="text" class="input input-1" placeholder="담당부서,건설사명" title="" value=""> <input type="text" class="input input-1" placeholder="담당부서,건설사명" title="" value="">
<input type="text" class="input input-2" placeholder="담당자" title="" value=""> <input type="text" class="input input-2" placeholder="담당자" title="" value="">
<input type="text" class="input input-3" placeholder="담당 연락처" title="" value=""> <input type="text" class="input input-3" placeholder="담당 연락처" title="" value="">
@ -149,7 +172,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
<th rowspan="2">연번</th> <th rowspan="2">연번</th>
<th rowspan="2">사업명</th> <th rowspan="2">사업명</th>
<th rowspan="2">입력상태</th> <th rowspan="2">입력상태</th>
<th colspan="2">사업내용</th> <th colspan="2">사업내용</th>
<th colspan="3">발주기관현황</th> <th colspan="3">발주기관현황</th>
<th colspan="3">건설사현황</th> <th colspan="3">건설사현황</th>
</tr> </tr>
@ -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>