????

Your IP : 3.149.7.172


Current Path : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/controllers/baocao/
Upload File :
Current File : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/controllers/baocao/PDFController.js

// var reportCtrl = require('./ReportController').create();
var fs = require('fs');
var path = require('path');
var moment = require('moment');
var PDFMake = require('pdfmake');
const { exportPath } = require('../../appconfig');

module.exports.reportFond = function (recordset) {
  var tableHeader = [
    { text: 'Số phông', style: 'tableHeader' },
    { text: 'Tên phông', style: 'tableHeader' },
    { text: 'Số hồ sơ', style: 'tableHeader' },
    { text: 'Số văn bản', style: 'tableHeader' },
    { text: 'Số trang', style: 'tableHeader' }
  ];
  var tableBody = [tableHeader];
  for (var i = 0; i < recordset.length; i++) {
    var record = [];
    record.push(recordset[i]['FondNumber']);
    record.push(recordset[i]['FondName']);
    record.push(recordset[i]['tongSoHS'].toLocaleString('vi-VN'));
    record.push(recordset[i]['tongSoVB'].toLocaleString('vi-VN'));
    record.push(recordset[i]['tongSoTrang'].toLocaleString('vi-VN'));
    tableBody.push(record);
  }
  var pdfContent = [
    { text: 'Báo cáo phông', style: 'header' },
    {
      table: {
        widths: [50, '*', 50, 50, 60],
        body: tableBody
      },
      layout: {
        fillColor: function (rowIndex, _node, _columnIndex) {
          return (rowIndex % 2 === 0) ? '#CCCCCC' : null;
        }
      }
    }
  ];
  return createPDF('ReportFond', pdfContent);
}

module.exports.reportFile = function (recordset) {
  // var recordset = await reportCtrl.reportFiles(reqBody);
  var tableHeader = [
    { text: 'STT', style: 'tableHeader' },
    { text: 'Phông', style: 'tableHeader' },
    { text: 'Mục lục', style: 'tableHeader' },
    { text: 'Hộp', style: 'tableHeader' },
    { text: 'Hồ sơ', style: 'tableHeader' },
    { text: 'Tiêu đề', style: 'tableHeader' },
    { text: 'Thời gian tài liệu', style: 'tableHeader' },
    { text: 'Thời hạn', style: 'tableHeader' },
    { text: 'Số trang', style: 'tableHeader' },
    { text: 'Số tờ', style: 'tableHeader' },
    { text: 'Ghi chú', style: 'tableHeader' },
    { text: 'Cán bộ số hóa', style: 'tableHeader' }
  ]
  var tableBody = [tableHeader];
  for (var i = 0; i < recordset.length; i++) {
    var record = [];
    record.push(recordset[i].RowNum);
    record.push(recordset[i].FondName);
    record.push(recordset[i].FileCatalog);
    record.push(recordset[i].BoxNumber);
    record.push(recordset[i].FileNumber);
    record.push(recordset[i].Title);
    var date = [];
    if (moment(recordset[i].StartDate).isValid()) date.push(moment(recordset[i].StartDate).format('DD/MM/YYYY'));
    if (moment(recordset[i].EndDate).isValid()) date.push(moment(recordset[i].EndDate).format('DD/MM/YYYY'));
    record.push(date.join('\n'));
    record.push(recordset[i].Maintenance ? `${recordset[i].Maintenance} năm` : 'Vĩnh viễn');
    record.push(recordset[i].PageNumber || 0);
    record.push(recordset[i].SheetNumber || 0);
    record.push(recordset[i].Description || null);
    record.push(recordset[i].EditedBy);
    tableBody.push(record);
  }
  var pdfContent = [
    { text: 'Báo cáo văn bản', style: 'header' },
    {
      table: {
        widths: [30, '*', 25, 25, 30, 'auto', 70, 35, 25, 25, '*', 50],
        body: tableBody
      },
      layout: {
        fillColor: function (rowIndex, _node, _columnIndex) {
          return (rowIndex % 2 === 0) ? '#e8e8e8' : null;
        }
      }
    }
  ];
  return createPDF('ReportFile', pdfContent);
}

module.exports.reportDoc = function (recordset) {
  // var recordset = await reportCtrl.reportDocuments(reqBody);
  var tableHeader = [
    { text: 'STT', style: 'tableHeader' },
    { text: 'Phông', style: 'tableHeader' },
    { text: 'Mục lục', style: 'tableHeader' },
    { text: 'Hộp', style: 'tableHeader' },
    { text: 'Hồ sơ', style: 'tableHeader' },
    { text: 'Số, ký hiệu', style: 'tableHeader' },
    { text: 'Ngày ban hành', style: 'tableHeader' },
    { text: 'Cơ quan ban hành', style: 'tableHeader' },
    { text: 'Trích yếu', style: 'tableHeader' },
    { text: 'Số trang', style: 'tableHeader' },
    { text: 'Ghi chú', style: 'tableHeader' },
    { text: 'Cán bộ số hóa', style: 'tableHeader' }
  ]
  var tableBody = [tableHeader];
  for (var i = 0; i < recordset.length; i++) {
    var record = [];
    record.push(recordset[i].RowNum);
    record.push(recordset[i].FondName);
    record.push(recordset[i].FileCatalog);
    record.push(recordset[i].BoxNumber);
    record.push(recordset[i].FileNumber);
    var code = [];
    if (recordset[i].CodeNumber) code.push(recordset[i].CodeNumber);
    if (recordset[i].CodeNotation) code.push(recordset[i].CodeNotation);
    record.push(code.join('/'));
    record.push(moment(recordset[i].IssuedDate).isValid() ? moment(recordset[i].IssuedDate).format('DD/MM/YYYY') : '');
    record.push(recordset[i].OrganName || '')
    record.push(recordset[i].Subject);
    record.push(recordset[i].PageAmount);
    record.push(recordset[i].Description);
    record.push(recordset[i].CreatedBy);
    tableBody.push(record);
  }
  var pdfContent = [
    { text: 'Báo cáo văn bản', style: 'header' },
    {
      table: {
        widths: [30, '*', 20, 20, 30, 50, 70, 50, 'auto', 20, '*', 50],
        body: tableBody
      },
      layout: {
        fillColor: function (rowIndex, _node, _columnIndex) {
          return (rowIndex % 2 === 0) ? '#CCCCCC' : null;
        }
      }
    }
  ];
  return createPDF('ReportDoc', pdfContent);
}
// Hàm tạo file PDF
function createPDF(filename, pdfContent) {
  var fonts = {
    'Roboto': {
      normal: path.join(exportPath, 'fonts', 'Roboto', 'Roboto-Regular.ttf'),
      bold: path.join(exportPath, 'fonts', 'Roboto', 'Roboto-Bold.ttf'),
      italics: path.join(exportPath, 'fonts', 'Roboto', 'Roboto-Italic.ttf'),
      bolditalics: path.join(exportPath, 'fonts', 'Roboto', 'Roboto-BoldItalic.ttf')
    },
    'Times New Roman': {
      normal: path.join(exportPath, 'fonts', 'Times New Roman', 'times.ttf'),
      bold: path.join(exportPath, 'fonts', 'Times New Roman', 'timesbd.ttf'),
      italics: path.join(exportPath, 'fonts', 'Times New Roman', 'timesi.ttf'),
      bolditalics: path.join(exportPath, 'fonts', 'Times New Roman', 'timesbi.ttf')
    }
  }
  var pdfPrinter = new PDFMake(fonts);
  var styles = {
    'header': {
      fontSize: 26,
      alignment: 'center',
      bold: true,
      margin: [0, 0, 0, 20]
    },
    'tableHeader': {
      fontSize: 14,
      alignment: 'center',
      bold: true,
      fillColor: '#cce0ff',
      color: '#000000'
    }
  }
  var docDef = {
    pageSize: 'A4',
    pageOrientation: 'landscape',
    content: pdfContent,
    styles: styles,
    defaultStyle: {
      font: 'Times New Roman',
      fontSize: 14
    }
  };
  return new Promise(function(resolve, reject) {
    var pdfDoc = pdfPrinter.createPdfKitDocument(docDef);
    var fileName = `${filename}_${moment().format('YYYYMMDD-hhmmss')}.pdf`;
    pdfDoc.pipe(fs.createWriteStream(path.join(exportPath, fileName)))
      .on('finish', function () { resolve(fileName) })
      .on('error', function (err) { reject(err) });
    pdfDoc.end();
  })
}