Генерация отчета в Node.js с использованием пакета Node-Jasper - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь создать отчет, используя пакет node-jasper в файле node.js.Когда я пишу код без реализации класса, тогда код работает нормально. Следующий код - работоспособный.

jasper = require('node-jasper')({
        path: '../lib/jasperreports-5.6.0',
        reports: {
            hw: {
                jasper: '../jasperFiles/NodeIreportTest.jasper'
            }
        },
        drivers: {
            mysql: {
                path: '../lib/com.mysql.jdbc_5.1.5.jar',
                class: 'com.mysql.jdbc.Driver', //odbc driver//sun.jdbc.odbc.JdbcOdbcDriver //mysqlDriver// com.mysql.jdbc.Driver
                type: 'mysql'
            }
        },
        conns: {
            dbserver1: {
                host: '192.168.1.164',
                port: 3306,
                dbname: 'dbname',
                user: 'user',
                pass: '1234',
                driver: 'mysql'
            }
        },
        defaultConn: 'dbserver1'
    });

Ниже приведен полный объект, найденный при отладке кода.который имеет свойство (hm)это реализация класса того же кода

class ReportModel {
    constructor(strJasperPath, objDataObject, intClientIP) {
        this.strJasperPath = strJasperPath;
        this.objDataObject = objDataObject;
        this.intClientIP = intClientIP;
    }

    makeReport() {

        return new Promise ((resolve, reject) => {
            jasper = require('node-jasper')({
                path: '../lib/jasperreports-5.6.0',
                reports: {
                    hw: {
                        //jasper: '../jasperFiles/NodeIreportTest.jasper'
                        jasper: '../jasperFiles/' + this.strJasperPath + '.jasper' //path to report
                    }
                },
                drivers: {
                    mysql: {
                        path: '../lib/com.mysql.jdbc_5.1.5.jar',
                        class: 'com.mysql.jdbc.Driver', //odbc driver//sun.jdbc.odbc.JdbcOdbcDriver //mysqlDriver// com.mysql.jdbc.Driver
                        type: 'mysql'
                    }
                },
                conns: {
                    dbserver1: {
                        host: '192.168.1.164',
                        port: 3306,
                        dbname: 'dbname',
                        user: 'user',
                        pass: '1234',
                        driver: 'mysql'
                    }
                },
                defaultConn: 'dbserver1'
            });



            var report = {
                report: 'hw',
                data: this.objDataObject
            }
            var pdf = jasper.pdf(report);


            var strReportName = this.strJasperPath + intClientIP + '.pdf'
            var filepath = "./reports/" + strReportName

            var filename = {
                "filepath": serverConfig.reporthost + path.basename(filepath)
            };

            //check if file is present or not 
            fs.access(filepath, fs.constants.F_OK | fs.constants.W_OK, (err) => {
                if (err) {
                    //file is not present 
                    fs.writeFile("./reports/" + strReportName, new Buffer(pdf, 'binary'), (err) => {
                        if (err) {
                            reject(err);
                        }
                        resolve(filename);
                    });
                } else {
                    //file is present then delete it and then create it 
                    fs.unlink(filepath, (err) => {
                        if (err) {
                            reject(err);
                        } else {

                            fs.writeFile("./reports/" + strReportName, new Buffer(pdf, 'binary'), (err) => {
                                if (err) {
                                    console.log('WriteFile', err)
                                }
                            resolve(filename);
                            });
                        }

                    });

                }
            });
        });


    }
}

Ниже приведен объект, не имеющий свойства hm с реализацией класса.

following is the object which is not having hm property

1 Ответ

0 голосов
/ 02 февраля 2019

Шаг 1) Удалите объявление Jasper из тела класса и удалите из него объект hw, как показано ниже: код

jasper = require('node-jasper')({
    path: '../lib/jasperreports-5.6.0',
    reports: {
       // hw removed from this place
    },
    drivers: {
        mysql: {
            path: '../lib/com.mysql.jdbc_5.1.5.jar',
            class: 'com.mysql.jdbc.Driver', //odbc driver//sun.jdbc.odbc.JdbcOdbcDriver //mysqlDriver// com.mysql.jdbc.Driver
            type: 'mysql'
        }
    },
    conns: {
        dbserver1: {
            host: '192.168.1.164',
            port: 3306,
            dbname: 'node_incrency_minpcs',
            user: 'RAHUL',
            pass: '1234',
            driver: 'mysql'
        }
    },
    defaultConn: 'dbserver1'
});

Шаг 2) Добавьте объявление объекта hw в конструктор, как показано ниже

constructor(strReportName) {
        jasper.reports = {
            hw: {
                jasper: '../jasperFiles/' + strReportName+ '.jasper' 
            }
        }
    }

Шаг 3) добавьте другие параметры в тело функции, которое является makeReport функцией как makeReport(strJasperPath, objDataObject, intClientIP)

Надеюсь, это будет работать для вас.

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