Commit 6b022daf by lixinming

no message

parent f616c2e3
import { getChartOutData, getKeyValueNumberOutData, getListOutData } from "../../cal/out";
import { separateDataAndUint } from "../../cal/privateTools";
import { getHardware } from "../../data/interface/hardwareData";
import { getCsgkBasicData, getEnterpriseTest, getTestAnalysis, getTestLicense, getTestTotalTime } from "../../data/interface/interfaceService";
import { getCsgkBasicData, getTestAnalysis, getTestLicense, getTestTotalTime } from "../../data/interface/interfaceService";
import { getMap } from "../../data/interface/mapInterfaceData";
......@@ -103,12 +103,6 @@ export async function getCSFX(req, res) {
{key:"2021.11", value:"310km"}, {key:"2021.12", value:"870km"}, {key:"2022.1", value:"860km"}, {key:"2022.2", value:"980km"}, {key:"2022.3", value:"103km"},
{key:"2022.4", value:"650km"}, {key:"2022.5", value:"560km"}, {key:"2022.6", value:"130km"}, {key:"2022.7", value:"606km"}, {key:"2022.8", value:"171km"}
];
let {testMileage, functionTestMileage} = await getTestAnalysis();
let 月度测试里程分布data = {测试: {unit:'km', dataInfo: testMileage}, 功能测试: {unit:'km', dataInfo: functionTestMileage}};
ret["api1"] = getChartOutData("月度测试里程分布", 月度测试里程分布data);
let 月度测试时长分布测试data = [
{key:"2020.8", value:"546h"}, {key:"2020.9", value:"124h"}, {key:"2020.10", value:"791h"}, {key:"2020.11", value:"135h"}, {key:"2020.12", value:"264h"},
{key:"2021.1", value:"546h"}, {key:"2021.2", value:"124h"}, {key:"2021.3", value:"791h"}, {key:"2021.4", value:"135h"}, {key:"2021.5", value:"264h"},
......@@ -123,15 +117,6 @@ export async function getCSFX(req, res) {
{key:"2021.11", value:"310h"}, {key:"2021.12", value:"870h"}, {key:"2022.1", value:"860h"}, {key:"2022.2", value:"980h"}, {key:"2022.3", value:"103h"},
{key:"2022.4", value:"650h"}, {key:"2022.5", value:"560h"}, {key:"2022.6", value:"130h"}, {key:"2022.7", value:"606h"}, {key:"2022.8", value:"171h"}
];
let {月度测试时长data, 企业测试时长data} = await getTestTotalTime();
let {testTime, functionTestTime} = 月度测试时长data;
let 月度测试时长分布data = {测试: {unit:'h', dataInfo: testTime}, 功能测试: {unit:'h', dataInfo: functionTestTime}};
ret["api2"] = getChartOutData("月度测试时长分布", 月度测试时长分布data);
let 企业测试里程测试分布data = [
{key:"百度", value:"46km"}, {key:"滴滴", value:"59km"}, {key:"阿里", value:"86km"}, {key:"丰田", value:"71km"}, {key:"大众", value:"59km"}, {key:"商汤", value:"56km"},
{key:"AutoX", value:"43km"}, {key:"小马易车", value:"36km"}, {key:"上汽红岩", value:"67km"}, {key:"阿利昂斯", value:"17km"}, {key:"宝马", value:"42km"},
......@@ -142,12 +127,6 @@ export async function getCSFX(req, res) {
{key:"AutoX", value:"33km"}, {key:"小马易车", value:"26km"}, {key:"上汽红岩", value:"47km"}, {key:"阿利昂斯", value:"27km"}, {key:"宝马", value:"70km"},
{key:"吉利汽车", value:"75km"}, {key:"上汽通用", value:"67km"}, {key:"图森未来", value:"72km"}
];
let {testMileageEnterprise, functionTestMileageEnterprise} = await getEnterpriseTest();
let 企业测试里程分布data = {测试: {unit:'km', dataInfo: testMileageEnterprise}, 功能测试: {unit:'km', dataInfo: functionTestMileageEnterprise}};
ret["api3"] = getChartOutData("企业测试里程分布", 企业测试里程分布data);
let 企业测试时长测试分布data = [
{key:"百度", value:"61h"}, {key:"滴滴", value:"48h"}, {key:"阿里", value:"78h"}, {key:"丰田", value:"71h"}, {key:"大众", value:"59h"}, {key:"商汤", value:"56h"},
{key:"AutoX", value:"53h"}, {key:"小马易车", value:"37h"}, {key:"上汽红岩", value:"67h"}, {key:"阿利昂斯", value:"17km"}, {key:"宝马", value:"42km"},
......@@ -159,6 +138,19 @@ export async function getCSFX(req, res) {
{key:"吉利汽车", value:"75km"}, {key:"上汽通用", value:"67km"}, {key:"图森未来", value:"72km"}
];
let {testMileage, functionTestMileage, testMileageEnterprise, functionTestMileageEnterprise} = await getTestAnalysis();
let 月度测试里程分布data = {测试: {unit:'km', dataInfo: testMileage}, 功能测试: {unit:'km', dataInfo: functionTestMileage}};
ret["api1"] = getChartOutData("月度测试里程分布", 月度测试里程分布data);
let {月度测试时长data, 企业测试时长data} = await getTestTotalTime();
let {testTime, functionTestTime} = 月度测试时长data;
let 月度测试时长分布data = {测试: {unit:'h', dataInfo: testTime}, 功能测试: {unit:'h', dataInfo: functionTestTime}};
ret["api2"] = getChartOutData("月度测试时长分布", 月度测试时长分布data);
let 企业测试里程分布data = {测试: {unit:'km', dataInfo: testMileageEnterprise}, 功能测试: {unit:'km', dataInfo: functionTestMileageEnterprise}};
ret["api3"] = getChartOutData("企业测试里程分布", 企业测试里程分布data);
let {testTimeEnterprise, functionTestTimeEnterprise} = 企业测试时长data;
let 企业测试时长分布data = {测试: {unit:'h', dataInfo: testTimeEnterprise}, 功能测试: {unit:'h', dataInfo: functionTestTimeEnterprise}};
ret["api4"] = getChartOutData("企业测试时长分布", 企业测试时长分布data);
......
......@@ -3,6 +3,7 @@ export enum ERRORENUM {
}
export enum SYSTEMERRORENUM {
初始化配置失败 = 1,
获取第三方接口数据失败,
}
let bizErrorMsgMap = {};
......
......@@ -9,10 +9,10 @@ export let sockentPort;
export let dbConfig;
export let appConfig = {
rightView: 'http://10.51.50.136:8090/sql/execute',
cloudResource:'http://10.51.50.140:8080/api/static/PrivateCloudUsageStatics',
physicalResource:'http://10.51.50.140:8080/api/v1/PrivateCloudCurrentUsages',
mapPort:'http://10.51.48.213/nlink/v2/getAllDevicesInfo?prjid=0255e1f7515348cc87c7bb2cc6341fer&online=3&broken=3&token=09a98bc555474e058ef90b6cc6e23638'
rightView:'',
cloudResource:'',
physicalResource:'',
mapPort:'',
};
export let mongoServerConstVal;
export let mySqlConfig;
......@@ -29,8 +29,12 @@ export async function initConfig() {
if ( !getConf(port)) throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 port');
if ( !getConf(sockentPort)) throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 sockentPort');
if ( !getConf(rightView)) throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 rightView');
if ( !getConf(leftView)) throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 leftView');
if ( !getConf(mapView)) throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 mapView');
if ( !getConf(leftView) || !getConf(leftView[0].cloudResource) || !getConf(leftView[0].physicalResource) ) {
throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 leftView 或 physicalResource || cloudResource');
}
if ( !getConf(mapView) || !getConf(mapView[0].online ) || !getConf(mapView[0].broken ) || !getConf(mapView[0].token ) ) {
throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 mapView 或 online || broken || token');
}
//左屏
appConfig.cloudResource = leftView[0].cloudResource[0];
......@@ -40,6 +44,8 @@ export async function initConfig() {
let broken = mapView[0].broken[0];
let token = mapView[0].token[0];
appConfig.mapPort = mapView[0].mapPort[0] + "&online=" + online + "&broken=" + broken + "&token=" + token || appConfig.mapPort;
//右屏接口
appConfig.rightView = rightView;
}
console.log("config init success");
......
import moment = require("moment")
import { ERRORENUM } from "../../config/errorEnum";
import { BizError } from "../../util/bizError";
import { ERRORENUM, SYSTEMERRORENUM } from "../../config/errorEnum";
import { appConfig } from "../../config/serverConfig";
import { BizError, SysError } from "../../util/bizError";
import { get } from "../../util/request";
// {key:"2021.01", count:"31km", autoCount:"45km"}, {key:"2021.02", count:"42km", autoCount:"75km"}, {key:"2020.02", count:"42km", autoCount:"75km"}, {key:"2022.08", count:"42km", autoCount:"75km"}
let 月里程数据:any = [];//格式 [{key:"日期 格式是 2021.1", count:"测试里程", autoCount:"功能测试里程"}]
let 企业日里程数据 = {}; //格式 {"企业名称":{count:"测试里程", autoCount:"功能测试里程"} }
let 月里程数据:any = [];//20个月的数据 格式 [{key:"日期 格式是 2021.01", count:"测试里程", autoCount:"功能测试里程"}]
let 企业日里程数据 = {}; //缓存截至这个月1日前的数据 格式 {"企业名称":{count:"测试里程", autoCount:"功能测试里程"} }
let 总测试时长;
let 企业时长数据;
let 月时长数据;
......@@ -12,19 +13,29 @@ let lastMonths = "";
//月度测试数据库源数据接口
export async function getTestAnalysis() {
//在月里程数据集合中 从后往前拿20个月份的数据,动态的拿本月的数据 拼接好返回 不要改变源数据
let monthMileage = [];
let testMileage = []; //测试里程
let functionTestMileage = []; //功能测试里程
let leng = 月里程数据.length;
for (let i = 1; i <= 20; i++) {
let {key, count, autoCount} = 月里程数据[leng-i];
testMileage.push({key:key, value:count});
functionTestMileage.push({key:key, value:autoCount});
}
let months = moment().format('YYYY.MM');
let startTime = moment().format("YYMM") + "01";
let endTime = moment().format("YYMM") + "31";
let endTime = moment().format('YYMMDD');
let 企业月前里程数据 = JSON.parse(JSON.stringify(企业日里程数据));
let testList = await getInterfaceData(startTime, endTime, 1);
if(!testList) throw new BizError(ERRORENUM.未找到数据, "月度测试里程");
let testCount = 0;
testList.forEach(info => {
let {timeDay, enterprise, totalMileage} = info;
if (!企业月前里程数据[enterprise]) 企业月前里程数据[enterprise] = {count:0, autoCount:0};
企业月前里程数据[enterprise].count += totalMileage;
testCount += parseInt(totalMileage);
});
......@@ -33,28 +44,11 @@ export async function getTestAnalysis() {
let functionCount = 0;
functionList.forEach(info => {
let {timeDay, enterprise, autoMileage} = info;
if (!企业月前里程数据[enterprise]) 企业月前里程数据[enterprise] = {count:0, autoCount:0};
企业月前里程数据[enterprise].count += autoMileage;
functionCount += parseInt(autoMileage);
});
testMileage.push({key:months, value:testCount});
functionTestMileage.push({key:months, value:functionCount});
let {newDateArr, whereDateArr} = getPreMonthDay(20);
for (let i = 0; i < newDateArr.length; i++) {
let months = newDateArr[i];
月里程数据.forEach(item => {
let {key, count, autoCount} = item;
if (months == key) {
testMileage.push({key, value:count});
functionTestMileage.push({key, value:autoCount});
}
})
}
return {testMileage, functionTestMileage};
}
//企业测试数据库源数据接口
export async function getEnterpriseTest() {
let testMileageEnterprise = [];
let functionTestMileageEnterprise = [];
for(let key in 企业日里程数据) {
......@@ -64,21 +58,22 @@ export async function getEnterpriseTest() {
functionTestMileageEnterprise.push({key, value: autoCount});
}
return {testMileageEnterprise, functionTestMileageEnterprise};
testMileage.push({key:months, value:testCount});
functionTestMileage.push({key:months, value:functionCount});
return {testMileage, functionTestMileage, testMileageEnterprise, functionTestMileageEnterprise};
}
//测试牌照分布
export async function getTestLicense() {
let index = 18;
let 测试牌照分布;
let 测试牌照分布 = [];
let 测试牌照分布data = {};
let result:any = await get(interfaceUrl, {index});
if (result && result.success) {
let requestParam = { index:18 };
let result:any = await get(appConfig.rightView, requestParam);
if (result && result.success && result.result[0] && result.result[0].result ) {
测试牌照分布 = result.result[0].result;
} else {
//报错
console.log();
测试牌照分布 = [];
throw new SysError(SYSTEMERRORENUM.获取第三方接口数据失败, appConfig.rightView, JSON.stringify(requestParam));
}
测试牌照分布.forEach( item => {
......@@ -96,26 +91,25 @@ export async function getTestLicense() {
* disengagement 脱离次数
*/
export async function getDetachmentRatio() {
let st = moment().format("YYMM") + "01";
let et = moment().format("YYMM") + "31";
let index = 14;
let result:any = await get(interfaceUrl, {st, et, index});
let requestParam = { st:moment().format("YYMM") + "01", et:moment().format("YYMMDD"), index:14};
let result:any = await get(appConfig.rightView, requestParam);
let list = [];
if (result && result.success) {
result = result.result;
list = result.result;
} else {
//报错
console.log();
result = [];
throw new SysError(SYSTEMERRORENUM.获取第三方接口数据失败, appConfig.rightView, JSON.stringify(requestParam) );
}
console.log(result);
}
//初始化测试时长分布
export async function getTestDurationDistribution() {
let index = 19;
let et = "";
let 时长数据:any = await get(interfaceUrl, {index, et});
let 时长数据:any = await get(appConfig.rightView, {index, et});
if (时长数据 && 时长数据.success) {
总测试时长 = 时长数据.result[0].result; //[{durationTotal: 测试时长, autoDurationTotal:测试总时长}]
企业时长数据 = 时长数据.result[1].result; //[{durationTotal: 测试时长, autoDurationTotal:测试总时长, time: 日期, enterprise: 企业}]
......@@ -141,7 +135,7 @@ export async function getCsgkBasicData() {
let 功能测试总时长 = 0;
let index = 18;
let 测试牌照分布result:any = await get(interfaceUrl, {index});
let 测试牌照分布result:any = await get(appConfig.rightView, {index});
let 测试牌照分布;
if (测试牌照分布result && 测试牌照分布result.success) {
测试牌照分布 = 测试牌照分布result.result[0].result;
......@@ -155,7 +149,7 @@ export async function getCsgkBasicData() {
功能测试总时长 = parseInt(item.autoDurationTotal);
})
let 企业日里程result:any = await get(interfaceUrl, {st:"", et:"", index:1});
let 企业日里程result:any = await get(appConfig.rightView, {st:"", et:"", index:1});
let 企业日里程;
if (企业日里程result && 企业日里程result.success) {
企业日里程 = 企业日里程result.result[0].result;
......@@ -164,7 +158,7 @@ export async function getCsgkBasicData() {
测试总里程 += parseInt(item.totalMileage);
})
let 企业日驾驶里程result:any = await get(interfaceUrl, {st:"", et:"", index:2});
let 企业日驾驶里程result:any = await get(appConfig.rightView, {st:"", et:"", index:2});
let 企业日驾驶里程;
if (企业日驾驶里程result && 企业日驾驶里程result.success) {
企业日驾驶里程 = 企业日驾驶里程result.result[0].result;
......@@ -343,7 +337,7 @@ export async function initData() {
async function historyData() {
let lastEt = "";
for (let i = 1; i <= 21; i++) {
for (let i = 20; i > 0; i--) {
let st = moment().subtract(i, 'months').format('YYMM') + '01';
let key = moment().subtract(i, 'months').format('YYYY.MM');
let et = moment().subtract(i, 'months').endOf('month').format('YYMMDD');
......@@ -400,31 +394,13 @@ async function historyData() {
}
//获取数据
const interfaceUrl = 'http://10.51.50.136:8090/sql/execute';
async function getInterfaceData(st, et, index) {
let result:any = await get(interfaceUrl, {st, et, index});
const interfaceUrl = appConfig.rightView;
let body = {st, et, index};
let result:any = await get(interfaceUrl, body);
if (result && result.success) {
return result.result[0].result;
} else {
//报错
return [];
}
}
/**
* 获取几个月前的日期
* @param monthNum 月数
* @returns
*/
function getPreMonthDay(monthNum) {
let whereDateArr = [];
let newDateArr = [];
for (let i = 1; i <= monthNum; i++) {
let whereDate = moment().subtract(i, "months").format("YYMM");
whereDateArr.push(whereDate);
let newDate = moment().subtract(i, "months").format("YYYY.MM");
newDateArr.push(newDate);
throw new SysError(SYSTEMERRORENUM.获取第三方接口数据失败, interfaceUrl, JSON.stringify(body) );
}
return {newDateArr, whereDateArr};
}
\ No newline at end of file
......@@ -9,7 +9,7 @@ export function get(url:string, query?, headers?) {
if (headers) paramater.headers = headers;
request.get(paramater, function (err, r, body) {
if (err) return reject(err);
if (r && r.statusCode != 200) return reject(new Error('httpError:'+r.statusCode))
if (r && r.statusCode != 200) return reject(new Error('httpError:'+r.statusCode));
resolve(body);
});
})
......
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