Приветствую. Чтот не могу вникнуть как поймать номер квартиры который в выборке отсутствует. Это класс отчета, но с отчетом проблем нет, есть проблемы с кодом. Собственно вот класс
Код:
package ru.skyb.reports;
import bitel.billing.server.admin.reports.BGReportFilter;
import bitel.billing.server.reports.BGCSVReport.CSVFillerDataFields;
import bitel.billing.server.reports.BGCSVReport.ReportResult;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AddressForAgents
implements bitel.billing.server.reports.BGCSVReport.CSVFillerData
{
@Override
public void fillReport( Connection con, BGReportFilter filter, ReportResult result )
throws Exception
{
List<Map<String, String>> data = new ArrayList<Map<String, String>>( 1000 );
StringBuilder sb = new StringBuilder();
int city = filter.getIntParam( "city" );
String street = filter.getStringParam( "street" );
String house = filter.getStringParam( "house" );
String frac = filter.getStringParam( "frac" );
int size = filter.getIntParam( "size" );
String query = " SELECT c.id, c.title, flat FROM contract AS c " +
" LEFT JOIN contract_parameter_type_2 AS cpt ON cpt.cid = c.id " +
" LEFT JOIN address_house AS ah ON ah.id = cpt.hid " +
" WHERE (c.date2 > NOW() OR c.date2 IS NULL) AND cpt.pid = 1 " +
" AND ah.streetid = " + street + " AND ah.house = " + house + " ORDER BY flat";
if (!frac.equals("") && !frac.isEmpty())
{
query += " AND ah.frac= '/" + frac + "'";
}
int i = 0;
PreparedStatement ps = con.prepareStatement( query );
//System.out.println( "query=" + ps.toString() );
ResultSet rs = ps.executeQuery();
while ( rs.next() )
{
Map<String, String> map = new HashMap<String, String>();
int cid = rs.getInt(1);
String title = rs.getString(2);
int flat = rs.getInt(3);
for(i = 0; i <= size; i++ )
{
if(i != flat)
{
System.out.println( "i = " + i +" flat " + flat);
map.put("number", Integer.toString(i));
}
//map.put("number", title);
data.add( map );
}
}
result.setData( data );
}
}
В переменной size например число 100, это число квартир в доме, задается руками через фильтр. Далее в выборке попадаются квартиры 1,2,3,5,15 и т.д., так вот те квартиры которые отсутствуют в sql выборке мне нужны, получается 4,6,7,8,9,10,11,12,13,14.... и т.д.
_________________
Код:
Клиент: вер. 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Стиль программирования - пьяный мастерстер
Разработка мобильных приложений