Merge branch 'main' into dev_20260130_RemoveRedis

This commit is contained in:
longguancheng 2026-02-03 14:39:01 +08:00
commit 77e6de4c8b
15 changed files with 197 additions and 86 deletions

View File

@ -30,7 +30,7 @@ public class SarWsAsyncService {
* @param datName
* @param fileData
*/
@Async("commonThreadPool")
// @Async("commonThreadPool")
public void saveImageDat(Object dirName, String datName, byte[] fileData) {
String imageSrcPath = sysFileTypeService.getAbsolutePath(FileTypeEnum.SAR_IMAGE_LOW_SRC, dirName, datName);
FileUtil.createDir(imageSrcPath);
@ -48,7 +48,7 @@ public class SarWsAsyncService {
* @param image 图像像素
* @param release 是否释放参数 image 资源
*/
@Async("commonThreadPool")
// @Async("commonThreadPool")
public void write(String imagePath, Mat image, boolean release) {
OpenCVUtil.write(imagePath, image, true);
}

View File

@ -195,7 +195,7 @@ export default {
]
},
detailUav: {
visible: true,
visible: false,
id: 1,
baseInfo: {
url: require('@/assets/img/uav.png'),
@ -475,6 +475,12 @@ export default {
historyPictureList = []
}
}
},
'detailUav.visible': {
handler: function (nv) {
this.$emit('sar-change', nv)
},
immediate: true,
}
},
created() {
@ -1110,6 +1116,8 @@ export default {
// 测试
// this.addUavToScene(item)
})
this.detailUav.id = data.length ? data[0].id : 1
this.detailUav.visible = data.length ? true : false
taskListResource = data
this.taskList.data = list
if (this.taskList.data.length) {
@ -1555,7 +1563,7 @@ export default {
}).then(res => {
stopTaskFly({ id: info.id }).then(res => {
if (res.data.code === 200) {
info.status = 2
// info.status = 2
this.getTaskList()
this.$message.success('任务已结束!')
this.removeTaskTarget(info.id)
@ -2736,8 +2744,7 @@ export default {
console.log('SAR波形', JSON.parse(info.body))
let data = JSON.parse(info.body)
console.log('id对比', this.detailUav.id, data.payloadId);
// && this.detailUav.id === data.payloadId
if (this.detailUav.visible) {
if (this.detailUav.visible && this.detailUav.id === data.jobId) {
let channel1False = []
let channel1Real = []
let channel2False = []
@ -2984,7 +2991,7 @@ export default {
this.taskList.data[findIndex].statusName = this.jobStatus[data.jobStatus + '']
taskListResource[findIndex].statusName = this.jobStatus[data.jobStatus + '']
}
if (data.jobStatus === 1) {
if (data.jobStatus === 1 && this.detailUav.id === data.jobId) {
this.updateUavInfo(data.sarStatus)
}
this.taskList.data[findIndex].status = data.jobStatus
@ -3043,7 +3050,11 @@ export default {
}
},
//#endregion
// 打开状态和波形信息展示
openSarStatusDetail(data) {
this.detailUav.id = data.id
this.detailUav.visible = true
},
//#region
handleUavDetailCollapse(actives) {

View File

@ -405,6 +405,14 @@
height: calc(100vh - 620px);
}
.detail-uav-wrap {
width: 430px;
position: fixed;
bottom: 5px;
right: 10px;
height: calc(100vh - 60px);
}
.detail-info {
width: 460px;
//position: fixed;
@ -1174,8 +1182,8 @@
.detail-uav {
width: 460px;
position: fixed;
width: 410px;
// position: fixed;
top: 60px;
//bottom: 5px;
right: 10px;
@ -1185,6 +1193,10 @@
transition: 0.2s ease-in-out;
z-index: 2;
::v-deep .dt-card__header {
display: none;
}
.detail-uav__content {
padding-right: 8px;
box-sizing: border-box;

View File

@ -73,10 +73,11 @@
v-for="(item, index) in taskList.data"
:key="item.id"
class="task-item"
@click="openSarStatusDetail(item)"
>
<div class="left-part">
<!-- <div class="task-progress-bar" :style="'width: ' + item.uavCompletion +'%;'"></div>-->
<div class="execute-info" @click="openTaskLineDetail(item)">
<div class="execute-info">
<span
class="execute-type-icon"
:class="'execute-state-' + item.status"
@ -340,74 +341,75 @@
</right-slide>
<!-- 详情 -->
<dt-card
:class="{
'detail-uav': true,
'detail-uav__large': isIconModeLarge,
}"
icon="iconfont icon-target"
title="详细信息"
v-if="detailUav.visible"
:visible.sync="detailUav.visible"
:scroll="true"
:showClose="true"
:showDivider="false"
>
<div class="detail-uav__content">
<div class="other-info">
<el-collapse
v-model="detailUav.activeNames"
@change="handleUavDetailCollapse"
>
<el-collapse-item title="状态信息" name="3">
<el-tabs v-model="detailUav.activeTab">
<el-tab-pane label="DEV" name="DEV">
<div
class="uav-span-wrap"
v-for="item in detailUav.statusInfo.dev"
:key="item.name"
>
<span>{{ item.name }}</span>
<span>{{ item.value }}{{ item.unit }}</span>
</div>
</el-tab-pane>
<el-tab-pane label="GPS" name="GPS">
<div
class="uav-span-wrap"
v-for="item in detailUav.statusInfo.gps"
:key="item.name"
>
<span>{{ item.name }}</span>
<span>{{ item.value }}{{ item.unit }}</span>
</div>
</el-tab-pane>
<el-tab-pane label="IMU" name="IMU">
<div
class="uav-span-wrap"
v-for="item in detailUav.statusInfo.imu"
:key="item.name"
>
<span>{{ item.name }}</span>
<span>{{ item.value }}{{ item.unit }}</span>
</div>
</el-tab-pane>
</el-tabs>
</el-collapse-item>
<el-collapse-item title="波形信息" name="4">
<div class="wave-chart">
<dt-multiple-analysis
ref="uavDetailChart"
:data="detailUav.chart.data"
:legend="detailUav.chart.legend"
:tooltip="detailUav.chart.tooltip"
:title="detailUav.chart.title"
:grid="detailUav.chart.grid"
:xAxis="detailUav.chart.xAxis"
:yAxis="detailUav.chart.yAxis"
></dt-multiple-analysis>
</div>
</el-collapse-item>
<el-collapse-item title="回传图像" name="5">
<right-slide class="detail-uav-wrap" v-if="detailUav.visible">
<dt-card
:class="{
'detail-uav': true,
'detail-uav__large': isIconModeLarge,
}"
icon="iconfont icon-target"
title="详细信息"
v-if="detailUav.visible"
:visible.sync="detailUav.visible"
:scroll="true"
:showClose="true"
:showDivider="false"
>
<div class="detail-uav__content">
<div class="other-info">
<el-collapse
v-model="detailUav.activeNames"
@change="handleUavDetailCollapse"
>
<el-collapse-item title="状态信息" name="3">
<el-tabs v-model="detailUav.activeTab">
<el-tab-pane label="DEV" name="DEV">
<div
class="uav-span-wrap"
v-for="item in detailUav.statusInfo.dev"
:key="item.name"
>
<span>{{ item.name }}</span>
<span>{{ item.value }}{{ item.unit }}</span>
</div>
</el-tab-pane>
<el-tab-pane label="GPS" name="GPS">
<div
class="uav-span-wrap"
v-for="item in detailUav.statusInfo.gps"
:key="item.name"
>
<span>{{ item.name }}</span>
<span>{{ item.value }}{{ item.unit }}</span>
</div>
</el-tab-pane>
<el-tab-pane label="IMU" name="IMU">
<div
class="uav-span-wrap"
v-for="item in detailUav.statusInfo.imu"
:key="item.name"
>
<span>{{ item.name }}</span>
<span>{{ item.value }}{{ item.unit }}</span>
</div>
</el-tab-pane>
</el-tabs>
</el-collapse-item>
<el-collapse-item title="波形信息" name="4">
<div class="wave-chart">
<dt-multiple-analysis
ref="uavDetailChart"
:data="detailUav.chart.data"
:legend="detailUav.chart.legend"
:tooltip="detailUav.chart.tooltip"
:title="detailUav.chart.title"
:grid="detailUav.chart.grid"
:xAxis="detailUav.chart.xAxis"
:yAxis="detailUav.chart.yAxis"
></dt-multiple-analysis>
</div>
</el-collapse-item>
<!-- <el-collapse-item title="回传图像" name="5">
<div class="back-image">
<div
v-for="item in detailInfo.pictureList"
@ -442,11 +444,12 @@
</div>
</div>
</div>
</el-collapse-item>
</el-collapse>
</el-collapse-item> -->
</el-collapse>
</div>
</div>
</div>
</dt-card>
</dt-card>
</right-slide>
<dt-dialog
:title="taskLineDetail.title"

View File

@ -443,7 +443,8 @@ export default {
visible: false,
data: [],
boatTypeLegend: []
}
},
moveInfoBar: false
}
},
computed: {
@ -1522,7 +1523,9 @@ export default {
}
},
//#endregion
sarChange(val) {
this.moveInfoBar = val
},
//#region ais船
getAisData() {

View File

@ -66,6 +66,7 @@
width: 300px;
box-sizing: border-box;
padding: 5px 10px;
.message-title {
height: 30px;
display: flex;
@ -74,16 +75,19 @@
box-sizing: border-box;
border-bottom: 1px solid $--color-black-3;
margin-bottom: 4px;
>span {
font-size: 14px;
color: $--color-text-1;
}
>i {
font-size: 16px;
color: $--color-text-1;
cursor: pointer;
}
}
.message-body {
//height: 50px;
@ -95,10 +99,12 @@
padding: 0 5px;
position: relative;
width: 100%;
.el-textarea {
flex: 1;
margin: 0 10px;
}
>i {
font-size: 14px;
color: $--color-text-1;
@ -106,12 +112,14 @@
margin-top: 10px;
}
}
.message-send {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
margin-top: 10px;
.el-button {
margin: 0 10px;
}
@ -124,3 +132,7 @@
width: 100%;
}
}
.info-bar-show {
right: 430px;
}

View File

@ -37,6 +37,7 @@
ref="twinSituation"
v-if="menus.situation.active"
:visible.sync="menus.situation.active"
@sar-change="sarChange"
></twin-situation>
<task-manage
v-if="menus.taskManage.active"
@ -58,8 +59,11 @@
v-if="menus.userList.active"
:visible.sync="menus.userList.active"
></user-list>
<info-bar v-if="menus.situation.active || menus.taskManage.active" />
<info-bar
:class="{ 'info-bar-show': moveInfoBar }"
v-if="menus.situation.active || menus.taskManage.active"
/>
<!-- 遮罩 -->
<!-- <dt-loading :visible="loadingCount > 0"></dt-loading> -->
</div>

View File

@ -0,0 +1,52 @@
#ifndef __CHSRTPROC_H__
#define __CHSRTPROC_H__
#pragma once
#include "stdafx.h"
#include <conio.h>
// 输出内存地址点航迹的结构体
struct MTI_pDot {
unsigned __int16 tar_no;
unsigned __int16 tar_rg;
__int16 tar_az;
__int16 tar_vr;
__int16 tar_high;
unsigned __int16 tar_ampl;
unsigned __int32 tar_logn;
unsigned __int32 tar_lati;
};
struct MTI_pTrk {
unsigned __int16 trk_no;
__int16 trk_high;
__int32 trk_logn;
__int32 trk_lati;
__int16 trk_vel;
__int16 trk_heading;
unsigned __int16 trk_ampl;
__int16 nc;
};
/*
dataAr GMTI格式V3.02 1cpi处理的点迹信息和辅助数据,8192BYTES
1dataRes GMTI格式V3.022dataRes全部为0则没有航迹8192
outpath outpath\\GMTIDotInfo_lzx.dat outpath\\GMTITrkInfo_lzx.dat"
*/
__declspec(dllexport) void MTIDotProc(unsigned char *dataAr, unsigned char *dataRes, char *outpath);
#endif

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,14 @@
############ Track Relate Modual Param ##############
nj_Rwin: 20
nj_Awin: 5
bomen_vmax: 20
bomen_vmin: 3
bomen_size: 50
miss_frame_tmp: 4
miss_frame_trust: 3
NoiseMatrixRg: 100
NoiseMatrixAz: 100
NoiseSpetrumPowerDensity: 1

Binary file not shown.