通联日志 检索条件添加和字段属性添加

This commit is contained in:
leijun
2019-01-05 21:47:07 +08:00
parent ad0a04872c
commit ff98b2e65f
4 changed files with 344 additions and 102 deletions

View File

@@ -33,7 +33,7 @@ public class BaseLogEntity<T> extends BaseEntity<T> {
protected Integer service; //配置表的serviceId
@ExcelField(title="entrance_id",dictType="ENTRANCE",sort=7)
protected Integer entranceId; //出入口编号
@ExcelField(title="deviceid",dictType="DEVICE",sort=45)
@ExcelField(title="deviceid",dictType="DEVICE",sort=50)
protected Integer deviceId; //串联设备编号
@ExcelField(title="direction",dictType="LOG_DIRECTION",sort=55)
protected Integer direction; //传输方向 0域内->域外1域外->域内从字典LOG_DIRECTION取值
@@ -74,9 +74,9 @@ public class BaseLogEntity<T> extends BaseEntity<T> {
protected String orderBy;//排序参数
//新增字段
@ExcelField(title="encap_type",dictType="ENCAP_TYPE",sort=50)
@ExcelField(title="encap_type",dictType="ENCAP_TYPE",sort=52)
protected Integer encapType;//原始二层封装格式
@ExcelField(title="link_id",dictType="LINK",sort=47)
@ExcelField(title="link_id",dictType="LINK",sort=51)
protected Integer linkId;//串联设备链路号
@ExcelField(title="inner_smac",sort=58)
protected String innerSmac;//MAC_IN_MAC的内层源MAC

View File

@@ -5,20 +5,69 @@ import com.nis.util.excel.ExcelField;
public class NtcConnRecordLog extends BaseLogEntity<NtcConnRecordLog> {
private static final long serialVersionUID = -4947912502754359817L;
@ExcelField(title = "social_app", sort = 8)
protected String appLabel;
@ExcelField(title = "c2s_pkt_num", sort = 9)
@ExcelField(title = "c2s_pkt_num", sort = 44)
protected String c2sPktNum;
@ExcelField(title = "s2c_pkt_num", sort = 10)
@ExcelField(title = "s2c_pkt_num", sort = 45)
protected String s2cPktNum;
@ExcelField(title = "c2s_byte_num", sort = 12)
@ExcelField(title = "c2s_byte_num", sort = 47)
protected String c2sByteNum;
@ExcelField(title = "s2c_byte_num", sort = 13)
@ExcelField(title = "s2c_byte_num", sort = 48)
protected String s2cByteNum;
@ExcelField(title = "APP", sort = 8)
protected String appId;
@ExcelField(title = "Web", sort = 10)
protected String webId;
@ExcelField(title = "Protocol", sort = 9)
protected String protoId;
@ExcelField(title = "Total Pkt", sort = 46)
protected String totalPkt;
@ExcelField(title = "Total Byte", sort = 49)
protected String totalByte;
public String getTotalPkt() {
return totalPkt;
}
public void setTotalPkt(String totalPkt) {
this.totalPkt = totalPkt;
}
public String getTotalByte() {
return totalByte;
}
public void setTotalByte(String totalByte) {
this.totalByte = totalByte;
}
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public String getWebId() {
return webId;
}
public void setWebId(String webId) {
this.webId = webId;
}
public String getProtoId() {
return protoId;
}
public void setProtoId(String protoId) {
this.protoId = protoId;
}
public String getAppLabel() {
return appLabel;

View File

@@ -1,45 +1,31 @@
package com.nis.web.controller.log.ntc;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jetty.util.ajax.JSON;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
import com.nis.domain.PageLog;
import com.nis.domain.SysUser;
import com.nis.domain.log.IrDnatLog;
import com.nis.domain.log.IrSnatLog;
import com.nis.domain.log.NtcCollectRadiusLog;
import com.nis.domain.log.NtcConnRecordLog;
import com.nis.domain.log.NtcConnRecordLog;
import com.nis.domain.log.SearchReport;
import com.nis.domain.maat.LogRecvData;
import com.nis.domain.report.NtcServiceReport;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.CodeDicUtils;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
@@ -63,11 +49,40 @@ public class NtcConnRecordLogController extends BaseController {
params.put("pageSize", page.getPageSize());
params.put("pageNo", page.getPageNo());
initLogSearchValue(log, params);
if (StringUtils.isNotBlank(log.getAppId())) {
params.put("searchAppId", log.getAppId());
}
if (StringUtils.isNotBlank(log.getProtoId())) {
params.put("searchProtoId", log.getProtoId());
}
if (StringUtils.isNotBlank(log.getWebId())) {
params.put("searchWebId", log.getWebId());
}
if (StringUtils.isNotBlank(log.getsAsn())) {
params.put("searchSAsn", log.getsAsn());
}
if (StringUtils.isNotBlank(log.getdAsn())) {
params.put("searchDAsn", log.getdAsn());
}
if (StringUtils.isNotBlank(log.getServerLocate())) {
params.put("searchServerLocate", log.getServerLocate());
}
if (StringUtils.isNotBlank(log.getClientLocate())) {
params.put("searchClientLocate", log.getClientLocate());
}
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
model.addAttribute("serviceList", serviceList);
List<CodeResult> appList = CodeDicUtils.getCodeList("appCode");
List<CodeResult> protocolList = CodeDicUtils.getCodeList("protocolCode");
List<CodeResult> webList = CodeDicUtils.getCodeList("webCode");
model.addAttribute("appList", appList);
model.addAttribute("protocolList", protocolList);
model.addAttribute("webList", webList);
model.addAttribute("appList", appList);
model.addAttribute("protocolList", protocolList);
model.addAttribute("webList", webList);
String url = Constants.LOG_BASE_URL + Constants.NTC_CONN_RECORD_LOG;
String recv = HttpClientUtil.getMsg(url, params, request);
@@ -148,10 +163,36 @@ public class NtcConnRecordLogController extends BaseController {
params.put("pageSize", page.getPageSize());
params.put("pageNo", page.getPageNo());
initLogSearchValue(log, params);
if (StringUtils.isNotBlank(log.getAppId())) {
params.put("searchAppId", log.getAppId());
}
if (StringUtils.isNotBlank(log.getProtoId())) {
params.put("searchProtoId", log.getProtoId());
}
if (StringUtils.isNotBlank(log.getWebId())) {
params.put("searchWebId", log.getWebId());
}
if (StringUtils.isNotBlank(log.getsAsn())) {
params.put("searchSAsn", log.getsAsn());
}
if (StringUtils.isNotBlank(log.getdAsn())) {
params.put("searchDAsn", log.getdAsn());
}
if (StringUtils.isNotBlank(log.getServerLocate())) {
params.put("searchServerLocate", log.getServerLocate());
}
if (StringUtils.isNotBlank(log.getClientLocate())) {
params.put("searchClientLocate", log.getClientLocate());
}
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
model.addAttribute("serviceList", serviceList);
List<CodeResult> appList = CodeDicUtils.getCodeList("appCode");
List<CodeResult> protocolList = CodeDicUtils.getCodeList("protocolCode");
List<CodeResult> webList = CodeDicUtils.getCodeList("webCode");
model.addAttribute("appList", appList);
model.addAttribute("protocolList", protocolList);
model.addAttribute("webList", webList);
Properties msgProp = getMsgProp();
String url = Constants.LOG_BASE_URL + Constants.NTC_CONN_RECORD_LOG;
String recv = HttpClientUtil.getMsg(url, params, request);
List<NtcConnRecordLog> list = new ArrayList<NtcConnRecordLog>();
@@ -166,8 +207,21 @@ public class NtcConnRecordLogController extends BaseController {
}
}
for (NtcConnRecordLog l : list) {
l.setFunctionId(log.getFunctionId());
setLogAction(l, serviceList);
if (StringUtils.isNotBlank(l.getAppId())) {
l.setAppId(getName(l.getAppId(),appList,msgProp));
}
if (StringUtils.isNotBlank(l.getProtoId())) {
l.setProtoId(getName(l.getProtoId(),protocolList,msgProp));
}
if (StringUtils.isNotBlank(l.getWebId())) {
l.setWebId(getName(l.getWebId(),webList,msgProp));
}
if (StringUtils.isNotBlank(l.getC2sPktNum()) && StringUtils.isNotBlank(l.getS2cPktNum()) ) {
l.setTotalPkt(String.valueOf(Integer.valueOf(l.getC2sPktNum())+Integer.valueOf(l.getS2cPktNum())));
}
if (StringUtils.isNotBlank(l.getC2sByteNum()) && StringUtils.isNotBlank(l.getS2cByteNum()) ) {
l.setTotalByte(String.valueOf(Integer.valueOf(l.getC2sByteNum())+Integer.valueOf(l.getS2cByteNum())));
}
}
titleList.add("conn_record");
classMap.put("conn_record", NtcConnRecordLog.class);
@@ -177,7 +231,7 @@ public class NtcConnRecordLogController extends BaseController {
} else {
hColumns += ",";
}
String cfgIndexInfoNoExport = ",cfg_id,action," + hColumns;
String cfgIndexInfoNoExport = ",cfg_id,action,user_region," + hColumns;
noExportMap.put("conn_record", cfgIndexInfoNoExport);
dataMap.put("conn_record", list);
String timeRange= initLogMap(log,"conn_record");
@@ -195,5 +249,16 @@ public class NtcConnRecordLogController extends BaseController {
addMessage(redirectAttributes, "error", "export_failed");
}
}
public String getName(String id,List<CodeResult> list,Properties msgProp){
String name=String.valueOf(id);
for (int i = 0; i < list.size(); i++) {
if(String.valueOf(id).equals(list.get(i).getCode())){
name=msgProp.getProperty(list.get(i).getItem(),list.get(i).getItem());
break;
}
}
return name;
}
}

View File

@@ -11,7 +11,7 @@
//reset
$("#resetBtn").on("click",function(){
$("select.selectpicker").each(function(){
$(this).selectpicker('val',$(this).find('option:first').val());
$(this).selectpicker('val',"");
$(this).find("option").attr("selected",false);
$(this).find("option:first").attr("selected",true);
});
@@ -21,10 +21,9 @@
.attr("value",'');
$("#searchForm")[0].reset();
});
returnBack();
//筛选功能
filterActionInit();
$("span[id^=close]").on("click",function(){
var closeId=$(this).attr("id");
var openId=$(this).attr("id").replace("close","open");
@@ -35,6 +34,33 @@
ajaxConnPercent();
});
function returnBack(){
$('#appSelect').selectpicker();
var app = $("#apps").val(); //回选的数据
if (app !=null && app !='') {
var seasonlist = app.split(",");
$('#appSelect').selectpicker('val',seasonlist);
$('#appSelect').selectpicker('render');
}
$('#protoSelect').selectpicker();
var proto = $("#protos").val(); //回选的数据
if (proto !=null && proto !='') {
var protolist = proto.split(",");
$('#protoSelect').selectpicker('val',protolist);
$('#protoSelect').selectpicker('render');
}
$('#webSelect').selectpicker();
var web = $("#webs").val(); //回选的数据
if (web !=null && web !='') {
var weblist = web.split(",");
$('#webSelect').selectpicker('val',weblist);
$('#webSelect').selectpicker('render');
}
};
var ajaxConnPercent=function(){
$.ajax({
type:'get',
@@ -96,6 +122,10 @@
<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
<input id="functionId" name="functionId" type="hidden" value="${log.functionId}"/>
<input id="isLogTotalSearch" name="isLogTotalSearch" type="hidden" value="${log.isLogTotalSearch}"/>
<input id="apps" type="hidden" value="${log.appId}"/>
<input id="webs" type="hidden" value="${log.webId}"/>
<input id="protos" type="hidden" value="${log.protoId}"/>
<!-- 筛选按钮展开状态-->
<input id="isFilterAction" name="isFilterAction" type="hidden" value="${log.isFilterAction }"/>
<sys:tableSort id="orderBy" name="orderBy.
@@ -164,29 +194,7 @@
<!-- 筛选搜索内容栏默认隐藏-->
<div class="col-md-12 filter-action-select-panle hide" >
<div class="row">
<div class="col-md-2">
<div class="form-group">
<label class="control-label"><spring:message code='transport_layer_protocol'/></label>
<form:select path="transProto" class="selectpicker form-control">
<form:option value=""><spring:message code="select"/></form:option>
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="protocol" >
<form:option value="${protocol.itemCode}"><spring:message code="${protocol.itemValue}"></spring:message></form:option>
</c:forEach>
</form:select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label class="control-label"><spring:message code="direction"/></label>
<form:select path="direction" class="selectpicker form-control">
<form:option value=""><spring:message code="select"/></form:option>
<c:forEach items="${fns:getDictList('LOG_DIRECTION')}" var="direction" >
<form:option value="${direction.itemCode}"><spring:message code="${direction.itemValue}"></spring:message></form:option>
</c:forEach>
</form:select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
@@ -207,6 +215,20 @@
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label class="control-label"><spring:message code='transport_layer_protocol'/></label>
<form:select path="transProto" class="selectpicker form-control">
<form:option value=""><spring:message code="select"/></form:option>
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="protocol" >
<form:option value="${protocol.itemCode}"><spring:message code="${protocol.itemValue}"></spring:message></form:option>
</c:forEach>
</form:select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="clientip"></spring:message></label>
@@ -220,14 +242,93 @@
<input name="dIp" type="text" class="form-control" value="${log.dIp }"/>
</div>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label class="control-label"><spring:message code="direction"/></label>
<form:select path="direction" class="selectpicker form-control">
<form:option value=""><spring:message code="select"/></form:option>
<c:forEach items="${fns:getDictList('LOG_DIRECTION')}" var="direction" >
<form:option value="${direction.itemCode}"><spring:message code="${direction.itemValue}"></spring:message></form:option>
</c:forEach>
</form:select>
</div>
</div>
</div>
<%-- <div class="row">
<div class="col-md-2">
<label><spring:message code="cfg_id"></spring:message></label>
<input name="cfgId" type="text" class="form-control logCfgId number" value="${log.cfgId }"/>
</div>
</div> --%>
<div class="row">
<div class="col-md-2">
<div class="form-group">
<label class="control-label"><spring:message code='APP'/></label>
<select id="appSelect" name="appId" title="<spring:message code="select"/>" class="selectpicker form-control " data-max-options="10" data-selected-text-format="count > 3" multiple data-live-search="true" data-live-search-placeholder="<spring:message code="search"/>">
<c:forEach items="${appList}" var="app" >
<option value="${app.code}"><spring:message code="${app.item}"></spring:message></option>
</c:forEach>
</select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label class="control-label"><spring:message code='Protocol'/></label>
<select id="protoSelect" name="protoId" title="<spring:message code="select"/>" class="selectpicker form-control " data-max-options="10" data-selected-text-format="count > 3" multiple data-live-search="true" data-live-search-placeholder="<spring:message code="search"/>">
<c:forEach items="${protocolList}" var="proto" >
<option value="${proto.code}"><spring:message code="${proto.item}"></spring:message></option>
</c:forEach>
</select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label class="control-label"><spring:message code='Web'/></label>
<select id="webSelect" name="webId" title="<spring:message code="select"/>" class="selectpicker form-control" data-max-options="10" data-selected-text-format="count > 3" multiple data-live-search="true" data-live-search-placeholder="<spring:message code="search"/>">
<c:forEach items="${webList}" var="web" >
<option value="${web.code}"><spring:message code="${web.item}"></spring:message></option>
</c:forEach>
</select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="s_asn"></spring:message></label>
<input name="sAsn" type="text" class="form-control" value="${log.sAsn }"/>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="d_asn"></spring:message></label>
<input name="dAsn" type="text" class="form-control" value="${log.dAsn }"/>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="server_locate"></spring:message></label>
<input name="serverLocate" type="text" class="form-control" value="${log.serverLocate }"/>
</div>
</div>
</div>
<div class="row">
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="client_locate"></spring:message></label>
<input name="clientLocate" type="text" class="form-control" value="${log.clientLocate }"/>
</div>
</div>
</div>
</div>
<!-- /筛选搜索内容栏 结束-->
</form:form>
</div>
@@ -243,9 +344,19 @@
<th class="sort-column found_time" column="found_time"><spring:message code="found_time"/></th>
<th class="sort-column recv_time" isVisible="false" column="recv_time"><spring:message code="recv_time"/></th>
<th class="sort-column entrance_id" isVisible="false" column="entrance_id"><spring:message code="entrance_id"/></th>
<th class="sort-column app_id" column="APP">APP</th>
<th class="sort-column proto_id" column="Protocol">Protocol</th>
<th class="sort-column web_id" column="Web">Web</th>
<th class="sort-column cap_ip" column="clj_ip"><spring:message code="clj_ip"/></th>
<th class="sort-column trans_proto" column="transport_layer_protocol" isVisible="false"><spring:message code="transport_layer_protocol"/></th>
<th class="sort-column addr_type" column="addr_type" isVisible="false"><spring:message code='addr_type'/></th>
<th class="sort-column d_ip" column="server_ip"><spring:message code="server_ip"/></th>
<th class="sort-column s_ip" column="client_ip"><spring:message code="client_ip"/></th>
<th class="sort-column d_port" column="server_port"><spring:message code="server_port"/></th>
<th class="sort-column s_port" column="client_port"><spring:message code="client_port"/></th>
<th class="sort-column app_label" column="social_app"><spring:message code='social_app'/></th>
<th class="sort-column c2s_pkt_num" column="c2s_pkt_num"><spring:message code="c2s_pkt_num"/></th>
<th class="sort-column s2c_pkt_num" column="s2c_pkt_num"><spring:message code='s2c_pkt_num'/></th>
<th class="total_pkt_num" column="Total Pkt">Total Pkt</th>
@@ -253,31 +364,23 @@
<th class="sort-column s2c_byte_num" column="s2c_byte_num"><spring:message code="s2c_byte_num"/></th>
<th class="Total_byte_num" column="Total Byte">Total Byte</th>
<th class="sort-column cap_ip" isVisible="false" column="clj_ip"><spring:message code="clj_ip"/></th>
<th class="sort-column trans_proto" column="transport_layer_protocol"><spring:message code="transport_layer_protocol"/></th>
<th class="sort-column addr_type" column="addr_type"><spring:message code='addr_type'/></th>
<th class="sort-column d_ip" column="server_ip"><spring:message code="server_ip"/></th>
<th class="sort-column s_ip" column="client_ip"><spring:message code="client_ip"/></th>
<th class="sort-column d_port" column="server_port"><spring:message code="server_port"/></th>
<th class="sort-column s_port" column="client_port"><spring:message code="client_port"/></th>
<th class="sort-column device_id" isVisible="false" column="deviceid"><spring:message code="deviceid"/></th>
<th class="sort-column link_id" isVisible="false" column="link_id"><spring:message code="link_id"/></th>
<th class="sort-column encap_type" column="encap_type"><spring:message code="encap_type"/></th>
<th class="sort-column direction" column="direction"><spring:message code="direction"/></th>
<th class="sort-column inner_smac" column="inner_smac"><spring:message code="inner_smac"/></th>
<th class="sort-column inner_dmac" column="inner_dmac"><spring:message code="inner_dmac"/></th>
<th class="sort-column stream_dir" column="stream_type"><spring:message code="stream_type"/></th>
<th class="sort-column encap_type" column="encap_type" isVisible="false"><spring:message code="encap_type"/></th>
<th class="sort-column direction" column="direction" isVisible="false"><spring:message code="direction"/></th>
<th class="sort-column inner_smac" column="inner_smac" isVisible="false"><spring:message code="inner_smac"/></th>
<th class="sort-column inner_dmac" column="inner_dmac" isVisible="false"><spring:message code="inner_dmac"/></th>
<th class="sort-column stream_dir" column="stream_type" isVisible="false"><spring:message code="stream_type"/></th>
<th class="sort-column addr_list" column="nest_addr_list"><spring:message code="nest_addr_list"/></th>
<th class="sort-column addr_list" column="nest_addr_list" isVisible="false"><spring:message code="nest_addr_list"/></th>
<th class="sort-column server_locate" column="server_locate"><spring:message code='server_locate'/></th>
<th class="sort-column client_locate" column="client_locate"><spring:message code='client_locate'/></th>
<th class="sort-column s_asn" isVisible="false" column="s_asn"><spring:message code='s_asn'/></th>
<th class="sort-column d_asn" isVisible="false" column="d_asn"><spring:message code='d_asn'/></th>
<th class="sort-column s_asn" column="s_asn"><spring:message code='s_asn'/></th>
<th class="sort-column d_asn" column="d_asn"><spring:message code='d_asn'/></th>
<th class="sort-column s_subscribe_id" isVisible="false" column="s_subscribe_id"><spring:message code='s_subscribe_id'/></th>
<th class="sort-column d_subscribe_id" isVisible="false" column="d_subscribe_id"><spring:message code='d_subscribe_id'/></th>
<%-- <th class="sort-column user_region" isVisible="false" column="user_region"><spring:message code='user_region'/></th> --%>
<c:if test="${fns:getUser().isAdmin()}"><th class="sort-column scene_file" column="scene_file"><spring:message code='scene_file'/></th></c:if>
<c:if test="${fns:getUser().isAdmin()}"><th class="sort-column scene_file" isVisible="false" column="scene_file"><spring:message code='scene_file'/></th></c:if>
</tr>
</thead>
<tbody>
@@ -287,16 +390,7 @@
<%-- <span id="open${status.index}" class="log-open-cfg" compileId="${log.cfgId }"> ▷ </span><span style="display: none" id="close${status.index}" > ▼ </span> --%>
<a href="javascript:void(0)" name="viewLogInfo" ><i class="icon-book-open"></i></a>
</td>
<%-- <td>${log.cfgId }</td>
<td>
<c:set var="actions">${log.action }</c:set>
<c:forEach items="${fns:getDictList('SERVICE_ACTION')}" var="dict">
<c:if test="${dict.itemCode eq log.action}">
<c:set var="actions">${dict.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${actions}"/>
</td> --%>
<td>${log.foundTime }</td>
<td>${log.recvTime }</td>
<td>
@@ -310,31 +404,46 @@
</td>
<td>
<c:set var="appIds">${log.appId }</c:set>
<c:forEach items="${appList}" var="dict">
<c:if test="${dict.code eq log.appId}">
<c:set var="appIds">${dict.item}</c:set>
</c:if>
</c:forEach>
<spring:message code="${appIds}"/>
</td>
<td>
<c:set var="protoIds">${log.protoId }</c:set>
<c:forEach items="${protocolList}" var="dict">
<c:if test="${dict.code eq log.protoId}">
<c:set var="protoIds">${dict.item}</c:set>
</c:if>
</c:forEach>
<spring:message code="${protoIds}"/>
</td>
<td>
<c:set var="webIds">${log.webId }</c:set>
<c:forEach items="${webList}" var="dict">
<c:if test="${dict.code eq log.webId}">
<c:set var="webIds">${dict.item}</c:set>
</c:if>
</c:forEach>
<spring:message code="${webIds}"/>
</td>
<%-- <td>
<c:set var="labelAppIds">${log.appLabel }</c:set>
<c:forEach items="${appList}" var="dict">
<c:if test="${dict.code eq log.appLabel}">
<c:if test="${dict.code eq log.appId}">
<c:set var="labelAppIds">${dict.item}</c:set>
</c:if>
</c:forEach>
<spring:message code="${labelAppIds}"/>
</td>
<td>${log.c2sPktNum }</td>
<td>${log.s2cPktNum }</td>
<td>${log.s2cPktNum+log.c2sPktNum }</td>
<td>${log.c2sByteNum }</td>
<td>${log.s2cByteNum }</td>
<td>${log.s2cByteNum+log.c2sByteNum }</td>
</td> --%>
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
<td>
<c:set var="transProtos">${log.transProto }</c:set>
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
<c:if test="${dic.itemCode eq log.transProto}">
<c:set var="transProtos">${dic.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${transProtos}"/>
</td>
<td>
<c:set var="addrTypes">${log.addrType }</c:set>
<c:forEach items="${fns:getDictList('IP_TYPE')}" var="dic">
@@ -344,10 +453,29 @@
</c:forEach>
<spring:message code="${addrTypes}"/>
</td>
<td>
<c:set var="transProtos">${log.transProto }</c:set>
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
<c:if test="${dic.itemCode eq log.transProto}">
<c:set var="transProtos">${dic.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${transProtos}"/>
</td>
<td title="${log.dIp }">${fns:abbr(log.dIp, 42)}</td>
<td title="${log.sIp }">${fns:abbr(log.sIp, 42)}</td>
<td>${log.dPort }</td>
<td>${log.sPort }</td>
<td>${log.c2sPktNum }</td>
<td>${log.s2cPktNum }</td>
<td>${log.s2cPktNum+log.c2sPktNum }</td>
<td>${log.c2sByteNum }</td>
<td>${log.s2cByteNum }</td>
<td>${log.s2cByteNum+log.c2sByteNum }</td>
<td>
<c:set var="deviceIds">${log.deviceId }</c:set>
<c:forEach items="${fns:getDictList('DEVICE')}" var="device">