????

Your IP : 3.17.145.236


Current Path : C:/inetpub/vhost/binhdinhinvest.gdtvietnam.com/api/dist/xtdt/service/
Upload File :
Current File : C:/inetpub/vhost/binhdinhinvest.gdtvietnam.com/api/dist/xtdt/service/export.service.js

"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
    return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExportService = void 0;
const common_1 = require("@nestjs/common");
const typeorm_1 = require("@nestjs/typeorm");
const typeorm_2 = require("typeorm");
const excel4node_1 = require("excel4node");
const entity_1 = require("../entity");
const entity_2 = require("../../category/entity");
let ExportService = class ExportService {
    constructor(entity) {
        this.entity = entity;
    }
    async exportDiemDauTu(tinhTrang, loai) {
        const query = this.entity.getRepository(entity_1.DiemDauTu)
            .createQueryBuilder("diem")
            .select(entity_1.DDT_COLS).addSelect('qh.TenQuanHuyen', 'maQuanHuyen')
            .leftJoin(entity_2.QuanHuyen, 'qh', 'qh.MaQuanHuyen = diem.MaQuanHuyen');
        tinhTrang && query.where('diem.TinhTrang = :tinhTrang', { tinhTrang });
        loai && query.andWhere('diem.LoaiHinhDauTu = :loai', { loai });
        query.orderBy('diem.OBJECTID', 'ASC');
        const meta = this.entity.getRepository(entity_1.DiemDauTu).metadata.columns
            .filter(f => f.propertyName === 'maQuanHuyen' || entity_1.DDT_COLS.indexOf(f.propertyName) > -1);
        const data = await query.getRawMany();
        return await this.buildReport(meta, data);
    }
    async exportRanhGioiKhu(loaiKhu) {
        const data = await this.entity.getRepository(entity_1.RanhGioiKhu)
            .createQueryBuilder('khu')
            .select(entity_1.RGK_COLS).addSelect('qh.TenQuanHuyen', 'maQuanHuyen')
            .leftJoin(entity_2.QuanHuyen, 'qh', 'qh.MaQuanHuyen = khu.MaQuanHuyen')
            .where('khu.LoaiKhu = :loaiKhu', { loaiKhu })
            .orderBy('khu.OBJECTID', 'ASC')
            .getRawMany();
        const meta = this.entity.getRepository(entity_1.RanhGioiKhu).metadata.columns
            .filter(f => f.propertyName === 'maQuanHuyen' || entity_1.RGK_COLS.indexOf(f.propertyName) > -1);
        return await this.buildReport(meta, data);
    }
    async exportDoanhNghiep(loaiDn) {
        const query = this.entity.getRepository(entity_1.DoanhNghiep)
            .createQueryBuilder('dn')
            .innerJoinAndSelect("dn.dnThongTinThues", "dntt")
            .leftJoinAndSelect("dn.quocGia", "qg")
            .addSelect("dn.quocGiaId", "quocGia.tenQuocGia");
        loaiDn && query.where('dn.LoaiDoanhNghiep=:loaiDn', { loaiDn });
        const a = await query.getMany();
        const meta = this.entity.getRepository(entity_1.DNThongTinThue).metadata.columns
            .filter(f => entity_1.DN_COLS.indexOf(f.propertyName) > -1);
        return await this.buildReportDn(meta, a);
    }
    buildReport(columns, data) {
        const wb = new excel4node_1.Workbook({
            jszip: {
                compression: 'DEFLATE'
            },
            defaultFont: {
                size: 12,
                name: 'Times New Roman',
                color: '000000'
            },
            dateFormat: 'd/m/yyyy'
        });
        const ws = wb.addWorksheet("BAO CAO", {
            sheetView: {
                pane: {
                    activePane: 'bottomRight',
                    state: 'frozenSplit',
                    topLeftCell: 'A2',
                    ySplit: 1
                }
            }
        });
        ws.cell(1, 1).style(entity_1.HEADER_STYLES).string('STT');
        for (let c = 0; c < columns.length; c++) {
            const col = columns[c];
            ws.cell(1, c + 2).style(entity_1.HEADER_STYLES).string(col.comment);
            for (let r = 0; r < data.length; r++) {
                if (c === 0)
                    ws.cell(r + 2, 1).style(entity_1.CELL_STYLES).number(r + 1);
                const cell = ws.cell(r + 2, c + 2).style(entity_1.CELL_STYLES);
                const value = data[r][col.propertyName];
                if (!value)
                    continue;
                else if (value instanceof Date)
                    cell.date(value);
                else if (typeof value === "number")
                    cell.number(value);
                else
                    cell.string(value);
            }
        }
        ws.column(1).setWidth(5);
        for (let c = 0; c < columns.length; c++) {
            if (columns[c].length)
                ws.column(c + 2).setWidth(Math.min(30, +columns[c].length));
        }
        return wb.writeToBuffer();
    }
    buildReportDn(columns, data) {
        const wb = new excel4node_1.Workbook({
            jszip: {
                compression: 'DEFLATE'
            },
            defaultFont: {
                size: 12,
                name: 'Times New Roman',
                color: '000000'
            },
            dateFormat: 'd/m/yyyy'
        });
        const ws = wb.addWorksheet("BAO CAO", {
            sheetView: {
                pane: {
                    activePane: 'bottomRight',
                    state: 'frozenSplit',
                    topLeftCell: 'A2',
                    ySplit: 1
                }
            }
        });
        ws.cell(1, 1).style(entity_1.HEADER_STYLES).string('STT');
        let i = 2;
        for (let c = 0; c < columns.length; c++) {
            const col = columns[c];
            ws.cell(1, c + 2).style(entity_1.HEADER_STYLES).string(col.comment);
        }
        for (let r = 0; r < data.length; r++) {
            const dnThongTinThues = data[r]['dnThongTinThues'];
            ws.cell(i, 1, i + dnThongTinThues.length, 1, true).style(entity_1.CELL_STYLES).number(r + 1);
            ws.cell(i, 2, i, columns.length + 1, true).style(Object.assign(Object.assign({}, entity_1.CELL_STYLES), { font: { bold: true } })).string(`${data[r].maDoanhNghiep} - ${data[r].tenDoanhNghiep}`);
            i++;
            for (let t = 0; t < dnThongTinThues.length; t++) {
                for (let c = 0; c < columns.length; c++) {
                    const cell = ws.cell(i, c + 2).style(entity_1.CELL_STYLES);
                    const col = columns[c];
                    ws.cell(1, c + 2).style(entity_1.HEADER_STYLES).string(col.comment);
                    const value = dnThongTinThues[t][col.propertyName];
                    if (!value)
                        continue;
                    else if (value instanceof Date)
                        cell.date(value);
                    else if (typeof value === "number")
                        cell.number(value);
                    else
                        cell.string(value);
                }
                i++;
            }
        }
        ws.column(1).setWidth(5);
        for (let c = 0; c < columns.length; c++) {
            if (columns[c].length)
                ws.column(c + 2).setWidth(Math.min(30, +columns[c].length));
        }
        return wb.writeToBuffer();
    }
};
ExportService = __decorate([
    (0, common_1.Injectable)(),
    __param(0, (0, typeorm_1.InjectEntityManager)()),
    __metadata("design:paramtypes", [typeorm_2.EntityManager])
], ExportService);
exports.ExportService = ExportService;