统计速度和时间
This commit is contained in:
parent
7a11ac04bd
commit
68cd2578b5
@ -54,15 +54,13 @@ logging:
|
||||
|
||||
remote:
|
||||
cockpit: # 远遥控制车辆IP和端口
|
||||
- controllerPort: 9002
|
||||
controllerIp: 127.0.0.2
|
||||
ipcIp: 127.0.0.1
|
||||
- controllerPort: 9001
|
||||
controllerIp: 127.0.0.3
|
||||
ipcIp: 127.0.0.1
|
||||
- controllerPort: 9006
|
||||
controllerIp: 10.10.5.26
|
||||
ipcIp: 10.10.5.26
|
||||
msg: AA 55 13 04 01 88 88 # 驾舱socket头信息
|
||||
cockpit-time-out: 120 # 驾舱超时报警时间
|
||||
industrial-control-time-out: 120 # 工控通信超时报警时间
|
||||
robot-communication-time-out: 120 # 车辆通信超时报警时间
|
||||
robot-max-speed: 5 # 远遥控制车辆最大速度 m/s
|
||||
|
||||
# AA 55 13 04 01 88 88 01 0a 0a 64 13 28 23 01 78 01 78 01 78 3F 7D
|
@ -332,4 +332,10 @@ public interface ErrorCodeConstants {
|
||||
|
||||
// ========== 库位类型 1_002_059_001 ==========
|
||||
ErrorCode HOUSE_LOCATION_TYPE_NOT_EXISTS = new ErrorCode(1_002_059_001, "库位类型不存在");
|
||||
|
||||
//========== 车辆任务行程耗时表 1_002_060_001 ==========
|
||||
ErrorCode ROBOT_TASK_TIME_CONSUMING_NOT_EXISTS = new ErrorCode(1_002_060_001, "车辆任务行程耗时不存在");
|
||||
|
||||
//========== 车辆行走路线耗时记录 1_002_061_001 ==========
|
||||
ErrorCode TASK_LINE_TIME_CONSUMING_NOT_EXISTS = new ErrorCode(1_002_061_001, "车辆行走路线耗时记录不存在");
|
||||
}
|
||||
|
@ -38,6 +38,9 @@ import cn.iocoder.yudao.module.system.enums.robot.actionlog.ActionStatusEnum;
|
||||
import cn.iocoder.yudao.module.system.enums.robot.charge.ChargeTaskStatusEnum;
|
||||
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.event.RobotTaskEventTypeEnum;
|
||||
import cn.iocoder.yudao.module.system.mq.message.task.TaskDistributionMessage;
|
||||
import cn.iocoder.yudao.module.system.mq.producer.task.TaskDistributionProducer;
|
||||
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;
|
||||
@ -125,6 +128,9 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
@Resource
|
||||
private DeviceInformationService deviceInformationService;
|
||||
|
||||
@Resource
|
||||
private TaskDistributionProducer taskDistributionProducer;
|
||||
|
||||
@Autowired
|
||||
private ZnConfigConstant znConfigConstant;
|
||||
|
||||
@ -278,6 +284,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
taskDetailActionLogMapper.updateActionStatus(robotCompleteTaskDTO.getOrderId(), ActionStatusEnum.DONE.getType(), LocalDateTime.now());
|
||||
|
||||
addTaskDetailActionDoneLog(robotCompleteTaskDTO, robotTaskDetail);
|
||||
|
||||
TaskDistributionMessage mess = new TaskDistributionMessage(this, robotCompleteTaskDTO.getOrderId() + "",
|
||||
RobotTaskEventTypeEnum.DONE.getType());
|
||||
taskDistributionProducer.sendSmsSendMessage(mess);
|
||||
}
|
||||
|
||||
private void addTaskDetailActionDoneLog(RobotCompleteTaskDTO robotCompleteTaskDTO, RobotTaskDetailDO robotTaskDetail) {
|
||||
@ -453,7 +463,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
// robotTaskDetailMapper.updateById(robotTaskDetailDO);
|
||||
robotTaskDetailMapper.updateRobotDetailById(detailDO);
|
||||
String taskNo = taskDetailService.getTaskNoByDetailId(robotCompleteTaskDTO.getOrderId());
|
||||
msg = robotNo + "_" + "车辆发生异常,重新分配其他车辆执行此任务" + taskNo + " - " + robotCompleteTaskDTO.getOrderId();
|
||||
msg = robotNo + "_" + "车辆发生异常,重新分配其他车辆执行此任务" + taskNo + " - " + robotTaskDetailDO.getFromLocationNo();
|
||||
}
|
||||
}
|
||||
|
||||
@ -493,6 +503,8 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
taskNo = taskDetailService.getTaskNoByDetailId(robotCompleteTaskDTO.getOrderId());
|
||||
solve = " 并且到任务列表关闭任务 " + taskNo;
|
||||
taskDetailService.setTaskDetailError(robotCompleteTaskDTO.getOrderId());
|
||||
} else {
|
||||
robotInformationService.lockRobot(robotNo);
|
||||
}
|
||||
|
||||
msg = ObjectUtil.isEmpty(msg) ? robotNo + "_" + robotCompleteTaskDTO.getMessage() : msg;
|
||||
@ -579,6 +591,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
robotInformationDO.setRobotTaskModel(RobotTaskModelEnum.REJECTION.getType());
|
||||
}
|
||||
robotInformationMapper.updateById(robotInformationDO);
|
||||
|
||||
//同步任务完成给PP
|
||||
pathPlanningService.updateBehavior(String.valueOf(robotCompleteTaskDTO.getOrderId()), robotTaskDetailDO.getRobotNo()
|
||||
, "", PathIsReachEnum.END_WORK.getType());
|
||||
|
@ -14,9 +14,13 @@ import cn.iocoder.yudao.module.system.enums.robot.RobotTaskDetailStatusEnum;
|
||||
import cn.iocoder.yudao.module.system.enums.robot.RobotTaskTypeEnum;
|
||||
import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskStageEnum;
|
||||
import cn.iocoder.yudao.module.system.enums.robot.task.WorkProgressEnum;
|
||||
import cn.iocoder.yudao.module.system.enums.robot.task.event.RobotTaskEventTypeEnum;
|
||||
import cn.iocoder.yudao.module.system.mq.message.task.TaskDistributionMessage;
|
||||
import cn.iocoder.yudao.module.system.mq.producer.task.TaskDistributionProducer;
|
||||
import cn.iocoder.yudao.module.system.service.log.RobotOperationLogService;
|
||||
import cn.iocoder.yudao.module.system.service.path.PathPlanningService;
|
||||
import cn.iocoder.yudao.module.system.service.robot.RobotInformationService;
|
||||
import cn.iocoder.yudao.module.system.util.redis.RedisUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -42,6 +46,9 @@ public class RobotWorkStatusApiImpl implements RobotWorkStatusApi {
|
||||
@Autowired
|
||||
private RobotTaskDetailMapper robotTaskDetailMapper;
|
||||
|
||||
@Resource
|
||||
private TaskDistributionProducer taskDistributionProducer;
|
||||
|
||||
@Override
|
||||
public void robotWorkStatus(String message) {
|
||||
log.info("111111作业实时行为上报: {}", message);
|
||||
@ -63,6 +70,10 @@ public class RobotWorkStatusApiImpl implements RobotWorkStatusApi {
|
||||
.build();
|
||||
operationLogService.createOperationLog(createReqVO);
|
||||
|
||||
TaskDistributionMessage mess = new TaskDistributionMessage(this,message,
|
||||
RobotTaskEventTypeEnum.TIME.getType());
|
||||
taskDistributionProducer.sendSmsSendMessage(mess);
|
||||
|
||||
if ((CommandTypeEnum.WORK_PICK_UP_GOODS_MOVE_TO_CHECK.getType().equals(data.getCommandType())
|
||||
|| CommandTypeEnum.WORK_DROP_OFF_GOODS_MOVE_TO_CHECK.getType().equals(data.getCommandType()))
|
||||
&& RobotExecutionStateConstant.DOING.equals(Integer.valueOf(data.getExecutionState()))) {
|
||||
|
@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.system.config.mqtt;
|
||||
|
||||
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
||||
import cn.iocoder.yudao.module.system.service.mqtt.MqttService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.eclipse.paho.client.mqttv3.IMqttAsyncClient;
|
||||
@ -43,7 +44,7 @@ public class MqttCallBack implements MqttCallback {
|
||||
fixedThreadPool.execute(() -> {
|
||||
String msg = new String(mqttMessage.getPayload(), StandardCharsets.UTF_8);
|
||||
// log.info("[MQTT]接收当前消息为 :{}", msg);
|
||||
|
||||
TenantContextHolder.setTenantId(1L);
|
||||
try {
|
||||
MqttService mqttService = MqttFactory.getMqttFactory(topic);
|
||||
mqttService.analysisMessage(msg);
|
||||
|
@ -11,6 +11,8 @@ import cn.iocoder.yudao.module.system.service.mqtt.PathPlanningMoveServiceImpl;
|
||||
import cn.iocoder.yudao.module.system.service.mqtt.PathRouteDisplayPlanningServiceImpl;
|
||||
import cn.iocoder.yudao.module.system.service.mqtt.PlanningGraphMatchDataServiceImpl;
|
||||
import cn.iocoder.yudao.module.system.service.mqtt.PlanningRemoteRobotMovePosePlanningImpl;
|
||||
import cn.iocoder.yudao.module.system.service.mqtt.PlanningRobotLineDistanceServiceImpl;
|
||||
import cn.iocoder.yudao.module.system.service.mqtt.PlanningRobotWalkingDistanceServiceImpl;
|
||||
import cn.iocoder.yudao.module.system.service.mqtt.PlanningSimulationRobotPoseRequestServiceImpl;
|
||||
import cn.iocoder.yudao.module.system.service.mqtt.RobotGenericsStatusServiceImpl;
|
||||
import cn.iocoder.yudao.module.system.service.mqtt.RobotObstaclesStatusServiceImpl;
|
||||
@ -180,6 +182,10 @@ public class MqttFactory {
|
||||
return BeanUtils.getBean(PathRouteDisplayPlanningServiceImpl.class);
|
||||
case PLANNING_GRAPH_MATCH_DATA:
|
||||
return BeanUtils.getBean(PlanningGraphMatchDataServiceImpl.class);
|
||||
case PLANNING_ROBOT_WALKING_DISTANCE:
|
||||
return BeanUtils.getBean(PlanningRobotWalkingDistanceServiceImpl.class);
|
||||
case PLANNING_ROBOT_LINE_DISTANCE:
|
||||
return BeanUtils.getBean(PlanningRobotLineDistanceServiceImpl.class);
|
||||
case PLANNING_REMOTE_ROBOT_MOVE_POSE_PLANNING:
|
||||
return BeanUtils.getBean(PlanningRemoteRobotMovePosePlanningImpl.class);
|
||||
default :
|
||||
|
@ -30,6 +30,8 @@ public enum DefineSubTopicEnum {
|
||||
PLANNING_MOVE("UPDATE_ROUTE_DISPLAY_PLANNING", 2,"车辆即将走的点位"),
|
||||
PLANNING_ROUTE_DISPLAY("ROBOT_MOVE_POSE_PLANNING", 2,"路径规划上报实时路径"),
|
||||
PLANNING_GRAPH_MATCH_DATA("GRAPH_MATCH_DATA", 2,"路网匹配实时数据"),
|
||||
PLANNING_ROBOT_WALKING_DISTANCE("ROBOT_WALKING_DISTANCE", 2,"车辆行走路程"),
|
||||
PLANNING_ROBOT_LINE_DISTANCE("ROBOT_LINE_DISTANCE", 2,"车辆行走路线上报"),
|
||||
PLANNING_REMOTE_ROBOT_MOVE_POSE_PLANNING("REMOTE_ROBOT_MOVE_POSE_PLANNING", 2,"远遥车辆行走导航");
|
||||
|
||||
|
||||
|
@ -52,4 +52,16 @@ public class RobotTaskChcheConstant {
|
||||
|
||||
//所有的车辆信息 获得到一个map, key是 mac,value是具体信息
|
||||
public static String ROBOT_ALL_INFORMATION = "robot:all:information";
|
||||
|
||||
//取货开始时间+任务id
|
||||
public static String ROBOT_TASK_START_PICK = "robot:task:start:pick";
|
||||
|
||||
//取货结束时间+任务id
|
||||
public static String ROBOT_TASK_END_PICK = "robot:task:end:pick";
|
||||
|
||||
//放货开始时间+任务id
|
||||
public static String ROBOT_TASK_START_DROP = "robot:task:start:drop";
|
||||
|
||||
//任务结束时间+任务id
|
||||
public static String ROBOT_TASK_END = "robot:task:end";
|
||||
}
|
||||
|
@ -0,0 +1,97 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.log;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskLineTimeConsumingPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskLineTimeConsumingRespVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskLineTimeConsumingSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskLineTimeConsumingDO;
|
||||
import cn.iocoder.yudao.module.system.service.log.RobotTaskLineTimeConsumingService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
|
||||
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
|
||||
|
||||
|
||||
@Tag(name = "管理后台 - 车辆行走路线耗时记录")
|
||||
@RestController
|
||||
@RequestMapping("/system/robot/task-line-time-consuming")
|
||||
@Validated
|
||||
public class RobotTaskLineTimeConsumingController {
|
||||
|
||||
@Resource
|
||||
private RobotTaskLineTimeConsumingService taskLineTimeConsumingService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建车辆行走路线耗时记录")
|
||||
@PreAuthorize("@ss.hasPermission('robot:task-line-time-consuming:create')")
|
||||
public CommonResult<Long> createTaskLineTimeConsuming(@Valid @RequestBody RobotTaskLineTimeConsumingSaveReqVO createReqVO) {
|
||||
return success(taskLineTimeConsumingService.createTaskLineTimeConsuming(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新车辆行走路线耗时记录")
|
||||
@PreAuthorize("@ss.hasPermission('robot:task-line-time-consuming:update')")
|
||||
public CommonResult<Boolean> updateTaskLineTimeConsuming(@Valid @RequestBody RobotTaskLineTimeConsumingSaveReqVO updateReqVO) {
|
||||
taskLineTimeConsumingService.updateTaskLineTimeConsuming(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除车辆行走路线耗时记录")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('robot:task-line-time-consuming:delete')")
|
||||
public CommonResult<Boolean> deleteTaskLineTimeConsuming(@RequestParam("id") Long id) {
|
||||
taskLineTimeConsumingService.deleteTaskLineTimeConsuming(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得车辆行走路线耗时记录")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('robot:task-line-time-consuming:query')")
|
||||
public CommonResult<RobotTaskLineTimeConsumingRespVO> getTaskLineTimeConsuming(@RequestParam("id") Long id) {
|
||||
RobotTaskLineTimeConsumingDO taskLineTimeConsuming = taskLineTimeConsumingService.getTaskLineTimeConsuming(id);
|
||||
return success(BeanUtils.toBean(taskLineTimeConsuming, RobotTaskLineTimeConsumingRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得车辆行走路线耗时记录分页")
|
||||
@PreAuthorize("@ss.hasPermission('robot:task-line-time-consuming:query')")
|
||||
public CommonResult<PageResult<RobotTaskLineTimeConsumingRespVO>> getTaskLineTimeConsumingPage(@Valid RobotTaskLineTimeConsumingPageReqVO pageReqVO) {
|
||||
PageResult<RobotTaskLineTimeConsumingDO> pageResult = taskLineTimeConsumingService.getTaskLineTimeConsumingPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, RobotTaskLineTimeConsumingRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出车辆行走路线耗时记录 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('robot:task-line-time-consuming:export')")
|
||||
@ApiAccessLog(operateType = EXPORT)
|
||||
public void exportTaskLineTimeConsumingExcel(@Valid RobotTaskLineTimeConsumingPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<RobotTaskLineTimeConsumingDO> list = taskLineTimeConsumingService.getTaskLineTimeConsumingPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "车辆行走路线耗时记录.xls", "数据", RobotTaskLineTimeConsumingRespVO.class,
|
||||
BeanUtils.toBean(list, RobotTaskLineTimeConsumingRespVO.class));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.log;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskTimeConsumingPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskTimeConsumingRespVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskTimeConsumingSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskTimeConsumingDO;
|
||||
import cn.iocoder.yudao.module.system.service.log.RobotTaskTimeConsumingService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
|
||||
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
|
||||
|
||||
|
||||
@Tag(name = "管理后台 - 车辆任务行程耗时")
|
||||
@RestController
|
||||
@RequestMapping("/system/consuming/robot-task-time-consuming")
|
||||
@Validated
|
||||
public class RobotTaskTimeConsumingController {
|
||||
|
||||
@Resource
|
||||
private RobotTaskTimeConsumingService robotTaskTimeConsumingService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建车辆任务行程耗时")
|
||||
@PreAuthorize("@ss.hasPermission('consuming:robot-task-time-consuming:create')")
|
||||
public CommonResult<Long> createRobotTaskTimeConsuming(@Valid @RequestBody RobotTaskTimeConsumingSaveReqVO createReqVO) {
|
||||
return success(robotTaskTimeConsumingService.createRobotTaskTimeConsuming(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新车辆任务行程耗时")
|
||||
@PreAuthorize("@ss.hasPermission('consuming:robot-task-time-consuming:update')")
|
||||
public CommonResult<Boolean> updateRobotTaskTimeConsuming(@Valid @RequestBody RobotTaskTimeConsumingSaveReqVO updateReqVO) {
|
||||
robotTaskTimeConsumingService.updateRobotTaskTimeConsuming(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除车辆任务行程耗时")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('consuming:robot-task-time-consuming:delete')")
|
||||
public CommonResult<Boolean> deleteRobotTaskTimeConsuming(@RequestParam("id") Long id) {
|
||||
robotTaskTimeConsumingService.deleteRobotTaskTimeConsuming(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得车辆任务行程耗时")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('consuming:robot-task-time-consuming:query')")
|
||||
public CommonResult<RobotTaskTimeConsumingRespVO> getRobotTaskTimeConsuming(@RequestParam("id") Long id) {
|
||||
RobotTaskTimeConsumingDO robotTaskTimeConsuming = robotTaskTimeConsumingService.getRobotTaskTimeConsuming(id);
|
||||
return success(BeanUtils.toBean(robotTaskTimeConsuming, RobotTaskTimeConsumingRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得车辆任务行程耗时分页")
|
||||
@PreAuthorize("@ss.hasPermission('consuming:robot-task-time-consuming:query')")
|
||||
public CommonResult<PageResult<RobotTaskTimeConsumingRespVO>> getRobotTaskTimeConsumingPage(@Valid RobotTaskTimeConsumingPageReqVO pageReqVO) {
|
||||
PageResult<RobotTaskTimeConsumingDO> pageResult = robotTaskTimeConsumingService.getRobotTaskTimeConsumingPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, RobotTaskTimeConsumingRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出车辆任务行程耗时 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('consuming:robot-task-time-consuming:export')")
|
||||
@ApiAccessLog(operateType = EXPORT)
|
||||
public void exportRobotTaskTimeConsumingExcel(@Valid RobotTaskTimeConsumingPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<RobotTaskTimeConsumingDO> list = robotTaskTimeConsumingService.getRobotTaskTimeConsumingPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "车辆任务行程耗时.xls", "数据", RobotTaskTimeConsumingRespVO.class,
|
||||
BeanUtils.toBean(list, RobotTaskTimeConsumingRespVO.class));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.log.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class RobotTaskLineTimeConsumingDTO {
|
||||
private String orderId;
|
||||
private List<RobotTaskLineTimeConsumingDetailDTO> list;
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.log.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class RobotTaskLineTimeConsumingDetailDTO {
|
||||
/**
|
||||
* 0:直线, 1:曲线
|
||||
*/
|
||||
private Integer lineType;
|
||||
/**
|
||||
* 行走路程(米)
|
||||
*/
|
||||
private String totalDistance;
|
||||
/**
|
||||
* 开始点
|
||||
*/
|
||||
private String fromSortNum;
|
||||
/**
|
||||
* 结束点
|
||||
*/
|
||||
private String toSortNum;
|
||||
/**
|
||||
* 行走总耗时(秒)
|
||||
*/
|
||||
private String timeConsuming;
|
||||
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.log.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class RobotWalkingDistanceDTO {
|
||||
private String orderId;
|
||||
private String totalDistance;
|
||||
private String checkDistance;
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.log.vo;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - 车辆行走路线耗时记录分页 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class RobotTaskLineTimeConsumingPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "任务号")
|
||||
private String taskNo;
|
||||
|
||||
@Schema(description = "robot_task_detail的id", example = "13949")
|
||||
private Long taskDetailId;
|
||||
|
||||
@Schema(description = "行走路程(米)")
|
||||
private String totalDistance;
|
||||
|
||||
@Schema(description = "0:直线, 1:曲线", example = "2")
|
||||
private Integer lineType;
|
||||
|
||||
@Schema(description = "开始点")
|
||||
private String fromSortNum;
|
||||
|
||||
@Schema(description = "结束点")
|
||||
private String toSortNum;
|
||||
|
||||
@Schema(description = "行走总耗时(秒)")
|
||||
private String totalTimeConsuming;
|
||||
|
||||
@Schema(description = "平均速度(米/秒)")
|
||||
private String averageSpeed;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
@Schema(description = "AGV编号")
|
||||
private String robotNo;
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.log.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
|
||||
@Schema(description = "管理后台 - 车辆行走路线耗时记录 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class RobotTaskLineTimeConsumingRespVO {
|
||||
|
||||
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8419")
|
||||
@ExcelProperty("主键ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "任务号")
|
||||
@ExcelProperty("任务号")
|
||||
private String taskNo;
|
||||
|
||||
@Schema(description = "robot_task_detail的id", example = "13949")
|
||||
@ExcelProperty("robot_task_detail的id")
|
||||
private Long taskDetailId;
|
||||
|
||||
@Schema(description = "行走路程(米)")
|
||||
@ExcelProperty("行走路程(米)")
|
||||
private String totalDistance;
|
||||
|
||||
@Schema(description = "0:直线, 1:曲线", example = "2")
|
||||
@ExcelProperty("0:直线, 1:曲线")
|
||||
private Integer lineType;
|
||||
|
||||
@Schema(description = "开始点")
|
||||
@ExcelProperty("开始点")
|
||||
private String fromSortNum;
|
||||
|
||||
@Schema(description = "结束点")
|
||||
@ExcelProperty("结束点")
|
||||
private String toSortNum;
|
||||
|
||||
@Schema(description = "行走总耗时(秒)")
|
||||
@ExcelProperty("行走总耗时(秒)")
|
||||
private String totalTimeConsuming;
|
||||
|
||||
@Schema(description = "平均速度(米/秒)")
|
||||
@ExcelProperty("平均速度(米/秒)")
|
||||
private String averageSpeed;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "AGV编号")
|
||||
@ExcelProperty("AGV编号")
|
||||
private String robotNo;
|
||||
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.log.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Schema(description = "管理后台 - 车辆行走路线耗时记录新增/修改 Request VO")
|
||||
@Data
|
||||
public class RobotTaskLineTimeConsumingSaveReqVO {
|
||||
|
||||
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8419")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "任务号")
|
||||
private String taskNo;
|
||||
|
||||
@Schema(description = "robot_task_detail的id", example = "13949")
|
||||
private Long taskDetailId;
|
||||
|
||||
@Schema(description = "行走路程(米)")
|
||||
private String totalDistance;
|
||||
|
||||
@Schema(description = "0:直线, 1:曲线", example = "2")
|
||||
private Integer lineType;
|
||||
|
||||
@Schema(description = "开始点")
|
||||
private String fromSortNum;
|
||||
|
||||
@Schema(description = "结束点")
|
||||
private String toSortNum;
|
||||
|
||||
@Schema(description = "行走总耗时(秒)")
|
||||
private String totalTimeConsuming;
|
||||
|
||||
@Schema(description = "平均速度(米/秒)")
|
||||
private String averageSpeed;
|
||||
|
||||
@Schema(description = "AGV编号")
|
||||
private String robotNo;
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.log.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - 车辆任务行程耗时分页 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class RobotTaskTimeConsumingPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "任务号")
|
||||
private String taskNo;
|
||||
|
||||
@Schema(description = "robot_task_detail的id", example = "3069")
|
||||
private Long taskDetailId;
|
||||
|
||||
@Schema(description = "取货层数")
|
||||
private Integer fromLocationStorey;
|
||||
|
||||
@Schema(description = "放货层数")
|
||||
private Integer toLocationStorey;
|
||||
|
||||
@Schema(description = "计算后的来源库位编号")
|
||||
private String fromLocationNo;
|
||||
|
||||
@Schema(description = "计算后的目标库位编号")
|
||||
private String toLocationNo;
|
||||
|
||||
@Schema(description = "行走的总路程(米)")
|
||||
private String totalDistance;
|
||||
|
||||
@Schema(description = "总耗时(秒)")
|
||||
private String totalTimeConsuming;
|
||||
|
||||
@Schema(description = "取货检测点到放货检测点的总路程(米)")
|
||||
private String checkDistance;
|
||||
|
||||
@Schema(description = "取货检测点到放货检测点的总总耗时(秒)")
|
||||
private String checkTimeConsuming;
|
||||
|
||||
@Schema(description = "取货耗时(秒)")
|
||||
private String pickTimeConsuming;
|
||||
|
||||
@Schema(description = "放货耗时(秒)")
|
||||
private String dropTimeConsuming;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
@Schema(description = "AGV编号")
|
||||
private String robotNo;
|
||||
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.log.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
|
||||
@Schema(description = "管理后台 - 车辆任务行程耗时 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class RobotTaskTimeConsumingRespVO {
|
||||
|
||||
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14459")
|
||||
@ExcelProperty("主键ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "任务号")
|
||||
@ExcelProperty("任务号")
|
||||
private String taskNo;
|
||||
|
||||
@Schema(description = "robot_task_detail的id", example = "3069")
|
||||
@ExcelProperty("robot_task_detail的id")
|
||||
private Long taskDetailId;
|
||||
|
||||
@Schema(description = "取货层数")
|
||||
@ExcelProperty("取货层数")
|
||||
private Integer fromLocationStorey;
|
||||
|
||||
@Schema(description = "放货层数")
|
||||
@ExcelProperty("放货层数")
|
||||
private Integer toLocationStorey;
|
||||
|
||||
@Schema(description = "计算后的来源库位编号")
|
||||
@ExcelProperty("计算后的来源库位编号")
|
||||
private String fromLocationNo;
|
||||
|
||||
@Schema(description = "计算后的目标库位编号")
|
||||
@ExcelProperty("计算后的目标库位编号")
|
||||
private String toLocationNo;
|
||||
|
||||
@Schema(description = "行走的总路程(米)")
|
||||
@ExcelProperty("行走的总路程(米)")
|
||||
private String totalDistance;
|
||||
|
||||
@Schema(description = "总耗时(秒)")
|
||||
@ExcelProperty("总耗时(秒)")
|
||||
private String totalTimeConsuming;
|
||||
|
||||
@Schema(description = "取货检测点到放货检测点的总路程(米)")
|
||||
@ExcelProperty("取货检测点到放货检测点的总路程(米)")
|
||||
private String checkDistance;
|
||||
|
||||
@Schema(description = "取货检测点到放货检测点的总总耗时(秒)")
|
||||
@ExcelProperty("取货检测点到放货检测点的总总耗时(秒)")
|
||||
private String checkTimeConsuming;
|
||||
|
||||
@Schema(description = "取货耗时(秒)")
|
||||
@ExcelProperty("取货耗时(秒)")
|
||||
private String pickTimeConsuming;
|
||||
|
||||
@Schema(description = "放货耗时(秒)")
|
||||
@ExcelProperty("放货耗时(秒)")
|
||||
private String dropTimeConsuming;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "AGV编号")
|
||||
@ExcelProperty("AGV编号")
|
||||
private String robotNo;
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.log.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Schema(description = "管理后台 - 车辆任务行程耗时新增/修改 Request VO")
|
||||
@Data
|
||||
public class RobotTaskTimeConsumingSaveReqVO {
|
||||
|
||||
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14459")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "任务号")
|
||||
private String taskNo;
|
||||
|
||||
@Schema(description = "robot_task_detail的id", example = "3069")
|
||||
private Long taskDetailId;
|
||||
|
||||
@Schema(description = "取货层数")
|
||||
private Integer fromLocationStorey;
|
||||
|
||||
@Schema(description = "放货层数")
|
||||
private Integer toLocationStorey;
|
||||
|
||||
@Schema(description = "计算后的来源库位编号")
|
||||
private String fromLocationNo;
|
||||
|
||||
@Schema(description = "计算后的目标库位编号")
|
||||
private String toLocationNo;
|
||||
|
||||
@Schema(description = "行走的总路程(米)")
|
||||
private String totalDistance;
|
||||
|
||||
@Schema(description = "总耗时(秒)")
|
||||
private String totalTimeConsuming;
|
||||
|
||||
@Schema(description = "取货检测点到放货检测点的总路程(米)")
|
||||
private String checkDistance;
|
||||
|
||||
@Schema(description = "取货检测点到放货检测点的总总耗时(秒)")
|
||||
private String checkTimeConsuming;
|
||||
|
||||
@Schema(description = "取货耗时(秒)")
|
||||
private String pickTimeConsuming;
|
||||
|
||||
@Schema(description = "放货耗时(秒)")
|
||||
private String dropTimeConsuming;
|
||||
|
||||
@Schema(description = "AGV编号")
|
||||
private String robotNo;
|
||||
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.log;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
/**
|
||||
* 车辆行走路线耗时记录 DO
|
||||
*
|
||||
* @author 陈宾顺
|
||||
*/
|
||||
@TableName("robot_task_line_time_consuming")
|
||||
@KeySequence("robot_task_line_time_consuming_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class RobotTaskLineTimeConsumingDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 任务号
|
||||
*/
|
||||
private String taskNo;
|
||||
/**
|
||||
* robot_task_detail的id
|
||||
*/
|
||||
private Long taskDetailId;
|
||||
/**
|
||||
* 行走路程(米)
|
||||
*/
|
||||
private String totalDistance;
|
||||
/**
|
||||
* 0:直线, 1:曲线
|
||||
*/
|
||||
private Integer lineType;
|
||||
/**
|
||||
* 开始点
|
||||
*/
|
||||
private String fromSortNum;
|
||||
/**
|
||||
* 结束点
|
||||
*/
|
||||
private String toSortNum;
|
||||
/**
|
||||
* 行走总耗时(秒)
|
||||
*/
|
||||
private String totalTimeConsuming;
|
||||
/**
|
||||
* 平均速度(米/秒)
|
||||
*/
|
||||
private String averageSpeed;
|
||||
/**
|
||||
* AGV编号
|
||||
*/
|
||||
private String robotNo;
|
||||
}
|
@ -0,0 +1,83 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.log;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
/**
|
||||
* 车辆任务行程耗时 DO
|
||||
*
|
||||
* @author 陈宾顺
|
||||
*/
|
||||
@TableName("robot_task_time_consuming")
|
||||
@KeySequence("robot_task_time_consuming_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class RobotTaskTimeConsumingDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 任务号
|
||||
*/
|
||||
private String taskNo;
|
||||
/**
|
||||
* robot_task_detail的id
|
||||
*/
|
||||
private Long taskDetailId;
|
||||
/**
|
||||
* 取货层数
|
||||
*/
|
||||
private Integer fromLocationStorey;
|
||||
/**
|
||||
* 放货层数
|
||||
*/
|
||||
private Integer toLocationStorey;
|
||||
/**
|
||||
* 计算后的来源库位编号
|
||||
*/
|
||||
private String fromLocationNo;
|
||||
/**
|
||||
* 计算后的目标库位编号
|
||||
*/
|
||||
private String toLocationNo;
|
||||
/**
|
||||
* 行走的总路程(米)
|
||||
*/
|
||||
private String totalDistance;
|
||||
/**
|
||||
* 总耗时(秒)
|
||||
*/
|
||||
private String totalTimeConsuming;
|
||||
/**
|
||||
* 取货检测点到放货检测点的总路程(米)
|
||||
*/
|
||||
private String checkDistance;
|
||||
/**
|
||||
* 取货检测点到放货检测点的总总耗时(秒)
|
||||
*/
|
||||
private String checkTimeConsuming;
|
||||
/**
|
||||
* 取货耗时(秒)
|
||||
*/
|
||||
private String pickTimeConsuming;
|
||||
/**
|
||||
* 放货耗时(秒)
|
||||
*/
|
||||
private String dropTimeConsuming;
|
||||
/**
|
||||
* AGV编号
|
||||
*/
|
||||
private String robotNo;
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.log;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskLineTimeConsumingPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskLineTimeConsumingDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 车辆行走路线耗时记录 Mapper
|
||||
*
|
||||
* @author 陈宾顺
|
||||
*/
|
||||
@Mapper
|
||||
public interface RobotTaskLineTimeConsumingMapper extends BaseMapperX<RobotTaskLineTimeConsumingDO> {
|
||||
|
||||
default PageResult<RobotTaskLineTimeConsumingDO> selectPage(RobotTaskLineTimeConsumingPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<RobotTaskLineTimeConsumingDO>()
|
||||
.eqIfPresent(RobotTaskLineTimeConsumingDO::getTaskNo, reqVO.getTaskNo())
|
||||
.eqIfPresent(RobotTaskLineTimeConsumingDO::getTaskDetailId, reqVO.getTaskDetailId())
|
||||
.eqIfPresent(RobotTaskLineTimeConsumingDO::getTotalDistance, reqVO.getTotalDistance())
|
||||
.eqIfPresent(RobotTaskLineTimeConsumingDO::getLineType, reqVO.getLineType())
|
||||
.eqIfPresent(RobotTaskLineTimeConsumingDO::getFromSortNum, reqVO.getFromSortNum())
|
||||
.eqIfPresent(RobotTaskLineTimeConsumingDO::getToSortNum, reqVO.getToSortNum())
|
||||
.eqIfPresent(RobotTaskLineTimeConsumingDO::getTotalTimeConsuming, reqVO.getTotalTimeConsuming())
|
||||
.eqIfPresent(RobotTaskLineTimeConsumingDO::getAverageSpeed, reqVO.getAverageSpeed())
|
||||
.betweenIfPresent(RobotTaskLineTimeConsumingDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(RobotTaskLineTimeConsumingDO::getId));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.log;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.dto.RobotWalkingDistanceDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskTimeConsumingPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskTimeConsumingDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 车辆任务行程耗时 Mapper
|
||||
*
|
||||
* @author 陈宾顺
|
||||
*/
|
||||
@Mapper
|
||||
public interface RobotTaskTimeConsumingMapper extends BaseMapperX<RobotTaskTimeConsumingDO> {
|
||||
|
||||
default PageResult<RobotTaskTimeConsumingDO> selectPage(RobotTaskTimeConsumingPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<RobotTaskTimeConsumingDO>()
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getTaskNo, reqVO.getTaskNo())
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getTaskDetailId, reqVO.getTaskDetailId())
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getFromLocationStorey, reqVO.getFromLocationStorey())
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getToLocationStorey, reqVO.getToLocationStorey())
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getFromLocationNo, reqVO.getFromLocationNo())
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getToLocationNo, reqVO.getToLocationNo())
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getTotalDistance, reqVO.getTotalDistance())
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getTotalTimeConsuming, reqVO.getTotalTimeConsuming())
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getCheckDistance, reqVO.getCheckDistance())
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getCheckTimeConsuming, reqVO.getCheckTimeConsuming())
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getPickTimeConsuming, reqVO.getPickTimeConsuming())
|
||||
.eqIfPresent(RobotTaskTimeConsumingDO::getDropTimeConsuming, reqVO.getDropTimeConsuming())
|
||||
.betweenIfPresent(RobotTaskTimeConsumingDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(RobotTaskTimeConsumingDO::getId));
|
||||
}
|
||||
|
||||
void updateEntity(RobotTaskTimeConsumingDO data);
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package cn.iocoder.yudao.module.system.enums.robot.task.event;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum RobotTaskEventTypeEnum {
|
||||
DISTRIBUTION("DISTRIBUTION","任务分配"),
|
||||
DONE("DONE","任务完成"),
|
||||
TIME("TIME","统计时间");
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private final String type;
|
||||
|
||||
private final String msg;
|
||||
|
||||
}
|
@ -0,0 +1,219 @@
|
||||
package cn.iocoder.yudao.module.system.mq.consumer.task;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
||||
import cn.iocoder.yudao.module.system.api.robot.vo.RobotWorkStatusDTO;
|
||||
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.RobotTaskTimeConsumingSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskTimeConsumingDO;
|
||||
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.enums.robot.CommandTypeEnum;
|
||||
import cn.iocoder.yudao.module.system.enums.robot.RobotTaskTypeEnum;
|
||||
import cn.iocoder.yudao.module.system.enums.robot.task.event.RobotTaskEventTypeEnum;
|
||||
import cn.iocoder.yudao.module.system.mq.message.task.TaskDistributionMessage;
|
||||
import cn.iocoder.yudao.module.system.service.log.RobotTaskTimeConsumingService;
|
||||
import cn.iocoder.yudao.module.system.service.robot.RobotTaskDetailService;
|
||||
import cn.iocoder.yudao.module.system.service.robot.RobotTaskService;
|
||||
import cn.iocoder.yudao.module.system.service.statistics.RobotWorkingHoursStatisticsService;
|
||||
import cn.iocoder.yudao.module.system.util.redis.RedisUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class TaskDistributionConsumer {
|
||||
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
@Resource
|
||||
private RobotTaskService taskService;
|
||||
|
||||
@Resource
|
||||
private RobotTaskDetailService robotTaskDetailService;
|
||||
|
||||
@Resource
|
||||
private RobotTaskTimeConsumingService robotTaskTimeConsumingService;
|
||||
|
||||
@Resource
|
||||
private RobotWorkingHoursStatisticsService robotWorkingHoursStatisticsService;
|
||||
|
||||
@EventListener
|
||||
@Async
|
||||
public void onMessage(TaskDistributionMessage message) {
|
||||
log.info("111111, 任务id : {}", JSON.toJSONString(message));
|
||||
TenantContextHolder.setTenantId(1L);
|
||||
if (RobotTaskEventTypeEnum.DISTRIBUTION.getType().equals(message.getEventType())) {
|
||||
RobotTaskDetailDO taskDetail = robotTaskDetailService.getTaskDetail(Long.valueOf(message.getMessage()));
|
||||
robotWorkingHoursStatisticsService.createFreeTime(taskDetail.getRobotNo());
|
||||
RobotTaskDO task = taskService.getTask(taskDetail.getRobotTaskId());
|
||||
RobotTaskTimeConsumingSaveReqVO data = new RobotTaskTimeConsumingSaveReqVO()
|
||||
.setTaskNo(task.getTaskNo())
|
||||
.setTaskDetailId(taskDetail.getId())
|
||||
.setFromLocationStorey(taskDetail.getFromLocationStorey())
|
||||
.setFromLocationNo(taskDetail.getFromLocationNo())
|
||||
.setToLocationStorey(taskDetail.getToLocationStorey())
|
||||
.setToLocationNo(taskDetail.getToLocationNo())
|
||||
.setRobotNo(taskDetail.getRobotNo());
|
||||
robotTaskTimeConsumingService.createRobotTaskTimeConsuming(data);
|
||||
} else if (RobotTaskEventTypeEnum.TIME.getType().equals(message.getEventType())) {
|
||||
RobotWorkStatusDTO data = JSON.parseObject(message.getMessage(), RobotWorkStatusDTO.class);
|
||||
addTaskTimeLog(data);
|
||||
} else if (RobotTaskEventTypeEnum.DONE.getType().equals(message.getEventType())) {
|
||||
String orderId = message.getMessage();
|
||||
String endTime = DateUtils.getYearMonthDayHourMinuteSecon();
|
||||
RobotTaskDetailDO taskDetail = robotTaskDetailService.getTaskDetail(Long.valueOf(orderId));
|
||||
if (RobotTaskTypeEnum.TAKE_RELEASE.getType().equals(taskDetail.getTaskType())) {
|
||||
takeRelease(taskDetail, endTime, orderId);
|
||||
} else if (RobotTaskTypeEnum.MOVE.getType().equals(taskDetail.getTaskType())) {
|
||||
moveTask(taskDetail, endTime, orderId);
|
||||
} else if (RobotTaskTypeEnum.TAKE.getType().equals(taskDetail.getTaskType())) {
|
||||
takeTask(taskDetail, endTime, orderId);
|
||||
} else if (RobotTaskTypeEnum.RELEASE.getType().equals(taskDetail.getTaskType())) {
|
||||
releaseTask(taskDetail, endTime, orderId);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void releaseTask(RobotTaskDetailDO taskDetail, String endTime, String orderId) {
|
||||
Duration duration = Duration.between(taskDetail.getStartTime(), taskDetail.getEndTime());
|
||||
//总时间
|
||||
Long totalTimeConsuming = duration.getSeconds();
|
||||
|
||||
String startDropKey = RobotTaskChcheConstant.ROBOT_TASK_START_DROP + orderId;
|
||||
Object startDropObj = redisUtil.get(startDropKey);
|
||||
|
||||
Long dropTimeConsuming = getSeconds(startDropObj, endTime);
|
||||
|
||||
RobotTaskTimeConsumingDO data = new RobotTaskTimeConsumingDO()
|
||||
.setTaskDetailId(Long.valueOf(orderId))
|
||||
.setTotalTimeConsuming(totalTimeConsuming + "")
|
||||
.setDropTimeConsuming(dropTimeConsuming + "");
|
||||
robotTaskTimeConsumingService.updateConsuming(data);
|
||||
}
|
||||
|
||||
private void takeTask(RobotTaskDetailDO taskDetail, String endTime, String orderId) {
|
||||
Duration duration = Duration.between(taskDetail.getStartTime(), taskDetail.getEndTime());
|
||||
//总时间
|
||||
Long totalTimeConsuming = duration.getSeconds();
|
||||
|
||||
String startPickKey = RobotTaskChcheConstant.ROBOT_TASK_START_PICK + orderId;
|
||||
Object startPickObj = redisUtil.get(startPickKey);
|
||||
|
||||
String endPickKey = RobotTaskChcheConstant.ROBOT_TASK_END_PICK + orderId;
|
||||
Object endPickObj = redisUtil.get(endPickKey);
|
||||
|
||||
Long pickTimeConsuming = getSeconds(startPickObj, endPickObj);
|
||||
|
||||
RobotTaskTimeConsumingDO data = new RobotTaskTimeConsumingDO()
|
||||
.setTaskDetailId(Long.valueOf(orderId))
|
||||
.setTotalTimeConsuming(totalTimeConsuming + "")
|
||||
.setPickTimeConsuming(pickTimeConsuming + "");
|
||||
robotTaskTimeConsumingService.updateConsuming(data);
|
||||
}
|
||||
|
||||
private void moveTask(RobotTaskDetailDO taskDetail, String endTime, String orderId) {
|
||||
Duration duration = Duration.between(taskDetail.getStartTime(), taskDetail.getEndTime());
|
||||
//总时间
|
||||
Long totalTimeConsuming = duration.getSeconds();
|
||||
RobotTaskTimeConsumingDO data = new RobotTaskTimeConsumingDO()
|
||||
.setTaskDetailId(Long.valueOf(orderId))
|
||||
.setTotalTimeConsuming(totalTimeConsuming + "");
|
||||
robotTaskTimeConsumingService.updateConsuming(data);
|
||||
}
|
||||
|
||||
private void takeRelease(RobotTaskDetailDO taskDetail, String endTime, String orderId) {
|
||||
Duration duration = Duration.between(taskDetail.getStartTime(), taskDetail.getEndTime());
|
||||
//总时间
|
||||
Long totalTimeConsuming = duration.getSeconds();
|
||||
|
||||
String startPickKey = RobotTaskChcheConstant.ROBOT_TASK_START_PICK + orderId;
|
||||
Object startPickObj = redisUtil.get(startPickKey);
|
||||
|
||||
String endPickKey = RobotTaskChcheConstant.ROBOT_TASK_END_PICK + orderId;
|
||||
Object endPickObj = redisUtil.get(endPickKey);
|
||||
|
||||
Long pickTimeConsuming = getSeconds(startPickObj, endPickObj);
|
||||
|
||||
String startDropKey = RobotTaskChcheConstant.ROBOT_TASK_START_DROP + orderId;
|
||||
Object startDropObj = redisUtil.get(startDropKey);
|
||||
|
||||
Long dropTimeConsuming = getSeconds(startDropObj, taskDetail.getEndTime());
|
||||
Long checkTimeConsuming = getSeconds(startPickObj, taskDetail.getEndTime());
|
||||
|
||||
RobotTaskTimeConsumingDO data = new RobotTaskTimeConsumingDO()
|
||||
.setTaskDetailId(Long.valueOf(orderId))
|
||||
.setTotalTimeConsuming(totalTimeConsuming + "")
|
||||
.setPickTimeConsuming(pickTimeConsuming + "")
|
||||
.setDropTimeConsuming(dropTimeConsuming + "")
|
||||
.setCheckTimeConsuming(checkTimeConsuming + "");
|
||||
robotTaskTimeConsumingService.updateConsuming(data);
|
||||
}
|
||||
|
||||
public Long getSeconds(Object startObj, Object endObj) {
|
||||
String startObjStr = startObj.toString();
|
||||
String endObjStr = endObj.toString();
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
|
||||
LocalDateTime startTime = LocalDateTime.parse(startObjStr, formatter);
|
||||
LocalDateTime endTime = LocalDateTime.parse(endObjStr, formatter);
|
||||
Duration duration = Duration.between(startTime, endTime);
|
||||
return duration.getSeconds();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 统计工作时间
|
||||
*
|
||||
* @param data
|
||||
*/
|
||||
private void addTaskTimeLog(RobotWorkStatusDTO data) {
|
||||
if (CommandTypeEnum.WORK_PICK_UP_GOODS_MOVE_TO_CHECK.getType().equals(data.getCommandType())
|
||||
&& RobotExecutionStateConstant.DONE.equals(Integer.valueOf(data.getExecutionState()))) {
|
||||
startPickUp(data);
|
||||
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS_MOVE_TO_CHECK.getType().equals(data.getCommandType())
|
||||
&& RobotExecutionStateConstant.DOING.equals(Integer.valueOf(data.getExecutionState()))) {
|
||||
endPickUp(data);
|
||||
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS_MOVE_TO_CHECK.getType().equals(data.getCommandType())
|
||||
&& RobotExecutionStateConstant.DONE.equals(Integer.valueOf(data.getExecutionState()))) {
|
||||
startDrop(data);
|
||||
}
|
||||
}
|
||||
|
||||
private void startDrop(RobotWorkStatusDTO data) {
|
||||
String key = RobotTaskChcheConstant.ROBOT_TASK_START_DROP + data.getOrderId();
|
||||
String yearMonthDayHourMinuteSecon = DateUtils.getYearMonthDayHourMinuteSecon();
|
||||
redisUtil.set(key, yearMonthDayHourMinuteSecon, 86400);
|
||||
log.info("111111任务:{}, 开始放货:{}", data.getOrderId(), yearMonthDayHourMinuteSecon);
|
||||
}
|
||||
|
||||
private void endPickUp(RobotWorkStatusDTO data) {
|
||||
String key = RobotTaskChcheConstant.ROBOT_TASK_END_PICK + data.getOrderId();
|
||||
String yearMonthDayHourMinuteSecon = DateUtils.getYearMonthDayHourMinuteSecon();
|
||||
redisUtil.set(key, yearMonthDayHourMinuteSecon, 86400);
|
||||
log.info("111111任务:{}, 取货完成:{}", data.getOrderId(), yearMonthDayHourMinuteSecon);
|
||||
}
|
||||
|
||||
private void startPickUp(RobotWorkStatusDTO data) {
|
||||
String key = RobotTaskChcheConstant.ROBOT_TASK_START_PICK + data.getOrderId();
|
||||
String yearMonthDayHourMinuteSecon = DateUtils.getYearMonthDayHourMinuteSecon();
|
||||
redisUtil.set(key, yearMonthDayHourMinuteSecon, 86400);
|
||||
log.info("111111任务:{}, 开始取货:{}", data.getOrderId(), yearMonthDayHourMinuteSecon);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package cn.iocoder.yudao.module.system.mq.message.task;
|
||||
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
|
||||
public class TaskDistributionMessage extends ApplicationEvent {
|
||||
private String msg;
|
||||
private String eventType;
|
||||
public TaskDistributionMessage(Object source, String msg,String eventType) {
|
||||
super(source);
|
||||
this.msg = msg;
|
||||
this.eventType = eventType;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
public String getEventType() {
|
||||
return eventType;
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package cn.iocoder.yudao.module.system.mq.producer.task;
|
||||
|
||||
import cn.iocoder.yudao.module.system.mq.message.RemoteSendMessage;
|
||||
import cn.iocoder.yudao.module.system.mq.message.task.TaskDistributionMessage;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class TaskDistributionProducer {
|
||||
|
||||
@Resource
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
public void sendSmsSendMessage(TaskDistributionMessage message) {
|
||||
applicationContext.publishEvent(message);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package cn.iocoder.yudao.module.system.service.log;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskLineTimeConsumingPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskLineTimeConsumingSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskLineTimeConsumingDO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* 车辆行走路线耗时记录 Service 接口
|
||||
*
|
||||
* @author 陈宾顺
|
||||
*/
|
||||
public interface RobotTaskLineTimeConsumingService extends IService<RobotTaskLineTimeConsumingDO> {
|
||||
|
||||
/**
|
||||
* 创建车辆行走路线耗时记录
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createTaskLineTimeConsuming(@Valid RobotTaskLineTimeConsumingSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新车辆行走路线耗时记录
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateTaskLineTimeConsuming(@Valid RobotTaskLineTimeConsumingSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除车辆行走路线耗时记录
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteTaskLineTimeConsuming(Long id);
|
||||
|
||||
/**
|
||||
* 获得车辆行走路线耗时记录
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 车辆行走路线耗时记录
|
||||
*/
|
||||
RobotTaskLineTimeConsumingDO getTaskLineTimeConsuming(Long id);
|
||||
|
||||
/**
|
||||
* 获得车辆行走路线耗时记录分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 车辆行走路线耗时记录分页
|
||||
*/
|
||||
PageResult<RobotTaskLineTimeConsumingDO> getTaskLineTimeConsumingPage(RobotTaskLineTimeConsumingPageReqVO pageReqVO);
|
||||
|
||||
void addTaskLineTimeConsuming(String message);
|
||||
}
|
@ -0,0 +1,144 @@
|
||||
package cn.iocoder.yudao.module.system.service.log;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.dto.RobotTaskLineTimeConsumingDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.dto.RobotTaskLineTimeConsumingDetailDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.dto.RobotWalkingDistanceDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskLineTimeConsumingPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskLineTimeConsumingSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskLineTimeConsumingDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.log.RobotTaskLineTimeConsumingMapper;
|
||||
import cn.iocoder.yudao.module.system.service.robot.RobotTaskDetailService;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.TASK_LINE_TIME_CONSUMING_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* 车辆行走路线耗时记录 Service 实现类
|
||||
*
|
||||
* @author 陈宾顺
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class RobotTaskLineTimeConsumingServiceImpl extends ServiceImpl<RobotTaskLineTimeConsumingMapper, RobotTaskLineTimeConsumingDO> implements RobotTaskLineTimeConsumingService {
|
||||
|
||||
@Resource
|
||||
private RobotTaskLineTimeConsumingMapper taskLineTimeConsumingMapper;
|
||||
|
||||
@Resource
|
||||
private RobotTaskDetailService robotTaskDetailService;
|
||||
|
||||
@Override
|
||||
public Long createTaskLineTimeConsuming(RobotTaskLineTimeConsumingSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
RobotTaskLineTimeConsumingDO taskLineTimeConsuming = BeanUtils.toBean(createReqVO, RobotTaskLineTimeConsumingDO.class);
|
||||
taskLineTimeConsumingMapper.insert(taskLineTimeConsuming);
|
||||
// 返回
|
||||
return taskLineTimeConsuming.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTaskLineTimeConsuming(RobotTaskLineTimeConsumingSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateTaskLineTimeConsumingExists(updateReqVO.getId());
|
||||
// 更新
|
||||
RobotTaskLineTimeConsumingDO updateObj = BeanUtils.toBean(updateReqVO, RobotTaskLineTimeConsumingDO.class);
|
||||
taskLineTimeConsumingMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteTaskLineTimeConsuming(Long id) {
|
||||
// 校验存在
|
||||
validateTaskLineTimeConsumingExists(id);
|
||||
// 删除
|
||||
taskLineTimeConsumingMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validateTaskLineTimeConsumingExists(Long id) {
|
||||
if (taskLineTimeConsumingMapper.selectById(id) == null) {
|
||||
throw exception(TASK_LINE_TIME_CONSUMING_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public RobotTaskLineTimeConsumingDO getTaskLineTimeConsuming(Long id) {
|
||||
return taskLineTimeConsumingMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<RobotTaskLineTimeConsumingDO> getTaskLineTimeConsumingPage(RobotTaskLineTimeConsumingPageReqVO pageReqVO) {
|
||||
return taskLineTimeConsumingMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTaskLineTimeConsuming(String message) {
|
||||
RobotTaskLineTimeConsumingDTO data = JSON.parseObject(message , RobotTaskLineTimeConsumingDTO.class);
|
||||
Long orderId = Long.valueOf(data.getOrderId());
|
||||
String taskNo = robotTaskDetailService.getTaskNoByDetailId(orderId);
|
||||
RobotTaskDetailDO taskDetail = robotTaskDetailService.getTaskDetail(orderId);
|
||||
List<RobotTaskLineTimeConsumingDetailDTO> list = data.getList();
|
||||
List<RobotTaskLineTimeConsumingDO> addList = new ArrayList<>();
|
||||
for (RobotTaskLineTimeConsumingDetailDTO v : list) {
|
||||
RobotTaskLineTimeConsumingDO line = BeanUtils.toBean(v, RobotTaskLineTimeConsumingDO.class);
|
||||
line.setTaskNo(taskNo);
|
||||
line.setTaskDetailId(orderId);
|
||||
line.setRobotNo(taskDetail.getRobotNo());
|
||||
line.setTotalTimeConsuming(v.getTimeConsuming());
|
||||
if (ObjectUtil.isNotEmpty(v.getTimeConsuming()) && ObjectUtil.isNotEmpty(v.getTotalDistance())) {
|
||||
BigDecimal distance = new BigDecimal(v.getTotalDistance());
|
||||
BigDecimal timeConsuming = new BigDecimal(v.getTimeConsuming());
|
||||
BigDecimal divide = distance.divide(timeConsuming,1, RoundingMode.HALF_UP);
|
||||
line.setAverageSpeed(divide.toString());
|
||||
}
|
||||
addList.add(line);
|
||||
}
|
||||
taskLineTimeConsumingMapper.insertBatch(addList);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package cn.iocoder.yudao.module.system.service.log;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.dto.RobotWalkingDistanceDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskTimeConsumingPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskTimeConsumingSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskTimeConsumingDO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* 车辆任务行程耗时 Service 接口
|
||||
*
|
||||
* @author 陈宾顺
|
||||
*/
|
||||
public interface RobotTaskTimeConsumingService extends IService<RobotTaskTimeConsumingDO> {
|
||||
|
||||
/**
|
||||
* 创建车辆任务行程耗时
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createRobotTaskTimeConsuming(@Valid RobotTaskTimeConsumingSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新车辆任务行程耗时
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateRobotTaskTimeConsuming(@Valid RobotTaskTimeConsumingSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除车辆任务行程耗时
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteRobotTaskTimeConsuming(Long id);
|
||||
|
||||
/**
|
||||
* 获得车辆任务行程耗时
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 车辆任务行程耗时
|
||||
*/
|
||||
RobotTaskTimeConsumingDO getRobotTaskTimeConsuming(Long id);
|
||||
|
||||
/**
|
||||
* 获得车辆任务行程耗时分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 车辆任务行程耗时分页
|
||||
*/
|
||||
PageResult<RobotTaskTimeConsumingDO> getRobotTaskTimeConsumingPage(RobotTaskTimeConsumingPageReqVO pageReqVO);
|
||||
|
||||
void updateTime(RobotWalkingDistanceDTO data);
|
||||
|
||||
void updateConsuming(RobotTaskTimeConsumingDO data);
|
||||
}
|
@ -0,0 +1,90 @@
|
||||
package cn.iocoder.yudao.module.system.service.log;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.dto.RobotWalkingDistanceDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskTimeConsumingPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskTimeConsumingSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskTimeConsumingDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.log.RobotTaskTimeConsumingMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.ROBOT_TASK_TIME_CONSUMING_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* 车辆任务行程耗时 Service 实现类
|
||||
*
|
||||
* @author 陈宾顺
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class RobotTaskTimeConsumingServiceImpl extends ServiceImpl<RobotTaskTimeConsumingMapper, RobotTaskTimeConsumingDO> implements RobotTaskTimeConsumingService {
|
||||
|
||||
@Resource
|
||||
private RobotTaskTimeConsumingMapper robotTaskTimeConsumingMapper;
|
||||
|
||||
@Override
|
||||
public Long createRobotTaskTimeConsuming(RobotTaskTimeConsumingSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
RobotTaskTimeConsumingDO robotTaskTimeConsuming = BeanUtils.toBean(createReqVO, RobotTaskTimeConsumingDO.class);
|
||||
robotTaskTimeConsumingMapper.insert(robotTaskTimeConsuming);
|
||||
// 返回
|
||||
return robotTaskTimeConsuming.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateRobotTaskTimeConsuming(RobotTaskTimeConsumingSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateRobotTaskTimeConsumingExists(updateReqVO.getId());
|
||||
// 更新
|
||||
RobotTaskTimeConsumingDO updateObj = BeanUtils.toBean(updateReqVO, RobotTaskTimeConsumingDO.class);
|
||||
robotTaskTimeConsumingMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteRobotTaskTimeConsuming(Long id) {
|
||||
// 校验存在
|
||||
validateRobotTaskTimeConsumingExists(id);
|
||||
// 删除
|
||||
robotTaskTimeConsumingMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validateRobotTaskTimeConsumingExists(Long id) {
|
||||
if (robotTaskTimeConsumingMapper.selectById(id) == null) {
|
||||
throw exception(ROBOT_TASK_TIME_CONSUMING_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public RobotTaskTimeConsumingDO getRobotTaskTimeConsuming(Long id) {
|
||||
return robotTaskTimeConsumingMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<RobotTaskTimeConsumingDO> getRobotTaskTimeConsumingPage(RobotTaskTimeConsumingPageReqVO pageReqVO) {
|
||||
return robotTaskTimeConsumingMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTime(RobotWalkingDistanceDTO data) {
|
||||
RobotTaskTimeConsumingDO updateObj = BeanUtils.toBean(data, RobotTaskTimeConsumingDO.class);
|
||||
updateObj.setTaskDetailId(Long.valueOf(data.getOrderId()));
|
||||
updateConsuming(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateConsuming(RobotTaskTimeConsumingDO data) {
|
||||
RobotTaskTimeConsumingDO entity = BeanUtils.toBean(data, RobotTaskTimeConsumingDO.class);
|
||||
robotTaskTimeConsumingMapper.updateEntity(entity);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package cn.iocoder.yudao.module.system.service.mqtt;
|
||||
|
||||
|
||||
import cn.iocoder.yudao.module.system.service.log.RobotTaskLineTimeConsumingService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class PlanningRobotLineDistanceServiceImpl implements MqttService{
|
||||
|
||||
@Resource
|
||||
private RobotTaskLineTimeConsumingService taskLineTimeConsumingService;
|
||||
|
||||
@Override
|
||||
public void analysisMessage(String message) {
|
||||
taskLineTimeConsumingService.addTaskLineTimeConsuming(message);
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package cn.iocoder.yudao.module.system.service.mqtt;
|
||||
|
||||
import cn.iocoder.yudao.module.system.api.robot.dto.RobotGenericsDataDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.log.dto.RobotWalkingDistanceDTO;
|
||||
import cn.iocoder.yudao.module.system.service.log.RobotTaskTimeConsumingService;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class PlanningRobotWalkingDistanceServiceImpl implements MqttService{
|
||||
|
||||
@Resource
|
||||
private RobotTaskTimeConsumingService robotTaskTimeConsumingService;
|
||||
|
||||
@Override
|
||||
public void analysisMessage(String message) {
|
||||
RobotWalkingDistanceDTO data = JSON.parseObject(message , RobotWalkingDistanceDTO.class);
|
||||
robotTaskTimeConsumingService.updateTime(data);
|
||||
}
|
||||
}
|
@ -265,4 +265,9 @@ public interface RobotInformationService extends IService<RobotInformationDO> {
|
||||
|
||||
void initRobotInformation();
|
||||
|
||||
/**
|
||||
* 锁车
|
||||
* @param robotNo
|
||||
*/
|
||||
void lockRobot(String robotNo);
|
||||
}
|
||||
|
@ -389,6 +389,11 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
informationMapper.initRobotInformation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lockRobot(String robotNo) {
|
||||
informationMapper.updateRobotTaskModel(robotNo,ZeroOneEnum.ZERO.getType());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 校验IP地址是否合法
|
||||
@ -424,12 +429,12 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
}
|
||||
}
|
||||
|
||||
RemoteControllerInformationDO remoteControllerInformation = controllerInformationMapper.selectOne(new LambdaQueryWrapper<RemoteControllerInformationDO>()
|
||||
/*RemoteControllerInformationDO remoteControllerInformation = controllerInformationMapper.selectOne(new LambdaQueryWrapper<RemoteControllerInformationDO>()
|
||||
.eq(RemoteControllerInformationDO::getRobotNo, robotInformationDO.getRobotNo())
|
||||
.last("limit 1"));
|
||||
if (ObjectUtil.isNotEmpty(remoteControllerInformation)) {
|
||||
throw exception(ROBOT_DOING_REMOTE);
|
||||
}
|
||||
}*/
|
||||
|
||||
if (!updateReqVO.getRobotNo().equals(robotInformationDO.getRobotNo())
|
||||
|| !updateReqVO.getMacAddress().equals(robotInformationDO.getMacAddress())) {
|
||||
|
@ -60,6 +60,10 @@ import cn.iocoder.yudao.module.system.enums.robot.task.RobotCommandTypeEnum;
|
||||
//import cn.iocoder.yudao.module.system.service.robot.job.RobotCommonTaskService;
|
||||
import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskManualInterventionEnum;
|
||||
import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskStageEnum;
|
||||
import cn.iocoder.yudao.module.system.enums.robot.task.event.RobotTaskEventTypeEnum;
|
||||
import cn.iocoder.yudao.module.system.mq.message.task.TaskDistributionMessage;
|
||||
import cn.iocoder.yudao.module.system.mq.producer.remote.RemoteControllerProducer;
|
||||
import cn.iocoder.yudao.module.system.mq.producer.task.TaskDistributionProducer;
|
||||
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.log.UserOperationLogService;
|
||||
@ -172,10 +176,10 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
|
||||
private RobotTaskDetailActionLogService taskDetailActionLogService;
|
||||
|
||||
@Resource
|
||||
private RobotWorkingHoursStatisticsService robotWorkingHoursStatisticsService;
|
||||
private RobotSimulationService robotSimulationService;
|
||||
|
||||
@Resource
|
||||
private RobotSimulationService robotSimulationService;
|
||||
private TaskDistributionProducer taskDistributionProducer;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@ -534,7 +538,7 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
|
||||
robotInformationDO.setRobotTaskModel(RobotTaskModelEnum.REJECTION.getType());
|
||||
}*/
|
||||
// robotInformationDO.setRobotTaskModel(RobotTaskModelEnum.REJECTION.getType());
|
||||
// robotInformationDO.setRobotStatus(RobotStatusEnum.STAND_BY.getType());
|
||||
robotInformationDO.setRobotStatus(RobotStatusEnum.STAND_BY.getType());
|
||||
}
|
||||
|
||||
informationMapper.updateById(robotInformationDOS);
|
||||
@ -644,7 +648,13 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
|
||||
}
|
||||
taskDetailActionLogService.createTaskDetailActionLog(logOne);
|
||||
|
||||
robotWorkingHoursStatisticsService.createFreeTime(taskAssignDTO.getRobotNo());
|
||||
try {
|
||||
TaskDistributionMessage mess = new TaskDistributionMessage(this,taskAssignDTO.getOrderId()+"",
|
||||
RobotTaskEventTypeEnum.DISTRIBUTION.getType());
|
||||
taskDistributionProducer.sendSmsSendMessage(mess);
|
||||
} catch (Exception e) {
|
||||
log.info(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -211,7 +211,7 @@ public class CycleServiceImpl implements CycleService {
|
||||
* @return
|
||||
*/
|
||||
public RobotTaskDO getTaskData(String incrementByKey, RobotTaskDO v ) {
|
||||
String taskNoStr = znConfigConstant.getMoveNo() + DateUtils.getYearMonthDay() + incrementByKey;
|
||||
String taskNoStr = znConfigConstant.getTaskNo() + DateUtils.getYearMonthDay() + incrementByKey;
|
||||
RobotTaskDO task = new RobotTaskDO();
|
||||
BeanUtils.copyProperties(v, task);
|
||||
task.setRemainingCycleNumber(v.getRemainingCycleNumber() - 1);
|
||||
|
@ -558,14 +558,14 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService {
|
||||
return;
|
||||
}
|
||||
|
||||
/*WareHouseLocationDO nextLocation = locationMapper.selectOne(new LambdaQueryWrapperX<WareHouseLocationDO>()
|
||||
WareHouseLocationDO nextLocation = locationMapper.selectOne(new LambdaQueryWrapperX<WareHouseLocationDO>()
|
||||
.eq(WareHouseLocationDO::getId, toLocation.getMapItemId())
|
||||
.eq(WareHouseLocationDO::getLocationStorey, toLocation.getLocationStorey() - 1)
|
||||
.last("limit 1"));
|
||||
if (ObjectUtil.isNotEmpty(nextLocation) && ObjectUtil.isNotEmpty(nextLocation.getLocationTotalHeight())) {
|
||||
pathPlanning.setReleaseHeight(Double.valueOf(nextLocation.getLocationTotalHeight() + ""));
|
||||
return;
|
||||
}*/
|
||||
}
|
||||
|
||||
Integer locationStorey = toLocation.getLocationStorey() - 1;
|
||||
double height = locationStorey * znConfigConstant.getRobotConfig().getDefaultTrayHeight();
|
||||
@ -580,10 +580,10 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService {
|
||||
* @param fromLocation
|
||||
*/
|
||||
private void pathPlanningSetTakeHeight(TaskToPathPlanningDTO pathPlanning, WareHouseLocationDO fromLocation) {
|
||||
/*if (ObjectUtil.isNotEmpty(fromLocation.getLocationTotalHeight())) {
|
||||
if (ObjectUtil.isNotEmpty(fromLocation.getLocationTotalHeight())) {
|
||||
pathPlanning.setTakeHeight(Double.valueOf(fromLocation.getLocationTotalHeight() + ""));
|
||||
return;
|
||||
}*/
|
||||
}
|
||||
Integer locationStorey = fromLocation.getLocationStorey();
|
||||
double height = locationStorey * znConfigConstant.getRobotConfig().getDefaultTrayHeight();
|
||||
log.info("取货设置默认取货高度 :{}", height);
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.actionlog.RobotOperationLogMapper">
|
||||
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.log.RobotOperationLogMapper">
|
||||
|
||||
<!--
|
||||
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||
|
@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.log.RobotTaskTimeConsumingMapper">
|
||||
|
||||
<!--通过主键修改数据-->
|
||||
<update id="updateEntity">
|
||||
update robot_task_time_consuming
|
||||
<set>
|
||||
<if test="taskNo != null and taskNo != ''">
|
||||
task_no = #{taskNo},
|
||||
</if>
|
||||
<if test="taskDetailId != null">
|
||||
task_detail_id = #{taskDetailId},
|
||||
</if>
|
||||
<if test="fromLocationStorey != null">
|
||||
from_location_storey = #{fromLocationStorey},
|
||||
</if>
|
||||
<if test="toLocationStorey != null">
|
||||
to_location_storey = #{toLocationStorey},
|
||||
</if>
|
||||
<if test="fromLocationNo != null and fromLocationNo != ''">
|
||||
from_location_no = #{fromLocationNo},
|
||||
</if>
|
||||
<if test="toLocationNo != null and toLocationNo != ''">
|
||||
to_location_no = #{toLocationNo},
|
||||
</if>
|
||||
<if test="totalDistance != null and totalDistance != ''">
|
||||
total_distance = #{totalDistance},
|
||||
</if>
|
||||
<if test="totalTimeConsuming != null and totalTimeConsuming != ''">
|
||||
total_time_consuming = #{totalTimeConsuming},
|
||||
</if>
|
||||
<if test="checkDistance != null and checkDistance != ''">
|
||||
check_distance = #{checkDistance},
|
||||
</if>
|
||||
<if test="checkTimeConsuming != null and checkTimeConsuming != ''">
|
||||
check_time_consuming = #{checkTimeConsuming},
|
||||
</if>
|
||||
<if test="pickTimeConsuming != null and pickTimeConsuming != ''">
|
||||
pick_time_consuming = #{pickTimeConsuming},
|
||||
</if>
|
||||
<if test="dropTimeConsuming != null and dropTimeConsuming != ''">
|
||||
drop_time_consuming = #{dropTimeConsuming},
|
||||
</if>
|
||||
<if test="creator != null and creator != ''">
|
||||
creator = #{creator},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time = #{createTime},
|
||||
</if>
|
||||
<if test="updater != null and updater != ''">
|
||||
updater = #{updater},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time = #{updateTime},
|
||||
</if>
|
||||
<if test="deleted != null">
|
||||
deleted = #{deleted},
|
||||
</if>
|
||||
<if test="tenantId != null">
|
||||
tenant_id = #{tenantId},
|
||||
</if>
|
||||
<if test="robotNo != null and robotNo != ''">
|
||||
robot_no = #{robotNo},
|
||||
</if>
|
||||
</set>
|
||||
where task_detail_id = #{taskDetailId}
|
||||
</update>
|
||||
</mapper>
|
@ -131,9 +131,10 @@
|
||||
update
|
||||
robot_information
|
||||
set
|
||||
robot_status = '3',
|
||||
robot_task_model = #{robotTaskModel}
|
||||
where
|
||||
robot_no = = #{robotNo}
|
||||
robot_no = #{robotNo}
|
||||
</update>
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user