Project 'vue-project/liangXing/frontEnd' was moved to 'vue-project/ZhangJian/ZhangJianFrontEnd'. Please update any links and bookmarks that may still have the old path.
Commit bbeb4b74 by zhengyoujia

Merge branch 'refactor' into 'master'

Refactor

See merge request !6
parents b25287db cd158fc6
...@@ -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,13 +42,13 @@ export class DataExtractor { ...@@ -42,13 +42,13 @@ 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(`Excel文件不存在`);
} }
const sheetData = fileData[sheetName]; const sheetData = fileData[sheetName];
if (!sheetData) { if (!sheetData) {
throw new Error(`Sheet ${sheetName} not found in file ${fileName}`); throw new Error(`表格不存在`);
} }
return sheetData; 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