From 061f08164b826e7ddf3d862030bdad0996f317e3 Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Thu, 27 Mar 2025 17:05:21 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BA=BA=E5=B7=A5=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interceptor/ApiAccessLogInterceptor.java | 8 ++--- .../system/api/robot/RequestProcessor.java | 5 +-- .../system/api/robot/RobotStatusApiImpl.java | 2 +- .../robot/RobotTaskDetailController.java | 8 +++++ .../robot/vo/RobotTaskDetailPageReqVO.java | 2 +- .../admin/robot/vo/RobotTaskDetailRespVO.java | 4 +-- .../robot/vo/RobotTaskDetailSaveReqVO.java | 2 +- .../log/RobotTaskDetailActionLogDO.java | 6 ++++ .../dataobject/robot/RobotTaskDetailDO.java | 2 +- .../enums/robot/task/RobotTaskStageEnum.java | 4 ++- .../config/CommonConfigServiceImpl.java | 17 +++++++--- .../DeviceInformationServiceImpl.java | 6 ++-- .../robot/RobotInformationService.java | 8 +++++ .../robot/RobotInformationServiceImpl.java | 10 +++--- .../service/robot/RobotTaskDetailService.java | 7 ++++ .../robot/RobotTaskDetailServiceImpl.java | 33 +++++++++++++++++++ 16 files changed, 99 insertions(+), 25 deletions(-) diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java index 3629fc404..5c401ddeb 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java @@ -45,12 +45,12 @@ public class ApiAccessLogInterceptor implements HandlerInterceptor { if (!SpringUtils.isProd()) { Map queryString = ServletUtils.getParamMap(request); String requestBody = ServletUtils.isJsonRequest(request) ? ServletUtils.getBody(request) : null; - if (CollUtil.isEmpty(queryString) && StrUtil.isEmpty(requestBody)) { + /*if (CollUtil.isEmpty(queryString) && StrUtil.isEmpty(requestBody)) { log.info("[preHandle][开始请求 URL({}) 无参数]", request.getRequestURI()); } else { log.info("[preHandle][开始请求 URL({}) 参数({})]", request.getRequestURI(), StrUtil.blankToDefault(requestBody, queryString.toString())); - } + }*/ // 计时 StopWatch stopWatch = new StopWatch(); stopWatch.start(); @@ -67,8 +67,8 @@ public class ApiAccessLogInterceptor implements HandlerInterceptor { if (!SpringUtils.isProd()) { StopWatch stopWatch = (StopWatch) request.getAttribute(ATTRIBUTE_STOP_WATCH); stopWatch.stop(); - log.info("[afterCompletion][完成请求 URL({}) 耗时({} ms)]", - request.getRequestURI(), stopWatch.getTotalTimeMillis()); + /* log.info("[afterCompletion][完成请求 URL({}) 耗时({} ms)]", + request.getRequestURI(), stopWatch.getTotalTimeMillis());*/ } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RequestProcessor.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RequestProcessor.java index 843a9e20b..e17d2db56 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RequestProcessor.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RequestProcessor.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.api.robot; import cn.hutool.core.map.MapUtil; import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi; +import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -24,7 +25,7 @@ public class RequestProcessor { public RequestProcessor() { // 每秒执行一次 - 处理并发送数据 - 避免数据丢失 - scheduler.scheduleAtFixedRate(this::processAndSend, 300, 300, TimeUnit.MILLISECONDS); + scheduler.scheduleAtFixedRate(this::processAndSend, 1000, 1000, TimeUnit.MILLISECONDS); } public void handleRequest(String map, String mac, String data) { @@ -45,7 +46,7 @@ public class RequestProcessor { private void sendData(String map, Map data) { // -- 发送给对应的websocket // System.out.println("key:" + map + "发送数据:" + data); - log.info("key:" + map + "发送数据:" + data); + log.info("key:" + map + "发送数据:" + JSON.toJSONString(data)); webSocketSenderApi.sendObject(map, "map_push", data); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java index 357be6164..280b915ad 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java @@ -62,7 +62,7 @@ public class RobotStatusApiImpl implements RobotStatusApi { * @return */ @Override - @SystemRateLimiter(time = 1, count = 150, keyArg = "robotStatusUpdate",message = "机器人上报点位超过限流") + @SystemRateLimiter(time = 1, count = 1, keyArg = "robotStatusUpdate",message = "机器人上报点位超过限流") public void robotStatusUpdate(RobotPoseStatusDTO robotStatusDataDTO) { updateRobotPosed(robotStatusDataDTO); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskDetailController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskDetailController.java index 18e87f064..df3c683ca 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskDetailController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskDetailController.java @@ -92,4 +92,12 @@ public class RobotTaskDetailController { BeanUtils.toBean(list, RobotTaskDetailRespVO.class)); } + @PostMapping("/manuallyCompleted") + @Operation(summary = "人工完成") + @PreAuthorize("@ss.hasPermission('robot:task-detail:manuallyCompleted')") + public CommonResult manuallyCompleted(@RequestParam("id") Long id) { + taskDetailService.manuallyCompleted(id); + return success(true); + } + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailPageReqVO.java index 1de374568..929549fd3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailPageReqVO.java @@ -56,7 +56,7 @@ public class RobotTaskDetailPageReqVO extends PageParam { @Schema(description = "任务状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)", example = "1") private Integer taskStatus; - @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电)") + @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常)") private Long taskStage; @Schema(description = "开始时间") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailRespVO.java index 98b8b0849..ea26e8ff9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailRespVO.java @@ -62,8 +62,8 @@ public class RobotTaskDetailRespVO { @ExcelProperty("任务状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)") private Integer taskStatus; - @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电)") - @ExcelProperty("任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电)") + @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常)") + @ExcelProperty("任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常)") private Long taskStage; @Schema(description = "开始时间") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailSaveReqVO.java index a61f01d11..386727c32 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskDetailSaveReqVO.java @@ -62,7 +62,7 @@ public class RobotTaskDetailSaveReqVO { @Schema(description = "任务状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)", example = "1") private Integer taskStatus; - @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电)") + @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常)") private Long taskStage; @Schema(description = "开始时间") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/log/RobotTaskDetailActionLogDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/log/RobotTaskDetailActionLogDO.java index 1c4bab51c..af7595ec3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/log/RobotTaskDetailActionLogDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/log/RobotTaskDetailActionLogDO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.system.dal.dataobject.log; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import com.baomidou.mybatisplus.annotation.*; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @@ -53,4 +54,9 @@ public class RobotTaskDetailActionLogDO extends BaseDO { */ private Long taskDetailId; + /** + * 任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常) + */ + private Long taskStage; + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotTaskDetailDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotTaskDetailDO.java index f93ed4aa5..d04fe069e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotTaskDetailDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotTaskDetailDO.java @@ -96,7 +96,7 @@ public class RobotTaskDetailDO extends BaseDO { */ private Integer taskStatus; /** - * 任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电) + * 任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常) */ private Long taskStage; /** diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/RobotTaskStageEnum.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/RobotTaskStageEnum.java index 1566799df..ec385b837 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/RobotTaskStageEnum.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/RobotTaskStageEnum.java @@ -14,7 +14,9 @@ public enum RobotTaskStageEnum { DONE(5L,"结束"), MOVE(6L,"移动中"), CHARGEING(7L,"待执行正在充电"), - CLOSE(8L,"任务已取消"); + CLOSE(8L,"任务已取消"), + MANUALLY_COMPLETED(9L,"人工完成"), + EXCEPTION(10L,"异常"); /** * 类型 */ diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/CommonConfigServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/CommonConfigServiceImpl.java index f8bc93c30..1fb972fbf 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/CommonConfigServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/CommonConfigServiceImpl.java @@ -17,13 +17,19 @@ import cn.iocoder.yudao.module.system.enums.config.CommandConfigTypeEnum; import cn.iocoder.yudao.module.system.service.log.UserOperationLogService; import cn.iocoder.yudao.module.system.service.tool.ToolsService; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.lang.reflect.Type; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Map; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.CONFIG_NOT_EXISTS; @@ -99,17 +105,20 @@ public class CommonConfigServiceImpl implements CommonConfigService { String onceStartTime = s.format(formatter); String onceEndTime = e.format(formatter); - JSONObject jsonObject = new JSONObject(config.getConfigStr()); - jsonObject.put("onceStartTime", onceStartTime); - jsonObject.put("onceEndTime", onceEndTime); + Gson gson = new Gson(); + Type type = new TypeToken>(){}.getType(); + Map map = gson.fromJson(config.getConfigStr(), type); + map.put("onceStartTime", onceStartTime); + map.put("onceEndTime", onceEndTime); - String str = JSON.toJSONString(jsonObject); + String str = JSON.toJSONString(map); config.setConfigStr(str); } @Override + @Transactional(rollbackFor = Exception.class) public void updateConfig(CommonConfigSaveReqVO updateReqVO) { // 校验存在 validateConfigExists(updateReqVO.getId()); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationServiceImpl.java index b19d403c6..d6302f362 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationServiceImpl.java @@ -141,13 +141,13 @@ public class DeviceInformationServiceImpl extends ServiceImpl { * @param robotNo */ void doTaskContinue(String robotNo); + + /** + * + * @param id + * @param mac + * @param orderType + */ + void robotCloseTaskDetail(String id, String mac, String orderType); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java index 6ba2f07fb..a2de04f06 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java @@ -259,16 +259,15 @@ public class RobotInformationServiceImpl extends ServiceImpl Date: Thu, 27 Mar 2025 17:11:55 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apilog/core/interceptor/ApiAccessLogInterceptor.java | 8 ++++---- .../yudao/module/system/api/robot/RequestProcessor.java | 4 ++-- .../yudao/module/system/api/robot/RobotStatusApiImpl.java | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java index 5c401ddeb..3629fc404 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java @@ -45,12 +45,12 @@ public class ApiAccessLogInterceptor implements HandlerInterceptor { if (!SpringUtils.isProd()) { Map queryString = ServletUtils.getParamMap(request); String requestBody = ServletUtils.isJsonRequest(request) ? ServletUtils.getBody(request) : null; - /*if (CollUtil.isEmpty(queryString) && StrUtil.isEmpty(requestBody)) { + if (CollUtil.isEmpty(queryString) && StrUtil.isEmpty(requestBody)) { log.info("[preHandle][开始请求 URL({}) 无参数]", request.getRequestURI()); } else { log.info("[preHandle][开始请求 URL({}) 参数({})]", request.getRequestURI(), StrUtil.blankToDefault(requestBody, queryString.toString())); - }*/ + } // 计时 StopWatch stopWatch = new StopWatch(); stopWatch.start(); @@ -67,8 +67,8 @@ public class ApiAccessLogInterceptor implements HandlerInterceptor { if (!SpringUtils.isProd()) { StopWatch stopWatch = (StopWatch) request.getAttribute(ATTRIBUTE_STOP_WATCH); stopWatch.stop(); - /* log.info("[afterCompletion][完成请求 URL({}) 耗时({} ms)]", - request.getRequestURI(), stopWatch.getTotalTimeMillis());*/ + log.info("[afterCompletion][完成请求 URL({}) 耗时({} ms)]", + request.getRequestURI(), stopWatch.getTotalTimeMillis()); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RequestProcessor.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RequestProcessor.java index e17d2db56..fcf562561 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RequestProcessor.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RequestProcessor.java @@ -25,7 +25,7 @@ public class RequestProcessor { public RequestProcessor() { // 每秒执行一次 - 处理并发送数据 - 避免数据丢失 - scheduler.scheduleAtFixedRate(this::processAndSend, 1000, 1000, TimeUnit.MILLISECONDS); + scheduler.scheduleAtFixedRate(this::processAndSend, 300, 300, TimeUnit.MILLISECONDS); } public void handleRequest(String map, String mac, String data) { @@ -46,7 +46,7 @@ public class RequestProcessor { private void sendData(String map, Map data) { // -- 发送给对应的websocket // System.out.println("key:" + map + "发送数据:" + data); - log.info("key:" + map + "发送数据:" + JSON.toJSONString(data)); + log.info("key:" + map + "发送数据:" + data); webSocketSenderApi.sendObject(map, "map_push", data); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java index 280b915ad..357be6164 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java @@ -62,7 +62,7 @@ public class RobotStatusApiImpl implements RobotStatusApi { * @return */ @Override - @SystemRateLimiter(time = 1, count = 1, keyArg = "robotStatusUpdate",message = "机器人上报点位超过限流") + @SystemRateLimiter(time = 1, count = 150, keyArg = "robotStatusUpdate",message = "机器人上报点位超过限流") public void robotStatusUpdate(RobotPoseStatusDTO robotStatusDataDTO) { updateRobotPosed(robotStatusDataDTO); } From 06fd682e4870e1c7779e735301afc20ddf28877c Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Fri, 28 Mar 2025 09:16:06 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=93=8D=E4=BD=9C=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/robot/RobotTaskStatusApiImpl.java | 45 +++++++++++++++++-- .../vo/RobotTaskDetailActionLogPageReqVO.java | 14 +++++- .../vo/RobotTaskDetailActionLogRespVO.java | 19 +++++++- .../vo/RobotTaskDetailActionLogSaveReqVO.java | 14 +++++- .../log/RobotTaskDetailActionLogDO.java | 19 +++++++- .../log/RobotTaskDetailActionLogMapper.java | 4 +- 6 files changed, 105 insertions(+), 10 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java index 82cb07491..fdf0bfdb9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.system.api.robot; import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi; @@ -11,6 +12,7 @@ import cn.iocoder.yudao.module.system.api.robot.dto.RobotCompleteTaskDTO; import cn.iocoder.yudao.module.system.constant.path.PathPlanningTopicConstant; import cn.iocoder.yudao.module.system.constant.robot.RobotExecutionStateConstant; import cn.iocoder.yudao.module.system.constant.robot.RobotTaskChcheConstant; +import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskDetailActionLogSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskDetailActionLogDO; import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.*; @@ -29,6 +31,7 @@ import cn.iocoder.yudao.module.system.enums.robot.task.RobotStatusCodeEnum; import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskStageEnum; import cn.iocoder.yudao.module.system.enums.wait.WaitStatusEnum; import cn.iocoder.yudao.module.system.service.information.DeviceInformationService; +import cn.iocoder.yudao.module.system.service.log.RobotTaskDetailActionLogService; import cn.iocoder.yudao.module.system.service.path.PathPlanningService; import cn.iocoder.yudao.module.system.service.robot.RobotInformationService; import cn.iocoder.yudao.module.system.service.robot.RobotTaskDetailService; @@ -67,6 +70,9 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { @Resource private RobotTaskDetailActionLogMapper taskDetailActionLogMapper; + @Resource + private RobotTaskDetailActionLogService taskDetailActionLogService; + @Autowired private RobotInformationService robotInformationService; @@ -134,17 +140,37 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { } } + /** + * 上一条明细设置为完成 + * @param mac + * @return + */ + public RobotTaskDetailActionLogDO setLastLogDone(String mac){ + String robotNo = robotInformationService.getRobotNoByMac(mac); + RobotTaskDetailActionLogDO lastLog = taskDetailActionLogService.getLastTaskByRobotNo(robotNo); + if (ObjectUtil.isNotEmpty(lastLog)) { + lastLog.setEndTime(LocalDateTime.now()); + lastLog.setActionStatus(ActionStatusEnum.DONE.getType()); + RobotTaskDetailActionLogSaveReqVO updateObj = BeanUtils.toBean(lastLog, RobotTaskDetailActionLogSaveReqVO.class); + taskDetailActionLogService.updateTaskDetailActionLog(updateObj); + } + return lastLog; + } + /** * @param robotCompleteTaskDTO */ private void robotTaskDoing(RobotCompleteTaskDTO robotCompleteTaskDTO, String robotDoingActionKey) { + String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac()); + RobotTaskDetailActionLogDO lastLog = setLastLogDone(robotCompleteTaskDTO.getMac()); + if (PathTaskTypeEnum.AUTO_CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())) { - chargeDoing(robotCompleteTaskDTO, robotDoingActionKey); + chargeDoing(robotCompleteTaskDTO, robotDoingActionKey,lastLog); } else if (PathTaskTypeEnum.MOVE_TO_WAIT.getType().equals(robotCompleteTaskDTO.getOrderType())) { RobotTaskDetailActionLogDO logOne = new RobotTaskDetailActionLogDO(); logOne.setActionMsg("车辆正在前往等待点"); - String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac()); logOne.setRobotNo(robotNo); + logOne.setStartTime(LocalDateTime.now()); logOne.setTaskDetailId(robotCompleteTaskDTO.getOrderId()); taskDetailActionLogMapper.insert(logOne); redisUtil.set(robotDoingActionKey, logOne.getActionMsg(), doingActionCacheTime); @@ -191,6 +217,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { * @param robotCompleteTaskDTO */ private void robotTaskDone(RobotCompleteTaskDTO robotCompleteTaskDTO) { + setLastLogDone(robotCompleteTaskDTO.getMac()); //todo 后面考虑下充电,车机目前对充电的逻辑未定义 if (PathTaskTypeEnum.MOVE.getType().equals(robotCompleteTaskDTO.getOrderType()) || PathTaskTypeEnum.MOVE_TO_WAIT_STOP.getType().equals(robotCompleteTaskDTO.getOrderType()) @@ -302,21 +329,27 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { * * @param robotCompleteTaskDTO */ - private void chargeDoing(RobotCompleteTaskDTO robotCompleteTaskDTO, String robotDoingActionKey) { + private void chargeDoing(RobotCompleteTaskDTO robotCompleteTaskDTO, String robotDoingActionKey,RobotTaskDetailActionLogDO lastLog) { RobotTaskDetailActionLogDO logOne = new RobotTaskDetailActionLogDO(); RobotCommandStateDTO commandStatus = robotCompleteTaskDTO.getCommandStatus(); Integer taskStatus = ChargeTaskStatusEnum.CHARGEING.getType(); if (ObjectUtil.isNotEmpty(commandStatus) && CommandTypeEnum.MOVE_POSES.getType().equals(commandStatus.getCommandType())) { RobotChargeLogDO robotChargeLogDO = chargeLogMapper.selectById(robotCompleteTaskDTO.getOrderId()); logOne.setActionMsg("车辆正在前往充电点" + robotChargeLogDO.getDeviceNo()); + logOne.setTaskStage(RobotTaskStageEnum.MOVE.getType()); taskStatus = ChargeTaskStatusEnum.DOING.getType(); } else if (ObjectUtil.isNotEmpty(commandStatus)) { logOne.setActionMsg("车辆正在充电"); + logOne.setTaskStage(RobotTaskStageEnum.CHARGEING.getType()); } String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac()); logOne.setRobotNo(robotNo); logOne.setTaskDetailId(robotCompleteTaskDTO.getOrderId()); + + logOne.setCommandType(lastLog.getCommandType()); + logOne.setTaskNo(lastLog.getTaskNo()); + logOne.setStartTime(LocalDateTime.now()); taskDetailActionLogMapper.insert(logOne); redisUtil.set(robotDoingActionKey, logOne.getActionMsg(), doingActionCacheTime); RobotChargeLogDO build = RobotChargeLogDO @@ -380,6 +413,8 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId()); Long taskStage = robotTaskDetailDO.getTaskStage(); + RobotTaskDO robotTask = robotTaskMapper.selectById(robotTaskDetailDO.getRobotTaskId()); + RobotCommandStateDTO commandStatus = robotCompleteTaskDTO.getCommandStatus(); String commandType = commandStatus.getCommandType(); @@ -441,6 +476,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac()); logOne.setRobotNo(robotNo); logOne.setTaskDetailId(robotCompleteTaskDTO.getOrderId()); + logOne.setTaskStage(robotTaskDetailDO.getTaskStage()); + logOne.setCommandType(PathTaskTypeEnum.getTaskType(robotTaskDetailDO.getTaskType())); + logOne.setTaskNo(robotTask.getTaskNo()); + logOne.setStartTime(LocalDateTime.now()); taskDetailActionLogMapper.insert(logOne); redisUtil.set(robotDoingActionKey, logOne.getActionMsg(), doingActionCacheTime); robotTaskDetailMapper.updateById(robotTaskDetailDO); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogPageReqVO.java index 2e946c8a5..6d49d4036 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogPageReqVO.java @@ -26,7 +26,7 @@ public class RobotTaskDetailActionLogPageReqVO extends PageParam { @Schema(description = "车辆当前正在做的动作") private String actionMsg; - @Schema(description = "动作状态(0:未开始、1:正在进行、2:完成)", example = "2") + @Schema(description = "动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)", example = "2") private Integer actionStatus; @Schema(description = "AGV编号") @@ -39,4 +39,16 @@ public class RobotTaskDetailActionLogPageReqVO extends PageParam { @Schema(description = "robot_task_detail的id") private Long taskDetailId; + @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常)") + private Long taskStage; + + @Schema(description = "任务号") + private String taskNo; + + @Schema(description = "开始时间") + private LocalDateTime startTime; + + @Schema(description = "结束时间") + private LocalDateTime endTime; + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogRespVO.java index 4ec0be31b..fdc740e06 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogRespVO.java @@ -31,8 +31,8 @@ public class RobotTaskDetailActionLogRespVO { @ExcelProperty("车辆当前正在做的动作") private String actionMsg; - @Schema(description = "动作状态(0:未开始、1:正在进行、2:完成)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("动作状态(0:未开始、1:正在进行、2:完成)") + @Schema(description = "动作状态(动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常))", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("动作状态(动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常))") private Integer actionStatus; @Schema(description = "AGV编号") @@ -46,4 +46,19 @@ public class RobotTaskDetailActionLogRespVO { @Schema(description = "robot_task_detail的id") private Long taskDetailId; + @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常)") + private Long taskStage; + + @Schema(description = "任务号") + @ExcelProperty("任务号") + private String taskNo; + + @Schema(description = "开始时间") + @ExcelProperty("开始时间") + private LocalDateTime startTime; + + @Schema(description = "结束时间") + @ExcelProperty("结束时间") + private LocalDateTime endTime; + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogSaveReqVO.java index 88f72c267..484f5d03a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/vo/RobotTaskDetailActionLogSaveReqVO.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import javax.validation.constraints.*; +import java.time.LocalDateTime; @Schema(description = "管理后台 - 车辆动作记录新增/修改 Request VO") @Data @@ -24,8 +25,8 @@ public class RobotTaskDetailActionLogSaveReqVO { @Schema(description = "车辆当前正在做的动作") private String actionMsg; - @Schema(description = "动作状态(0:未开始、1:正在进行、2:完成)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @NotNull(message = "动作状态(0:未开始、1:正在进行、2:完成)不能为空") + @Schema(description = "动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)不能为空") private Integer actionStatus; @Schema(description = "AGV编号") @@ -34,4 +35,13 @@ public class RobotTaskDetailActionLogSaveReqVO { @Schema(description = "robot_task_detail的id") private Long taskDetailId; + @Schema(description = "任务号") + private String taskNo; + + @Schema(description = "开始时间") + private LocalDateTime startTime; + + @Schema(description = "结束时间") + private LocalDateTime endTime; + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/log/RobotTaskDetailActionLogDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/log/RobotTaskDetailActionLogDO.java index af7595ec3..3061aeb55 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/log/RobotTaskDetailActionLogDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/log/RobotTaskDetailActionLogDO.java @@ -5,6 +5,8 @@ import lombok.*; import com.baomidou.mybatisplus.annotation.*; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import java.time.LocalDateTime; + /** * 车辆动作记录 DO * @@ -42,7 +44,7 @@ public class RobotTaskDetailActionLogDO extends BaseDO { */ private String actionMsg; /** - * 动作状态(0:未开始、1:正在进行、2:完成) + * 动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常) */ private Integer actionStatus; /** @@ -59,4 +61,19 @@ public class RobotTaskDetailActionLogDO extends BaseDO { */ private Long taskStage; + /** + * 任务号 + */ + private String taskNo; + + /** + * 开始时间 + */ + private LocalDateTime startTime; + + /** + * 结束时间 + */ + private LocalDateTime endTime; + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/log/RobotTaskDetailActionLogMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/log/RobotTaskDetailActionLogMapper.java index bb48170ff..deac22f1f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/log/RobotTaskDetailActionLogMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/log/RobotTaskDetailActionLogMapper.java @@ -22,10 +22,12 @@ public interface RobotTaskDetailActionLogMapper extends BaseMapperX