You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
2.9 KiB

'use strict';
const request = require('superagent');
const fs = require('fs');
const path = require('path')
const moment = require('moment');
async function reportList(ctx, next) {
try {
const models = ctx.fs.dc.models
const { limit, page, name } = ctx.query
let options = {
where: {
},
}
if (limit) {
options.limit = Number(limit)
}
if (page && limit) {
options.offset = Number(page) * Number(limit)
}
if (name) {
options.where.name = { $like: `%${name}%` }
}
const res = await models.ReportConfiguration.findAndCountAll(options)
ctx.status = 200
ctx.body = res
}catch(error){
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
"message": "获取报表列表失败"
}
}
}
async function postReport (ctx) {
try {
const { models } = ctx.fs.dc;
const data = ctx.request.body
if (data.id) {
await models.ReportConfiguration.update(data, {
where: {
id: data.id
}
})
} else {
await models.ReportConfiguration.create(data)
}
ctx.status = 204;
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
message: typeof error == 'string' ? error : undefined
}
}
}
async function delReport (ctx) {
try {
const { models } = ctx.fs.dc;
const { id } = ctx.params
await models.ReportConfiguration.destroy({
where: {
id: id
}
})
ctx.status = 204;
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
message: typeof error == 'string' ? error : undefined
}
}
}
async function postGenerateReport (ctx) {
try {
const { models } = ctx.fs.dc;
const data = ctx.request.body
let res = await ctx.app.fs.reportGenerate.post('creatReport', {
data: data
})
if (res.includes('xjGLReport')) {
await models.ReportInfo.create({
excelPath: res,
reportTm: moment().format('YYYY-MM-DD HH:mm:ss'),
structure:data.structIds,
inspectTm:moment().format('YYYY-MM-DD HH:mm:ss')
})
ctx.status = 200;
ctx.body = res
} else {
throw '生成报表失败'
}
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
message: typeof error == 'string' ? error : undefined
}
}
}
module.exports = {
reportList,
postReport,
delReport,
postGenerateReport
}