вот так я получаю данные по ip и макам в отчете, они соответствуют тому что нужно, это я проверял
Код:
<queryString language="BGBS"><![CDATA[import java.sql.*;
import java.util.*;
public void fillReport( con, filter, result )
{
String mac = filter.getStringParam("mac");
String ip = filter.getStringParam("ip");
if (mac.equals(""))
{
PreparedStatement ps = con.prepareStatement( result.sql(" SELECT c.title AS col1, cpt1.val AS col2, "+
" cpt2.address AS col3, isl.callingStationId AS col4, INET_NTOA(CONV(HEX(isl.ipAddress), 16, 10)) AS col5, isl.sessionStart AS col6, isl.sessionStop AS col7 "+
" FROM contract AS c "+
" LEFT JOIN inet_serv_21 AS ise ON c.id=ise.contractId "+
" LEFT JOIN $module_month_table( inet_session_log , date ) AS isl ON isl.servId=ise.id "+
" LEFT JOIN contract_parameter_type_1 AS cpt1 ON cpt1.cid=c.id "+
" LEFT JOIN contract_parameter_type_2 AS cpt2 ON cpt2.cid=c.id "+
" WHERE isl.ipAddress IS NOT NULL AND '$date(date) $(hours)' BETWEEN isl.sessionStart AND isl.sessionStop "+
" AND isl.ipAddress = UNHEX(CONV(INET_ATON('$(ip)'), 10, 16)) AND cpt1.pid = 3 AND cpt2.pid=1", filter ) );
ResultSet rs = ps.executeQuery();
List res = new ArrayList();
while(rs.next())
{
Map map = new HashMap();
title = rs.getString(1);
fio = rs.getString(2);
address = rs.getString(3);
mac = rs.getString(4);
ip = rs.getString(5);
start = rs.getString(6);
stop = rs.getString(7);
map.put("col1", title);
map.put("col2", fio);
map.put("col3", address);
map.put("col4", mac);
map.put("col5", ip);
map.put("col6", start);
map.put("col7", stop);
res.add(map);
}
result.setDataSource( res );
}
else
{
PreparedStatement ps = con.prepareStatement( result.sql(" SELECT c.title AS col1, cpt1.val AS col2, "+
" cpt2.address AS col3, isl.callingStationId AS col4, INET_NTOA(CONV(HEX(isl.ipAddress), 16, 10)) AS col5, isl.sessionStart AS col6, isl.sessionStop AS col7 "+
" FROM contract AS c "+
" LEFT JOIN inet_serv_21 AS ise ON c.id=ise.contractId "+
" LEFT JOIN $module_month_table( inet_session_log , date ) AS isl ON isl.servId=ise.id "+
" LEFT JOIN contract_parameter_type_1 AS cpt1 ON cpt1.cid=c.id "+
" LEFT JOIN contract_parameter_type_2 AS cpt2 ON cpt2.cid=c.id "+
" WHERE isl.callingStationId IS NOT NULL "+
" AND isl.callingStationId = '$(mac)' AND cpt1.pid = 3 AND cpt2.pid=1", filter ) );
ResultSet rs = ps.executeQuery();
List res = new ArrayList();
while(rs.next())
{
Map map = new HashMap();
title = rs.getString(1);
fio = rs.getString(2);
address = rs.getString(3);
mac = rs.getString(4);
ip = rs.getString(5);
start = rs.getString(6);
stop = rs.getString(7);
map.put("col1", title);
map.put("col2", fio);
map.put("col3", address);
map.put("col4", mac);
map.put("col5", ip);
map.put("col6", start);
map.put("col7", stop);
System.out.println("mac " + mac);
res.add(map);
}
result.setDataSource( res );
}
_________________
Код:
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegramСтиль программирования - пьяный мастерстер
Разработка мобильных приложений