Commit 7b05eda2 by chenjinjing

4.0版本弹窗修改

parent c94458b7
/**
* 合同预警弹窗
* 建设指挥 投资管控指标面板 合同预警弹窗 3.5 逻辑
* 处理数据
*/
import { budgetwarningTableData, detailedTableData, targetcostTableData } from "../../data/table/投资管控";
......
/**
* 投资管控指标面板
* 弃用
* 建设指挥 投资管控指标面板 3.5 逻辑
* 处理数据
*/
import { financialestimatesTableData, finalaccountsTableData, investmentcontrolTableData } from "../../data/table/constructData";
import { keyValuePackage, onceYBarChartPackage } from "../../dataPackage/inFrontOut";
import { getKeyValueOut, getOnceYBarChartOut } from "../../dataPackage/out";
import * as defaultConfig from "../../config/defaultConfig";
import { INVEST } from "../../config/titleEnum";
import { contractWarningTableData } from "../../data/table/投资管控";
import { change } from "../../dataPackage/inBackOut";
/**
* 概算总数
* @param req
* @param res
*/
export function getFinancialestimates(req, res) {
let year = req.query.year || 2023; //年份
let excelData = financialestimatesTableData();
let ret:any = {};
let index = 1;
for (let key in excelData) {
if (key.search(year) > -1) { //匹配年份
let gszsPackageData = keyValuePackage(excelData[key].dataList);
ret["api" + index] = getKeyValueOut(key, gszsPackageData);
index++;
}
}
res.send(ret);
}
export function getInvest(req, res) {
let planningPeriod = req.query.planningPeriod || "三期规划调整"; //类型
let line = req.query.line || "全网"; //线路
let tableData = contractWarningTableData();
let result:any = {};
/**
* 投控建设
* @param req
* @param res
*/
export function getInvestmentcontrol(req, res) {
let year = req.query.year || 2023; //年份
let excelData = investmentcontrolTableData();
let paymentExecutionData = change(
[
"planningPeriod", "line", "executionCompletedProportion", "deviationFromPlan", "annualPaymentPlan1", "JanPlanToDate",
"JanSoFarCummulativeComplete", "completionPercentage", "annualPaymentPlan2", "annualActualExpenditure"
], tableData["用款执行数据"].bodyList);
let ret:any = {};
let paymentExecution = {};
let paymentExecutionConf = ["executionCompletedProportion", "deviationFromPlan", "annualPaymentPlan1", "JanPlanToDate", "JanSoFarCummulativeComplete"];
let specialPurposeBonds = {};
let specialPurposeBondsConf = ["completionPercentage", "annualPaymentPlan2", "annualActualExpenditure"];
let index = 1;
for (let key in excelData) {
if (key.search(year) > -1) { //匹配年份
let tkjsPackageData = onceYBarChartPackage( excelData[key], '','');
ret["api" + index] = getOnceYBarChartOut(key, tkjsPackageData);
index ++;
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;
}
}
res.send(ret);
}
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};
/**
* 决算统计
* @param req
* @param res
*/
export function getFinalaccounts(req, res) {
let year = req.query.year || 2023; //年份
let line = req.query.line || "全网"; //线路
let excelData = finalaccountsTableData();
specialPurposeBonds[dataType]["全网"][specialPurposeBondsConf[name]] += item[specialPurposeBondsConf[name]] || 0;
specialPurposeBonds[dataType][dataLine][specialPurposeBondsConf[name]] += item[specialPurposeBondsConf[name]] || 0;
}
let ret:any = {};
let index = 1;
for (let key in excelData) {
let tkjsExcelData:any = {};
if (key.search(year) > -1) { //匹配年份
let lineData = excelData[key];
lineData.forEach( info => {
let {name, data} = info;
if (line == name) { //判断线路
tkjsExcelData = info;
}
})
})
if (JSON.stringify(tkjsExcelData) === "{}") {
switch (index) {
case 1:
tkjsExcelData = defaultConfig.FinalaccountsDefault;
break;
case 2:
tkjsExcelData = defaultConfig.ContractTypeDefault;
break;
case 3:
tkjsExcelData = defaultConfig.BusinessDefault;
break;
}
}
ret["api" + index] = tkjsExcelData;
if (index == 2) {
let itemTotal = 0;
tkjsExcelData.data.forEach(item => {
itemTotal += Math.ceil(item.value) || 0;
});
ret["api" + index].total = itemTotal;
}
index++;
}
}
res.send(ret);
}
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
/**
* 建设指挥 地图 4.0 逻辑
* 处理数据
*/
import { lineConstructTableData, mapLineTableData, mapSiteTableData, mapTableData } from '../../data/table/constructData';
import { keyValuePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut } from '../../dataPackage/out';
import { change } from '../../dataPackage/inBackOut';
import { onceSheetBecomeOfblockData } from '../../util/analysisExcel';
/*地图*/
export function getMap(req, res) {
let mapTable = mapTableData();
let mapLineTable = mapLineTableData(); //线路
......@@ -46,7 +51,7 @@ export function getMap(req, res) {
}
}
/**站点 */
for (let siteKey in mapSiteTable) {
let mapLineList = [];
let siteCoordinate = {};
......
......@@ -5,9 +5,18 @@
import { relocationTableData, prophaseTableData, scheduleTableData, milestoneTableData } from "../../data/table/constructData";
import * as defaultConfig from '../../config/defaultConfig';
import { change, getPopupMoreData, getPopupOneData } from "../../dataPackage/inBackOut";
import { change } from "../../dataPackage/inBackOut";
import { PLANNEDPROGRESS } from "../../config/titleEnum";
/**
* 获取详细数据
* @param data
* @param defaultData
* @param conf
* @param line
* @returns
*/
function getProphaseDetailData(data, defaultData, conf, line) {
let dataMap = {"全网":{"data":{}, "total":0}};
data.forEach(item => {
......
/**
* 建设指挥 质量安全指标面板 逻辑
* 建设指挥 质量安全指标面板 3.5 逻辑
* 处理数据
*/
......
/**
++ /dev/null
/**
* 业财融合指标面板
*/
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;
}
/**
++ /dev/null
/**
* 投资管控指标面板
*/
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 { jjcyTableData, jsyyTableData, lcbsjTableData } from "../../data/table/overviewData";
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, tablePackage } from "../../dataPackage/inFrontOut";
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut } from "../../dataPackage/out";
import { jsyyTableData } from "../../data/table/overviewData";
import { keyValuePackage, onceYBarChartPackage } from "../../dataPackage/inFrontOut";
import { getKeyValueOut, getOnceYBarChartOut } from "../../dataPackage/out";
/**建设运营 */
export function getOperate(req, res) {
let excelData = jsyyTableData();
......
/**
* 整体概览 逻辑
* 整体概览 经济产业 逻辑
* 处理数据
*/
......@@ -7,7 +7,6 @@ import { jjcyTableData } from '../../data/table/overviewData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage } from '../../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut } from '../../dataPackage/out';
/*经济产业*/
export function getEconomy(req, res) {
let excelData = jjcyTableData();
......
/**
* 整体概览 逻辑
* 整体概览 绿色出行 逻辑
* 处理数据
*/
......@@ -8,7 +8,6 @@ import { keyValuePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut, getStringOut } from '../../dataPackage/out';
/**绿色出行 */
export function getGreenTravel(req, res) {
let excelData = lscxTableData();
......
/**
* 整体概览 逻辑
* 整体概览 引领规划 逻辑
* 处理数据
*/
import { ylghTableData } from '../../data/table/overviewData';
import { getDoubleYBarChartOut, getKeyValueOut, getObjectListOut, getOnceYBarChartOut, getStringOut } from '../../dataPackage/out';
import { getStringOut } from '../../dataPackage/out';
import { separateDataAndUint } from '../../dataPackage/tool';
/**引领规划 */
export function getLeadingPlanning(req, res) {
let excelData = ylghTableData();
......
/**
* 整体概览 逻辑
* 整体概览 地图 逻辑
* 处理数据
*/
......@@ -8,7 +8,6 @@ import { keyValuePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut } from '../../dataPackage/out';
/**地图 */
export function getData(req, res) {
let excelData = dtTableData();
......
/**
* 整体概览 逻辑
* 整体概览 里程碑事件荣誉成果 逻辑
* 处理数据
*/
......@@ -7,7 +7,6 @@ import { lcbsjTableData } from "../../data/table/overviewData";
import { tablePackage } from "../../dataPackage/inFrontOut";
/**里程碑事件荣誉成国 */
export function getMilestone(req, res) {
let excelData = lcbsjTableData();
......
/**
* 土建形象进度
* 建设指挥
* 在建站点弹窗
* 土建形象进度
* 3.0
* 处理数据
*/
import { civilEngineeringDetailsTableData, civilEngineeringTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
/**
* 土建形象进度基础数据
* @param line 线路名称
* @param site 站点名称
* @returns civilEngineering: { site:"站点名称", state:"站点状态", data:[{数据列表}, ...... ]}
* data:[{
* region:"区域名称",
* normalCompletion:正常完成数量,
* normalDelay:正常延误数量,
* generalDelay:一般延误数量数量,
* seriousDelay:严重延误数量,
* regionNum:"工序编号"
* }, ...... ]
*/
export async function getCivilEngineering(req, res) {
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
......@@ -25,6 +44,24 @@ export async function getCivilEngineering(req, res) {
}
/**
* 土建形象进度
* 工序完成情况
* @param regionNum 工序编号
* @returns details: [{ name:"工序名称", dataList:[{数据列表}, ...... ] }]
* dataList:[{
* constructionProcess:"施工工序",
* total:总量,
* weeklyPlan:周计划工作量,
* weeklyCompletion:周完成工作量,
* weeklyRatio:"周完成比例",
* completionStatus:"完成状态", 【正常完成、正常延误、一般延误、严重延误】
* totalCompletion:"总完成工作量",
* totalProportion:"总完成比例",
* incompleteReason:"未完成原因",
* }, ...... ]
* 没有数据的字段不显示,数据为0正常显示
*/
export async function getCivilEngineeringDetails(req, res) {
let regionNum = req.query.regionNum || "17号线西岑站A区";
let tableData = civilEngineeringDetailsTableData();
......
/**
* 建设资料
* 建设指挥
* 在建站点弹窗
* 建设资料
* 3.0
* 处理数据
*/
import { constructionMaterialsDetailsTableData, constructionMaterialsTableData } from "../../data/table/stationPopupData";
......@@ -10,7 +14,8 @@ import { change, getPopupDetailsData, getPopupMoreData } from "../../dataPackage
* 建设资料
* @param line 线路名称
* @param site 站点名称
* @returns constructionMaterials: {site: "站点名称", state: "站点状态", data: [{informationType: "资料类型", informationNum: 资料数量, informationId: "建设资料编号" }, ...... ]}
* @returns constructionMaterials: {site: "站点名称", state: "站点状态", data: [{数据列表}]}
* data: [{informationType: "资料类型", informationNum: 资料数量, informationId: "建设资料编号" }, ...... ]
*/
export async function getConstructionMaterials(req, res) {
let line = req.query.line || "17号线";
......@@ -36,9 +41,10 @@ export async function getConstructionMaterials(req, res) {
/**
* 建设资料详情
* @param req
* @param res
* @returns
* @param informationId 建设资料编号
* @param informationType 资料类型
* @param informationName 资料名称
* @returns type:["资料类型", ......], details:[{ name:"资料名称", value:"资料地址" }, { name:"", value:"" }, ...... ]
*/
export async function getConstructionMaterialsDetails(req, res) {
let informationId = req.query.informationId || "17号线西岑站1";
......@@ -72,7 +78,6 @@ export async function getConstructionMaterialsDetails(req, res) {
}
}
let detailsList = [];
for (let key in details) {
informationTypeList.push(key);
}
......
/**
* 建设里程碑
* 建设指挥
* 在建站点弹窗
* 建设里程碑
* 4.0
* 处理数据
*/
import { constructionMilestonesTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
/**
* 建设里程碑
* @param line 线路名称
* @param site 站点名称
* @returns constructionMilestones: { site:"站点名称", state:"站点状态", data:[{数据列表}, ...... ]}
* data:[{ constructionContent:"建设内容", constructionTime:"时间", constructionStatus:"建设状态" }, ...... ]
*/
export async function getConstructionMilestones(req, res) {
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
......
/**
* 前期证照
* 建设指挥
* 在建站点弹窗
* 前期证照
* 4.0
* 处理数据
*/
import { earlyCertificationDefault } from "../../config/defaultConfig";
......@@ -9,22 +13,37 @@ import { change } from "../../dataPackage/inBackOut";
let moment = require("moment");
moment.suppressDeprecationWarnings = true;
/**
* 前期证照
* @param line 线路名称
* @param site 站点名称
* @returns earlyCertification: { site:"站点名称", state:"站点状态", data:[{数据列表}, ...... ] }
* data:[{
* licenseName:"证照名称", completionStatus:"完成状态", plannedCompletionTime:"计划完成时间", actualCompletionTime:"实际完成时间", delayDays:"延期天数",
* daysRemaining:"剩余天数", expirationTime:"到期时间", landBorrowingFees:"借地费用", untilExpiration:"距离到期时间", earlyWarning:"是否预警", fileAddress:"文件地址"
* }, ...... ]
* 没有数据的字段不返回,数据为0的字段照常返回
* 到期时间、借地费用属于临时用地许可证
* 1、延期完成状态:显示延期天数 2、未完成:显示剩余天数 3、未到期:显示距离到期时间、是否预警
*/
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", "licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime",
"expirationTime", "landBorrowingFees", "fileAddress"]
, tableData["前期证照数据"].bodyList );
let conf = ["licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime", "delayDays",
"daysRemaining", "expirationTime", "landBorrowingFees", "untilExpiration", "earlyWarning", "fileAddress"];
["line", "site", "state", "licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime",
"expirationTime", "landBorrowingFees", "fileAddress"]
, tableData["前期证照数据"].bodyList );
//"证照名称", "完成状态", "计划完成时间", "实际完成时间", "到期时间", "借地费用",
//"延期天数", "剩余天数", "距离到期", "是否预警", "文件地址"
let conf = ["licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime", "expirationTime", "landBorrowingFees",
"delayDays", "daysRemaining", "untilExpiration", "earlyWarning", "fileAddress"];
// let earlyCertification = getPopupMoreData(line, data, conf);
let earlyCertification:any = {};
data.forEach(item => {
......@@ -71,6 +90,27 @@ export async function getEarlyCertification(req, res) {
}
/**
* 前期证照
* @param line 线路名称
* @param site 站点名称
* @returns earlyCertification: { site:"站点名称", state:"站点状态", data:[{数据列表}] }
* data:[{
* licenseName:"证照名称",
* completionStatus:"完成状态",
* fileAddress:"文件地址",
* listData:[
* {key:"数据名称", value:"数据值"}, ......
* ]
* }, ...... ]
* 没有数据的字段不返回,数据为0的字段照常返回
* 到期时间、借地费用属于临时用地许可证
* 1、延期完成状态:显示延期天数 2、未完成:显示剩余天数 3、未到期:显示距离到期时间、是否预警
*/
// export async function getEarlyCertification(req, res) {
// let line = req.query.line || "17号线";
// let site = req.query.site || "西岑站";
......
/**
* 参建单位
* 建设指挥
* 在建站点弹窗
* 参建单位
* 4.0
* 处理数据
*/
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;
// }
/**
* 参建单位
* @param line 线路名称
* @param site 站点名称
* @returns participatingUnits: { site:"站点名称", state:"站点状态"}
* @returns dataList: [ { key:"数据名称", value:数据值, unit:"单位" }, ...... ]
* key:"建设单位", "勘察单位", "设计单位", "施工单位", "监理单位", "第三方检测单位", "环境检测单位"
*/
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", "建设单位", "勘察单位", "设计单位", "施工单位", "监理单位", "第三方检测单位", "环境检测单位"], tableData["参建单位数据"].bodyList );
let conf = ["site", "state"];
......
/**
* 管线搬迁
* 建设指挥
* 在建站点弹窗
* 管线搬迁
* 4.0
* 处理数据
*/
import { pipelineRelocationDetailsTableData, pipelineRelocationTableData } from "../../data/table/stationPopupData";
import { change, getPopupDetailsData, getPopupMoreData } from "../../dataPackage/inBackOut";
import { change, getPopupDetailsData } from "../../dataPackage/inBackOut";
/**
* 管线搬迁基础数据
* @param line 线路名称
* @param site 站点名称
* @returns pipelineRelocation: { site:"站点名称", state:"站点状态", data:[{数据列表}, ...... ]}
* data:[{
* title:"标题", 【道路翻胶、电力、电信、非电信、雨水、污水、上水、燃气】
* list:[{
* completed:已完成数量,
* inProgress:进行中数量,
* delaying:延误中数量,
* notStarted:未开始数量,
* stage:"阶段", --该字段只有标题为道路翻胶时有
* id:"管线搬迁编号"
* }, ...... ]
* }, ...... ]
*/
export async function getPipelineRelocation(req, res) {
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
......@@ -15,7 +37,6 @@ export async function getPipelineRelocation(req, res) {
let conf = ["completed", "inProgress", "delaying", "notStarted", "id"];
let stageConf = ["completed", "inProgress", "delaying", "notStarted", "stage", "id"];
// let pipelineRelocation = getPopupMoreData(line, data, conf);
let pipelineRelocation:any = {};
......@@ -63,13 +84,21 @@ export async function getPipelineRelocation(req, res) {
}
/**
* 管道搬迁弹窗详情
* @param id 管线搬迁编号
* @returns details: [{ name:"管线电力名称", dataList:[{数据列表}, ...... ] }, ...... ]
* dataList:[{
* relocateName:"搬迁进度名称",
* relocateState:"进度状态"
* }, ...... ]
*/
export async function getPipelineRelocationDetails(req, res) {
let id = req.query.id || "17号线西岑站1";
let tableData = pipelineRelocationDetailsTableData();
let result:any = {};
//
result["details"] = getPopupDetailsData(id, tableData, ["powerName", "relocateName", "relocateState"], ["relocateName", "relocateState"], "powerName");
res.send(result);
......
/**
* 动迁腾地
* 建设指挥
* 在建站点弹窗
* 动迁腾地
* 3.0
* 处理数据
*/
import { relocationTengdiDefaule } from "../../config/defaultConfig";
import { relocationTengdiTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
/**
* 动迁腾地
* @param line 线路名称
* @param site 站点名称
* @returns relocationTengdi: { site:"站点名称", state:"站点状态", data:[{数据列表}, ...... ]}
* data:[{
* completionRateName:"完成率名称",
* completionRate:完成率,
* totalName:"总数名称",
* total:总数,
* completedNumName:"完成数名称",
* completedNum:完成数
* }, ...... ]
*/
export async function getRelocationTengdi(req, res) {
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
......
/**
* 遗留问题
* 建设指挥
* 在建站点弹窗
* 遗留问题
* 4.0
* 处理数据
*/
import { remainingProblemsTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
/**
* 遗留问题
* @param line 线路名称
* @param site 站点名称
* @returns remainingProblems: {site: "站点名称", state: "站点状态", data: [{数据列表}]}
* data:[{ problemName:"问题名称", problemDescription:"问题说明", fillingTime:"填报时间", reportingDepartment:"填报部门" }]
*/
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"];
......
/**
* 风险隐患
* 建设指挥
* 在建站点弹窗
* 风险隐患
* 4.0
* 处理数据
*/
import { riskHazardsDetailsTableData, riskHazardsTableData } from "../../data/table/stationPopupData";
......@@ -10,7 +14,8 @@ import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
* 风险隐患
* @param line 线路名称
* @param site 站点名称
* @returns riskHazards: { site}
* @returns riskHazards: { site:"站点名称", state:"站点状态", total:风险隐患数, data:[{数据列表}, ...... ]}
* data:[{ riskName:"风险名称", riskLevel:"风险等级", riskId:"风险编号" }, ...... ]
*/
export async function getRiskHazards(req, res) {
let line = req.query.line || "17号线";
......@@ -36,9 +41,8 @@ export async function getRiskHazards(req, res) {
/**
* 风险隐患详情
* @param req
* @param res
* @returns details:[ { name:"", value:"" }, { name:"", value:"" }, ...... ]
* @param riskId 风险编号
* @returns details:[ { name:"隐患详情名称", value:"隐患详情内容" }, { name:"", value:"" }, ...... ]
*/
export async function getRiskHazardsDetails(req, res) {
let riskId = req.query.riskId|| "17号线西岑站1";
......
/**
* 智慧工地
* 建设指挥
* 在建站点弹窗
* 智慧工地
* 4.0
* 处理数据
*/
import { smartConstructionSiteTableData, surveillanceVideoTableData, gateDataTableData, monitoringDataTableData} from "../../data/table/stationPopupData";
......@@ -7,16 +11,19 @@ import { change } from "../../dataPackage/inBackOut";
/**
* 智慧工地基础数据
* @param req
* @param res
* @returns
* @param line 线路名称
* @param site 站点名称
* @returns smartConstructionSite: {
* videoList:[{name:"监控视频名称", url:"监控视频地址"}, ...... ],
* gateList:{ mobilizationPeopleNum:"进场人数", exitPeopleNum:"退场人数", presencePeopleNum:"在场人数", notCheckedIn:"未签到", notSignedOut:"未签退", gateId:"闸机编号" },
* monitoringList:[{ monitoringType:"监测类型", measurementPoints:"测点数", monitoringId:"监测数据编号" }, ...... ]}
*/
export async function getSmartConstructionSite(req, res) {
let line = req.query.line || "17号线";
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"];
......@@ -74,8 +81,10 @@ export async function getSmartConstructionSite(req, res) {
/**
* 智慧工地闸机数据
* @param req
* @param res
* @param gateId 闸机编号
* @returns gateDetails: {
* jobStatistics:[{ personnelType:"人员类型", mobilizationPeopleNum:"进场人数", exitPeopleNum:"退场人数", presencePeopleNum:"在场人数" }, ...... ],
* teamStatistics:[{ unitName:"单位名称", mobilizationPeopleNum:"进场人数", exitPeopleNum:"退场人数", presencePeopleNum:"在场人数" }, ...... ]
* @returns
*/
export async function getGateData(req, res) {
......@@ -107,8 +116,13 @@ export async function getGateData(req, res) {
/**
* 智慧工地监测数据详情
* @param req
* @param res
* @param monitoringId 监测数据编号
* @returns monitoring: {
* "测点名称":{
* "累计变化量":{"日期":[{ name:"第三方监测位移(mm)累计变化量", value:0 }, { name:"施工监测位移(mm)累计变化量", value:0 }], ...... },
* "日变化量":{"日期":[{ name:"第三方监测位移(mm)日变化量", value:0 }, { name:"施工监测位移(mm)日变化量", value:0 }], ...... }
* }, ......
* }
* @returns
*/
export async function getMonitoringData(req, res) {
......
/**
* 车站信息
* 建设指挥
* 在建站点弹窗
* 车站信息
* 4.0
* 处理数据
*/
import { stationDataLiatDefault, stationDefault } from "../../config/defaultConfig";
......@@ -8,6 +12,14 @@ import { change, getPopupOneData } from "../../dataPackage/inBackOut";
import { separateDataAndUint } from "../../dataPackage/tool";
/**
* 车站信息
* @param line 线路名称
* @param site 站点名称
* @returns stationInfo: { site:"站点名称", state:"站点状态", stationType:"车站类型"}
* @returns dataList: [ { key:"数据名称", value:数据值, unit:"单位" }, ...... ]
* key:"建筑面积", "站台长度", "站台宽度", "建设周期", "车站出入口", "车站风井"
*/
export async function getStation(req, res) {
let line = req.query.line || "17号线";
let site = req.query.site || "西岑站";
......
......@@ -7,9 +7,9 @@ import { Config } from './interfaceConfig';
//初始化接口数据
export async function initInterfaceData() {
const InitTaskSuccess = await taskUpdate();
if (!InitTaskSuccess) throw new BizError("服务器启动失败: 初始化定时接口数据时出现问题 请检查目标服务器或本地请求配置");
// if (!InitTaskSuccess) throw new BizError("服务器启动失败: 初始化定时接口数据时出现问题 请检查目标服务器或本地请求配置");
const InitRealTimeSuccess = await initRealTime();
if (!InitRealTimeSuccess) throw new BizError("服务器启动失败: 初始化实时接口数据时出现问题 请检查目标服务器或本地请求配置");
// if (!InitRealTimeSuccess) throw new BizError("服务器启动失败: 初始化实时接口数据时出现问题 请检查目标服务器或本地请求配置");
console.log("初始化接口数据成功");
setInterval(() => {
taskUpdate();
......
......@@ -14,4 +14,5 @@ import { INTERFACEREQUESTTYPEENUM } from "../../config/enum";
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:{}},
// "质量安全指标面板暂存json接口":{type:INTERFACEREQUESTTYPEENUM.即时更新, time:3600000*12, url:"http://192.168.0.71:40003/quality", reqType:"post", header:{}, body:{}},
};
/**
* 质量安全指标面板
* 已对接申电云方接口
* 由于部署服务器与申电云接口不通,所以本机获取申电云方接口,存入res/quality.json文件,部署服务器上直接读取res/quality.json文件
*/
import { getToken } from "../../middleware/getToken";
import { BizError } from "../../util/bizError";
import { getInterfaceByInterfaceName } from "./cronJob";
import { readQualityData } from "./writeJson";
export async function getQualitySafetyPanel() {
let token = await getToken();
let data = await getInterfaceByInterfaceName("质量安全指标面板", {token});
let data = await readQualityData();
// let data = await getInterfaceByInterfaceName("质量安全指标面板暂存json接口", {});
if (!data) throw new BizError("获取json数据失败");
let qualitySafetyPanelData = getData(data);
let significantRisk:any = {"全网":{}}; //重大风险分布
......
/**
* 质量安全指标面板接口数据写入json文件
*/
import { BizError } from "../../util/bizError";
const fs = require('fs');
const path = require('path');
const url = path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", 'quality.json');
/**
* 写入json文件
* @param data
*/
export function writeQualityDataInJson(data) {
let str = JSON.stringify(data, null, "\t");
fs.writeFileSync(url, str, function(err) {
if (err) {
throw new BizError(err);
}
console.log("写入成功");
});
}
/**
* 读取json文件
*/
export function readQualityData() {
let person = JSON.parse(fs.readFileSync(url));
if (!person) throw new BizError("读取文件数据失败");
return person;
}
/**
* 读取文件然后在原有文件内容的基础上添加内容,如果key名重复则覆盖
*/
function addData(data) {
fs.readFile(url, "utf-8", function (err, data) {
if (err) {
console.log(err);
}
let person = JSON.parse(data);
Object.assign(data, person);
let str = JSON.stringify(person, null, "\t");
fs.writeFile(url, str, function (err) {
if (err) {
console.error(err);
}
console.log('新增成功!');
})
})
}
\ No newline at end of file
......@@ -4,13 +4,21 @@ var os = require("os")
import { httpServer } from "./net/http_server";
import { initConfig, systemConfig } from "./config/serverConfig";
import { getToken } from "./middleware/getToken";
import { writeQualityDataInJson } from "./data/interface/writeJson";
async function lanuch() {
await initConfig();
initInterfaceData();
// dataInJson();
httpServer.createServer( systemConfig.port );
console.log('This indicates that the server is started successfully.');
}
async function dataInJson() {
let token = await getToken();
let data = await getInterfaceByInterfaceName("质量安全指标面板", {token});
writeQualityDataInJson(data);
}
lanuch();
......@@ -5,12 +5,10 @@
import * as asyncHandler from 'express-async-handler';
import * as plannedprogressBiz from '../biz/construct/plannedprogress';
import * as qualityBiz from '../biz/construct/quality';
import * as investBiz from '../biz/construct/invest';
import * as businessfinanceBiz from '../biz/construct/businessFinance';
import * as mapBiz from '../biz/construct/map';
import * as 业财融合Biz from '../biz/construct/业财融合面板';
import * as businessfinanceBiz from '../biz/construct/businessFinance';
import * as investBiz from '../biz/construct/invest';
import * as contractWarningBiz from '../biz/construct/contractWarning';
import * as 投资管控Biz from '../biz/construct/投资管控面板';
export function setRouter(httpServer) {
/**计划进度指标面板 */
......@@ -40,11 +38,11 @@ export function setRouter(httpServer) {
// 3.0 ----------------------------------------
/**业财融合指标面板 */
httpServer.get('/construct/businessfinance/estimate', asyncHandler(业财融合Biz.getEstimate) ); //概算总数
httpServer.get('/construct/businessfinance/investmentcompletion', asyncHandler(业财融合Biz.getInvestmentCompletion) ); //投资完成情况
httpServer.get('/construct/businessfinance/estimate', asyncHandler(businessfinanceBiz.getEstimate) ); //概算总数
httpServer.get('/construct/businessfinance/investmentcompletion', asyncHandler(businessfinanceBiz.getInvestmentCompletion) ); //投资完成情况
/**投资管控指标面板 */
httpServer.get('/construct/invest', asyncHandler(投资管控Biz.getInvest) );
httpServer.get('/construct/invest', asyncHandler(investBiz.getInvest) );
/**合同预警弹窗 */
httpServer.get('/construct/contractWarning/budgetwarning', asyncHandler(contractWarningBiz.getBudgetWarning) ); //三级概算预警
httpServer.get('/construct/contractWarning/targetcost', asyncHandler(contractWarningBiz.getTargetCost) ); //线路概算目标成本
......
......@@ -43,7 +43,7 @@ export function setRouter(httpServer) {
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/remainingproblems', asyncHandler(remainingProblemsBiz.getRemainingProblems)); //遗留问题 4.0
// httpServer.get('/stationpopup/constructionMaterials/localization', asyncHandler(localizationBiz.getLocalization)); //属地化移交 4.0
// httpServer.get('/stationpopup/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