Merge branch 'dev' of http://git.znkjfw.com/ak/zn-cloud-wcs into aikai
This commit is contained in:
commit
e20ab5d933
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.api.robot;
|
|||||||
|
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi;
|
import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.system.api.robot;
|
package cn.iocoder.yudao.module.system.api.robot;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
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.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
||||||
import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi;
|
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.path.PathPlanningTopicConstant;
|
||||||
import cn.iocoder.yudao.module.system.constant.robot.RobotExecutionStateConstant;
|
import cn.iocoder.yudao.module.system.constant.robot.RobotExecutionStateConstant;
|
||||||
import cn.iocoder.yudao.module.system.constant.robot.RobotTaskChcheConstant;
|
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.log.RobotTaskDetailActionLogDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.robot.*;
|
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.robot.task.RobotTaskStageEnum;
|
||||||
import cn.iocoder.yudao.module.system.enums.wait.WaitStatusEnum;
|
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.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.path.PathPlanningService;
|
||||||
import cn.iocoder.yudao.module.system.service.robot.RobotInformationService;
|
import cn.iocoder.yudao.module.system.service.robot.RobotInformationService;
|
||||||
import cn.iocoder.yudao.module.system.service.robot.RobotTaskDetailService;
|
import cn.iocoder.yudao.module.system.service.robot.RobotTaskDetailService;
|
||||||
@ -67,6 +70,9 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
@Resource
|
@Resource
|
||||||
private RobotTaskDetailActionLogMapper taskDetailActionLogMapper;
|
private RobotTaskDetailActionLogMapper taskDetailActionLogMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RobotTaskDetailActionLogService taskDetailActionLogService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RobotInformationService robotInformationService;
|
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
|
* @param robotCompleteTaskDTO
|
||||||
*/
|
*/
|
||||||
private void robotTaskDoing(RobotCompleteTaskDTO robotCompleteTaskDTO, String robotDoingActionKey) {
|
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())) {
|
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())) {
|
} else if (PathTaskTypeEnum.MOVE_TO_WAIT.getType().equals(robotCompleteTaskDTO.getOrderType())) {
|
||||||
RobotTaskDetailActionLogDO logOne = new RobotTaskDetailActionLogDO();
|
RobotTaskDetailActionLogDO logOne = new RobotTaskDetailActionLogDO();
|
||||||
logOne.setActionMsg("车辆正在前往等待点");
|
logOne.setActionMsg("车辆正在前往等待点");
|
||||||
String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac());
|
|
||||||
logOne.setRobotNo(robotNo);
|
logOne.setRobotNo(robotNo);
|
||||||
|
logOne.setStartTime(LocalDateTime.now());
|
||||||
logOne.setTaskDetailId(robotCompleteTaskDTO.getOrderId());
|
logOne.setTaskDetailId(robotCompleteTaskDTO.getOrderId());
|
||||||
taskDetailActionLogMapper.insert(logOne);
|
taskDetailActionLogMapper.insert(logOne);
|
||||||
redisUtil.set(robotDoingActionKey, logOne.getActionMsg(), doingActionCacheTime);
|
redisUtil.set(robotDoingActionKey, logOne.getActionMsg(), doingActionCacheTime);
|
||||||
@ -191,6 +217,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
* @param robotCompleteTaskDTO
|
* @param robotCompleteTaskDTO
|
||||||
*/
|
*/
|
||||||
private void robotTaskDone(RobotCompleteTaskDTO robotCompleteTaskDTO) {
|
private void robotTaskDone(RobotCompleteTaskDTO robotCompleteTaskDTO) {
|
||||||
|
setLastLogDone(robotCompleteTaskDTO.getMac());
|
||||||
//todo 后面考虑下充电,车机目前对充电的逻辑未定义
|
//todo 后面考虑下充电,车机目前对充电的逻辑未定义
|
||||||
if (PathTaskTypeEnum.MOVE.getType().equals(robotCompleteTaskDTO.getOrderType())
|
if (PathTaskTypeEnum.MOVE.getType().equals(robotCompleteTaskDTO.getOrderType())
|
||||||
|| PathTaskTypeEnum.MOVE_TO_WAIT_STOP.getType().equals(robotCompleteTaskDTO.getOrderType())
|
|| PathTaskTypeEnum.MOVE_TO_WAIT_STOP.getType().equals(robotCompleteTaskDTO.getOrderType())
|
||||||
@ -302,21 +329,27 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
*
|
*
|
||||||
* @param robotCompleteTaskDTO
|
* @param robotCompleteTaskDTO
|
||||||
*/
|
*/
|
||||||
private void chargeDoing(RobotCompleteTaskDTO robotCompleteTaskDTO, String robotDoingActionKey) {
|
private void chargeDoing(RobotCompleteTaskDTO robotCompleteTaskDTO, String robotDoingActionKey,RobotTaskDetailActionLogDO lastLog) {
|
||||||
RobotTaskDetailActionLogDO logOne = new RobotTaskDetailActionLogDO();
|
RobotTaskDetailActionLogDO logOne = new RobotTaskDetailActionLogDO();
|
||||||
RobotCommandStateDTO commandStatus = robotCompleteTaskDTO.getCommandStatus();
|
RobotCommandStateDTO commandStatus = robotCompleteTaskDTO.getCommandStatus();
|
||||||
Integer taskStatus = ChargeTaskStatusEnum.CHARGEING.getType();
|
Integer taskStatus = ChargeTaskStatusEnum.CHARGEING.getType();
|
||||||
if (ObjectUtil.isNotEmpty(commandStatus) && CommandTypeEnum.MOVE_POSES.getType().equals(commandStatus.getCommandType())) {
|
if (ObjectUtil.isNotEmpty(commandStatus) && CommandTypeEnum.MOVE_POSES.getType().equals(commandStatus.getCommandType())) {
|
||||||
RobotChargeLogDO robotChargeLogDO = chargeLogMapper.selectById(robotCompleteTaskDTO.getOrderId());
|
RobotChargeLogDO robotChargeLogDO = chargeLogMapper.selectById(robotCompleteTaskDTO.getOrderId());
|
||||||
logOne.setActionMsg("车辆正在前往充电点" + robotChargeLogDO.getDeviceNo());
|
logOne.setActionMsg("车辆正在前往充电点" + robotChargeLogDO.getDeviceNo());
|
||||||
|
logOne.setTaskStage(RobotTaskStageEnum.MOVE.getType());
|
||||||
taskStatus = ChargeTaskStatusEnum.DOING.getType();
|
taskStatus = ChargeTaskStatusEnum.DOING.getType();
|
||||||
} else if (ObjectUtil.isNotEmpty(commandStatus)) {
|
} else if (ObjectUtil.isNotEmpty(commandStatus)) {
|
||||||
logOne.setActionMsg("车辆正在充电");
|
logOne.setActionMsg("车辆正在充电");
|
||||||
|
logOne.setTaskStage(RobotTaskStageEnum.CHARGEING.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac());
|
String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac());
|
||||||
logOne.setRobotNo(robotNo);
|
logOne.setRobotNo(robotNo);
|
||||||
logOne.setTaskDetailId(robotCompleteTaskDTO.getOrderId());
|
logOne.setTaskDetailId(robotCompleteTaskDTO.getOrderId());
|
||||||
|
|
||||||
|
logOne.setCommandType(lastLog.getCommandType());
|
||||||
|
logOne.setTaskNo(lastLog.getTaskNo());
|
||||||
|
logOne.setStartTime(LocalDateTime.now());
|
||||||
taskDetailActionLogMapper.insert(logOne);
|
taskDetailActionLogMapper.insert(logOne);
|
||||||
redisUtil.set(robotDoingActionKey, logOne.getActionMsg(), doingActionCacheTime);
|
redisUtil.set(robotDoingActionKey, logOne.getActionMsg(), doingActionCacheTime);
|
||||||
RobotChargeLogDO build = RobotChargeLogDO
|
RobotChargeLogDO build = RobotChargeLogDO
|
||||||
@ -380,6 +413,8 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId());
|
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId());
|
||||||
Long taskStage = robotTaskDetailDO.getTaskStage();
|
Long taskStage = robotTaskDetailDO.getTaskStage();
|
||||||
|
|
||||||
|
RobotTaskDO robotTask = robotTaskMapper.selectById(robotTaskDetailDO.getRobotTaskId());
|
||||||
|
|
||||||
RobotCommandStateDTO commandStatus = robotCompleteTaskDTO.getCommandStatus();
|
RobotCommandStateDTO commandStatus = robotCompleteTaskDTO.getCommandStatus();
|
||||||
String commandType = commandStatus.getCommandType();
|
String commandType = commandStatus.getCommandType();
|
||||||
|
|
||||||
@ -441,6 +476,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac());
|
String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac());
|
||||||
logOne.setRobotNo(robotNo);
|
logOne.setRobotNo(robotNo);
|
||||||
logOne.setTaskDetailId(robotCompleteTaskDTO.getOrderId());
|
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);
|
taskDetailActionLogMapper.insert(logOne);
|
||||||
redisUtil.set(robotDoingActionKey, logOne.getActionMsg(), doingActionCacheTime);
|
redisUtil.set(robotDoingActionKey, logOne.getActionMsg(), doingActionCacheTime);
|
||||||
robotTaskDetailMapper.updateById(robotTaskDetailDO);
|
robotTaskDetailMapper.updateById(robotTaskDetailDO);
|
||||||
|
@ -26,7 +26,7 @@ public class RobotTaskDetailActionLogPageReqVO extends PageParam {
|
|||||||
@Schema(description = "车辆当前正在做的动作")
|
@Schema(description = "车辆当前正在做的动作")
|
||||||
private String actionMsg;
|
private String actionMsg;
|
||||||
|
|
||||||
@Schema(description = "动作状态(0:未开始、1:正在进行、2:完成)", example = "2")
|
@Schema(description = "动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)", example = "2")
|
||||||
private Integer actionStatus;
|
private Integer actionStatus;
|
||||||
|
|
||||||
@Schema(description = "AGV编号")
|
@Schema(description = "AGV编号")
|
||||||
@ -39,4 +39,16 @@ public class RobotTaskDetailActionLogPageReqVO extends PageParam {
|
|||||||
@Schema(description = "robot_task_detail的id")
|
@Schema(description = "robot_task_detail的id")
|
||||||
private Long taskDetailId;
|
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;
|
||||||
|
|
||||||
}
|
}
|
@ -31,8 +31,8 @@ public class RobotTaskDetailActionLogRespVO {
|
|||||||
@ExcelProperty("车辆当前正在做的动作")
|
@ExcelProperty("车辆当前正在做的动作")
|
||||||
private String actionMsg;
|
private String actionMsg;
|
||||||
|
|
||||||
@Schema(description = "动作状态(0:未开始、1:正在进行、2:完成)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
@Schema(description = "动作状态(动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常))", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||||
@ExcelProperty("动作状态(0:未开始、1:正在进行、2:完成)")
|
@ExcelProperty("动作状态(动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常))")
|
||||||
private Integer actionStatus;
|
private Integer actionStatus;
|
||||||
|
|
||||||
@Schema(description = "AGV编号")
|
@Schema(description = "AGV编号")
|
||||||
@ -46,4 +46,19 @@ public class RobotTaskDetailActionLogRespVO {
|
|||||||
@Schema(description = "robot_task_detail的id")
|
@Schema(description = "robot_task_detail的id")
|
||||||
private Long taskDetailId;
|
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;
|
||||||
|
|
||||||
}
|
}
|
@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
|||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import javax.validation.constraints.*;
|
import javax.validation.constraints.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 车辆动作记录新增/修改 Request VO")
|
@Schema(description = "管理后台 - 车辆动作记录新增/修改 Request VO")
|
||||||
@Data
|
@Data
|
||||||
@ -24,8 +25,8 @@ public class RobotTaskDetailActionLogSaveReqVO {
|
|||||||
@Schema(description = "车辆当前正在做的动作")
|
@Schema(description = "车辆当前正在做的动作")
|
||||||
private String actionMsg;
|
private String actionMsg;
|
||||||
|
|
||||||
@Schema(description = "动作状态(0:未开始、1:正在进行、2:完成)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
@Schema(description = "动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||||
@NotNull(message = "动作状态(0:未开始、1:正在进行、2:完成)不能为空")
|
@NotNull(message = "动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)不能为空")
|
||||||
private Integer actionStatus;
|
private Integer actionStatus;
|
||||||
|
|
||||||
@Schema(description = "AGV编号")
|
@Schema(description = "AGV编号")
|
||||||
@ -34,4 +35,13 @@ public class RobotTaskDetailActionLogSaveReqVO {
|
|||||||
@Schema(description = "robot_task_detail的id")
|
@Schema(description = "robot_task_detail的id")
|
||||||
private Long taskDetailId;
|
private Long taskDetailId;
|
||||||
|
|
||||||
|
@Schema(description = "任务号")
|
||||||
|
private String taskNo;
|
||||||
|
|
||||||
|
@Schema(description = "开始时间")
|
||||||
|
private LocalDateTime startTime;
|
||||||
|
|
||||||
|
@Schema(description = "结束时间")
|
||||||
|
private LocalDateTime endTime;
|
||||||
|
|
||||||
}
|
}
|
@ -92,4 +92,12 @@ public class RobotTaskDetailController {
|
|||||||
BeanUtils.toBean(list, RobotTaskDetailRespVO.class));
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -56,7 +56,7 @@ public class RobotTaskDetailPageReqVO extends PageParam {
|
|||||||
@Schema(description = "任务状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)", example = "1")
|
@Schema(description = "任务状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)", example = "1")
|
||||||
private Integer taskStatus;
|
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;
|
private Long taskStage;
|
||||||
|
|
||||||
@Schema(description = "开始时间")
|
@Schema(description = "开始时间")
|
||||||
|
@ -62,8 +62,8 @@ public class RobotTaskDetailRespVO {
|
|||||||
@ExcelProperty("任务状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)")
|
@ExcelProperty("任务状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)")
|
||||||
private Integer taskStatus;
|
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:异常)")
|
||||||
@ExcelProperty("任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电)")
|
@ExcelProperty("任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常)")
|
||||||
private Long taskStage;
|
private Long taskStage;
|
||||||
|
|
||||||
@Schema(description = "开始时间")
|
@Schema(description = "开始时间")
|
||||||
|
@ -62,7 +62,7 @@ public class RobotTaskDetailSaveReqVO {
|
|||||||
@Schema(description = "任务状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)", example = "1")
|
@Schema(description = "任务状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)", example = "1")
|
||||||
private Integer taskStatus;
|
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;
|
private Long taskStage;
|
||||||
|
|
||||||
@Schema(description = "开始时间")
|
@Schema(description = "开始时间")
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package cn.iocoder.yudao.module.system.dal.dataobject.log;
|
package cn.iocoder.yudao.module.system.dal.dataobject.log;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车辆动作记录 DO
|
* 车辆动作记录 DO
|
||||||
*
|
*
|
||||||
@ -41,7 +44,7 @@ public class RobotTaskDetailActionLogDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private String actionMsg;
|
private String actionMsg;
|
||||||
/**
|
/**
|
||||||
* 动作状态(0:未开始、1:正在进行、2:完成)
|
* 动作状态(0:未开始、1:执行中、2:已完成、3:已取消、4:异常)
|
||||||
*/
|
*/
|
||||||
private Integer actionStatus;
|
private Integer actionStatus;
|
||||||
/**
|
/**
|
||||||
@ -53,4 +56,24 @@ public class RobotTaskDetailActionLogDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Long taskDetailId;
|
private Long taskDetailId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常)
|
||||||
|
*/
|
||||||
|
private Long taskStage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务号
|
||||||
|
*/
|
||||||
|
private String taskNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开始时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime startTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime endTime;
|
||||||
|
|
||||||
}
|
}
|
@ -96,7 +96,7 @@ public class RobotTaskDetailDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Integer taskStatus;
|
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;
|
private Long taskStage;
|
||||||
/**
|
/**
|
||||||
|
@ -22,10 +22,12 @@ public interface RobotTaskDetailActionLogMapper extends BaseMapperX<RobotTaskDet
|
|||||||
.eqIfPresent(RobotTaskDetailActionLogDO::getCommandType, reqVO.getCommandType())
|
.eqIfPresent(RobotTaskDetailActionLogDO::getCommandType, reqVO.getCommandType())
|
||||||
.eqIfPresent(RobotTaskDetailActionLogDO::getCommandMsg, reqVO.getCommandMsg())
|
.eqIfPresent(RobotTaskDetailActionLogDO::getCommandMsg, reqVO.getCommandMsg())
|
||||||
.likeIfPresent(RobotTaskDetailActionLogDO::getActionMsg, reqVO.getActionMsg())
|
.likeIfPresent(RobotTaskDetailActionLogDO::getActionMsg, reqVO.getActionMsg())
|
||||||
|
.likeIfPresent(RobotTaskDetailActionLogDO::getTaskNo, reqVO.getTaskNo())
|
||||||
|
.eqIfPresent(RobotTaskDetailActionLogDO::getTaskStage, reqVO.getTaskStage())
|
||||||
.eqIfPresent(RobotTaskDetailActionLogDO::getActionStatus, reqVO.getActionStatus())
|
.eqIfPresent(RobotTaskDetailActionLogDO::getActionStatus, reqVO.getActionStatus())
|
||||||
.eqIfPresent(RobotTaskDetailActionLogDO::getRobotNo, reqVO.getRobotNo())
|
.eqIfPresent(RobotTaskDetailActionLogDO::getRobotNo, reqVO.getRobotNo())
|
||||||
.betweenIfPresent(RobotTaskDetailActionLogDO::getCreateTime, reqVO.getCreateTime())
|
.betweenIfPresent(RobotTaskDetailActionLogDO::getCreateTime, reqVO.getCreateTime())
|
||||||
.orderByDesc(RobotTaskDetailActionLogDO::getId));
|
.orderByDesc(RobotTaskDetailActionLogDO::getCreateTime));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -14,7 +14,9 @@ public enum RobotTaskStageEnum {
|
|||||||
DONE(5L,"结束"),
|
DONE(5L,"结束"),
|
||||||
MOVE(6L,"移动中"),
|
MOVE(6L,"移动中"),
|
||||||
CHARGEING(7L,"待执行正在充电"),
|
CHARGEING(7L,"待执行正在充电"),
|
||||||
CLOSE(8L,"任务已取消");
|
CLOSE(8L,"任务已取消"),
|
||||||
|
MANUALLY_COMPLETED(9L,"人工完成"),
|
||||||
|
EXCEPTION(10L,"异常");
|
||||||
/**
|
/**
|
||||||
* 类型
|
* 类型
|
||||||
*/
|
*/
|
||||||
|
@ -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.log.UserOperationLogService;
|
||||||
import cn.iocoder.yudao.module.system.service.tool.ToolsService;
|
import cn.iocoder.yudao.module.system.service.tool.ToolsService;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.TypeReference;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.lang.reflect.Type;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
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.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.CONFIG_NOT_EXISTS;
|
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 onceStartTime = s.format(formatter);
|
||||||
String onceEndTime = e.format(formatter);
|
String onceEndTime = e.format(formatter);
|
||||||
|
|
||||||
JSONObject jsonObject = new JSONObject(config.getConfigStr());
|
Gson gson = new Gson();
|
||||||
jsonObject.put("onceStartTime", onceStartTime);
|
Type type = new TypeToken<Map<String, String>>(){}.getType();
|
||||||
jsonObject.put("onceEndTime", onceEndTime);
|
Map<String, String> 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);
|
config.setConfigStr(str);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateConfig(CommonConfigSaveReqVO updateReqVO) {
|
public void updateConfig(CommonConfigSaveReqVO updateReqVO) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateConfigExists(updateReqVO.getId());
|
validateConfigExists(updateReqVO.getId());
|
||||||
|
@ -141,13 +141,13 @@ public class DeviceInformationServiceImpl extends ServiceImpl<DeviceInformationM
|
|||||||
public void deleteInformation(Long id) {
|
public void deleteInformation(Long id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateInformationExists(id);
|
validateInformationExists(id);
|
||||||
// 删除
|
|
||||||
informationMapper.deleteById(id);
|
|
||||||
|
|
||||||
DeviceInformationDO deviceInformationDO = informationMapper.selectById(id);
|
DeviceInformationDO deviceInformationDO = informationMapper.selectById(id);
|
||||||
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
||||||
.operateAction("删除设备 " + deviceInformationDO.getDeviceNo())
|
.operateAction("删除设备 " + deviceInformationDO.getDeviceNo())
|
||||||
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
||||||
|
// 删除
|
||||||
|
informationMapper.deleteById(id);
|
||||||
|
|
||||||
userOperationLogService.createUserOperationLog(operationLog);
|
userOperationLogService.createUserOperationLog(operationLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,4 +150,12 @@ public interface RobotInformationService extends IService<RobotInformationDO> {
|
|||||||
* @param robotNo
|
* @param robotNo
|
||||||
*/
|
*/
|
||||||
void doTaskContinue(String robotNo);
|
void doTaskContinue(String robotNo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @param mac
|
||||||
|
* @param orderType
|
||||||
|
*/
|
||||||
|
void robotCloseTaskDetail(String id, String mac, String orderType);
|
||||||
}
|
}
|
||||||
|
@ -259,16 +259,15 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteInformation(Long id) {
|
public void deleteInformation(Long id) {
|
||||||
// 校验存在
|
|
||||||
validateInformationExists(id);
|
|
||||||
// 删除
|
|
||||||
informationMapper.deleteById(id);
|
|
||||||
|
|
||||||
RobotInformationDO robotInformationDO = informationMapper.selectById(id);
|
RobotInformationDO robotInformationDO = informationMapper.selectById(id);
|
||||||
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
||||||
.operateAction("删除车辆 " + robotInformationDO.getRobotNo())
|
.operateAction("删除车辆 " + robotInformationDO.getRobotNo())
|
||||||
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
||||||
userOperationLogService.createUserOperationLog(operationLog);
|
userOperationLogService.createUserOperationLog(operationLog);
|
||||||
|
// 校验存在
|
||||||
|
validateInformationExists(id);
|
||||||
|
// 删除
|
||||||
|
informationMapper.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateInformationExists(Long id) {
|
private void validateInformationExists(Long id) {
|
||||||
@ -1030,6 +1029,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
* @param mac
|
* @param mac
|
||||||
* @param orderType
|
* @param orderType
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void robotCloseTaskDetail(String id, String mac, String orderType) {
|
public void robotCloseTaskDetail(String id, String mac, String orderType) {
|
||||||
RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO();
|
RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO();
|
||||||
robotTask.setOrderId(id);
|
robotTask.setOrderId(id);
|
||||||
|
@ -66,4 +66,11 @@ public interface RobotTaskDetailService {
|
|||||||
* @param taskDetailId
|
* @param taskDetailId
|
||||||
*/
|
*/
|
||||||
RobotTaskDetailDO closeTaskDetail(Long taskDetailId);
|
RobotTaskDetailDO closeTaskDetail(Long taskDetailId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
void manuallyCompleted(Long id);
|
||||||
}
|
}
|
@ -6,12 +6,15 @@ import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailA
|
|||||||
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailPageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailRespVO;
|
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailRespVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskDetailActionLogDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskDetailMapper;
|
import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskDetailMapper;
|
||||||
import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskMapper;
|
import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskMapper;
|
||||||
import cn.iocoder.yudao.module.system.enums.robot.RobotTaskDetailStatusEnum;
|
import cn.iocoder.yudao.module.system.enums.robot.RobotTaskDetailStatusEnum;
|
||||||
import cn.iocoder.yudao.module.system.enums.robot.RobotTaskStatusEnum;
|
import cn.iocoder.yudao.module.system.enums.robot.RobotTaskStatusEnum;
|
||||||
|
import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskStageEnum;
|
||||||
|
import cn.iocoder.yudao.module.system.service.log.RobotTaskDetailActionLogService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -46,6 +49,12 @@ public class RobotTaskDetailServiceImpl implements RobotTaskDetailService {
|
|||||||
@Resource
|
@Resource
|
||||||
private RobotTaskMapper robotTaskMapper;
|
private RobotTaskMapper robotTaskMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RobotTaskDetailActionLogService taskDetailActionLogService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RobotInformationService informationService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createTaskDetail(RobotTaskDetailSaveReqVO createReqVO) {
|
public Long createTaskDetail(RobotTaskDetailSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
@ -119,4 +128,28 @@ public class RobotTaskDetailServiceImpl implements RobotTaskDetailService {
|
|||||||
log.info("车机上报异常, 把任务取消 :{}", taskDetailId);
|
log.info("车机上报异常, 把任务取消 :{}", taskDetailId);
|
||||||
return robotTaskDetailDO;
|
return robotTaskDetailDO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void manuallyCompleted(Long taskDetailId) {
|
||||||
|
RobotTaskDetailDO robotTaskDetailDO = taskDetailMapper.selectById(taskDetailId);
|
||||||
|
Long taskStage = robotTaskDetailDO.getTaskStage();
|
||||||
|
robotTaskDetailDO.setTaskStatus(RobotTaskDetailStatusEnum.DONE.getType());
|
||||||
|
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.MANUALLY_COMPLETED.getType());
|
||||||
|
taskDetailMapper.updateById(robotTaskDetailDO);
|
||||||
|
|
||||||
|
RobotTaskDetailActionLogDO log = taskDetailActionLogService.getLastTaskByRobotNo(robotTaskDetailDO.getRobotNo());
|
||||||
|
if (ObjectUtil.isEmpty(log) || !log.getTaskDetailId().equals(taskDetailId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (RobotTaskStageEnum.DONE.getType().equals(taskStage)
|
||||||
|
|| RobotTaskStageEnum.CLOSE.getType().equals(taskStage)
|
||||||
|
|| RobotTaskStageEnum.MANUALLY_COMPLETED.getType().equals(taskStage)
|
||||||
|
|| RobotTaskStageEnum.EXCEPTION.getType().equals(taskStage) ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String mac = informationService.getMacByRobotNo(robotTaskDetailDO.getRobotNo());
|
||||||
|
informationService.robotCloseTaskDetail(String.valueOf(taskDetailId),mac,"");
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user