Asyn c Jasper отчет дает ВСЕ данные при изменении имени параметра - PullRequest
0 голосов
/ 04 мая 2020

Я работаю над существующим асинхронным отчетом jasper c в приложении, в котором серверная часть Java отправляет параметр employee_id серверу jasper. Соответствующий файл .jr xml, содержащий имя этого параметра «employee_id», выполняет запрос SQL для извлечения результатов.

Теперь, согласно новым функциям, существует сценарий, когда приложение может отправить более 1000 сотрудников идентификаторы. Итак, со стороны Java я создаю подсписки, каждый из которых содержит не более 1000 элементов. например,

первый подсписок имеет имя параметра как -> first1000_employee_id

второй подсписок имеет имя параметра как -> second1000_employee_id

Соответствующий файл .jr xml также был изменен, чтобы добавить эти 2 новых параметра и избавился от "employee_id".

Существующий java код:

ReportParameter reportParameter = new ReportParameter();
reportParameter.setName("employee_id");
reportParameter.setValues(employeeIds); // employeeIds is List<String>
reportParameters.add(reportParameter);

Новый java код:

ReportParameter reportParameterFirst1000 = new ReportParameter();
reportParameterFirst1000.setName("first1000_employee_id");
reportParameterFirst1000.setValues(first1000EmployeeIds); 
reportParameters.add(reportParameterFirst1000);


ReportParameter reportParameterSecond1000 = new ReportParameter();
reportParameterSecond1000.setName("second1000_employee_id");
reportParameterSecond1000.setValues(second1000EmployeeIds);
reportParameters.add(reportParameterSecond1000);

ReportParameters parameters = new ReportParameters();
parameters.setReportParameters(reportParameters);
reportExecutionRequest.setParameters(parameters);

Существующий .jr xml SQL запрос:

SELECT  
    category_desc, 
    SUM(cnt)
    FROM (
        SELECT 
        category_desc,
        cnt 
        FROM   
        TXN_MV
        WHERE
        ( employee_id IN ('0001022051') )
        ) x                     
        GROUP  BY 
        category_desc 
        HAVING 
        SUM(cnt) > 0
        ORDER BY 
        cnt DESC

Новый .jr xml SQL запрос:

SELECT  
    category_desc, 
    SUM(cnt)
    FROM (
        SELECT 
        category_desc,
        cnt 
        FROM   
        TXN_MV
        WHERE
        ( first1000_employee_id IN ('0001022051') 
        OR second1000_employee_id IN ('0001022052') )
        ) x                     
        GROUP  BY 
        category_desc 
        HAVING 
        SUM(cnt) > 0
        ORDER BY 
        cnt DESC

Теперь, когда я публикую sh это В отчете на сервер jasper приложение выбирает записи для всех идентификаторов сотрудников, а не те, которые я указываю в подсписках на основе нового запроса SQL в .jr xml. Условие WHERE для вновь определенных идентификаторов сотрудников игнорируется, и поэтому выполняется выборка всех записей из БД.

Я отладил и вижу, что все имена параметров работают правильно.

Не могли бы вы помочь, в чем может быть проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...