Ошибка при построении отчета Jasper: Property 'idrkk' has no getter method

Возникает ошибка

Property 'idrkk' has no getter method in class 'class DataSetApprovalOfBankDocMPNew$ReportRow'

хотя gettеr объявлен для idrkk.

В чем может быть проблема?

idrkk получаю в методе ReportRow, в отчет должен прилетать именно Object idrkk

public class DataSetApprovalOfBankDocMPNew implements ReportDS {
    private static final Logger log = getLogger(DataSetApprovalOfBankDocMPNew.class);
    private final CollectionsService collectionService = BeansUtils.getBean("collectionsService");
    private final CrudService crud = BeansUtils.getBean("crudService");

    private static final String DIALOG_PERIOD_START = "DATE_PARAM.Start";
    private static final String DIALOG_PERIOD_END = "DATE_PARAM.End";
    private static final String DIALOG_TYPE = "DocumentType";
    private static final String DIALOG_SP = "SP_EMP";
    private static final String DIALOG_GO = "FIL_GO";
    private static final String IDRKK = "id";
    private static final String RKKTYPE = "rkktype";
    private static final String SUBJECT = "subject";
    private static final String LIFECYCLE = "lifecycle";
    private static final String ALLNOVISA = "allnoVisa";
    private static final String ALLYESVISA = "allyesVisa";
    private static final String ALLINTERM = "allinterm";
    private static final String YESINTERM = "yesinterm";
    private static final String SPECINTERM = "specinterm";
    private static final String NOINTERM = "nointerm";
    private static final String ALLEX = "allex";
    private static final String YESEX = "yesex";
    private static final String SPECEX = "specex";
    private static final String NOEX = "noex";
    private static final String DEPPARTY = "depparty";

    private static final String QUERY_BEARD_UNID = "SELECT SUBSTRING(beard.cmjunid, 0, 33) AS unid\n" +
            "FROM so_beard beard\n" +
            "WHERE beard.id = {0}";

    private static final String QUERY_BASE ="with datas_s0 as (select distinct * from (\n" +
            "                        select\n" +
            "                        rkkbase.id as idrkk,\n" +
            "                        aprList.id as idlist,\n" +
            "                        nullif(rkk.type, '') as rkktype,\n" +
            "                        rkk.createversiondate as regdate,\n" +
            "                        aprresult.answer as answer,\n" +
            "                        aprList.\"begin\" as begindate,\n" +
            "                        aprList.inprocess as status,\n" +
            "                        sb.hierparent sp,\n" +
            "                        rkkbase.id,\n" +
            "                        rkkbase.subject AS subject,\n" +
            "((((select string_agg(COALESCE(SO_StructureUnit.shortname, so_beard.orig_shortname) ,', ') from  so_beard left join SO_StructureUnit on SO_StructureUnit.beard = so_beard.id where so_beard.id = sb.hierparent )  || ' (' ||(aprresult.participantname) || ')')))  as depparty,\n" +
            "(CASE WHEN aprresult.\"time\" = '0001-01-01 00:00:00.000000' THEN NULL ELSE DATE(aprresult.\"time\") END) AS timevisa,\n" +
            "                       av.duedate as duedate,\n" +
            "case when aprListorTemp.typevisa = '3' then (av.refvisareplicaid || ':' || av.refvisadocid || '%' || tmpcurstage_comb.comb_cur_stage)\n" +
            "   else (av.refvisareplicaid || ':' || av.refvisadocid || '%' || opt.idx) end as unidVisa,\n" +
            "case WHEN (rkk.apprIsUnder = 1 AND rkk.apprReplicaId NOT IN (SELECT replica FROM SS_Module ss_m JOIN SS_ModuleType ss_t on ss_m.type=ss_t.id WHERE ss_t.alias='ApproveIssueFixing')) THEN 'На согласовании'\n" +
            "WHEN (rkk.apprIsUnder = 1 AND rkk.apprReplicaId IN (SELECT replica FROM SS_Module ss_m JOIN SS_ModuleType ss_t on ss_m.type=ss_t.id WHERE ss_t.alias='ApproveIssueFixing')) THEN 'Снятие замечаний'\n" +
            "WHEN((SELECT tfs.value AS v FROM tn_field_decimal tfs JOIN tn_field ON tn_field.id = tfs.id WHERE tn_field.\"owner\" = rkk.id AND tn_field.owner_type = rkk.id_type AND tn_field.cmjfield = 'isOnRework') = 1) THEN 'На доработке'\n" +
            "            when rkk.appraddstatus = 'APPROVED_POSITIVE' then 'Согласовано'\n" +
            "            when rkk.appraddstatus = 'APPROVED_COMMENTS' then 'Согласовано с замечаниями'\n" +
            "            when rkk.appraddstatus = 'APPROVED_NEGATIVE' then 'Не согласовано'\n" +
            "            when rkk.appraddstatus = 'INTERRUPT_INIT' then 'Согласование прекращено инициатором'\n" +
            "            when rkk.appraddstatus = 'INTERRUPT_ADMIN' then 'Согласование прекращено администратором'\n" +
            "            when rkk.appraddstatus = 'INTERRUPT_EXPIRED' then 'Согласование прекращено из-за истечения максимально допустимого времени'\n" +
            "            when rkk.appraddstatus = 'INTERRUPT_NEGATIVE' then 'Согласование прекращено по отрицательной визе'\n" +
            "            when rkk.appraddstatus = 'IF_APPROVED_POSITIVE' then 'Замечания учтены'\n" +
            "            when rkk.appraddstatus = 'IF_APPROVED_NEGATIVE' then 'Замечания не учтены'\n" +
            "            when rkk.appraddstatus = 'IF_INTERRUPT_INIT' then 'Снятие замечаний прекращено инициатором'\n" +
            "            when rkk.appraddstatus = 'IF_INTERRUPT_ADMIN' then 'Снятие замечаний прекращено администратором'\n" +
            "            when rkk.appraddstatus = 'IF_INTERRUPT_EXPIRED' then 'Снятие замечаний прекращено из-за истечения максимально допустимого времени'\n" +
            "            when rkk.appraddstatus = 'IF_INTERRUPT_NEGATIVE' then 'Снятие замечаний прекращено по отрицательной визе'\n" +
            "            when EXISTS(SELECT 1 FROM MP_Memo memo WHERE memo.\"owner\" = rkk.id AND memo.signissentto = 1) then 'На подписании'\n" +
            "            when EXISTS(SELECT 1 FROM MP_Memo memo WHERE memo.\"owner\" = rkk.id AND memo.signisrejected = 1) then 'Отказано в подписании'\n" +
            "            when rkk.docstate = 'ON_SECRETARY_APPROBATION' then 'На одобрении УОБ'\n" +
            "            when rkk.docstate = 'ON_SECRETARY_CONFIRMATION' then 'На утверждении УОБ'\n" +
            "            when rkk.docstate = 'SECRETARY_APPROBATION_SUCCESS' then 'Одобрено УОБ'\n" +
            "            when rkk.docstate = 'SECRETARY_APPROBATION_COMMENTS' then 'Одобрено (есть комментарии)'\n" +
            "            when rkk.docstate = 'SECRETARY_CONFIRMATION_SUCCESS' then 'Утверждено УОБ'\n" +
            "            when rkk.docstate = 'SECRETARY_CONFIRMATION_COMMENTS' then 'Утверждено (есть комментарии)'\n" +
            "            when rkk.docstate = 'ON_SECRETARY_ADJUSTMENT' then 'Корректировка выполнена'\n" +
            "            when rkk.docstate = 'PROTOCOL_CREATED' then 'Создан Протокол'\n" +
            "            when rkk.docstate = 'REJECTED_UOB' then 'Отказано УОБ'\n" +
            "            when rkk.docstate = 'ON_REVISION' then 'На доработке'\n" +
            "            when rkk.docstate = 'ON_PUBLICATION' then 'На публикации'\n" +
            "            when rkk.docstate = 'ON_PUBLICATION_ACCEPTED' then 'На публикации'\n" +
            "            when rkk.docstate = 'SENT_TO_REGISTER' then 'На регистрации'\n" +
            "            when rkk.docstate = 'PUBLISHED' then 'Опубликовано'\n" +
            "            when rkk.docstate = 'RETURNED' then 'Возвращено'\n" +
            "            else 'Проект'\n" +
            "            end as lifecycle\n" +
            "                from mp_meetingspack rkk\n" +
            "                    JOIN mp_meetingspackbase rkkbase ON rkkbase.id = rkk.id\n" +
            "                    JOIN ss_module module ON module.id = rkkbase.module\n" +
            "                    join ss_moduletype moduletype on moduletype.id = module.type\n" +
            "                    join apr_list aprList on aprList.HierParent = rkk.id\n" +
            " --Ответ\n" +
            "                    join aprmeetpack_vores av on aprList.id = av.RefVisa\n" +
            "                    join aprmeetpack_vores_reply aprresult on aprresult.\"owner\" = av.id\n" +
            "--Автор\n" +
            "                    left join apr_answer on apr_Answer.HierParent = av.refvisa AND aprresult.participant = apr_Answer.realvise\n" +
            "                    LEFT JOIN apr_appranswer appranswer ON apr_answer.id = appranswer.id\n" +
            "                    left join so_beard beard_answere on beard_answere.id = Apr_Answer.idauthor_answere\n" +
            "                    left join SS_Module SS_ModuleA on SS_ModuleA.id = apr_Answer.module\n" +
            "                    left join SS_ModuleType SS_ModuleTypeA on SS_ModuleA.type = SS_ModuleTypeA.id\n" +
            "                    left join ( select\n" +
            "                                    aprresult.\"owner\" as aprresultOwner,\n" +
            "                                    string_agg(case when aprresult.time = '0001-01-01 00:00:00.000000' then null else '1' end, '') as aprresultisVisa\n" +
            "                                             from  aprmeetpack_vores_reply aprresult\n" +
            "                                    group by aprresultOwner\n" +
            "                        ) as aprresulttmp on aprresultOwner = av.id\n" +
            "                    join apr_listortempl aprListorTemp on aprList.id = aprListorTemp.id\n" +
            "                    join so_beard sbInit on sbInit.id = aprListorTemp.idauthor\n" +
            "                    join apr_apprlist_options opt on opt.\"owner\" = aprList.id and opt.sendtosh = aprresult.participant\n" +
            "                    join so_beard sb on sb.id = aprresult.participant\n" +
            "left join lateral(with recursive recursive_data as (\n" +
            "select\n" +
            "so_beard.id,\n" +
            "so_beard.orig_shortname,\n" +
            "so_beard.hierparent,\n" +
            "0 as level,\n" +
            "'' as tmp\n" +
            "from so_beard\n" +
            "where so_beard.id = sb.id\n" +
            "union all\n" +
            "select\n" +
            "so_beard.id,\n" +
            "so_beard.orig_shortname,\n" +
            "so_beard.hierparent,\n" +
            "case\n" +
            "    when so_beard.orig_type = 1 then recursive_data.level + 2\n" +
            "    else recursive_data.level + 5\n" +
            "    end as level,\n" +
            "case\n" +
            "    when so_structureunit.id is not null then (case when tmp = '' then so_beard.orig_shortname else so_beard.orig_shortname || '_' || tmp end)\n" +
            "    else ''\n" +
            "    end as tmp\n" +
            "    from recursive_data\n" +
            "        left join so_beard on so_beard.id = recursive_data.hierparent\n" +
            "        left join so_structureunit on so_structureunit.beard = so_beard.id\n" +
            "        left join so_department on so_structureunit.id = so_department.id\n" +
            "        where  level < 10 and so_beard.id is not null\n" +
            ")\n" +
            "select  rd.orig_shortname as v,rd.level,rd.id as id,rd.tmp,rd.hierparent as parent\n" +
            " from recursive_data rd\n" +
            "order by rd.level desc\n" +
            "limit 1\n" +
            " ) partsp on 1 = 1\n" +
            "\n" +
            "left join lateral (select case when sb.orig_type in (4, 2, 0) then aprresult.participantname when partsp.v = '' OR partsp.v is null then coalesce(sb.orig_departmentname, sb.orig_shortname)\n" +
            "                    when partsp.v='АО «Россельхозбанк»' then 'Головной офис' else partsp.v end as v) as sb_dep on 1=1\n" +
            "left join lateral ( select\n" +
            "                    group_last.idx as comb_cur_stage,\n" +
            "                    opt_last.idx as comb_idx,\n" +
            "                    opt_last.sendtooptions as comb_opts\n" +
            "                    from apr_apprlist_options opt_last\n" +
            "                    join apr_listortempl_last group_last on group_last.\"owner\" = aprList.id and opt_last.sendtosh_id = group_last.lastingroup\n" +
            "                    where opt_last.\"owner\" = aprList.id and opt_last.idx >= opt.idx\n" +
            "                    order by group_last.idx\n" +
            "                    limit 1\n" +
            "                    ) as tmpcurstage_comb on aprListorTemp.typevisa = '3'\n" +
            "where rkkbase.isdeleted <> 1 and (case when aprresulttmp.aprresultisVisa is null then aprList.inprocess <> 'Stoped' else 1 = 1 end)\n" +
            "AND ( ({4}) LIKE rkk.type)\n" +
            "AND (sb.hierparent IN ({2}))\n" +
            "and ((aprList.\"begin\")::date  BETWEEN ({0}) AND ({1}))  and  ( SS_ModuleTypeA.alias is null OR SS_ModuleTypeA.alias = 'ApprovingDocs')\n" +
            "\n" +
            ") s\n" +
            "\n" +
            "order by idrkk),\n" +
            "datas_s1 as (\n" +
            "        SELECT idrkk,  idlist\n" +
            "        FROM datas_s0\n" +
            "        order by idrkk)\n" +
            "select*from datas_s0 order by datas_s0.idrkk";

    @Override
    public JRDataSource getJRDataSource(Connection connection, Map<String, Object> params) throws Exception {
        final Date periodStart = (Date) params.get(DIALOG_PERIOD_START);
        final Date periodEnd = (Date) params.get(DIALOG_PERIOD_END);
        final Id sp = (Id) params.get(DIALOG_SP);
        final Id go = (Id) params.get(DIALOG_GO);
        final String documentType = (String) params.get(DIALOG_TYPE);
        final List<Value<?>> filter = new ArrayList<>();
        filter.add(new DateTimeValue(periodStart));
        filter.add(new DateTimeValue(periodEnd));
        filter.add(new ReferenceValue(sp));
        if (go != null) {
            filter.add(new ReferenceValue(go));
        }
        filter.add(new StringValue(documentType));
        log.error("filter: {}", filter);
        final List<ReportRow> result = new ArrayList<>(queryBase(filter));

        return new JRBeanCollectionDataSource(result);
    }

    private List<ReportRow> queryBase(final List<Value<?>> filter) {
        final List<ReportRow> result = new ArrayList<>();
        final boolean sessionAlreadyOpen = AFSession.isDefinedOrOpened();
        if (!sessionAlreadyOpen) {
            AFSession.Manual.defineLocalUser();
        }
        IdentifiableObjectCollection collection = collectionService.findCollectionByQuery(QUERY_BASE, filter);
        int allnoVisa = 0;
        int allyesVisa = 0;
        int allinterm = 0;
        int yesinterm = 0;
        int specinterm = 0;
        int nointerm = 0;
        int allex = 0;
        int yesex = 0;
        int specex = 0;
        int noex = 0;
        for (IdentifiableObject o : collection) {
            String unidAndStage = o.getString("unidVisa");
            String depparty = o.getString(DEPPARTY);
            String answer = o.getString("answer");
            String rkktype = o.getString(RKKTYPE);
            String subject = o.getString(SUBJECT);
            String lifecycle = o.getString(LIFECYCLE);
            Object idrkk = o.getReference(IDRKK);
            String id = "";
            Id idanswer = o.getReference("id");
            log.error("o.classQ: {}", o.getClass());
            log.error("oQR: {}", o);
            if (isBeginStage(unidAndStage)) {
                id += ((RdbmsId) idanswer).getId();
                AFDate dateVisa = null;
                if ("".equals(answer)) {
                    allnoVisa++;
                } else {
                    allyesVisa++;
                }

                TimelessDate timevisa = o.getTimelessDate("timevisa");
                if (timevisa != null) {
                    dateVisa = AFDate.fromJavaDate(timevisa.toDate(), false);
                }

                AFDate dueDate = getDueDateForStage(unidAndStage);
                if (dateVisa != null && dueDate != null && dateVisa.compareTo(dueDate) <= 0) {
                    allinterm++;
                    if ("1".equals(answer)) {
                        yesinterm++;
                    } else if ("2".equals(answer)) {
                        nointerm++;
                    } else if ("3".equals(answer)) {
                        specinterm++;
                    }
                } else if (dateVisa != null && dueDate != null && dateVisa.compareTo(dueDate) > 0) {
                    allex++;
                    if ("1".equals(answer)) {
                        yesex++;
                    } else if ("2".equals(answer)) {
                        noex++;
                    } else if ("3".equals(answer)) {
                        specex++;
                    }
                }

            }
            ReportRow reportRow = new ReportRow();
            reportRow.setDepparty(depparty);
            reportRow.setAllnoVisa(Integer.toString(allnoVisa));
            reportRow.setAllyesVisa(Integer.toString(allyesVisa));
            reportRow.setAllinterm(Integer.toString(allinterm));
            reportRow.setYesinterm(Integer.toString(yesinterm));
            reportRow.setSpecinterm(Integer.toString(specinterm));
            reportRow.setNointerm(Integer.toString(nointerm));
            reportRow.setAllex(Integer.toString(allex));
            reportRow.setYesex(Integer.toString(yesex));
            reportRow.setSpecex(Integer.toString(specex));
            reportRow.setNoex(Integer.toString(noex));
            reportRow.setIdrkk(idrkk);
            reportRow.setLifecycle(lifecycle);
            reportRow.setSubject(subject);
            reportRow.setRkktype(rkktype);
            reportRow.setId(id);
            log.error("RR:{}", reportRow.getDepparty());
            log.error("RR:{}", reportRow.getAllnoVisa());
            log.error("RR:{}", reportRow.getAllnoVisa());
            log.error("RR:{}", reportRow.getAllinterm());
            log.error("RR:{}", reportRow.getYesinterm());
            log.error("RR:{}", reportRow.getSpecinterm());
            log.error("RR:{}", reportRow.getNointerm());
            log.error("RR:{}", reportRow.getAllex());
            log.error("RR:{}", reportRow.getYesex());
            log.error("RR:{}", reportRow.getSpecex());
            log.error("RR:{}", reportRow.getNoex());
            log.error("RR:{}", reportRow.getIdrkk());
            log.error("RR:{}", reportRow.getLifecycle());
            log.error("RR:{}", reportRow.getSubject());
            log.error("RR:{}", reportRow.getId());

            result.add(reportRow);


        }
        if (!sessionAlreadyOpen) {
            close();
        }
        return result;
    }

    private static class ReportRow {
        private Object idrkk;
        private String id;
        private String rkktype;
        private String subject;
        private String lifecycle;
        private String depparty;
        private String allnoVisa;
        private String allyesVisa;
        private String allinterm;
        private String yesinterm;
        private String specinterm;
        private String nointerm;
        private String allex;
        private String yesex;
        private String specex;
        private String noex;

        public Object getIdrkk() {
            return idrkk;
        }

        public void setIdrkk(Object idrkk) {
            this.idrkk = idrkk;
        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getRkktype() {
            return rkktype;
        }

        public void setRkktype(String rkktype) {
            this.rkktype = rkktype;
        }

        public String getSubject() {
            return subject;
        }

        public void setSubject(String subject) {
            this.subject = subject;
        }

        public String getLifecycle() {
            return lifecycle;
        }

        public void setLifecycle(String lifecycle) {
            this.lifecycle = lifecycle;
        }

        public String getDepparty() {
            return depparty;
        }

        public void setDepparty(String depparty) {
            this.depparty = depparty;
        }

        public String getAllnoVisa() {
            return allnoVisa;
        }

        public void setAllnoVisa(String allnoVisa) {
            this.allnoVisa = allnoVisa;
        }

        public String getAllyesVisa() {
            return allyesVisa;
        }

        public void setAllyesVisa(String allyesVisa) {
            this.allyesVisa = allyesVisa;
        }

        public String getAllinterm() {
            return allinterm;
        }

        public void setAllinterm(String allinterm) {
            this.allinterm = allinterm;
        }

        public String getYesinterm() {
            return yesinterm;
        }

        public void setYesinterm(String yesinterm) {
            this.yesinterm = yesinterm;
        }

        public String getSpecinterm() {
            return specinterm;
        }

        public void setSpecinterm(String specinterm) {
            this.specinterm = specinterm;
        }

        public String getNointerm() {
            return nointerm;
        }

        public void setNointerm(String nointerm) {
            this.nointerm = nointerm;
        }

        public String getAllex() {
            return allex;
        }

        public void setAllex(String allex) {
            this.allex = allex;
        }

        public String getYesex() {
            return yesex;
        }

        public void setYesex(String yesex) {
            this.yesex = yesex;
        }

        public String getSpecex() {
            return specex;
        }

        public void setSpecex(String specex) {
            this.specex = specex;
        }

        public String getNoex() {
            return noex;
        }

        public void setNoex(String noex) {
            this.noex = noex;
        }
    }

    private ListValue createIdListValue(final List<Id> ids) {
        final List<ReferenceValue> values = ids.stream().map(ReferenceValue::new).collect(Collectors.toList());

        return ListValue.createListValue(values);
    }

    private ListValue createStringListValue(final List<String> values) {
        final List<StringValue> refvalues = values.stream()
                .map(StringValue::new)
                .collect(Collectors.toList());

        return ListValue.createListValue(refvalues);
    }


    private Id idFromKey(String key) {
        if (key == null) {
            return null;
        }

        final String[] keyPare = key.split("_");
        if (keyPare.length != 2) {
            return null;
        }

        final int typeId = parseInt(keyPare[1]);
        final long id = parseLong(keyPare[0]);

        return new RdbmsId(typeId, id);
    }


    public Boolean isBeginStage(String unidAndStage) {
        Boolean isBeginStage = true;

        AFDate startDate = null;
        AFDate currDate = new AFDate(Calendar.getInstance());

        SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");

        String startDateStr = getStartDateForStage(unidAndStage);

        try {
            startDate = AFDate.fromJavaDateSafeTZ(formatter.parse(startDateStr), false);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }

        if (startDate.toJavaDate().after(currDate.toJavaDate())) {
            isBeginStage = false;
        }

        return isBeginStage;
    }

    public AFDate getDueDateForStage(String unidAndStage) {
        AFDate dueTime = null;
        String unid = unidAndStage.split("%")[0];
        Integer stage = Integer.parseInt(unidAndStage.split("%")[1]);
        ARApplicationApproving arApplication = AFSession.get().getApplication(ARApplicationApproving.class);
        ARListApproving arList = arApplication.getEntityByUNID(unid);
        if (ARStagesApproving.ProcessType.PARALLEL.equals(arList.stages().getProcessType())) {
            dueTime = arList.getGlobalDueDate();
        } else {
            dueTime = arList.stages().get(stage).getFinishTime().toAFDate();
        }
        return dueTime;
    }


    public String getStartDateForStage(String unidAndStage) {
        String startTimeStr = "";
        String unid = unidAndStage.split("%")[0];
        Integer stage = Integer.parseInt(unidAndStage.split("%")[1]);
        ARApplicationApproving arApplication = AFSession.get().getApplication(ARApplicationApproving.class);
        ARListApproving arList = arApplication.getEntityByUNID(unid);
        if (ARStagesApproving.ProcessType.PARALLEL.equals(arList.stages().getProcessType())) {
            startTimeStr = arList.getStartTime().toAFDate().toString();
        } else {
            startTimeStr = arList.stages().get(stage).getStartTime().toAFDate().toString();
        }
        return startTimeStr;
    }

}

Log

Caused by: java.lang.NoSuchMethodException: Property 'idrkk' has no getter method in class 'class DataSetApprovalOfBankDocMPNew$ReportRow' at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1275) at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:809) at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:885) at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:464) at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:185)


Ответы (1 шт):

Автор решения: Nowhere Man

Скорее всего, проблема с ограниченным доступом к самому классу ReportRow, который объявлен как private static.

Он должен иметь публичный доступ, чтобы не падал доступ по рефлексии:

public class DataSetApprovalOfBankDocMPNew implements ReportDS {
    // ...

    public static class ReportRow {
        // ...
    }
}

Аналогичный вопрос на основном SO: Java PropertyUtils.getProperty throws no getter method in class

→ Ссылка