Commit 848ebb20 by Leo Zheng

重构项目

parent b25287db
...@@ -27,10 +27,7 @@ ...@@ -27,10 +27,7 @@
"xml2js": "^0.4.23" "xml2js": "^0.4.23"
}, },
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1"
"build": "tsc",
"start": "node out/main.js",
"dev": "npx ts-node src/server.ts"
}, },
"author": "cjj", "author": "cjj",
"license": "ISC", "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 @@ ...@@ -7,14 +7,24 @@
* @param res * @param res
*/ */
export function getData(req, 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); 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 { httpServer } from "./net/http_server";
import { initConfig, systemConfig } from "./config/serverConfig"; import { initConfig, systemConfig } from "./config/serverConfig";
import { DataExtractor } from "./util/dataExtractor";
let fs = require('fs'); let fs = require('fs');
async function lanuch() { async function lanuch() {
/**初始化xml文件配置 */ /**初始化xml文件配置 */
await initConfig(); await initConfig();
const de = DataExtractor.getInstance();
httpServer.createServer( systemConfig.port ); httpServer.createServer( systemConfig.port );
console.log('This indicates that the server is started successfully.'); console.log('This indicates that the server is started successfully.');
......
export function httpErrorHandler(err, req, res, next) { export function httpErrorHandler(err, req, res, next) {
console.log("in httpErrorHandler"); console.log("in httpErrorHandler");
console.log(err); console.log(err);
//todo 自定义错误编码 //TODO 自定义错误编码
if (err) { if (err) {
if (err.message == "您的登录已失效" ) { if (err.message == "Excel文件不存在") {
res.success({success:false, msg:err.message, code:501}); res.success({success: false, msg: err.message, code: 501});
next(); next();
} }
else if (err.message == "您的账户没有访问权限") { else if (err.message == "表格不存在") {
res.success({success:false, msg:"非常抱歉,您没有权限,请联系工作人员!", code:502}); res.success({success: false, msg: err.message, code: 502});
next();
} else if ( err.message == "token已过期") {
res.success({success:false, msg:"token失效", code:503});
next(); next();
} }
else { else {
res.success({success:false, msg:err.message, code:500}); res.success({success:false, msg: err.message, code: 500});
next(); next();
} }
} }
......
...@@ -8,6 +8,7 @@ import * as szgcBiz from '../biz/getData'; ...@@ -8,6 +8,7 @@ import * as szgcBiz from '../biz/getData';
export function setRouter(httpServer){ export function setRouter(httpServer){
httpServer.get('/getdata', asyncHandler(szgcBiz.getData)); 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 { ...@@ -18,9 +18,9 @@ export class DataExtractor {
} }
private loadAllData(): void { private loadAllData(): void {
const dirPath = join(__dirname, '../../data'); const dirPath = join(__dirname, '../../src/data');
const files = readdirSync(dirPath).filter(file => file.endsWith('.xlsx')); const files = readdirSync(dirPath).filter(file => file.endsWith('.xlsx'));
console.log("Files in data directory: ", files); console.log(dirPath);
files.forEach(file => { files.forEach(file => {
const filePath = join(dirPath, file); const filePath = join(dirPath, file);
...@@ -42,7 +42,7 @@ export class DataExtractor { ...@@ -42,7 +42,7 @@ export class DataExtractor {
} }
public getData(fileName: string, sheetName: string): any { public getData(fileName: string, sheetName: string): any {
const fileData = this.data[fileName + '.xlsx']; const fileData = this.data[fileName];
if (!fileData) { if (!fileData) {
throw new Error(`File ${fileName} not found`); throw new Error(`File ${fileName} not found`);
} }
......
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