This commit is contained in:
wxs 2026-03-05 17:25:28 +08:00
commit 46d604dd56
9 changed files with 133 additions and 26 deletions

View File

@ -1,5 +1,6 @@
package com.zhangy.skyeye.device.controller;
import com.zhangy.skyeye.common.extend.util.MessageUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -77,6 +78,6 @@ public class UavController {
@PostMapping("/remove")
public Object delete(@RequestBody Long... id) {
uavService.delete(id);
return "操作成功";
return MessageUtils.message("device.uav.remove.success");
}
}

View File

@ -3,6 +3,7 @@ package com.zhangy.skyeye.jm.controller;
import cn.hutool.core.bean.BeanUtil;
import com.zhangy.skyeye.common.extend.anno.IgnoreAuth;
import com.zhangy.skyeye.common.extend.exception.ServiceException;
import com.zhangy.skyeye.common.extend.util.MessageUtils;
import com.zhangy.skyeye.jm.dto.JmImageKtyDTO;
import com.zhangy.skyeye.jm.dto.JmImagePageDTO;
import com.zhangy.skyeye.jm.dto.JmImageUpdDTO;
@ -70,7 +71,7 @@ public class JmImageController {
public Object selectList(@Valid @RequestBody JmImageUpdDTO param) {
JmImage e = BeanUtil.copyProperties(param, JmImage.class);
sarImageService.updateNotNull(e);
return "操作成功";
return MessageUtils.message("sar.image.update.success");
}
/**
@ -89,7 +90,7 @@ public class JmImageController {
TimeUnit.MINUTES
);
if (Boolean.FALSE.equals(locked)) {
throw ServiceException.noLog("正在上传其它图像,请稍后重试!");
throw ServiceException.noLog(MessageUtils.message("sar.image.add_highres.eagain"));
}
sarImageService.addHighImage(dto);
} finally {
@ -103,7 +104,7 @@ public class JmImageController {
requestId
);
}
return "操作完成";
return MessageUtils.message("sar.image.add_highres.success");
}
/**
@ -120,7 +121,7 @@ public class JmImageController {
@PostMapping("/remove")
public Object delete(@RequestBody Long... id) {
sarImageService.delete(id);
return "操作完成";
return MessageUtils.message("sar.image.remove.success");
}
// 空天院只查询sar低精度图

View File

@ -5,6 +5,7 @@ import com.zhangy.skyeye.common.extend.anno.IgnoreAuth;
import com.zhangy.skyeye.common.extend.enums.EnumUtil;
import com.zhangy.skyeye.common.extend.exception.ServiceException;
import com.zhangy.skyeye.common.extend.util.DateUtil;
import com.zhangy.skyeye.common.extend.util.MessageUtils;
import com.zhangy.skyeye.common.pojo.result.Result;
import com.zhangy.skyeye.jm.consts.JmJobModeEnum;
import com.zhangy.skyeye.jm.dto.JmJobDTO;
@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.Collections;
import java.util.Objects;
@Validated
@RestController
@ -114,7 +116,10 @@ public class JmJobController {
* 重飞
*/
@GetMapping("/retry")
public Object retry(@NotNull(message = "任务ID不能为空") Long id) {
public Object retry(Long id) {
if(Objects.isNull(id)) {
return MessageUtils.message("sar.job.retry.enullid");
}
JmJobDTO e = jobService.selectDetail(id);
clearId(e);
e.setName(DateUtil.getTimeStr(DateUtil.DF_2));
@ -135,12 +140,12 @@ public class JmJobController {
// 查询执行任务的无人机
JmJobDTO job = jobService.selectDetail(id);
if (job == null) {
throw ServiceException.noLog("找不到任务id=" + id);
throw ServiceException.noLog(MessageUtils.message("sar.job.start.enosuchjob", id));
} else if (EnumUtil.parseEx(ExecStatusEnum.class, job.getStatus()) == ExecStatusEnum.PROCESSING) {
throw ServiceException.noLog("任务状态为执行中,无法起飞");
throw ServiceException.noLog(MessageUtils.message("sar.job.start.einexecuting"));
}
jobService.start(job);
return "开始执行";
return MessageUtils.message("sar.job.start.success");
}
/**
@ -177,7 +182,7 @@ public class JmJobController {
@GetMapping("/exit")
public Object exit(@RequestParam Long id) {
jobService.exit(id);
return "操作成功";
return MessageUtils.message("sar.job.exit.success");
}
/**

View File

@ -1,6 +1,7 @@
package com.zhangy.skyeye.jm.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhangy.skyeye.common.extend.util.MessageUtils;
import com.zhangy.skyeye.jm.dto.JmJobDTO;
import com.zhangy.skyeye.jm.dto.JmJobPageDTO;
import com.zhangy.skyeye.jm.entity.JmImage;
@ -60,6 +61,6 @@ public class JmJobExecController {
@RequestMapping("/brightness")
public Object adjustBrightness(@Valid @RequestBody JmImage param) {
jobExecService.adjustBrightness(param);
return "成功调整亮度";
return MessageUtils.message("sar.job_exec.brightness.success");
}
}

View File

@ -1,6 +1,7 @@
package com.zhangy.skyeye.jm.service.impl;
import com.zhangy.skyeye.common.extend.exception.ServiceException;
import com.zhangy.skyeye.common.extend.util.MessageUtils;
import com.zhangy.skyeye.jm.dto.*;
import com.zhangy.skyeye.jm.entity.JmJobPayload;
import com.zhangy.skyeye.jm.entity.JmJobUav;
@ -9,9 +10,11 @@ import com.zhangy.skyeye.jm.event.JmJobStatusEvent;
import com.zhangy.skyeye.jm.event.JmPayloadStatusEvent;
import com.zhangy.skyeye.jm.service.JmJobStatusService;
import com.zhangy.skyeye.jm.service.JmStatusLogService;
import com.zhangy.skyeye.publics.consts.CacheKey;
import com.zhangy.skyeye.publics.consts.ExecStatusEnum;
import com.zhangy.skyeye.publics.consts.WebSocketKey;
import com.zhangy.skyeye.publics.utils.CoordUtil;
import com.zhangy.skyeye.redis.utils.RedisUtil;
import com.zhangy.skyeye.sar.listen.SarImageUdpProcessor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -42,6 +45,9 @@ public class JmJobStatusServiceImpl implements JmJobStatusService {
@Autowired
private SarImageUdpProcessor imageProcessService;
@Autowired
private RedisUtil redisUtil;
// @Autowired
// private ISmpSubscriptService subscriptService;
@ -173,11 +179,16 @@ public class JmJobStatusServiceImpl implements JmJobStatusService {
// 校验新任务中的无人机和载荷是否冲突
for (JmJobUav newUav : newJobUavs) {
if (runningUavIds.contains(newUav.getUavId())) {
throw ServiceException.warnLog("无人机正在任务中,无法执行新任务");
throw ServiceException.warnLog(MessageUtils.message("sar.control.turnon.euavinexec"));
}
for (JmJobPayload payload : newUav.getPayloadList()) {
// 校验雷达连接状态
if (!redisUtil.hasKey(CacheKey.getSarConnect(payload.getIp()))) {
throw ServiceException.warnLog(MessageUtils.message("device.sar.offline", payload.getPayloadName()));
}
if (runningPayloadIds.contains(payload.getPayloadId())) {
throw ServiceException.warnLog("载荷正在任务中,无法执行新任务");
throw ServiceException.warnLog(MessageUtils.message("sar.control.turnon.esarinexec"));
}
}
}

View File

@ -6,6 +6,7 @@ import com.zhangy.skyeye.common.extend.anno.IgnoreAuth;
import com.zhangy.skyeye.common.extend.anno.OperationLog;
import com.zhangy.skyeye.common.extend.dto.PageDTO;
import com.zhangy.skyeye.common.extend.exception.ServiceException;
import com.zhangy.skyeye.common.extend.util.MessageUtils;
import com.zhangy.skyeye.common.extend.util.ObjectUtil;
import com.zhangy.skyeye.common.pojo.result.Result;
import com.zhangy.skyeye.common.utils.JwtUtil;
@ -53,14 +54,14 @@ public class SysUserController {
public Result login(@RequestBody RegisterDTO registerDTO) {
SysUser user = sysUserService.selectByAccount(registerDTO.getUsername(), registerDTO.getPassword().toLowerCase());
if (user == null) {
throw ServiceException.noLog("用户名或密码错误!");
throw ServiceException.noLog(MessageUtils.message("user.login.error"));
}
UserDTO userDTO = BeanUtil.copyProperties(user, UserDTO.class);
String key = JSONUtil.toJsonStr(userDTO);
String accessToken = JwtUtil.sign(key, user.getPassword());
redisUtil.set(userDTO.getTokenKey(), accessToken, TOKEN_EXPIRE);
userDTO.setToken(accessToken);
return Result.successData("登录成功", userDTO);
return Result.successData(MessageUtils.message("user.login.success"), userDTO);
}
/**
@ -72,15 +73,15 @@ public class SysUserController {
public Object updatePwd(@Valid SysUserPwdDTO dto) {
List<SysUser> list = sysUserService.selectById(dto.getUserId());
if (ObjectUtil.isEmpty(list)) {
throw ServiceException.noLog("用户名或密码错误!");
throw ServiceException.noLog(MessageUtils.message("user.updpwd.error"));
}
SysUser user = list.get(0);
if (user.getPassword().equals(dto.getOldPwd())) {
throw ServiceException.noLog("旧密码错误!");
throw ServiceException.noLog(MessageUtils.message("user.updpwd.nochg"));
}
user.setPassword(dto.getNewPwd());
sysUserService.update(user);
return "修改成功";
return MessageUtils.message("user.updpwd.success");
}
/**

View File

@ -1,5 +1,6 @@
package com.zhangy.skyeye.sar.controller;
import com.zhangy.skyeye.common.extend.util.MessageUtils;
import com.zhangy.skyeye.common.pojo.result.Result;
import com.zhangy.skyeye.sar.service.ISarControlService;
import com.zhangy.skyeye.sar.dto.SarControlParamDTO;
@ -31,7 +32,7 @@ public class SarControlController {
public Result send(@RequestBody SarControlParamDTO param) {
param.checkOrSetData();
controlInfoService.sendUdp(param);
return Result.successData("发送成功");
return Result.successData(MessageUtils.message("sar.control.send.success"));
}
/**
@ -52,16 +53,16 @@ public class SarControlController {
// 检查是否成功获取
if (ipVal == null || ipVal.isEmpty()) {
// 根据你的业务逻辑返回错误例如
return Result.error("请求体中缺少 'payloadId' 或其值为空");
return Result.error(MessageUtils.message("sar.control.turnon.enoip"));
}
} catch (Exception e) {
// 处理JSON解析异常
// 记录日志 e.g., log.error("Failed to parse turnOn payload", e);
return Result.error("请求体JSON格式错误");
return Result.error(MessageUtils.message("sar.control.turnon.eexcept"));
}
// 3. 调用服务层
controlInfoService.turnOn(ipVal);
return Result.successData("发送成功");
return Result.successData(MessageUtils.message("sar.control.turnon.success"));
}
/**
@ -82,16 +83,16 @@ public class SarControlController {
// 检查是否成功获取
if (ipVal == null || ipVal.isEmpty()) {
// 根据你的业务逻辑返回错误例如
return Result.error("请求体中缺少 'payloadId' 或其值为空");
return Result.error(MessageUtils.message("sar.control.endall.enoip"));
}
} catch (Exception e) {
// 处理JSON解析异常
// 记录日志 e.g., log.error("Failed to parse turnOn payload", e);
return Result.error("请求体JSON格式错误");
return Result.error(MessageUtils.message("sar.control.endall.eexcept"));
}
// 3. 调用服务层
controlInfoService.endAll(ipVal);
return Result.successData("发送成功");
return Result.successData(MessageUtils.message("sar.control.endall.success"));
}
}

View File

@ -1,3 +1,47 @@
# Default messages
# device management
device.uav.remove.success=Remove success
device.uav.remove.fail=Remove failed
device.uav.offline=UAV [{0}] disconnected
device.sar.offline=SAR [{0}] disconnected
# SAR图片管理
sar.image.remove.success=Remove success
sar.image.remove.fail=Remove failed
sar.image.add_highres.success=Operation success
sar.image.add_highres.eagain=Other uploading in progress, try later
sar.image.add_highres.fail=Operation failed
sar.image.update.success=Update success
sar.image.update.fail=Update failed
# SAR Job管理
sar.job.update.success=Operation success
sar.job.update.failed=Operation failed
sar.job.retry.enullid=Job ID can't be blank
sar.job.start.success=Start executing
sar.job.start.enosuchjob=Find no job, id={0}
sar.job.start.einexecuting=Job in executing, operation failed
sar.job.exit.success=Operation success
sar.job.exit.failed=Operation failed
sar.job_exec.brightness.success=Operation success
sar.job_exec.brightness.failed=Operation failed
# SAR控制
sar.control.send.success=Send success
sar.control.send.failed=Send failed
sar.control.turnon.success=Send success
sar.control.turnon.enoip=Failed to extract payload IP address
sar.control.turnon.eexcept=Failed to parse request body
sar.control.turnon.euavinexec=Configured UAV in middle of executing
sar.control.turnon.esarinexec=Configured SAR in middle of executing
sar.control.endall.success=Send success
sar.control.endall.enoip=Failed to extract payload IP address
sar.control.endall.eexcept=Failed to parse request body
# 用户管理
user.login.success=Login success
user.login.error=Login error
user.updpwd.success=Change password success
user.updpwd.error=User name or password error!
user.updpwd.nochg=Old password error!

View File

@ -1,3 +1,45 @@
# 中文消息
# 设备管理
device.uav.remove.success=操作成功
device.uav.remove.fail=操作失败
device.uav.offline=无人机[{0}]未连接
device.sar.offline=雷达[{0}]未连接
# SAR图片管理
sar.image.remove.success=操作完成
sar.image.remove.fail=操作失败
sar.image.add_highres.success=操作完成
sar.image.add_highres.eagain=正在上传其它图像,请稍后重试!
sar.image.add_highres.fail=操作失败
sar.image.update.success=操作成功
sar.image.update.fail=操作失败
# SAR Job管理
sar.job.update.success=操作成功
sar.job.update.failed=操作失败
sar.job.retry.enullid=任务ID不能为空
sar.job.start.success=开始执行
sar.job.start.enosuchjob=找不到任务id={0}
sar.job.start.einexecuting=任务状态为执行中,无法起飞
sar.job.exit.success=操作成功
sar.job.exit.failed=操作失败
# SAR控制
sar.control.send.success=发送成功
sar.control.send.failed=发送失败
sar.control.turnon.success=发送成功
sar.control.turnon.enoip=请求体中缺少 'payloadId' 或其值为空
sar.control.turnon.eexcept=请求体JSON格式错误
sar.control.turnon.euavinexec=无人机正在任务中,无法执行新任务
sar.control.turnon.esarinexec=载荷正在任务中,无法执行新任务
sar.control.endall.success=发送成功
sar.control.endall.enoip=请求体中缺少 'payloadId' 或其值为空
sar.control.endall.eexcept=请求体JSON格式错误
# 用户管理
user.login.success=登录成功
user.login.error=登录失败
user.login.error=用户名或密码错误!
user.updpwd.success=修改成功
user.updpwd.error=用户名或密码错误!
user.updpwd.nochg=旧密码错误!