Commit 867017e6 by chenjinjing

6月26日开会确定版本

parent 24d87868
import { mapLineTableData, mapSiteTableData, mapTableData } from '../../data/table/constructData'; import { mapLineTableData, mapSiteTableData, mapTableData } from '../../data/table/constructData';
import { keyValuePackage, tablePackage } from '../../dataPackage/inFrontOut'; import { keyValuePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut } from '../../dataPackage/out'; import { getKeyValueOut } from '../../dataPackage/out';
import { change } from '../../dataPackage/inBackOut'; import { change } from '../../dataPackage/inBackOut';
import { onceSheetBecomeOfblockData } from '../../util/analysisExcel'; import { onceSheetBecomeOfblockData } from '../../util/analysisExcel';
......
...@@ -5,29 +5,15 @@ ...@@ -5,29 +5,15 @@
import { relocationTableData, prophaseTableData, scheduleTableData, milestoneTableData } from "../../data/table/constructData"; import { relocationTableData, prophaseTableData, scheduleTableData, milestoneTableData } from "../../data/table/constructData";
import * as defaultConfig from '../../config/defaultConfig'; import * as defaultConfig from '../../config/defaultConfig';
import { change, getPopupMoreData, getPopupOneData } from "../../dataPackage/inBackOut";
function change(titleList, dataList) {
let data = [];
dataList.forEach(subList => {
let onceData:any = {};
subList.forEach( (item, index)=> {
let key = titleList[index];
onceData[key] = item;
} );
data.push(onceData);
});
return data;
}
function getProphaseDetailData(data, defaultData, conf, line) { function getProphaseDetailData(data, defaultData, conf, line) {
let dataMap = {"全":{"data":{}, "total":0}}; let dataMap = {"全":{"data":{}, "total":0}};
data.forEach(item => { data.forEach(item => {
let dataLine = item.line; let dataLine = item.line;
if (!dataMap[dataLine]) dataMap[dataLine] = {data:{}, total:0 }; if (!dataMap[dataLine]) dataMap[dataLine] = {data:{}, total:0 };
dataMap[dataLine]["total"] = item.total; dataMap[dataLine]["total"] = item.total;
dataMap["全部"]["total"] += item.total;
for (let name = 0; name < conf.length; name++) { for (let name = 0; name < conf.length; name++) {
let plan = 0; let plan = 0;
...@@ -37,19 +23,23 @@ function getProphaseDetailData(data, defaultData, conf, line) { ...@@ -37,19 +23,23 @@ function getProphaseDetailData(data, defaultData, conf, line) {
plan = item[conf[name]+"计划数"]; plan = item[conf[name]+"计划数"];
complete = item[conf[name]+"完成数"]; complete = item[conf[name]+"完成数"];
if (!dataMap[dataLine]["data"][conf[name]]) dataMap[dataLine]["data"][conf[name]] = {plan:0, complete:0}; if (!dataMap[dataLine]["data"][conf[name]]) dataMap[dataLine]["data"][conf[name]] = {plan:0, complete:0};
if (!dataMap["全部"]["data"][conf[name]]) dataMap["全部"]["data"][conf[name]] = {plan:0, complete:0}; if (!dataMap["全网"]["data"][conf[name]]) dataMap["全网"]["data"][conf[name]] = {plan:0, complete:0};
} }
} }
dataMap[dataLine]["data"][conf[name]]["plan"] += plan; dataMap[dataLine]["data"][conf[name]]["plan"] += plan || 0;
dataMap[dataLine]["data"][conf[name]]["complete"] += complete; dataMap[dataLine]["data"][conf[name]]["complete"] += complete || 0;
dataMap["全部"]["data"][conf[name]]["plan"] += plan; dataMap["全网"]["data"][conf[name]]["plan"] += plan || 0;
dataMap["全部"]["data"][conf[name]]["complete"] += complete; dataMap["全网"]["data"][conf[name]]["complete"] += complete || 0;
} }
}); });
for (let key in dataMap) {
dataMap["全网"]["total"] += dataMap[key].total;
}
let result:any = {}; let result:any = {};
result["completionStatus"] = { result["completionStatus"] = {
"total":0, "total":0,
...@@ -81,12 +71,12 @@ function getProphaseDetailData(data, defaultData, conf, line) { ...@@ -81,12 +71,12 @@ function getProphaseDetailData(data, defaultData, conf, line) {
/** /**
* 前期管 * 2023年前期工作 证照办
* @param req * @param req
* @param res * @param res
*/ */
export async function getProphase(req, res) { export async function getProphase(req, res) {
let line = req.query.line || "全"; let line = req.query.line || "全";
let tableData = prophaseTableData(); let tableData = prophaseTableData();
...@@ -101,128 +91,117 @@ export async function getProphase(req, res) { ...@@ -101,128 +91,117 @@ export async function getProphase(req, res) {
/** /**
* 动迁腾地 * 2023年前期工作 动迁腾地
* @param req * @param req
* @param res * @param res
*/ */
export async function getRelocation(req, res) { export async function getRelocation(req, res) {
let line = req.query.line || "总数"; let line = req.query.line || "全网";
let year = req.query.year || 2023; let year = req.query.year || 2023;
let tableData = relocationTableData(); let tableData = relocationTableData();
let data = change(["line","total","complete","incomplete"], tableData["概览数据"].bodyList ); //"线路名称", "行政区", "总数", "已完成", "计划数"
let data = change(["line", "administrativeDistrict", "total","complete","incomplete"], tableData["概览数据"].bodyList );
/**基础数据 */ /**基础数据 */
let dataMap = {}; let dataMap = {"全网": {}}; //总数
let scheduleData = {"全网": {}}; //行政区
let conf = ["total","complete","incomplete"];
data.forEach(info => { data.forEach(info => {
dataMap[info.line] = { for (let name = 0; name < conf.length; name++){
"total":info.total, if (line == "全网") {
"complete":info.complete, if (!dataMap["全网"][conf[name]]) dataMap["全网"][conf[name]] = 0;
"incomplete":info.incomplete, dataMap["全网"][conf[name]] += info[conf[name]] || 0;
}
});
let result:any = {}; if (!scheduleData["全网"][info.administrativeDistrict]) scheduleData["全网"][info.administrativeDistrict] = {};
if (!scheduleData["全网"][info.administrativeDistrict][conf[name]]) scheduleData["全网"][info.administrativeDistrict][conf[name]] = 0;
result["completionStatus"] = dataMap[line] || defaultConfig.CompletionStatusDefault;
/**详细完成情况 */
let scheduleTableData = change(["line","year","居民完成率","单位完成率","绿地完成率","居民计划书","居民完成数","单位计划数","单位完成数","绿地计划数","绿地完成数"], tableData["动迁腾地详细"].bodyList );
let scheduleData = {}; scheduleData["全网"][info.administrativeDistrict][conf[name]] += info[conf[name]] || 0;
} else {
if (!dataMap[info.line]) dataMap[info.line] = {};
if (!dataMap[info.line][conf[name]]) dataMap[info.line][conf[name]] = 0;
let conf = ["居民完成率", "单位完成率", "绿地完成率"]; dataMap[info.line][conf[name]] += info[conf[name]] || 0;
let index = 0;
scheduleTableData.forEach(item => {
let dataYear = item.year;
if (year == dataYear) {
if (!scheduleData[dataYear]) scheduleData[dataYear] = {data:{} };
for (let name = 0; name < conf.length; name++) { if (!scheduleData[info.line]) scheduleData[info.line] = {};
for (let key in item){ if (!scheduleData[info.line][info.administrativeDistrict]) scheduleData[info.line][info.administrativeDistrict] = {};
if (!scheduleData[dataYear]["data"][conf[name]]) scheduleData[dataYear]["data"][conf[name]] = {complete:0}; if (!scheduleData[info.line][info.administrativeDistrict][conf[name]]) scheduleData[info.line][info.administrativeDistrict][conf[name]] = 0;
if (key.search(conf[name]) > -1) { scheduleData[info.line][info.administrativeDistrict][conf[name]] += info[conf[name]] || 0;
let complete = item[conf[name]] || 0;
scheduleData[dataYear]["data"][conf[name]]["complete"] += complete;
}
} }
} }
index ++;
}
else {
scheduleData[year] = defaultConfig.RelocationScheduleData
}
}); });
let scheduleMap = {}; let result:any = {};
for (let key in scheduleData) {
let {data} = scheduleData[key];
for (let name in data) {
let {complete} = data[name];
if (!scheduleMap[name]) scheduleMap[name] = {complete:0}
scheduleMap[name].complete += complete;
}
}
let scheduleList = []; result["completionStatus"] = dataMap[line] || defaultConfig.CompletionStatusDefault;
for (let key in scheduleMap) {
let subComplete = (scheduleMap[key].complete/index)*100/100 || 0;
scheduleList.push({ result["scheduleList"] = scheduleData[line] || defaultConfig.ScheduleListDefault;
name:key,
complete: Math.round(subComplete)
});
}
result["scheduleList"] = scheduleList; /**详细完成情况 */
let scheduleTableData = change(["line", "site", "year","居民完成率","单位完成率","绿地完成率","居民计划书","居民完成数","单位计划数","单位完成数","绿地计划数","绿地完成数"], tableData["动迁腾地详细"].bodyList );
/**浮窗数据 */ /**浮窗数据 */
let detailMap = {}; let detailMap = {};
//"居民计划书","居民完成数","单位计划数","单位完成数","绿地计划数","绿地完成数"
let detailConf = { let detailConf = {
"居民":[5,6], "居民":["居民计划书", "居民完成数"],
"单位":[7,8], "单位":["单位计划数","单位完成数"],
"绿地":[9,10] "绿地":["绿地计划数","绿地完成数"]
}; };
tableData["动迁腾地详细"].bodyList.forEach(subList => { scheduleTableData.forEach(subList => {
let dataLine = subList[0]; let dataYear = subList.year;
if (!detailMap[dataLine]) detailMap[dataLine] = { }; let dataLine = subList.line;
let dataSite = subList.line + '-' + subList.site;
if (!detailMap[dataYear]) detailMap[dataYear] = {'全网': {}};
if (!detailMap[dataYear][dataLine]) detailMap[dataYear][dataLine] = {};
if (!detailMap[dataYear][dataLine][dataSite]) detailMap[dataYear][dataLine][dataSite] = {};
if (!detailMap[dataYear]['全网'][dataSite]) detailMap[dataYear]['全网'][dataSite] = {};
for (let name in detailConf) { for (let name in detailConf) {
let plan = subList[detailConf[name][0]]; let plan = subList[detailConf[name][0]];
let complete = subList[detailConf[name][1]]; let complete = subList[detailConf[name][1]];
if (!detailMap[dataLine][name]) detailMap[dataLine][name] = {plan:0, complete:0, incomplete:0};
detailMap[dataLine][name]["plan"] += plan; if (!detailMap[dataYear][dataLine][dataSite][name]) detailMap[dataYear][dataLine][dataSite][name] = {plan:0, complete:0, incomplete:0};
detailMap[dataLine][name]["complete"] += complete; if (!detailMap[dataYear]['全网'][dataSite][name]) detailMap[dataYear]['全网'][dataSite][name] = {plan:0, complete:0, incomplete:0};
detailMap[dataLine][name]["incomplete"] += plan - complete;
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;
detailMap[dataYear]['全网'][dataSite][name]["incomplete"] += plan - complete || 0;
} }
}); });
result["detailList"] = detailMap; result["detailList"] = detailMap[year][line];
res.send(result); res.send(result);
} }
/** /**
* 形象进度 * 2023年建设计划
* @param req * @param req
* @param res * @param res
*/ */
export async function getSchedule(req, res) { export async function getSchedule(req, res) {
let line = req.query.line || "全"; let line = req.query.line || "全";
let result:any = {}; let result:any = {};
let excelData = scheduleTableData(); let excelData = scheduleTableData();
let data = change(["line","车站总数","车站已完成","车站施工中","车辆基站总数","车辆基站已完成","车辆基站施工中","高架区间总数", '高架区间已完成', '高架区间施工中'], excelData["形象进度数据"].bodyList ); let data = change(["line","车站开工总数","车站开工已完成","车站开工未完成","盾构推进总数","盾构推进已完成","盾构推进未完成","轨道铺设总数", '轨道铺设已完成', '轨道铺设未完成'], excelData["建设计划数据"].bodyList );
let conf = ["车站", "车辆基站", "高架区间"] let conf = ["车站开工", "盾构推进", "轨道铺设"]
let dataMap = {"全":{"data":{}}}; let dataMap = {"全":{"data":{}}};
data.forEach(item => { data.forEach(item => {
let dataLine = item.line; let dataLine = item.line;
...@@ -235,10 +214,10 @@ export async function getSchedule(req, res) { ...@@ -235,10 +214,10 @@ export async function getSchedule(req, res) {
for (let key in item){ for (let key in item){
if (key.search(conf[name]) > -1) { 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[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["全网"]["data"][conf[name]]) dataMap["全网"]["data"][conf[name]] = {plan:0, complete:0, inProgress:0};
plan = item[conf[name]+"总数"]; plan = item[conf[name]+"总数"];
complete = item[conf[name]+"已完成"]; complete = item[conf[name]+"已完成"];
inProgress = item[conf[name]+"施工中"]; inProgress = item[conf[name]+"未完成"];
} }
} }
...@@ -246,9 +225,9 @@ export async function getSchedule(req, res) { ...@@ -246,9 +225,9 @@ export async function getSchedule(req, res) {
dataMap[dataLine]["data"][conf[name]]["complete"] += complete; dataMap[dataLine]["data"][conf[name]]["complete"] += complete;
dataMap[dataLine]["data"][conf[name]]["inProgress"] += inProgress; dataMap[dataLine]["data"][conf[name]]["inProgress"] += inProgress;
dataMap["全"]["data"][conf[name]]["plan"] += plan; dataMap["全"]["data"][conf[name]]["plan"] += plan;
dataMap["全"]["data"][conf[name]]["complete"] += complete; dataMap["全"]["data"][conf[name]]["complete"] += complete;
dataMap["全"]["data"][conf[name]]["inProgress"] += inProgress; dataMap["全"]["data"][conf[name]]["inProgress"] += inProgress;
} }
}); });
...@@ -266,20 +245,19 @@ export async function getSchedule(req, res) { ...@@ -266,20 +245,19 @@ export async function getSchedule(req, res) {
name:key, name:key,
total:subPlan, total:subPlan,
complete:subComplete, complete:subComplete,
incomplete:subInProgress, incomplete:subInProgress
notStarted:subPlan-subComplete-subInProgress
}); });
} }
result["scheduleList"] = scheduleList; result["scheduleList"] = scheduleList;
let czDetailData = change(["line","year","计划数量","实际数量"], excelData["车站详细数据"].bodyList ); let czDetailData = change(["line","year","计划数量","实际数量"], excelData["详细数据1"].bodyList );
result["czDetailedData"] = getDetailData(czDetailData, line, defaultConfig.ScheduleDetailed); result["czDetailedData"] = getDetailData(czDetailData, line, defaultConfig.ScheduleDetailed);
let cljdDetailData = change(["line","year","计划数量","实际数量"], excelData["车辆基地详细数据"].bodyList ); let cljdDetailData = change(["line","year","计划数量","实际数量"], excelData["详细数据2"].bodyList );
result["cljdDetailedData"] = getDetailData(cljdDetailData, line, defaultConfig.ScheduleDetailed); result["cljdDetailedData"] = getDetailData(cljdDetailData, line, defaultConfig.ScheduleDetailed);
let gjqjDetailData = change(["line","year","计划数量","实际数量"], excelData["高架区间详细数据"].bodyList ); let gjqjDetailData = change(["line","year","计划数量","实际数量"], excelData["详细数据3"].bodyList );
result["gjqjDetailedData"] = getDetailData(gjqjDetailData, line, defaultConfig.ScheduleDetailed); result["gjqjDetailedData"] = getDetailData(gjqjDetailData, line, defaultConfig.ScheduleDetailed);
res.send(result); res.send(result);
...@@ -296,7 +274,7 @@ export async function getSchedule(req, res) { ...@@ -296,7 +274,7 @@ export async function getSchedule(req, res) {
function getDetailData(data, line, defaultData) { function getDetailData(data, line, defaultData) {
let result:any = {}; let result:any = {};
let dataMap = {"全":{data:{}}}; let dataMap = {"全":{data:{}}};
data.forEach(subList => { data.forEach(subList => {
let dataLine = subList.line; let dataLine = subList.line;
...@@ -310,9 +288,9 @@ function getDetailData(data, line, defaultData) { ...@@ -310,9 +288,9 @@ function getDetailData(data, line, defaultData) {
dataMap[dataLine]["data"][dataYear]["plan"] += plan; dataMap[dataLine]["data"][dataYear]["plan"] += plan;
dataMap[dataLine]["data"][dataYear]["complete"] += complete; dataMap[dataLine]["data"][dataYear]["complete"] += complete;
if (!dataMap["全部"]["data"][dataYear]) dataMap["全部"]["data"][dataYear] = {plan:0, complete:0}; if (!dataMap["全网"]["data"][dataYear]) dataMap["全网"]["data"][dataYear] = {plan:0, complete:0};
dataMap["全"]["data"][dataYear]["plan"] += plan; dataMap["全"]["data"][dataYear]["plan"] += plan;
dataMap["全"]["data"][dataYear]["complete"] += complete; dataMap["全"]["data"][dataYear]["complete"] += complete;
}) })
let onceLineData = dataMap[line] || defaultData; let onceLineData = dataMap[line] || defaultData;
......
...@@ -4,33 +4,34 @@ ...@@ -4,33 +4,34 @@
*/ */
import { riskTableData, fatalityTableData } from "../../data/table/constructData"; import { riskTableData, fatalityTableData } from "../../data/table/constructData";
import { change, getLineOneData, getPopupOneData } from "../../dataPackage/inBackOut";
import { keyValuePackage } from "../../dataPackage/inFrontOut"; import { keyValuePackage } from "../../dataPackage/inFrontOut";
import { getOnceYBarChartOut } from "../../dataPackage/out"; import { getOnceYBarChartOut } from "../../dataPackage/out";
/** /**
* 致命性风险分布 * 重大风险分布
* @param req * @param req
* @param res * @param res
*/ */
export function getFatality(req, res) { export function getFatality(req, res) {
let line = req.query.line || "全"; let line = req.query.line || "全";
let table = fatalityTableData(); let table = fatalityTableData();
let 全网 = []; let riskTotal = [];
let 致命性风险 = []; let level1Risk = [];
let fatalityConf = ["风险总数", "一级重大风险"];
for (let key in table) { for (let key in table) {
let {bodyList} = table[key]; let fatalityTable = change(["line", "当前风险总数", "当前开工总数", "安全数", "风险可控数", "重点关注数", "风险总数", "一级重大风险"], table[key].bodyList);
let {count, thisLineCount} = countData(bodyList, line);
全网.push({key, value:count, unit:""}); let {风险总数, 一级重大风险} = getLineOneData(line, fatalityTable, fatalityConf)
let thisCount = line == "全部" ? count : thisLineCount; riskTotal.push({key, value: 风险总数, unit:""});
致命性风险.push({key, value:thisCount, unit:""}) level1Risk.push({key, value: 一级重大风险, unit:""});
} }
let fatalityPackageData = {dataInfo: {"全网": 全网, "致命性风险": 致命性风险}, xUnit: "", yUnit: ""}; let fatalityPackageData = {dataInfo: {"风险总数": riskTotal, "一级重大风险": level1Risk}, xUnit: "", yUnit: ""};
let ret = {}; let ret = {};
ret['fatality'] = getOnceYBarChartOut('致命性风险分布', fatalityPackageData); ret['fatality'] = getOnceYBarChartOut('致命性风险分布', fatalityPackageData);
...@@ -45,22 +46,28 @@ import { getOnceYBarChartOut } from "../../dataPackage/out"; ...@@ -45,22 +46,28 @@ import { getOnceYBarChartOut } from "../../dataPackage/out";
* @param res * @param res
*/ */
export function getRisk(req, res) { export function getRisk(req, res) {
let line = req.query.line || "全线网"; let line = req.query.line || "全网";
if (line == "全部 ") line == "全线网"; if (line == "全部 ") line == "全网";
let result:any = {};
let table = riskTableData(); let table = riskTableData();
let dataIndex = table["风险详细"].headerList.indexOf(line); let data = change(["line", "基坑变形", "地层损失率", "旁通道地表沉降"], table["风险详细"].bodyList);
let 基坑变形 = dataIndex == -1 ? 0 : table["风险详细"].bodyList[0][dataIndex]; data.forEach(item => {
let 地层损失率 = dataIndex == -1 ? 0 : table["风险详细"].bodyList[1][dataIndex]; let dataLine = item.line;
let 旁通道地表沉降 = dataIndex == -1 ? 0 : table["风险详细"].bodyList[2][dataIndex];
let ret = {}; if (line == dataLine) {
ret['jkbx'] = {title: '基坑变形', dataList: {key:"基坑变形", value:基坑变形}}; result['jkbx'] = {title: '基坑变形', dataList: {key:"基坑变形", value:item["基坑变形"]}};
ret['dcssl'] = {title: '地层损失率', dataList: {key:"地层损失率", value:地层损失率}}; result['dcssl'] = {title: '地层损失率', dataList: {key:"地层损失率", value:item["地层损失率"]}};
ret['ptddbcx'] = {title: '旁通道地表沉降', dataList: {key:"旁通道地表沉降", value:旁通道地表沉降}}; result['ptddbcx'] = {title: '旁通道地表沉降', dataList: {key:"旁通道地表沉降", value:item["旁通道地表沉降"]}};
}
});
/**
* 详细节点数据
*/
table = fatalityTableData(); table = fatalityTableData();
for (let key in table ) { for (let key in table ) {
...@@ -74,12 +81,12 @@ export function getRisk(req, res) { ...@@ -74,12 +81,12 @@ export function getRisk(req, res) {
let oncePackage = keyValuePackage(onceList); let oncePackage = keyValuePackage(onceList);
let packageData = {title: `${keyStr}详细数据`, dataList: oncePackage}; let packageData = {title: `${keyStr}详细数据`, dataList: oncePackage};
switch(key) { switch(key) {
case "基坑":ret["jkxxsj"] = packageData;break; case "基坑":result["jkxxsj"] = packageData;break;
case "盾构区间":ret["qjxxsj"] = packageData;break; case "盾构区间":result["qjxxsj"] = packageData;break;
case "旁通道":ret["ptdxxsj"] = packageData;break; case "旁通道":result["ptdxxsj"] = packageData;break;
} }
} }
res.send(ret); res.send(result);
} }
......
/**
* 土建形象进度
*/
import { civilEngineeringDetailsTableData, civilEngineeringTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
export async function getCivilEngineering(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let tableData = civilEngineeringTableData();
//"线路", "站点名称", "站点状态", "区域", "正常完成", "正常延误", "一般延误", "严重延误"
let data = change(["line", "site", "state", "region", "normalCompletion", "normalDelay", "generalDelay", "seriousDelay"], tableData["土建形象进度数据"].bodyList );
let conf = ["region", "normalCompletion", "normalDelay", "generalDelay", "seriousDelay"];
let civilEngineering = getPopupMoreData(line, data, conf);
let result = {"civilEngineering": civilEngineering[site]}
res.send(result);
return result;
}
export async function getCivilEngineeringDetails(req, res) {
let region = req.query.region || "A区";
let tableData = civilEngineeringDetailsTableData();
let result:any = {};
let details:any = {};
for (let key in tableData) {
if (region == key) {
//"施工工序", "总量", "周计划工作量", "周完成工作量", "周完成比例", "完成状态", "总完成工作量", "总完成比例", "未完成原因"
let data = change(["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] = [];
for (let name = 0; name < conf.length; name++) {
detailsData[conf[name]] = item[conf[name]];
}
details[region].push(detailsData);
});
}
}
let detailsList = [];
for (let key in details) {
detailsList.push({name: key, dataList: details[key]})
}
result["details"] = detailsList;
res.send(result);
return result;
}
\ No newline at end of file
/**
* 建设资料
*/
import { constructionMaterialsDetailsTableData, constructionMaterialsTableData } from "../../data/table/stationPopupData";
import { change, getPopupDetailsData, getPopupMoreData } from "../../dataPackage/inBackOut";
/**
* 建设资料
* @param line 线路名称
* @param site 站点名称
* @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 tableData = constructionMaterialsTableData();
//"线路", "站点名称", "站点状态", "资料类型", "资料数量", "资料编号"
let data = change(["line", "site", "state", "informationType", "informationNum", "informationId"], tableData["建设资料数据"].bodyList );
let conf = ["informationType", "informationNum", "informationId"];
let constructionMaterials = getPopupMoreData(line, data, conf);
constructionMaterials[site]["total"] = constructionMaterials[site]["data"].length || 0;
let result = {"constructionMaterials": constructionMaterials[site]};
res.send(result);
return result;
}
/**
* 建设资料详情
* @param req
* @param res
* @returns
*/
export async function getConstructionMaterialsDetails(req, res) {
let informationId = req.query.informationId || "18号线二期江阳南路站1";
let informationType = req.query.informationType || "图纸资料"
let informationName = req.query.informationName; //资料名称
let tableData = constructionMaterialsDetailsTableData();
let result:any = {};
let details:any = {};
let informationTypeList = [];
for (let key in tableData) {
if (informationId == key) {
let data = change(["informationType", "informationName", "informationUrl"], tableData[key].bodyList );
data.forEach(item => {
let itemName = item["informationType"];
if (!details[itemName]) details[itemName] = [];
if (!informationName) {
details[itemName].push({name: item["informationName"], url: item["informationUrl"]});
} else {
if (informationName === item["informationName"]) {
details[itemName].push({name: item["informationName"], url: item["informationUrl"]});
}
}
});
}
}
let detailsList = [];
for (let key in details) {
informationTypeList.push(key);
}
result["type"] = informationTypeList;
result["details"] = details[informationType];
res.send(result);
return result;
}
\ No newline at end of file
/**
* 建设里程碑
*/
import { constructionMilestonesTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
export async function getConstructionMilestones(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let tableData = constructionMilestonesTableData();
//"线路", "站点名称", "站点状态", "建设内容", "时间", "建设状态"
let data = change(["line", "site", "state", "constructionContent", "constructionTime", "constructionStatus"], tableData["建设里程碑数据"].bodyList );
let conf = ["constructionContent", "constructionTime", "constructionStatus"];
let constructionMilestones = getPopupMoreData(line, data, conf);
let result = {"constructionMilestones": constructionMilestones[site]};
res.send(result);
return result;
}
/**
* 前期证照
*/
import { earlyCertificationTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
export async function getEarlyCertification(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let tableData = earlyCertificationTableData();
//"线路", "站点名称", "站点状态", "证照名称", "完成状态", "计划完成时间", "实际完成时间", "延期天数", "剩余天数", "文件地址"
let data = change(["line", "site", "state", "licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime", "delayDays", "daysRemaining", "fileAddress"], tableData["前期证照数据"].bodyList );
let conf = ["licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime", "delayDays", "daysRemaining", "fileAddress"];
let earlyCertification = getPopupMoreData(line, data, conf);
let result = {"earlyCertification": earlyCertification[site]};
res.send(result);
return result;
}
\ No newline at end of file
/**
* 参建单位
*/
import { participatingUnitsTableData } from "../../data/table/stationPopupData";
import { change, getPopupOneData } from "../../dataPackage/inBackOut";
export async function getParticipatingUnits(req, res) {
let line = req.query.line || "18号线二期";
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]};
res.send(result);
return result;
}
/**
* 管线搬迁
*/
import { pipelineRelocationDetailsTableData, pipelineRelocationTableData } from "../../data/table/stationPopupData";
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 tableData = pipelineRelocationTableData();
//"线路", "站点名称", "站点状态", "标题", "已完成", "进行中", "延误中", "未开始", "管线搬迁编号"
let data = change(["line", "site", "state", "title", "completed", "inProgress", "delaying", "notStarted", "id"], tableData["管线搬迁数据"].bodyList );
let conf = ["title", "completed", "inProgress", "delaying", "notStarted", "id"];
let pipelineRelocation = getPopupMoreData(line, data, conf);
let result = {"pipelineRelocation": pipelineRelocation[site]};
res.send(result);
return result;
}
export async function getPipelineRelocationDetails(req, res) {
let id = req.query.id || "18号线二期江阳南路站1";
let tableData = pipelineRelocationDetailsTableData();
let result:any = {};
//
result["details"] = getPopupDetailsData(id, tableData, ["powerName", "relocateName", "relocateState"], ["relocateName", "relocateState"], "powerName");
res.send(result);
return result;
}
\ No newline at end of file
/**
* 动迁腾地
*/
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 tableData = relocationTengdiTableData();
//"线路", "站点名称", "站点状态", "完成率名称", "完成率", "总数名称", "总数", "完成数名称", "完成数"
let data = change(["line", "site", "state", "completionRateName", "completionRate", "totalName", "total", "completedNumName", "completedNum"], tableData["动迁腾地数据"].bodyList );
let conf = ["completionRateName", "completionRate", "totalName", "total", "completedNumName", "completedNum"];
let relocationTengdi = getPopupMoreData(line, data, conf);
let result = {"relocationTengdi": relocationTengdi[site]};
res.send(result);
return result;
}
/**
* 风险隐患
*/
import { riskHazardsDetailsTableData, riskHazardsTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
/**
* 风险隐患
* @param line 线路名称
* @param site 站点名称
* @returns riskHazards: { site}
*/
export async function getRiskHazards(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let tableData = riskHazardsTableData();
//"线路", "站点名称", "站点状态", "风险隐患数", "风险名称", "风险等级", "风险编号"
let data = change(["line", "site", "state", "riskName", "riskLevel", "riskId"], tableData["风险隐患数据"].bodyList );
let conf = ["riskName", "riskLevel", "riskId"];
let riskHazards = getPopupMoreData(line, data, conf);
riskHazards[site]["total"] = riskHazards[site]["data"].length || 0;
let result = {"riskHazards": riskHazards[site]};
res.send(result);
return result;
}
/**
* 风险隐患详情
* @param req
* @param res
* @returns details:[ { name:"", value:"" }, { name:"", value:"" }, ...... ]
*/
export async function getRiskHazardsDetails(req, res) {
let riskId = req.query.riskId|| "18号线二期江阳南路站1";
let tableData = riskHazardsDetailsTableData();
let result:any = {};
let data = change(["name", "value"], tableData[riskId].bodyList);
result["details"] = data;
res.send(result);
return result;
}
/**
* 智慧工地
*/
import { smartConstructionSiteTableData, surveillanceVideoTableData, gateDataTableData, monitoringDataTableData} from "../../data/table/stationPopupData";
import { change } from "../../dataPackage/inBackOut";
/**
* 智慧工地基础数据
* @param req
* @param res
* @returns
*/
export async function getSmartConstructionSite(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let tableData = smartConstructionSiteTableData();
//"线路", "站点名称", "站点状态", "监控视频编号", "进场人数", "退场人数", "在场人数", "未签到", "未签退", "闸机编号", "监测类型", "测点数"
let data = change(["line", "site", "state", "videoId", "mobilizationPeopleNum", "exitPeopleNum", "presencePeopleNum", "notCheckedIn", "notSignedOut", "gateId", "monitoringId"], tableData["智慧工地数据"].bodyList );
let conf = ["line", "site", "state", "videoId", "mobilizationPeopleNum", "exitPeopleNum", "presencePeopleNum", "notCheckedIn", "notSignedOut", "gateId", "monitoringId"];
let smartConstructionSite:any = {};
data.forEach(item => {
let dataLine = item.line;
let dataSite = item.site;
if (line == dataLine) {
if (!smartConstructionSite[dataSite]) smartConstructionSite[dataSite] = {videoList:[], gateList:{}, monitoringList:[]};
//**监控视频 */
let videoTableData = surveillanceVideoTableData();
let surveillanceVideoData = [];
let videoId = item.videoId;
for (let videoKey in videoTableData) {
if (videoId == videoKey) {
//"监控视频区域名称", "监控视频地址"
surveillanceVideoData = change(["name", "url"], videoTableData[videoKey].bodyList);
smartConstructionSite[dataSite]["videoList"] = surveillanceVideoData;
}
}
/**闸机数据 */
//"进场人数", "退场人数", "在场人数", "未签到", "未签退", "闸机编号"
let gateConf = ["mobilizationPeopleNum", "exitPeopleNum", "presencePeopleNum", "notCheckedIn", "notSignedOut", "gateId"];
for (let gateName = 0; gateName < gateConf.length; gateName++) {
smartConstructionSite[dataSite]["gateList"][gateConf[gateName]] = item[gateConf[gateName]];
}
/**
* 监测数据
*/
let monitoringId = item.monitoringId;
//"监测类型", "测点数", "监测数据编号"
let monitoringData = change(["monitoringType", "measurementPoints", "monitoringId"], tableData["监测数据"].bodyList);
monitoringData.forEach( monitoringItem => {
let id = monitoringItem.monitoringId;
if (id.search(monitoringId) > -1) {
smartConstructionSite[dataSite]["monitoringList"].push(monitoringItem);
}
})
}
});
let result = {"smartConstructionSite": smartConstructionSite[site]};
res.send(result);
return result;
}
/**
* 智慧工地闸机数据
* @param req
* @param res
* @returns
*/
export async function getGateData(req, res) {
let gateId = req.query.gateId || "18号线二期江阳南路站1";
let tableData = gateDataTableData();
let result:any = {};
let details = {jobStatistics:[], teamStatistics:[]};
for (let key in tableData) {
if (key.search(gateId) > -1) {
let regex = /\((.+?)\)/g;
let name = key.match(regex)[0].replace("(", "").replace(")", "");
if (name == "工种") {
details["jobStatistics"] = change(["personnelType", "mobilizationPeopleNum", "exitPeopleNum", "presencePeopleNum"], tableData[`${gateId}${name})`].bodyList);
} else if (name == "班组") {
details["teamStatistics"] = change(["unitName", "mobilizationPeopleNum", "exitPeopleNum", "presencePeopleNum"], tableData[`${gateId}${name})`].bodyList);
}
}
}
result["gateDetails"] = details;
res.send(result);
return result;
}
/**
* 智慧工地监测数据详情
* @param req
* @param res
* @returns
*/
export async function getMonitoringData(req, res) {
let monitoringId = req.query.monitoringId|| "18号线二期江阳南路站1(沉降)";
let tableData = monitoringDataTableData();
//"测点名称", "日期", "第三方监测位移累计变化量", "第三方监测位移日变化量", "施工监测位移累计变化量", "施工监测位移日变化量"
let monitoringTable = change(["measurementPointName", "time", "thirdPartyAccumulatedChange", "thirdPartyDailyVariation", "constructionAccumulatedChange", "constructionDailyVariation"], tableData[monitoringId].bodyList);
let conf = ["time", "thirdPartyAccumulatedChange", "thirdPartyDailyVariation", "constructionAccumulatedChange", "constructionDailyVariation"];
let monitoring = {};
monitoringTable.forEach(item => {
let measurementPointName = item.measurementPointName;
let monitoringData = {};
if (!monitoring[measurementPointName]) monitoring[measurementPointName] = [];
for (let name = 0; name < conf.length; name++) {
monitoringData[conf[name]] = item[conf[name]];
}
monitoring[measurementPointName].push(monitoringData);
});
let monitoringDetails = {};
for (let key in monitoring) {
if (!monitoringDetails[key]) monitoringDetails[key] = {"累计变化量":{}, "日变化量":{}};
monitoring[key].forEach( item => {
let {time, thirdPartyAccumulatedChange, thirdPartyDailyVariation, constructionAccumulatedChange, constructionDailyVariation} = item;
//累计变化量
let accumulatedChange = [{name:"第三方监测位移(mm)累计变化量", value:thirdPartyAccumulatedChange}, {name: "施工监测位移(mm)累计变化量", value:constructionAccumulatedChange}];
//日变化量
let dailyVariation = [{name:"第三方监测位移(mm)日变化量", value:thirdPartyDailyVariation}, {name: "施工监测位移(mm)日变化量", value:constructionDailyVariation}];
monitoringDetails[key]["累计变化量"][time] = accumulatedChange;
monitoringDetails[key]["日变化量"][time] = dailyVariation;
})
}
let result:any = {"monitoring": monitoringDetails};
res.send(result);
return result;
}
/**
* 车站信息
*/
import { stationTableData } from "../../data/table/stationPopupData";
import { change, getPopupOneData } from "../../dataPackage/inBackOut";
export async function getStation(req, res) {
let line = req.query.line || "18号线二期";
let site = req.query.site || "江阳南路站";
let tableData = stationTableData();
//"线路", "站点名称", "站点状态", "车站类型", "建筑面积", "站台长度", "站台宽度", "建设周期", "车站出口", "车站入口"
let data = change(["line", "site", "state", "stationType", "floorSpace", "platformLength", "platformWidth", "constructionCycle", "stationExit", "stationEntrance"], tableData["车站信息数据"].bodyList );
let conf = ["site", "state", "stationType", "floorSpace", "platformLength", "platformWidth", "constructionCycle", "stationExit", "stationEntrance"];
let stationInfo = getPopupOneData(line, data, conf);
let result = {"stationInfo": stationInfo[site]};
res.send(result);
return result;
}
...@@ -15,7 +15,7 @@ export const ProphaseDefault = { ...@@ -15,7 +15,7 @@ export const ProphaseDefault = {
/** /**
* 动迁腾地 completionStatus * 动迁腾地 completionStatus
*/ */
export const CompletionStatusDefault = { export const CompletionStatusDefault = {
"total": 0, "total": 0,
"complete": 0, "complete": 0,
"incomplete": 0 "incomplete": 0
...@@ -23,15 +23,15 @@ export const CompletionStatusDefault = { ...@@ -23,15 +23,15 @@ export const CompletionStatusDefault = {
/** /**
* 动迁腾地 详细完成情况 scheduleList * 动迁腾地 详行政区计划 scheduleList
*/ */
export const RelocationScheduleData = { export const ScheduleListDefault = {
data: { "undefined" : {
"居民完成率": { complete: 0 }, "total": 0,
"单位完成率": { complete: 0 }, "complete": 0,
"绿地完成率": { complete: 0 } "incomplete": 0
} }
} };
/** /**
...@@ -1208,5 +1208,81 @@ export const stationDefault = { ...@@ -1208,5 +1208,81 @@ export const stationDefault = {
* 参建单位 * 参建单位
*/ */
export const participatingUnitsDefault = { export const participatingUnitsDefault = {
site: "",
state: "",
constructUnits: "",
curveyUnits: "",
designUnits: "",
constructionUnits: "",
supervisionUnits: ""
}
/**
* 前期证照
*/
export const earlyCertificationDefault = {
site: "",
state: "",
data: [
{
licenseName: "",
completionStatus: "",
plannedCompletionTime: "",
actualCompletionTime: "",
fileAddress: ""
}
]
}
/**
* 动迁腾地
*/
export const relocationTengdiDefaule = {
site: "",
state: "",
data: [
{
completionRateName: "居民动迁完成率",
completionRate: "0",
totalName: "动迁总数",
total: 0,
completedNumName: "动迁完成",
completedNum: 0
},
{
completionRateName: "单位动迁完成率",
completionRate: "0",
totalName: "动迁总数",
total: 0,
completedNumName: "动迁完成",
completedNum: 0
},
{
completionRateName: "绿地动迁完成率",
completionRate: "0",
totalName: "总面积",
total: 0,
completedNumName: "完成面积",
completedNum: 0
}
]
} }
/**
* 管线搬迁详情
*/
export const pipelineRelocationDetails = [
{
name: "",
dataList: [
{
relocateName: "",
relocateState: ""
}
]
}
]
\ No newline at end of file
...@@ -2,8 +2,9 @@ const path = require('path'); ...@@ -2,8 +2,9 @@ const path = require('path');
import * as fs from "fs"; import * as fs from "fs";
import { BizError } from "../util/bizError"; import { BizError } from "../util/bizError";
import { analysisXml } from "../util/myXML"; import { analysisXml } from "../util/myXML";
import {ServerConfig} from "../config/systemClass";
export let port = Number(process.env.PORT) || Number(process.argv[3]) || 7576; //如果xml里面没有配置 就会使用到这里的端口 export let systemConfig = new ServerConfig;
const ConfigName = "serverConfig.xml"; const ConfigName = "serverConfig.xml";
export async function initConfig() { export async function initConfig() {
...@@ -13,9 +14,10 @@ export async function initConfig() { ...@@ -13,9 +14,10 @@ export async function initConfig() {
let configInfo:any = await analysisXml(configStr); let configInfo:any = await analysisXml(configStr);
if (!configInfo || !configInfo.config) console.log("xml中无配置加载"); if (!configInfo || !configInfo.config) console.log("xml中无配置加载");
else { else {
let config = configInfo.config; let {port, imgUrl, monitorUrl} = configInfo.config;
port = config.port[0] || port; systemConfig.port = parseInt(port[0]);
systemConfig.imgUrl = imgUrl[0];
systemConfig.monitorUrl = monitorUrl[0];
} }
} catch(err) { } catch(err) {
......
/**
* 系统配置类
*/
export class ServerConfig {
port:number;
imgUrl:string;
monitorUrl:string
}
\ No newline at end of file
...@@ -57,12 +57,12 @@ export function relocationTableData() { ...@@ -57,12 +57,12 @@ export function relocationTableData() {
export function scheduleTableData() { export function scheduleTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/计划进度.xlsx', '形象进度'); let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/计划进度.xlsx', '建设计划');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的 let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图 let barChartList = []; //适配 柱状图 折线图
let stringList = []; let stringList = [];
let decollatePlanarList =["形象进度数据", "车站详细数据", "车辆基地详细数据", "高架区间详细数据"];//适配 表格 let decollatePlanarList =["建设计划数据", "详细数据1", "详细数据2", "详细数据3"];//适配 表格
let titltListConfig = {}; let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList); let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
......
/**
* 在建车站弹窗
*/
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 stationTableData() {
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 participatingUnitsTableData() {
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 earlyCertificationTableData() {
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 relocationTengdiTableData() {
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 pipelineRelocationTableData() {
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 pipelineRelocationDetailsTableData() {
let blockDataList = onceSheetBecomeOfblockData('在建车站弹窗/在建车站.xlsx', '管线搬迁详情');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1", "18号线二期江阳南路站2", "18号线二期江阳南路站3", "18号线二期江阳南路站4", "18号线二期江阳南路站5"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function civilEngineeringTableData() {
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 civilEngineeringDetailsTableData() {
let blockDataList = onceSheetBecomeOfblockData('在建车站弹窗/在建车站.xlsx', '土建形象进度工序完成情况');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["A区", "B区"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function constructionMilestonesTableData() {
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 smartConstructionSiteTableData() {
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 surveillanceVideoTableData() {
let blockDataList = onceSheetBecomeOfblockData('在建车站弹窗/在建车站.xlsx', '智慧工地监控视频');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1",];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function gateDataTableData() {
let blockDataList = onceSheetBecomeOfblockData('在建车站弹窗/在建车站.xlsx', '智慧工地闸机数据');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1(工种)", "18号线二期江阳南路站(班组)"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function monitoringDataTableData() {
let blockDataList = onceSheetBecomeOfblockData('在建车站弹窗/在建车站.xlsx', '智慧工地监测数据');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1(沉降)", "18号线二期江阳南路站1(测斜)"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function riskHazardsTableData() {
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 riskHazardsDetailsTableData() {
let blockDataList = onceSheetBecomeOfblockData('在建车站弹窗/在建车站.xlsx', '风险隐患详情');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function constructionMaterialsTableData() {
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 constructionMaterialsDetailsTableData() {
let blockDataList = onceSheetBecomeOfblockData('在建车站弹窗/在建车站.xlsx', '建设资料详情');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["18号线二期江阳南路站1"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
/** /**
* * 修改表格数据结构
* @param titleList * @param titleList
* @param dataList * @param dataList
* @returns * @returns
...@@ -57,3 +57,123 @@ export function change(titleList, dataList) { ...@@ -57,3 +57,123 @@ export function change(titleList, dataList) {
}); });
return data; return data;
} }
/**
* 获取单条线路数据
* @param line 线路
* @param data 数据
* @param conf 配置
* @returns
*/
export function getLineOneData(line, data, conf) {
let result:any = {};
data.forEach(item => {
let dataLine = item.line;
if (line == dataLine) {
for (let name = 0; name < conf.length; name++) {
result[conf[name]] = item[conf[name]];
}
}
});
return result;
}
/**
* 单条弹窗数据
* @param line 线路
* @param data 数据
* @param conf 配置
* @returns
*/
export function getPopupOneData(line, data, conf) {
let result:any = {};
data.forEach(item => {
let dataLine = item.line;
let dataSite = item.site;
if (line == dataLine) {
if (!result[dataSite]) result[dataSite] = {};
for (let name = 0; name < conf.length; name++) {
result[dataSite][conf[name]] = item[conf[name]];
}
}
});
return result;
}
/**
* 多条弹窗数据
* @param line
* @param data
* @param conf
* @returns
*/
export function getPopupMoreData(line, data, conf) {
let result:any = {};
data.forEach(item => {
let dataLine = item.line;
let dataSite = item.site;
let pipelineRelocationData = {};
if (line == dataLine) {
if (!result[dataSite]) result[dataSite] = {site:item.site, state:item.state, data:[]};
for (let name = 0; name < conf.length; name++) {
pipelineRelocationData[conf[name]] = item[conf[name]];
}
result[dataSite]["data"].push(pipelineRelocationData);
}
});
return result;
}
/**
* 弹窗详细数据
* @param id
* @param tableData
* @param changeConf
* @param conf
* @returns
*/
export function getPopupDetailsData(id, tableData, changeConf, conf, name) {
let details:any = {};
for (let key in tableData) {
if (id == key) {
let data = change(changeConf, tableData[key].bodyList );
data.forEach(item => {
let itemName = item[name];
let detailsData = {};
if (!details[itemName]) details[itemName] = [];
for (let name = 0; name < conf.length; name++) {
detailsData[conf[name]] = item[conf[name]];
}
details[itemName].push(detailsData);
});
}
}
let detailsList = [];
for (let key in details) {
detailsList.push({name: key, dataList: details[key]})
}
return detailsList;
}
\ No newline at end of file
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
import { initInterfaceData } from "./data/interface/cronJob"; import { initInterfaceData } from "./data/interface/cronJob";
var os = require("os") var os = require("os")
import { httpServer } from "./net/http_server"; import { httpServer } from "./net/http_server";
import { initConfig, port } from "./config/serverConfig"; import { initConfig, systemConfig } from "./config/serverConfig";
async function lanuch() { async function lanuch() {
await initConfig(); await initConfig();
// initInterfaceData(); // initInterfaceData();
httpServer.createServer( port ); httpServer.createServer( systemConfig.port );
console.log('This indicates that the server is started successfully.'); console.log('This indicates that the server is started successfully.');
} }
......
...@@ -37,6 +37,7 @@ export class httpServer { ...@@ -37,6 +37,7 @@ export class httpServer {
httpServer.use(express.static(path.join(__dirname, "../../img/")) ); httpServer.use(express.static(path.join(__dirname, "../../img/")) );
httpServer.use(express.static(path.join(__dirname, "../../pdf/")) );
const root = path.join(__dirname, "../../public/") const root = path.join(__dirname, "../../public/")
httpServer.use(express.static(root)) httpServer.use(express.static(root))
......
...@@ -11,13 +11,13 @@ import * as mapBiz from '../biz/construct/map' ...@@ -11,13 +11,13 @@ import * as mapBiz from '../biz/construct/map'
export function setRouter(httpServer) { export function setRouter(httpServer) {
/**计划进度指标面板 */ /**计划进度指标面板 */
httpServer.get('/construct/plannedprogress/prophase', asyncHandler(plannedprogressBiz.getProphase) );//前期管 httpServer.get('/construct/plannedprogress/prophase', asyncHandler(plannedprogressBiz.getProphase) );//证照办
httpServer.get('/construct/plannedprogress/relocation', asyncHandler(plannedprogressBiz.getRelocation) );//动迁腾地 httpServer.get('/construct/plannedprogress/relocation', asyncHandler(plannedprogressBiz.getRelocation) );//动迁腾地
httpServer.get('/construct/plannedprogress/schedule', asyncHandler(plannedprogressBiz.getSchedule) );//形象进度 httpServer.get('/construct/plannedprogress/schedule', asyncHandler(plannedprogressBiz.getSchedule) );//形象进度
httpServer.get('/construct/plannedprogress/milestone', asyncHandler(plannedprogressBiz.getMilestone) );//里程碑节点完成情况 httpServer.get('/construct/plannedprogress/milestone', asyncHandler(plannedprogressBiz.getMilestone) );//里程碑节点完成情况
/**质量安全指标面板 */ /**质量安全指标面板 */
httpServer.get('/construct/quality/fatality', asyncHandler(qualityBiz.getFatality) );//致命性风险分布 httpServer.get('/construct/quality/fatality', asyncHandler(qualityBiz.getFatality) );//重大风险分布
httpServer.get('/construct/quality/risk', asyncHandler(qualityBiz.getRisk) );//当前风险节点 httpServer.get('/construct/quality/risk', asyncHandler(qualityBiz.getRisk) );//当前风险节点
httpServer.get('/construct/quality/engineering', asyncHandler(qualityBiz.getEngineering) );//工程安全状态 httpServer.get('/construct/quality/engineering', asyncHandler(qualityBiz.getEngineering) );//工程安全状态
...@@ -34,5 +34,14 @@ export function setRouter(httpServer) { ...@@ -34,5 +34,14 @@ export function setRouter(httpServer) {
/**地图 */ /**地图 */
httpServer.get('/construct/map', asyncHandler(mapBiz.getMap) ); httpServer.get('/construct/map', asyncHandler(mapBiz.getMap) );
// 2.0 ----------------------------------------
/**业财融合指标面板 */
//概算总数
//总体投资情况
//支付完成情况
//投资完成情况
} }
/**
* 在建车站弹窗路由
*/
import * as asyncHandler from 'express-async-handler';
import * as stationInfoBiz from '../biz/stationPopup/stationInfo';
import * as participatingUnitsBiz from '../biz/stationPopup/participatingUnits';
import * as earlyCertificationBiz from '../biz/stationPopup/earlyCertification';
import * as relocationTengdiBiz from '../biz/stationPopup/relocationTengdi';
import * as pipelineRelocationBiz from '../biz/stationPopup/pipelineRelocation';
import * as civilEngineeringBiz from '../biz/stationPopup/civilEngineering';
import * as constructionMilestonesBiz from '../biz/stationPopup/constructionMilestones';
import * as smartConstructionSiteBiz from '../biz/stationPopup/smartConstructionSite';
import * as riskHazardsBiz from '../biz/stationPopup/riskHazards';
import * as constructionMaterialsBiz from '../biz/stationPopup/constructionMaterials';
//constructionMaterials
export function setRouter(httpServer) {
httpServer.get('/stationpopup/station', asyncHandler(stationInfoBiz.getStation)); //车站信息
httpServer.get('/stationpopup/participatingunits', asyncHandler(participatingUnitsBiz.getParticipatingUnits)); //参建单位
httpServer.get('/stationpopup/earlycertification', asyncHandler(earlyCertificationBiz.getEarlyCertification)); //前期证照
httpServer.get('/stationpopup/relocationtengdi', asyncHandler(relocationTengdiBiz.getRelocationTengdi)); //动迁腾地
httpServer.get('/stationpopup/pipelinerelocation', asyncHandler(pipelineRelocationBiz.getPipelineRelocation)); //管线搬迁
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/smartConstructionSite', asyncHandler(smartConstructionSiteBiz.getSmartConstructionSite)); //智慧工地
httpServer.get('/stationpopup/smartConstructionSite/gateData', asyncHandler(smartConstructionSiteBiz.getGateData)); //智慧工地 闸机数据
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/constructionMaterials', asyncHandler(constructionMaterialsBiz.getConstructionMaterials)); //建设资料
httpServer.get('/stationpopup/constructionMaterials/details', asyncHandler(constructionMaterialsBiz.getConstructionMaterialsDetails)); //建设资料详情
}
\ 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