Commit f757148c by lixinming

no message

parent caef2e79
......@@ -5,6 +5,8 @@
<leftView>
<cloudResource>http://10.51.50.140:8080/api/static/PrivateCloudUsageStatics</cloudResource>
<physicalResource>http://10.51.50.140:8080/api/v1/PrivateCloudCurrentUsages</physicalResource>
<!-- <cloudResource>http://192.168.0.27:8080/api/static/PrivateCloudUsageStatics</cloudResource>
<physicalResource>http://192.168.0.27:8080/api/v1/PrivateCloudCurrentUsages</physicalResource> -->
</leftView>
<mapView>
<mapPort>http://10.51.48.213/nlink/v2/getAllDevicesInfo?prjid=0255e1f7515348cc87c7bb2cc6341fer</mapPort>
......@@ -12,4 +14,7 @@
<broken>3</broken>
<token>09a98bc555474e058ef90b6cc6e23638</token>
</mapView>
<imagePath>
192.168.0.100
</imagePath>
</config>
import { getChartOutData, getKeyValueNumberOutData, getListOutData } from "../../cal/out";
import { separateDataAndUint } from "../../cal/privateTools";
import { getImageIp, port } from "../../config/serverConfig";
import { getHardware } from "../../data/interface/hardwareData";
import { getCsgkData, getDetachmentRatio, getTestAnalysis, getTestTotalTime } from "../../data/interface/interfaceService";
import { getMap } from "../../data/interface/mapInterfaceData";
......@@ -10,15 +11,15 @@ import { getOnlieCarCount } from "../../data/interface/wsData";
export async function getYZY(req, res) {
let ret:any = {};
// let {计算云资源, 使用率, 物理资源} = await getHardware();
let {计算云资源, 使用率, 物理资源} = await getHardware();
let 计算云资源 = {"cpu":"3568核", "内存":"4000G", "本地磁盘":"1999G", "云磁盘总量":"848484G"};
// let 计算云资源 = {"cpu":"3568核", "内存":"4000G", "本地磁盘":"1999G", "云磁盘总量":"848484G"};
ret["api1"] = getKeyValueNumberOutData("计算云资源", 计算云资源 );
let 使用率 = {"CPU":"63.9%", "内存":"30.4%", "本地磁盘":"29.6%", "云磁盘cds ssd池":"23%", "云磁盘cds sata池":"73%", "对象存储":"73.83%"};
// let 使用率 = {"CPU":"63.9%", "内存":"30.4%", "本地磁盘":"29.6%", "云磁盘cds ssd池":"23%", "云磁盘cds sata池":"73%", "对象存储":"73.83%"};
ret["api2"] = getKeyValueNumberOutData("计算云资源使用率", 使用率 );
let 物理资源 = {"物理机":"100台", "网络设备":"34台", "安全设备":"4台", "机柜":"16台"};
// let 物理资源 = {"物理机":"100台", "网络设备":"34台", "安全设备":"4台", "机柜":"16台"};
ret["api3"] = getKeyValueNumberOutData("物理资源", 物理资源 );
res.send(ret);
......@@ -34,7 +35,7 @@ export async function getCSGK(req, res) {
result.forEach((info, index) => {
let {key, value} = info;
let {dataNum, dataUnit} = separateDataAndUint(value);
基础数据Info.push({key, value:dataNum, unit:dataUnit, icon:`http://192.168.0.105:30001/csgk/${index+1}.png`});
基础数据Info.push({key, value:dataNum, unit:dataUnit, icon:`http://${getImageIp()}:${port}/csgk/${index+1}.png`});
});
ret["api1"] = ({title:"基础数据", dataList: 基础数据Info});
......
import { initWSData } from "../../data/interface/wsData";
import { Socket } from "../../net/socket_server";
//连接池
let connectionPool = {};
//数据池
let dataQueue = [];
//广播消息
export async function sendMsg(data) {
dataQueue.push(data);
for (let key in connectionPool) {
let result = {code:200, success:true, data}
connectionPool[key].send(JSON.stringify(result));
try {
connectionPool[key].send(JSON.stringify(result));
} catch(err) {
console.log("广播消息失败:", err);
}
}
}
......@@ -25,10 +33,42 @@ export async function initSocketServer(port) {
console.log("连接成功 => userId:", ip);
connectionPool[ip] = ws;
ws.on('message', function(data) {
//回应心跳包
if (data == 'i am heart') ws.send(JSON.stringify({success:true, code:199}));
});
ws.on('close', function (data){
if ( ws._socket && ws._socket._peername && ws._socket._peername.address ) {
let userId = ws._socket._peername.address;
console.log("close", userId, data);
delete connectionPool[userId];
}
});
console.log('发送初始化车辆:', dataQueue.length ,'辆');
dataQueue.forEach(info => {
ws.send(JSON.stringify({code:200, success:true, data:info}));
});
});
console.log('socket server listen on port:', port);
});
}
//测试服务
let testQueue;
export async function initSocketServertest(port) {
Socket.createServer(port, function (wss) {
wss.on('connection', function(ws, req) {
let ip = analysisUserUrl(req);
console.log("连接成功 => userId:", ip);
testQueue = ws;
ws.on('message', function(data) {
//回应心跳包
console.log(data);
console.log(ws);
if (data == 'i am heart') ws.send('{success:true, code:199}');
});
......@@ -44,4 +84,35 @@ export async function initSocketServer(port) {
});
console.log('socket server listen on port:', port);
});
}
export function callTestServer(num) {
let latitude = 31.177747;
let longitude = 121.611986;
let testData = {
"accLat":0.08,
"accLong":1.542,
"acceleration":0,//加速度
"altitude":-3276,//海拔高度
"canRecvTime":1660285379691,//接收数据时间
"direction":0,//方向
"drivemode":0,//驾驶模式
"latitude":31.177747,
"longitude":121.611986,
"mileage":12,
"positiontime":0,
"vehicleid":"",
"velocity":13,
"vin":"LSJE24090MS029920"
}
for (let i= 1; i <= 100; i++ ) {
let addData = JSON.parse(JSON.stringify(testData))
addData.vehicleid = ''+i;
addData.latitude = latitude + (num*i * (1 / 100000));
addData.longitude = longitude + (num * i * (1 / 100000));
console.log(num+"-"+i+' log:'+addData.longitude+ ' lat: '+addData.latitude);
testQueue.send(JSON.stringify(addData));
}
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ import * as fs from "fs";
import { BizError, SysError } from "../util/bizError";
import { analysisXml } from "../util/myXML";
import { SYSTEMERRORENUM } from "./errorEnum";
const os = require('os');
export let port;
export let socketPort;
......@@ -17,6 +18,8 @@ export let appConfig = {
export let mongoServerConstVal;
export let mySqlConfig;
let imagePathConfig = "";
const ConfigName = "serverConfig.xml";
export async function initConfig() {
try {
......@@ -25,7 +28,7 @@ export async function initConfig() {
let configInfo:any = await analysisXml(configStr);
if (!configInfo || !configInfo.config) console.log("xml中无配置加载");
else {
let {portConfig, socketPortConfig, rightView, leftView, mapView} = configInfo.config;
let {portConfig, socketPortConfig, rightView, leftView, mapView, imagePath} = configInfo.config;
if ( !getConf(portConfig)) throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 port');
if ( !getConf(socketPortConfig)) throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 sockentPort');
if ( !getConf(rightView)) throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 rightView');
......@@ -36,6 +39,8 @@ export async function initConfig() {
throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 mapView 或 online || broken || token');
}
if ( !getConf(imagePath) ) throw new SysError(SYSTEMERRORENUM.初始化配置失败, 'serverConfig.xml中 缺少 imagePath');
port = portConfig[0];
socketPort = socketPortConfig[0];
//左屏
......@@ -48,6 +53,8 @@ export async function initConfig() {
appConfig.mapPort = mapView[0].mapPort[0] + "&online=" + online + "&broken=" + broken + "&token=" + token || appConfig.mapPort;
//右屏接口
appConfig.rightView = rightView[0];
//图片地址
imagePathConfig = imagePath[0];
}
console.log("config init success");
......@@ -57,6 +64,11 @@ export async function initConfig() {
}
}
//获取内网地址
export function getImageIp() {
return imagePathConfig;
}
function getConf(conf, index = 0) {
if (!conf || !conf[index]) return false;
......
import moment = require("moment")
import { ERRORENUM, SYSTEMERRORENUM } from "../../config/errorEnum";
import { appConfig } from "../../config/serverConfig";
import { appConfig, getImageIp, port } 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"}
......@@ -79,8 +79,8 @@ async function getTestLicense() {
测试牌照分布.forEach( item => {
let {enterprise, cnt} = item;
let imgItem = `http://192.168.0.105:30001/img/${enterprise}.png`;
测试牌照分布data[imgItem] = cnt;
let imgItem = `http://${getImageIp()}:${port}/img/${enterprise}.png`;
测试牌照分布data[imgItem] = cnt + "辆";
测试牌照数 += cnt;
})
......@@ -153,9 +153,11 @@ export async function getTestDurationDistribution() {
export async function getCsgkData() {
let {总测试时长} = await getTestDurationDistribution();
let {总测试时长, 月时长数据} = await getTestDurationDistribution();
let {测试牌照分布data, 测试牌照数, 测试企业数} = await getTestLicense();
月时长数据.sort((a, b) => { return parseInt(b.time) - parseInt(a.time) });
let 测试总里程 = 0;
let 功能测试总里程 = 0;
for (let key in 企业日里程数据) {
......@@ -168,15 +170,19 @@ export async function getCsgkData() {
let nowDate = moment().format('DD');
let lastDate = moment().subtract(1, 'days').format('DD');
let thisMonthsTestTimeData = 月时长数据[0] || {autoDurationTotal:0, durationTotal:0};
let avgAutoTime = Math.ceil( (thisMonthsTestTimeData.autoDurationTotal/new Date().getDate() )*10)/10;
let testTime = Math.ceil( (thisMonthsTestTimeData.durationTotal/new Date().getDate() ) *10 )/10;
let 今日数据 = {"在线车辆数": ""}
let 今日测试 = { "里程": 0, "时长": ""};
let 今日测试 = { "里程": "0Km", "时长": testTime+'h'};
let 今日功能测试 = { "里程": 0, "时长": ""}
let 今日功能测试 = { "里程": "0Km", "时长": avgAutoTime+'h'};
if (nowDate == '01') {
//一号拿昨日数据跨月份
今日测试.里程 = monthsLastData.count;
今日功能测试.里程 = monthsLastData.autoCount;
今日测试.里程 = monthsLastData.count+"Km";
今日功能测试.里程 = monthsLastData.autoCount+"Km";
}
let testList = await getInterfaceData(startTime, endTime, 1);
......@@ -186,7 +192,7 @@ export async function getCsgkData() {
let intTotalMileage = parseInt(totalMileage);
测试总里程 += intTotalMileage;
if (nowDate != '01' && timeDay == lastDate) {
今日测试.里程 = intTotalMileage;
今日测试.里程 = intTotalMileage+"Km";
}
});
......@@ -198,10 +204,15 @@ export async function getCsgkData() {
功能测试总里程 += intAutoMileage;
if (nowDate != '01' && timeDay == lastDate) {
今日功能测试.里程 = intAutoMileage;
今日功能测试.里程 = intAutoMileage+"Km";
}
});
if (今日测试.里程 == "0Km") {
今日测试.时长="0h";
今日功能测试.时长 = "0h";
}
let result = [
{key:"测试企业数", value: 测试企业数 + "家"},
{key:"企业牌照数", value: 测试牌照数 + "个"},
......
import * as WebSocket from "ws"
import { sendMsg } from "../../biz/jgfwnl/wsData";
import { logConsole, logHandle } from "../../util/log";
//连接锁
let lockReconnect = false;
......@@ -63,6 +64,7 @@ let heart = {
//ws客户端
async function createSocket() {
let path = "ws://10.51.50.136:8090/ws/v1";
// let path = "ws://192.168.0.105:9797"
let ws = new WebSocket(path, {perMessageDeflate: false});
......@@ -79,7 +81,7 @@ async function createSocket() {
ws.onmessage = (msg) => {
//接收数据
heart.start(ws);
stats(msg);
stats(msg.data);
}
ws.onerror = (error) => {
......@@ -98,11 +100,27 @@ export async function initWSData() {
//在线车辆
let distinctMap = {};//{id:1}
export function stats(data) {
let {vehicleid, latitude, longitude} = data;
distinctMap[vehicleid] = 1;
let carData = {};//
sendMsg({lng:longitude, lat:latitude, vehicleid});
export function stats(data) {
let dataType = typeof data;
if (dataType == 'object') {
console.log(data);
} else if (dataType == "string") {
try{
let dataJson = JSON.parse(data);
let {vehicleid, latitude, longitude} = dataJson;
distinctMap[vehicleid] = 1;
sendMsg({lng:longitude||0.0, lat:latitude||0.0, vehicleid});
} catch(err) {
console.log(data);
logHandle("ws 返回数据不是json"+ data)
//todo 加日志
}
}
//其他格式数据抛弃
}
export function getOnlieCarCount() {
......
import { initSocketServer } from "./biz/jgfwnl/wsData";
import { callTestServer, initSocketServer, initSocketServertest } from "./biz/jgfwnl/wsData";
import { initConfig, port, socketPort } from "./config/serverConfig";
import { initData } from "./data/interface/interfaceService";
import { getCsgkData, initData } from "./data/interface/interfaceService";
import { initWSData } from "./data/interface/wsData";
import { httpServer } from "./net/http_server";
async function lanuch() {
console.log("测试服务启动成功 9797");
await initConfig();//初始化配置解析
httpServer.createServer(port);
await initSocketServer(socketPort);
await initData();
await initWSData();
console.log('This indicates that the server is started successfully.');
}
//test 模拟数据
async function test() {
let i = 1;
setInterval(function () {
callTestServer(i);
i++;
if (i == 30) i = 1;
}, 200)
}
lanuch();
\ 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