Commit c94458b7 by chenjinjing

在建站点弹窗4.0版本

parent 867017e6
<config>
<port>40006</port>
<monitorUrl>http://127.0.0.1:40001</monitorUrl>
</config>
\ No newline at end of file
/**
* 业财融合指标面板
* 弃用
*/
import { earlywarningDetailTableData, earlywarningTableData, investTableData } from "../../data/table/constructData";
import * as defaultConfig from '../../config/defaultConfig'
......@@ -7,7 +12,7 @@ import * as defaultConfig from '../../config/defaultConfig'
* @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 tableData = investTableData();
// let data = change(["line", "year", "年度计划", "年度完成", "年度计划动迁", "年度完成动迁", "累计计划", "累计完成", "累计计划动迁", "累计完成动迁"], tableData["投资完成情况"].bodyList );
......@@ -26,10 +31,10 @@ export async function getInvest(req, res) {
let dataYear = item.year;
if (!annualAccumulation[dataLine]) annualAccumulation[dataLine] = {};
if (!annualAccumulation["全部"]) annualAccumulation["全部"] = {};
if (!annualAccumulation["全网"]) annualAccumulation["全网"] = {};
if (!overall[dataLine]) overall[dataLine] = {};
if (!overall["全部"]) overall["全部"] = {};
if (!overall["全网"]) overall["全网"] = {};
if (year == dataYear) {
for (let name = 0; name < ndConf.length; name++) {
......@@ -37,8 +42,8 @@ export async function getInvest(req, res) {
if (key.search(ndConf[name]) > -1) {
annualAccumulation[dataLine][key] = item[key];
if (!annualAccumulation["全部"][key]) annualAccumulation["全部"][key] = 0;
annualAccumulation["全"][key] += item[key];
if (!annualAccumulation["全网"][key]) annualAccumulation["全网"][key] = 0;
annualAccumulation["全"][key] += item[key];
}
}
}
......@@ -48,8 +53,8 @@ export async function getInvest(req, res) {
if (key.search(ztConf[name]) > -1) {
overall[dataLine][key] = item[key];
if (!overall["全部"][key]) overall["全部"][key] = 0;
overall["全"][key] += item[key];
if (!overall["全网"][key]) overall["全网"][key] = 0;
overall["全"][key] += item[key];
}
}
}
......@@ -66,18 +71,18 @@ export async function getInvest(req, res) {
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,//年度计划动迁
"proportion": annualAccumulationData["年度累计"] == 0 ? 0 : Math.round((annualAccumulationData["年度投资计划"] / annualAccumulationData["年度累计"]) * 100)/100 || 0,//年度累计占
"count": Math.round((annualAccumulationData["年度累计"] / 10000) * 100) /100 || 0,//年度累计投资额
"countRelocation":Math.round( annualAccumulationData["年度完成动迁"] / 10000) || 0,//年度累计动迁
"expected":Math.round( annualAccumulationData["年度投资计划"] / 10000) || 0,//计划投资额
"expectedRelocation":Math.round( 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,//年度计划动迁
"proportion": overallData["总投资额"] == 0 ? 0 : Math.round((overallData["建设期累计"] / overallData["总投资额"])* 1000 )/1000 || 0,//年度完成比
"count": Math.round(overallData["建设期累计"] / 10000) || 0,//年度累计投资额
"countRelocation":Math.round( overallData["累计完成动迁"] / 10000) || 0,//年度累计动迁 单位:(亿元)
"expected":Math.round( overallData["总投资额"] / 10000) || 0,//计划投资额
"expectedRelocation":Math.round( overallData["累计计划动迁"] / 10000) || 0,//年度计划动迁
};
res.send(result);
......@@ -92,7 +97,7 @@ export async function getInvest(req, res) {
* @param res
*/
export async function getEarlywarning(req, res) {
let line = req.query.line || "全";
let line = req.query.line || "全";
let excelData = earlywarningTableData();
......@@ -105,7 +110,7 @@ export async function getEarlywarning(req, res) {
};
let titleList = ["车站", "区间", "轨道", "通讯", "信号", "供电", "综合监控"];
result["detailedList"] = [];
if (line == "全") {
if (line == "全") {
let map = {};
for (let key in excelData) {
let data = change(["总数", "accumulatedContractAmountSigned", "estimatedTotalValue", "totalTargetCost"], excelData[key].bodyList );
......@@ -175,7 +180,7 @@ export async function getEarlywarning(req, res) {
* @param res
*/
export async function getDetailedData(req, res) {
let line = req.query.line || "全";
let line = req.query.line || "全";
let tableData = earlywarningDetailTableData();
let result:any = {};
......@@ -217,7 +222,7 @@ function change(titleList, dataList) {
function getDetailData(data, line, defaultData) {
let result:any = {};
let dataMap = {"全":{}};
let dataMap = {"全":{}};
let strConf = ["accumulatedSignedContractValue", "estimated", "budgetDifference", "targetCost", "targetDifference"];
data.forEach(subList => {
......@@ -226,14 +231,14 @@ function getDetailData(data, line, defaultData) {
if (!dataMap[dataLine]) dataMap[dataLine] = {};
dataMap[dataLine][dataName] = {};
if (!dataMap["全部"][dataName]) dataMap["全部"][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;
if (!dataMap["全网"][dataName][str]) dataMap["全网"][dataName][str] = 0;
dataMap["全"][dataName][str] += Math.round(subList[str] * 100) / 100;
})
})
......
/**
* 合同预警弹窗
*/
import { budgetwarningTableData, detailedTableData, targetcostTableData } from "../../data/table/投资管控";
import { change } from "../../dataPackage/inBackOut";
import { tablePackage } from "../../dataPackage/inFrontOut";
import { getTableOut } from "../../dataPackage/out";
/**
* 三级概算预警详情
* @param req
* @param res
*/
export function getBudgetWarning(req, res) {
let tableData = budgetwarningTableData();
let ret:any = {};
let budgetwarningTableDataList = tablePackage(tableData["三级概算预警"].headerList[0], tableData["三级概算预警"].bodyList);
ret['budgetwarning'] = getTableOut( '三级概算预警', budgetwarningTableDataList);
res.send(ret);
}
/**
* 线路概算——目标成本
* @param req
* @param res
*/
export function getTargetCost(req, res) {
let warningNum = req.query.warningNum || "21号线一期1"; //预警编号 三级概算预警返回的数据
let tableData = targetcostTableData();
let ret:any = {};
//"目标成本接近率", "概算", "目标成本", "动态成本"
let targetcostTable = change(["targetCostRate", "financialEstimates", "financialEstimatesBudget", "targetCost", "targetCostBudget", "dynamicCost", "dynamicCostBudget"], tableData[warningNum].bodyList);
let targetcostData = {};
targetcostTable.forEach(item=> {
targetcostData = item;
})
ret['title'] = "线路概算详情";
ret['budgetwarning'] = targetcostData;
res.send(ret);
}
/**
* 线路概算——下拉选择类型
* @param req
* @param res
*/
export function getType(req, res) {
let warningNum = req.query.warningNum || "21号线一期1"; //预警编号 三级概算预警返回的数据
let tableData = detailedTableData();
let ret: any = {};
let typeData = change(["type", "financialEstimates", "targetCost", "dynamicCost"], tableData[warningNum].bodyList);
let typeList = [{key:"文本", value:"全部"}];
typeData.forEach( item => {
typeList.push({key:"文本", value:item.type});
})
ret["typeList"] = {title:"类型", dataList:typeList};
res.send(ret);
}
/**
* 线路概算——详情
* @param req
* @param res
*/
export function getDetailed(req, res) {
let warningNum = req.query.warningNum || "21号线一期1"; //预警编号 三级概算预警返回的数据
let type = req.query.type || "全部"; //类型
let tableData = detailedTableData();
let ret: any = {};
//"类型", "概算值", "目标成本", "动态成本"
let financialEstimatesData = change(["name", "financialEstimates", "targetCost", "dynamicCost"], tableData[warningNum].bodyList);
let detail = [];
financialEstimatesData.forEach( item => {
let dataType = item.name;
if (type == "全部") {
detail.push(item);
} else if(dataType == type) {
detail = [item];
}
})
ret["detailed"] = detail;
res.send(ret);
}
\ No newline at end of file
/**
* 投资管控指标面板
* 弃用
*/
import { financialestimatesTableData, finalaccountsTableData, investmentcontrolTableData } from "../../data/table/constructData";
import { keyValuePackage, onceYBarChartPackage } from "../../dataPackage/inFrontOut";
import { getKeyValueOut, getOnceYBarChartOut } from "../../dataPackage/out";
......@@ -59,7 +64,7 @@ export function getInvestmentcontrol(req, res) {
*/
export function getFinalaccounts(req, res) {
let year = req.query.year || 2023; //年份
let line = req.query.line || "全"; //线路
let line = req.query.line || "全"; //线路
let excelData = finalaccountsTableData();
let ret:any = {};
......
import { mapLineTableData, mapSiteTableData, mapTableData } from '../../data/table/constructData';
import { lineConstructTableData, mapLineTableData, mapSiteTableData, mapTableData } from '../../data/table/constructData';
import { keyValuePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut } from '../../dataPackage/out';
import { change } from '../../dataPackage/inBackOut';
......@@ -7,7 +7,9 @@ import { onceSheetBecomeOfblockData } from '../../util/analysisExcel';
/*地图*/
export function getMap(req, res) {
let mapTable = mapTableData();
let mapLineTable = mapLineTableData();
let mapLineTable = mapLineTableData(); //线路
let lineConstructTable = lineConstructTableData(); //建设里程碑
let lineCoordinateTable = onceSheetBecomeOfblockData('建设指挥平台/建设指挥平台地图.xlsx', '线路坐标');
let mapSiteTable = mapSiteTableData();
......@@ -18,7 +20,6 @@ export function getMap(req, res) {
let mapLineData = change(["name", "value", "key", "ygLine"], mapLineTable["地图线路"].bodyList);
mapLineData.forEach( item => {
let mapLineLocation = {};
let {name, value, key, ygLine} = item;
......@@ -35,6 +36,17 @@ export function getMap(req, res) {
}
})
/**建设里程碑 */
for (let key in lineConstructTable) {
let lineConstructData = change(["time", "txt", "state"], lineConstructTable[key].bodyList);
if (name == key) {
item["constructList"] = lineConstructData;
}
}
for (let siteKey in mapSiteTable) {
let mapLineList = [];
let siteCoordinate = {};
......
......@@ -6,6 +6,7 @@
import { relocationTableData, prophaseTableData, scheduleTableData, milestoneTableData } from "../../data/table/constructData";
import * as defaultConfig from '../../config/defaultConfig';
import { change, getPopupMoreData, getPopupOneData } from "../../dataPackage/inBackOut";
import { PLANNEDPROGRESS } from "../../config/titleEnum";
function getProphaseDetailData(data, defaultData, conf, line) {
let dataMap = {"全网":{"data":{}, "total":0}};
......@@ -85,7 +86,7 @@ export async function getProphase(req, res) {
/** dataMap结构{ "线":{ yearCount:0, data:{ "单体规划建设方案":{ plan:0, complete:0 } } } } */
let conf = ["单体规划建设方案", "单体建设用地规划许可证", "单体建设工程规划许可证", "单体施工许可证"];
let result:any = getProphaseDetailData(data, defaultConfig.ProphaseDefault, conf, line);
result["title"] = PLANNEDPROGRESS.前期工作;
res.send(result);
}
......@@ -138,17 +139,23 @@ export async function getRelocation(req, res) {
result["completionStatus"] = dataMap[line] || defaultConfig.CompletionStatusDefault;
result["scheduleList"] = scheduleData[line] || defaultConfig.ScheduleListDefault;
let scheduleList = [];
for (let key in scheduleData[line]) {
scheduleList.push({name: key, dataList: scheduleData[line][key]})
}
result["scheduleList"] = scheduleList || defaultConfig.ScheduleListDefault;
/**详细完成情况 */
let scheduleTableData = change(["line", "site", "year","居民完成率","单位完成率","绿地完成率","居民计划书","居民完成数","单位计划数","单位完成数","绿地计划数","绿地完成数"], tableData["动迁腾地详细"].bodyList );
let scheduleTableData = change(["line", "site", "year","居民计划数","居民完成数","单位计划数","单位完成数","绿地计划数","绿地完成数"], tableData["动迁腾地详细"].bodyList );
/**浮窗数据 */
let detailMap = {};
//"居民计划书","居民完成数","单位计划数","单位完成数","绿地计划数","绿地完成数"
let detailConf = {
"居民":["居民计划", "居民完成数"],
"居民":["居民计划", "居民完成数"],
"单位":["单位计划数","单位完成数"],
"绿地":["绿地计划数","绿地完成数"]
};
......@@ -171,9 +178,9 @@ export async function getRelocation(req, res) {
if (!detailMap[dataYear][dataLine][dataSite][name]) detailMap[dataYear][dataLine][dataSite][name] = {plan:0, complete:0, incomplete:0};
if (!detailMap[dataYear]['全网'][dataSite][name]) detailMap[dataYear]['全网'][dataSite][name] = {plan:0, complete:0, incomplete:0};
detailMap[dataYear][dataLine][dataSite][name]["plan"] += plan || 0;
detailMap[dataYear][dataLine][dataSite][name]["complete"] += complete || 0;
detailMap[dataYear][dataLine][dataSite][name]["incomplete"] += plan - complete || 0;
detailMap[dataYear][dataLine][dataSite][name]["plan"] = plan || 0;
detailMap[dataYear][dataLine][dataSite][name]["complete"] = complete || 0;
detailMap[dataYear][dataLine][dataSite][name]["incomplete"] = plan - complete || 0;
detailMap[dataYear]['全网'][dataSite][name]["plan"] += plan || 0;
detailMap[dataYear]['全网'][dataSite][name]["complete"] += complete || 0;
......@@ -182,7 +189,12 @@ export async function getRelocation(req, res) {
});
result["detailList"] = detailMap[year][line];
let detailList = [];
for (let key in detailMap[year][line]) {
detailList.push({name: key, dataList: detailMap[year][line][key]});
}
result["detailList"] = detailList;
res.send(result);
}
......@@ -195,12 +207,23 @@ export async function getRelocation(req, res) {
*/
export async function getSchedule(req, res) {
let line = req.query.line || "全网";
let result:any = {};
result["title"] = PLANNEDPROGRESS.建设计划;
let excelData = scheduleTableData();
let data = change(["line","车站开工总数","车站开工已完成","车站开工未完成","盾构推进总数","盾构推进已完成","盾构推进未完成","轨道铺设总数", '轨道铺设已完成', '轨道铺设未完成'], excelData["建设计划数据"].bodyList );
let conf = ["车站开工", "盾构推进", "轨道铺设"]
let data = change(
[
"line","车站开工总数","车站开工已完成","车站开工未完成", "车站开工单位",
"车站结构封顶总数", '车站结构封顶已完成', '车站结构封顶未完成', "车站结构封顶单位",
"盾构推进总数","盾构推进已完成","盾构推进未完成", "盾构推进单位",
"旁通道总数", '旁通道已完成', '旁通道未完成', "旁通道单位",
"轨道铺设总数", '轨道铺设已完成', '轨道铺设未完成', "轨道铺设单位",
"出入口总数", '出入口已完成', '出入口未完成', "出入口单位"
], excelData["建设计划数据"].bodyList );
let conf = ["车站开工", "车站结构封顶", "盾构推进", "旁通道", "轨道铺设", "出入口"]
let dataMap = {"全网":{"data":{}}};
data.forEach(item => {
......@@ -211,23 +234,27 @@ export async function getSchedule(req, res) {
let plan = 0;
let complete = 0;
let inProgress = 0;
let unit = "";
for (let key in item){
if (key.search(conf[name]) > -1) {
if (!dataMap[dataLine]["data"][conf[name]]) dataMap[dataLine]["data"][conf[name]] = {plan:0, complete:0, inProgress:0};
if (!dataMap["全网"]["data"][conf[name]]) dataMap["全网"]["data"][conf[name]] = {plan:0, complete:0, inProgress:0};
if (!dataMap[dataLine]["data"][conf[name]]) dataMap[dataLine]["data"][conf[name]] = {plan:0, complete:0, inProgress:0, unit: ""};
if (!dataMap["全网"]["data"][conf[name]]) dataMap["全网"]["data"][conf[name]] = {plan:0, complete:0, inProgress:0, unit: ""};
plan = item[conf[name]+"总数"];
complete = item[conf[name]+"已完成"];
inProgress = item[conf[name]+"未完成"];
unit = item[conf[name]+"单位"];
}
}
dataMap[dataLine]["data"][conf[name]]["plan"] += plan;
dataMap[dataLine]["data"][conf[name]]["complete"] += complete;
dataMap[dataLine]["data"][conf[name]]["inProgress"] += inProgress;
dataMap[dataLine]["data"][conf[name]]["unit"] = unit;
dataMap["全网"]["data"][conf[name]]["plan"] += plan;
dataMap["全网"]["data"][conf[name]]["complete"] += complete;
dataMap["全网"]["data"][conf[name]]["inProgress"] += inProgress;
dataMap["全网"]["data"][conf[name]]["unit"] = unit;
}
});
......@@ -245,27 +272,37 @@ export async function getSchedule(req, res) {
name:key,
total:subPlan,
complete:subComplete,
incomplete:subInProgress
incomplete:subInProgress,
unit:onceLineData.data[key].unit
});
}
result["scheduleList"] = scheduleList;
let czDetailData = change(["line","year","计划数量","实际数量"], excelData["详细数据1"].bodyList );
result["czDetailedData"] = getDetailData(czDetailData, line, defaultConfig.ScheduleDetailed);
result["czkgDetailedData"] = getDetailData(czDetailData, line, defaultConfig.ScheduleDetailed);
let cljdDetailData = change(["line","year","计划数量","实际数量"], excelData["详细数据2"].bodyList );
result["cljdDetailedData"] = getDetailData(cljdDetailData, line, defaultConfig.ScheduleDetailed);
result["cljgfdDetailedData"] = getDetailData(cljdDetailData, line, defaultConfig.ScheduleDetailed);
let gjqjDetailData = change(["line","year","计划数量","实际数量"], excelData["详细数据3"].bodyList );
result["gjqjDetailedData"] = getDetailData(gjqjDetailData, line, defaultConfig.ScheduleDetailed);
result["dgtjDetailedData"] = getDetailData(gjqjDetailData, line, defaultConfig.ScheduleDetailed);
let czjgfdDetailData = change(["line","year","计划数量","实际数量"], excelData["详细数据4"].bodyList );
result["ptdDetailedData"] = getDetailData(czjgfdDetailData, line, defaultConfig.ScheduleDetailed);
let ptdDetailData = change(["line","year","计划数量","实际数量"], excelData["详细数据5"].bodyList );
result["gdpsDetailedData"] = getDetailData(ptdDetailData, line, defaultConfig.ScheduleDetailed);
let crkDetailData = change(["line","year","计划数量","实际数量"], excelData["详细数据6"].bodyList );
result["crkDetailedData"] = getDetailData(crkDetailData, line, defaultConfig.ScheduleDetailed);
res.send(result);
}
/**
* 获取形象进度浮窗数据
* 获取建设计划浮窗数据
* @param data 源数据
* @param line 线路
* @param defaultData 默认数据
......@@ -318,6 +355,8 @@ export async function getMilestone(req, res) {
let result:any = {};
// result["detailedList"] = [{title:"23号线首座车站开工",time:"2022-09-19", desc:"23号线江川东路站于2022-9-19首幅低下连续墙开工。", img:"http://192.168.0.71:40001/2005_01.jpg"},];
result["title"] = PLANNEDPROGRESS.里程碑节点完成情况;
result['detailedList'] = change(["title","time","desc","img"], excelData["里程碑节点完成情况"].bodyList );
res.send(result);
......
/**
/**
* 业财融合指标面板
*/
import { estimateTableData, investmentStatusTableData } from "../../data/table/业财融合";
import { change } from "../../dataPackage/inBackOut";
import { BUSINESSFINANCE } from "../../config/titleEnum";
/**
* 概算总数
* @param req
* @param res
* @return 标题: title
* @return 概算总数:estimatedTotal
* @return 各线路概算:lineEstimate
* @return 总体投资: overallInvestment
* @return 支付完成情况: paymentSituation
*/
export function getEstimate(req, res) {
let planningPeriod = req.query.planningPeriod || "三期规划调整"; //类型
let line = req.query.line || "全网"; //线路
let tableData = estimateTableData();
let result:any = {};
result["title"] = BUSINESSFINANCE.概算总数;
let data = change(["type", "line", "各线路概算金额", "投资完成", "投资计划", "用款累计执行", "用款计划"], tableData["概算总数数据"].bodyList );
let lineEstimateData = {};
let estimatedTotal = 0; //概算总数
let overallInvestment = []; //总体投资
let paymentSituation = []; //支付完成情况
let overallConf = ["投资完成", "投资计划"];
let paymentConf = ["用款累计执行", "用款计划"];
data.forEach(item => {
let dataType = item.type;
let dataLine = item.line;
/**全网总概算 */
estimatedTotal += item.各线路概算金额;
/**各线路概算 */
let estimatedValue = Math.round(item.各线路概算金额 * 100) / 100;
if (!lineEstimateData[dataType]) lineEstimateData[dataType] = {"全网":[]};
if (!lineEstimateData[dataType][dataLine]) lineEstimateData[dataType][dataLine] = [];
lineEstimateData[dataType][dataLine].push({key: item.line, value: estimatedValue});
lineEstimateData[dataType]["全网"].push({key: item.line, value: estimatedValue});
/**总体投资完成比 */
if (!overallInvestment[dataType]) overallInvestment[dataType] = {"全网":{}};
if (!overallInvestment[dataType][dataLine]) overallInvestment[dataType][dataLine] = {};
for (let name in overallConf) {
overallInvestment[dataType][dataLine][overallConf[name]] = item[overallConf[name]];
if (!overallInvestment[dataType]["全网"][overallConf[name]]) overallInvestment[dataType]["全网"][overallConf[name]] = 0;
overallInvestment[dataType]["全网"][overallConf[name]] += item[overallConf[name]];
}
/**支付完成情况 */
if (!paymentSituation[dataType]) paymentSituation[dataType] = {"全网":{}};
if (!paymentSituation[dataType][dataLine]) paymentSituation[dataType][dataLine] = {};
for (let name in paymentConf) {
paymentSituation[dataType][dataLine][paymentConf[name]] = item[paymentConf[name]];
if (!paymentSituation[dataType]["全网"][paymentConf[name]]) paymentSituation[dataType]["全网"][paymentConf[name]] = 0;
paymentSituation[dataType]["全网"][paymentConf[name]] += item[paymentConf[name]];
}
});
result["estimatedTotal"] = {key: "全网总概算", value: Math.round(estimatedTotal * 100) / 100};
result["lineEstimate"] = lineEstimateData[planningPeriod][line];
let overallInvestmentData = overallInvestment[planningPeriod][line]; //投资完成、投资计划
let accumulatedProportion = (overallInvestmentData["投资完成"] / overallInvestmentData["投资计划"]*100 ).toFixed(2);
result["overallInvestment"] = {
"proportion": overallInvestmentData["建设期累计占比"] == 0 ? 0 : accumulatedProportion || 0,//建设期累计占比=投资完成/投资计划
"complete": (overallInvestmentData["投资完成"] / 10000).toFixed(2),
"plan": (overallInvestmentData["投资计划"] / 10000).toFixed(2)
};
let paymentSituationData = paymentSituation[planningPeriod][line]; //投资完成、投资计划
let percentComplete = (paymentSituationData["用款累计执行"] / paymentSituationData["用款计划"]*100 ).toFixed(2);
result["paymentSituation"] = {
"proportion": paymentSituationData["建设期累计完成比"] == 0 ? 0 : percentComplete || 0,//建设期累计完成比=用款累计执行/用款计划
"complete": (paymentSituationData["用款累计执行"] / 10000).toFixed(2),
"plan": (paymentSituationData["用款计划"] / 10000).toFixed(2)
};
res.send(result);
}
/**
* 投资完成情况
* @param req
* @param res
* @return 标题: title
* @return 投资完成情况:annualAccumulation
*/
export async function getInvestmentCompletion(req, res) {
let line = "全网"
let tableData = investmentStatusTableData();
let data = change(["line", "年度累计", "年度累计动拆迁", "年度投资计划", "年度投资计划动拆迁"], tableData["年度投资情况数据"].bodyList );
let conf = ["年度累计", "年度累计动拆迁", "年度投资计划", "年度投资计划动拆迁"];
let result:any = {};
result["title"] = BUSINESSFINANCE.投资完成情况;
let annualAccumulation:any = {};
data.forEach(item => {
let dataLine = item.line;
if (!annualAccumulation[dataLine]) annualAccumulation[dataLine] = {};
if (!annualAccumulation["全部"]) annualAccumulation["全部"] = {};
for (let name = 0; name < conf.length; name++) {
for (let key in item) {
if (key.search(conf[name]) > -1) {
annualAccumulation[dataLine][key] = item[key];
if (!annualAccumulation["全部"][key]) annualAccumulation["全部"][key] = 0;
annualAccumulation["全部"][key] += item[key];
}
}
}
});
let defalut = {
count:0, countRelocation:0, expected:0, expectedRelocation:0, proportion:0
}
let annualAccumulationData = annualAccumulation[line] || defalut;
let annualProportion = (annualAccumulationData["年度累计"] / annualAccumulationData["年度投资计划"]*100 ).toFixed(2)
result["annualAccumulation"] = {
"proportion": annualAccumulationData["年度累计占比"] == 0 ? 0 : annualProportion || 0,//年度累计占比=年度累计/年度投资计划
"count": (annualAccumulationData["年度累计"] / 10000).toFixed(2) || 0,//年度累计
"countRelocation":(annualAccumulationData["年度累计动拆迁"] / 10000).toFixed(2) || 0,//年度动拆迁
"expected":(annualAccumulationData["年度投资计划"] / 10000).toFixed(2) || 0,//年度投资计划
"expectedRelocation":(annualAccumulationData["年度投资计划动拆迁"] / 10000).toFixed(2) || 0,//年度投资计划动拆迁
};
res.send(result);
return result;
}
/**
/**
* 投资管控指标面板
*/
import { INVEST } from "../../config/titleEnum";
import { contractWarningTableData } from "../../data/table/投资管控";
import { change } from "../../dataPackage/inBackOut";
export function getInvest(req, res) {
let planningPeriod = req.query.planningPeriod || "三期规划调整"; //类型
let line = req.query.line || "全网"; //线路
let tableData = contractWarningTableData();
let result:any = {};
let paymentExecutionData = change(
[
"planningPeriod", "line", "executionCompletedProportion", "deviationFromPlan", "annualPaymentPlan1", "JanPlanToDate",
"JanSoFarCummulativeComplete", "completionPercentage", "annualPaymentPlan2", "annualActualExpenditure"
], tableData["用款执行数据"].bodyList);
let paymentExecution = {};
let paymentExecutionConf = ["executionCompletedProportion", "deviationFromPlan", "annualPaymentPlan1", "JanPlanToDate", "JanSoFarCummulativeComplete"];
let specialPurposeBonds = {};
let specialPurposeBondsConf = ["completionPercentage", "annualPaymentPlan2", "annualActualExpenditure"];
paymentExecutionData.forEach( item => {
let dataType = item.planningPeriod;
let dataLine = item.line;
for (let name = 0; name < paymentExecutionConf.length; name++){
if (!paymentExecution[dataType]) paymentExecution[dataType] = {"全网":{"executionCompletedProportion":0, "deviationFromPlan":0, "annualPaymentPlan1":0, "JanPlanToDate":0, "JanSoFarCummulativeComplete":0}};
if (!paymentExecution[dataType][dataLine]) paymentExecution[dataType][dataLine] = {"executionCompletedProportion":0, "deviationFromPlan":0, "annualPaymentPlan1":0, "JanPlanToDate":0, "JanSoFarCummulativeComplete":0};
paymentExecution[dataType]["全网"][paymentExecutionConf[name]] += item[paymentExecutionConf[name]] || 0;
paymentExecution[dataType][dataLine][paymentExecutionConf[name]] += item[paymentExecutionConf[name]] || 0;
}
for (let name = 0; name < specialPurposeBondsConf.length; name++) {
if (!specialPurposeBonds[dataType]) specialPurposeBonds[dataType] = {"全网":{"completionPercentage":0, "annualPaymentPlan2":0, "annualActualExpenditure":0}};
if (!specialPurposeBonds[dataType][dataLine]) specialPurposeBonds[dataType][dataLine] = {"completionPercentage":0, "annualPaymentPlan2":0, "annualActualExpenditure":0};
specialPurposeBonds[dataType]["全网"][specialPurposeBondsConf[name]] += item[specialPurposeBondsConf[name]] || 0;
specialPurposeBonds[dataType][dataLine][specialPurposeBondsConf[name]] += item[specialPurposeBondsConf[name]] || 0;
}
})
paymentExecution[planningPeriod]["全网"]["executionCompletedProportion"] = (paymentExecution[planningPeriod]["全网"]["executionCompletedProportion"] / Object.keys(paymentExecution[planningPeriod]).length * 100).toFixed(2);
result["paymentExecutionTitle"] = INVEST.用款执行;
result["paymentExecution"] = paymentExecution[planningPeriod][line];
specialPurposeBonds[planningPeriod]["全网"]["completionPercentage"] = (specialPurposeBonds[planningPeriod]["全网"]["completionPercentage"] / Object.keys(specialPurposeBonds[planningPeriod]).length * 100).toFixed(2);
result["specialPurposeBondsTitle"] = INVEST.专项债;
result["specialPurposeBonds"] = specialPurposeBonds[planningPeriod][line];
res.send(result);
}
\ No newline at end of file
import { lineTableData, yearTableData } from "../data/table/publicData";
import { lineTableData, planningPeriodTableData, yearTableData } from "../data/table/publicData";
import { change } from "../dataPackage/inBackOut";
import { stringListPackage } from "../dataPackage/inFrontOut";
import { getStringOut } from "../dataPackage/out";
......@@ -24,4 +25,61 @@ export function getYear(req, res) {
ret['year'] = getStringOut('下拉年份', nfPackageData);
res.send(ret);
}
/**
* 规划期类型对应线路
*/
export function getPlanningPeriod(req, res) {
let excelData = planningPeriodTableData();
let ret:any = {};
let data = change(["type", "line"], excelData['规划期类型对应线路'].bodyList);
let typeList = [];
data.forEach( item => {
if(!typeList[item.type]) typeList[item.type] = []
typeList[item.type].push(item.line);
})
let planningPeriodDataList = [];
for (let key in typeList) {
planningPeriodDataList.push({key:"文本", value: key});
}
ret['planningPeriod'] = {title: "规划期", dataList: planningPeriodDataList};
res.send(ret);
}
/**
* 根据规划期获取线路
* @param req
* @param res
*/
export function getLineByPlanningPeriod(req, res) {
let type = req.query.type || "三期规划调整";
let excelData = planningPeriodTableData();
let ret:any = {};
let data = change(["type", "line"], excelData['规划期类型对应线路'].bodyList);
let typeList = [];
data.forEach( item => {
if(!typeList[item.type]) typeList[item.type] = ["全网"]
typeList[item.type].push(item.line);
})
let lineData = typeList[type];
let lineDataList = [];
lineData.forEach( info=> {
lineDataList.push({key: "文本", value: info});
})
ret['line'] = {title: "根据规划期选择线路", dataList: lineDataList};
res.send(ret);
}
\ No newline at end of file
......@@ -6,14 +6,14 @@ import { civilEngineeringDetailsTableData, civilEngineeringTableData } from "../
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
export async function getCivilEngineering(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
let tableData = civilEngineeringTableData();
//"线路", "站点名称", "站点状态", "区域", "正常完成", "正常延误", "一般延误", "严重延误"
let data = change(["line", "site", "state", "region", "normalCompletion", "normalDelay", "generalDelay", "seriousDelay"], tableData["土建形象进度数据"].bodyList );
let data = change(["line", "site", "state", "region", "normalCompletion", "normalDelay", "generalDelay", "seriousDelay", "regionNum"], tableData["土建形象进度数据"].bodyList );
let conf = ["region", "normalCompletion", "normalDelay", "generalDelay", "seriousDelay"];
let conf = ["region", "normalCompletion", "normalDelay", "generalDelay", "seriousDelay", "regionNum"];
let civilEngineering = getPopupMoreData(line, data, conf);
......@@ -26,27 +26,27 @@ export async function getCivilEngineering(req, res) {
export async function getCivilEngineeringDetails(req, res) {
let region = req.query.region || "A区";
let regionNum = req.query.regionNum || "17号线西岑站A区";
let tableData = civilEngineeringDetailsTableData();
let result:any = {};
let details:any = {};
for (let key in tableData) {
if (region == key) {
if (regionNum == key) {
//"施工工序", "总量", "周计划工作量", "周完成工作量", "周完成比例", "完成状态", "总完成工作量", "总完成比例", "未完成原因"
let data = change(["constructionProcess", "total", "weeklyPlan", "weeklyCompletion", "weeklyRatio", "completionStatus", "totalCompletion", "totalProportion", "incompleteReason"], tableData[key].bodyList );
let data = change(["region", "constructionProcess", "total", "weeklyPlan", "weeklyCompletion", "weeklyRatio", "completionStatus", "totalCompletion", "totalProportion", "incompleteReason"], tableData[key].bodyList );
let conf = ["constructionProcess", "total", "weeklyPlan", "weeklyCompletion", "weeklyRatio", "completionStatus", "totalCompletion", "totalProportion", "incompleteReason"];
data.forEach(item => {
let detailsData = {};
if (!details[region]) details[region] = [];
if (!details[item.region]) details[item.region] = [];
for (let name = 0; name < conf.length; name++) {
detailsData[conf[name]] = item[conf[name]];
}
details[region].push(detailsData);
details[item.region].push(detailsData);
});
}
......
......@@ -13,8 +13,8 @@ import { change, getPopupDetailsData, getPopupMoreData } from "../../dataPackage
* @returns constructionMaterials: {site: "站点名称", state: "站点状态", data: [{informationType: "资料类型", informationNum: 资料数量, informationId: "建设资料编号" }, ...... ]}
*/
export async function getConstructionMaterials(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
let tableData = constructionMaterialsTableData();
//"线路", "站点名称", "站点状态", "资料类型", "资料数量", "资料编号"
......@@ -41,7 +41,7 @@ export async function getConstructionMaterials(req, res) {
* @returns
*/
export async function getConstructionMaterialsDetails(req, res) {
let informationId = req.query.informationId || "18号线二期江阳南路站1";
let informationId = req.query.informationId || "17号线西岑站1";
let informationType = req.query.informationType || "图纸资料"
let informationName = req.query.informationName; //资料名称
......
......@@ -6,8 +6,8 @@ import { constructionMilestonesTableData } from "../../data/table/stationPopupDa
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
export async function getConstructionMilestones(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
let tableData = constructionMilestonesTableData();
//"线路", "站点名称", "站点状态", "建设内容", "时间", "建设状态"
......
......@@ -2,24 +2,179 @@
* 前期证照
*/
import { earlyCertificationDefault } from "../../config/defaultConfig";
import { earlyCertificationTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
import { change } from "../../dataPackage/inBackOut";
let moment = require("moment");
moment.suppressDeprecationWarnings = true;
export async function getEarlyCertification(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
let tableData = earlyCertificationTableData();
//"线路", "站点名称", "站点状态", "证照名称", "完成状态", "计划完成时间", "实际完成时间", "延期天数", "剩余天数", "文件地址"
let data = change(["line", "site", "state", "licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime", "delayDays", "daysRemaining", "fileAddress"], tableData["前期证照数据"].bodyList );
//"线路", "站点名称", "站点状态", "证照名称", "完成状态", "计划完成时间", "实际完成时间", "到期时间", "借地费用", "文件地址"
// delayDays, daysRemaining, untilExpiration
let data = change(
["line", "site", "state", "licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime",
"expirationTime", "landBorrowingFees", "fileAddress"]
, tableData["前期证照数据"].bodyList );
let conf = ["licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime", "delayDays", "daysRemaining", "fileAddress"];
let conf = ["licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime", "delayDays",
"daysRemaining", "expirationTime", "landBorrowingFees", "untilExpiration", "earlyWarning", "fileAddress"];
let earlyCertification = getPopupMoreData(line, data, conf);
// let earlyCertification = getPopupMoreData(line, data, conf);
let earlyCertification:any = {};
data.forEach(item => {
let dataLine = item.line;
let dataSite = item.site;
let completionStatus = item.completionStatus;
let plannedCompletionTime = moment(item.plannedCompletionTime).format("YYYY/MM/DD"); //计划完成时间
let actualCompletionTime = moment(item.actualCompletionTime).format("YYYY/MM/DD"); //实际完成时间
let expirationTime = moment(item.expirationTime).format("YYYY/MM/DD"); //到期时间
let today = moment(new Date()).format("YYYY/MM/DD"); //当前日期
let pipelineRelocationData = {};
if (line == dataLine) {
switch(completionStatus) {
case "延期完成":
item["delayDays"] = moment(actualCompletionTime).diff(plannedCompletionTime, 'day');
break;
case "未完成":
item["daysRemaining"] = moment(plannedCompletionTime).diff(today, 'day');
break;
case "未到期":
let {month, day} = monthDayDiff(today, expirationTime);
item["untilExpiration"] = `${month}个月${day}天`;
item["earlyWarning"] = false; //是否预警
if (month < 3) item["earlyWarning"] = true;
break;
}
if (!earlyCertification[dataSite]) earlyCertification[dataSite] = {site:item.site, state:item.state, data:[]};
let result = {"earlyCertification": earlyCertification[site]};
for (let name = 0; name < conf.length; name++) {
pipelineRelocationData[conf[name]] = item[conf[name]];
}
earlyCertification[dataSite]["data"].push(pipelineRelocationData);
}
});
let result = {"earlyCertification": earlyCertification[site] || earlyCertificationDefault};
res.send(result);
return result;
}
// export async function getEarlyCertification(req, res) {
// let line = req.query.line || "17号线";
// let site = req.query.site || "西岑站";
// let tableData = earlyCertificationTableData();
// //"线路", "站点名称", "站点状态", "证照名称", "完成状态", "计划完成时间", "实际完成时间", "到期时间", "借地费用", "文件地址"
// // delayDays, daysRemaining, untilExpiration
// let data = change(
// ["line", "site", "state", "证照名称", "完成状态", "计划完成时间", "实际完成时间", "到期时间", "借地费用", "文件地址"]
// , tableData["前期证照数据"].bodyList );
// let conf = ["证照名称", "完成状态", "到期时间", "借地费用", "文件地址"];
// let listConf = ["计划完成时间", "实际完成时间", "延期天数", "剩余天数", "距离到期", "是否预警"];
// // let earlyCertification = getPopupMoreData(line, data, conf);
// let earlyCertification:any = {};
// data.forEach(item => {
// let dataLine = item.line;
// let dataSite = item.site;
// let completionStatus = item.完成状态;
// let plannedCompletionTime = moment(item.计划完成时间).format("YYYY/MM/DD"); //计划完成时间
// let actualCompletionTime = moment(item.实际完成时间).format("YYYY/MM/DD"); //实际完成时间
// let expirationTime = moment(item.到期时间).format("YYYY/MM/DD"); //到期时间
// let today = moment(new Date()).format("YYYY/MM/DD"); //当前日期
// let pipelineRelocationData = {};
// let listData = [];
// if (line == dataLine) {
// switch(completionStatus) {
// case "延期完成":
// item["延期天数"] = moment(actualCompletionTime).diff(plannedCompletionTime, 'day');
// break;
// case "未完成":
// item["剩余天数"] = moment(plannedCompletionTime).diff(today, 'day');
// break;
// case "未到期":
// let {month, day} = monthDayDiff(today, expirationTime);
// item["距离到期"] = `${month}个月${day}天`;
// item["是否预警"] = false; //是否预警
// if (month < 3) item["是否预警"] = true;
// break;
// }
// if (!earlyCertification[dataSite]) earlyCertification[dataSite] = {site:item.site, state:item.state, data:[]};
// for (let name = 0; name < conf.length; name++) {
// pipelineRelocationData[conf[name]] = item[conf[name]];
// }
// for (let name = 0; name < listConf.length; name++) {
// item["是否预警"] = String(item["是否预警"]);
// if (item[listConf[name]] && item[listConf[name]] != "undefined") listData.push({key: listConf[name], value: item[listConf[name]]})
// }
// pipelineRelocationData["listData"] = listData;
// earlyCertification[dataSite]["data"].push(pipelineRelocationData);
// }
// });
// let result = {"earlyCertification": earlyCertification[site] || earlyCertificationDefault};
// res.send(result);
// return result;
// }
/**
* 获取日期之间间隔几个月零几天
* @param startDate 开始时间
* @param endDate 结束时间
* @returns
*/
function monthDayDiff(startDate, endDate) {
let flag = [1, 3, 5, 7, 8, 10, 12, 4, 6, 9, 11, 2];
let start = new Date(startDate);
let end = new Date(endDate);
let year = end.getFullYear() - start.getFullYear();
let month = end.getMonth() - start.getMonth();
let day = end.getDate() - start.getDate();
if (month < 0) {
year--;
month = end.getMonth() + (12 - start.getMonth());
}
if (day < 0) {
month--;
let index = flag.findIndex((temp) => {
return temp === start.getMonth() + 1
});
let monthLength;
if (index <= 6) {
monthLength = 31;
} else if (index > 6 && index <= 10) {
monthLength = 30;
} else {
monthLength = 28;
}
day = end.getDate() + (monthLength - start.getDate());
}
month = 12 * year + month;
return {month, day};
}
\ No newline at end of file
......@@ -2,23 +2,55 @@
* 参建单位
*/
import { participatingUnitsDefault, participatingUnitsListDefault } from "../../config/defaultConfig";
import { participatingUnitsTableData } from "../../data/table/stationPopupData";
import { change, getPopupOneData } from "../../dataPackage/inBackOut";
// export async function getParticipatingUnits(req, res) {
// let line = req.query.line || "17号线";
// let site = req.query.site || "西岑站";
// let tableData = participatingUnitsTableData();
// //"线路", "站点名称", "站点状态", "建设单位", "勘察单位", "设计单位", "施工单位", "监理单位",
// let data = change(["line", "site", "state", "constructUnits", "curveyUnits", "designUnits", "constructionUnits", "supervisionUnits"], tableData["参建单位数据"].bodyList );
// let conf = ["site", "state", "constructUnits", "curveyUnits", "designUnits", "constructionUnits", "supervisionUnits"];
// let participatingUnits = getPopupOneData(line, data, conf);
// let result = {"participatingUnits": participatingUnits[site] || participatingUnitsDefault};
// res.send(result);
// return result;
// }
export async function getParticipatingUnits(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
let tableData = participatingUnitsTableData();
//"线路", "站点名称", "站点状态", "建设单位", "勘察单位", "设计单位", "施工单位", "监理单位",
let data = change(["line", "site", "state", "constructUnits", "curveyUnits", "designUnits", "constructionUnits", "supervisionUnits"], tableData["参建单位数据"].bodyList );
let conf = ["site", "state", "constructUnits", "curveyUnits", "designUnits", "constructionUnits", "supervisionUnits"];
let data = change(["line", "site", "state", "建设单位", "勘察单位", "设计单位", "施工单位", "监理单位", "第三方检测单位", "环境检测单位"], tableData["参建单位数据"].bodyList );
let conf = ["site", "state"];
let participatingUnits = getPopupOneData(line, data, conf);
let result = {"participatingUnits": participatingUnits[site]};
let dataListConf = ["建设单位", "勘察单位", "设计单位", "施工单位", "监理单位", "第三方检测单位", "环境检测单位"];
let dataList = getPopupOneData(line, data, dataListConf);
let participatingUnitsList = [];
for(let key in dataList[site]) {
participatingUnitsList.push({key, value: dataList[site][key]});
}
let result = {};
result["participatingUnits"] = participatingUnits[site] || participatingUnitsDefault;
result["dataList"] = participatingUnitsList || participatingUnitsListDefault;
res.send(result);
......
......@@ -6,17 +6,54 @@ import { pipelineRelocationDetailsTableData, pipelineRelocationTableData } from
import { change, getPopupDetailsData, getPopupMoreData } from "../../dataPackage/inBackOut";
export async function getPipelineRelocation(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
let tableData = pipelineRelocationTableData();
//"线路", "站点名称", "站点状态", "标题", "已完成", "进行中", "延误中", "未开始", "管线搬迁编号"
let data = change(["line", "site", "state", "title", "completed", "inProgress", "delaying", "notStarted", "id"], tableData["管线搬迁数据"].bodyList );
//"线路", "站点名称", "站点状态", "标题", "已完成", "进行中", "延误中", "未开始", "", "管线搬迁编号"
let data = change(["line", "site", "state", "title", "completed", "inProgress", "delaying", "notStarted", "stage", "id"], tableData["管线搬迁数据"].bodyList );
let conf = ["title", "completed", "inProgress", "delaying", "notStarted", "id"];
let conf = ["completed", "inProgress", "delaying", "notStarted", "id"];
let stageConf = ["completed", "inProgress", "delaying", "notStarted", "stage", "id"];
// let pipelineRelocation = getPopupMoreData(line, data, conf);
let pipelineRelocation:any = {};
let stageList = [];
data.forEach(item => {
let dataLine = item.line;
let dataSite = item.site;
let dataStage = item.stage;
let pipelineRelocationData = {};
let stageData = {};
if (line == dataLine) {
if (!pipelineRelocation[dataSite]) pipelineRelocation[dataSite] = {site:item.site, state:item.state, data:{}};
if (!pipelineRelocation[dataSite]["data"][item.title]) pipelineRelocation[dataSite]["data"][item.title] = {};
if (dataStage) {
for (let name = 0; name < stageConf.length; name++) {
stageData[stageConf[name]] = item[stageConf[name]];
}
stageList.push(stageData);
pipelineRelocation[dataSite]["data"][item.title] = stageList;
} else {
for (let name = 0; name < conf.length; name++) {
pipelineRelocationData[conf[name]] = item[conf[name]];
}
pipelineRelocation[dataSite]["data"][item.title] = pipelineRelocationData;
}
}
});
let pipelineRelocationList = [];
for (let key in pipelineRelocation[site]["data"]) {
pipelineRelocationList.push({title: key, list: pipelineRelocation[site]["data"][key]});
}
let pipelineRelocation = getPopupMoreData(line, data, conf);
pipelineRelocation[site]["data"] = pipelineRelocationList;
let result = {"pipelineRelocation": pipelineRelocation[site]};
......@@ -27,7 +64,7 @@ export async function getPipelineRelocation(req, res) {
export async function getPipelineRelocationDetails(req, res) {
let id = req.query.id || "18号线二期江阳南路站1";
let id = req.query.id || "17号线西岑站1";
let tableData = pipelineRelocationDetailsTableData();
let result:any = {};
......
......@@ -2,12 +2,13 @@
* 动迁腾地
*/
import { relocationTengdiDefaule } from "../../config/defaultConfig";
import { relocationTengdiTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
export async function getRelocationTengdi(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
let tableData = relocationTengdiTableData();
//"线路", "站点名称", "站点状态", "完成率名称", "完成率", "总数名称", "总数", "完成数名称", "完成数"
......@@ -17,7 +18,7 @@ export async function getRelocationTengdi(req, res) {
let relocationTengdi = getPopupMoreData(line, data, conf);
let result = {"relocationTengdi": relocationTengdi[site]};
let result = {"relocationTengdi": relocationTengdi[site] || relocationTengdiDefaule};
res.send(result);
......
/**
* 遗留问题
*/
import { remainingProblemsTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
export async function getRemainingProblems(req, res) {
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
let tableData = remainingProblemsTableData();
//"线路", "站点名称", "站点状态", "区域", "正常完成", "正常延误", "一般延误", "严重延误"
let data = change(["line", "site", "state", "problemName", "problemDescription", "fillingTime", "reportingDepartment"], tableData["遗留问题数据"].bodyList );
let conf = ["problemName", "problemDescription", "fillingTime", "reportingDepartment"];
let remainingProblems = getPopupMoreData(line, data, conf);
let result = {"remainingProblems": remainingProblems[site]}
res.send(result);
return result;
}
\ No newline at end of file
......@@ -13,8 +13,8 @@ import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
* @returns riskHazards: { site}
*/
export async function getRiskHazards(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
let tableData = riskHazardsTableData();
//"线路", "站点名称", "站点状态", "风险隐患数", "风险名称", "风险等级", "风险编号"
......@@ -41,7 +41,7 @@ export async function getRiskHazards(req, res) {
* @returns details:[ { name:"", value:"" }, { name:"", value:"" }, ...... ]
*/
export async function getRiskHazardsDetails(req, res) {
let riskId = req.query.riskId|| "18号线二期江阳南路站1";
let riskId = req.query.riskId|| "17号线西岑站1";
let tableData = riskHazardsDetailsTableData();
let result:any = {};
......
......@@ -12,8 +12,8 @@ import { change } from "../../dataPackage/inBackOut";
* @returns
*/
export async function getSmartConstructionSite(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
let tableData = smartConstructionSiteTableData();
//"线路", "站点名称", "站点状态", "监控视频编号", "进场人数", "退场人数", "在场人数", "未签到", "未签退", "闸机编号", "监测类型", "测点数"
......@@ -79,7 +79,7 @@ export async function getSmartConstructionSite(req, res) {
* @returns
*/
export async function getGateData(req, res) {
let gateId = req.query.gateId || "18号线二期江阳南路站1";
let gateId = req.query.gateId || "17号线西岑站1";
let tableData = gateDataTableData();
let result:any = {};
......@@ -112,7 +112,7 @@ export async function getGateData(req, res) {
* @returns
*/
export async function getMonitoringData(req, res) {
let monitoringId = req.query.monitoringId|| "18号线二期江阳南路站1(沉降)";
let monitoringId = req.query.monitoringId|| "17号线西岑站1(沉降)";
let tableData = monitoringDataTableData();
//"测点名称", "日期", "第三方监测位移累计变化量", "第三方监测位移日变化量", "施工监测位移累计变化量", "施工监测位移日变化量"
......
......@@ -2,22 +2,36 @@
* 车站信息
*/
import { stationDataLiatDefault, stationDefault } from "../../config/defaultConfig";
import { stationTableData } from "../../data/table/stationPopupData";
import { change, getPopupOneData } from "../../dataPackage/inBackOut";
import { separateDataAndUint } from "../../dataPackage/tool";
export async function getStation(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
let tableData = stationTableData();
//"线路", "站点名称", "站点状态", "车站类型", "建筑面积", "站台长度", "站台宽度", "建设周期", "车站出口", "车站入口"
let data = change(["line", "site", "state", "stationType", "floorSpace", "platformLength", "platformWidth", "constructionCycle", "stationExit", "stationEntrance"], tableData["车站信息数据"].bodyList );
//"线路", "站点名称", "站点状态", "车站类型", "建筑面积", "站台长度", "站台宽度", "建设周期", "车站出入口", "车站风井"
let data = change(["line", "site", "state", "stationType", "建筑面积", "站台长度", "站台宽度", "建设周期", "车站出入口", "车站风井"], tableData["车站信息数据"].bodyList );
let conf = ["site", "state", "stationType"];
let station = getPopupOneData(line, data, conf);
let dataListConf = ["建筑面积", "站台长度", "站台宽度", "建设周期", "车站出入口", "车站风井"];
let dataList = getPopupOneData(line, data, dataListConf);
let conf = ["site", "state", "stationType", "floorSpace", "platformLength", "platformWidth", "constructionCycle", "stationExit", "stationEntrance"];
let stationDataList = [];
for(let key in dataList[site]) {
let {dataNum, dataUnit} = separateDataAndUint(dataList[site][key]);
stationDataList.push({key, value: dataNum, unit: dataUnit});
}
let stationInfo = getPopupOneData(line, data, conf);
let result = {};
let result = {"stationInfo": stationInfo[site]};
result["stationInfo"] = station[site] || stationDefault;
result["dataList"] = stationDataList || stationDataLiatDefault;
res.send(result);
......
......@@ -25,13 +25,16 @@ export const ProphaseDefault = {
/**
* 动迁腾地 详行政区计划 scheduleList
*/
export const ScheduleListDefault = {
"undefined" : {
"total": 0,
"complete": 0,
"incomplete": 0
export const ScheduleListDefault = [
{
"name": "",
"dataList": {
"total": 0,
"complete": 0,
"incomplete": 0
}
}
};
];
/**
......@@ -39,9 +42,9 @@ export const ScheduleListDefault = {
*/
export const ScheduleDefault = {
data: {
"车站": { plan: 0, complete: 0, inProgress: 0 },
"车辆基站": { plan: 0, complete: 0, inProgress: 0 },
"高架区间": { plan: 0, complete: 0, inProgress: 0 }
"车站": { plan: 0, complete: 0, inProgress: 0, unit: "" },
"车辆基站": { plan: 0, complete: 0, inProgress: 0, unit: "" },
"高架区间": { plan: 0, complete: 0, inProgress: 0, unit: "" }
}
}
......@@ -132,6 +135,56 @@ export const mapDefault = {
title: '线路列表',
dataList: [
{
name: '2号线西延伸', value: 35, key: "2号线",
ygLine: "yg_line2x",
lineLocation: {
lng: -17428.174,
lat: -9858.669,
height: 3520.564,
heading: 0.03386971261178928,
pitch: -0.6624057821120379,
roll: 6.283185307179565
},
lineList: [
{
line: '蟠祥路站',
location: {
lng: -17798.682,
lat: -6326.961,
height: 414.915,
heading: 0.03386971261177152,
pitch: -0.6624057821120575,
roll: 6.283185307179565
},
},
]
},
{
name: '17号线', value: 35, key: "17号线",
ygLine: "yg_line17",
lineLocation: {
lng: -46787.422,
lat: -28797.762,
height: 9928.764,
heading: 0.03386971261170757,
pitch: -0.6624057821120424,
roll: 7.194245199571014e-14
},
lineList: [
{
line: '西岑站',
location: {
lng: -48442.743,
lat: -18969.986,
height: 866.211,
heading: 0.043056449962152854,
pitch: -0.6649790172211736,
roll: 7.638334409421077e-14
}
},
]
},
{
name: '18号线二期', value: 35, key: "18号线",
ygLine: "yg_line18",
lineLocation: {
......@@ -1194,29 +1247,32 @@ export const mapDefault = {
export const stationDefault = {
site: "",
state: "",
stationType: "",
floorSpace: "0m²",
platformLength: "0m",
platformWidth: "0m",
constructionCycle: "",
stationExit: 0,
stationEntrance: 0
stationType: ""
}
export const stationDataLiatDefault = [
{
key: "",
value: 0
}
]
/**
* 参建单位
*/
export const participatingUnitsDefault = {
site: "",
state: "",
constructUnits: "",
curveyUnits: "",
designUnits: "",
constructionUnits: "",
supervisionUnits: ""
state: ""
}
export const participatingUnitsListDefault = [
{
key:"",
value: 0
}
]
/**
* 前期证照
......@@ -1230,6 +1286,8 @@ export const earlyCertificationDefault = {
completionStatus: "",
plannedCompletionTime: "",
actualCompletionTime: "",
delayDays: 0,
daysRemaining: 0,
fileAddress: ""
}
]
......@@ -1272,6 +1330,25 @@ export const relocationTengdiDefaule = {
/**
* 管线搬迁
*/
export const pipelineRelocation = {
site: "",
state: "",
data: [
{
title: "",
completed: 0,
inProgress: 0,
delaying: 0,
notStarted: 0,
id: ""
}
]
}
/**
* 管线搬迁详情
*/
......@@ -1285,4 +1362,37 @@ export const pipelineRelocationDetails = [
}
]
}
]
\ No newline at end of file
]
/**
* 质量安全指标面板对接接口版本
*/
export const significantRiskDefault = {
"全网": {
"基坑": { level1MajorRisks: 0, riskTotal: 0, secure: 0, control: 0, focus: 0},
"特大桥": { level1MajorRisks: 0, riskTotal: 0, secure: 0, control: 0, focus: 0},
"区间": { level1MajorRisks: 0, riskTotal: 0, secure: 0, control: 0, focus: 0},
}
};
export const currentRiskDefault = {
"全线网": {
outShapeValue: 3.29,
bottomLoseRate: 4.8,
dbcjVariable: 0,
}
};
export const currentRiskDetailDefault = {
"全网": {
pit: 0,
interval: 0,
superMajorBridge: 0,
pitCount: 0,
intervalCount: 0,
superMajorBridgeCount: 0,
}
}
import { INTERFACEREQUESTTYPEENUM } from "./enum";
// 请把 "INTERFACEREQUESTTYPEENUM.即时更新" 改成 INTERFACEREQUESTTYPEENUM.即时更新 把引号去掉 【定时更新同理 】
export const Config = {"计划进度":{"type":"INTERFACEREQUESTTYPEENUM.即时更新","time":3600000,"url":"url地址","reqType":"post","header":{},"body":{}},"形象进度":{"type":"INTERFACEREQUESTTYPEENUM.即时更新","time":3600000,"url":"url地址","reqType":"post","header":{},"body":{}},"里程碑节点完成情况":{"type":"INTERFACEREQUESTTYPEENUM.即时更新","time":3600000,"url":"url地址","reqType":"post","header":{},"body":{}},"致命性风险分布":{"type":"INTERFACEREQUESTTYPEENUM.即时更新","time":3600000,"url":"url地址","reqType":"post","header":{},"body":{}},"当前风险节点":{"type":"INTERFACEREQUESTTYPEENUM.即时更新","time":3600000,"url":"url地址","reqType":"post","header":{},"body":{}},"工程 安全状态":{"type":"INTERFACEREQUESTTYPEENUM.即时更新","time":3600000,"url":"url地址","reqType":"post","header":{},"body":{}}};
\ No newline at end of file
const path = require('path');
import * as fs from "fs";
import { BizError } from "../util/bizError";
import { BizError, SysError } from "../util/bizError";
import { analysisXml } from "../util/myXML";
import {ServerConfig} from "../config/systemClass";
import { SYSTEMERRORENUM } from "./errorEnum";
export let systemConfig = new ServerConfig;
......@@ -14,13 +15,41 @@ export async function initConfig() {
let configInfo:any = await analysisXml(configStr);
if (!configInfo || !configInfo.config) console.log("xml中无配置加载");
else {
let {port, imgUrl, monitorUrl} = configInfo.config;
systemConfig.port = parseInt(port[0]);
systemConfig.imgUrl = imgUrl[0];
systemConfig.monitorUrl = monitorUrl[0];
//必要配置
let integralConfig = ["port", "monitorUrl"];
checkConfig(integralConfig, configInfo.config);
let {port, monitorUrl} = configInfo.config;
systemConfig.port = parseInt(port[0]);
systemConfig.monitorUrl = monitorUrl[0];
}
} catch(err) {
throw new BizError("服务器配置解析错误 请检查根目录下 serverConfig.xml 文件是否正确");
}
}
function checkConfig(config, configData) {
config.forEach(item => {
if (typeof item == "object") {
for (let key in item) {
if (!configData[key] || !configData[key][0]) {
throw new SysError(SYSTEMERRORENUM.初始化配置失败, `serverConfig.xml中 缺少 ${key}`);
}
item[key].forEach( subItem => {
if (!configData[key][0][subItem] || !configData[key][0][subItem][0]) {
throw new SysError(SYSTEMERRORENUM.初始化配置失败, `serverConfig.xml中 ${key}缺少 ${subItem}`);
}
});
}
} else {
if (!configData[item] || !configData[item][0]) {
throw new SysError(SYSTEMERRORENUM.初始化配置失败, `serverConfig.xml中 缺少 ${item}`);
}
}
});
}
......@@ -4,6 +4,6 @@
export class ServerConfig {
port:number;
imgUrl:string;
monitorUrl:string
monitorUrl:string;
qualitySafetyPanel:string //质量安全面板
}
\ No newline at end of file
/**
* 计划进度指标面板 plannedprogress
*/
export enum PLANNEDPROGRESS{
前期工作 = "2023年前期工作",
建设计划 = "2023年建设计划",
里程碑节点完成情况 = "里程碑节点完成情况"
}
/**
* 质量安全指标面板 quality
*/
export enum QUALITY{
重大风险分布 = "重大风险分布",
当前风险节点 = "当前风险节点",
工程安全状态 = "工程安全状态"
}
/**
* 业财融合指标面板 businessfinance
*/
export enum BUSINESSFINANCE{
概算总数 = "概算总数",
投资完成情况 = "2023投资完成情况"
}
/**
* 投资管控指标面板 invest
*/
export enum INVEST{
用款执行 = "用款执行(2023)",
专项债 = "专项债(2023)"
}
//接口任务 定期更新
import * as request from 'request';
import { INTERFACEREQUESTTYPEENUM } from "../../config/enum";
import { Config } from "../../config/interfaceConfig";
import { BizError } from "../../util/bizError";
import { get, post, postForm } from "../../util/request";
import { Config } from './interfaceConfig';
//初始化接口数据
export async function initInterfaceData() {
......@@ -17,7 +16,6 @@ export async function initInterfaceData() {
}, 10000);
}
//异常接口 不更新数据
let errorInterfaceInfo = {};
......@@ -94,7 +92,7 @@ async function taskUpdate() {
let realTimeDataQueue = {};
//即时数据初始化
export async function initRealTime() {
async function initRealTime() {
let initSuccess = true;
for (let interfaceName in Config) {
const ThisConfig = Config[interfaceName];
......@@ -114,25 +112,75 @@ export async function initRealTime() {
return initSuccess;
}
export async function getInterfaceByInterfaceName(name) {
export async function getInterfaceByInterfaceName(name, body?, header?) {
const ThisConfig = Config[name];
let data:any;
if (ThisConfig.type == INTERFACEREQUESTTYPEENUM.即时更新) {
let reqRes;
let reqBody = Object.assign( ThisConfig.body|| {}, body || {});
let reqHeader = Object.assign( ThisConfig.header|| {}, header || {});
switch(ThisConfig.reqType) {
case "get": reqRes = await get(ThisConfig.url, ThisConfig.body, ThisConfig.header); break;
case "post": reqRes = await post(ThisConfig.url, ThisConfig.body, ThisConfig.header); break;
case "postForm": reqRes = await postForm(ThisConfig.url, ThisConfig.body); break;
case "get": reqRes = await get(ThisConfig.url, reqBody, reqHeader); break;
case "post": reqRes = await post(ThisConfig.url, reqBody, reqHeader); break;
case "postForm": reqRes = await postForm(ThisConfig.url, reqBody ); break;
}
if (reqRes.success) {
data = reqRes.data;
} else {
data = realTimeDataQueue[name];
console.log(`${name}请求失败, 读取缓存数据`);
}
} else data = dataQueue[name];
return data;
}
function get(url:string, query?, headers?, timeOut?) {
timeOut = timeOut || 5000;
if (!url || (url.search(/http:/) && url.search(/https:/)) ) throw new BizError(!url ? "请求地址为空" : "请求地址错误");
return new Promise((resolve, reject)=>{
let paramater:any = { url, json:true, timeout:timeOut };
if (query) paramater.qs = query;
if (headers) paramater.headers = headers;
request.get(paramater, function (err, res, data) {
const success = !err && res && res.statusCode == 200;
let message = err || res.statusCode || "";
resolve({success, message, data});
})
})
}
function post(url, body, headers) {
if (!url || (url.search(/http:/) && url.search(/https:/)) ) throw new BizError(!url ? "请求地址为空" : "请求地址错误");
let header = {"content-type": "application/json"};
return new Promise((resolve, reject)=>{
request({
url: url,
method: "POST",
json: true,
headers: Object.assign(header, headers),
body: body
}, function(err, res, data) {
const success = !err && res && res.statusCode == 200;
let message = err || res.statusCode || "";
resolve({success, message, data});
});
})
}
function postForm(url, body) {
if (!url || (url.search(/http:/) && url.search(/https:/)) ) throw new BizError(!url ? "请求地址为空" : "请求地址错误");
return new Promise((resolve, reject)=>{
request({
url: url,
method: "POST",
json: true,
form:body
}, function(err, res, data) {
const success = !err && res && res.statusCode == 200;
let message = err || res.statusCode || "";
resolve({success, message, data});
});
})
}
import { INTERFACEREQUESTTYPEENUM } from "../../config/enum";
//配置
// "接口名称":{
// type:"1是即时更新 2是即时更新 使用 INTERFACErEQUESTTYPEENUM",
// time:"更新频率毫秒 例如1小时这里就是 3600000",
// url:"url地址",
// reqType:"get还是post get = get post = post",
// header:{},
// body:{}
// }
export const Config = {
"获取token接口":{type:INTERFACEREQUESTTYPEENUM.即时更新, time:3600000*12, url:"http://112.64.195.226:8899/api/openapi/v1/auth/getToken", reqType:"post", header:{}, body:{}},
"质量安全指标面板":{type:INTERFACEREQUESTTYPEENUM.即时更新, time:3600000*12, url:"http://112.64.195.226:8899/api/openapi/v1/project/getSectionList", reqType:"post", header:{}, body:{}},
};
/**
* 质量安全指标面板
*/
import { getToken } from "../../middleware/getToken";
import { BizError } from "../../util/bizError";
import { getInterfaceByInterfaceName } from "./cronJob";
export async function getQualitySafetyPanel() {
let token = await getToken();
let data = await getInterfaceByInterfaceName("质量安全指标面板", {token});
let qualitySafetyPanelData = getData(data);
let significantRisk:any = {"全网":{}}; //重大风险分布
let currentRisk:any = {}; //当前风险节点
let currentRiskDetail:any = {};//当前风险节点详细数据
qualitySafetyPanelData.forEach( item => {
let {riskFlag, lineName, sectionType, riskLevel, outShapeValue, bottomLoseRate, dbcjVariable, safeStatus} = item;
/**
* 重大风险分布
*/
if (lineName != "全线网") {
if (!significantRisk[lineName]) significantRisk[lineName] = {};
if (sectionType != "特大桥") {
if (!significantRisk[lineName][sectionType]) significantRisk[lineName][sectionType] = {level1MajorRisks:0, riskTotal:0, secure:0, control:0, focus:0};
if (!significantRisk["全网"][sectionType]) significantRisk["全网"][sectionType] = {level1MajorRisks:0, riskTotal:0, secure:0, control:0, focus:0};
if (!significantRisk["全网"]["旁通道"]) significantRisk["全网"]["旁通道"] = {level1MajorRisks:0, riskTotal:0, secure:0, control:0, focus:0};
if (riskLevel == "一级重大风险") { //一级重大风险
significantRisk[lineName][sectionType].level1MajorRisks = significantRisk[lineName][sectionType].level1MajorRisks + 1;
significantRisk["全网"][sectionType].level1MajorRisks = significantRisk["全网"][sectionType].level1MajorRisks + 1;
}
if (riskLevel == "一级" || riskLevel == "二级" || riskLevel == "三级" || riskLevel == "一级重大风险") { //风险总数
significantRisk[lineName][sectionType].riskTotal = significantRisk[lineName][sectionType].riskTotal + 1;
significantRisk["全网"][sectionType].riskTotal = significantRisk["全网"][sectionType].riskTotal + 1;
}
}
}
/**
* 当前风险节点
*/
/**基础数据 */
if (!currentRisk[lineName]) currentRisk[lineName] = {outShapeValue:0, bottomLoseRate:0, dbcjVariable:0};
currentRisk[lineName].outShapeValue = outShapeValue || 0;
currentRisk[lineName].bottomLoseRate = bottomLoseRate || 0;
currentRisk[lineName].dbcjVariable = dbcjVariable || 0;
if (riskFlag) {
/**
* 当前风险节点
*/
/**详细数据 */
if (!currentRiskDetail[lineName]) currentRiskDetail[lineName] = {pit:0, interval:0, superMajorBridge:0, pitCount:0, intervalCount:0, superMajorBridgeCount:0};
if (!currentRiskDetail["全网"]) currentRiskDetail["全网"] = {pit:0, interval:0, superMajorBridge:0, pitCount:0, intervalCount:0, superMajorBridgeCount:0};
switch(sectionType) {
case "基坑":
currentRiskDetail[lineName].pit = currentRiskDetail[lineName].pit + 1;
currentRiskDetail["全网"].pit = currentRiskDetail["全网"].pit + 1;
currentRiskDetail[lineName].pitCount = significantRisk[lineName][sectionType].riskTotal;
currentRiskDetail["全网"].pitCount = significantRisk["全网"][sectionType].riskTotal;
break;
case "区间":
currentRiskDetail[lineName].interval = currentRiskDetail[lineName].interval + 1;
currentRiskDetail["全网"].interval = currentRiskDetail["全网"].interval + 1;
currentRiskDetail[lineName].intervalCount = significantRisk[lineName][sectionType].riskTotal;
currentRiskDetail["全网"].intervalCount = significantRisk["全网"][sectionType].riskTotal;
break;
case "旁通道":
currentRiskDetail[lineName].superMajorBridge = currentRiskDetail[lineName].superMajorBridge + 1;
currentRiskDetail["全网"].superMajorBridge = currentRiskDetail["全网"].superMajorBridge + 1;
currentRiskDetail[lineName].superMajorBridgeCount = significantRisk[lineName][sectionType].riskTotal;
currentRiskDetail["全网"].superMajorBridgeCount = significantRisk["全网"][sectionType].riskTotal;
break;
}
/**
* 工程安全状态
*/
switch(safeStatus) {
case '安全':
significantRisk[lineName][sectionType].secure = significantRisk[lineName][sectionType].secure + 1;
significantRisk["全网"][sectionType].secure = significantRisk["全网"][sectionType].secure + 1;
break;
case '风险可控':
significantRisk[lineName][sectionType].control = significantRisk[lineName][sectionType].control + 1;
significantRisk["全网"][sectionType].control = significantRisk["全网"][sectionType].control + 1;
break;
case '重点关注':
significantRisk[lineName][sectionType].focus = significantRisk[lineName][sectionType].focus + 1;
significantRisk["全网"][sectionType].focus = significantRisk["全网"][sectionType].focus + 1;
break;
}
}
})
let result:any = {};
result["significantRisk"] = significantRisk;
result["currentRisk"] = currentRisk;
result["currentRiskDetail"] = currentRiskDetail;
return result;
}
function getData(data) {
let {success, message, code, timestamp, result, requestId} = data;
if (success) {
return result;
} else {
throw new BizError(`${code} ${message} 获取接口数据失败`);
}
}
\ No newline at end of file
......@@ -62,7 +62,7 @@ export function scheduleTableData() {
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["建设计划数据", "详细数据1", "详细数据2", "详细数据3"];//适配 表格
let decollatePlanarList =["建设计划数据", "详细数据1", "详细数据2", "详细数据3", "详细数据4", "详细数据5", "详细数据6"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
......@@ -151,7 +151,7 @@ export function finalaccountsTableData() {
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = ["2021合同数据", "2022合同数据", "2023合同数据", "2021合同决算统计", "2022合同决算统计", "2023合同决算统计", "2021业务系统数", "2022业务系统数", "2023业务系统数"]; //适配 柱状图 折线图
let barChartList = ["2023合同数据", "2023合同决算统计", "2023业务系统数"]; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =[];//适配 表格
......@@ -185,7 +185,7 @@ export function earlywarningTableData() {
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["崇明线", "19号线", "18号线二期", "23号线", "21号线"];//适配 表格
let decollatePlanarList =["崇明线", "19号线", "17号线", "23号线", "21号线"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
......@@ -236,17 +236,36 @@ export function mapLineTableData() {
}
export function lineConstructTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/建设指挥平台地图.xlsx', '建设里程碑');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList = []; //适配 表格 2号线西延伸
blockDataList.forEach( item => {
let {blockData, blockTitle} = item;
decollatePlanarList.push(blockTitle);
})
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 decollatePlanarList =["2号线西延伸", "17号线", "18号线二期", "19号线", "21号线", "23号线", "崇明线"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
......@@ -54,4 +54,23 @@ export function yearTableData() {
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
\ No newline at end of file
}
export function planningPeriodTableData() {
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;
}
......@@ -100,7 +100,13 @@ export function pipelineRelocationDetailsTableData() {
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1", "18号线二期江阳南路站2", "18号线二期江阳南路站3", "18号线二期江阳南路站4", "18号线二期江阳南路站5"];//适配 表格
let decollatePlanarList = []; //适配 表格
blockDataList.forEach( item => {
let {blockData, blockTitle} = item;
decollatePlanarList.push(blockTitle);
})
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
......@@ -128,7 +134,13 @@ export function civilEngineeringDetailsTableData() {
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["A区", "B区"];//适配 表格
let decollatePlanarList = []; //适配 表格
blockDataList.forEach( item => {
let {blockData, blockTitle} = item;
decollatePlanarList.push(blockTitle);
})
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
......@@ -170,7 +182,13 @@ export function surveillanceVideoTableData() {
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1",];//适配 表格
let decollatePlanarList = []; //适配 表格
blockDataList.forEach( item => {
let {blockData, blockTitle} = item;
decollatePlanarList.push(blockTitle);
})
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
......@@ -184,7 +202,13 @@ export function gateDataTableData() {
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1(工种)", "18号线二期江阳南路站(班组)"];//适配 表格
let decollatePlanarList = []; //适配 表格
blockDataList.forEach( item => {
let {blockData, blockTitle} = item;
decollatePlanarList.push(blockTitle);
})
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
......@@ -198,7 +222,13 @@ export function monitoringDataTableData() {
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1(沉降)", "18号线二期江阳南路站1(测斜)"];//适配 表格
let decollatePlanarList = []; //适配 表格
blockDataList.forEach( item => {
let {blockData, blockTitle} = item;
decollatePlanarList.push(blockTitle);
})
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
......@@ -226,7 +256,13 @@ export function riskHazardsDetailsTableData() {
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1"];//适配 表格
let decollatePlanarList = []; //适配 表格
blockDataList.forEach( item => {
let {blockData, blockTitle} = item;
decollatePlanarList.push(blockTitle);
})
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
......@@ -254,7 +290,13 @@ export function constructionMaterialsDetailsTableData() {
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1"];//适配 表格
let decollatePlanarList = []; //适配 表格
blockDataList.forEach( item => {
let {blockData, blockTitle} = item;
decollatePlanarList.push(blockTitle);
})
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
......@@ -262,6 +304,18 @@ export function constructionMaterialsDetailsTableData() {
}
export function remainingProblemsTableData() {
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;
}
/**
/**
* 业财融合
*/
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 estimateTableData() {
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 investmentStatusTableData() {
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 planningPeriodTableData() {
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
/**
/**
* 投资管控
*/
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 contractWarningTableData() {
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 budgetwarningTableData() {
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 targetcostTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/投资管控.xlsx', '线路概算');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList = []; //适配 表格 21号线一期1
blockDataList.forEach( item => {
let {blockData, blockTitle} = item;
decollatePlanarList.push(blockTitle);
})
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function detailedTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/投资管控.xlsx', '概算详情');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList = []; //适配 表格
blockDataList.forEach( item => {
let {blockData, blockTitle} = item;
decollatePlanarList.push(blockTitle);
})
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
......@@ -149,10 +149,10 @@ export function getKeyValueOut(title, data) {
typeChangeValue = parseFloat(value);
total+= typeChangeValue;
} else typeChangeValue = value;
dataList.push({name:key, value:typeChangeValue, unit});
dataList.push({name:key, value: Math.round(typeChangeValue * 100) /100, unit});
});
return {title, total, count:dataList.length, dataList};
return {title, total: Math.round(total * 100) /100, count:dataList.length, dataList};
}
/**
......
import { initInterfaceData } from "./data/interface/cronJob";
import { getInterfaceByInterfaceName, initInterfaceData } from "./data/interface/cronJob";
var os = require("os")
import { httpServer } from "./net/http_server";
import { initConfig, systemConfig } from "./config/serverConfig";
import { getToken } from "./middleware/getToken";
async function lanuch() {
await initConfig();
// initInterfaceData();
initInterfaceData();
httpServer.createServer( systemConfig.port );
console.log('This indicates that the server is started successfully.');
}
lanuch();
import * as crypto from 'crypto';
import { getInterfaceByInterfaceName } from '../data/interface/cronJob';
import { BizError } from '../util/bizError';
/**
* 加密
* @param text 要加密的明文
* @param key 密码
* @param iv 偏移量
* key和iv都应为16字节长
* @returns
*/
export function encrypt(text, key, iv) {
let cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
let encrypted = cipher.update(text, 'utf8', 'base64');
encrypted += cipher.final('base64');
return encrypted;
}
/**
* 解密
* @param encrypted 要解密的密文
* @param key 密码
* @param iv 偏移量
* key和iv都应为16字节长
* @returns
*/
export function decrypt(encrypted, key, iv) {
let decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
let decrypted = decipher.update(encrypted, 'base64', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
export async function getToken() {
let appId = "sec_dt_platform";
let plaintext = appId + new Date().valueOf();
let key = 'b81d56b0071dc916';
let iv = 'b81d56b0071dc916';
let signature = encrypt(plaintext, key, iv);
let data = await getInterfaceByInterfaceName("获取token接口", {appId, signature});
let token = "";
if (!data) throw new BizError("获取token失败");
let {success, message, code, timestamp, result, requestId} = data;
if (success) {
token = result;
} else {
throw new BizError(`${code} ${message} 获取token失败`)
}
return token;
}
\ No newline at end of file
......@@ -7,41 +7,49 @@ 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';
import * as mapBiz from '../biz/construct/map'
import * as mapBiz from '../biz/construct/map';
import * as 业财融合Biz from '../biz/construct/业财融合面板';
import * as contractWarningBiz from '../biz/construct/contractWarning';
import * as 投资管控Biz from '../biz/construct/投资管控面板';
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/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/financialestimates', asyncHandler(investBiz.getFinancialestimates) ); //概算总数
httpServer.get('/construct/invest/investmentcontrol', asyncHandler(investBiz.getInvestmentcontrol) ); //投控建设
httpServer.get('/construct/invest/finalaccounts', asyncHandler(investBiz.getFinalaccounts) ); //决算统计
/**投资管控指标面板 弃用 */
// 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.getInvest) );//投资完成情况
httpServer.get('/construct/businessfinance/earlywarning', asyncHandler(businessfinanceBiz.getEarlywarning) );//合同金额预警总览
httpServer.get('/construct/businessfinance/detailed', asyncHandler(businessfinanceBiz.getDetailedData) );//合同金额预警总览详细浮窗
/**业财融合指标面板 弃用 */
// httpServer.get('/construct/businessfinance/invest', asyncHandler(businessfinanceBiz.getInvest) );//投资完成情况
// httpServer.get('/construct/businessfinance/earlywarning', asyncHandler(businessfinanceBiz.getEarlywarning) );//合同金额预警总览
// httpServer.get('/construct/businessfinance/detailed', asyncHandler(businessfinanceBiz.getDetailedData) );//合同金额预警总览详细浮窗
/**地图 */
httpServer.get('/construct/map', asyncHandler(mapBiz.getMap) );
httpServer.get('/construct/map', asyncHandler(mapBiz.getMap) ); //4.0
// 2.0 ----------------------------------------
// 3.0 ----------------------------------------
/**业财融合指标面板 */
//概算总数
//总体投资情况
//支付完成情况
//投资完成情况
httpServer.get('/construct/businessfinance/estimate', asyncHandler(业财融合Biz.getEstimate) ); //概算总数
httpServer.get('/construct/businessfinance/investmentcompletion', asyncHandler(业财融合Biz.getInvestmentCompletion) ); //投资完成情况
/**投资管控指标面板 */
httpServer.get('/construct/invest', asyncHandler(投资管控Biz.getInvest) );
/**合同预警弹窗 */
httpServer.get('/construct/contractWarning/budgetwarning', asyncHandler(contractWarningBiz.getBudgetWarning) ); //三级概算预警
httpServer.get('/construct/contractWarning/targetcost', asyncHandler(contractWarningBiz.getTargetCost) ); //线路概算目标成本
httpServer.get('/construct/contractWarning/type', asyncHandler(contractWarningBiz.getType) ); //下拉选择类型
httpServer.get('/construct/contractWarning/detailed', asyncHandler(contractWarningBiz.getDetailed) ); //线路概算详情
}
......@@ -8,6 +8,8 @@ import * as publicBiz from '../biz/public';
export function setRouter(httpServer) {
httpServer.get('/public/line', asyncHandler(publicBiz.getLine));//线路
httpServer.get('/public/year', asyncHandler(publicBiz.getYear) );//下拉框选择年份
// httpServer.get('/public/year', asyncHandler(publicBiz.getYear) );//下拉框选择年份
httpServer.get('/public/planningperiod', asyncHandler(publicBiz.getPlanningPeriod) );//下拉框选择规划期类型
httpServer.get('/public/lineplanningperiod', asyncHandler(publicBiz.getLineByPlanningPeriod) );//下拉框根据规划期类型选择线路
}
\ No newline at end of file
......@@ -4,11 +4,13 @@
import * as publicRouters from './public';
import * as constructRouters from './construct';
import * as overviewRouters from './overview';
import * as stationPopupRouters from './stationPopup';
export function setRouter(httpServer){
publicRouters.setRouter(httpServer);
constructRouters.setRouter(httpServer);
overviewRouters.setRouter(httpServer);
stationPopupRouters.setRouter(httpServer);
}
\ No newline at end of file
......@@ -13,32 +13,37 @@ import * as constructionMilestonesBiz from '../biz/stationPopup/constructionMile
import * as smartConstructionSiteBiz from '../biz/stationPopup/smartConstructionSite';
import * as riskHazardsBiz from '../biz/stationPopup/riskHazards';
import * as constructionMaterialsBiz from '../biz/stationPopup/constructionMaterials';
import * as remainingProblemsBiz from '../biz/stationPopup/remainingProblems';
//constructionMaterials
export function setRouter(httpServer) {
httpServer.get('/stationpopup/station', asyncHandler(stationInfoBiz.getStation)); //车站信息
httpServer.get('/stationpopup/station', asyncHandler(stationInfoBiz.getStation)); //车站信息 4.0
httpServer.get('/stationpopup/participatingunits', asyncHandler(participatingUnitsBiz.getParticipatingUnits)); //参建单位
httpServer.get('/stationpopup/participatingunits', asyncHandler(participatingUnitsBiz.getParticipatingUnits)); //参建单位 4.0
httpServer.get('/stationpopup/earlycertification', asyncHandler(earlyCertificationBiz.getEarlyCertification)); //前期证照
httpServer.get('/stationpopup/earlycertification', asyncHandler(earlyCertificationBiz.getEarlyCertification)); //前期证照 4.0
httpServer.get('/stationpopup/relocationtengdi', asyncHandler(relocationTengdiBiz.getRelocationTengdi)); //动迁腾地
httpServer.get('/stationpopup/pipelinerelocation', asyncHandler(pipelineRelocationBiz.getPipelineRelocation)); //管线搬迁
httpServer.get('/stationpopup/pipelinerelocation', asyncHandler(pipelineRelocationBiz.getPipelineRelocation)); //管线搬迁 4.0
httpServer.get('/stationpopup/pipelinerelocation/details', asyncHandler(pipelineRelocationBiz.getPipelineRelocationDetails)); //管线搬迁详情
httpServer.get('/stationpopup/civilengineering', asyncHandler(civilEngineeringBiz.getCivilEngineering)); //土建形象进度
httpServer.get('/stationpopup/civilengineering/details', asyncHandler(civilEngineeringBiz.getCivilEngineeringDetails)); //土建形象进度 工序完成情况
httpServer.get('/stationpopup/constructionmilestones', asyncHandler(constructionMilestonesBiz.getConstructionMilestones)); //建设里程碑
httpServer.get('/stationpopup/constructionmilestones', asyncHandler(constructionMilestonesBiz.getConstructionMilestones)); //建设里程碑 4.0
httpServer.get('/stationpopup/smartConstructionSite', asyncHandler(smartConstructionSiteBiz.getSmartConstructionSite)); //智慧工地
httpServer.get('/stationpopup/smartConstructionSite/gateData', asyncHandler(smartConstructionSiteBiz.getGateData)); //智慧工地 闸机数据
httpServer.get('/stationpopup/smartConstructionSite', asyncHandler(smartConstructionSiteBiz.getSmartConstructionSite)); //智慧工地 4.0
httpServer.get('/stationpopup/smartConstructionSite/gateData', asyncHandler(smartConstructionSiteBiz.getGateData)); //智慧工地 人员实名制 4.0
httpServer.get('/stationpopup/smartConstructionSite/monitoringData', asyncHandler(smartConstructionSiteBiz.getMonitoringData)); //智慧工地 监测数据
httpServer.get('/stationpopup/riskHazards', asyncHandler(riskHazardsBiz.getRiskHazards)); //风险隐患
httpServer.get('/stationpopup/riskHazards/details', asyncHandler(riskHazardsBiz.getRiskHazardsDetails)); //风险隐患详情
httpServer.get('/stationpopup/riskHazards', asyncHandler(riskHazardsBiz.getRiskHazards)); //风险预警 4.0
httpServer.get('/stationpopup/riskHazards/details', asyncHandler(riskHazardsBiz.getRiskHazardsDetails)); //风险预警详情 4.0
httpServer.get('/stationpopup/constructionMaterials', asyncHandler(constructionMaterialsBiz.getConstructionMaterials)); //建设资料
httpServer.get('/stationpopup/constructionMaterials/details', asyncHandler(constructionMaterialsBiz.getConstructionMaterialsDetails)); //建设资料详情
httpServer.get('/stationpopup/constructionMaterials/remainingproblems', asyncHandler(remainingProblemsBiz.getRemainingProblems)); //遗留问题 4.0
// httpServer.get('/stationpopup/constructionMaterials/localization', asyncHandler(localizationBiz.getLocalization)); //属地化移交 4.0
}
\ 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