From 6764c7bfe10719b9c1188155c493082692e4a05e Mon Sep 17 00:00:00 2001 From: Bingkun Li Date: Sun, 8 Mar 2026 16:05:37 +0800 Subject: [PATCH 1/4] Remove adjusting brightness in backend --- .../main/java/com/zhangy/skyeye/publics/utils/ImageUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/publics/utils/ImageUtil.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/publics/utils/ImageUtil.java index 2374539..03b9f1c 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/publics/utils/ImageUtil.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/publics/utils/ImageUtil.java @@ -45,7 +45,7 @@ public class ImageUtil { int lightRate = rotateDTO.getLightRate(); if (lightRate != 0) { //OpenCVUtil.multiply(image, lightRate); - OpenCVUtil.enhanceContrast(image, lightRate, 0); + // OpenCVUtil.enhanceContrast(image, lightRate, 0); } return image; } From 460af8d011d3612b72a46732efc595e96e7661f1 Mon Sep 17 00:00:00 2001 From: Bingkun Li Date: Mon, 9 Mar 2026 10:47:07 +0800 Subject: [PATCH 2/4] Remove join image func, push each image to frontend directly --- .../sar/service/impl/SarImageServiceImpl.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/service/impl/SarImageServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/service/impl/SarImageServiceImpl.java index b08d0ea..d13b8d1 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/service/impl/SarImageServiceImpl.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/service/impl/SarImageServiceImpl.java @@ -67,7 +67,8 @@ public class SarImageServiceImpl implements ISarImageService { * @param frameNo 当前帧号 * @return 返回非空的图像信息,其字段 imageNo 一定有值 */ - private JmImage getBaseImage(Long airlineId, int singleWidth, int frameNo) {IMG_MAX_WITH=1; + private JmImage getBaseImage(Long airlineId, int singleWidth, int frameNo) { + // IMG_MAX_WITH=1; List imageList = imageService.selectLowByAirline(airlineId); String cacheKey = "jmImgJoin-" + airlineId; JmImage base = null; @@ -80,17 +81,18 @@ public class SarImageServiceImpl implements ISarImageService { } // 情况2:如果最后一张还能拼图,则直接返回继续拼 JmImage last = imageList.get(imageList.size() - 1); - Integer startFrameNo = (Integer) redisUtil.hget(cacheKey, CACHE_FIELD_START_FRAME_NO); - int currWidth = startFrameNo == null ? 0 : singleWidth * (frameNo - startFrameNo + 1); // 图宽(当前图+基准图) - int surplusNum = (IMG_MAX_WITH - currWidth) / singleWidth; // 还可以拼图片数 - Integer baseNo = (Integer) redisUtil.hget("jmImgJoin-" + airlineId, CACHE_FIELD_CURR_FRAME_NO); - if (startFrameNo == null || currWidth < IMG_MAX_WITH || - baseNo == null || (frameNo - baseNo + 1 <= surplusNum)) { // 当前图+填充 不能超过允许拼接数 - log.info("当前宽度:" + currWidth + " < " + IMG_MAX_WITH + " 可以继续拼接"); - return last; - } +// Integer startFrameNo = (Integer) redisUtil.hget(cacheKey, CACHE_FIELD_START_FRAME_NO); +// int currWidth = startFrameNo == null ? 0 : singleWidth * (frameNo - startFrameNo + 1); // 图宽(当前图+基准图) +// int surplusNum = (IMG_MAX_WITH - currWidth) / singleWidth; // 还可以拼图片数 +// log.info("surplusNum: = " + surplusNum); +// Integer baseNo = (Integer) redisUtil.hget("jmImgJoin-" + airlineId, CACHE_FIELD_CURR_FRAME_NO); +// if (startFrameNo == null || currWidth < IMG_MAX_WITH || +// baseNo == null || (frameNo - baseNo + 1 <= surplusNum)) { // 当前图+填充 不能超过允许拼接数 +// log.info("当前宽度:" + currWidth + " < " + IMG_MAX_WITH + " 可以继续拼接"); +// return last; +// } // 情况3:已经拼接到最大数量,或者当前图+填充数量超过允许拼接数量,创建新图像文件 - log.info("当前宽度:" + currWidth + " > " + IMG_MAX_WITH + " 重新拼接,当前帧号" + frameNo + "作为首帧"); +// log.info("当前宽度:" + currWidth + " > " + IMG_MAX_WITH + " 重新拼接,当前帧号" + frameNo + "作为首帧"); base = new JmImage(); redisUtil.hset(cacheKey, CACHE_FIELD_START_FRAME_NO, frameNo, CACHE_EXPIRE_SECOND); base.setImageNo(last.getImageNo() + 1); From f032dab83c8484d8049b322fe9bd9c22cbc40025 Mon Sep 17 00:00:00 2001 From: Bingkun Li Date: Mon, 9 Mar 2026 14:46:24 +0800 Subject: [PATCH 3/4] Change kmz name as jobname_uavId --- .../com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java index 7a53212..507700d 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java @@ -392,7 +392,7 @@ public class JmJobServiceImpl implements JmJobService { String[] kmzDirPath = fileTypeService.getDirectoryPath(FileTypeEnum.UAV_KMZ, jobExecId); for (JmJobUav juav : job.getUavList()) { Long uavId = juav.getUavId(); - generateKmz(kmzDirPath[0], uavId, juav); + generateKmz(kmzDirPath[0], uavId, juav, job.getName()); log.info("生成kmz:" + kmzDirPath[0]); } } @@ -430,11 +430,11 @@ public class JmJobServiceImpl implements JmJobService { /** * 生成kmz文件 */ - private void generateKmz(String dirPath, Long uavId, JmJobUav uav) { + private void generateKmz(String dirPath, Long uavId, JmJobUav uav, String jobName) { String kmlPath = dirPath + "/" + uavId; // 临时目录 KmzGen.generateKmz(kmlPath, uav, 0, uav.getSar0().getHeadingDiff()); try { - ZipUtil.zip(kmlPath, dirPath + "/" + uavId + ".kmz", false); + ZipUtil.zip(kmlPath, dirPath + "/" + jobName + "_" + uavId + ".kmz", false); FileUtil.delete(kmlPath); } catch (IOException ex) { throw new ServiceException("生成zip文件出错:" + ex.getMessage()); From edd778353002389e6188c7275586cf5295081d5f Mon Sep 17 00:00:00 2001 From: Bingkun Li Date: Mon, 9 Mar 2026 15:49:31 +0800 Subject: [PATCH 4/4] Add logs in udp/websocket send/recv interfaces --- .../com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java | 1 + .../skyeye/jm/service/impl/JmJobStatusServiceImpl.java | 2 ++ .../com/zhangy/skyeye/sar/control/SarControlContext.java | 5 +++-- .../java/com/zhangy/skyeye/sar/listen/SarImageListener.java | 2 ++ .../java/com/zhangy/skyeye/sar/listen/SarStatusListener.java | 2 ++ .../java/com/zhangy/skyeye/sar/listen/SarWaveListener.java | 2 ++ .../zhangy/skyeye/sar/service/impl/SarBackWsServiceImpl.java | 3 +++ .../src/main/resources/logback-spring.xml | 5 +++-- 8 files changed, 18 insertions(+), 4 deletions(-) diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java index 507700d..fdb87a8 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java @@ -463,6 +463,7 @@ public class JmJobServiceImpl implements JmJobService { // 通知前端任务停止 JmJobStatusWsDTO wsVo = new JmJobStatusWsDTO(id, uav.getUavId()); wsVo.setJobStatus(ExecStatusEnum.OVER.getValue()); + log.debug("send status:\n{}", JSON.toJSONString(wsVo)); simpMessagingTemplate.convertAndSend(WebSocketKey.JM_JOB_STATUS, wsVo); }); // 删除缓存任务信息 diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobStatusServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobStatusServiceImpl.java index f66326b..12e9840 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobStatusServiceImpl.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobStatusServiceImpl.java @@ -1,5 +1,6 @@ package com.zhangy.skyeye.jm.service.impl; +import com.alibaba.fastjson2.JSON; import com.zhangy.skyeye.common.extend.exception.ServiceException; import com.zhangy.skyeye.common.extend.util.MessageUtils; import com.zhangy.skyeye.jm.dto.*; @@ -306,6 +307,7 @@ public class JmJobStatusServiceImpl implements JmJobStatusService { // 4.将更新后的状态推送到前端 wsVo.setSarStatus(curr); + log.debug("send status:\n{}", JSON.toJSONString(wsVo)); simpMessageingTemplate.convertAndSend(WebSocketKey.JM_JOB_STATUS, wsVo); } diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/control/SarControlContext.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/control/SarControlContext.java index 926e7e4..230a7fa 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/control/SarControlContext.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/control/SarControlContext.java @@ -1,5 +1,6 @@ package com.zhangy.skyeye.sar.control; +import com.alibaba.fastjson2.JSON; import com.zhangy.skyeye.common.extend.exception.ServiceException; import com.zhangy.skyeye.common.extend.util.ObjectUtil; import com.zhangy.skyeye.redis.utils.RedisUtil; @@ -108,8 +109,8 @@ public class SarControlContext { private void sendUdp(SarControlDTO control) { SarControlTypeEnum controlType = control.getControlType(); String ip = control.getIp(); - log.debug("开始发送雷达控制指令[" + controlType + "]----------------------"); - //System.out.println(control); + // log.debug("开始发送雷达控制指令[" + controlType + "]----------------------"); + log.debug("send control:\n{}", JSON.toJSONString(control)); try (DatagramSocket socket = new DatagramSocket()) { byte[] content = pack(control); socket.connect(new InetSocketAddress(ip, PORT)); diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarImageListener.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarImageListener.java index 9a7bbb0..7390246 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarImageListener.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarImageListener.java @@ -1,5 +1,6 @@ package com.zhangy.skyeye.sar.listen; +import com.alibaba.fastjson2.JSON; import com.zhangy.skyeye.sar.dto.SarImagePacketGroupDTO; import com.zhangy.skyeye.sar.dto.SarImagePacketDTO; import com.zhangy.skyeye.sar.task.CircularBufferQueue; @@ -67,6 +68,7 @@ public class SarImageListener extends SarAbstractListener { String ip = packet.getAddress().getHostAddress(); // 处理接收到的数据 SarImagePacketDTO backPackDTO = SarImagePacketDTO.parse(packet.getData(), packet.getLength()); + log.debug("recv image:\n{}", JSON.toJSONString(backPackDTO)); if (backPackDTO == null) { return; } diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarStatusListener.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarStatusListener.java index 0eb61f6..7d0c6f3 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarStatusListener.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarStatusListener.java @@ -1,5 +1,6 @@ package com.zhangy.skyeye.sar.listen; +import com.alibaba.fastjson2.JSON; import com.zhangy.skyeye.redis.utils.RedisUtil; import com.zhangy.skyeye.jm.dto.JmSarStatusDTO; import com.zhangy.skyeye.jm.service.JmJobStatusService; @@ -78,6 +79,7 @@ public class SarStatusListener extends SarAbstractListener { String ip = packet.getAddress().getHostAddress(); // 处理接收到的数据 SarStatusPackDTO packDTO = SarStatusPackDTO.parse(ip, packet.getData()); + log.debug("recv status:\n{}", JSON.toJSONString(packDTO)); if (packDTO == null) { if (running) log.warn("[" + packDTO.getPayloadIp() + "]状态包校验失败,已丢弃。错误包=" + diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarWaveListener.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarWaveListener.java index 4c21f85..9e239c2 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarWaveListener.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/listen/SarWaveListener.java @@ -1,5 +1,6 @@ package com.zhangy.skyeye.sar.listen; +import com.alibaba.fastjson2.JSON; import com.zhangy.skyeye.sar.dto.SarWavePackDTO; import com.zhangy.skyeye.sar.task.CircularBufferQueue; import com.zhangy.skyeye.sar.task.DiscardOldestPolicyWithLog; @@ -62,6 +63,7 @@ public class SarWaveListener extends SarAbstractListener { String ip = packet.getAddress().getHostAddress(); // 处理接收到的数据 SarWavePackDTO backPackDTO = SarWavePackDTO.parse(packet.getData()); + log.debug("recv wave:\n{}", JSON.toJSONString(backPackDTO)); if (backPackDTO == null) { return; } diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/service/impl/SarBackWsServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/service/impl/SarBackWsServiceImpl.java index 71e07b4..7858130 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/service/impl/SarBackWsServiceImpl.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/sar/service/impl/SarBackWsServiceImpl.java @@ -1,5 +1,6 @@ package com.zhangy.skyeye.sar.service.impl; +import com.alibaba.fastjson2.JSON; import com.zhangy.skyeye.jm.dto.JmAirlineStatusDTO; import com.zhangy.skyeye.jm.dto.JmUavStatusDTO; import com.zhangy.skyeye.jm.entity.JmImage; @@ -40,6 +41,7 @@ public class SarBackWsServiceImpl implements ISarBackWsService { @Override public void sendWave(String payloadIp, SarBackWaveFrameDTO frame, byte[] frameData) { JmSarWaveWsDTO wsVo = loadJobDetail(payloadIp, frame.getChannel(), frameData); + log.debug("send wave:\n{}", JSON.toJSONString(wsVo)); // 若载荷任务结束,sar仍然回传波形则 wsVo为空。此场景仅限sardemo,实际sar不会发生 if (wsVo != null) { simpMessageingTemplate.convertAndSend(WebSocketKey.SAR_BACK_WAVE, wsVo); @@ -48,6 +50,7 @@ public class SarBackWsServiceImpl implements ISarBackWsService { @Override public void sendImg(JmImage imageInfo) { + log.debug("send image:\n{}", JSON.toJSONString(imageInfo)); simpMessageingTemplate.convertAndSend(WebSocketKey.SAR_BACK_IMAGE, imageInfo); } diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/resources/logback-spring.xml b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/resources/logback-spring.xml index f90e88d..230e565 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/resources/logback-spring.xml +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/resources/logback-spring.xml @@ -12,6 +12,7 @@ converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> + @@ -30,7 +31,7 @@ UTF-8 - %date [%thread] %-5level [%logger{50}] %file:%line - %msg%n + %date [%thread] %-5level [%logger{50}] [%file:%line] - %msg%n @@ -44,7 +45,7 @@ UTF-8 - %date [%thread] %-5level [%logger{50}] %file:%line - %msg%n + %date [%thread] %-5level [%logger{50}] [%file:%line] - %msg%n ERROR