增加图标信息

This commit is contained in:
lin
2025-10-28 16:26:15 +08:00
parent 08206ca824
commit d76d0483e3
9 changed files with 133 additions and 22 deletions

View File

@@ -1,9 +1,13 @@
package com.genersoft.iot.vmp.service;
import com.genersoft.iot.vmp.vmanager.bean.MapConfig;
import com.genersoft.iot.vmp.vmanager.bean.MapModelIcon;
import java.util.List;
public interface IMapService {
List<MapConfig> getConfig();
List<MapModelIcon> getModelList();
}

View File

@@ -0,0 +1,26 @@
package com.genersoft.iot.vmp.vmanager.bean;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class MapModelIcon {
@Schema(description = "名称")
private String name;
@Schema(description = "别名")
private String alias;
@Schema(description = "路径")
private String path;
public static MapModelIcon getInstance(String name, String alias, String path) {
MapModelIcon mapModelIcon = new MapModelIcon();
mapModelIcon.setAlias(alias);
mapModelIcon.setName(name);
mapModelIcon.setPath(path);
return mapModelIcon;
}
}

View File

@@ -371,4 +371,14 @@ public class ServerController {
}
return mapService.getConfig();
}
@GetMapping(value = "/map/model-icon/list")
@ResponseBody
@Operation(summary = "获取地图配置图标", security = @SecurityRequirement(name = JwtUtils.HEADER))
public List<MapModelIcon> getMapModelIconList() {
if (mapService == null) {
return Collections.emptyList();
}
return mapService.getModelList();
}
}

View File

@@ -62,7 +62,7 @@ public class SignAuthenticationFilter extends OncePerRequestFilter {
log.info("[SY-接口验签] 缺少关键参数sign/appKey/accessToken/timestamp, 请求地址: {} ", requestURI);
response.setStatus(Response.OK);
PrintWriter out = response.getWriter();
out.println(getErrorResult(6017, "缺少关键参数"));
out.println(getErrorResult(1, "参数非法"));
out.close();
return;
}
@@ -70,7 +70,7 @@ public class SignAuthenticationFilter extends OncePerRequestFilter {
log.info("[SY-接口验签] appKey {} 对应的 secret 不存在, 请求地址: {} ", appKey, requestURI);
response.setStatus(Response.OK);
PrintWriter out = response.getWriter();
out.println(getErrorResult(6017, "缺少关键参数"));
out.println(getErrorResult(1, "参数非法"));
out.close();
return;
}
@@ -108,7 +108,7 @@ public class SignAuthenticationFilter extends OncePerRequestFilter {
log.info("[SY-接口验签] 失败,加密前内容: {}, 请求地址: {} ", beforeSign, requestURI);
response.setStatus(Response.OK);
PrintWriter out = response.getWriter();
out.println(getErrorResult(6017, "接口鉴权失败"));
out.println(getErrorResult(2, "签名错误"));
out.close();
return;
}
@@ -119,7 +119,7 @@ public class SignAuthenticationFilter extends OncePerRequestFilter {
log.info("[SY-接口验签] 时间戳已经过期, 请求时间戳:{} 当前时间: {}, 过期时间: {}, 请求地址: {} ", timestamp, currentTimeMillis, timestamp + SyTokenManager.INSTANCE.expires * 60 * 1000, requestURI);
response.setStatus(Response.OK);
PrintWriter out = response.getWriter();
out.println(getErrorResult(6016, "接口过期"));
out.println(getErrorResult(3, "接口过期"));
out.close();
return;
}
@@ -136,7 +136,7 @@ public class SignAuthenticationFilter extends OncePerRequestFilter {
log.info("[SY-接口验签] accessToken解密失败, 请求地址: {} ", requestURI);
response.setStatus(Response.OK);
PrintWriter out = response.getWriter();
out.println(getErrorResult(6017, "接口鉴权失败"));
out.println(getErrorResult(2, "签名错误"));
out.close();
return;
}
@@ -146,7 +146,7 @@ public class SignAuthenticationFilter extends OncePerRequestFilter {
log.info("[SY-接口验签] accessToken 已经过期, 请求地址: {} ", requestURI);
response.setStatus(Response.OK);
PrintWriter out = response.getWriter();
out.println(getErrorResult(6018, "Token已过期"));
out.println(getErrorResult(4, "token已过期或错误"));
out.close();
return;
}
@@ -156,7 +156,7 @@ public class SignAuthenticationFilter extends OncePerRequestFilter {
response.setStatus(Response.OK);
if (!response.isCommitted()) {
PrintWriter out = response.getWriter();
out.println(getErrorResult(6017, "接口鉴权异常"));
out.println(getErrorResult(2, "签名错误"));
out.close();
}
return;

View File

@@ -353,7 +353,7 @@ public class CameraChannelService implements CommandLineRunner {
// 读取redis 图标信息
/*
{
"brand": "三永",
"brand": "WVP",
"createdTime": 1715845840000,
"displayInSelect": true,
"id": 12,
@@ -553,21 +553,21 @@ public class CameraChannelService implements CommandLineRunner {
// 参数坐标系列转换
if (geoCoordSys != null) {
if (geoCoordSys.equalsIgnoreCase("GCJ02")) {
Double[] minPosition = Coordtransform.WGS84ToGCJ02(minLongitude, minLatitude);
Double[] minPosition = Coordtransform.GCJ02ToWGS84(minLongitude, minLatitude);
minLongitude = minPosition[0];
minLatitude = minPosition[1];
Double[] maxPosition = Coordtransform.WGS84ToGCJ02(maxLongitude, maxLatitude);
Double[] maxPosition = Coordtransform.GCJ02ToWGS84(maxLongitude, maxLatitude);
maxLongitude = maxPosition[0];
maxLatitude = maxPosition[1];
}else if (geoCoordSys.equalsIgnoreCase("BD09")) {
Double[] gcj02MinPosition = Coordtransform.WGS84ToGCJ02(minLongitude, minLatitude);
Double[] minPosition = Coordtransform.GCJ02ToBD09(gcj02MinPosition[0], gcj02MinPosition[1]);
Double[] gcj02MinPosition = Coordtransform.BD09ToGCJ02(minLongitude, minLatitude);
Double[] minPosition = Coordtransform.GCJ02ToWGS84(gcj02MinPosition[0], gcj02MinPosition[1]);
minLongitude = minPosition[0];
minLatitude = minPosition[1];
Double[] gcj02MaxPosition = Coordtransform.WGS84ToGCJ02(maxLongitude, maxLatitude);
Double[] maxPosition = Coordtransform.GCJ02ToBD09(gcj02MaxPosition[0], gcj02MaxPosition[1]);
Double[] gcj02MaxPosition = Coordtransform.BD09ToGCJ02(maxLongitude, maxLatitude);
Double[] maxPosition = Coordtransform.GCJ02ToWGS84(gcj02MaxPosition[0], gcj02MaxPosition[1]);
maxLongitude = maxPosition[0];
maxLatitude = maxPosition[1];
}
@@ -588,13 +588,13 @@ public class CameraChannelService implements CommandLineRunner {
// 参数坐标系列转换
if (geoCoordSys != null) {
if (geoCoordSys.equalsIgnoreCase("GCJ02")) {
Double[] position = Coordtransform.WGS84ToGCJ02(centerLongitude, centerLatitude);
Double[] position = Coordtransform.GCJ02ToWGS84(centerLongitude, centerLatitude);
centerLongitude = position[0];
centerLatitude = position[1];
}else if (geoCoordSys.equalsIgnoreCase("BD09")) {
Double[] gcj02Position = Coordtransform.WGS84ToGCJ02(centerLongitude, centerLatitude);
Double[] position = Coordtransform.GCJ02ToBD09(gcj02Position[0], gcj02Position[1]);
Double[] gcj02Position = Coordtransform.BD09ToGCJ02(centerLongitude, centerLatitude);
Double[] position = Coordtransform.GCJ02ToWGS84(gcj02Position[0], gcj02Position[1]);
centerLongitude = position[0];
centerLatitude = position[1];
}
@@ -616,12 +616,12 @@ public class CameraChannelService implements CommandLineRunner {
if (geoCoordSys != null) {
for (Point point : pointList) {
if (geoCoordSys.equalsIgnoreCase("GCJ02")) {
Double[] position = Coordtransform.WGS84ToGCJ02(point.getLng(), point.getLat());
Double[] position = Coordtransform.GCJ02ToWGS84(point.getLng(), point.getLat());
point.setLng(position[0]);
point.setLat(position[1]);
}else if (geoCoordSys.equalsIgnoreCase("BD09")) {
Double[] gcj02Position = Coordtransform.WGS84ToGCJ02(point.getLng(), point.getLat());
Double[] position = Coordtransform.GCJ02ToBD09(gcj02Position[0], gcj02Position[1]);
Double[] gcj02Position = Coordtransform.BD09ToGCJ02(point.getLng(), point.getLat());
Double[] position = Coordtransform.GCJ02ToWGS84(gcj02Position[0], gcj02Position[1]);
point.setLng(position[0]);
point.setLat(position[1]);
}

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.genersoft.iot.vmp.service.IMapService;
import com.genersoft.iot.vmp.vmanager.bean.MapConfig;
import com.genersoft.iot.vmp.vmanager.bean.MapModelIcon;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -76,4 +77,33 @@ public class SyServiceImpl implements IMapService {
return mapConfig;
}
@Override
public List<MapModelIcon> getModelList() {
// 读取redis 图标信息
/*
{
"brand": "WVP",
"createdTime": 1715845840000,
"displayInSelect": true,
"id": 12,
"imagesPath": "images/lt132",
"machineName": "图传对讲单兵",
"machineType": "LT132"
},
*/
List<MapModelIcon> mapModelIconList = new ArrayList<>();
JSONArray jsonArray = (JSONArray) redisTemplate.opsForValue().get("machineInfo");
if (jsonArray != null && !jsonArray.isEmpty()) {
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String machineType = jsonObject.getString("machineType");
String machineName = jsonObject.getString("machineName");
String imagesPath = jsonObject.getString("imagesPath");
mapModelIconList.add(MapModelIcon.getInstance(machineType, machineName, imagesPath));
}
}
return mapModelIconList;
}
}

View File

@@ -121,4 +121,10 @@ export function getMapConfig() {
url: `/api/server/map/config`
})
}
export function getModelList() {
return request({
method: 'get',
url: `/api/server/map/model-icon/list`
})
}

View File

@@ -2,7 +2,7 @@ import {
checkMediaServer,
checkMediaServerRecord, deleteMediaServer, getMapConfig, getMediaInfo,
getMediaServer,
getMediaServerList, getMediaServerLoad,
getMediaServerList, getMediaServerLoad, getModelList,
getOnlineMediaServerList, getResourceInfo, getSystemConfig, getSystemInfo, info, saveMediaServer
} from '@/api/server'
@@ -146,6 +146,16 @@ const actions = {
reject(error)
})
})
},
getModelList({ commit }) {
return new Promise((resolve, reject) => {
getModelList().then(response => {
const { data } = response
resolve(data)
}).catch(error => {
reject(error)
})
})
}
}

View File

@@ -16,7 +16,17 @@
<el-input v-model="form.gbManufacturer" placeholder="请输入设备厂商" />
</el-form-item>
<el-form-item label="设备型号">
<el-input v-model="form.gbModel" placeholder="请输入设备型号" />
<el-autocomplete
style="width: 100%;"
v-model="form.gbModel"
value-key="name"
:fetch-suggestions="queryModel"
placeholder="请输入内容"
>
<template slot-scope="{ item }">
<span class="addr">{{ item.name }}{{ item.alias }}</span>
</template>
</el-autocomplete>
</el-form-item>
<el-form-item label="行政区域">
@@ -247,9 +257,17 @@ export default {
data() {
return {
loading: false,
modelList: [],
form: {}
}
},
mounted() {
this.$store.dispatch('server/getModelList')
.then((data) => {
console.log(data)
this.modelList = data
})
},
created() {
// 获取完整信息
if (this.id) {
@@ -263,6 +281,13 @@ export default {
}
},
methods: {
queryModel(queryString, callback) {
let modelList = this.modelList
var results = queryString ? modelList.filter(((state) => {
return (state.alias.toLowerCase().indexOf(queryString.toLowerCase()) === 0 || state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0)
})) : modelList
callback(results)
},
onSubmit: function() {
this.loading = true
if (this.form.gbDownloadSpeedArray) {