Commit abf5fdca by lixinming

no message

parent 4e29e632
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace, analysisAddOrRMData, getDropMoreData }from "../util/tools";
import { get绿色电力_充电设施发展监控 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get绿色电力_充电设施发展监控();
let 特化数据 = {};
for (let key in excelData.当期绿电指数) {
特化数据[key] = analysisAddOrRMData(excelData.当期绿电指数[key]);
}
let 当期绿电指数DataAndUnit = objKeyReplace(特化数据);
ret["api1"] = getKeyValue("当期绿电指数", 当期绿电指数DataAndUnit.dataMap, 当期绿电指数DataAndUnit.unitMap, false, false );
ret["api2"] = getMoreYChartData("同比趋势分析", excelData.同比趋势分析, false, {"绿电指数":"单位","同比增长":"%"})
ret["api3"] = getMoreYChartData("环比趋势分析", excelData.环比趋势分析, false, {"绿电指数":"单位","同比增长":"%"})
// ret["api4"] = getSingleYAndMoreData("各指数成分趋势分析", excelData.各指数成分趋势分析, false, false);
ret["api5"] = getChartData("绿电指数折线图", excelData.绿电指数折线图, false, false );
let 充电设施发展监控DataAndUnit = objKeyReplace(excelData.充电设施发展监控);
ret["api6"] = getKeyValue("充电设施发展监控", 充电设施发展监控DataAndUnit.dataMap, 充电设施发展监控DataAndUnit.unitMap, false, false );
let 服务车次DataAndUnit = objKeyReplace(excelData.服务车次);
ret["api7"] = getKeyValue("服务车次", 服务车次DataAndUnit.dataMap, false, false, false );
ret["api8"] = getChartData("每月服务车次", excelData.每月服务车次, '次', false);
// ret["api9"] = getChartData("设施安全服务", excelData.设施安全服务, '%', false );
let 设施安全服务充电桩使用率DataAndUnit = objKeyReplace(excelData.设施安全服务充电桩使用率);
// ret["api10"] = getKeyValue("设施安全服务充电桩使用率", 设施安全服务充电桩使用率DataAndUnit.dataMap, '%', false, false );
// ret["api11"] = getSingleYAndMoreData("各指数成分趋势分析", excelData.各指数成分趋势分析, false, false);
ret["api12"] = getMoreYChartData("同比趋势分析", excelData.同比趋势分析, false, {"绿电指数":"单位","同比增长":"%"});
ret["api13"] = getMoreYChartData("环比趋势分析", excelData.环比趋势分析, false, {"绿电指数":"单位","同比增长":"%"});
ret["api14"] = getDropMoreData(excelData.绿电指数与经济指数相关分析_2017_2020_, "绿电指数与经济指数相关分析(2017-2020)", "绿电指数与经济指数相关分析(2017-2020)");
ret["api15"] = getDropMoreData(excelData.上海市空气质量AQI优良率, "绿电指数与环境指数相关分析(2017-2020)", "上海市空气质量AQI优良率");
ret["api16"] = getDropMoreData(excelData.青浦区PM2_5月均浓度, "绿电指数与环境指数相关分析(2017-2020)", "青浦区PM2.5月均浓度");
ret["api17"] = getDropMoreData(excelData.绿电指数与经济指数相关分析均值, "绿电指数与经济指数相关分析均值", "绿电指数与经济指数相关分析均值");
ret["api18"] = getDropMoreData(excelData.上海市空气质量AQI优良率均值, "上海市空气质量AQI优良率均值", "上海市空气质量AQI优良率均值");
ret["api19"] = getDropMoreData(excelData.青浦区PM2_5月均浓度均值, "青浦区PM2.5月均浓度均值", "青浦区PM2.5月均浓度均值");
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace, analysisAddOrRMData, getDropMoreData }from "../util/tools";
import { get绿色电力_清洁能源光伏接入情况 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get绿色电力_清洁能源光伏接入情况();
let 特化数据 = {};
for (let key in excelData.当期绿电指数) {
特化数据[key] = analysisAddOrRMData(excelData.当期绿电指数[key]);
}
let 当期绿电指数DataAndUnit = objKeyReplace(特化数据);
ret["api1"] = getKeyValue("当期绿电指数", 当期绿电指数DataAndUnit.dataMap, 当期绿电指数DataAndUnit.unitMap, false, false );
let 客户总量DataAndUnit = objKeyReplace(excelData.客户总量);
ret["api2"] = getKeyValue("客户总量", 客户总量DataAndUnit.dataMap, 客户总量DataAndUnit.unitMap, false, false );
let 各类污染物减排占比DataAndUnit = objKeyReplace(excelData.各类污染物减排占比);
ret["api3"] = getKeyValue("各类污染物减排占比", 各类污染物减排占比DataAndUnit.dataMap, 各类污染物减排占比DataAndUnit.unitMap, true, false );
let 清洁能源光伏接入情况DataAndUnit = objKeyReplace(excelData.清洁能源光伏接入情况);
ret["api4"] = getKeyValue("清洁能源光伏接入情况", 清洁能源光伏接入情况DataAndUnit.dataMap, 清洁能源光伏接入情况DataAndUnit.unitMap, false, false );
ret["api5"] = getChartData("分布式光伏客户接入变化趋势", excelData.分布式光伏客户接入变化趋势, '座', false );
ret["api6"] = getChartData("绿电指数折线图", excelData.绿电指数折线图, false, false );
ret["api7"] = getSingleYAndMoreData("近12个月用电量分析", excelData.12个月用电量分析, false, 'kwh');
ret["api8"] = getSingleYAndMoreData("各指数成分趋势分析", excelData.各指数成分趋势分析, false, false);
// ret["api9"] = getMoreYChartData("同比趋势分析", excelData.同比趋势分析, false, {"绿电指数":"单位","同比增长":"%"});
// ret["api10"] = getMoreYChartData("环比趋势分析", excelData.环比趋势分析, false, {"绿电指数":"单位","同比增长":"%"});
const 指标数据 = [];
excelData.当期指数分四象限分析指标.forEach(info => {
let checkInfo:any = objKeyReplace(info);
指标数据.push(checkInfo.dataMap.x, checkInfo.dataMap.y);
});
ret["api11"] = getDropMoreData(excelData.当期指数分四象限分析, "当期指数分四象限分析", "当期指数分四象限分析",指标数据);
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace, getStringMoreData }from "../util/tools";
import { get平台基础能力 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get平台基础能力();
let 虚拟机资源管理DataAndUnit = objKeyReplace(excelData.虚拟机资源管理);
ret["api1"] = getKeyValue("虚拟机资源管理", 虚拟机资源管理DataAndUnit.dataMap, 虚拟机资源管理DataAndUnit.unitMap, false, false );
let IT资源管理DataAndUnit = objKeyReplace(excelData.IT资源管理);
ret["api2"] = getKeyValue("IT资源管理", IT资源管理DataAndUnit.dataMap, IT资源管理DataAndUnit.unitMap, false, false );
ret["api3"] = getChartData("CPU使用情况", excelData.CPU使用情况, '%', false );
ret["api4"] = getStringMoreData("数据服务能力", excelData.数据服务能力);
ret["api5"] = getStringMoreData("数据采集", excelData.数据采集);
ret["api6"] = getStringMoreData("数据业务能力图片", excelData.数据业务能力图片);
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace }from "../util/tools";
import { get区域融合 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get区域融合();
ret["api1"] = getSingleYAndMoreData("各区受理量对比", excelData.各区受理量对比, false, '次');
ret["api2"] = getSingleYAndMoreData("各区办结量对比", excelData.各区办结量对比, false, '次');
let 一体化电网运行管理DataAndUnit = objKeyReplace(excelData.一体化电网运行管理);
ret["api3"] = getKeyValue("一体化电网运行管理", 一体化电网运行管理DataAndUnit.dataMap, 一体化电网运行管理DataAndUnit.unitMap, false, false );
ret["api4"] = getListData("工程进度",excelData.工程进度,["工程名称","开始时间","预计完成时间","工程进度"],{"工程名称":"name","开始时间":"startTime","预计完成时间":"endTime","工程进度":"rate"});
ret["api5"] = getListData("调度日志",excelData.调度日志,["状态","序号","时间","申请人","所属区域","管理单位","业务分类"],{"状态":"state","序号":"number","时间":"time","申请人":"name","所属区域":"area","管理单位":"department","业务分类":"type"});
ret["api6"] = getSingleYAndMoreData("电网作业风险事件", excelData.电网作业风险事件, false, 'false');
let 一体化新型电力系统DataAndUnit = objKeyReplace(excelData.一体化新型电力系统);
ret["api7"] = getKeyValue("一体化新型电力系统", 一体化新型电力系统DataAndUnit.dataMap, 一体化新型电力系统DataAndUnit.unitMap, false, false );
let 线路负荷率DataAndUnit = objKeyReplace(excelData.线路负荷率);
ret["api8"] = getKeyValue("线路负荷率", 线路负荷率DataAndUnit.dataMap, 线路负荷率DataAndUnit.unitMap, false, false );
let 企业客户_一码通识_DataAndUnit = objKeyReplace(excelData.企业客户_一码通识_);
ret["api9"] = getKeyValue("企业客户“一码通识”", 企业客户_一码通识_DataAndUnit.dataMap, 企业客户_一码通识_DataAndUnit.unitMap, false, false );
let 用电状态可_分色识别_DataAndUnit = objKeyReplace(excelData.用电状态可_分色识别_);
ret["api10"] = getKeyValue("用电状态可“分色识别”", 用电状态可_分色识别_DataAndUnit.dataMap, 用电状态可_分色识别_DataAndUnit.unitMap, false, false );
let 针对性供电服务_随码跟进_DataAndUnit = objKeyReplace(excelData.针对性供电服务_随码跟进_);
ret["api11"] = getKeyValue("针对性供电服务“_随码跟进”", 针对性供电服务_随码跟进_DataAndUnit.dataMap, 针对性供电服务_随码跟进_DataAndUnit.unitMap, false, false );
let 营商业务便利性DataAndUnit = objKeyReplace(excelData.营商业务便利性);
ret["api12"] = getKeyValue("营商业务便利性", 营商业务便利性DataAndUnit.dataMap, 营商业务便利性DataAndUnit.unitMap, false, false );
let 供电可靠性DataAndUnit = objKeyReplace(excelData.供电可靠性);
ret["api13"] = getKeyValue("供电可靠性", 供电可靠性DataAndUnit.dataMap, 供电可靠性DataAndUnit.unitMap, false, false );
let 营商业务及时性DataAndUnit = objKeyReplace(excelData.营商业务及时性);
ret["api14"] = getKeyValue("营商业务及时性", 营商业务及时性DataAndUnit.dataMap, 营商业务及时性DataAndUnit.unitMap, false, false );
// let 业务三地对标DataAndUnit = objKeyReplace(excelData.业务三地对标);
// ret["api15"] = getKeyValue("业务三地对标", 业务三地对标DataAndUnit.dataMap, 业务三地对标DataAndUnit.unitMap, false, false );
let 嘉善县DataAndUnit = objKeyReplace(excelData.嘉善县);
ret["api16"] = getKeyValue("嘉善县", 嘉善县DataAndUnit.dataMap, 嘉善县DataAndUnit.unitMap, false, false );
let 吴江区DataAndUnit = objKeyReplace(excelData.吴江区);
ret["api17"] = getKeyValue("吴江区", 吴江区DataAndUnit.dataMap, 吴江区DataAndUnit.unitMap, false, false );
let 青浦区DataAndUnit = objKeyReplace(excelData.青浦区);
ret["api18"] = getKeyValue("青浦区", 青浦区DataAndUnit.dataMap, 青浦区DataAndUnit.unitMap, false, false );
ret["api19"] = getListData("值班管理", excelData.值班管理, ["名称", "是否到岗"] , {"名称":"name", "是否到岗":"state"});
let 地图链接数据 = {
title: "地图链接",
subTitle : "地图链接",
total : 0,
list : []
};
for (let key in excelData.地图链接) {
地图链接数据.list.push({"key":key, "value": excelData.地图链接[key] });
}
ret["api20"] = 地图链接数据;
for (let key in excelData.营商业务互动性) {
excelData.营商业务互动性[key] = "";
}
ret["api21"] = getKeyValue("营商业务互动性", excelData.营商业务互动性, false, false,false);
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace, getStringMoreData }from "../util/tools";
import { get示范区总体概况 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get示范区总体概况();
let 常住人口_万人_DataAndUnit = objKeyReplace(excelData.常住人口_万人_);
ret["api1"] = getKeyValue("常住人口(万人)", 常住人口_万人_DataAndUnit.dataMap, 常住人口_万人_DataAndUnit.unitMap, true, false );
let 地区生产总值_亿元_DataAndUnit = objKeyReplace(excelData.地区生产总值_亿元_);
ret["api2"] = getKeyValue("地区生产总值(亿元)", 地区生产总值_亿元_DataAndUnit.dataMap, 地区生产总值_亿元_DataAndUnit.unitMap, true, false );
let 示范区面积_平方公里_DataAndUnit = objKeyReplace(excelData.示范区面积_平方公里_);
ret["api3"] = getKeyValue("示范区面积(平方公里)", 示范区面积_平方公里_DataAndUnit.dataMap, 示范区面积_平方公里_DataAndUnit.unitMap, true, false );
let 基础数据DataAndUnit = objKeyReplace(excelData.基础数据);
ret["api4"] = getKeyValue("基础数据", 基础数据DataAndUnit.dataMap, 基础数据DataAndUnit.unitMap, false, false );
ret["api5"] = getListData("电力先行成果",excelData.电力先行成果,["时间","内容"],{"时间":"time","内容":"info"});
ret["api6"] = getListData("一体化大事件",excelData.一体化大事件,["时间","内容"],{"时间":"time","内容":"info"});
ret["api7"] = getListData("变电站数量",excelData.变电站数量,["电站标准","青浦区","吴江区","嘉善县"],{"电站标准":"standard","青浦区":"qpq","吴江区":"wjq","嘉善县":"jsq"});
const 先行启动区数据 = [];
for (let key in excelData.先行启动区) {
先行启动区数据.push(excelData.先行启动区[key]);
}
ret["api8"] = getStringMoreData("先行启动区", 先行启动区数据);
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace }from "../util/tools";
import { get智慧电眼首页 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get智慧电眼首页();
let 基础数据DataAndUnit = objKeyReplace(excelData.基础数据);
ret["api1"] = getKeyValue("基础数据", 基础数据DataAndUnit.dataMap, 基础数据DataAndUnit.unitMap, false, false );
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace }from "../util/tools";
import { get智慧电眼_城市群协同发展 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get智慧电眼_城市群协同发展();
let 基础数据DataAndUnit = objKeyReplace(excelData.基础数据);
ret["api1"] = getKeyValue("基础数据", 基础数据DataAndUnit.dataMap, false, false, false );
let 吴江区数据DataAndUnit = objKeyReplace(excelData.吴江区数据);
ret["api2"] = getKeyValue("吴江区数据", 吴江区数据DataAndUnit.dataMap, 吴江区数据DataAndUnit.unitMap, false, false );
ret["api3"] = getChartData("长三角示范区一体化协同发展指数趋势",excelData.长三角示范区一体化协同发展指数趋势, "户", false);
let 青浦区数据DataAndUnit = objKeyReplace(excelData.青浦区数据);
ret["api4"] = getKeyValue("青浦区数据", 青浦区数据DataAndUnit.dataMap, 青浦区数据DataAndUnit.unitMap, false, false );
let 嘉善县数据DataAndUnit = objKeyReplace(excelData.嘉善县数据);
ret["api5"] = getKeyValue("嘉善县数据", 嘉善县数据DataAndUnit.dataMap, 嘉善县数据DataAndUnit.unitMap, false, false );
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace }from "../util/tools";
import { get智慧电眼_规上企业生产运行状况 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get智慧电眼_规上企业生产运行状况();
let 基础数据DataAndUnit = objKeyReplace(excelData.基础数据);
ret["api1"] = getKeyValue("基础数据", 基础数据DataAndUnit.dataMap, 基础数据DataAndUnit.unitMap, false, false );
let 行业生产指数DataAndUnit = objKeyReplace(excelData.行业生产指数);
ret["api2"] = getKeyValue("行业生产指数", 行业生产指数DataAndUnit.dataMap, 行业生产指数DataAndUnit.unitMap, false, false );
let 规上企业行业分布概览DataAndUnit = objKeyReplace(excelData.规上企业行业分布概览);
ret["api3"] = getKeyValue("规上企业行业分布概览", 规上企业行业分布概览DataAndUnit.dataMap, 规上企业行业分布概览DataAndUnit.unitMap, false, false );
ret["api4"] = getChartData("生产指数趋势分析", excelData.生产指数趋势分析, false, false );
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace }from "../util/tools";
import { get智慧电眼_经济景气度 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get智慧电眼_经济景气度();
let 基础数据DataAndUnit = objKeyReplace(excelData.基础数据);
ret["api1"] = getKeyValue("基础数据", 基础数据DataAndUnit.dataMap, 基础数据DataAndUnit.unitMap, false, false );
let 重点区域景气指数_青浦_DataAndUnit = objKeyReplace(excelData.重点区域景气指数_青浦_);
ret["api2"] = getKeyValue("重点区域景气指数(青浦)", 重点区域景气指数_青浦_DataAndUnit.dataMap, 重点区域景气指数_青浦_DataAndUnit.unitMap, false, false );
let 行业景气度DataAndUnit = objKeyReplace(excelData.行业景气指数);
ret["api3"] = getKeyValue("行业景气指数", 行业景气度DataAndUnit.dataMap, 行业景气度DataAndUnit.unitMap, false, false );
ret["api4"] = getChartData("经济景气指数趋势分析", excelData.经济景气指数趋势分析, false, false );
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace }from "../util/tools";
import { get智慧电眼_空壳企业监测 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get智慧电眼_空壳企业监测();
let 基础数据DataAndUnit = objKeyReplace(excelData.基础数据);
ret["api1"] = getKeyValue("基础数据", 基础数据DataAndUnit.dataMap, 基础数据DataAndUnit.unitMap, false, false );
let 不同容量疑似空壳企业分布DataAndUnit = objKeyReplace(excelData.不同容量疑似空壳企业分布);
ret["api2"] = getKeyValue("不同容量疑似空壳企业分布", 不同容量疑似空壳企业分布DataAndUnit.dataMap, 不同容量疑似空壳企业分布DataAndUnit.unitMap, false, false );
ret["api3"] = getChartData("行业疑似空壳企业分布", excelData.行业疑似空壳企业分布, '户', false );
ret["api4"] = getChartData("疑似空壳企业数变化趋势", excelData.疑似空壳企业数变化趋势, '户', false );
ret["api5"] = getChartData("疑似空壳企业空壳率变化趋势", excelData.疑似空壳企业空壳率变化趋势, '%', false );
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace }from "../util/tools";
import { get智慧电眼_企业贷中信用评估 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get智慧电眼_企业贷中信用评估();
let 各信用等级企业分布情况DataAndUnit = objKeyReplace(excelData.各信用等级企业分布情况);
ret["api1"] = getKeyValue("各信用等级企业分布情况", 各信用等级企业分布情况DataAndUnit.dataMap, 各信用等级企业分布情况DataAndUnit.unitMap, false, false );
ret["api2"] = getSingleYAndMoreData("每月企业信用变化趋势", excelData.每月企业信用变化趋势, false, '户');
ret["api3"] = getSingleYAndMoreData("行业信用分布对比", excelData.行业信用分布对比, false, '%');
let 优质信用企业DataAndUnit = objKeyReplace(excelData.优质信用企业);
ret["api4"] = getKeyValue("优质信用企业", 优质信用企业DataAndUnit.dataMap, false, false, false );
let 风险企业DataAndUnit = objKeyReplace(excelData.风险企业);
ret["api5"] = getKeyValue("风险企业", 风险企业DataAndUnit.dataMap, false, false, false );
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace, getDecimalForN }from "../util/tools";
import { get智慧电眼_商圈经济活力 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get智慧电眼_商圈经济活力();
let 基础数据DataAndUnit = objKeyReplace(excelData.基础数据);
ret["api1"] = getKeyValue("基础数据", 基础数据DataAndUnit.dataMap, 基础数据DataAndUnit.unitMap, false, false );
ret["api2"] = getSingleYAndMoreData("进博会核心区消费类型分析", checkNumber(excelData.进博会核心区消费类型分析), false, false);
ret["api3"] = getSingleYAndMoreData("进博会核心区节假日活力指数分析", checkNumber(excelData.进博会核心区节假日活力指数分析), false, false);
ret["api4"] = getSingleYAndMoreData("青浦重点商圈经济活力指数", excelData.青浦重点商圈经济活力指数, false, false);
ret["api5"] = getMoreYChartData("青浦重点商圈经济活力变化趋势", excelData.青浦重点商圈经济活力变化趋势, false, false);
ret["api6"] = getSingleYAndMoreData("赵巷区消费类型分析", checkNumber(excelData.赵巷区消费类型分析), false, false);
ret["api7"] = getSingleYAndMoreData("赵巷区节假日活力指数分析", checkNumber(excelData.赵巷区节假日活力指数分析), false, false);
ret["api8"] = getSingleYAndMoreData("青浦新城消费类型分析", checkNumber(excelData.青浦新城消费类型分析), false, false);
ret["api9"] = getSingleYAndMoreData("青浦新城节假日活力指数分析", checkNumber(excelData.青浦新城节假日活力指数分析), false, false);
ret["api10"] = getSingleYAndMoreData("朱家角古镇消费类型分析", checkNumber(excelData.朱家角古镇消费类型分析), false, false);
ret["api11"] = getSingleYAndMoreData("朱家角古镇节假日活力指数分析", checkNumber(excelData.朱家角古镇节假日活力指数分析), false, false);
res.send(ret);
}
//特化 小数保留两位
function checkNumber(data) {
let result = {};
for (let key in data) {
result[key] = {};
let info = data[key];
for (let subKey in info) {
let value = info[subKey] ? getDecimalForN(parseFloat(info[subKey]), 2) : 0;
result[key][subKey] = value;
}
}
return result;
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace, analysisAddOrRMData }from "../util/tools";
import { get智慧电眼_重点污染企业生产 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get智慧电眼_重点污染企业生产();
let 污染企业数据ataAndUnit = objKeyReplace(excelData.污染企业数据);
ret["api1"] = getKeyValue("污染企业数据", 污染企业数据ataAndUnit.dataMap, 污染企业数据ataAndUnit.unitMap, false, false );
let 各镇生产指数DataAndUnit = objKeyReplace(excelData.各镇生产指数);
ret["api2"] = getKeyValue("各镇生产指数", 各镇生产指数DataAndUnit.dataMap, 各镇生产指数DataAndUnit.unitMap, false, false );
ret["api3"] = getMoreYChartData("各污染类型企业生产指数对比", excelData.各污染类型企业生产指数对比, false, {"污染企业数":"户"})
ret["api4"] = getMoreYChartData("各行业类型污染企业生产指数对比", excelData.各行业类型污染企业生产指数对比, false, {"污染企业数":"户"})
let 污染类型DataAndUnit = objKeyReplace(excelData.污染类型);
ret["api5"] = getKeyValue("污染类型", 污染类型DataAndUnit.dataMap, 污染类型DataAndUnit.unitMap, false, false );
let 污染企业TOP10DataAndUnit = objKeyReplace(excelData.污染企业TOP10);
ret["api6"] = getKeyValue("污染企业TOP10排名", 污染企业TOP10DataAndUnit.dataMap, 污染企业TOP10DataAndUnit.unitMap, false, false );
let 污染企业生产数据ataAndUnit = objKeyReplace(excelData.污染企业生产数据);
ret["api7"] = getKeyValue("污染企业生产数据", 污染企业生产数据ataAndUnit.dataMap, 污染企业生产数据ataAndUnit.unitMap, false, false );
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace }from "../util/tools";
import { get智慧电眼_行业集中度 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get智慧电眼_行业集中度();
let 基础数据DataAndUnit = objKeyReplace(excelData.基础数据);
ret["api1"] = getKeyValue("基础数据", 基础数据DataAndUnit.dataMap, false, false, false );
let 行业用电分布DataAndUnit = objKeyReplace(excelData.行业用电分布);
ret["api2"] = getKeyValue("行业分布", 行业用电分布DataAndUnit.dataMap, 行业用电分布DataAndUnit.unitMap, false, false );
ret["api3"] = getSingleYAndMoreData("三地各行业用电量", excelData.三地各行业用电量, false, false);
ret["api4"] = getSingleYAndMoreData("重点行业集中度年度分析(青浦)", excelData.重点行业集中度年度分析_青浦_, false, false);
res.send(ret);
}
\ No newline at end of file
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace, analysisAddOrRMData }from "../util/tools";
import { get智慧电眼_住宅空置率 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get智慧电眼_住宅空置率();
let 空置户特化数据 = {};
for (let key in excelData.空置户数据) {
空置户特化数据[key] = analysisAddOrRMData(excelData.空置户数据[key]);
}
let 空置户数据DataAndUnit = objKeyReplace(空置户特化数据);
ret["api1"] = getKeyValue("空置户数据", 空置户数据DataAndUnit.dataMap, 空置户数据DataAndUnit.unitMap, false, false );
let 住房空置率特化基础数据 = {};
for (let key in excelData.住房空置率数据) {
住房空置率特化基础数据[key] = analysisAddOrRMData(excelData.住房空置率数据[key]);
}
let 住房空置率数据DataAndUnit = objKeyReplace(住房空置率特化基础数据);
ret["api2"] = getKeyValue("住房空置率数据", 住房空置率数据DataAndUnit.dataMap, 住房空置率数据DataAndUnit.unitMap, false, false );
let 空置用户电量特化基础数据 = {};
for (let key in excelData.空置用户电量数据) {
空置用户电量特化基础数据[key] = analysisAddOrRMData(excelData.空置用户电量数据[key]);
}
let 空置用户电量数据DataAndUnit = objKeyReplace(空置用户电量特化基础数据 );
ret["api3"] = getKeyValue("空置用户电量数据", 空置用户电量数据DataAndUnit.dataMap, 空置用户电量数据DataAndUnit.unitMap, false, false );
ret["api4"] = getChartData("每月空置户趋势", excelData.每月空置户趋势, 'inData', false );
ret["api5"] = getMoreYChartData("重点区域住房空置率", excelData.重点区域住房空置率, false, {"用户数":"户","空置率":"%"})
ret["api6"] = getMoreYChartData("典型小区住房空置率", excelData.典型小区住房空置率, false, {"用户数":"户","空置率":"%"})
ret["api7"] = getMoreYChartData("重点区域空置户趋势", excelData.重点区域空置户趋势, false, {"用户数":"户","空置率":"%"})
ret["api8"] = getMoreYChartData("典型小区空置户趋势", excelData.典型小区空置户趋势, false, {"用户数":"户","空置率":"%"})
res.send(ret);
}
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace, getStringMoreData }from "../util/tools";
import { get综合能源 } from "../data/analysisExcelData";
export function getData(req, res) {
let ret:any = {};
let excelData:any = get综合能源();
let 潜力用户概览DataAndUnit = objKeyReplace(excelData.潜力用户概览);
ret["api1"] = getKeyValue("潜力用户概览", 潜力用户概览DataAndUnit.dataMap, 潜力用户概览DataAndUnit.unitMap, false, false );
let 综合能源智能匹配DataAndUnit = objKeyReplace(excelData.综合能源智能匹配);
ret["api2"] = getKeyValue("综合能源智能匹配", 综合能源智能匹配DataAndUnit.dataMap, 综合能源智能匹配DataAndUnit.unitMap, false, false );
let 项目覆盖范围DataAndUnit = objKeyReplace(excelData.项目覆盖范围);
ret["api3"] = getKeyValue("项目覆盖范围", 项目覆盖范围DataAndUnit.dataMap, 项目覆盖范围DataAndUnit.unitMap, false, false );
let 系统效果DataAndUnit = objKeyReplace(excelData.系统效果);
ret["api4"] = getKeyValue("系统效果", 系统效果DataAndUnit.dataMap, 系统效果DataAndUnit.unitMap, false, false );
ret["api5"] = getChartData("储能用户月分析(青浦区)", excelData.储能用户月分析_青浦区_, false, false );
ret["api6"] = getChartData("储能用户季度分析(青浦区)", excelData.储能用户季度分析_青浦区_, false, false );
ret["api7"] = getChartData("储能用户年分析(青浦区)", excelData.储能用户年分析_青浦区_, false, false );
ret["api8"] = getListData("服务方案热度排名",excelData.服务方案热度排名,["排名","方案名称","热度"],{"排名":"rank","方案名称":"name","热度":"info"});
ret["api9"] = getListData("服务方案收益排名",excelData.服务方案收益排名,["排名","方案名称","收益"],{"排名":"rank","方案名称":"name","收益":"info"});
ret["api10"] = getSingleYAndMoreData("用户类型(青浦区)", excelData.用户类型_青浦区_, false, '人');
ret["api11"] = getSingleYAndMoreData("行业分类用户(青浦区)", excelData.行业分类用户_青浦区_, false, '户');
//todo 以下数据要加入到表格中 怎么加入有待商议
const 地图文字 = ["综合能效服务", "多能供应服务", "清洁能源服务", "新兴用能服务", "智慧用能服务", "能源交易服务"];
ret["api12"] = getStringMoreData("综合能源智能匹配", 地图文字);
const 青浦区综合能效服务项目案例字符 = ["这里放青浦区综合能效服务项目的案例介绍以及系統配置和系統成果,这星放青浦区综合能效服务项目的案例介绍以及系统配置和系統成果,这里放青浦区综合能效服务项目的案例介紹以及系統配置和系統成果。"];
ret["api13"] = getStringMoreData("青浦区综合能效服务项目案例", 青浦区综合能效服务项目案例字符);
const 系统配置 = ["电力系统", "采暖系统", "制冷系统"];
ret["api14"] = getStringMoreData("系统配置", 系统配置);
res.send(ret);
}
\ No newline at end of file
...@@ -2,7 +2,11 @@ let fs = require('fs'); ...@@ -2,7 +2,11 @@ let fs = require('fs');
const xlsx = require('node-xlsx'); const xlsx = require('node-xlsx');
const path = require('path'); const path = require('path');
//excel的名字 //excel的名字
//const excelName = "其他数据模板.xlsx";
// const excelAnalysisName = "其他数据规则.xlsx";
const excelName = "绿色电力数据模板.xlsx"; const excelName = "绿色电力数据模板.xlsx";
const excelAnalysisName = "绿色电力解析规则.xlsx";
let typeEnum = { let typeEnum = {
"柱状数据":1, "柱状数据":1,
...@@ -33,7 +37,7 @@ let createBizAndDataConfigMap = { ...@@ -33,7 +37,7 @@ let createBizAndDataConfigMap = {
//配置解析excel //配置解析excel
function analysisConfigExcel() { function analysisConfigExcel() {
const workSheetsFromFile = xlsx.parse('../res/绿色电力解析规则.xlsx'); const workSheetsFromFile = xlsx.parse(`../res/${excelAnalysisName}`);
let sheetMap = {}; let sheetMap = {};
let sheetList = []; let sheetList = [];
...@@ -61,8 +65,10 @@ function createConfig() { ...@@ -61,8 +65,10 @@ function createConfig() {
let unit = valueList[5]; let unit = valueList[5];
let total = valueList[6]; let total = valueList[6];
let percent = valueList[7]; let percent = valueList[7];
let titleList = valueList[8] ? JSON.parse(valueList[8]) : "";
let keyValueObj = valueList[9] ? JSON.parse(valueList[9]) : "" ;
if (!createBizAndDataConfigMap[pageName] ) createBizAndDataConfigMap[pageName] = {sheetName, apiList:[]}; if (!createBizAndDataConfigMap[pageName] ) createBizAndDataConfigMap[pageName] = {sheetName, apiList:[]};
createBizAndDataConfigMap[pageName].apiList.push({ type ,dataName ,title ,unit ,total ,percent }); createBizAndDataConfigMap[pageName].apiList.push({ type ,dataName ,title ,unit ,total ,percent, titleList, keyValueObj });
} }
} }
...@@ -75,19 +81,21 @@ function createData() { ...@@ -75,19 +81,21 @@ function createData() {
import * as path from "path"; import * as path from "path";
import * as fs from "fs"; import * as fs from "fs";
import { BizError } from "../util/bizError"; import { BizError } from "../util/bizError";
import { limitEnteNameString } from "../util/tools"; import { limitEnteNameString, changeDataName } from "../util/tools";
import { getExcelDataBySheetName, analysisExcelDataOfObject, analysisExcelDataOfMoreObject } from "../util/analysisExcel";`; import { getExcelDataBySheetName, analysisExcelDataOfObject, analysisExcelDataOfMoreObject, analysisExcelDataOfList } from "../util/analysisExcel";`;
for (let pangeName in createBizAndDataConfigMap) { for (let pangeName in createBizAndDataConfigMap) {
let { sheetName } = createBizAndDataConfigMap[pangeName]; let { sheetName } = createBizAndDataConfigMap[pangeName];
let ofMoreObjList = []; let ofMoreObjList = [];
let ofObjList = []; let ofObjList = [];
let listDataAnalysisInfo = {};
createBizAndDataConfigMap[pangeName].apiList.forEach( info => { createBizAndDataConfigMap[pangeName].apiList.forEach( info => {
if (info.type == "双轴多柱状数据") ofMoreObjList.push(info.dataName); if (info.type == "双轴多柱状数据" || info.type == "单轴多柱状数据") ofMoreObjList.push(info.dataName);
else if (info.type == "列表数据") listDataAnalysisInfo[info.dataName] = {titleList:info.titleList, keyValueObj:info.keyValueObj};
else ofObjList.push(info.dataName); else ofObjList.push(info.dataName);
}); });
str += ` str += `
export function get${sheetName}() {; export function get${sheetName}() {;
...@@ -95,11 +103,14 @@ function createData() { ...@@ -95,11 +103,14 @@ function createData() {
let result = {}; let result = {};
let ofMoreObjList = ${JSON.stringify(ofMoreObjList)}; let ofMoreObjList = ${JSON.stringify(ofMoreObjList)};
let ofObjList = ${JSON.stringify(ofObjList)}; let ofObjList = ${JSON.stringify(ofObjList)};
let listDataAnalysisInfo = ${JSON.stringify(listDataAnalysisInfo)};
for (let i = 0; i < bolckDataList.length; i++) { for (let i = 0; i < bolckDataList.length; i++) {
let {blockData, blockTitle} = bolckDataList[i]; let {blockData, blockTitle} = bolckDataList[i];
if (ofMoreObjList.indexOf(blockTitle) > -1) result[blockTitle] = analysisExcelDataOfMoreObject(blockData, false); let changeName = changeDataName(blockTitle);
if (ofObjList.indexOf(blockTitle) > -1) result[blockTitle] = analysisExcelDataOfObject(blockData, true, false); if (ofMoreObjList.indexOf(changeName) > -1) result[changeName] = analysisExcelDataOfMoreObject(blockData, false);
if (ofObjList.indexOf(changeName) > -1) result[changeName] = analysisExcelDataOfObject(blockData, true, false);
if (listDataAnalysisInfo[changeName]) result[changeName] = analysisExcelDataOfList(blockData, listDataAnalysisInfo[blockTitle].keyValueObj, false);
} }
return result; return result;
...@@ -152,10 +163,11 @@ function getBizStr(apiList, sheetName) { ...@@ -152,10 +163,11 @@ function getBizStr(apiList, sheetName) {
let excelData:any = get${sheetName}(); let excelData:any = get${sheetName}();
`; `;
apiList.forEach((info, index) => { apiList.forEach((info, index) => {
let {dataName, unit, total, percent, type,titleList,titleValueObj} = info; let {dataName, unit, total, percent, type, titleList, keyValueObj} = info;
const apiName = `api${index+1}`; const apiName = `api${index+1}`;
let subStr; let subStr;
let chartUnit;
switch(type) { switch(type) {
case "键值数据": case "键值数据":
...@@ -170,21 +182,22 @@ function getBizStr(apiList, sheetName) { ...@@ -170,21 +182,22 @@ function getBizStr(apiList, sheetName) {
} }
break; break;
case "柱状数据": case "柱状数据":
let chartUnit = typeof unit == 'boolean' ? unit : `'${unit}'`; chartUnit = typeof unit == 'boolean' ? unit : `'${unit}'`;
subStr = ` subStr = `
ret["${apiName}"] = getChartData("${dataName}", excelData.${dataName}, ${chartUnit}, ${percent} );`; ret["${apiName}"] = getChartData("${dataName}", excelData.${dataName}, ${chartUnit}, ${percent} );`;
break; break;
case "列表数据": case "列表数据":
subStr = ` subStr = `
ret["${apiName}"] = getListData("${dataName}",excelData.${dataName},${titleList},${titleValueObj});`; ret["${apiName}"] = getListData("${dataName}",excelData.${dataName},${JSON.stringify(titleList)},${JSON.stringify(keyValueObj)});`;
break; break;
case "单轴多柱状数据": case "单轴多柱状数据":
chartUnit = typeof unit == 'boolean' ? unit : `'${unit}'`;
subStr = ` subStr = `
ret["${apiName}"] = getSingleYAndMoreData("${dataName}", excelData.${dataName}, ${percent}, '${unit}');`; ret["${apiName}"] = getSingleYAndMoreData("${dataName}", excelData.${dataName}, ${percent}, ${chartUnit});`;
break; break;
case "双轴多柱状数据": case "双轴多柱状数据":
subStr = ` subStr = `
ret["${apiName}"] = getMoreYChartData("${dataName}", excelData.${dataName}, ${percent}, ${JSON.stringify(unit)})`; ret["${apiName}"] = getMoreYChartData("${dataName}", excelData.${dataName}, ${percent}, ${unit})`;
break; break;
}; };
...@@ -238,7 +251,6 @@ export function setRouter(httpServer){ ...@@ -238,7 +251,6 @@ export function setRouter(httpServer){
}); });
} }
createData(); createData();
createBiz(); createBiz();
createRouter(); createRouter();
......
import * as asyncHandler from 'express-async-handler'
import * as zhdyBiz from '../biz/zhdy';
import * as zhdyMsgbox1Biz from '../biz/zhdyMsgbox1';
import * as zhdyMsgbox2Biz from '../biz/zhdyMsgbox2';
import * as zhdyMsgbox3Biz from '../biz/zhdyMsgbox3';
import * as zhdyMsgbox4Biz from '../biz/zhdyMsgbox4';
import * as zhdyMsgbox5Biz from '../biz/zhdyMsgbox5';
import * as zhdyMsgbox6Biz from '../biz/zhdyMsgbox6';
import * as zhdyMsgbox7Biz from '../biz/zhdyMsgbox7';
import * as zhdyMsgbox8Biz from '../biz/zhdyMsgbox8';
import * as zhdyMsgbox9Biz from '../biz/zhdyMsgbox9';
import * as ptjcnlPageBiz from '../biz/ptjcnlPage';
import * as sfqztgkPageBiz from '../biz/sfqztgkPage';
import * as qyehPageBiz from '../biz/qyehPage';
import * as zhnyPageBiz from '../biz/zhnyPage';
import * as lsdl_cdssPageBiz from '../biz/lsdl_cdssPage';
import * as lsdl_qjnygfPageBiz from '../biz/lsdl_qjnygfPage';
export function setRouter(httpServer){
httpServer.get('/zhdy', asyncHandler(zhdyBiz.getData));
httpServer.get('/zhdyMsgbox1', asyncHandler(zhdyMsgbox1Biz.getData));
httpServer.get('/zhdyMsgbox2', asyncHandler(zhdyMsgbox2Biz.getData));
httpServer.get('/zhdyMsgbox3', asyncHandler(zhdyMsgbox3Biz.getData));
httpServer.get('/zhdyMsgbox4', asyncHandler(zhdyMsgbox4Biz.getData));
httpServer.get('/zhdyMsgbox5', asyncHandler(zhdyMsgbox5Biz.getData));
httpServer.get('/zhdyMsgbox6', asyncHandler(zhdyMsgbox6Biz.getData));
httpServer.get('/zhdyMsgbox7', asyncHandler(zhdyMsgbox7Biz.getData));
httpServer.get('/zhdyMsgbox8', asyncHandler(zhdyMsgbox8Biz.getData));
httpServer.get('/zhdyMsgbox9', asyncHandler(zhdyMsgbox9Biz.getData));
httpServer.get('/ptjcnlPage', asyncHandler(ptjcnlPageBiz.getData));
httpServer.get('/sfqztgkPage', asyncHandler(sfqztgkPageBiz.getData));
httpServer.get('/qyehPage', asyncHandler(qyehPageBiz.getData));
httpServer.get('/zhnyPage', asyncHandler(zhnyPageBiz.getData));
httpServer.get('/lsdl_cdssPage', asyncHandler(lsdl_cdssPageBiz.getData));
httpServer.get('/lsdl_qjnygfPage', asyncHandler(lsdl_qjnygfPageBiz.getData));
httpServer.post('/lsdl_cdssPage', asyncHandler(lsdl_cdssPageBiz.getData));
httpServer.post('/lsdl_qjnygfPage', asyncHandler(lsdl_qjnygfPageBiz.getData));
httpServer.post('/ptjcnlPage', asyncHandler(ptjcnlPageBiz.getData));
httpServer.post('/sfqztgkPage', asyncHandler(sfqztgkPageBiz.getData));
httpServer.post('/qyehPage', asyncHandler(qyehPageBiz.getData));
httpServer.post('/zhnyPage', asyncHandler(zhnyPageBiz.getData));
httpServer.post('/zhdy', asyncHandler(zhdyBiz.getData));
httpServer.post('/zhdyMsgbox1', asyncHandler(zhdyMsgbox1Biz.getData));
httpServer.post('/zhdyMsgbox2', asyncHandler(zhdyMsgbox2Biz.getData));
httpServer.post('/zhdyMsgbox3', asyncHandler(zhdyMsgbox3Biz.getData));
httpServer.post('/zhdyMsgbox4', asyncHandler(zhdyMsgbox4Biz.getData));
httpServer.post('/zhdyMsgbox5', asyncHandler(zhdyMsgbox5Biz.getData));
httpServer.post('/zhdyMsgbox6', asyncHandler(zhdyMsgbox6Biz.getData));
httpServer.post('/zhdyMsgbox7', asyncHandler(zhdyMsgbox7Biz.getData));
httpServer.post('/zhdyMsgbox8', asyncHandler(zhdyMsgbox8Biz.getData));
httpServer.post('/zhdyMsgbox9', asyncHandler(zhdyMsgbox9Biz.getData));
}
\ No newline at end of file
//端口 //端口
export function getPort() : number { export function getPort() : number {
return Number(process.env.PORT) || Number(process.argv[3]) || 8383; return Number(process.env.PORT) || Number(process.argv[3]) || 8383; //测试环境 8383
} }
// sit 测试环境 prod 生产环境 dem 演示环境(测试数据,前端无密码访问) // sit 测试环境 prod 生产环境 dem 演示环境(测试数据,前端无密码访问)
...@@ -24,12 +24,4 @@ export const mySqlConfig = { ...@@ -24,12 +24,4 @@ export const mySqlConfig = {
// mysqlPort:3306, // mysqlPort:3306,
// mysqlUser:'ddtest', // mysqlUser:'ddtest',
// mysqlPwd:'ddtest123^', // mysqlPwd:'ddtest123^',
}; };
\ No newline at end of file
export const interfaceConfig = {
企业信息数据列表: '/openapi/company/list',
创投机构数据列表: '/openapi/investorg/list',
科技金融产品: '/openapi/product/list'
}
\ No newline at end of file
...@@ -96,6 +96,69 @@ export function analysisExcelDataOfObject(dataList, isJumpTitle?, keyInX?) { ...@@ -96,6 +96,69 @@ export function analysisExcelDataOfObject(dataList, isJumpTitle?, keyInX?) {
return result; return result;
} }
/**
* analysisExcelDataOfList 将excel解出来的数据块按需求解析成可用数据
* @param dataList excel解出来的数据
* @param keyObject 对应关系 {dataList表头名称: 英文}
* @param headerInx 第一个表头数据是否横向排列
* @returns 返回 {"第一个表头数据":{"表头数据":值...} }
*/
export function analysisExcelDataOfList(dataList, keyObject, headerInx?) {
let result = [];
if (!headerInx) {//在y轴上排列
let titleList = dataList[0];
let indexKeyNameMap = {};
titleList.forEach( (info, index) => {
indexKeyNameMap[index + 1] = info;
});
for (let i = 1; i < dataList.length; i++) {
let onceInfo = {};
let subList = dataList[i];
subList.forEach( (info, index) => {
let key = indexKeyNameMap[index + 1];
let checkKey = keyObject[key];
onceInfo[checkKey] = info;
});
result.push(onceInfo);
}
} else {//在x轴上排列
let indexKeyNameMap = {};
dataList.forEach( (info, index) => {
indexKeyNameMap[index + 1] = info[0];
});
let dataMap = {};
for(let y = 0; y < dataList.length; y++) {
let xList = dataList[y];
for (let x = 1; x < xList.length; x++) {
if (!dataMap[x]) dataMap[x] = {};
let key = indexKeyNameMap[y + 1];
let checkKey = keyObject[key];
dataMap[x][checkKey] = xList[x];
}
}
result = Object.values(dataMap);
}
return result;
}
export function analysisExcelDataOfStringList(dataList) {
let result = [];
for (let i = 0; i < dataList.length; i++) {
if (!i) continue;
let subList = dataList[i];
result.push(subList[1]);
}
return result;
}
export function testmain() { export function testmain() {
...@@ -132,11 +195,13 @@ function getListFristNotNullItemIndex(list) { //获取起始坐标 ...@@ -132,11 +195,13 @@ function getListFristNotNullItemIndex(list) { //获取起始坐标
if (list[i]) return i; if (list[i]) return i;
} }
} }
function getListFirstNullItemIndex(list) { //获取第一个为空的坐标
function getListFirstNullItemIndex(startX, list) { //获取第一个为空的坐标
if (!list.length) return null; if (!list.length) return null;
let checkItem = false; let checkItem = false;
let firstItemIndex = 0; let firstItemIndex = 0;
for (let i = 0; i <= list.length; i++) { for (let i = startX; i <= list.length; i++) {
let item = list[i]; let item = list[i];
if (!checkItem && item) checkItem = true; if (!checkItem && item) checkItem = true;
...@@ -190,11 +255,11 @@ function checkBlock(dataList) { ...@@ -190,11 +255,11 @@ function checkBlock(dataList) {
let thisRoowStartX = getListFristNotNullItemIndex(childList); let thisRoowStartX = getListFristNotNullItemIndex(childList);
let thisRoowLastItem = childList[thisRoowStartX + 1]; let thisRoowLastItem = childList[thisRoowStartX + 1];
let LastList = dataList[i+1] || []; let LastList = dataList[i+1] || [];
let lastRoowStartX = getListFristNotNullItemIndex(LastList); // let lastRoowStartX = getListFristNotNullItemIndex(LastList);
let lastRoowHaveItem = LastList[thisRoowStartX];
if ( thisRoowLastItem || (LastList.length && lastRoowStartX == thisRoowStartX) ) { if ( thisRoowLastItem || (LastList.length && lastRoowHaveItem) ) {
if (lastRoowStartX == thisRoowStartX && thisRoowLastItem ) { if (lastRoowHaveItem && thisRoowLastItem ) {
isNotBlockTitle = true; //不存在标题块 isNotBlockTitle = true; //不存在标题块
blockTitle = `${thisRoowStartX}_${i}`; blockTitle = `${thisRoowStartX}_${i}`;
startY = i; startY = i;
...@@ -221,7 +286,7 @@ function checkBlock(dataList) { ...@@ -221,7 +286,7 @@ function checkBlock(dataList) {
} else { } else {
//测量最大连续长度 //测量最大连续长度
let firstNullX = getListFirstNullItemIndex(childList); let firstNullX = getListFirstNullItemIndex(startX, childList);
if (firstNullX) endX = Math.max(endX, firstNullX-1); if (firstNullX) endX = Math.max(endX, firstNullX-1);
break; break;
} }
......
...@@ -149,6 +149,12 @@ export function getKeyValue(title, dataMap, unit, total, percent ) { ...@@ -149,6 +149,12 @@ export function getKeyValue(title, dataMap, unit, total, percent ) {
} }
return data; return data;
} }
function getChartMin(num) {
if (num > 0) return 0;
return Math.floor(num);
}
export function getChartData(title, dataMap, unit, percent ) { export function getChartData(title, dataMap, unit, percent ) {
unit = unit || ""; unit = unit || "";
let data = { let data = {
...@@ -158,7 +164,7 @@ export function getChartData(title, dataMap, unit, percent ) { ...@@ -158,7 +164,7 @@ export function getChartData(title, dataMap, unit, percent ) {
let count = 0; let count = 0;
for (let key in dataMap) { for (let key in dataMap) {
let value = parseFloat(dataMap[key]); let value = parseFloat(dataMap[key] || 0);
data.yMaxValue = Math.max(data.yMaxValue, value); data.yMaxValue = Math.max(data.yMaxValue, value);
data.yMinValue = Math.min(data.yMinValue, value); data.yMinValue = Math.min(data.yMinValue, value);
count += value; count += value;
...@@ -176,6 +182,7 @@ export function getChartData(title, dataMap, unit, percent ) { ...@@ -176,6 +182,7 @@ export function getChartData(title, dataMap, unit, percent ) {
let onceInfo = { key, unit:thisUnit, value }; let onceInfo = { key, unit:thisUnit, value };
data.data.list.push(onceInfo) data.data.list.push(onceInfo)
} }
data.yMinValue = getChartMin(data.yMinValue);
return data; return data;
} }
...@@ -193,6 +200,7 @@ export function getListData( title, dataList, titleList, titleValueObj ) { ...@@ -193,6 +200,7 @@ export function getListData( title, dataList, titleList, titleValueObj ) {
return data; return data;
} }
//多个y轴的条柱状图 dataMap => {"name":{"key1":1111,"key2":232, "key3":dsfs, ... }, ... } //多个y轴的条柱状图 dataMap => {"name":{"key1":1111,"key2":232, "key3":dsfs, ... }, ... }
export function getMoreYChartData(title, dataMap, percent, unit ) { export function getMoreYChartData(title, dataMap, percent, unit ) {
let data = { title, dataList: [] }; let data = { title, dataList: [] };
...@@ -228,6 +236,11 @@ export function getMoreYChartData(title, dataMap, percent, unit ) { ...@@ -228,6 +236,11 @@ export function getMoreYChartData(title, dataMap, percent, unit ) {
let onceInfo = { key, unit:thisUnit, value }; let onceInfo = { key, unit:thisUnit, value };
onceData.list.push(onceInfo) onceData.list.push(onceInfo)
} }
onceData.total = getDecimalForN( onceData.total, 1);
onceData.yMinValue = getChartMin(onceData.yMinValue);
data.dataList.push(onceData); data.dataList.push(onceData);
} }
...@@ -242,7 +255,10 @@ export function getSingleYAndMoreData(title, dataMap, percent, unit) { ...@@ -242,7 +255,10 @@ export function getSingleYAndMoreData(title, dataMap, percent, unit) {
let onceData = { title:subDataName, list:[] }; let onceData = { title:subDataName, list:[] };
let thisDataCount = 0; let thisDataCount = 0;
for (let key in dataMap) { let analysisMap = objKeyReplace(dataMap[subDataName])
let thisData = analysisMap.dataMap;
for (let key in thisData) {
let value = parseFloat(dataMap[key]); let value = parseFloat(dataMap[key]);
thisDataCount += value; thisDataCount += value;
} }
...@@ -253,10 +269,10 @@ export function getSingleYAndMoreData(title, dataMap, percent, unit) { ...@@ -253,10 +269,10 @@ export function getSingleYAndMoreData(title, dataMap, percent, unit) {
thisUnit = unit[subDataName] || ""; thisUnit = unit[subDataName] || "";
} else thisUnit = unit || ""; } else thisUnit = unit || "";
for (let key in dataMap) { for (let key in thisData) {
let value; let value;
if (percent) value = getDecimalForN( value/thisDataCount, percent); if (percent) value = getDecimalForN( value/thisDataCount, percent);
else value = parseFloat(dataMap[key]); else value = parseFloat(thisData[key]);
data.yMaxValue = Math.max(data.yMaxValue, value); data.yMaxValue = Math.max(data.yMaxValue, value);
data.yMinValue = Math.min(data.yMinValue, value); data.yMinValue = Math.min(data.yMinValue, value);
...@@ -265,14 +281,74 @@ export function getSingleYAndMoreData(title, dataMap, percent, unit) { ...@@ -265,14 +281,74 @@ export function getSingleYAndMoreData(title, dataMap, percent, unit) {
let onceInfo = { key, unit:thisUnit, value }; let onceInfo = { key, unit:thisUnit, value };
onceData.list.push(onceInfo) onceData.list.push(onceInfo)
} }
data.dataList.push(onceData); data.dataList.push(onceData);
} }
data.yMinValue = getChartMin(data.yMinValue);
data.yStepValue = Math.ceil(data.yMaxValue - data.yMinValue / data.total); data.yStepValue = Math.ceil(data.yMaxValue - data.yMinValue / data.total);
return data; return data;
} }
//字符模板
export function getStringMoreData(title, valueList) {
let result = { title, data:{} };
valueList.forEach( (info, index) => {
let key = index + 1
result.data[`${key}`] = info;
});
return result;
}
//撒点图 cutApartXAndY:[分割的x坐标,分割的y坐标]
export function getDropMoreData(dataList, title, subTitle, cutApartXAndY?) {
let data:any = {title, subTitle, dataList:[], xMax:0, xMin:new Date().valueOf(), yMax:0, yMin:new Date().valueOf() };
dataList.forEach(info => {
let {x, y} = info;
let thisDropXInfo = separateDataAndUint(x);
let thisDropX = parseFloat(thisDropXInfo.data);
let thisDropYInfo = separateDataAndUint(y);
let thisDropY = parseFloat(thisDropYInfo.data);
data.xMax = Math.max(thisDropX, data.xMax);
data.xMin = Math.min(thisDropX, data.xMin);
data.yMax = Math.max(thisDropY, data.yMax);
data.yMin = Math.min(thisDropY, data.yMin);
let value = [thisDropX, thisDropY];
let type = 1;
if (cutApartXAndY) {
let cutX = cutApartXAndY[0];
let cutY = cutApartXAndY[1];
if ( thisDropX < cutX && thisDropY > cutY) type = 1;
else if ( thisDropX > cutX && thisDropY > cutY ) type = 2;
else if ( thisDropX < cutX && thisDropY < cutY ) type = 3;
else type = 4;
}
data.dataList.push({value, name:info.name||"", type});
});
if (cutApartXAndY) {
data.cutApartX = cutApartXAndY[0];
data.cutApartY = cutApartXAndY[1];
}
let count = dataList.length;
let xAvg = Math.ceil((data.xMax - data.xMin) / count);
data.xMax = Math.floor( data.xMax + xAvg);
data.xMin = Math.floor( data.xMin - xAvg);
let yAvg = Math.ceil((data.yMax - data.yMin) / count);
data.yMax = Math.floor( data.yMax + yAvg);
data.yMin = Math.floor( data.yMin - yAvg);
return data;
}
//按需取保留小数长度 tenNumber保留小数位 1位就填1 //按需取保留小数长度 tenNumber保留小数位 1位就填1
export function getDecimalForN(number, n) { export function getDecimalForN(number, n) {
let ten = 1; let ten = 1;
...@@ -301,7 +377,16 @@ export function getAgeByBirthday(birthday:string) { ...@@ -301,7 +377,16 @@ export function getAgeByBirthday(birthday:string) {
} }
export function analysisAddOrRMData(str) { export function analysisAddOrRMData(str) {
let checkStr = str.replace(/增加/, "+"); str = `${str}`;
let checkStr = str.replace(/增加/, "");
let result = checkStr.replace(/减少/, "-"); let result = checkStr.replace(/减少/, "-");
return result; return result;
}
export function changeDataName(str) {
let result = str.replace(/[()""“”()-]/, "_");
for (let i =0; i < 10; i++) {
result = result.replace(/[()""“”()-]/, "_");
}
return result;
} }
\ 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