Commit bbeb4b74 by zhengyoujia

Merge branch 'refactor' into 'master'

Refactor

See merge request !6
parents b25287db cd158fc6
......@@ -27,10 +27,7 @@
"xml2js": "^0.4.23"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "tsc",
"start": "node out/main.js",
"dev": "npx ts-node src/server.ts"
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "cjj",
"license": "ISC",
......
import router from './routes';
const express = require('express')
const app = express();
app.use(express.json());
app.use('/api', router);
export default app;
\ No newline at end of file
/**寿州古城智慧调度事件态势感知 */
import { DataExtractor } from "../util/dataExtractor";
/**
* 主界面
......@@ -7,14 +7,24 @@
* @param res
*/
export function getData(req, res) {
let ret:any = {};
// TODO: 和前端讨论具体数据需求
/**填充数据格式处理 */
const dataExtractor = DataExtractor.getInstance();
const ret = dataExtractor.getData(req.query.fileName, req.query.sheetName);
res.send(ret);
}
export function test(req, res) {
const ret = "Success!";
res.send(ret);
}
......
/**解析表格数据 */
import { Request, Response } from 'express';
import { getData } from './excelDataService'
import { DataExtractor } from './util/dataExtractor';
export const test = async (req: Request, res: Response) => {
res.status(200).send("Success!");
};
export const getDataFromSheet = async (req: Request, res: Response) => {
const { file, sheet } = req.params;
try {
const decodedFile = decodeURIComponent(file);
const decodedSheet = decodeURIComponent(sheet);
const data = await getData(decodedFile, decodedSheet);
res.json(data);
} catch (error) {
res.status(500).send("error getting data");
}
};
import { DataExtractor } from './util/dataExtractor'
export const getData = async (fileName: string, sheetName: string) => {
console.log("Getting data from " + fileName + " " + sheetName);
const extractor = DataExtractor.getInstance();
const data = await extractor.getData(fileName, sheetName);
return data;
}
\ No newline at end of file
import { httpServer } from "./net/http_server";
import { initConfig, systemConfig } from "./config/serverConfig";
import { DataExtractor } from "./util/dataExtractor";
let fs = require('fs');
async function lanuch() {
/**初始化xml文件配置 */
await initConfig();
const de = DataExtractor.getInstance();
httpServer.createServer( systemConfig.port );
console.log('This indicates that the server is started successfully.');
......
export function httpErrorHandler(err, req, res, next) {
console.log("in httpErrorHandler");
console.log(err);
//todo 自定义错误编码
//TODO 自定义错误编码
if (err) {
if (err.message == "您的登录已失效" ) {
res.success({success:false, msg:err.message, code:501});
if (err.message == "Excel文件不存在") {
res.success({success: false, msg: err.message, code: 501});
next();
}
else if (err.message == "您的账户没有访问权限") {
res.success({success:false, msg:"非常抱歉,您没有权限,请联系工作人员!", code:502});
next();
} else if ( err.message == "token已过期") {
res.success({success:false, msg:"token失效", code:503});
else if (err.message == "表格不存在") {
res.success({success: false, msg: err.message, code: 502});
next();
}
else {
res.success({success:false, msg:err.message, code:500});
else {
res.success({success:false, msg: err.message, code: 500});
next();
}
}
......
......@@ -8,6 +8,7 @@ import * as szgcBiz from '../biz/getData';
export function setRouter(httpServer){
httpServer.get('/getdata', asyncHandler(szgcBiz.getData));
httpServer.get('/test', szgcBiz.test);
}
import { Router } from 'express';
import { test, getDataFromSheet } from "./excelDataController";
const router = Router();
router.get("/data/test", test);
router.get("/data/:file/:sheet", getDataFromSheet)
export default router;
import app from './app';
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
......@@ -18,9 +18,9 @@ export class DataExtractor {
}
private loadAllData(): void {
const dirPath = join(__dirname, '../../data');
const dirPath = join(__dirname, '../../src/data');
const files = readdirSync(dirPath).filter(file => file.endsWith('.xlsx'));
console.log("Files in data directory: ", files);
console.log(dirPath);
files.forEach(file => {
const filePath = join(dirPath, file);
......@@ -42,13 +42,13 @@ export class DataExtractor {
}
public getData(fileName: string, sheetName: string): any {
const fileData = this.data[fileName + '.xlsx'];
const fileData = this.data[fileName];
if (!fileData) {
throw new Error(`File ${fileName} not found`);
throw new Error(`Excel文件不存在`);
}
const sheetData = fileData[sheetName];
if (!sheetData) {
throw new Error(`Sheet ${sheetName} not found in file ${fileName}`);
throw new Error(`表格不存在`);
}
return sheetData;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment