Merge branch 'jenkins_with_weblogic' into devs/gw-metrics

This commit is contained in:
Rinjae
2025-12-05 14:26:36 +09:00
15 changed files with 275 additions and 39 deletions
@@ -50,6 +50,8 @@
<!-- 8. 서브표준 메시지 관리 -->
<!-- 9. 비동기 큐 관리 -->
<!--10. 비동기 큐 모니터링 관리 -->
<sqlMap
resource="com/eactive/eai/rms/onl/admin/jms/JmsQueueMonitor.xml" />
<!--11. 비동기 큐 수신자 관리 -->
<!--12. 업무별 계정계 인스턴스코드 -->
<!--13. 내부표준 Default값 관리 -->
+2 -1
View File
@@ -8,7 +8,8 @@
<session-descriptor>
<timeout-secs>1800</timeout-secs>
<cookie-name>JSESSIONID_EMS</cookie-name>
<persistent-store-type>replicated_if_clustered</persistent-store-type>
<persistent-store-type>memory</persistent-store-type>
<!-- <persistent-store-type>replicated_if_clustered</persistent-store-type> -->
</session-descriptor>
<container-descriptor>
@@ -84,7 +84,7 @@ function init(url,key){
success:function(json){
new makeOptions("CODE","NAME").setObj($("select[name=bjobBzwkDstcd]")).setData(json.bjobBzwkDstcd).rendering();
new makeOptions("CODE","NAME").setObj($("select[name=sysCd]")).setNoValueInclude(true).setNoValue(' ','없음').setData(json.sysCd).rendering();
new makeOptions("CODE","NAME").setObj($("select[name=sysCd2]")).setNoValueInclude(true).setNoValue('','없음').setData(json.sysCd).rendering();
//new makeOptions("CODE","NAME").setObj($("select[name=sysCd2]")).setNoValueInclude(true).setNoValue('','없음').setData(json.sysCd).rendering();
new makeOptions("CODE","NAME").setObj($("select[name=uapplCd]")).setNoValueInclude(true).setNoValue(' ','없음').setData(json.uapplCd).rendering();
//new makeOptions("CODE","NAME").setObj($("select[name=bizlevel1]")).setNoValueInclude(true).setNoValue(' ','없음').setData(json.bizlevel1).rendering();
//new makeOptions("CODE","NAME").setObj($("select[name=bizlevel2]")).setNoValueInclude(true).setNoValue(' ','없음').setData(json.bizlevel2).rendering();
@@ -318,15 +318,15 @@ $(document).ready(function() {
<th>작업처리 우선순위</th><td><input type="text" name="msgPrcssPrity" /> </td>
</tr>
<tr>
<th>연계시스템 CODE(송신)</th>
<th>연계시스템 CODE(내부)</th>
<td><div class="select-style"><select name="sysCd"></select></div>
</td>
</tr>
<tr>
<!-- <tr>
<th>연계시스템 CODE(수신)</th>
<td><div class="select-style"><select name="sysCd2"></select></div>
</td>
</tr>
</tr> -->
<tr>
<th>APPLICATION CODE</th>
<td>
@@ -528,11 +528,11 @@
</div>
</td>
</tr>
<tr>
<tr style="display: none;">
<th>토큰 발급 제한건수(24시간)</th>
<td>
<div class="select-style">
<input type="text" name="dailyTokenLimit"></input>
<input type="text" name="dailyTokenLimit" value=0></input>
</div>
</td>
</tr>
@@ -85,8 +85,8 @@
url: url,
postData: gridPostData,
colNames: ['업무구분',
'API (*)',
'API 명',
'API ID(*)',
'API 명',
'요청',
'응답',
'작성자',
@@ -387,11 +387,11 @@
<td>
<select name="searchEaiBzwkDstcd" value="${param.searchEaiBzwkDstcd}"></select>
</td>
<th style="width:180px;">API </th>
<th style="width:180px;">API ID</th>
<td>
<input type="text" name="searchEaiSvcName" value="${param.searchEaiSvcName}">
</td>
<th style="width:180px;">API명</th>
<th style="width:180px;">API 명</th>
<td>
<input type="text" name="searchEaiSvcDesc" value="${param.searchEaiSvcDesc}">
</td>
@@ -61,7 +61,13 @@
.input-group {
position: relative;
}
/* 어댑터, 메서드 라이브 서치 사용시 width 깨짐 방지 */
.select2-container {
width: 100% !important;
box-sizing: border-box;
}
</style>
<script language="javascript" >
var isDetail = false;
@@ -172,6 +178,25 @@
}
$('#eaiBzwkDstcd').select2();
$('#fromAdapter').select2();
$('#toAdapter').select2();
$('#fromResponseAdapter').select2();
$('#toResponseAdapter').select2();
$('#inboundHttpMethod').select2();
$('#outboundHttpMethod').select2();
$('#newBizCode').select2({
dropdownParent: $('#cloneInterfaceModal'),
width: '100%'
});
$('#newInboundHttpMethod').select2({
dropdownParent: $('#cloneInterfaceModal'),
width: '100%'
});
fromAdapterMessageKeyMap = json.fromAdapterMessageKeyMap;
stdCommonFieldDefinitions = json.stdCommonFieldDefinitions;
initStdCommonFieldDefinitions(stdCommonFieldDefinitions);
@@ -1344,7 +1369,6 @@
<button type="button" class="cssbtn" id="btn_modify" level="R" status="DETAIL,NEW"><i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %></button>
<button type="button" class="cssbtn" id="btn_api_spec" level="R" status="DETAIL,NEW"><i class="material-icons">description</i> API 스펙</button>
<button type="button" class="cssbtn" id="btn_previous" level="R" status="DETAIL,NEW"><i class="material-icons">arrow_back</i> <%= localeMessage.getString("button.previous") %></button>
<%-- <button type="button" class="cssbtn" id="btn_excel_export" level="R" status="DETAIL"><i class="material-icons">table_view</i> <%= localeMessage.getString("button.excel") %></button> --%>
</div>
<div class="title" id="title" style="font-size:1.4em">${rmsMenuName}</div>
<form id="ajaxForm"
@@ -1363,7 +1387,7 @@
<div class="form-group col-md-3">
<label for="eaiSvcName">
<span class="material-icons-outlined">badge</span> API
<span class="material-icons-outlined">badge</span> API ID
</label>
<div class="input-group">
<input type="text"
@@ -1389,7 +1413,7 @@
</div>
<div class="form-group col-md-5">
<label for="eaiSvcDesc"><span class="material-icons-outlined">chat</span> 명</label>
<label for="eaiSvcDesc"><span class="material-icons-outlined">chat</span> API 명</label>
<input type="text" class="form-control" id="eaiSvcDesc" name="eaiSvcDesc" required></input>
</div>
<div class="form-group col-md-1">
@@ -1965,7 +1989,7 @@
</select>
</div>
<div class="form-group col-md-8">
<label for="newSvcName"><span class="material-icons-outlined">badge</span> API </label>
<label for="newSvcName"><span class="material-icons-outlined">badge</span> API ID</label>
<div class="input-group">
<input type="text" class="form-control" id="newSvcName" name="newSvcName" required>
<span class="input-group-text" style="padding: 0; border: none;">
@@ -1984,8 +2008,8 @@
<div class="form-group col-md-4">
<label for="newInboundHttpMethod"><span class="material-icons">http</span> <%= localeMessage.getString("apiInterface.recvMethod") %></label>
<select id="newInboundHttpMethod" class="form-select" name="newInboundHttpMethod"></input>
<option value="get">GET</option>
<option value="post">POST</option>
<option value="get">GET</option>
<option value="put">PUT</option>
<option value="patch">PATCH</option>
<option value="delete">DELETE</option>
@@ -204,7 +204,7 @@
error: function (e) {
alert(e.responseText);
},
complate: function() {
complete: function() {
$("[id^='btn_']").prop("disabled", false);
$("#btn_save").text("수정");
}
@@ -277,7 +277,7 @@
error: function(e) {
alert(e.responseText);
},
complate: function() {
complete: function() {
$("[id^='btn_']").prop("disabled", false);
$("#btn_delete").text("삭제");
}
@@ -309,7 +309,7 @@
error: function(e) {
alert("API 스펙 생성 중 오류가 발생했습니다: " + e.responseText);
},
complate: function() {
complete: function() {
$("[id^='btn_']").prop("disabled", false);
$("#btn_generate_spec").text("SPEC 자동 생성");
}
@@ -146,12 +146,12 @@
defaultEditGrid($('#'+gridName), columns, '', 'level', layoutData, 93, ['value']);
}
function selectHttpLog(url, dayOfWeekNumber, guid, serviceProcessNumber){
function selectHttpLog(url, prcsDate, guid, serviceProcessNumber){
$.ajax({
type : "GET",
url:url,
dataType:"json",
data:{cmd: 'DETAIL_HTTP_LOG', dayOfWeekNumber, guid, serviceProcessNumber },
data:{cmd: 'DETAIL_HTTP_LOG', prcsDate, guid, serviceProcessNumber },
success:function(res){
$('#labelHttpMethod').text(res.httpMethod);
$('#labelUrl').text(res.url);
@@ -192,6 +192,7 @@
success:function(json){
var data = json;
const logDayOfWeek = extractDayOfWeek(json.MSGDPSTYMS);
const prcsDate = json.MSGDPSTYMS.substring(0, 8);
const isInboundPart = json.LOGPRCSSSERNO === '100' || json.LOGPRCSSSERNO === '400';
const isOutboundPart = json.LOGPRCSSSERNO === '200' || json.LOGPRCSSSERNO === '300';
const isInboundWithoutNet = !json.GSTATSYSADPTRBZWKGROUPNAME.includes('NET');
@@ -199,7 +200,7 @@
fullMessageData = json.FULLMESSAGEDATA;
if((isInboundPart && isInboundWithoutNet) || (isOutboundPart && isOutboundWithoutNet)){
selectHttpLog(url, logDayOfWeek, json.EAISVCSERNO.trim(), logPrcssSerno);
selectHttpLog(url, prcsDate, json.EAISVCSERNO.trim(), logPrcssSerno);
}else{
$("#tab4Button").hide();
}
+14
View File
@@ -6,6 +6,7 @@ plugins {
id 'war'
id 'com.diffplug.eclipse.apt' version '3.41.1'
id 'project-report'
id 'checkstyle'
}
group 'com.eactive'
@@ -35,6 +36,10 @@ java {
languageVersion = JavaLanguageVersion.of(8)
}
}
checkstyle {
toolVersion = '8.45.1'
}
sourceSets {
main {
@@ -59,6 +64,7 @@ war {
if (profile == "weblogic") {
webXml = file("WebContent/WEB-INF/weblogic-web.xml")
exclude 'WEB-INF/web.xml'
}
@@ -261,4 +267,12 @@ eclipse {
buildCommand 'org.eclipse.buildship.core.gradleprojectbuilder'
}
}
}
tasks.withType(Checkstyle) {
reports {
xml.required = false
html.required = true
}
}
+17
View File
@@ -0,0 +1,17 @@
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="TreeWalker">
<!-- System.out.print / println 금지 -->
<module name="Regexp">
<property name="format" value="System\.out\.print" />
<property name="message" value="Do not use System.out.print / println" />
<property name="ignoreComments" value="true"/>
<property name="illegalPattern" value="true"/>
</module>
</module>
</module>
@@ -43,8 +43,8 @@ public class UmsDispatchService {
private EntityManager entityManager;
private final MessageRequestRepository messageRequestRepository;
private final KjbUmsService kjbUmsService;
private final KjbEmailSendModule kjbEmailSendModule;
private KjbUmsService kjbUmsService;
private KjbEmailSendModule kjbEmailSendModule;
private final KjbPropertyInjector kjbPropertyInjector;
@@ -83,9 +83,13 @@ public class UmsDispatchService {
// prop.setUmsApiKey(monitoringPropertyService.getPrpty2ValById(PROP_GORUP_ID, "kjb.ums.api_key"));
prop = kjbPropertyInjector.inject(prop);
this.kjbUmsService = new KjbUmsService(prop);
try {
this.kjbUmsService = new KjbUmsService(prop);
this.kjbEmailSendModule = KjbEmailSendModule.getInstance(prop, messageRequestRepository);
this.kjbEmailSendModule = KjbEmailSendModule.getInstance(prop, messageRequestRepository);
} catch (Exception e) {
log.error("Failed to initialize KjbUmsService or KjbEmailSendModule: {}", e.getMessage(), e);
}
}
@SuppressWarnings("unchecked")
@@ -420,6 +420,9 @@ public class ApiInterfaceService extends OnlBaseService {
case "NET":
outbndRoutName = "SOCKETOUT";
break;
case "APP":
outbndRoutName = "APPOUT";
break;
default:
outbndRoutName = "RESTOUT";
break;
@@ -591,6 +594,7 @@ public class ApiInterfaceService extends OnlBaseService {
// 25.11.25 HS04 APIFULLPATH 추가.
List<AdapterUI> adapters = adapterGroup.getAdapters();
String inboundHttpMethod = vo.getInboundHttpMethod().toUpperCase();
for (AdapterUI adapter : adapters) {
@@ -603,7 +607,7 @@ public class ApiInterfaceService extends OnlBaseService {
for (AdapterPropUI prop : props) {
if("API_PATH".equals(prop.getPrptyname())) {
String fullPath = prop.getPrpty2val() + "/" + vo.getInboundRestPath();
String fullPath = inboundHttpMethod + "|" + prop.getPrpty2val() + "/" + vo.getInboundRestPath();
vo.setApiFullPath(fullPath);
break;
@@ -454,11 +454,11 @@ public class DbTrackingController {
@RequestMapping(value = "/onl/transaction/tracking/trackingMan.json", params = "cmd=DETAIL_HTTP_LOG")
public ResponseEntity<HttpAdapterExtraLogVo> selectHttpAdapterExtraLog(
@RequestParam int dayOfWeekNumber,
@RequestParam String prcsDate,
@RequestParam String guid,
@RequestParam int serviceProcessNumber) {
return ResponseEntity.ok(service.selectHttpAdapterExtraLog(
dayOfWeekNumber, guid, serviceProcessNumber));
prcsDate, guid, serviceProcessNumber));
}
@RequestMapping(value = "/onl/transaction/tracking/trackingMan.json", params = "cmd=DETAIL_8583")
@@ -439,18 +439,23 @@ public class DbTrackingService extends BaseService {
return map;
}
public HttpAdapterExtraLogVo selectHttpAdapterExtraLog(int dayOfWeekNumber,
public HttpAdapterExtraLogVo selectHttpAdapterExtraLog(String prcsDate,
String guid, int serviceProcessNumber) {
Optional<HttpAdapterExtraLog> optional = httpAdapterExtraLogService
.findById(new HttpAdapterExtraLogId(
dayOfWeekNumber, guid,
serviceProcessNumber));
HttpAdapterExtraLogId httpAdapterExtraLogId = new HttpAdapterExtraLogId();
httpAdapterExtraLogId.setPrcsDate(prcsDate);
httpAdapterExtraLogId.setGuid(guid);
httpAdapterExtraLogId.setServiceProcessNumber(serviceProcessNumber);
if (optional.isPresent()) {
return httpAdapterExtraLogMapper.toVo(optional.get());
}
HttpAdapterExtraLog httpAdapterExtraLog = httpAdapterExtraLogService.getById(httpAdapterExtraLogId);
// Optional<HttpAdapterExtraLog> optional = httpAdapterExtraLogService
// .findById(new HttpAdapterExtraLogId(
// prcsDate, guid, serviceProcessNumber));
//
// if (optional.isPresent()) {
// return httpAdapterExtraLogMapper.toVo(optional.get());
// }
return null;
return httpAdapterExtraLogMapper.toVo(httpAdapterExtraLog);
}
public String resultByMessage(EAILogDetailSearch paramVo,
@@ -0,0 +1,164 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="JmsQueueMonitor">
<!-- #### JMS Queue Monitor ### -->
<!-- 목록 조회 -->
<statement id="selectListCount" parameterClass="java.util.HashMap" resultClass="java.lang.Integer">
SELECT
COUNT(*)
FROM $schemaId$.TSEAIQM01 Q1, $schemaId$.TSEAICM01 C1
WHERE Q1.EAIBZWKDSTCD = C1.EAIBZWKDSTCD
AND Q1.QUEUSEYN = '1'
<isNotEmpty prepend="AND" property="searchEaiBzwkdstcd">
Q1.EAIBZWKDSTCD LIKE '%' || #searchEaiBzwkdstcd# || '%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchEaiQueBzwkCtnt">
Q1.EAIQUEBZWKCTNT LIKE '%' || #searchEaiQueBzwkCtnt# ||'%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchInst">
Q1.EAISEVRINSTNCNAME LIKE '%'|| #searchInst#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchQueName">
Q1.NONSYNCZTRANQUENAME LIKE '%' || #searchQueName# || '%'
</isNotEmpty>
</statement>
<statement id="selectList" parameterClass="java.util.HashMap" resultClass="java.util.HashMap">
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY Q1.EAIBZWKDSTCD, Q1.EAISEVRINSTNCNAME) AS "ROWNO",
Q1.EAIBZWKDSTCD "EAIBZWKDSTCD",
C1.BZWKDSTICNAME "BZWKDSTICNAME",
Q1.EAIQUEBZWKDTALSCTNT "EAIQUEBZWKCTNT",
Q1.EAISEVRINSTNCNAME "EAISEVRINSTNCNAME",
Q1.QUEUSAGDSTCD "QUEUSAGDSTCD",
Q1.NONSYNCZTRANQUENAME "NONSYNCZTRANQUENAME",
CASE WHEN QUEUSAGDSTCD = '1'
THEN 0
END AS "SENDQUEUECOUNT",
CASE WHEN QUEUSAGDSTCD = '2'
THEN 0
END AS "RECEIVEQUEUECOUNT",
CASE WHEN QUEUSAGDSTCD = '3'
THEN 0
END AS "SENDERRORQUEUECOUNT",
CASE WHEN QUEUSAGDSTCD = '4'
THEN 0
END AS "RECEIVEERRORCOUNT"
FROM $schemaId$.TSEAIQM01 Q1, $schemaId$.TSEAICM01 C1
WHERE Q1.EAIBZWKDSTCD = C1.EAIBZWKDSTCD
AND Q1.QUEUSEYN = '1'
<isNotEmpty prepend="AND" property="searchEaiBzwkdstcd">
Q1.EAIBZWKDSTCD LIKE '%' || #searchEaiBzwkdstcd# || '%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchEaiQueBzwkCtnt">
Q1.EAIQUEBZWKCTNT LIKE '%' || #searchEaiQueBzwkCtnt# ||'%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchInst">
Q1.EAISEVRINSTNCNAME LIKE '%'|| #searchInst#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchQueName">
Q1.NONSYNCZTRANQUENAME LIKE '%' || #searchQueName# || '%'
</isNotEmpty>
ORDER BY Q1.EAIBZWKDSTCD, Q1.EAIQUEBZWKCTNT, Q1.EAISEVRINSTNCNAME
) TMP WHERE "ROWNO" BETWEEN #startNum# AND #endNum#
</statement>
<statement id="selectListToExcel" parameterClass="java.util.HashMap" resultClass="java.util.HashMap">
SELECT $headersStr$ FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY Q1.EAIBZWKDSTCD, Q1.EAISEVRINSTNCNAME) AS "ROWNO",
Q1.EAIBZWKDSTCD "EAIBZWKDSTCD",
C1.BZWKDSTICNAME "BZWKDSTICNAME",
Q1.EAIQUEBZWKCTNT "EAIQUEBZWKCTNT",
Q1.EAISEVRINSTNCNAME "EAISEVRINSTNCNAME",
Q1.QUEUSAGDSTCD "QUEUSAGDSTCD",
Q1.NONSYNCZTRANQUENAME "NONSYNCZTRANQUENAME",
CAST (CASE WHEN QUEUSAGDSTCD = '1'
THEN 0
END AS VARCHAR )AS "SENDQUEUECOUNT",
CAST (CASE WHEN QUEUSAGDSTCD = '2'
THEN 0
END AS VARCHAR )AS "RECEIVEQUEUECOUNT",
CAST (CASE WHEN QUEUSAGDSTCD = '3'
THEN 0
END AS VARCHAR )AS "SENDERRORQUEUECOUNT",
CAST (CASE WHEN QUEUSAGDSTCD = '4'
THEN 0
END AS VARCHAR ) "RECEIVEERRORCOUNT"
FROM $schemaId$.TSEAIQM01 Q1, $schemaId$.TSEAICM01 C1
WHERE Q1.EAIBZWKDSTCD = C1.EAIBZWKDSTCD
AND Q1.QUEUSEYN = '1'
<isNotEmpty prepend="AND" property="searchEaiBzwkdstcd">
Q1.EAIBZWKDSTCD LIKE '%' || #searchEaiBzwkdstcd# || '%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchEaiQueBzwkCtnt">
Q1.EAIQUEBZWKCTNT LIKE '%' || #searchEaiQueBzwkCtnt# ||'%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchInst">
Q1.EAISEVRINSTNCNAME LIKE '%'|| #searchInst#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchQueName">
Q1.NONSYNCZTRANQUENAME LIKE '%' || #searchQueName# || '%'
</isNotEmpty>
ORDER BY Q1.EAIBZWKDSTCD, Q1.EAIQUEBZWKCTNT, Q1.EAISEVRINSTNCNAME
) TMP
</statement>
<statement id="selectDetail" parameterClass="java.util.HashMap" resultClass="java.util.HashMap">
select
Q1.EAIBzwkDstcd,
C1.BzwkDsticName,
Q1.EAIQueBzwkCtnt,
Q1.EAISevrInstncName,
Q1.QueUsagDstcd,
Q1.NonSynczTranQueName
from $schemaId$.tseaiqm01 Q1, $schemaId$.tseaicm01 C1
where Q1.EAIBzwkDstcd = C1.EAIBzwkDstcd
and Q1.QueUseYn = '1'
<isNotEmpty prepend="AND" property="nonSynczTranQueName">
Q1.NonSynczTranQueName = #nonSynczTranQueName#
</isNotEmpty>
ORDER BY Q1.EAIBzwkDstcd, Q1.EAIQueBzwkCtnt, Q1.EAISevrInstncName
</statement>
<statement id="connectionInfo" resultClass="java.util.HashMap">
SELECT PrptyName, Prpty2Val
FROM $schemaId$.TSEAICM03
WHERE PrptyGroupName = #prptyGroupName#
</statement>
<statement id="serviceInfo" resultClass="java.util.HashMap">
SELECT EAISvcName, EAISvcDesc
FROM $schemaId$.TSEAIHE01
</statement>
<statement id="selectBoxCount" parameterClass="java.util.HashMap" resultClass="java.lang.Integer">
SELECT MAX(SUBSTR(EAISEVRINSTNCNAME,7,1))
FROM $schemaId$.TSEAISY02
WHERE EAISEVRIP != '*'
</statement>
<statement id="selectInstCount" parameterClass="java.util.HashMap" resultClass="java.lang.Integer">
SELECT MAX(SUBSTR(EAISEVRINSTNCNAME,8,1))
FROM $schemaId$.TSEAISY02
WHERE EAISEVRIP != '*'
</statement>
<statement id="selectQueueMonitoringList" parameterClass="java.util.HashMap" resultClass="java.util.HashMap">
SELECT
Q1.EAIBZWKDSTCD, C1.BZWKDSTICNAME, Q1.EAIQUEBZWKCTNT, Q1.EAISEVRINSTNCNAME, Q1.QUEUSAGDSTCD, Q1.NONSYNCZTRANQUENAME ,
CASE WHEN QUEUSAGDSTCD = '1'
THEN 0
END AS "SENDQUEUECOUNT",
CASE WHEN QUEUSAGDSTCD = '2'
THEN 0
END AS "RECEIVEQUEUECOUNT",
CASE WHEN QUEUSAGDSTCD = '3'
THEN 0
END AS "SENDERRORQUEUECOUNT",
CASE WHEN QUEUSAGDSTCD = '4'
THEN 0
END AS "RECEIVEERRORCOUNT"
FROM $schemaId$.TSEAIQM01 Q1
INNER JOIN $schemaId$.TSEAICM01 C1 ON Q1.EAIBZWKDSTCD = C1.EAIBZWKDSTCD
WHERE Q1.QUEUSEYN = '1'
ORDER BY Q1.EAIBZWKDSTCD, Q1.EAIQUEBZWKCTNT, Q1.EAISEVRINSTNCNAME
</statement>
</sqlMap>