Commit d8153d19 by 孙香冬

no message

parent c3401185
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "启动程序",
"program": "${workspaceFolder}/src/main.ts",
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]
}
\ No newline at end of file
{
}
\ No newline at end of file
<config>
<port>40002</port>
<port>40005</port>
</config>
\ No newline at end of file
/**
* 建设指挥 逻辑
* 处理数据
*/
\ No newline at end of file
import { getJstj, getTzwcqkTableData } from "../../data/table/constructData";
export async function getTzwcqk(req, res) {
let line = req.query.line || "全部";
let year = req.query.year || 2023;
let tableData = getTzwcqkTableData();
let dataMap = {};
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 result:any = {};
if (line == "全部") {
let data:any = {"year":{}, "overall":{} }
for (let key in dataMap) {
let {year, overall} = dataMap[key];
for (let subKey in year) {
if (!data["year"][subKey]) data["year"][subKey] = 0;
data["year"][subKey] += year[subKey];
}
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"] = {
"completionAmount": 0,//年度完成额
"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),//年度计划动迁
};
}
res.send(result);
}
export async function getHtjeyjzl(req, res) {
let line = req.query.line || "全部";
let excelData = getJstj();
let result:any = {};
result["base"] = {
"accumulatedContractAmountSigned":0,//累计签合同金额
"estimatedTotalValue":0,//概算总值
"totalTargetCost":0,//目标成本总值
};
let titleList = ["车站", "区间", "轨道", "通讯", "信号", "供电", "综合监控"];
result["detailedList"] = [];
if (line == "全部") {
let map = {};
for (let key in excelData) {
let dataList = excelData[key].bodyList[excelData[key].bodyList.length -1];
result["base"].accumulatedContractAmountSigned = dataList[1];
result["base"].estimatedTotalValue = dataList[2];
result["base"].totalTargetCost = dataList[3];
excelData[key].bodyList.forEach(subList => {
let title = subList[0];
if (title == "总数") return;
if (!map[title]) map[title] = {ht:0, gs:0, cb:0};
map[title].ht += subList[1];
map[title].gs += subList[2];
map[title].cb += subList[3];
});
}
titleList.forEach(str => {
let item = map[str];
result["detailedList"].push({
type:str,
estimated:item.gs,//概算
targetCost:item.cb,//目标成本
accumulatedContractAmountSigned:item.ht,//累计签合同金额
});
});
} else {
let checkList = excelData[line]? excelData[line].bodyList : [0,0,0,0];
let allList = checkList[checkList.length-1];
result["base"].accumulatedContractAmountSigned = allList[1];
result["base"].estimatedTotalValue = allList[2];
result["base"].totalTargetCost = allList[3];
let map = {};
checkList.forEach(subList => {
let title = subList[0];
if (title == "总数") return;
if (!map[title]) map[title] = {ht:0, gs:0, cb:0};
map[title].ht = subList[1];
map[title].gs = subList[2];
map[title].cb = subList[3];
});
titleList.forEach(str => {
let item = map[str];
result["detailedList"].push({
type:str,
estimated:item.gs,//概算
targetCost:item.cb,//目标成本
accumulatedContractAmountSigned:item.ht,//累计签合同金额
});
});
}
result["title"] = ["累计签合同值(含变更)", "概算值", "目标成本"]
res.send(result);
}
export async function getDetailedData(req, res) {
let line = req.query.line || "";
let result:any = {};
result["data"] = {
"车站":[
{
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,//目标成本
},
{
name:"高架区间",//费用名称
accumulatedSignedContractValue:15.11,//累计签约合同值
estimated:200,//概算值
budgetDifference:122,//概算差额
targetCost:1000,//目标成本
},
{
name:"高架区间",//费用名称
accumulatedSignedContractValue:15.11,//累计签约合同值
estimated:200,//概算值
budgetDifference:122,//概算差额
targetCost:1000,//目标成本
}
]
}
res.send(result);
}
import { gszsTableData, jstjTableData, nfTableData, tkjsTableData } from "../../data/table/constructData";
import { keyValuePackage, onceYBarChartPackage, stringListPackage } from "../../dataPackage/inFrontOut";
import { getKeyValueOut, getOnceYBarChartOut, getStringOut } from "../../dataPackage/out";
/**年份 */
export function getYear(req, res) {
let excelData = nfTableData();
let ret:any = {};
let nfPackageData = stringListPackage(excelData['下拉年份'].dataList);
ret['nf'] = getStringOut('下拉年份', nfPackageData);
res.send(ret);
}
/**概算总数 */
export function getFinancialestimates(req, res) {
let year = req.query.year || 2023; //年份
let excelData = gszsTableData();
let ret:any = {};
let index = 1;
for (let key in excelData) {
if (key.search(year) > -1) { //匹配年份
let gszsPackageData = keyValuePackage(excelData[key].dataList);
ret["api" + index] = getKeyValueOut(key, gszsPackageData);
index++;
}
}
res.send(ret);
}
/**投控建设 */
export function getInvestmentcontrol(req, res) {
let year = req.query.year || 2023; //年份
let excelData = tkjsTableData();
let ret:any = {};
let index = 1;
for (let key in excelData) {
if (key.search(year) > -1) { //匹配年份
let tkjsPackageData = onceYBarChartPackage( excelData[key], '','');
ret["api" + index] = getOnceYBarChartOut(key, tkjsPackageData);
index ++;
}
}
res.send(ret);
}
/**决算统计 */
export function getFinalaccounts(req, res) {
let year = req.query.year || 2023; //年份
let line = req.query.line || "全部"; //线路
let excelData = jstjTableData();
let ret:any = {};
let tkjsExcelData:any = {};
let index = 1;
for (let key in excelData) {
if (key.search(year) > -1) { //匹配年份
let lineData = excelData[key];
lineData.forEach( info => {
let {name, data} = info;
if (name == line) { //判断线路
tkjsExcelData = info;
}
})
ret["api" + index] = tkjsExcelData;
if (index == 2) {
let itemTotal = 0;
tkjsExcelData.data.forEach(item => {
itemTotal += item.value || 0;
});
ret["api" + index].total = itemTotal;
}
index++;
}
}
res.send(ret);
}
/**
* 建设指挥 质量安全指标面板 逻辑
* 处理数据
*/
import { getDqfxjd, getZmxfx } from "../../data/table/constructData";
import { keyValuePackage } from "../../dataPackage/inFrontOut";
import { getOnceYBarChartOut } from "../../dataPackage/out";
export function getFatality(req, res) {
let line = req.query.line || "全部";
let table = getZmxfx();
let 全网 = [];
let 致命性风险 = [];
for (let key in table) {
let {bodyList} = table[key];
let {count, thisLineCount} = countData(bodyList, line);
全网.push({key, value:count, unit:""});
let thisCount = line == "全部" ? count : thisLineCount;
致命性风险.push({key, value:thisCount, unit:""})
}
let zmxfxfbPackageData = {dataInfo: {"全网": 全网, "致命性风险": 致命性风险}, xUnit: "", yUnit: ""};
let ret = {};
ret['zmxfxfb'] = getOnceYBarChartOut('致命性风险分布', zmxfxfbPackageData);
res.send(ret);
}
export function getRisk(req, res) {
let line = req.query.line || "全线网";
if (line == "全部 ") line == "全线网";
let table = getDqfxjd();
let dataIndex = table["风险详细"].headerList.indexOf(line);
let 基坑变形 = dataIndex == -1 ? 0 : table["风险详细"].bodyList[0][dataIndex];
let 地层损失率 = dataIndex == -1 ? 0 : table["风险详细"].bodyList[1][dataIndex];
let 旁通道地表沉降 = dataIndex == -1 ? 0 : table["风险详细"].bodyList[2][dataIndex];
let ret = {};
ret['jkbx'] = {title: '基坑变形', dataList: {key:"基坑变形", value:基坑变形}};
ret['dcssl'] = {title: '地层损失率', dataList: {key:"地层损失率", value:地层损失率}};
ret['ptddbcx'] = {title: '旁通道地表沉降', dataList: {key:"旁通道地表沉降", value:旁通道地表沉降}};
table = getZmxfx();
for (let key in table ) {
let {allCount, allRisks, count, risks} = descData(table[key].bodyList, line);
let keyStr = key == "盾构区间" ? "区间" : key;
let onceList = [
{key:`${keyStr}总数`, value:line == "全线网" ? allCount : count },
{key:`当前数量`, value:line == "全线网" ? allRisks : risks },
];
let oncePackage = keyValuePackage(onceList);
let packageData = {title: `${keyStr}详细数据`, dataList: oncePackage};
switch(key) {
case "基坑":ret["jkxxsj"] = packageData;break;
case "盾构区间":ret["qjxxsj"] = packageData;break;
case "旁通道":ret["ptdxxsj"] = packageData;break;
}
}
res.send(ret);
}
export function getEngineering(req, res) {
let line = req.query.line || "全线网";
if (line == "全部 ")line == "全线网";
let table = getZmxfx();
let ret = {};
for (let key in table ) {
let {allCount, allRisks, count, risks} = descData(table[key].bodyList, line);
let value = line == "全线网" ? allRisks : risks;
let title = `${key}风险期数量`;
let packageData = {title, dataList: {key:`风险期数量`, value} };
switch(key) {
case "基坑":ret["jkfxqsl"] = packageData;break;
case "盾构区间":ret["dgqjfxqsl"] = packageData;break;
case "旁通道":ret["ptdfxqsl"] = packageData;break;
}
let {allControl, allFocus, allSecure, control, focus, secure } = getFXQData(table[key].bodyList, line);
let onceList = [
{rate:100, key:`安全`, value:line == "全线网" ? allSecure : secure },
{rate:100, key:`风险可控`, value:line == "全线网" ? allControl : control },
{rate:100, key:`重点关注`, value:line == "全线网" ? allFocus : focus },
];
let oncePackage = keyValuePackage(onceList);
let descPackageData = {title: `${key}详细数据`, dataList: oncePackage};
descPackageData.dataList.forEach(info => {
info["num"] = info.value;
})
switch(key) {
case "基坑":ret["jkxxsj"] = descPackageData;break;
case "盾构区间":ret["dgqjxxsj"] = descPackageData;break;
case "旁通道":ret["ptdxxsj"] = descPackageData;break;
}
}
res.send(ret);
}
function countData(dataList, name) {
let count = 0;
let thisLineCount = 0;
dataList.forEach(subList => {
let thisCount = 0;
for (let i = 6; i <= 9; i++) {
thisCount += subList[i] || 0;
}
count += thisCount;
if (subList[0] == name) thisLineCount = thisCount;
});
return {count, thisLineCount};
}
function descData(dataList, name) {
let allCount = 0;
let allRisks = 0;
let count = 0;
let risks = 0;
dataList.forEach(subList => {
allCount += subList[1];
allRisks += subList[2];
if (subList[0] == name) {
count += subList[1];
risks += subList[2];
}
});
return { allCount, allRisks, count, risks};
}
function getFXQData(dataList, name) {
let allControl = 0;
let allFocus = 0;
let allSecure = 0;
let control = 0;
let focus = 0;
let secure = 0;
dataList.forEach(subList => {
allSecure += subList[3];
allControl += subList[4];
allFocus += subList[5];
if (subList[0] == name) {
secure += subList[3];
control += subList[4];
focus += subList[5];
}
});
return { allControl, allFocus, allSecure, control, focus, secure };
}
\ No newline at end of file
/**
* 总体概览 逻辑
* 处理数据
*/
\ No newline at end of file
/**
* 整体概览 逻辑
* 处理数据
*/
import { jjcyTableData, jsyyTableData, lcbsjTableData } from "../../data/table/overviewData";
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, tablePackage } from "../../dataPackage/inFrontOut";
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut } from "../../dataPackage/out";
/**建设运营 */
export function getOperate(req, res) {
let excelData = jsyyTableData();
let ret:any = {};
let jcsjPackageData = {};
let jcsjPackage = excelData['基础数据'].dataList;
let {key, value} = jcsjPackage[0];
let dataUnit = value.slice(-1, value.length);
let dataNum = value.slice(0, -1);
let yoy = jcsjPackage[1].value;
jcsjPackageData = {key, value:dataNum, unit:dataUnit, yoy};
ret['jcsj'] = {title:"基础数据", dataList:jcsjPackageData};
let gcjsPackageData = keyValuePackage(excelData['工程建设'].dataList);
ret['gcjs'] = getKeyValueOut('工程建设', gcjsPackageData);
let qmcyPackageData = keyValuePackage(excelData['全面创优'].dataList);
ret['qmcy'] = getKeyValueOut('全面创优', qmcyPackageData);
let zysssbPackageData = keyValuePackage(excelData['专业设施设备'].dataList);
ret['zysssb'] = getKeyValueOut('专业设施设备', zysssbPackageData);
let jsjdPackageData = keyValuePackage(excelData['建设进度'].dataList);
ret['jsjd'] = getKeyValueOut('建设进度', jsjdPackageData);
let jsjdzbPackageData = keyValuePackage(excelData['建设进度占比'].dataList);
ret['jsjdzb'] = getKeyValueOut('建设进度占比', jsjdzbPackageData);
let zlPackageData = keyValuePackage(excelData['质量'].dataList);
ret['zl'] = getKeyValueOut('质量', zlPackageData);
let zlhglPackageData = keyValuePackage(excelData['质量合格率'].dataList);
ret['zlhgl'] = getKeyValueOut('质量合格率', zlhglPackageData);
let gxysdbqkPackageData = keyValuePackage(excelData['各项目验收达标情况'].dataList);
ret['gxysdbqk'] = getKeyValueOut('各项目验收达标情况', gxysdbqkPackageData);
let aqPackageData = keyValuePackage(excelData['安全'].dataList);
ret['aq'] = getKeyValueOut('安全', aqPackageData);
let aqczsjPackageData = keyValuePackage(excelData['安全处置数据'].dataList);
ret['aqczsj'] = getKeyValueOut('安全处置数据', aqczsjPackageData);
let fxfbPackageData = keyValuePackage(excelData['风险分布'].dataList);
fxfbPackageData.sort( (a, b) => {
return b.value - a.value;
})
ret['fxfb'] = {title:"风险分布", dataList:fxfbPackageData, maxNum: fxfbPackageData[0].value};
let jcsjyccbPackageData = keyValuePackage(excelData['监测数据异常超标'].dataList);
jcsjyccbPackageData.sort( (a, b) => {
return b.value - a.value;
})
ret['jcsjyccb'] = {title:"监测数据异常超标", dataList:jcsjyccbPackageData, maxNum:jcsjyccbPackageData[0].value};
let gxljsjdhzPackageData = onceYBarChartPackage( excelData['各线路建设进度汇总'], '','');
ret['gxljsjdhz'] = getOnceYBarChartOut('各线路建设进度汇总', gxljsjdhzPackageData);
let mbzPackageData = keyValuePackage(excelData['各线路建设进度汇总目标值'].dataList);
ret['mbz'] = getKeyValueOut('各线路建设进度汇总目标值', mbzPackageData);
res.send(ret);
}
/**
* 整体概览 逻辑
* 处理数据
*/
import { jjcyTableData } from '../../data/table/overviewData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage } from '../../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut } from '../../dataPackage/out';
/*经济产业*/
export function getEconomy(req, res) {
let excelData = jjcyTableData();
let ret:any = {};
let jcsjPackageData = keyValuePackage(excelData['基础数据'].dataList);
ret['jcsj'] = getKeyValueOut('基础数据', jcsjPackageData);
let shdttzjsGDPPackageData = onceYBarChartPackage( excelData['上海地铁投资建设占上海GDP变化趋势'], '','');
ret['shdttzjsGDP'] = getOnceYBarChartOut('上海地铁投资建设占上海GDP变化趋势', shdttzjsGDPPackageData);
let dtktqhqyjgbhPackageData = doubleYBarCharPackage( excelData['地铁开通前后区域价格变化趋势'], '开通地铁后房价上浮', '元/㎡','%','');
ret['dtktqhqyjgbh'] = getDoubleYBarChartOut('地铁开通前后区域价格变化趋势', dtktqhqyjgbhPackageData);
let qgGDPPackageData = keyValuePackage(excelData['全国GDP'].dataList);
ret['qgGDP'] = getKeyValueOut('全国GDP', qgGDPPackageData);
let shGDPPackageData = keyValuePackage(excelData['上海GDP'].dataList);
ret['shGDP'] = getKeyValueOut('上海GDP', shGDPPackageData);
res.send(ret);
}
\ No newline at end of file
/**
* 整体概览 逻辑
* 处理数据
*/
import { lscxTableData } from '../../data/table/overviewData';
import { keyValuePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut, getStringOut } from '../../dataPackage/out';
/**绿色出行 */
export function getGreenTravel(req, res) {
let excelData = lscxTableData();
let ret:any = {};
let cxfszbPackageData = keyValuePackage(excelData['出行方式占比'].dataList);
ret['cxfszb'] = getKeyValueOut('出行方式占比', cxfszbPackageData);
ret['lsjn'] = getStringOut("绿色节能", excelData['绿色节能'].dataList);
let dtjnjpqsPackageData = keyValuePackage(excelData['地铁节能减排趋势'].dataList);
ret['dtjnjpqs'] = getKeyValueOut('地铁节能减排趋势', dtjnjpqsPackageData);
res.send(ret);
}
\ No newline at end of file
/**
* 整体概览 逻辑
* 处理数据
*/
import { ylghTableData } from '../../data/table/overviewData';
import { getDoubleYBarChartOut, getKeyValueOut, getObjectListOut, getOnceYBarChartOut, getStringOut } from '../../dataPackage/out';
import { separateDataAndUint } from '../../dataPackage/tool';
/**引领规划 */
export function getLeadingPlanning(req, res) {
let excelData = ylghTableData();
let ret:any = {};
ret['csgh'] = getStringOut("城市规划", excelData['城市规划'].dataList);
ret['lbt'] = getStringOut("轮播图", excelData['轮播图'].dataList);
let wlghPackageData = excelData['未来规划'];
let wlghData = [];
wlghPackageData.forEach( info => {
let {name, data} = info;
let wlghList = [];
data.forEach( item => {
let {key, value} = item;
let {dataNum, dataUnit} = separateDataAndUint(value);
wlghList.push({key, value:dataNum, unit:dataUnit});
})
wlghData.push({name, data: wlghList});
})
ret['wlgh'] = {title:'未来规划', dataList:wlghData};
res.send(ret);
}
\ No newline at end of file
/**
* 整体概览 逻辑
* 处理数据
*/
import { dtTableData } from '../../data/table/overviewData';
import { keyValuePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut } from '../../dataPackage/out';
/**地图 */
export function getData(req, res) {
let excelData = dtTableData();
let ret:any = {};
let jcsjPackageData = keyValuePackage(excelData['基础数据'].dataList);
ret['jcsj'] = getKeyValueOut('基础数据', jcsjPackageData);
let dtPackageData = keyValuePackage(excelData['历年建设里程列表'].dataList);
ret['lnjslc'] = getKeyValueOut('历年建设里程列表', dtPackageData);
res.send(ret);
}
\ No newline at end of file
/**
* 整体概览 逻辑
* 处理数据
*/
import { lcbsjTableData } from "../../data/table/overviewData";
import { tablePackage } from "../../dataPackage/inFrontOut";
/**里程碑事件荣誉成国 */
export function getMilestone(req, res) {
let excelData = lcbsjTableData();
let ret:any = {};
let lcbsjTableDataList = tablePackage(excelData["里程碑事件"].headerList[0], excelData["里程碑事件"].bodyList);
ret['lcbsj'] = {title: '里程碑事件', dataList: lcbsjTableDataList};
let rycgTableDataList = tablePackage(excelData["荣誉成果"].headerList[0], excelData["荣誉成果"].bodyList);
ret['rycg'] = {title: '荣誉成果', dataList: rycgTableDataList};
res.send(ret);
}
\ No newline at end of file
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 getQqzzTableData() {
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 getDqtdTableData() {
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 xxjdTableData() {
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 getZmxfx() {
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 getDqfxjd() {
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 nfTableData() {
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 gszsTableData() {
let blockDataList = onceSheetBecomeOfblockData('投资管控面板.xlsx', '概算总数');
let keyValueOrTitleList = ["2021总线路", "2022总线路", "2023总线路", "2021各线路概算金额", "2022各线路概算金额", "2023各线路概算金额"];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =[];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function tkjsTableData() {
let blockDataList = onceSheetBecomeOfblockData('投资管控面板.xlsx', '投控建设');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = ["2021投控建设", "2022投控建设", "2023投控建设"]; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =[];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function jstjTableData() {
let blockDataList = onceSheetBecomeOfblockData('投资管控面板.xlsx', '决算统计');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = ["2021合同数据", "2022合同数据", "2023合同数据", "2021合同决算统计", "2022合同决算统计", "2023合同决算统计", "2021业务系统数", "2022业务系统数", "2023业务系统数"]; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =[];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function getTzwcqkTableData() {
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 getJstj() {
let blockDataList = onceSheetBecomeOfblockData('业财融合.xlsx', '合同金额预警总览');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["崇明线", "19号线", "18号线二期", "23号线", "21号线"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
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 jsyyTableData() {
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 lcbsjTableData() {
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 jjcyTableData() {
let blockDataList = onceSheetBecomeOfblockData('整体建设概览.xlsx', '经济产业');
let keyValueOrTitleList = ["基础数据", "全国GDP", "上海GDP"];//适配 饼图 键值以及需要多个key的
let barChartList = ["上海地铁投资建设占上海GDP变化趋势", "地铁开通前后区域价格变化趋势"]; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =[];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function lscxTableData() {
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 ylghTableData() {
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 dtTableData() {
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
/**
* 建设智慧 路由
*/
\ No newline at end of file
* 建设指挥 路由
*/
import * as asyncHandler from 'express-async-handler';
import * as plannedprogressBiz from '../biz/construct/plannedprogress';
import * as qualityBiz from '../biz/construct/quality';
import * as investBiz from '../biz/construct/invest';
import * as businessfinanceBiz from '../biz/construct/businessFinance';
export function setRouter(httpServer) {
/**计划进度指标面板 */
httpServer.get('/construct/plannedprogress/prophase', asyncHandler(plannedprogressBiz.getProphase) );//前期管理
httpServer.get('/construct/plannedprogress/relocation', asyncHandler(plannedprogressBiz.getRelocation) );//动迁腾地
httpServer.get('/construct/plannedprogress/schedule', asyncHandler(plannedprogressBiz.getSchedule) );//形象进度
httpServer.get('/construct/plannedprogress/milestone', asyncHandler(plannedprogressBiz.getMilestone) );//里程碑节点完成情况
/**质量安全指标面板 */
httpServer.get('/construct/quality/fatality', asyncHandler(qualityBiz.getFatality) );//致命性风险分布
httpServer.get('/construct/quality/risk', asyncHandler(qualityBiz.getRisk) );//当前风险节点
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/investmentcontrol', asyncHandler(investBiz.getInvestmentcontrol) ); //投控建设
httpServer.get('/construct/invest/finalaccounts', asyncHandler(investBiz.getFinalaccounts) ); //决算统计
/**业财融合指标面板 */
httpServer.get('/construct/businessfinance/invest', asyncHandler(businessfinanceBiz.getTzwcqk) );//投资完成情况
httpServer.get('/construct/businessfinance/earlywarning', asyncHandler(businessfinanceBiz.getHtjeyjzl) );//合同金额预警总览
httpServer.get('/construct/businessfinance/detailed', asyncHandler(businessfinanceBiz.getDetailedData) );//合同金额预警总览详细浮窗
}
/**
* 总体概览路由
*/
\ No newline at end of file
* 整体概览路由
*/
import * as asyncHandler from 'express-async-handler';
import * as constructionoperationBiz from '../biz/overview/constructionOperation';
import * as milestoneBiz from '../biz/overview/milestone';
import * as economyBiz from '../biz/overview/economy';
import * as greenTravelBiz from '../biz/overview/greenTravel';
import * as leadingPlanningBiz from '../biz/overview/leadingPlanning';
import * as mapBiz from '../biz/overview/map';
export function setRouter(httpServer) {
httpServer.get('/overview/constructionoperation', asyncHandler(constructionoperationBiz.getOperate));//建设运营
httpServer.get('/overview/milestone', asyncHandler(milestoneBiz.getMilestone));//里程碑事件&荣誉成果
httpServer.get('/overview/economy', asyncHandler(economyBiz.getEconomy));//经济产业
httpServer.get('/overview/greentravel', asyncHandler(greenTravelBiz.getGreenTravel));//绿色出行
httpServer.get('/overview/leadingplanning', asyncHandler(leadingPlanningBiz.getLeadingPlanning));//引领/规划
httpServer.get('/overview/map', asyncHandler(mapBiz.getData));//地图
}
\ No newline at end of file
/**
* 总路由入口
*/
import * as asyncHandler from 'express-async-handler'
import * as constructRouters from './construct';
export function setRouter(httpServer){
/**建设指挥 */
httpServer.get('/construct/plannedprogress/qqgl', asyncHandler(jhjdBiz.getQqzz) );
httpServer.get('/construct/plannedprogress/dxtd', asyncHandler(jhjdBiz.getDqtd) );
httpServer.get('/construct/plannedprogress/xxjd', asyncHandler(jhjdBiz.getXxjd) );
httpServer.get('/construct/plannedprogress/lcbjd', asyncHandler(jhjdBiz.getLcbjd) );
/**业财融合 */
httpServer.get('/construct/integrationofbusinessandfinance/tzwcqk', asyncHandler(ycrhBiz.getTzwcqk) );
httpServer.get('/construct/integrationofbusinessandfinance/htjeyjzl', asyncHandler(ycrhBiz.getHtjeyjzl) );
httpServer.get('/construct/integrationofbusinessandfinance/detailed', asyncHandler(ycrhBiz.getDetailedData) );
/**地图线路坐标 */
httpServer.get('/construct/zlaq/zmxfx', asyncHandler(zlaqBiz.zmxfx));
httpServer.get('/construct/zlaq/dqfxjd', asyncHandler(zlaqBiz.dqfxjd));
httpServer.get('/construct/zlaq/gcaqzt', asyncHandler(zlaqBiz.gcaqzt));
constructRouters.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