From d76d0483e376b17e4b0675a20a196875db7391de Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Tue, 28 Oct 2025 16:26:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9B=BE=E6=A0=87=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/service/IMapService.java | 4 +++ .../iot/vmp/vmanager/bean/MapModelIcon.java | 26 ++++++++++++++++ .../vmp/vmanager/server/ServerController.java | 10 +++++++ .../custom/conf/SignAuthenticationFilter.java | 14 ++++----- .../custom/service/CameraChannelService.java | 26 ++++++++-------- .../vmp/web/custom/service/SyServiceImpl.java | 30 +++++++++++++++++++ web/src/api/server.js | 6 ++++ web/src/store/modules/server.js | 12 +++++++- web/src/views/common/CommonChannelEdit.vue | 27 ++++++++++++++++- 9 files changed, 133 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/genersoft/iot/vmp/vmanager/bean/MapModelIcon.java diff --git a/src/main/java/com/genersoft/iot/vmp/service/IMapService.java b/src/main/java/com/genersoft/iot/vmp/service/IMapService.java index 3029ca3b9..bc80673d5 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/IMapService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IMapService.java @@ -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 getConfig(); + + List getModelList(); } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/MapModelIcon.java b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/MapModelIcon.java new file mode 100644 index 000000000..20838f595 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/MapModelIcon.java @@ -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; + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java index 375e0bb01..23615736c 100755 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java @@ -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 getMapModelIconList() { + if (mapService == null) { + return Collections.emptyList(); + } + return mapService.getModelList(); + } } diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/conf/SignAuthenticationFilter.java b/src/main/java/com/genersoft/iot/vmp/web/custom/conf/SignAuthenticationFilter.java index b751687f1..b5c4bc06f 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/conf/SignAuthenticationFilter.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/conf/SignAuthenticationFilter.java @@ -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; diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java index 931914d74..3e6cd541e 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java @@ -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]); } diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/service/SyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/web/custom/service/SyServiceImpl.java index 9c2c994ee..095076849 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/service/SyServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/service/SyServiceImpl.java @@ -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 getModelList() { + // 读取redis 图标信息 + /* + { + "brand": "WVP", + "createdTime": 1715845840000, + "displayInSelect": true, + "id": 12, + "imagesPath": "images/lt132", + "machineName": "图传对讲单兵", + "machineType": "LT132" + }, + */ + List 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; + } } diff --git a/web/src/api/server.js b/web/src/api/server.js index ab36a452f..1bb4dc904 100644 --- a/web/src/api/server.js +++ b/web/src/api/server.js @@ -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` + }) +} diff --git a/web/src/store/modules/server.js b/web/src/store/modules/server.js index 7f02f5166..2628ea2d5 100644 --- a/web/src/store/modules/server.js +++ b/web/src/store/modules/server.js @@ -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) + }) + }) } } diff --git a/web/src/views/common/CommonChannelEdit.vue b/web/src/views/common/CommonChannelEdit.vue index a653ecd52..752ca6bc7 100644 --- a/web/src/views/common/CommonChannelEdit.vue +++ b/web/src/views/common/CommonChannelEdit.vue @@ -16,7 +16,17 @@ - + + + @@ -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) {