Commit 24d87868 by chenjinjing

建设指挥大屏

parent 227a3b87
<config> <config>
<port>40005</port> <port>40006</port>
</config> </config>
\ No newline at end of file
import { getJstj, getTzwcqkTableData } from "../../data/table/constructData"; import { earlywarningDetailTableData, earlywarningTableData, investTableData } from "../../data/table/constructData";
import * as defaultConfig from '../../config/defaultConfig'
export async function getTzwcqk(req, res) { /**
* 投资完成情况
* @param req
* @param res
*/
export async function getInvest(req, res) {
let line = req.query.line || "全部"; let line = req.query.line || "全部";
let year = req.query.year || 2023; let year = req.query.year || 2023;
let tableData = getTzwcqkTableData(); let tableData = investTableData();
// let data = change(["line", "year", "年度计划", "年度完成", "年度计划动迁", "年度完成动迁", "累计计划", "累计完成", "累计计划动迁", "累计完成动迁"], tableData["投资完成情况"].bodyList );
let dataMap = {}; let data = change(["line", "year", "年度累计", "年度投资计划", "年度计划动迁", "年度完成动迁", "总投资额", "建设期累计", "累计计划动迁", "累计完成动迁"], tableData["投资完成情况"].bodyList );
tableData["投资完成情况"].bodyList.forEach(sbuList => {
let name = sbuList[0];
let yearCount = sbuList[2];//年度完成
let yearCountRelocation = sbuList[4];//年度完成动迁
let yearExpected = sbuList[1];//计划投资额
let yearExpectedRelocation = sbuList[3];//年度计划动迁
let yearProportion = yearExpected == 0 ? 0 : Math.ceil((yearCount / yearExpected)*100)/100;
let overCount = sbuList[6];//累计完成
let overCountRelocation = sbuList[8];//年度完成动迁
let overExpected = sbuList[5];//计划投资额
let overExpectedRelocation = sbuList[7];//年度计划动迁
let overProportion = overExpected == 0 ? 0 : Math.ceil((overCount / overExpected)*100 )/100;
dataMap[name] = {
"year":{
count:yearCount,
countRelocation:yearCountRelocation,
expected:yearExpected,
expectedRelocation:yearExpectedRelocation,
proportion:yearProportion
},
"overall":{
count:overCount,
countRelocation:overCountRelocation,
expected:overExpected,
expectedRelocation:overExpectedRelocation,
proportion:overProportion
}
}
});
let ndConf = ["年度累计", "年度投资计划", "年度计划动迁", "年度完成动迁"];
let ztConf = ["总投资额", "建设期累计", "累计计划动迁", "累计完成动迁"];
let result:any = {}; let result:any = {};
let annualAccumulation:any = {};
let overall:any = {};
data.forEach(item => {
let dataLine = item.line;
let dataYear = item.year;
if (!annualAccumulation[dataLine]) annualAccumulation[dataLine] = {};
if (!annualAccumulation["全部"]) annualAccumulation["全部"] = {};
if (!overall[dataLine]) overall[dataLine] = {};
if (!overall["全部"]) overall["全部"] = {};
if (year == dataYear) {
for (let name = 0; name < ndConf.length; name++) {
for (let key in item) {
if (key.search(ndConf[name]) > -1) {
annualAccumulation[dataLine][key] = item[key];
if (!annualAccumulation["全部"][key]) annualAccumulation["全部"][key] = 0;
annualAccumulation["全部"][key] += item[key];
}
}
}
if (line == "全部") { for (let name = 0; name < ztConf.length; name++) {
let data:any = {"year":{}, "overall":{} } for (let key in item) {
for (let key in dataMap) { if (key.search(ztConf[name]) > -1) {
let {year, overall} = dataMap[key]; overall[dataLine][key] = item[key];
for (let subKey in year) {
if (!data["year"][subKey]) data["year"][subKey] = 0; if (!overall["全部"][key]) overall["全部"][key] = 0;
data["year"][subKey] += year[subKey]; overall["全部"][key] += item[key];
} }
for (let subKey in overall) { }
if (!data["overall"][subKey]) data["overall"][subKey] = 0;
data["overall"][subKey] += overall[subKey];
}
}
result["annualAccumulation"] = {
"completionAmount": 0,//年度完成额
"proportion": data["year"].proportion == 0 ? 0 : Math.ceil((data["year"].count / data["year"].expected)* 100 )/100,
"count": Math.ceil(data["year"].count/100),//年度累计投资额
"countRelocation":Math.ceil( data["year"].countRelocation/100),//年度累计动迁
"expected":Math.ceil( data["year"].expected/100),//计划投资额
"expectedRelocation":Math.ceil( data["year"].expectedRelocation/100),//年度计划动迁
};
result["overall"] = {
"completionAmount":0,//累计完成额
"proportion": data["overall"].expected == 0 ? 0 : Math.ceil((data["overall"].count / data["overall"].expected)*100 )/ 100,
"count": Math.ceil(data["overall"].count/100),//年度累计投资额
"countRelocation": Math.ceil(data["overall"].countRelocation/100),//年度累计动迁
"expected": Math.ceil(data["overall"].expected/100),//计划投资额
"expectedRelocation": Math.ceil(data["overall"].expectedRelocation/100),//年度计划动迁
};
console.log();
} else {
let defalut = {
year:{
count:0, countRelocation:0, expected:0, expectedRelocation:0, proportion:0,
},
overall:{
count:0, countRelocation:0, expected:0, expectedRelocation:0, proportion:0,
} }
} }
let data = dataMap[line] || defalut;
result["annualAccumulation"] = { result["annualAccumulation"] = annualAccumulation;
"completionAmount": 0,//年度完成额 result["overall"] = overall;
"proportion": data["year"].proportion,//完成比
"count":Math.ceil( data["year"].count/100),//年度累计投资额
"countRelocation":Math.ceil( data["year"].countRelocation/100),//年度累计动迁
"expected":Math.ceil( data["year"].expected/100),//计划投资额
"expectedRelocation":Math.ceil( data["year"].expectedRelocation/100),//年度计划动迁
};
result["overall"] = {
"completionAmount":0,//累计完成额
"proportion": data["overall"].proportion,//完成比
"count": Math.ceil(data["overall"].count/100),//年度累计投资额
"countRelocation": Math.ceil(data["overall"].countRelocation/100),//年度累计动迁
"expected": Math.ceil(data["overall"].expected/100),//计划投资额
"expectedRelocation": Math.ceil(data["overall"].expectedRelocation/100),//年度计划动迁
};
});
let defalut = {
count:0, countRelocation:0, expected:0, expectedRelocation:0, proportion:0
} }
let annualAccumulationData = annualAccumulation[line] || defalut;
let overallData = overall[line] || defalut;
result["annualAccumulation"] = {
"proportion": annualAccumulationData["年度累计"] == 0 ? 0 : Math.ceil((annualAccumulationData["年度投资计划"] / annualAccumulationData["年度累计"])* 100 )/100 || 0,//年度完成比
"count": Math.ceil(annualAccumulationData["年度累计"]/10000) || 0,//年度累计投资额
"countRelocation":Math.ceil( annualAccumulationData["年度完成动迁"]/10000) || 0,//年度累计动迁
"expected":Math.ceil( annualAccumulationData["年度投资计划"]/10000) || 0,//计划投资额
"expectedRelocation":Math.ceil( annualAccumulationData["年度计划动迁"]/10000) || 0,//年度计划动迁
};
result["overall"] = {
"proportion": overallData["总投资额"] == 0 ? 0 : Math.ceil((overallData["建设期累计"] / overallData["总投资额"])* 100 )/100 || 0,//年度完成比
"count": Math.ceil(overallData["建设期累计"]/10000) || 0,//年度累计投资额
"countRelocation":Math.ceil( overallData["累计完成动迁"]/10000) || 0,//年度累计动迁 单位:(万元)
"expected":Math.ceil( overallData["总投资额"]/10000) || 0,//计划投资额
"expectedRelocation":Math.ceil( overallData["累计计划动迁"]/10000) || 0,//年度计划动迁
};
res.send(result); res.send(result);
return result;
} }
export async function getHtjeyjzl(req, res) { /**
* 合同金额预警总览
* @param req
* @param res
*/
export async function getEarlywarning(req, res) {
let line = req.query.line || "全部"; let line = req.query.line || "全部";
let excelData = getJstj(); let excelData = earlywarningTableData();
let result:any = {}; let result:any = {};
...@@ -124,10 +108,15 @@ export async function getHtjeyjzl(req, res) { ...@@ -124,10 +108,15 @@ export async function getHtjeyjzl(req, res) {
if (line == "全部") { if (line == "全部") {
let map = {}; let map = {};
for (let key in excelData) { for (let key in excelData) {
let data = change(["总数", "accumulatedContractAmountSigned", "estimatedTotalValue", "totalTargetCost"], excelData[key].bodyList );
let conf = ["accumulatedContractAmountSigned", "estimatedTotalValue", "totalTargetCost"];
let dataList = excelData[key].bodyList[excelData[key].bodyList.length -1]; let dataList = excelData[key].bodyList[excelData[key].bodyList.length -1];
result["base"].accumulatedContractAmountSigned = dataList[1]; result["base"].accumulatedContractAmountSigned = Math.ceil( dataList[1] / 10000 ) || 0;
result["base"].estimatedTotalValue = dataList[2]; result["base"].estimatedTotalValue = Math.ceil( dataList[2] / 10000 ) || 0;
result["base"].totalTargetCost = dataList[3]; result["base"].totalTargetCost = Math.ceil( dataList[3] / 10000 ) || 0;
excelData[key].bodyList.forEach(subList => { excelData[key].bodyList.forEach(subList => {
...@@ -144,103 +133,112 @@ export async function getHtjeyjzl(req, res) { ...@@ -144,103 +133,112 @@ export async function getHtjeyjzl(req, res) {
let item = map[str]; let item = map[str];
result["detailedList"].push({ result["detailedList"].push({
type:str, type:str,
estimated:item.gs,//概算 estimated: Math.ceil( item.gs / 10000 ),//概算
targetCost:item.cb,//目标成本 targetCost: Math.ceil( item.cb / 10000 ),//目标成本
accumulatedContractAmountSigned:item.ht,//累计签合同金额 accumulatedContractAmountSigned: Math.ceil( item.ht / 10000 ),//累计签合同金额
}); });
}); });
} else { } else {
let checkList = excelData[line]? excelData[line].bodyList : [0,0,0,0]; let checkList = excelData[line]? excelData[line].bodyList : defaultConfig.EarlywarningDefault;
let allList = checkList[checkList.length-1]; let allList = checkList[checkList.length-1];
result["base"].accumulatedContractAmountSigned = allList[1]; result["base"].accumulatedContractAmountSigned = Math.ceil( allList[1] / 10000 ) || 0;
result["base"].estimatedTotalValue = allList[2]; result["base"].estimatedTotalValue = Math.ceil( allList[2] / 10000 ) || 0;
result["base"].totalTargetCost = allList[3]; result["base"].totalTargetCost = Math.ceil( allList[3] / 10000 ) || 0;
let map = {}; let map = {};
checkList.forEach(subList => { checkList.forEach(subList => {
let title = subList[0]; let title = subList[0];
if (title == "总数") return; if (title == "总数") return;
if (!map[title]) map[title] = {ht:0, gs:0, cb:0}; if (!map[title]) map[title] = {ht:0, gs:0, cb:0};
map[title].ht = subList[1]; map[title].ht = subList[1] || 0;
map[title].gs = subList[2]; map[title].gs = subList[2] || 0;
map[title].cb = subList[3]; map[title].cb = subList[3] || 0;
}); });
titleList.forEach(str => { titleList.forEach(str => {
let item = map[str]; let item = map[str];
result["detailedList"].push({ result["detailedList"].push({
type:str, type:str,
estimated:item.gs,//概算 estimated: Math.ceil( item.gs / 10000 ),//概算
targetCost:item.cb,//目标成本 targetCost: Math.ceil( item.cb / 10000 ),//目标成本
accumulatedContractAmountSigned:item.ht,//累计签合同金额 accumulatedContractAmountSigned: Math.ceil( item.ht / 10000 ),//累计签合同金额
}); });
}); });
} }
result["title"] = ["累计签合同值(含变更)", "概算值", "目标成本"]
res.send(result); res.send(result);
} }
/**
* 合同金额预警总览详细浮窗
* @param req
* @param res
*/
export async function getDetailedData(req, res) { export async function getDetailedData(req, res) {
let line = req.query.line || ""; let line = req.query.line || "全部";
let tableData = earlywarningDetailTableData();
let result:any = {}; let result:any = {};
result["data"] = { let detailData = {};
"车站":[ for (let key in tableData) {
{ let gjqjDetailData = change(["line","feeName","accumulatedSignedContractValue", "estimated", "budgetDifference", "targetCost", "targetDifference"], tableData[key].bodyList );
name:"高架区间",//费用名称 let dataMap = getDetailData(gjqjDetailData, line, defaultConfig.EarlywarningDetail);
accumulatedSignedContractValue:15.11,//累计签约合同值
estimated:200,//概算值 let detail = [];
budgetDifference:122,//概算差额 for (let key in dataMap) {
targetCost:1000,//目标成本 dataMap[key]['name'] = key;
detail.push(dataMap[key]);
}, }
{
name:"通道区间",//费用名称 detailData[key] = detail;
accumulatedSignedContractValue:15.11,//累计签约合同值
estimated:200,//概算值
budgetDifference:122,//概算差额
targetCost:1000,//目标成本
},
{
name:"出入场线",//费用名称
accumulatedSignedContractValue:15.11,//累计签约合同值
estimated:200,//概算值
budgetDifference:122,//概算差额
targetCost:1000,//目标成本
}
],
"区间":[
{
name:"高架区间",//费用名称
accumulatedSignedContractValue:15.11,//累计签约合同值
estimated:200,//概算值
budgetDifference:122,//概算差额
targetCost:1000,//目标成本
},
{
name:"高架区间",//费用名称
accumulatedSignedContractValue:15.11,//累计签约合同值
estimated:200,//概算值
budgetDifference:122,//概算差额
targetCost:1000,//目标成本
},
{
name:"高架区间",//费用名称
accumulatedSignedContractValue:15.11,//累计签约合同值
estimated:200,//概算值
budgetDifference:122,//概算差额
targetCost:1000,//目标成本
}
]
} }
result["czxxsj"] = detailData;
res.send(result); res.send(result);
} }
function change(titleList, dataList) {
let data = [];
dataList.forEach(subList => {
let onceData:any = {};
subList.forEach( (item, index)=> {
let key = titleList[index];
onceData[key] = item;
} );
data.push(onceData);
});
return data;
}
function getDetailData(data, line, defaultData) {
let result:any = {};
let dataMap = {"全部":{}};
let strConf = ["accumulatedSignedContractValue", "estimated", "budgetDifference", "targetCost", "targetDifference"];
data.forEach(subList => {
let dataLine = subList.line;
let dataName = subList.feeName;
if (!dataMap[dataLine]) dataMap[dataLine] = {};
dataMap[dataLine][dataName] = {};
if (!dataMap["全部"][dataName]) dataMap["全部"][dataName] = {};
// dataMap[dataLine].push(subList);
strConf.forEach(str => {
if (!dataMap[dataLine][dataName][str]) dataMap[dataLine][dataName][str] = 0;
dataMap[dataLine][dataName][str] += Math.round(subList[str] * 100) / 100;
if (!dataMap["全部"][dataName][str]) dataMap["全部"][dataName][str] = 0;
dataMap["全部"][dataName][str] += Math.round(subList[str] * 100) / 100;
})
})
result = dataMap[line] || defaultData;
return result;
}
\ No newline at end of file
import { gszsTableData, jstjTableData, nfTableData, tkjsTableData } from "../../data/table/constructData"; import { financialestimatesTableData, finalaccountsTableData, investmentcontrolTableData } from "../../data/table/constructData";
import { keyValuePackage, onceYBarChartPackage, stringListPackage } from "../../dataPackage/inFrontOut"; import { keyValuePackage, onceYBarChartPackage } from "../../dataPackage/inFrontOut";
import { getKeyValueOut, getOnceYBarChartOut, getStringOut } from "../../dataPackage/out"; import { getKeyValueOut, getOnceYBarChartOut } from "../../dataPackage/out";
import * as defaultConfig from "../../config/defaultConfig";
/**年份 */ /**
export function getYear(req, res) { * 概算总数
let excelData = nfTableData(); * @param req
* @param res
let ret:any = {}; */
let nfPackageData = stringListPackage(excelData['下拉年份'].dataList);
ret['nf'] = getStringOut('下拉年份', nfPackageData);
res.send(ret);
}
/**概算总数 */
export function getFinancialestimates(req, res) { export function getFinancialestimates(req, res) {
let year = req.query.year || 2023; //年份 let year = req.query.year || 2023; //年份
let excelData = gszsTableData(); let excelData = financialestimatesTableData();
let ret:any = {}; let ret:any = {};
...@@ -36,10 +28,14 @@ export function getFinancialestimates(req, res) { ...@@ -36,10 +28,14 @@ export function getFinancialestimates(req, res) {
} }
/**投控建设 */ /**
* 投控建设
* @param req
* @param res
*/
export function getInvestmentcontrol(req, res) { export function getInvestmentcontrol(req, res) {
let year = req.query.year || 2023; //年份 let year = req.query.year || 2023; //年份
let excelData = tkjsTableData(); let excelData = investmentcontrolTableData();
let ret:any = {}; let ret:any = {};
...@@ -56,32 +52,49 @@ export function getInvestmentcontrol(req, res) { ...@@ -56,32 +52,49 @@ export function getInvestmentcontrol(req, res) {
} }
/**决算统计 */ /**
* 决算统计
* @param req
* @param res
*/
export function getFinalaccounts(req, res) { export function getFinalaccounts(req, res) {
let year = req.query.year || 2023; //年份 let year = req.query.year || 2023; //年份
let line = req.query.line || "全部"; //线路 let line = req.query.line || "全部"; //线路
let excelData = jstjTableData(); let excelData = finalaccountsTableData();
let ret:any = {}; let ret:any = {};
let tkjsExcelData:any = {};
let index = 1; let index = 1;
for (let key in excelData) { for (let key in excelData) {
let tkjsExcelData:any = {};
if (key.search(year) > -1) { //匹配年份 if (key.search(year) > -1) { //匹配年份
let lineData = excelData[key]; let lineData = excelData[key];
lineData.forEach( info => { lineData.forEach( info => {
let {name, data} = info; let {name, data} = info;
if (name == line) { //判断线路 if (line == name) { //判断线路
tkjsExcelData = info; tkjsExcelData = info;
} }
}) })
if (JSON.stringify(tkjsExcelData) === "{}") {
switch (index) {
case 1:
tkjsExcelData = defaultConfig.FinalaccountsDefault;
break;
case 2:
tkjsExcelData = defaultConfig.ContractTypeDefault;
break;
case 3:
tkjsExcelData = defaultConfig.BusinessDefault;
break;
}
}
ret["api" + index] = tkjsExcelData; ret["api" + index] = tkjsExcelData;
if (index == 2) { if (index == 2) {
let itemTotal = 0; let itemTotal = 0;
tkjsExcelData.data.forEach(item => { tkjsExcelData.data.forEach(item => {
itemTotal += item.value || 0; itemTotal += Math.ceil(item.value) || 0;
}); });
ret["api" + index].total = itemTotal; ret["api" + index].total = itemTotal;
} }
......
import { mapLineTableData, mapSiteTableData, mapTableData } from '../../data/table/constructData';
import { keyValuePackage, tablePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut } from '../../dataPackage/out';
import { change } from '../../dataPackage/inBackOut';
import { onceSheetBecomeOfblockData } from '../../util/analysisExcel';
/*地图*/
export function getMap(req, res) {
let mapTable = mapTableData();
let mapLineTable = mapLineTableData();
let lineCoordinateTable = onceSheetBecomeOfblockData('建设指挥平台/建设指挥平台地图.xlsx', '线路坐标');
let mapSiteTable = mapSiteTableData();
let ret:any = {};
let jcsjPackageData = keyValuePackage(mapTable['基础数据'].dataList);
ret['jcsj'] = getKeyValueOut('基础数据', jcsjPackageData);
let mapLineData = change(["name", "value", "key", "ygLine"], mapLineTable["地图线路"].bodyList);
mapLineData.forEach( item => {
let mapLineLocation = {};
let {name, value, key, ygLine} = item;
lineCoordinateTable.forEach( lineItem => {
let {blockTitle, blockData} = lineItem;
if (name == blockTitle) {
for (let i = 1; i < blockData.length; i++) {
let key = blockData[i][0];
let value = blockData[i][1];
mapLineLocation[key] = value;
}
item["lineLocation"] = mapLineLocation;
}
})
for (let siteKey in mapSiteTable) {
let mapLineList = [];
let siteCoordinate = {};
let mapSiteData = change(["line", "lng", "lat", "height", "heading", "pitch", "roll"], mapSiteTable[siteKey].bodyList);
mapSiteData.forEach( siteItem => {
let {line, lng, lat, height, heading, pitch, roll} = siteItem;
siteCoordinate = {lng, lat, height, heading, pitch, roll};
mapLineList.push({line, location: siteCoordinate});
})
if (name == siteKey) {
item["lineList"] = mapLineList;
}
}
})
mapLineData.forEach( data => {
data.value = data.lineList.length;
})
// ret['dt'] = defaultConfig.mapDefault;
ret['dt'] = {title: "线路列表", dataList: mapLineData};
res.send(ret);
}
\ No newline at end of file
...@@ -3,9 +3,8 @@ ...@@ -3,9 +3,8 @@
* 处理数据 * 处理数据
*/ */
import { getDqtdTableData, getQqzzTableData, xxjdTableData } from "../../data/table/constructData"; import { relocationTableData, prophaseTableData, scheduleTableData, milestoneTableData } from "../../data/table/constructData";
import { tablePackage } from "../../dataPackage/inFrontOut"; import * as defaultConfig from '../../config/defaultConfig';
function change(titleList, dataList) { function change(titleList, dataList) {
let data = []; let data = [];
...@@ -20,49 +19,35 @@ function change(titleList, dataList) { ...@@ -20,49 +19,35 @@ function change(titleList, dataList) {
return data; return data;
} }
/**前期管理 */
export async function getProphase(req, res) {
let line = req.query.line || "全部";
let type = req.query.type || "专项规划";
let tableData = getQqzzTableData();
let dataList = tableData["前期管理数据"].bodyList;
let data = change(["line","year","a3","a4","a5","a6","a7","a8","a9","a10","a11", 'a12', 'a13', 'a14'], tableData["前期管理数据"].bodyList ); function getProphaseDetailData(data, defaultData, conf, line) {
let dataMap = {"全部":{"data":{}, "total":0}};
/** dataMap结构{ "线":{ yearCount:0, data:{ "单体规划建设方案":{ plan:0, complete:0 } } } } */ data.forEach(item => {
let dataMap = {};
const DefaultData ={
total:0,
data:{
"单体规划建设方案":{plan:0, complete:0},
"单体建设用地规划许可证":{plan:0, complete:0},
"单体建设工程规划许可证":{plan:0, complete:0},
"单体施工许可证":{plan:0, complete:0}
}
};
const Conf = {
"单体规划建设方案":[4,5],
"单体建设用地规划许可证":[6,7],
"单体建设工程规划许可证":[8,9],
"单体施工许可证":[10,11]
};
dataList.forEach(item => {
let dataLine = item.line; let dataLine = item.line;
if (!dataMap[dataLine]) dataMap[dataLine] = {data:{}, total:0 }; if (!dataMap[dataLine]) dataMap[dataLine] = {data:{}, total:0 };
dataMap[dataLine]["total"] = subList[2]; dataMap[dataLine]["total"] = item.total;
dataMap["全部"]["total"] += item.total;
for (let name in Conf) { for (let name = 0; name < conf.length; name++) {
let plan = subList[Conf[name][0]]; let plan = 0;
let complete = subList[Conf[name][1]]; let complete = 0;
if (!dataMap[dataLine]["data"][name]) dataMap[dataLine]["data"][name] = {plan:0, complete:0}; for (let key in item) {
dataMap[dataLine]["data"][name]["plan"] += plan; if (key.search(conf[name]) > -1) {
dataMap[dataLine]["data"][name]["complete"] += complete; plan = item[conf[name]+"计划数"];
complete = item[conf[name]+"完成数"];
if (!dataMap[dataLine]["data"][conf[name]]) dataMap[dataLine]["data"][conf[name]] = {plan:0, complete:0};
if (!dataMap["全部"]["data"][conf[name]]) dataMap["全部"]["data"][conf[name]] = {plan:0, complete:0};
}
}
dataMap[dataLine]["data"][conf[name]]["plan"] += plan;
dataMap[dataLine]["data"][conf[name]]["complete"] += complete;
dataMap["全部"]["data"][conf[name]]["plan"] += plan;
dataMap["全部"]["data"][conf[name]]["complete"] += complete;
} }
}); });
let result:any = {}; let result:any = {};
...@@ -72,117 +57,104 @@ export async function getProphase(req, res) { ...@@ -72,117 +57,104 @@ export async function getProphase(req, res) {
"incomplete":0,//未完成 "incomplete":0,//未完成
}; };
if (line == "全部") { let onceLineData = dataMap[line] || defaultData;
let scheduleMap = {}; result["completionStatus"].total = onceLineData.total;
let planCount = 0; let complete = 0;
let completeCount = 0; let scheduleList = [];
for (let key in dataMap) { for (let key in onceLineData.data) {
let {data, total} = dataMap[key]; let subComplete = onceLineData.data[key].complete;
result["completionStatus"].total += total || 0; let subPlan = onceLineData.data[key].plan;
for (let name in data) { complete += subComplete;
let {plan, complete} = data[name]; scheduleList.push({
if (!scheduleMap[name]) scheduleMap[name] = {plan:0, complete:0} name:key,
scheduleMap[name].plan += plan; total:subPlan,
scheduleMap[name].complete += complete; complete:subComplete,
planCount += plan; incomplete:subPlan-subComplete
completeCount += complete; });
}
}
result["completionStatus"].complete = completeCount;
result["completionStatus"].incomplete = planCount-completeCount;
let scheduleList = [];
for (let key in scheduleMap) {
let subComplete = scheduleMap[key].complete;
let subPlan = scheduleMap[key].plan;
scheduleList.push({
name:key,
total:subPlan,
complete:subComplete,
incomplete:subPlan-subComplete
});
}
result["scheduleList"] = scheduleList;
} else {
let onceLineData = dataMap[line] || DefaultData;
result["completionStatus"].total = onceLineData.total;
let complete = 0;
let scheduleList = [];
for (let key in onceLineData.data) {
let subComplete = onceLineData.data[key].complete;
let subPlan = onceLineData.data[key].plan;
complete += subComplete;
scheduleList.push({
name:key,
total:subPlan,
complete:subComplete,
incomplete:subPlan-subComplete
});
}
result["completionStatus"].complete = complete;
result["completionStatus"].incomplete = onceLineData.total - complete;
result["scheduleList"] = scheduleList;
} }
result["completionStatus"].complete = complete;
result["completionStatus"].incomplete = onceLineData.total - complete;
result["scheduleList"] = scheduleList;
return result;
}
/**
* 前期管理
* @param req
* @param res
*/
export async function getProphase(req, res) {
let line = req.query.line || "全部";
let tableData = prophaseTableData();
let data = change(["line","year","total","month","单体规划建设方案计划数","单体规划建设方案完成数","单体建设用地规划许可证计划数","单体建设用地规划许可证完成数","单体建设工程规划许可证计划数","单体建设工程规划许可证完成数","单体施工许可证计划数", '单体施工许可证完成数'], tableData["前期管理数据"].bodyList );
/** dataMap结构{ "线":{ yearCount:0, data:{ "单体规划建设方案":{ plan:0, complete:0 } } } } */
let conf = ["单体规划建设方案", "单体建设用地规划许可证", "单体建设工程规划许可证", "单体施工许可证"];
let result:any = getProphaseDetailData(data, defaultConfig.ProphaseDefault, conf, line);
res.send(result); res.send(result);
} }
/**动迁腾地 */ /**
* 动迁腾地
* @param req
* @param res
*/
export async function getRelocation(req, res) { export async function getRelocation(req, res) {
let line = req.query.line || "总数"; let line = req.query.line || "总数";
let type = req.query.type || "专项规划"; let year = req.query.year || 2023;
let year = req.query.year || "2023年";
let excelData = getDqtdTableData(); let tableData = relocationTableData();
let data = change(["line","total","complete","incomplete"], tableData["概览数据"].bodyList );
/**基础数据 */ /**基础数据 */
let dataMap = {}; let dataMap = {};
excelData["概览数据"].bodyList.forEach(info => { data.forEach(info => {
dataMap[info[0]] = { dataMap[info.line] = {
"total":info[1], "total":info.total,
"complete":info[2], "complete":info.complete,
"incomplete":info[3], "incomplete":info.incomplete,
} }
}); });
let result:any = {}; let result:any = {};
result["completionStatus"] = dataMap[line]; result["completionStatus"] = dataMap[line] || defaultConfig.CompletionStatusDefault;
/**详细完成情况 */ /**详细完成情况 */
let scheduleData = {"undefined":{ let scheduleTableData = change(["line","year","居民完成率","单位完成率","绿地完成率","居民计划书","居民完成数","单位计划数","单位完成数","绿地计划数","绿地完成数"], tableData["动迁腾地详细"].bodyList );
total:0,
data:{
"居民":{plan:0, complete:0},
"单位":{plan:0, complete:0},
"绿地":{plan:0, complete:0}
}
}};
let conf = { let scheduleData = {};
"居民":[2],
"单位":[3], let conf = ["居民完成率", "单位完成率", "绿地完成率"];
"绿地":[4]
};
let index = 0; let index = 0;
excelData["动迁腾地详细"].bodyList.forEach(subList => { scheduleTableData.forEach(item => {
let dataYear = subList[1]; let dataYear = item.year;
if (year == dataYear) { if (year == dataYear) {
if (!scheduleData[dataYear]) scheduleData[dataYear] = {data:{} }; if (!scheduleData[dataYear]) scheduleData[dataYear] = {data:{} };
scheduleData[dataYear]["total"] = subList[2];
for (let name = 0; name < conf.length; name++) {
for (let name in conf) { for (let key in item){
let complete = subList[conf[name][0]]; if (!scheduleData[dataYear]["data"][conf[name]]) scheduleData[dataYear]["data"][conf[name]] = {complete:0};
if (!scheduleData[dataYear]["data"][name]) scheduleData[dataYear]["data"][name] = {complete:0};
scheduleData[dataYear]["data"][name]["complete"] += complete; if (key.search(conf[name]) > -1) {
let complete = item[conf[name]] || 0;
scheduleData[dataYear]["data"][conf[name]]["complete"] += complete;
}
}
} }
index ++; index ++;
} }
else {
scheduleData[year] = defaultConfig.RelocationScheduleData
}
}); });
let scheduleMap = {}; let scheduleMap = {};
...@@ -197,47 +169,36 @@ export async function getRelocation(req, res) { ...@@ -197,47 +169,36 @@ export async function getRelocation(req, res) {
let scheduleList = []; let scheduleList = [];
for (let key in scheduleMap) { for (let key in scheduleMap) {
let subComplete = scheduleMap[key].complete/index; let subComplete = (scheduleMap[key].complete/index)*100/100 || 0;
scheduleList.push({ scheduleList.push({
name:key, name:key,
complete: Math.round(subComplete) complete: Math.round(subComplete)
}); });
} }
result["scheduleList"] = scheduleList;
result["scheduleList"] = scheduleList;
/**浮窗数据 */ /**浮窗数据 */
let detailMap = {}; let detailMap = {};
// let dataMap = {
// "undefined":{
// total:0,
// data:{
// "居民":{plan:0, complete:0, incomplete:0},
// "单位":{plan:0, complete:0, incomplete:0},
// "绿地":{plan:0, complete:0, incomplete:0}
// }
// }
// }
let detailConf = { let detailConf = {
"居民":[5,6], "居民":[5,6],
"单位":[7,8], "单位":[7,8],
"绿地":[9,10] "绿地":[9,10]
}; };
excelData["动迁腾地详细"].bodyList.forEach(subList => { tableData["动迁腾地详细"].bodyList.forEach(subList => {
let dataLine = subList[0]; let dataLine = subList[0];
if (!detailMap[dataLine]) detailMap[dataLine] = {data:{} }; if (!detailMap[dataLine]) detailMap[dataLine] = { };
for (let name in detailConf) { for (let name in detailConf) {
let plan = subList[detailConf[name][0]]; let plan = subList[detailConf[name][0]];
let complete = subList[detailConf[name][1]]; let complete = subList[detailConf[name][1]];
if (!detailMap[dataLine]["data"][name]) detailMap[dataLine]["data"][name] = {plan:0, complete:0, incomplete:0}; if (!detailMap[dataLine][name]) detailMap[dataLine][name] = {plan:0, complete:0, incomplete:0};
detailMap[dataLine]["data"][name]["plan"] += plan; detailMap[dataLine][name]["plan"] += plan;
detailMap[dataLine]["data"][name]["complete"] += complete; detailMap[dataLine][name]["complete"] += complete;
detailMap[dataLine]["data"][name]["incomplete"] += plan - complete; detailMap[dataLine][name]["incomplete"] += plan - complete;
} }
}); });
...@@ -248,185 +209,138 @@ export async function getRelocation(req, res) { ...@@ -248,185 +209,138 @@ export async function getRelocation(req, res) {
} }
/**形象进度 */ /**
* 形象进度
* @param req
* @param res
*/
export async function getSchedule(req, res) { export async function getSchedule(req, res) {
let line = req.query.line || "全部"; let line = req.query.line || "全部";
let result:any = {}; let result:any = {};
let excelData = xxjdTableData(); let excelData = scheduleTableData();
let dataMap = {"undefined":{ let data = change(["line","车站总数","车站已完成","车站施工中","车辆基站总数","车辆基站已完成","车辆基站施工中","高架区间总数", '高架区间已完成', '高架区间施工中'], excelData["形象进度数据"].bodyList );
total:0, let conf = ["车站", "车辆基站", "高架区间"]
data:{ let dataMap = {"全部":{"data":{}}};
"车站":{plan:0, complete:0, inProgress:0},
"车辆基地":{plan:0, complete:0, inProgress:0},
"高架区间":{plan:0, complete:0, inProgress:0}
}
}};
let conf = {
"车站":[1,2,3],
"车辆基地":[4,5,6],
"高架区间":[7,8,9]
};
excelData["形象进度数据"].bodyList.forEach(subList => { data.forEach(item => {
let dataLine = subList[0]; let dataLine = item.line;
let dataYear = subList[1];
if (!dataMap[dataLine]) dataMap[dataLine] = {data:{} }; if (!dataMap[dataLine]) dataMap[dataLine] = {data:{} };
dataMap[dataLine]["total"] = subList[2];
for (let name in conf) {
let plan = subList[conf[name][0]];
let complete = subList[conf[name][1]];
let inProgress = subList[conf[name][2]];
if (!dataMap[dataLine]["data"][name]) dataMap[dataLine]["data"][name] = {plan:0, complete:0, inProgress:0};
dataMap[dataLine]["data"][name]["plan"] += plan;
dataMap[dataLine]["data"][name]["complete"] += complete;
dataMap[dataLine]["data"][name]["inProgress"] += inProgress;
}
});
if (line == "全部") { for (let name = 0; name < conf.length; name++) {
let scheduleMap = {}; let plan = 0;
let planCount = 0; let complete = 0;
let completeCount = 0; let inProgress = 0;
let inProgressCount = 0; for (let key in item){
for (let key in dataMap) { if (key.search(conf[name]) > -1) {
let {data} = dataMap[key]; if (!dataMap[dataLine]["data"][conf[name]]) dataMap[dataLine]["data"][conf[name]] = {plan:0, complete:0, inProgress:0};
for (let name in data) { if (!dataMap["全部"]["data"][conf[name]]) dataMap["全部"]["data"][conf[name]] = {plan:0, complete:0, inProgress:0};
let {plan, complete, inProgress} = data[name]; plan = item[conf[name]+"总数"];
if (!scheduleMap[name]) scheduleMap[name] = {plan:0, complete:0, inProgress:0} complete = item[conf[name]+"已完成"];
scheduleMap[name].plan += plan; inProgress = item[conf[name]+"施工中"];
scheduleMap[name].complete += complete; }
scheduleMap[name].inProgress += inProgress;
planCount += plan;
completeCount += complete;
inProgressCount += inProgress;
} }
}
let scheduleList = []; dataMap[dataLine]["data"][conf[name]]["plan"] += plan;
for (let key in scheduleMap) { dataMap[dataLine]["data"][conf[name]]["complete"] += complete;
let subComplete = scheduleMap[key].complete; dataMap[dataLine]["data"][conf[name]]["inProgress"] += inProgress;
let subPlan = scheduleMap[key].plan;
let subInProgress = scheduleMap[key].inProgress; dataMap["全部"]["data"][conf[name]]["plan"] += plan;
dataMap["全部"]["data"][conf[name]]["complete"] += complete;
scheduleList.push({ dataMap["全部"]["data"][conf[name]]["inProgress"] += inProgress;
name:key,
total:subPlan,
complete:subComplete,
incomplete:subInProgress,
notStarted:subPlan-subComplete-subInProgress
});
}
result["scheduleList"] = scheduleList;
} else {
let onceLineData = dataMap[line] || dataMap["undefined"];
let complete = 0;
let scheduleList = [];
for (let key in onceLineData.data) {
let subComplete = onceLineData.data[key].complete;
let subPlan = onceLineData.data[key].plan;
let subInProgress = onceLineData.data[key].inProgress;
complete += subComplete;
scheduleList.push({
name:key,
total:subPlan,
complete:subComplete,
incomplete:subInProgress,
notStarted:subPlan-subComplete-subInProgress
});
} }
result["scheduleList"] = scheduleList; });
let onceLineData = dataMap[line] || defaultConfig.ScheduleDefault;
let complete = 0;
let scheduleList = [];
for (let key in onceLineData.data) {
let subComplete = onceLineData.data[key].complete;
let subPlan = onceLineData.data[key].plan;
let subInProgress = onceLineData.data[key].inProgress;
complete += subComplete;
scheduleList.push({
name:key,
total:subPlan,
complete:subComplete,
incomplete:subInProgress,
notStarted:subPlan-subComplete-subInProgress
});
} }
let czxxDataMap = {}; result["scheduleList"] = scheduleList;
excelData["车站详细数据"].bodyList.forEach(subList => {
let dataLine = subList[0];
let dataYear = subList[1];
if (!czxxDataMap[dataLine]) czxxDataMap[dataLine] = {data:{} };
czxxDataMap[dataLine]["total"] = subList[2];
let plan = subList[2];
let complete = subList[3];
if (!czxxDataMap[dataLine]["data"][dataYear]) czxxDataMap[dataLine]["data"][dataYear] = {plan:0, complete:0};
czxxDataMap[dataLine]["data"][dataYear]["plan"] += plan;
czxxDataMap[dataLine]["data"][dataYear]["complete"] += complete;
})
if(line == "全部") {
let scheduleMap = {};
let planCount = 0;
let completeCount = 0;
for (let key in czxxDataMap) {
let {data, total} = czxxDataMap[key];
for (let name in data) {
let {plan, complete} = data[name];
if (!scheduleMap[name]) scheduleMap[name] = {plan:0, complete:0}
scheduleMap[name].plan += plan;
scheduleMap[name].complete += complete;
planCount += plan;
completeCount += complete;
}
}
let scheduleList = [];
for (let key in scheduleMap) {
let subComplete = scheduleMap[key].complete;
let subPlan = scheduleMap[key].plan;
scheduleList.push({ let czDetailData = change(["line","year","计划数量","实际数量"], excelData["车站详细数据"].bodyList );
name:key, result["czDetailedData"] = getDetailData(czDetailData, line, defaultConfig.ScheduleDetailed);
total:subPlan,
complete:subComplete let cljdDetailData = change(["line","year","计划数量","实际数量"], excelData["车辆基地详细数据"].bodyList );
}); result["cljdDetailedData"] = getDetailData(cljdDetailData, line, defaultConfig.ScheduleDetailed);
}
result["czxxsj"] = scheduleList; let gjqjDetailData = change(["line","year","计划数量","实际数量"], excelData["高架区间详细数据"].bodyList );
} else { result["gjqjDetailedData"] = getDetailData(gjqjDetailData, line, defaultConfig.ScheduleDetailed);
let onceLineData = czxxDataMap[line] || czxxDataMap["undefined"];
let complete = 0;
let scheduleList = [];
for (let key in onceLineData.data) {
let subComplete = onceLineData.data[key].complete;
let subPlan = onceLineData.data[key].plan;
complete += subComplete;
scheduleList.push({
name:key,
total:subPlan,
complete:subComplete
});
}
result["czxxsj"] = scheduleList;
}
res.send(result); res.send(result);
} }
export function getDetailData() {
/**
* 获取形象进度浮窗数据
* @param data 源数据
* @param line 线路
* @param defaultData 默认数据
* @returns
*/
function getDetailData(data, line, defaultData) {
let result:any = {};
let dataMap = {"全部":{data:{}}};
data.forEach(subList => {
let dataLine = subList.line;
let dataYear = subList.year;
if (!dataMap[dataLine]) dataMap[dataLine] = {data:{} };
let plan = subList["计划数量"];
let complete = subList["实际数量"];
if (!dataMap[dataLine]["data"][dataYear]) dataMap[dataLine]["data"][dataYear] = {plan:0, complete:0};
dataMap[dataLine]["data"][dataYear]["plan"] += plan;
dataMap[dataLine]["data"][dataYear]["complete"] += complete;
if (!dataMap["全部"]["data"][dataYear]) dataMap["全部"]["data"][dataYear] = {plan:0, complete:0};
dataMap["全部"]["data"][dataYear]["plan"] += plan;
dataMap["全部"]["data"][dataYear]["complete"] += complete;
})
let onceLineData = dataMap[line] || defaultData;
let complete = 0;
let scheduleList = [];
for (let key in onceLineData.data) {
let subComplete = onceLineData.data[key].complete;
let subPlan = onceLineData.data[key].plan;
complete += subComplete;
scheduleList.push({
name:key,
total:subPlan,
complete:subComplete
});
}
result = scheduleList;
return result;
} }
export async function getMilestone(req, res) { export async function getMilestone(req, res) {
let excelData = milestoneTableData();
let result:any = {}; let result:any = {};
result["detailedList"] = [ // result["detailedList"] = [{title:"23号线首座车站开工",time:"2022-09-19", desc:"23号线江川东路站于2022-9-19首幅低下连续墙开工。", img:"http://192.168.0.71:40001/2005_01.jpg"},];
{
title:"23号线首座车站开工", result['detailedList'] = change(["title","time","desc","img"], excelData["里程碑节点完成情况"].bodyList );
time:"2022-09-19",
desc:"23号线江川东路站于2022-9-19首幅低下连续墙开工。",
img:"http://192.168.0.71:40001/2005_01.jpg"
},
{
title:"23号线首座车站开工",
time:"2022-09-19",
desc:"23号线江川东路站于2022-9-19首幅低下连续墙开工。",
img:"http://192.168.0.71:40001/2005_01.jpg"
},
];
res.send(result); res.send(result);
} }
......
...@@ -3,15 +3,19 @@ ...@@ -3,15 +3,19 @@
* 处理数据 * 处理数据
*/ */
import { getDqfxjd, getZmxfx } from "../../data/table/constructData"; import { riskTableData, fatalityTableData } from "../../data/table/constructData";
import { keyValuePackage } from "../../dataPackage/inFrontOut"; import { keyValuePackage } from "../../dataPackage/inFrontOut";
import { getOnceYBarChartOut } from "../../dataPackage/out"; import { getOnceYBarChartOut } from "../../dataPackage/out";
/**
* 致命性风险分布
* @param req
* @param res
*/
export function getFatality(req, res) { export function getFatality(req, res) {
let line = req.query.line || "全部"; let line = req.query.line || "全部";
let table = getZmxfx(); let table = fatalityTableData();
let 全网 = []; let 全网 = [];
let 致命性风险 = []; let 致命性风险 = [];
...@@ -26,20 +30,25 @@ import { getOnceYBarChartOut } from "../../dataPackage/out"; ...@@ -26,20 +30,25 @@ import { getOnceYBarChartOut } from "../../dataPackage/out";
致命性风险.push({key, value:thisCount, unit:""}) 致命性风险.push({key, value:thisCount, unit:""})
} }
let zmxfxfbPackageData = {dataInfo: {"全网": 全网, "致命性风险": 致命性风险}, xUnit: "", yUnit: ""}; let fatalityPackageData = {dataInfo: {"全网": 全网, "致命性风险": 致命性风险}, xUnit: "", yUnit: ""};
let ret = {}; let ret = {};
ret['zmxfxfb'] = getOnceYBarChartOut('致命性风险分布', zmxfxfbPackageData); ret['fatality'] = getOnceYBarChartOut('致命性风险分布', fatalityPackageData);
res.send(ret); res.send(ret);
} }
/**
* 当前风险节点
* @param req
* @param res
*/
export function getRisk(req, res) { export function getRisk(req, res) {
let line = req.query.line || "全线网"; let line = req.query.line || "全线网";
if (line == "全部 ") line == "全线网"; if (line == "全部 ") line == "全线网";
let table = getDqfxjd(); let table = riskTableData();
let dataIndex = table["风险详细"].headerList.indexOf(line); let dataIndex = table["风险详细"].headerList.indexOf(line);
...@@ -52,7 +61,7 @@ export function getRisk(req, res) { ...@@ -52,7 +61,7 @@ export function getRisk(req, res) {
ret['dcssl'] = {title: '地层损失率', dataList: {key:"地层损失率", value:地层损失率}}; ret['dcssl'] = {title: '地层损失率', dataList: {key:"地层损失率", value:地层损失率}};
ret['ptddbcx'] = {title: '旁通道地表沉降', dataList: {key:"旁通道地表沉降", value:旁通道地表沉降}}; ret['ptddbcx'] = {title: '旁通道地表沉降', dataList: {key:"旁通道地表沉降", value:旁通道地表沉降}};
table = getZmxfx(); table = fatalityTableData();
for (let key in table ) { for (let key in table ) {
let {allCount, allRisks, count, risks} = descData(table[key].bodyList, line); let {allCount, allRisks, count, risks} = descData(table[key].bodyList, line);
...@@ -73,11 +82,17 @@ export function getRisk(req, res) { ...@@ -73,11 +82,17 @@ export function getRisk(req, res) {
res.send(ret); res.send(ret);
} }
/**
* 工程安全状态
* @param req
* @param res
*/
export function getEngineering(req, res) { export function getEngineering(req, res) {
let line = req.query.line || "全线网"; let line = req.query.line || "全线网";
if (line == "全部 ")line == "全线网"; if (line == "全部 ")line == "全线网";
let table = getZmxfx(); let table = fatalityTableData();
let ret = {}; let ret = {};
for (let key in table ) { for (let key in table ) {
...@@ -87,9 +102,9 @@ export function getEngineering(req, res) { ...@@ -87,9 +102,9 @@ export function getEngineering(req, res) {
let packageData = {title, dataList: {key:`风险期数量`, value} }; let packageData = {title, dataList: {key:`风险期数量`, value} };
switch(key) { switch(key) {
case "基坑":ret["jkfxqsl"] = packageData;break; case "基坑":ret["jkRiskNum"] = packageData;break;
case "盾构区间":ret["dgqjfxqsl"] = packageData;break; case "盾构区间":ret["dgqjRiskNum"] = packageData;break;
case "旁通道":ret["ptdfxqsl"] = packageData;break; case "旁通道":ret["ptdRiskNum"] = packageData;break;
} }
let {allControl, allFocus, allSecure, control, focus, secure } = getFXQData(table[key].bodyList, line); let {allControl, allFocus, allSecure, control, focus, secure } = getFXQData(table[key].bodyList, line);
...@@ -102,13 +117,13 @@ export function getEngineering(req, res) { ...@@ -102,13 +117,13 @@ export function getEngineering(req, res) {
let oncePackage = keyValuePackage(onceList); let oncePackage = keyValuePackage(onceList);
let descPackageData = {title: `${key}详细数据`, dataList: oncePackage}; let descPackageData = {title: `${key}详细数据`, dataList: oncePackage};
descPackageData.dataList.forEach(info => { // descPackageData.dataList.forEach(info => {
info["num"] = info.value; // info["num"] = info.value;
}) // })
switch(key) { switch(key) {
case "基坑":ret["jkxxsj"] = descPackageData;break; case "基坑":ret["jkDetailedData"] = descPackageData;break;
case "盾构区间":ret["dgqjxxsj"] = descPackageData;break; case "盾构区间":ret["dgqjDetailedData"] = descPackageData;break;
case "旁通道":ret["ptdxxsj"] = descPackageData;break; case "旁通道":ret["ptdDetailedData"] = descPackageData;break;
} }
} }
res.send(ret); res.send(ret);
...@@ -132,6 +147,7 @@ function countData(dataList, name) { ...@@ -132,6 +147,7 @@ function countData(dataList, name) {
return {count, thisLineCount}; return {count, thisLineCount};
} }
function descData(dataList, name) { function descData(dataList, name) {
let allCount = 0; let allCount = 0;
let allRisks = 0; let allRisks = 0;
......
import { lineTableData, yearTableData } from "../data/table/publicData";
import { stringListPackage } from "../dataPackage/inFrontOut";
import { getStringOut } from "../dataPackage/out";
export function getLine(req, res) {
let excelData = lineTableData();
let ret:any = {};
ret['line'] = getStringOut("线路", excelData['选择线路'].dataList);
res.send(ret);
}
/**年份 */
export function getYear(req, res) {
let excelData = yearTableData();
let ret:any = {};
let nfPackageData = stringListPackage(excelData['下拉年份'].dataList);
ret['year'] = getStringOut('下拉年份', nfPackageData);
res.send(ret);
}
\ No newline at end of file
/**
* 前期管理
*/
export const ProphaseDefault = {
total: 0,
data: {
"单体规划建设方案": { plan: 0, complete: 0 },
"单体建设用地规划许可证": { plan: 0, complete: 0 },
"单体建设工程规划许可证": { plan: 0, complete: 0 },
"单体施工许可证": { plan: 0, complete: 0 }
}
};
/**
* 动迁腾地 completionStatus
*/
export const CompletionStatusDefault = {
"total": 0,
"complete": 0,
"incomplete": 0
};
/**
* 动迁腾地 详细完成情况 scheduleList
*/
export const RelocationScheduleData = {
data: {
"居民完成率": { complete: 0 },
"单位完成率": { complete: 0 },
"绿地完成率": { complete: 0 }
}
}
/**
* 形象进度 scheduleList
*/
export const ScheduleDefault = {
data: {
"车站": { plan: 0, complete: 0, inProgress: 0 },
"车辆基站": { plan: 0, complete: 0, inProgress: 0 },
"高架区间": { plan: 0, complete: 0, inProgress: 0 }
}
}
/**
* 形象进度 详细数据 czDetailedData、cljdDetailedData、gjqjDetailedData
*/
export const ScheduleDetailed = {
data: {
"1月": { plan: 0, complete: 0 },
"2月": { plan: 0, complete: 0 },
"3月": { plan: 0, complete: 0 },
"4月": { plan: 0, complete: 0 },
"5月": { plan: 0, complete: 0 },
"6月": { plan: 0, complete: 0 }
}
}
/**
* 合同金额预警总览
*/
export const EarlywarningDefault = [
["车站", 0, 0, 0],
["区间", 0, 0, 0],
["轨道", 0, 0, 0],
["通讯", 0, 0, 0],
["信号", 0, 0, 0],
["供电", 0, 0, 0],
["综合监控", 0, 0, 0],
["总数", 0, 0, 0],
]
/**
* 合同金额预警总览详细浮窗
*/
export const EarlywarningDetail = {
"高架区间": { "accumulatedSignedContractValue": 0, "estimated": 0, "budgetDifference": 0, "targetCost": 0, "targetDifference": 0 },
"通道区间": { "accumulatedSignedContractValue": 0, "estimated": 0, "budgetDifference": 0, "targetCost": 0, "targetDifference": 0 },
"出入场线": { "accumulatedSignedContractValue": 0, "estimated": 0, "budgetDifference": 0, "targetCost": 0, "targetDifference": 0 },
"总计": { "accumulatedSignedContractValue": 0, "estimated": 0, "budgetDifference": 0, "targetCost": 0, "targetDifference": 0 }
};
/**
* 决算统计 api1
*/
export const FinalaccountsDefault = {
name: '',
data: [
{ key: '', value: 0 }
]
}
/**
* 决算统计 api2
*/
export const ContractTypeDefault = {
name: '',
data: []
}
/**
* 决算统计 api3
*/
export const BusinessDefault = {
name: '',
data: [
{ key: '咨询类', value: 0 },
{ key: '科研类', value: 0 },
{ key: '监理类', value: 0 },
{ key: '其他类', value: 0 },
{ key: '勘查类', value: 0 },
{ key: '前期类', value: 0 },
{ key: '设计类', value: 0 },
{ key: '工程类', value: 0 }
]
}
/**
* 建设指挥平台地图
*/
export const mapDefault = {
title: '线路列表',
dataList: [
{
name: '18号线二期', value: 35, key: "18号线",
ygLine: "yg_line18",
lineLocation: {
lng: -2173.224,
lat: -1970.453,
height: 11287.685,
heading: 0.03386971261171112,
pitch: -0.6624057821119615,
roll: 6.394884621840902e-14
},
lineList: [
{
line: '大康路站',
location: {
lng: -5009.113,
lat: 11230.428,
height: 40.848,
heading: 0.033869712611719116,
pitch: -0.662405782111958,
roll: 6.039613253960852e-14
}
},
{
line: '呼兰路站',
location: {
lng: -3425.366,
lat: 11330.769,
height: 337.665,
heading: 0.03386971261170757,
pitch: -0.6624057821119642,
roll: 8.970602038971265e-14
}
},
{
line: '爱辉路站',
location: {
lng: -2147.80,
lat: 12127.198,
height: 101.281,
heading: 0.03386971261168359,
pitch: -0.6624057821118234,
roll: 1.1812772982011666e-13
}
},
{
line: '江杨南路站',
location: {
lng: -519.502,
lat: 12769.877,
height: 125.112,
heading: 0.03386971261165428,
pitch: -0.6624057821117382,
roll: 1.2523315717771766e-13
}
},
{
line: '长江西路站',
location: {
lng: 336.266,
lat: 12141.313,
height: 226.682,
heading: 0.03386971261164895,
pitch: -0.6624057821117257,
roll: 1.2878587085651816e-13
}
},
{
line: '通南路站',
location: {
lng: 764.066,
lat: 11262.093,
height: 222.821,
heading: 0.033869712611650726,
pitch: -0.662405782111716,
roll: 1.2967404927621828e-13
}
},
{
line: '长江南路站',
location: {
lng: 1734.032,
lat: 10662.784,
height: 187.047,
heading: 0.0338697126116525,
pitch: -0.6624057821117257,
roll: 1.305622276959184e-13
}
}
]
},
{
name: '19号线', value: 35, key: "19号线",
ygLine: "",
lineLocation: {
lng: -1549.759,
lat: -108646.927,
height: 87338.106,
heading: 0.03386971261170313,
pitch: -0.6624057821120357,
roll: 7.72715225139109e-14
},
lineList: [
{
line: '虹建路站',
location: {
lng: -2594.739,
lat: -17635.331,
height: 743.591,
heading: 0.04640137739189143,
pitch: -0.5795598363240959,
roll: 7.815970093361102e-14
}
},
{
line: '联曹路站',
location: {
lng: -2757.216,
lat: -16114.364,
height: 651.092,
heading: 0.04640137739188699,
pitch: -0.5795598363240924,
roll: 8.43769498715119e-14
}
},
{
line: '华泾西站',
location: {
lng: -2954.063,
lat: -14113.684,
height: 394.751,
heading: 0.04640137739188788,
pitch: -0.5795598363240821,
roll: 8.43769498715119e-14
}
},
{
line: '华泾路站',
location: {
lng: -1579.158,
lat: -13014.855,
height: 300.572,
heading: 0.04640137739189232,
pitch: -0.579559836324083,
roll: 8.171241461241152e-14
}
},
{
line: '三林南站',
location: {
lng: 1528.711,
lat: -13070.450,
height: 801.476,
heading: 0.04640137739188077,
pitch: -0.5795598363240835,
roll: 8.348877145181177e-14
}
},
{
line: '凌兆新村站',
location: {
lng: 1436.576,
lat: -10923.304,
height: 426.674,
heading: 0.04640137739187988,
pitch: -0.5795598363240879,
roll: 8.43769498715119e-14
}
},
{
line: '东方体育中心站',
location: {
lng: 886.653,
lat: -9060.376,
height: 335.937,
heading: 0.04640137739187544,
pitch: -0.5795598363240879,
roll: 8.970602038971265e-14
}
},
{
line: '德州路站',
location: {
lng: 569.163,
lat: -8569.366,
height: 608.84,
heading: 0.04640137739187189,
pitch: -0.5795598363240875,
roll: 9.237055564881302e-14
}
},
{
line: '后滩站',
location: {
lng: 185.793,
lat: -7116.977,
height: 385.845,
heading: 0.04640137739186834,
pitch: -0.5795598363240906,
roll: 8.615330671091215e-14
}
},
{
line: '世博大道站',
location: {
lng: 944.969,
lat: -6214.413,
height: 279.277,
heading: 0.04640137739184702,
pitch: -0.5795598363240915,
roll: 8.79296635503124e-14
}
},
{
line: '世博站',
location: {
lng: 2367.252,
lat: -6120.130,
height: 380.038,
heading: 0.04640137739185057,
pitch: -0.5795598363240941,
roll: 8.704148513061227e-14
}
},
{
line: '华丰路站',
location: {
lng: 3251.686,
lat: -5278.735,
height: 379.6,
heading: 0.04640137739184702,
pitch: -0.579559836324091,
roll: 9.592326932761353e-14
}
},
{
line: '南码头路站',
location: {
lng: 3595.207,
lat: -4657.705,
height: 392.442,
heading: 0.04640137739184258,
pitch: -0.5795598363240879,
roll: 1.0391687510491465e-13
}
},
{
line: '塘桥站',
location: {
lng: 4362.110,
lat: -2986.490,
height: 368.676,
heading: 0.04640137739184169,
pitch: -0.5795598363240875,
roll: 1.056932319443149e-13
}
},
{
line: '潍坊路站',
location: {
lng: 4403.872,
lat: -1840.547,
height: 394.765,
heading: 0.04640137739184702,
pitch: -0.5795598363240941,
roll: 1.0480505352461478e-13
}
},
{
line: '商城路站',
location: {
lng: 4099.358,
lat: -829.877,
height: 372.842,
heading: 0.04640137739184702,
pitch: -0.5795598363240781,
roll: 1.0480505352461478e-13
}
},
{
line: '浦东南路站',
location: {
lng: 3864.472,
lat: -233.069,
height: 323.757,
heading: 0.0464013773918337,
pitch: -0.579559836324028,
roll: 1.199040866595169e-13
}
},
{
line: '提篮桥站',
location: {
lng: 3174.986,
lat: 1837.713,
height: 305.718,
heading: 0.046401377391831033,
pitch: -0.5795598363240333,
roll: 1.270095140171179e-13
}
},
{
line: '周家嘴路站',
location: {
lng: 2768.648,
lat: 2337.886,
height: 305.718,
heading: 0.04640137739183636,
pitch: -0.5795598363240342,
roll: 1.2434497875801753e-13
}
},
{
line: '海伦路站',
location: {
lng: 1812.266,
lat: 2482.180,
height: 305.718,
heading: 0.04640137739184258,
pitch: -0.5795598363240386,
roll: 1.127986593019159e-13
}
},
{
line: '甜爱路站',
location: {
lng: 1143.224,
lat: 2919.123,
height: 305.718,
heading: 0.046401377391831033,
pitch: -0.5795598363240448,
roll: 1.1546319456101628e-13
}
},
{
line: '上海外国语大学站',
location: {
lng: 1064.675,
lat: 4041.572,
height: 305.718,
heading: 0.04640137739168626,
pitch: -0.5795598363240471,
roll: 2.282618538629322e-13
}
},
{
line: '凉城路站',
location: {
lng: -111.283,
lat: 4606.201,
height: 305.718,
heading: 0.046401377391688925,
pitch: -0.5795598363240471,
roll: 2.291500322826323e-13
}
},
{
line: '广灵四路站',
location: {
lng: -545.693,
lat: 5479.628,
height: 305.718,
heading: 0.046401377391683596,
pitch: -0.5795598363240417,
roll: 2.3092638912203256e-13
}
},
{
line: '车站北路站',
location: {
lng: -415.920,
lat: 6444.601,
height: 305.718,
heading: 0.04640137739167294,
pitch: -0.5795598363240404,
roll: 2.318145675417327e-13
}
},
{
line: '虹湾路站',
location: {
lng: -338.162,
lat: 8221.843,
height: 305.718,
heading: 0.04640137739167294,
pitch: -0.5795598363240386,
roll: 2.3092638912203256e-13
}
},
{
line: '一二八纪念路站',
location: {
lng: -398.679,
lat: 10228.410,
height: 305.718,
heading: 0.04640137739167738,
pitch: -0.5795598363240413,
roll: 2.327027459614328e-13
}
},
{
line: '呼玛路站',
location: {
lng: -767.814,
lat: 11712.309,
height: 305.718,
heading: 0.046401377391674714,
pitch: -0.5795598363240391,
roll: 2.3359092438113294e-13
}
},
{
line: '江杨南路站',
location: {
lng: -527.813,
lat: 12442.271,
height: 305.718,
heading: 0.04640137739167294,
pitch: -0.5795598363240408,
roll: 2.327027459614328e-13
}
},
{
line: '泰和路站',
location: {
lng: -380.245,
lat: 13835.754,
height: 305.718,
heading: 0.0464013773916756,
pitch: -0.5795598363240355,
roll: 2.3003821070233244e-13
}
},
{
line: '兰岗路站',
location: {
lng: -971.114,
lat: 15359.383,
height: 305.718,
heading: 0.046401377391673826,
pitch: -0.5795598363240253,
roll: 2.3003821070233244e-13
}
},
{
line: '铁山路站',
location: {
lng: -1465.804,
lat: 16350.035,
height: 305.718,
heading: 0.04640137739167294,
pitch: -0.5795598363240249,
roll: 2.318145675417327e-13
}
},
{
line: '铁通路站',
location: {
lng: -1845.008,
lat: 17157.820,
height: 305.718,
heading: 0.04640137739167294,
pitch: -0.5795598363240284,
roll: 2.318145675417327e-13
}
},
{
line: '宝山站',
location: {
lng: -2388.031,
lat: 18267.018,
height: 305.718,
heading: 0.04640137739167294,
pitch: -0.5795598363240346,
roll: 2.318145675417327e-13
}
}
]
},
{
name: '21号线', value: 35, key: "21号线",
ygLine: "yg_line21e",
lineLocation: {
lng: 15023.944,
lat: -57623.063,
height: 44620.419,
heading: 0.033869712611886094,
pitch: -0.6659651373168334,
roll: 6.283185307179476
},
lineList: [
{
line: '东靖路站',
location: {
lng: 11378.419,
lat: 5830.048,
height: 515.255,
heading: 0.03386971261189409,
pitch: -0.6659651373168538,
roll: 6.28318530717946
}
},
{
line: '杨高北路站',
location: {
lng: 12605.082,
lat: 2030.929,
height: 2727.862,
heading: 0.03386971261190652,
pitch: -0.6659651373168294,
roll: 6.283185307179441
}
},
{
line: '凌河路站',
location: {
lng: 12650.177,
lat: 2842.546,
height: 1164.631,
heading: 0.033869712611886094,
pitch: -0.6659651373168178,
roll: 6.283185307179471
}
},
{
line: '金桥站',
location: {
lng: 13058.654,
lat: 2312.861,
height: 349.114,
heading: 0.03386971261188165,
pitch: -0.6659651373168254,
roll: 6.28318530717948
}
},
{
line: '云桥路站',
location: {
lng: 13602.066,
lat: 1430.256,
height: 393.736,
heading: 0.033869712611880765,
pitch: -0.6659651373168236,
roll: 6.283185307179481
}
},
{
line: '浦东足球场站',
location: {
lng: 13856.413,
lat: 306.555,
height: 378.793,
heading: 0.033869712611886094,
pitch: -0.6659651373168769,
roll: 6.283185307179476
}
},
{
line: '龙东大道站',
location: {
lng: 13853.283,
lat: -1990.648,
height: 350.021,
heading: 0.03386971261189231,
pitch: -0.6659651373169657,
roll: 6.283185307179474
}
},
{
line: '广兰路站',
location: {
lng: 14015.807,
lat: -2952.085,
height: 269.949,
heading: 0.033869712611894975,
pitch: -0.6659651373170337,
roll: 6.283185307179474
}
},
{
line: '高斯路站',
location: {
lng: 13619.528,
lat: -3978.974,
height: 324.412,
heading: 0.03386971261188698,
pitch: -0.6659651373169444,
roll: 6.283185307179474
}
},
{
line: '张衡路站',
location: {
lng: 13430.626,
lat: -4981.887,
height: 310.796,
heading: 0.033869712611880765,
pitch: -0.6659651373168667,
roll: 6.2831853071794725
}
},
{
line: '学林路站',
location: {
lng: 13499.148,
lat: -5816.989,
height: 294.501,
heading: 0.0338697126118781,
pitch: -0.6659651373168596,
roll: 6.283185307179476
}
},
{
line: '军民路站',
location: {
lng: 13704.491,
lat: -6757.594,
height: 180.854,
heading: 0.03386971261187721,
pitch: -0.6659651373168649,
roll: 6.28318530717948
}
},
{
line: '康南路站',
location: {
lng: 13986.729,
lat: -7782.359,
height: 233.033,
heading: 0.06962781176883936,
pitch: -0.6649421293218261,
roll: 6.28318530717948
}
},
{
line: '张江站',
location: {
lng: 13875.018,
lat: -9973.339,
height: 298.076,
heading: 0.01875210426426044,
pitch: -0.6623663341352106,
roll: 6.28318530717948
}
},
{
line: '申江南路站',
location: {
lng: 14729.709,
lat: -10958.738,
height: 381.03,
heading: 0.018752104264261327,
pitch: -0.6623663341352106,
roll: 6.283185307179476
}
},
{
line: '迪士尼站',
location: {
lng: 18454.054,
lat: -10684.988,
height: 305.824,
heading: 0.018752104264263103,
pitch: -0.662366334135216,
roll: 6.283185307179476
}
},
{
line: '唐黄路站',
location: {
lng: 20362.443,
lat: -10351.414,
height: 359.852,
heading: 0.018752104264261327,
pitch: -0.6623663341352253,
roll: 6.28318530717948
}
},
{
line: '六陈路站',
location: {
lng: 22763.696,
lat: -9480.458,
height: 263.255,
heading: 0.01875210426426044,
pitch: -0.6623663341352115,
roll: 6.28318530717948
}
}
]
},
{
name: '23号线', value: 35, key: "23号线",
ygLine: 'yg_line23',
lineLocation: {
lng: -5147.915,
lat: -81794.987,
height: 52423.589,
heading: 0.03386971261176264,
pitch: -0.6624057821120344,
roll: 6.283185307179561
},
lineList: [
{
line: '上海体育场站',
location: {
lng: -2652.881,
lat: -6360.968,
height: 565.133,
heading: 6.207395672247364,
pitch: -0.601460807606359,
roll: 6.28318530717957
}
},
{
line: '龙漕路站',
location: {
lng: -2396.105,
lat: -7760.377,
height: 565.133,
heading: 6.040587725776135,
pitch: -0.7028156139112909,
roll: 6.28318530717957
}
},
{
line: '龙启路站',
location: {
lng: -2028.808,
lat: -8854.863,
height: 648.704,
heading: 6.0393951548709675,
pitch: -0.7069339417349498,
roll: 6.28318530717957
}
},
{
line: '上海植物园站',
location: {
lng: -1966.055,
lat: -9488.007,
height: 396.398,
heading: 5.938249164216664,
pitch: -0.93574615162375,
roll: 6.28318530717956
}
},
{
line: '龙瑞路站',
location: {
lng: -1737.597,
lat: -10995.498,
height: 396.398,
heading: 5.925243017052928,
pitch: -0.9633044811382274,
roll: 6.28318530717954
}
},
{
line: '徐浦大桥站',
location: {
lng: -1363.140,
lat: -12001.395,
height: 396.398,
heading: 5.934174837634418,
pitch: -1.0568243985255017,
roll: 6.283185307179512
}
},
{
line: '华泾路站',
location: {
lng: -1442.302,
lat: -12716.213,
height: 391.267,
heading: 5.569871791901576,
pitch: -1.551278961980088,
roll: 0
}
},
{
line: '景联路站',
location: {
lng: -1727.267,
lat: -14893.737,
height: 343.535,
heading: 0.03386971261175997,
pitch: -0.6624057821120246,
roll: 6.283185307179558
}
},
{
line: '龙吴路站',
location: {
lng: -1360.273,
lat: -16300.951,
height: 338.384,
heading: 0.03451401757414008,
pitch: -0.6637851160621473,
roll: 6.283185307179551
}
},
{
line: '澄江路站',
location: {
lng: -1177.746,
lat: -17130.075,
height: 338.384,
heading: 0.03410493635393763,
pitch: -0.6652223354488793,
roll: 6.283185307179551
}
},
{
line: '墨江路站',
location: {
lng: -1182.565,
lat: -18609.338,
height: 497.341,
heading: 0.04457320395223974,
pitch: -0.7136471289524446,
roll: 6.283185307179565
}
},
{
line: '吴泾北站',
location: {
lng: -906.992,
lat: -19538.285,
height: 494.64,
heading: 0.028514095563914488,
pitch: -0.7509243352681678,
roll: 6.283185307179565
}
},
{
line: '放鹤路站',
location: {
lng: -497.746,
lat: -21093.353,
height: 494.64,
heading: 0.043974155116834446,
pitch: -0.8048461925877088,
roll: 6.283185307179567
}
},
{
line: '紫龙路站',
location: {
lng: -267.546,
lat: -22446.938,
height: 494.64,
heading: 0.10600983526914742,
pitch: -0.9628875387511071,
roll: 6.2831853071795685
}
},
{
line: '江川东路站',
location: {
lng: -743.613,
lat: -23074.683,
height: 371.451,
heading: 6.18706998752768,
pitch: -1.0558827209170412,
roll: 6.2831853071795685
}
},
{
line: '紫竹高新区站',
location: {
lng: -1848.762,
lat: -23432.984,
height: 379.062,
heading: 6.187069987527683,
pitch: -1.055882720917043,
roll: 6.2831853071795685
}
},
{
line: '沪金高速站',
location: {
lng: -3335.081,
lat: -23957.943,
height: 370.35,
heading: 6.187069987527696,
pitch: -1.0558827209170407,
roll: 6.283185307179567
}
},
{
line: '东川路站',
location: {
lng: -4611.395,
lat: -24611.018,
height: 637.884,
heading: 6.187069987527702,
pitch: -1.0558827209170385,
roll: 6.283185307179565
}
},
{
line: '金平路站',
location: {
lng: -5327.277,
lat: -24689.566,
height: 403.636,
heading: 6.187069987527703,
pitch: -1.0558827209170358,
roll: 6.283185307179565
}
},
{
line: '华宁路站',
location: {
lng: -7477.029,
lat: -25264.480,
height: 303.56,
heading: 6.187069987527697,
pitch: -1.0558827209170372,
roll: 6.283185307179565
}
},
{
line: '文井路站',
location: {
lng: -8487.830,
lat: -25623.442,
height: 408.806,
heading: 6.187069987527697,
pitch: -1.0558827209170376,
roll: 6.283185307179563
}
},
{
line: '闵行开发区站',
location: {
lng: -10345.075,
lat: -26222.104,
height: 386.776,
heading: 6.1870699875277015,
pitch: -1.0558827209170207,
roll: 6.283185307179558
}
},
]
},
{
name: '崇明线', value: 35, key: "崇明线",
ygLine: "",
lineLocation: { // 崇明线
lng: 17738.680,
lat: -38520.332,
height: 39000.184,
heading: 0.03386971261176974,
pitch: -0.6624057821120326,
roll: 6.28318530717956
},
lineList: [
{
line: '金吉路站',
location: {
lng: 14667.133,
lat: 2636.624,
height: 815.309,
heading: 0.03386971261176264,
pitch: -0.6624057821120259,
roll: 6.283185307179565
},
},
{
line: '申江路站',
location: {
lng: 14634.786,
lat: 4672.239,
height: 528.489,
heading: 0.03386971261176086,
pitch: -0.6624057821120259,
roll: 6.28318530717957
}
},
{
line: '高宝路站',
location: {
lng: 14728.157,
lat: 5917.741,
height: 413.4,
heading: 0.03386971261176086,
pitch: -0.662405782112025,
roll: 6.283185307179572
}
},
{
line: '凌空北路站',
location: {
lng: 19285.023,
lat: 6192.229,
height: 439.499,
heading: 0.03386971261175997,
pitch: -0.6624057821120166,
roll: 6.283185307179572
}
},
{
line: '浦东大小盾构转换段',
location: {
lng: 20383.787,
lat: 7913.254,
height: 298.659,
heading: 0.03386971261176264,
pitch: -0.6624057821120064,
roll: 6.2831853071795685
}
},
{
line: '1#大小盾构转换段',
location: {
lng: 23194.319,
lat: 15204.968,
height: 324.227,
heading: 0.033869712611758196,
pitch: -0.6624057821119864,
roll: 6.283185307179572
}
},
{
line: '长兴岛站',
location: {
lng: 23867.358,
lat: 17291.925,
height: 230.018,
heading: 0.03386971261175553,
pitch: -0.66240578211199,
roll: 6.283185307179572
}
},
{
line: '长兴岛主变电所',
location: {
lng: 23998.129,
lat: 17587.735,
height: 229.783,
heading: 0.03386971261175553,
pitch: -0.6624057821119878,
roll: 6.283185307179572
}
}
]
},
]
}
//-------------在建车站弹窗-----------------
/**
* 车站信息
*/
export const stationDefault = {
site: "",
state: "",
stationType: "",
floorSpace: "0m²",
platformLength: "0m",
platformWidth: "0m",
constructionCycle: "",
stationExit: 0,
stationEntrance: 0
}
/**
* 参建单位
*/
export const participatingUnitsDefault = {
}
\ No newline at end of file
/**
* 建设指挥平台
*/
import { planarArrDecollateForIndex, planarArrDeconstruct, planarArrForObjectList } from "../../dataPackage/planaryArrayAnalysis"; import { planarArrDecollateForIndex, planarArrDeconstruct, planarArrForObjectList } from "../../dataPackage/planaryArrayAnalysis";
import { onceSheetBecomeOfblockData } from "../../util/analysisExcel"; import { onceSheetBecomeOfblockData } from "../../util/analysisExcel";
...@@ -21,9 +25,9 @@ function packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, ...@@ -21,9 +25,9 @@ function packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList,
} }
export function getQqzzTableData() { export function prophaseTableData() {
let blockDataList = onceSheetBecomeOfblockData('计划进度.xlsx', '前期管理'); let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/计划进度.xlsx', '前期管理');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
...@@ -35,9 +39,10 @@ export function getQqzzTableData() { ...@@ -35,9 +39,10 @@ export function getQqzzTableData() {
return result; return result;
} }
export function getDqtdTableData() {
export function relocationTableData() {
let blockDataList = onceSheetBecomeOfblockData('计划进度.xlsx', '动迁腾地'); let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/计划进度.xlsx', '动迁腾地');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
...@@ -50,9 +55,9 @@ export function getDqtdTableData() { ...@@ -50,9 +55,9 @@ export function getDqtdTableData() {
} }
export function xxjdTableData() { export function scheduleTableData() {
let blockDataList = onceSheetBecomeOfblockData('计划进度.xlsx', '形象进度'); let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/计划进度.xlsx', '形象进度');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
...@@ -65,27 +70,30 @@ export function xxjdTableData() { ...@@ -65,27 +70,30 @@ export function xxjdTableData() {
} }
export function getZmxfx() { export function milestoneTableData() {
let blockDataList = onceSheetBecomeOfblockData('质量安全.xlsx', '质量安全'); let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/计划进度.xlsx', '里程碑节点完成情况');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
let stringList = []; let stringList = [];
let decollatePlanarList =["旁通道", "基坑", "盾构区间"];//适配 表格 let decollatePlanarList =["里程碑节点完成情况"];//适配 表格
let titltListConfig = {}; let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList); let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result; return result;
} }
export function getDqfxjd() {
let blockDataList = onceSheetBecomeOfblockData('质量安全.xlsx', '质量安全'); export function fatalityTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/质量安全.xlsx', '质量安全');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
let stringList = []; let stringList = [];
let decollatePlanarList =["风险详细"];//适配 表格 let decollatePlanarList =["旁通道", "基坑", "盾构区间"];//适配 表格
let titltListConfig = {}; let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList); let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
...@@ -93,25 +101,23 @@ export function getDqfxjd() { ...@@ -93,25 +101,23 @@ export function getDqfxjd() {
} }
export function nfTableData() { export function riskTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/质量安全.xlsx', '质量安全');
let blockDataList = onceSheetBecomeOfblockData('投资管控面板.xlsx', '年份');
let keyValueOrTitleList = ["下拉年份"];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
let stringList = []; let stringList = [];
let decollatePlanarList =[];//适配 表格 let decollatePlanarList =["风险详细"];//适配 表格
let titltListConfig = {}; let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList); let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result; return result;
} }
export function gszsTableData() { export function financialestimatesTableData() {
let blockDataList = onceSheetBecomeOfblockData('投资管控面板.xlsx', '概算总数'); let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/投资管控.xlsx', '概算总数');
let keyValueOrTitleList = ["2021总线路", "2022总线路", "2023总线路", "2021各线路概算金额", "2022各线路概算金额", "2023各线路概算金额"];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = ["2021总线路", "2022总线路", "2023总线路", "2021各线路概算金额", "2022各线路概算金额", "2023各线路概算金额"];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
...@@ -123,9 +129,10 @@ export function gszsTableData() { ...@@ -123,9 +129,10 @@ export function gszsTableData() {
return result; return result;
} }
export function tkjsTableData() {
export function investmentcontrolTableData() {
let blockDataList = onceSheetBecomeOfblockData('投资管控面板.xlsx', '投控建设'); let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/投资管控.xlsx', '投控建设');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = ["2021投控建设", "2022投控建设", "2023投控建设"]; //适配 柱状图 折线图 let barChartList = ["2021投控建设", "2022投控建设", "2023投控建设"]; //适配 柱状图 折线图
...@@ -137,9 +144,10 @@ export function tkjsTableData() { ...@@ -137,9 +144,10 @@ export function tkjsTableData() {
return result; return result;
} }
export function jstjTableData() {
export function finalaccountsTableData() {
let blockDataList = onceSheetBecomeOfblockData('投资管控面板.xlsx', '决算统计'); let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/投资管控.xlsx', '决算统计');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
...@@ -155,10 +163,9 @@ export function jstjTableData() { ...@@ -155,10 +163,9 @@ export function jstjTableData() {
} }
export function investTableData() {
export function getTzwcqkTableData() {
let blockDataList = onceSheetBecomeOfblockData('业财融合.xlsx', '投资完成情况'); let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/业财融合.xlsx', '投资完成情况');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
...@@ -170,9 +177,10 @@ export function getTzwcqkTableData() { ...@@ -170,9 +177,10 @@ export function getTzwcqkTableData() {
return result; return result;
} }
export function getJstj() {
export function earlywarningTableData() {
let blockDataList = onceSheetBecomeOfblockData('业财融合.xlsx', '合同金额预警总览'); let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/业财融合.xlsx', '合同金额预警总览');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
...@@ -183,3 +191,62 @@ export function getJstj() { ...@@ -183,3 +191,62 @@ export function getJstj() {
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList); let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result; return result;
} }
export function earlywarningDetailTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/业财融合.xlsx', '合同金额预警总览浮窗数据');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["车站", "区间", "轨道", "通讯", "信号", "供电", "综合监控"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function mapTableData() {
let blockDataList = onceSheetBecomeOfblockData(`建设指挥平台/建设指挥平台地图.xlsx`, '地图');
let keyValueOrTitleList = ["基础数据"];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["线路列表"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function mapLineTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/建设指挥平台地图.xlsx', '地图线路');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["地图线路"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function mapSiteTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/建设指挥平台地图.xlsx', '站点坐标');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期", "19号线", "21号线", "23号线", "崇明线"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
/**
* 整体建设概览
*/
import { planarArrDecollateForIndex, planarArrDeconstruct, planarArrForObjectList } from "../../dataPackage/planaryArrayAnalysis"; import { planarArrDecollateForIndex, planarArrDeconstruct, planarArrForObjectList } from "../../dataPackage/planaryArrayAnalysis";
import { onceSheetBecomeOfblockData } from "../../util/analysisExcel"; import { onceSheetBecomeOfblockData } from "../../util/analysisExcel";
...@@ -22,7 +25,7 @@ function packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, ...@@ -22,7 +25,7 @@ function packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList,
} }
export function jsyyTableData() { export function jsyyTableData() {
let blockDataList = onceSheetBecomeOfblockData('整体建设概览.xlsx', '建设运营'); let blockDataList = onceSheetBecomeOfblockData('整体建设概览/整体建设概览.xlsx', '建设运营');
let keyValueOrTitleList = ["基础数据","工程建设","全面创优","专业设施设备","建设进度","建设进度占比","质量","质量合格率","各项目验收达标情况","安全","风险分布","安全处置数据","监测数据异常超标", "各线路建设进度汇总目标值"];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = ["基础数据","工程建设","全面创优","专业设施设备","建设进度","建设进度占比","质量","质量合格率","各项目验收达标情况","安全","风险分布","安全处置数据","监测数据异常超标", "各线路建设进度汇总目标值"];//适配 饼图 键值以及需要多个key的
let barChartList = ["各线路建设进度汇总"]; //适配 柱状图 折线图 let barChartList = ["各线路建设进度汇总"]; //适配 柱状图 折线图
...@@ -36,7 +39,7 @@ export function jsyyTableData() { ...@@ -36,7 +39,7 @@ export function jsyyTableData() {
export function lcbsjTableData() { export function lcbsjTableData() {
let blockDataList = onceSheetBecomeOfblockData('整体建设概览.xlsx', '里程碑事件荣誉成果'); let blockDataList = onceSheetBecomeOfblockData('整体建设概览/整体建设概览.xlsx', '里程碑事件荣誉成果');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
...@@ -50,7 +53,7 @@ export function lcbsjTableData() { ...@@ -50,7 +53,7 @@ export function lcbsjTableData() {
export function jjcyTableData() { export function jjcyTableData() {
let blockDataList = onceSheetBecomeOfblockData('整体建设概览.xlsx', '经济产业'); let blockDataList = onceSheetBecomeOfblockData('整体建设概览/整体建设概览.xlsx', '经济产业');
let keyValueOrTitleList = ["基础数据", "全国GDP", "上海GDP"];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = ["基础数据", "全国GDP", "上海GDP"];//适配 饼图 键值以及需要多个key的
let barChartList = ["上海地铁投资建设占上海GDP变化趋势", "地铁开通前后区域价格变化趋势"]; //适配 柱状图 折线图 let barChartList = ["上海地铁投资建设占上海GDP变化趋势", "地铁开通前后区域价格变化趋势"]; //适配 柱状图 折线图
...@@ -64,7 +67,7 @@ export function jjcyTableData() { ...@@ -64,7 +67,7 @@ export function jjcyTableData() {
export function lscxTableData() { export function lscxTableData() {
let blockDataList = onceSheetBecomeOfblockData('整体建设概览.xlsx', '绿色出行'); let blockDataList = onceSheetBecomeOfblockData('整体建设概览/整体建设概览.xlsx', '绿色出行');
let keyValueOrTitleList = ["出行方式占比", "绿色节能", "地铁节能减排趋势"];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = ["出行方式占比", "绿色节能", "地铁节能减排趋势"];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
...@@ -78,7 +81,7 @@ export function lscxTableData() { ...@@ -78,7 +81,7 @@ export function lscxTableData() {
export function ylghTableData() { export function ylghTableData() {
let blockDataList = onceSheetBecomeOfblockData('整体建设概览.xlsx', '引领规划'); let blockDataList = onceSheetBecomeOfblockData('整体建设概览/整体建设概览.xlsx', '引领规划');
let keyValueOrTitleList = ["城市规划", "轮播图"];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = ["城市规划", "轮播图"];//适配 饼图 键值以及需要多个key的
let barChartList = ["未来规划"]; //适配 柱状图 折线图 let barChartList = ["未来规划"]; //适配 柱状图 折线图
...@@ -92,7 +95,7 @@ export function ylghTableData() { ...@@ -92,7 +95,7 @@ export function ylghTableData() {
export function dtTableData() { export function dtTableData() {
let blockDataList = onceSheetBecomeOfblockData('整体建设概览.xlsx', '地图'); let blockDataList = onceSheetBecomeOfblockData('整体建设概览/整体建设概览.xlsx', '地图');
let keyValueOrTitleList = ["基础数据", "历年建设里程列表"];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = ["基础数据", "历年建设里程列表"];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
......
/**
* 公共数据
*/
import { planarArrDecollateForIndex, planarArrDeconstruct, planarArrForObjectList } from "../../dataPackage/planaryArrayAnalysis";
import { onceSheetBecomeOfblockData } from "../../util/analysisExcel";
function packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList) {
let result = {};
for (let i = 0; i < blockDataList.length; i++) {
let {blockData, blockTitle} = blockDataList[i];
if (keyValueOrTitleList.indexOf(blockTitle) > -1) {
let titleList = titltListConfig[blockTitle] || [];
result[blockTitle] = planarArrForObjectList(blockData, 0, titleList);
}
else if (barChartList.indexOf(blockTitle) > -1) {
result[blockTitle] = planarArrDeconstruct(blockData);
}
else if (stringList.indexOf(blockTitle) > -1) result[blockTitle] = planarArrForObjectList(blockData);
else if (decollatePlanarList.indexOf(blockTitle) > -1) result[blockTitle] = planarArrDecollateForIndex(blockData);
}
return result;
}
export function lineTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/计划进度.xlsx', '线路');
let keyValueOrTitleList = ["选择线路"];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =[];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function yearTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/投资管控.xlsx', '年份');
let keyValueOrTitleList = ["下拉年份"];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =[];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
\ No newline at end of file
...@@ -37,3 +37,23 @@ ...@@ -37,3 +37,23 @@
return dataList; return dataList;
} }
/**
*
* @param titleList
* @param dataList
* @returns
*/
export function change(titleList, dataList) {
let data = [];
dataList.forEach(subList => {
let onceData:any = {};
subList.forEach( (item, index)=> {
let key = titleList[index];
onceData[key] = item;
} );
data.push(onceData);
});
return data;
}
...@@ -7,6 +7,7 @@ import * as plannedprogressBiz from '../biz/construct/plannedprogress'; ...@@ -7,6 +7,7 @@ import * as plannedprogressBiz from '../biz/construct/plannedprogress';
import * as qualityBiz from '../biz/construct/quality'; import * as qualityBiz from '../biz/construct/quality';
import * as investBiz from '../biz/construct/invest'; import * as investBiz from '../biz/construct/invest';
import * as businessfinanceBiz from '../biz/construct/businessFinance'; import * as businessfinanceBiz from '../biz/construct/businessFinance';
import * as mapBiz from '../biz/construct/map'
export function setRouter(httpServer) { export function setRouter(httpServer) {
/**计划进度指标面板 */ /**计划进度指标面板 */
...@@ -21,15 +22,17 @@ export function setRouter(httpServer) { ...@@ -21,15 +22,17 @@ export function setRouter(httpServer) {
httpServer.get('/construct/quality/engineering', asyncHandler(qualityBiz.getEngineering) );//工程安全状态 httpServer.get('/construct/quality/engineering', asyncHandler(qualityBiz.getEngineering) );//工程安全状态
/**投资管控指标面板 */ /**投资管控指标面板 */
httpServer.get('/construct/invest/year', asyncHandler(investBiz.getYear) );//下拉框选择年份
httpServer.get('/construct/invest/financialestimates', asyncHandler(investBiz.getFinancialestimates) ); //概算总数 httpServer.get('/construct/invest/financialestimates', asyncHandler(investBiz.getFinancialestimates) ); //概算总数
httpServer.get('/construct/invest/investmentcontrol', asyncHandler(investBiz.getInvestmentcontrol) ); //投控建设 httpServer.get('/construct/invest/investmentcontrol', asyncHandler(investBiz.getInvestmentcontrol) ); //投控建设
httpServer.get('/construct/invest/finalaccounts', asyncHandler(investBiz.getFinalaccounts) ); //决算统计 httpServer.get('/construct/invest/finalaccounts', asyncHandler(investBiz.getFinalaccounts) ); //决算统计
/**业财融合指标面板 */ /**业财融合指标面板 */
httpServer.get('/construct/businessfinance/invest', asyncHandler(businessfinanceBiz.getTzwcqk) );//投资完成情况 httpServer.get('/construct/businessfinance/invest', asyncHandler(businessfinanceBiz.getInvest) );//投资完成情况
httpServer.get('/construct/businessfinance/earlywarning', asyncHandler(businessfinanceBiz.getHtjeyjzl) );//合同金额预警总览 httpServer.get('/construct/businessfinance/earlywarning', asyncHandler(businessfinanceBiz.getEarlywarning) );//合同金额预警总览
httpServer.get('/construct/businessfinance/detailed', asyncHandler(businessfinanceBiz.getDetailedData) );//合同金额预警总览详细浮窗 httpServer.get('/construct/businessfinance/detailed', asyncHandler(businessfinanceBiz.getDetailedData) );//合同金额预警总览详细浮窗
/**地图 */
httpServer.get('/construct/map', asyncHandler(mapBiz.getMap) );
} }
/**
* 公共接口路由
*/
import * as asyncHandler from 'express-async-handler';
import * as publicBiz from '../biz/public';
export function setRouter(httpServer) {
httpServer.get('/public/line', asyncHandler(publicBiz.getLine));//线路
httpServer.get('/public/year', asyncHandler(publicBiz.getYear) );//下拉框选择年份
}
\ No newline at end of file
...@@ -2,8 +2,13 @@ ...@@ -2,8 +2,13 @@
* 总路由入口 * 总路由入口
*/ */
import * as publicRouters from './public';
import * as constructRouters from './construct'; import * as constructRouters from './construct';
import * as stationPopupRouters from './stationPopup';
export function setRouter(httpServer){ export function setRouter(httpServer){
publicRouters.setRouter(httpServer);
constructRouters.setRouter(httpServer); constructRouters.setRouter(httpServer);
stationPopupRouters.setRouter(httpServer);
} }
\ No newline at end of file
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