'use strict'; const fs = require('fs'); const xlsxDownload = require('../../../../utils/xlsxDownload.js'); const moment = require('moment'); const request = require('superagent'); async function dataExport (ctx) { try { const models = ctx.fs.dc.models; const { userId } = ctx.fs.api const { exp, ids, roadLevel, municipalType } = ctx.query; if (!exp) { throw '参数错误'; } const modalList = [ { n: '道路', k: 'road', tableName: 'Road', }, { n: '桥梁', k: 'bridge', tableName: 'Bridge' }, { n: '运政车辆', k: 'vehicle', tableName: 'MunicipalVehicle', }, { n: '运政业户', k: 'business', tableName: 'MunicipalBusiness', }, { n: '工程一览', k: 'project', tableName: 'Project', }, { n: '治超', k: 'overspeed', tableName: 'Overspeed', }, { n: '公交线路', k: 'busLine', tableName: 'BusLine', }, { n: '公交车辆', k: 'busCar', tableName: 'BusCar', }, ] const modalOption = modalList.find(item => item.k == exp); if (!modalOption) { throw '参数错误'; } let findOption = { where: {} } if (ids) { findOption.where.id = { $in: ids.split(',') } } if (roadLevel) { findOption.where.level = roadLevel } if (municipalType) { findOption.where.type = municipalType } const exportData = await models[modalOption.tableName].findAll(findOption) const tableAttributes = models[modalOption.tableName].tableAttributes let header = [] for (let k in tableAttributes) { if (k != 'id' && tableAttributes[k].comment) { header.push({ title: tableAttributes[k].comment || '-', key: k, index: tableAttributes[k].index, }) } } header.sort((a, b) => { return a.index - b.index }) const fileName = `${modalOption.n}_${moment().format('YYYYMMDDHHmmss')}` + '.csv' const filePath = await xlsxDownload.simpleExcelDown({ data: exportData, header, fileName: fileName }) const fileData = fs.readFileSync(filePath); ctx.status = 200; ctx.set('Content-Type', 'application/x-xls'); ctx.set('Content-disposition', 'attachment; filename=' + encodeURI(fileName)); ctx.body = fileData; } catch (error) { ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.status = 400; ctx.body = { message: typeof error == 'string' ? error : undefined } } } async function godTrans (ctx) { try { const models = ctx.fs.dc.models; const { userId } = ctx.fs.api const res = await request.get('https://report.amap.com/ajax/districtRank.do?linksType=1&cityCode=360100') const data = JSON.parse(res.text) const nanchang = data.find(item => item.name == '南昌县') || {} ctx.status = 200 ctx.body = nanchang } catch (error) { ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.status = 400; ctx.body = { message: typeof error == 'string' ? error : undefined } } } module.exports = { dataExport, godTrans };