Files
eapim-admin/WebContent/jsp/onl/admin/adapter/adapterChangeMan.jsp
T
Rinjae c54ef1903f init
2025-09-05 17:16:26 +09:00

528 lines
16 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ page import="java.io.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Expires", "0");
%>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<jsp:include page="/jsp/common/include/css.jsp"/>
<jsp:include page="/jsp/common/include/script.jsp"/>
<script language="javascript" >
var url ='<c:url value="/onl/admin/adapter/adapterChangeMan.json" />';
var url_view ='<c:url value="/onl/admin/adapter/adapterChangeMan.view" />';
var modify_rowID = 1;
function beforeModify(dev, test) {
var dev_flag = dev =="ON"?"1":"0";
var test_flag = test=="ON"?"1":"0";
return "D"+dev_flag+"T"+test_flag;
}
function list(_page) {
var postData = getSearchForJqgrid("cmd", "LIST"); //jqgrid에서는 object 로
$("#grid").setGridParam({ url:url, postData: postData,datatype:"json"}).trigger("reloadGrid");
}
function dataFormater(cellvalue, options, rowObject) {
if (cellvalue == null || cellvalue==undefined) {
return "";
}
if(cellvalue == '0') {
return $(document.createElement('span')).attr({ style : "color:red" }).text("OFF").prop('outerHTML');
}
if(cellvalue == '1') {
return $(document.createElement('span')).attr({ style : "color:blue" }).text("ON").prop('outerHTML');
}
return "";
}
function startStop(postData,rowId) {
$("#modal-overlay").fadeIn();
$.ajax({
type : "POST",
url : url,
dataType : "json",
data : postData,
success : function(json) {
$("#modal-overlay").fadeOut();
alert(json.message);
list("1");
reloadDetailGrid(rowId);
// 수정된 row 위치 저장.
modify_rowID = rowId;
},
error : function(e) {
$("#modal-overlay").fadeOut();
alert(e.responseText);
}
});
}
//어댑터 상세그리드 함수.
function searchAadaptDetail(adptGroup , eaisevrdstcd) {
var postData = getSearchForJqgrid("cmd","LIST_SELECT_ADAPTER");
postData["searchAdapterGroup"] = adptGroup;
postData["eaisevrdstcd"] = eaisevrdstcd;
$("#gridDetail").setGridParam({ url:url, postData: postData }).trigger("reloadGrid");
}
//어댑터 전환이력 가져오기
function searchUserInfo(adptGroup) {
var postData = getSearchForJqgrid("cmd","LIST_USER_INFO");
postData["adptrbzwkgroupname"] =adptGroup;
$("#gridDetail2").setGridParam({ url:url, postData: postData }).trigger("reloadGrid");
}
function unformatterFunction(cellvalue, options, rowObject) {
return "";
}
function fontFormatterFunction(cellvalue, options, rowObject) {
var rowId = options["rowId"];
if (cellvalue == "true") {
return "<font color='#0000FF'>" + cellvalue + "</font>";
} else if (cellvalue == "false") {
return "<font color='#FF0000'>" + cellvalue + "</font>";
}
}
function allOffBtnFormatterFunction(cellvalue, options, rowObject) {
var rowId = options["rowId"];
return "<img name='img_"+rowId+"' src=<c:url value='/images/bt/pop_operate.gif' /> />";
}
function dateFormater(cellvalue, options, rowObject){ //20190513134307
if (cellvalue==null|| cellvalue==undefined) return "";
if (cellvalue.trim().length !=14) return "";
var display = "";
display=display+cellvalue.substr(0,4)+"년 ";
display=display+cellvalue.substr(4,2)+"월 ";
display=display+cellvalue.substr(6,2)+"일 ";
display=display+cellvalue.substr(8,2)+":";
display=display+cellvalue.substr(10,2)+":";
display=display+cellvalue.substr(12,2);
return display;
}
function reloadDetailGrid(rowId){
$('#gridDetail').jqGrid('clearGridData');
$('#gridDetail2').jqGrid('clearGridData');
var adptGroup = $("#grid").jqGrid("getCell", rowId, "ADPTRBZWKGROUPNAME");
var eaisevrdstcd = $("#grid").jqGrid("getCell", rowId, "EAISEVRDSTCD");
searchAadaptDetail(adptGroup , eaisevrdstcd);
searchUserInfo(adptGroup);
}
$(document).ready(function() {
var gridPostData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
$('#grid').jqGrid({
datatype:"json",
mtype: 'POST',
postData : gridPostData,
url : url,
colNames:['어댑터 그룹명',
'어댑터 설명',
'어댑터 별명',
'DEV',
'TEST',
'모두끄기',
'서버구분코드',
'업무구분코드',
'사용자업무코드권한',
'담당자명',
'연락처'
],
colModel:[
{ name : 'ADPTRBZWKGROUPNAME' , align:'left' ,width:100},
{ name : 'ADPTRBZWKGROUPDESC' , align:'left' ,width:100 },
{ name : 'ADPTRNICKNAME' , align:'left' ,width:60 },
{ name : 'ADPTRUSEYN' , align:'center' ,width:30, formatter: dataFormater },
{ name : 'ADPTRUSEYN2' , align:'center' ,width:30, formatter: dataFormater },
{ name : 'OFFALL' , align:'center' ,width:30, formatter: allOffBtnFormatterFunction},
{ name : 'EAISEVRDSTCD' , hidden:true},
{ name : 'EAIBZWKDSTCD' , hidden:true},
{ name : 'AUTHCHK' , hidden:true},
{ name : 'OSIDINSTIBZWKRSEMPNAME',align:'center' ,width:70, sortable : false},
{ name : 'OSIDINSTITELNO' , align:'center' ,width:70, sortable : false}
],
jsonReader: {
repeatitems:false
},
autoheight: true,
//height: $("#container").height(),
height: "280",
autowidth: true,
viewrecords: true,
rowNum : 5000,
loadonce:true,
gridComplete:function (d){
//GroupHeader 셋팅후 colModel 변경
/* $("#grid").jqGrid('destroyGroupHeader');
var colModel = $(this).getGridParam("colModel");
$(this).jqGrid('setLabel',colModel[2].name, adptInstNm[0]);
$(this).jqGrid('setLabel',colModel[3].name, adptInstNm[1]);
$(this).jqGrid('setLabel',colModel[4].name, adptInstNm[2]);
$(this).jqGrid('setLabel',colModel[5].name, adptInstNm[3]);
$("#grid").jqGrid('setGroupHeaders', {
useColSpanStyle: true,
groupHeaders:[
{startColumnName: 'ADPTRUSEYN1', numberOfColumns: 2, titleText: 'TOBE'},
{startColumnName: 'ADPTRUSEYN3', numberOfColumns: 2, titleText: 'ASIS'},
{startColumnName: 'OSIDINSTIBZWKRSEMPNAME', numberOfColumns: 2, titleText: '대외기관'}
]
}); */
},
loadComplete:function (d){
$("#modal-overlay").fadeOut();
if(d.errMsg) {
alert(d.errMsg);
}
var rowCnt = $("#grid").getGridParam("reccount");
if(rowCnt > 0)
{
$("#grid").jqGrid("setSelection",modify_rowID, true);
// 초기화
modify_rowID = 1;
}
},
loadError: function (jqXHR, textStatus, errorThrown) {
alert(textStatus);
console.error(errorThrown);
if(jqXHR.status == 401) {
alert('HTTP status code: ' + jqXHR.status + '\n' +
'에러: 세션이 종료되었습니다. ');
parent.location.href='<%=request.getContextPath()%>/';
}
},
ondblClickRow: function(rowId) {
},
onCellSelect: function(rowId, index, contents, event) {
var data = $(this).getRowData(rowId);
var cellValue = $(this).getCell(rowId,index);
//on 클릭시 기동하고자하는 어댑터 선택하라는 메시지 나옴
//off 클릭시 전부 off 시킨후에 선택어댑터 on 시킴
var modfibfeaisevrname = "";
var modfibfeaiInstname = "";
var hist_adapterInst = ""; //최종 변경 INST
var hist_user = ""; //최종 변경 이사용자
var hist_user_telNo = ""; //전화번호
var eaibzwkdstcd = $("#grid").jqGrid("getCell", rowId, "EAIBZWKDSTCD");
var isUserBiz = $("#grid").jqGrid("getCell", rowId, "AUTHCHK");
if(index == 3 || index == 4) { //어댑터 ON/OFF
adapter_on_off(rowId, index, data, cellValue);
} else if(index == 5) {
all_adapter_off(rowId, data, cellValue);
} else {
reloadDetailGrid(rowId);
}
}
});
$("#grid").jqGrid('setGroupHeaders', {
useColSpanStyle: true,
groupHeaders:[
{startColumnName: 'ADPTRUSEYN', numberOfColumns: 3, titleText: '우체국'},
{startColumnName: 'OSIDINSTIBZWKRSEMPNAME', numberOfColumns: 2, titleText: '대외기관'}
]
});
$("#btn_search").click(function(){
$('#gridDetail').jqGrid('clearGridData');
$('#gridDetail2').jqGrid('clearGridData');
list("1");
});
$("input[name^=search]").keydown(function(key){
if (key.keyCode == 13){
$("#btn_search").click();
}
});
$('#gridDetail').jqGrid({
datatype:"json",
mtype: 'POST',
colNames:['엔진 서버구분',
'어댑터 그룹명',
'어댑터명',
'상태',
'기동',
'엔진 인스턴스명'
],
colModel : [
{
name : 'EaiServerName',
align : 'center',
width : '40',
sortable : false
},
{
name : 'AdptrBzwkGroupName',
align : 'left',
width : '140',
sortable : false
},
{
name : 'AdptrBzwkName',
align : 'left',
width : '170',
sortable : false
},
{
name : 'Status',
align : 'center',
width : '40',
sortable : false,
unformat : unformatterFunction,
formatter : fontFormatterFunction
},
{
name : 'Starting',
align : 'center',
width : '55',
sortable : false
},
{
name : 'EaiSevrInstncName',
align : 'left',
width : '100',
sortable : false
}
],
jsonReader: {
repeatitems:false
},
loadError: function (jqXHR, textStatus, errorThrown) {
if(jqXHR.status == 401) {
alert('HTTP status code: ' + jqXHR.status + '\n' +
'에러: 세션이 종료되었습니다. ');
parent.location.href='<%=request.getContextPath()%>/';
}
},
autowidth: true,
height: "120",
});
//변경이력관리
$('#gridDetail2').jqGrid({
datatype:"json",
mtype: 'POST',
colNames:['부서명',
'ID',
'변경자',
'연락처',
'휴대폰번호',
'변경일시',
'변경전',
'변경후'
],
colModel:[
{ name : 'TEAMNAME' , align:'center' , sortable : false},
{ name : 'USERID' , align:'center' ,width:100, sortable : false},
{ name : 'USERNAME' , align:'center' ,width:100, sortable : false},
{ name : 'OFCTELNO' , align:'center' ,width:100, sortable : false},
{ name : 'CPHNNO' , align:'center' ,width:100, sortable : false},
{ name : 'LASTAMNDYMS' , align:'center' ,width:100 ,formatter: dateFormater, sortable : false},
{ name : 'MODFIBFEAISEVRNAME' , align:'center' ,width:100, sortable : false, formatter: beforeAfterFormatter},
{ name : 'MODFIAFEAISEVRNAME' , align:'center' ,width:100, sortable : false, formatter: beforeAfterFormatter}
],
jsonReader: {
repeatitems:false
},
autowidth: true,
height: "100",
});
buttonControl();
});
function adapter_on_off(rowId, index, data, cellValue) {
var cellTextValue = $(cellValue).text();
var useYn_1_textValue = $(data.ADPTRUSEYN).text();
var useYn_2_textValue = $(data.ADPTRUSEYN2).text();
if(cellValue == "") {
alert("어댑터 ON/OFF 상태를 알 수 없습니다.");
return;
}
//권한체크
if ("${rmsMenuAuth}" == "R") {
alert("어댑터전환 권한이 없습니다.");
return;
}
if(cellTextValue == "ON") {
alert("기동하고자 하는 어댑터(ON시키고자 하는 어댑터)를 클릭하십시오.");
return;
}
var postData = [];
postData.push({ name: "cmd" , value:"UPDATE_STARTSTOP"});
var request_dev_useYn = "";
var request_test_useYn = "";
if(useYn_1_textValue == "OFF" && useYn_2_textValue == "OFF") {
if(index == 3) {
request_dev_useYn = "1";
request_test_useYn = "0";
} else if (index == 4) {
request_dev_useYn = "0";
request_test_useYn = "1";
}
} else {
request_dev_useYn = useYn_1_textValue == "ON" ? "0" : "1";
request_test_useYn = useYn_2_textValue == "ON" ? "0" : "1";
}
var confirmStr = data.ADPTRBZWKGROUPDESC + "를\n개발 : " + $(dataFormater(request_dev_useYn)).text() + "\n테스트 : " + $(dataFormater(request_test_useYn)).text() + "\n로 변경하시겠습니까?";
if(confirm(confirmStr)){
$.each(data, function(rowId,index) {
if(index == "ON") {
modfibfeaisevrname = adptInstMap.get(rowId);
modfibfeaiInstname = adptInstNmMap.get(rowId);
}
});
postData.push({ name: "ADPTRBZWKGROUPNAME" , value:data.ADPTRBZWKGROUPNAME});
postData.push({ name: "DEVUSEYN", value: request_dev_useYn });
postData.push({ name: "TESTUSEYN", value: request_test_useYn });
// 변경전 어댑터정보
postData.push({ name : "MODFIBFEAISEVRNAME", value : beforeModify(useYn_1_textValue, useYn_2_textValue)});
startStop(postData, rowId);
}
}
function all_adapter_off(rowId, data, cellValue) {
var useYn_1_textValue = $(data.ADPTRUSEYN).text();
var useYn_2_textValue = $(data.ADPTRUSEYN2).text();
if(useYn_1_textValue == "" || useYn_2_textValue == "") {
alert("어댑터 ON/OFF 상태를 알 수 없습니다.");
return;
}
if(confirm("개발, 테스트 어댑터를 모두 끕니다. 진행하시겠습니까?")) {
var postData = [];
postData.push({ name: "cmd" , value : "UPDATE_STARTSTOP" });
postData.push({ name: "ADPTRBZWKGROUPNAME" , value: data.ADPTRBZWKGROUPNAME});
postData.push({ name: "DEVUSEYN" , value: "0" });
postData.push({ name: "TESTUSEYN" , value: "0" });
postData.push({ name: "MODFIBFEAISEVRNAME", value : beforeModify(useYn_1_textValue, useYn_2_textValue)});
startStop(postData, rowId);
}
}
function beforeAfterFormatter(cellvalue, options, rowObject) {
return cellvalue.replace("D", "개발 : ").replace("T", "테스트 : ").replaceAll("1", "ON ").replaceAll("0", "OFF ");
}
</script>
</head>
<body>
<div class="right_box">
<div class="content_top">
<ul class="path">
<li><a href="#">${rmsMenuPath}</a></li>
</ul>
</div><!-- end content_top -->
<div class="content_middle">
<div class="search_wrap">
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
</div>
<div class="title">어댑터 전환 관리</div>
<table class="search_condition" cellspacing=0;>
<tbody>
<tr>
<th style="width:100px;">어댑터 그룹명</th> <!-- 3자리만 입력가능하게 -->
<td style="width:250px;">
<input type="text" name="searchAdptrBzwkGroupName" value="${param.searchAdptrBzwkGroupName}" >
</td>
<th style="width:100px;">어댑터 설명</th>
<td style="width:250px;">
<input type="text" name="searchAdptrBzwkGroupDesc" value="${param.searchAdptrBzwkGroupDesc}">
</td>
</tr>
</tbody>
</table>
<table id="grid" ></table>
<div style="color:blue;text-align:right;height:20px;">- 연결유지형 소켓의 세션이 없는경우 상태가 false 로 보임(상대기관의 서버상태 확인필요)</div>
<table id="gridDetail" ></table>
<div style="height:10px;"></div>
<table id="gridDetail2" ></table>
<div id="pager"></div>
</div><!-- end content_middle -->
</div><!-- end right_box -->
<div id="modal-overlay">wait</div>
</body>
</html>