优化
This commit is contained in:
parent
fc34d7f3b8
commit
41bf5bed58
@ -13,6 +13,7 @@ import java.util.List;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class PathToRobotChangeXYArgDTO {
|
public class PathToRobotChangeXYArgDTO {
|
||||||
private List<PathToRobotChangeXYArgMovePoseDTO> pose2ds;
|
private List<PathToRobotChangeXYArgMovePoseDTO> pose2ds;
|
||||||
|
private PathToRobotChangeXYArgMovePoseDTO pose2d;
|
||||||
private PathToRobotChangeXYArgPoseDTO backPose;
|
private PathToRobotChangeXYArgPoseDTO backPose;
|
||||||
private PathToRobotChangeXYArgPoseDTO cargoPose;
|
private PathToRobotChangeXYArgPoseDTO cargoPose;
|
||||||
private Double height;
|
private Double height;
|
||||||
|
@ -23,11 +23,14 @@ public class CommonApiImpl implements CommonApi {
|
|||||||
try {
|
try {
|
||||||
String str = JSON.toJSONString(obj);
|
String str = JSON.toJSONString(obj);
|
||||||
mqttUtils.pub(topic, JSON.toJSONString(obj));
|
mqttUtils.pub(topic, JSON.toJSONString(obj));
|
||||||
/*if (str.length() > 510) {
|
if(topic.equals("AGV_POSE")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (str.length() > 510) {
|
||||||
log.info("MQTT消息发送成功topic :{}, 内容 :{}",topic, str.substring(0, 500));
|
log.info("MQTT消息发送成功topic :{}, 内容 :{}",topic, str.substring(0, 500));
|
||||||
}else {
|
}else {
|
||||||
log.info("MQTT消息发送成功topic :{}, 内容 :{}",topic, str);
|
log.info("MQTT消息发送成功topic :{}, 内容 :{}",topic, str);
|
||||||
}*/
|
}
|
||||||
} catch (MqttException e) {
|
} catch (MqttException e) {
|
||||||
log.info("MQTT消息发送异常 :{}",e);
|
log.info("MQTT消息发送异常 :{}",e);
|
||||||
}
|
}
|
||||||
@ -37,11 +40,14 @@ public class CommonApiImpl implements CommonApi {
|
|||||||
public void commonMethodStr(String str, String topic) {
|
public void commonMethodStr(String str, String topic) {
|
||||||
try {
|
try {
|
||||||
mqttUtils.pub(topic, str);
|
mqttUtils.pub(topic, str);
|
||||||
/*if (str.length() > 510) {
|
if(topic.equals("AGV_POSE")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (str.length() > 510) {
|
||||||
log.info("MQTT消息发送成功topic :{}, 内容 :{}",topic, str.substring(0, 500));
|
log.info("MQTT消息发送成功topic :{}, 内容 :{}",topic, str.substring(0, 500));
|
||||||
}else {
|
}else {
|
||||||
log.info("MQTT消息发送成功topic :{}, 内容 :{}",topic, str);
|
log.info("MQTT消息发送成功topic :{}, 内容 :{}",topic, str);
|
||||||
}*/
|
}
|
||||||
} catch (MqttException e) {
|
} catch (MqttException e) {
|
||||||
log.info("MQTT消息发送异常 :{}",e);
|
log.info("MQTT消息发送异常 :{}",e);
|
||||||
}
|
}
|
||||||
|
@ -33,9 +33,10 @@ management:
|
|||||||
|
|
||||||
# MQTT
|
# MQTT
|
||||||
mqtt:
|
mqtt:
|
||||||
host: tcp://123.57.12.40:1883
|
# host: tcp://123.57.12.40:1883
|
||||||
# host: tcp://127.0.0.1:1883
|
# host: tcp://127.0.0.1:1883
|
||||||
# host: tcp://10.10.7.116:1883
|
# host: tcp://10.10.7.116:1883
|
||||||
|
host: tcp://10.10.7.114:1883
|
||||||
username: adminuser
|
username: adminuser
|
||||||
password: adminuser
|
password: adminuser
|
||||||
qos: 2
|
qos: 2
|
||||||
|
@ -140,8 +140,9 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
|
|
||||||
if (!RobotStatusCodeEnum.SUCCESS.getType().equals(robotCompleteTaskDTO.getStatusCode())) {
|
if (!RobotStatusCodeEnum.SUCCESS.getType().equals(robotCompleteTaskDTO.getStatusCode())) {
|
||||||
log.info("车机上报异常 :{}", JSON.toJSONString(robotCompleteTaskDTO));
|
log.info("车机上报异常 :{}", JSON.toJSONString(robotCompleteTaskDTO));
|
||||||
closeTask(robotCompleteTaskDTO);//todo 取不了和放不了的异常
|
//todo 取不了和放不了的异常
|
||||||
redisUtil.del(robotDoingActionKey);
|
redisUtil.del(robotDoingActionKey);
|
||||||
|
closeTask(robotCompleteTaskDTO);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -396,6 +397,12 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void closeTask(RobotCompleteTaskDTO robotCompleteTaskDTO) {
|
public void closeTask(RobotCompleteTaskDTO robotCompleteTaskDTO) {
|
||||||
|
|
||||||
|
if (RobotStatusCodeEnum.EXCEEDING_SECONDS.getType().equals(robotCompleteTaskDTO.getStatusCode())) {
|
||||||
|
doTaskContinue(robotCompleteTaskDTO);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PPCloseOrder(robotCompleteTaskDTO);
|
PPCloseOrder(robotCompleteTaskDTO);
|
||||||
// taskService.closeTaskDetail(robotCompleteTaskDTO.getOrderId().toString(),robotCompleteTaskDTO.getMac());
|
// taskService.closeTaskDetail(robotCompleteTaskDTO.getOrderId().toString(),robotCompleteTaskDTO.getMac());
|
||||||
String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac());
|
String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac());
|
||||||
@ -470,6 +477,12 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
warnMsgService.sendWarnMsgToWebsocket(warnMsg.getWarnMsg());
|
warnMsgService.sendWarnMsgToWebsocket(warnMsg.getWarnMsg());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void doTaskContinue(RobotCompleteTaskDTO robotCompleteTaskDTO) {
|
||||||
|
log.info("恢复任务");
|
||||||
|
String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac());
|
||||||
|
robotInformationService.doTaskContinue(robotNo, true);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理充电中
|
* 处理充电中
|
||||||
*
|
*
|
||||||
@ -566,13 +579,17 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_TAKE.getType());
|
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_TAKE.getType());
|
||||||
} else if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(commandType)) {
|
} else if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(commandType)) {
|
||||||
logOne.setActionMsg("车辆正在取货");
|
logOne.setActionMsg("车辆正在取货");
|
||||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING.getType());
|
if (!RobotTaskStageEnum.GO_RELEASE.getType().equals(taskStage)) {
|
||||||
|
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING.getType());
|
||||||
|
}
|
||||||
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(commandType)) {
|
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(commandType)) {
|
||||||
logOne.setActionMsg("车辆正在放货");
|
logOne.setActionMsg("车辆正在放货");
|
||||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING.getType());
|
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING.getType());
|
||||||
} else if (CommandTypeEnum.MOVE_POSES.getType().equals(commandType)) {
|
} else if (CommandTypeEnum.MOVE_POSES.getType().equals(commandType)) {
|
||||||
logOne.setActionMsg("车辆正在前往" + robotTaskDetailDO.getToLocationNo() + "放货");
|
logOne.setActionMsg("车辆正在前往" + robotTaskDetailDO.getToLocationNo() + "放货");
|
||||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_RELEASE.getType());
|
if (!RobotTaskStageEnum.DONE.getType().equals(taskStage)) {
|
||||||
|
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_RELEASE.getType());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (PathTaskTypeEnum.CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())
|
} else if (PathTaskTypeEnum.CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())
|
||||||
@ -604,7 +621,9 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_TAKE.getType());
|
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_TAKE.getType());
|
||||||
} else if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(commandType)) {
|
} else if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(commandType)) {
|
||||||
logOne.setActionMsg("车辆正在取货");
|
logOne.setActionMsg("车辆正在取货");
|
||||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING.getType());
|
if (!RobotTaskStageEnum.DONE.getType().equals(taskStage)) {
|
||||||
|
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING.getType());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (PathTaskTypeEnum.RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
|
} else if (PathTaskTypeEnum.RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
|
||||||
@ -613,7 +632,9 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_RELEASE.getType());
|
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_RELEASE.getType());
|
||||||
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(commandType)) {
|
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(commandType)) {
|
||||||
logOne.setActionMsg("车辆正在放货");
|
logOne.setActionMsg("车辆正在放货");
|
||||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING.getType());
|
if (!RobotTaskStageEnum.DONE.getType().equals(taskStage)) {
|
||||||
|
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING.getType());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,9 +4,15 @@ 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.api.robot.vo.RobotWorkStatusDTO;
|
||||||
import cn.iocoder.yudao.module.system.constant.robot.RobotExecutionStateConstant;
|
import cn.iocoder.yudao.module.system.constant.robot.RobotExecutionStateConstant;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotOperationLogSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotOperationLogSaveReqVO;
|
||||||
|
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.enums.common.ZeroOneEnum;
|
import cn.iocoder.yudao.module.system.enums.common.ZeroOneEnum;
|
||||||
import cn.iocoder.yudao.module.system.enums.path.PathIsReachEnum;
|
import cn.iocoder.yudao.module.system.enums.path.PathIsReachEnum;
|
||||||
import cn.iocoder.yudao.module.system.enums.robot.CommandTypeEnum;
|
import cn.iocoder.yudao.module.system.enums.robot.CommandTypeEnum;
|
||||||
|
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.service.log.RobotOperationLogService;
|
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.path.PathPlanningService;
|
||||||
import cn.iocoder.yudao.module.system.service.robot.RobotInformationService;
|
import cn.iocoder.yudao.module.system.service.robot.RobotInformationService;
|
||||||
@ -32,6 +38,9 @@ public class RobotWorkStatusApiImpl implements RobotWorkStatusApi {
|
|||||||
@Resource
|
@Resource
|
||||||
private PathPlanningService pathPlanningService;
|
private PathPlanningService pathPlanningService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RobotTaskDetailMapper robotTaskDetailMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void robotWorkStatus(String message) {
|
public void robotWorkStatus(String message) {
|
||||||
log.info("111111作业实时行为上报: {}", message);
|
log.info("111111作业实时行为上报: {}", message);
|
||||||
@ -61,6 +70,59 @@ public class RobotWorkStatusApiImpl implements RobotWorkStatusApi {
|
|||||||
, data.getCommandType(), PathIsReachEnum.END_WORK.getType());
|
, data.getCommandType(), PathIsReachEnum.END_WORK.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(data.getCommandType())
|
||||||
|
&& RobotExecutionStateConstant.DONE.equals(Integer.valueOf(data.getExecutionState()))
|
||||||
|
&& WorkProgressEnum.FORK_OFFSET.getType().equals(data.getWorkProgress())) {
|
||||||
|
setTakeDone(data.getOrderId());
|
||||||
|
}else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(data.getCommandType())
|
||||||
|
&& RobotExecutionStateConstant.DONE.equals(Integer.valueOf(data.getExecutionState()))
|
||||||
|
&& WorkProgressEnum.FORK_OFFSET.getType().equals(data.getWorkProgress())) {
|
||||||
|
setReleaseDone(data.getOrderId());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setReleaseDone(String orderId) {
|
||||||
|
RobotTaskDetailDO data = new RobotTaskDetailDO();
|
||||||
|
data.setId(Long.valueOf(orderId));
|
||||||
|
data.setTaskStage(RobotTaskStageEnum.DONE.getType());
|
||||||
|
data.setTaskStatus(RobotTaskDetailStatusEnum.DONE.getType());
|
||||||
|
robotTaskDetailMapper.updateRobotDetailById(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setTakeDone(String orderId) {
|
||||||
|
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(orderId);
|
||||||
|
if (RobotTaskTypeEnum.TAKE_RELEASE.getType().equals(robotTaskDetailDO.getTaskType())) {
|
||||||
|
RobotTaskDetailDO data = new RobotTaskDetailDO();
|
||||||
|
data.setId(robotTaskDetailDO.getId());
|
||||||
|
data.setTaskStage(RobotTaskStageEnum.GO_RELEASE.getType());
|
||||||
|
robotTaskDetailMapper.updateRobotDetailById(data);
|
||||||
|
}else if (RobotTaskTypeEnum.TAKE.getType().equals(robotTaskDetailDO.getTaskType())){
|
||||||
|
RobotTaskDetailDO data = new RobotTaskDetailDO();
|
||||||
|
data.setId(robotTaskDetailDO.getId());
|
||||||
|
data.setTaskStage(RobotTaskStageEnum.DONE.getType());
|
||||||
|
data.setTaskStatus(RobotTaskDetailStatusEnum.DONE.getType());
|
||||||
|
robotTaskDetailMapper.updateRobotDetailById(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.config.poperties;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.system.config.poperties.dto.RobotConfig;
|
||||||
|
import cn.iocoder.yudao.module.system.config.poperties.dto.RobotDoingAction;
|
||||||
|
import cn.iocoder.yudao.module.system.config.poperties.dto.Task;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
import org.springframework.cloud.context.config.annotation.RefreshScope;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@RefreshScope
|
||||||
|
@Component
|
||||||
|
@ConfigurationProperties(prefix = "zn")
|
||||||
|
public class ZnConfigConstant {
|
||||||
|
private String taskNo;
|
||||||
|
private String moveNo;
|
||||||
|
private String chargeNo;
|
||||||
|
private String cameraSecretKey;
|
||||||
|
private Boolean doCycle;
|
||||||
|
private Boolean laneAutoMove;
|
||||||
|
private Long robotPositionCacheTime;
|
||||||
|
private Boolean cycleDoAutoMove;
|
||||||
|
private String fullElectricity;
|
||||||
|
private String taskNeedSingle;
|
||||||
|
private String locationNumberReduce;
|
||||||
|
private RobotDoingAction robotDoingAction;
|
||||||
|
private Task task ;
|
||||||
|
private RobotConfig robotConfig;
|
||||||
|
private Boolean openRateLimiter;
|
||||||
|
private Boolean isSimulation ;
|
||||||
|
private Boolean sendRobotInitPose;
|
||||||
|
private Boolean synchronousAllMapNode;
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.config.poperties.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class RobotConfig {
|
||||||
|
private Double offsetHeight;
|
||||||
|
private Double defaultTrayHeight;
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.config.poperties.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class RobotDoingAction {
|
||||||
|
private Long doingActionCacheTime;
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.config.poperties.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class Task {
|
||||||
|
private Boolean checkSkuInfo;
|
||||||
|
private Long taskChcheTime;
|
||||||
|
}
|
@ -153,7 +153,7 @@ public class RobotInformationController {
|
|||||||
@Operation(summary = "恢复任务")
|
@Operation(summary = "恢复任务")
|
||||||
@PreAuthorize("@ss.hasPermission('robot:information:doTaskContinue')")
|
@PreAuthorize("@ss.hasPermission('robot:information:doTaskContinue')")
|
||||||
public CommonResult<Boolean> doTaskContinue(@RequestParam("robotNo") String robotNo) {
|
public CommonResult<Boolean> doTaskContinue(@RequestParam("robotNo") String robotNo) {
|
||||||
informationService.doTaskContinue(robotNo);
|
informationService.doTaskContinue(robotNo,false);
|
||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,8 @@ public enum RobotStatusCodeEnum {
|
|||||||
FAIL_JSON("10001","入参JSON解析失败"),
|
FAIL_JSON("10001","入参JSON解析失败"),
|
||||||
FAIL_SYSTEM("10002","系统内部异常"),
|
FAIL_SYSTEM("10002","系统内部异常"),
|
||||||
FAIL_UN_KNOW("10003","未知错误"),
|
FAIL_UN_KNOW("10003","未知错误"),
|
||||||
FAIL_UN_SUPPOD("10004","未支持该指令执行");
|
FAIL_UN_SUPPOD("10004","未支持该指令执行"),
|
||||||
|
EXCEEDING_SECONDS("10017","PP发送的任务超过5秒到达");
|
||||||
/**
|
/**
|
||||||
* 类型
|
* 类型
|
||||||
*/
|
*/
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.enums.robot.task;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum WorkProgressEnum {
|
||||||
|
|
||||||
|
FORK_OFFSET("FORK_OFFSET","取放货");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型
|
||||||
|
*/
|
||||||
|
private final String type;
|
||||||
|
private final String msg;
|
||||||
|
}
|
@ -84,9 +84,11 @@ public class RobotJob {
|
|||||||
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_DISTRIBUTE_LOCK.getKey());
|
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_DISTRIBUTE_LOCK.getKey());
|
||||||
if (lock.tryLock()){
|
if (lock.tryLock()){
|
||||||
try {
|
try {
|
||||||
log.info("----下发自动充电任务----");
|
log.info("----111111下发自动充电任务----");
|
||||||
autoChargeService.autoChargeJob();
|
autoChargeService.autoChargeJob();
|
||||||
} finally {
|
} catch (Exception e) {
|
||||||
|
log.info("自动充电异常 :{}",e);
|
||||||
|
} finally {
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
@ -105,9 +107,11 @@ public class RobotJob {
|
|||||||
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_DISTRIBUTE_LOCK.getKey());
|
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_DISTRIBUTE_LOCK.getKey());
|
||||||
if (lock.tryLock()){
|
if (lock.tryLock()){
|
||||||
try {
|
try {
|
||||||
log.info("----下发任务给路径规划----");
|
log.info("----111111下发任务给路径规划----");
|
||||||
robotPathPlanningService.sendTaskToPP();
|
robotPathPlanningService.sendTaskToPP();
|
||||||
} finally {
|
} catch (Exception e) {
|
||||||
|
log.info("----分配任务异常---- :{}",e);
|
||||||
|
} finally {
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
@ -127,12 +131,16 @@ public class RobotJob {
|
|||||||
|
|
||||||
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_ADD_LOCK.getKey());
|
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_ADD_LOCK.getKey());
|
||||||
if (lock.tryLock()){
|
if (lock.tryLock()){
|
||||||
|
|
||||||
try {
|
try {
|
||||||
log.info("----创建循环任务----");
|
log.info("----111111创建循环任务----");
|
||||||
cycleService.cycleTaskJob();
|
cycleService.cycleTaskJob();
|
||||||
} finally {
|
} catch (Exception e) {
|
||||||
|
log.error("创建循环任务异常 :{}",e);
|
||||||
|
} finally {
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
}else {
|
}else {
|
||||||
log.info("下发任务给路径规划未获取到锁");
|
log.info("下发任务给路径规划未获取到锁");
|
||||||
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
||||||
@ -173,7 +181,9 @@ public class RobotJob {
|
|||||||
log.info("----统计时长开始----");
|
log.info("----统计时长开始----");
|
||||||
TenantContextHolder.setTenantId(1L);
|
TenantContextHolder.setTenantId(1L);
|
||||||
robotWorkingHoursStatisticsService.statisticsRobotDuration();
|
robotWorkingHoursStatisticsService.statisticsRobotDuration();
|
||||||
} finally {
|
} catch (Exception e) {
|
||||||
|
log.info("统计工作时长异常 :{}",e);
|
||||||
|
} finally {
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
|
@ -11,12 +11,14 @@ import cn.iocoder.yudao.module.system.util.redis.RedisUtil;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
@Component
|
@Component
|
||||||
|
@ -162,7 +162,7 @@ public interface RobotInformationService extends IService<RobotInformationDO> {
|
|||||||
* 继续做任务
|
* 继续做任务
|
||||||
* @param robotNo
|
* @param robotNo
|
||||||
*/
|
*/
|
||||||
void doTaskContinue(String robotNo);
|
void doTaskContinue(String robotNo,Boolean isRobot);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -162,13 +162,10 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
@Value("${zn.is_simulation:false}")
|
@Value("${zn.is_simulation:false}")
|
||||||
private Boolean isSimulation;
|
private Boolean isSimulation;
|
||||||
|
|
||||||
@Value("${zn.restore_task_restart:true}")
|
|
||||||
private Boolean restoreTaskRestart;
|
|
||||||
|
|
||||||
@Value("${zn.full_electricity:95}")
|
@Value("${zn.full_electricity:95}")
|
||||||
private String fullElectricity;
|
private String fullElectricity;
|
||||||
|
|
||||||
@Value("${zn.path_planning.task_chche_time:604800}")
|
@Value("${zn.task.task_chche_time:604800}")
|
||||||
private Long taskChcheTime;
|
private Long taskChcheTime;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
@ -369,17 +366,17 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
validateInformationExists(updateReqVO.getId());
|
validateInformationExists(updateReqVO.getId());
|
||||||
RobotInformationDO robotInformationDO = informationMapper.selectById(updateReqVO.getId());
|
RobotInformationDO robotInformationDO = informationMapper.selectById(updateReqVO.getId());
|
||||||
|
|
||||||
if (RobotStatusEnum.STAND_BY.getType().equals(robotInformationDO.getRobotStatus()) ) {
|
if (RobotStatusEnum.STAND_BY.getType().equals(robotInformationDO.getRobotStatus())) {
|
||||||
PositionMapItemDO positionMapItem = positionMapItemMapper.selectOne(new LambdaQueryWrapper<PositionMapItemDO>()
|
PositionMapItemDO positionMapItem = positionMapItemMapper.selectOne(new LambdaQueryWrapper<PositionMapItemDO>()
|
||||||
.eq(PositionMapItemDO::getRobotNo, robotInformationDO.getRobotNo())
|
.eq(PositionMapItemDO::getRobotNo, robotInformationDO.getRobotNo())
|
||||||
.eq(PositionMapItemDO::getUseStatus, UseStatusEnum.USEING.getType())
|
.eq(PositionMapItemDO::getUseStatus, UseStatusEnum.USEING.getType())
|
||||||
.eq(PositionMapItemDO::getType, PositionMapItemEnum.STOP.getType())
|
.eq(PositionMapItemDO::getType, PositionMapItemEnum.STOP.getType())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
if (ObjectUtil.isNotEmpty(positionMapItem) && ObjectUtil.isEmpty(updateReqVO.getFloorAreaJson())) {
|
if (ObjectUtil.isNotEmpty(positionMapItem) && ObjectUtil.isEmpty(updateReqVO.getFloorAreaJson())) {
|
||||||
log.info("车辆 :{} ,停靠在 :{},",robotInformationDO.getRobotNo(), positionMapItem.getPositionMapId());
|
log.info("车辆 :{} ,停靠在 :{},", robotInformationDO.getRobotNo(), positionMapItem.getPositionMapId());
|
||||||
throw exception(ROBOT_PART_AREA);
|
throw exception(ROBOT_PART_AREA);
|
||||||
}else if (ObjectUtil.isNotEmpty(positionMapItem) && ObjectUtil.isNotEmpty(updateReqVO.getFloorAreaJson())
|
} else if (ObjectUtil.isNotEmpty(positionMapItem) && ObjectUtil.isNotEmpty(updateReqVO.getFloorAreaJson())
|
||||||
&& !updateReqVO.getFloorAreaJson().contains(positionMapItem.getPositionMapId())) {
|
&& !updateReqVO.getFloorAreaJson().contains(positionMapItem.getPositionMapId())) {
|
||||||
throw exception(ROBOT_PART_AREA);
|
throw exception(ROBOT_PART_AREA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1167,7 +1164,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void doTaskContinue(String robotNo) {
|
public void doTaskContinue(String robotNo, Boolean isRobot) {
|
||||||
|
|
||||||
RobotTaskDetailActionLogDO actionLog = taskDetailActionLogService.getOriginalLastTaskByRobotNo(robotNo);
|
RobotTaskDetailActionLogDO actionLog = taskDetailActionLogService.getOriginalLastTaskByRobotNo(robotNo);
|
||||||
if (ObjectUtil.isEmpty(actionLog)) {
|
if (ObjectUtil.isEmpty(actionLog)) {
|
||||||
@ -1208,16 +1205,20 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
|
|
||||||
TaskToPathPlanningDTO pathPlanning = JSONUtil.toBean((String) o, TaskToPathPlanningDTO.class);
|
TaskToPathPlanningDTO pathPlanning = JSONUtil.toBean((String) o, TaskToPathPlanningDTO.class);
|
||||||
|
|
||||||
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_DISTRIBUTE_LOCK.getKey());
|
if (isRobot) {
|
||||||
if (lock.tryLock()) {
|
resendToPP(pathPlanning, actionLog, robotInformationDO);
|
||||||
try {
|
|
||||||
resendToPP(pathPlanning, actionLog, robotInformationDO);
|
|
||||||
} finally {
|
|
||||||
lock.unlock();
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
log.info("下发任务给路径规划未获取到锁");
|
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_DISTRIBUTE_LOCK.getKey());
|
||||||
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
if (lock.tryLock()) {
|
||||||
|
try {
|
||||||
|
resendToPP(pathPlanning, actionLog, robotInformationDO);
|
||||||
|
} finally {
|
||||||
|
lock.unlock();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.info("下发任务给路径规划未获取到锁");
|
||||||
|
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
||||||
@ -1254,9 +1255,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
List<TaskRobotNoLimittationAreaDTO> robotNoLimitions = Arrays.asList(taskRobotNoLimittationAreaDTO);
|
List<TaskRobotNoLimittationAreaDTO> robotNoLimitions = Arrays.asList(taskRobotNoLimittationAreaDTO);
|
||||||
pathPlanning.setRobotNoLimitationAreaDTOS(robotNoLimitions);
|
pathPlanning.setRobotNoLimitationAreaDTOS(robotNoLimitions);
|
||||||
|
|
||||||
if (!isSimulation || !restoreTaskRestart) {
|
resendToPPData(pathPlanning, actionLog, robotInformationDO, false);
|
||||||
resendToPPData(pathPlanning, actionLog, robotInformationDO, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
List<TaskToPathPlanningDTO> pathPlanningList = new ArrayList<>();
|
List<TaskToPathPlanningDTO> pathPlanningList = new ArrayList<>();
|
||||||
pathPlanningList.add(pathPlanning);
|
pathPlanningList.add(pathPlanning);
|
||||||
@ -1329,27 +1328,35 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
Object cargoDetected = redisUtil.get(cargoDetectedKey);
|
Object cargoDetected = redisUtil.get(cargoDetectedKey);
|
||||||
if (ObjectUtil.isNotEmpty(cargoDetected) && RobotStatusCodeConstant.CARGO_DETECTED.equals(Boolean.parseBoolean(String.valueOf(cargoDetected)))) {
|
if (ObjectUtil.isNotEmpty(cargoDetected) && RobotStatusCodeConstant.CARGO_DETECTED.equals(Boolean.parseBoolean(String.valueOf(cargoDetected)))) {
|
||||||
//说明取货完成
|
//说明取货完成
|
||||||
pathPlanning.setTakeLevel(null);
|
takeDone(pathPlanning,robotTaskDetail);
|
||||||
pathPlanning.setTakeGroupId(null);
|
} else if (!RobotTaskStageEnum.UN_START.getType().equals(robotTaskDetail.getTaskStage())
|
||||||
pathPlanning.setTakeLocationNumber(null);
|
&& !RobotTaskStageEnum.GO_TAKE.getType().equals(robotTaskDetail.getTaskStage())
|
||||||
pathPlanning.setTakePointId(null);
|
&& !RobotTaskStageEnum.TAKEING.getType().equals(robotTaskDetail.getTaskStage())) {
|
||||||
pathPlanning.setTakeOffsetHeight(null);
|
takeDone(pathPlanning,robotTaskDetail);
|
||||||
pathPlanning.setTakeOffsetHeight(null);
|
|
||||||
pathPlanning.setTaskType(PathTaskTypeToRobotEnum.DROP_OFF_GOODS.getType());
|
|
||||||
WareHouseLocationDO wareHouseLocation = wareHouseLocationMapper.selectById(robotTaskDetail.getFromLocationId());
|
|
||||||
if (wareHouseLocation.getTaskId().equals(robotTaskDetail.getTakeId()) && LocationLockEnum.NO.getType().equals(wareHouseLocation.getLocationLock())) {
|
|
||||||
wareHouseLocation.setSkuInfo(null);
|
|
||||||
wareHouseLocation.setSkuNumber(0L);
|
|
||||||
wareHouseLocation.setLocationLock(LocationLockEnum.YES.getType());
|
|
||||||
wareHouseLocation.setLocationUseStatus(LocationUseStatusEnum.NO.getType());
|
|
||||||
wareHouseLocationMapper.updateById(wareHouseLocation);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
takeCheck(robotTaskDetail.getFromLocationId(), robotTaskDetail.getRobotTaskId(), isRemote);
|
takeCheck(robotTaskDetail.getFromLocationId(), robotTaskDetail.getRobotTaskId(), isRemote);
|
||||||
}
|
}
|
||||||
releaseCheck(robotTaskDetail.getToLocationId(), robotTaskDetail.getRobotTaskId());
|
releaseCheck(robotTaskDetail.getToLocationId(), robotTaskDetail.getRobotTaskId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void takeDone(TaskToPathPlanningDTO pathPlanning,RobotTaskDetailDO robotTaskDetail) {
|
||||||
|
pathPlanning.setTakeLevel(null);
|
||||||
|
pathPlanning.setTakeGroupId(null);
|
||||||
|
pathPlanning.setTakeLocationNumber(null);
|
||||||
|
pathPlanning.setTakePointId(null);
|
||||||
|
pathPlanning.setTakeOffsetHeight(null);
|
||||||
|
pathPlanning.setTakeOffsetHeight(null);
|
||||||
|
pathPlanning.setTaskType(PathTaskTypeToRobotEnum.DROP_OFF_GOODS.getType());
|
||||||
|
WareHouseLocationDO wareHouseLocation = wareHouseLocationMapper.selectById(robotTaskDetail.getFromLocationId());
|
||||||
|
if (wareHouseLocation.getTaskId().equals(robotTaskDetail.getTakeId()) && LocationLockEnum.NO.getType().equals(wareHouseLocation.getLocationLock())) {
|
||||||
|
wareHouseLocation.setSkuInfo(null);
|
||||||
|
wareHouseLocation.setSkuNumber(0L);
|
||||||
|
wareHouseLocation.setLocationLock(LocationLockEnum.YES.getType());
|
||||||
|
wareHouseLocation.setLocationUseStatus(LocationUseStatusEnum.NO.getType());
|
||||||
|
wareHouseLocationMapper.updateById(wareHouseLocation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验放货任务
|
* 校验放货任务
|
||||||
*
|
*
|
||||||
|
@ -193,13 +193,11 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
|
|||||||
@Value("${zn.task_not_check:true}")
|
@Value("${zn.task_not_check:true}")
|
||||||
private Boolean taskNotCheck;
|
private Boolean taskNotCheck;
|
||||||
|
|
||||||
@Value("${zn.is_simulation:false}")
|
|
||||||
private Boolean isSimulation;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Long createTask(RobotTaskSaveReqVO createReqVO) throws InterruptedException {
|
public Long createTask(RobotTaskSaveReqVO createReqVO) throws InterruptedException {
|
||||||
if (taskNotCheck && isSimulation) {
|
if (taskNotCheck) {
|
||||||
robotSimulationService.createTask(createReqVO);
|
robotSimulationService.createTask(createReqVO);
|
||||||
return 1L;
|
return 1L;
|
||||||
}
|
}
|
||||||
|
@ -90,11 +90,12 @@ public class CycleServiceImpl implements CycleService {
|
|||||||
Map<Long, List<RobotTaskDetailDO>> taskIdMap =
|
Map<Long, List<RobotTaskDetailDO>> taskIdMap =
|
||||||
detailDOS.stream().collect(Collectors.groupingBy(RobotTaskDetailDO::getRobotTaskId));
|
detailDOS.stream().collect(Collectors.groupingBy(RobotTaskDetailDO::getRobotTaskId));
|
||||||
|
|
||||||
String incrementByKey = redisUtil.getIncrementByKey(RobotCacheLockEnum.TASK_NO.getKey());
|
|
||||||
|
|
||||||
List<RobotTaskDO> taskDOList = new ArrayList<>();
|
List<RobotTaskDO> taskDOList = new ArrayList<>();
|
||||||
List<RobotTaskDetailDO> taskDetailList = new LinkedList<>();
|
List<RobotTaskDetailDO> taskDetailList = new LinkedList<>();
|
||||||
for (RobotTaskDO v : taskList) {
|
for (RobotTaskDO v : taskList) {
|
||||||
|
String incrementByKey = redisUtil.getIncrementByKey(RobotCacheLockEnum.TASK_NO.getKey());
|
||||||
RobotTaskDO taskData = getTaskData(incrementByKey, v);
|
RobotTaskDO taskData = getTaskData(incrementByKey, v);
|
||||||
List<RobotTaskDetailDO> taskDetailDOS = getTaskDetailData(taskData,taskIdMap,v.getId());
|
List<RobotTaskDetailDO> taskDetailDOS = getTaskDetailData(taskData,taskIdMap,v.getId());
|
||||||
taskDOList.add(taskData);
|
taskDOList.add(taskData);
|
||||||
@ -102,10 +103,21 @@ public class CycleServiceImpl implements CycleService {
|
|||||||
v.setRemainingCycleNumber(0l);
|
v.setRemainingCycleNumber(0l);
|
||||||
}
|
}
|
||||||
|
|
||||||
taskMapper.insertBatch(taskDOList);
|
taskMapper.insert(taskDOList);
|
||||||
taskMapper.updateById(taskList);
|
taskMapper.updateById(taskList);
|
||||||
Collections.reverse(taskDetailList);
|
|
||||||
taskDetailMapper.insertBatch(taskDetailList);
|
List<RobotTaskDetailDO> moves = taskDetailList.stream().filter(v -> RobotTaskTypeEnum.MOVE_TO_POINT.getType().equals(v.getTaskType())).collect(Collectors.toList());
|
||||||
|
List<RobotTaskDetailDO> takes = taskDetailList.stream().filter(v -> !RobotTaskTypeEnum.MOVE_TO_POINT.getType().equals(v.getTaskType())).collect(Collectors.toList());
|
||||||
|
List<RobotTaskDetailDO> taskDetails= new LinkedList<>();
|
||||||
|
if (ObjectUtil.isNotEmpty(moves)) {
|
||||||
|
taskDetails.addAll(moves);
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isNotEmpty(takes)) {
|
||||||
|
Collections.reverse(takes);
|
||||||
|
taskDetails.addAll(takes);
|
||||||
|
}
|
||||||
|
|
||||||
|
taskDetailMapper.insert(taskDetails);
|
||||||
|
|
||||||
List<Long> fromLocationIds = taskDetailList.stream().map(RobotTaskDetailDO::getFromLocationId).collect(Collectors.toList());
|
List<Long> fromLocationIds = taskDetailList.stream().map(RobotTaskDetailDO::getFromLocationId).collect(Collectors.toList());
|
||||||
List<Long> toLocationIds = taskDetailList.stream().map(RobotTaskDetailDO::getToLocationId).collect(Collectors.toList());
|
List<Long> toLocationIds = taskDetailList.stream().map(RobotTaskDetailDO::getToLocationId).collect(Collectors.toList());
|
||||||
@ -118,7 +130,7 @@ public class CycleServiceImpl implements CycleService {
|
|||||||
locationMapper.updateLocationLockList(list, -1l, LocationLockEnum.NO.getType());
|
locationMapper.updateLocationLockList(list, -1l, LocationLockEnum.NO.getType());
|
||||||
});
|
});
|
||||||
|
|
||||||
List<RobotTaskDetailAddVO> bean = BeanUtils.toBean(taskDetailList, RobotTaskDetailAddVO.class);
|
List<RobotTaskDetailAddVO> bean = BeanUtils.toBean(taskDetails, RobotTaskDetailAddVO.class);
|
||||||
Map<Long, List<RobotTaskDetailAddVO>> taskDetailMap =
|
Map<Long, List<RobotTaskDetailAddVO>> taskDetailMap =
|
||||||
bean.stream().collect(Collectors.groupingBy(RobotTaskDetailAddVO::getRobotTaskId));
|
bean.stream().collect(Collectors.groupingBy(RobotTaskDetailAddVO::getRobotTaskId));
|
||||||
taskDetailMap.forEach((k,v) ->{
|
taskDetailMap.forEach((k,v) ->{
|
||||||
|
@ -92,7 +92,7 @@ public class DistributeTasksServiceImpl implements DistributeTasksService {
|
|||||||
.in(RobotInformationDO::getRobotStatus, RobotStatusEnum.STAND_BY.getType(), RobotStatusEnum.CHARGE.getType())
|
.in(RobotInformationDO::getRobotStatus, RobotStatusEnum.STAND_BY.getType(), RobotStatusEnum.CHARGE.getType())
|
||||||
.eq(RobotInformationDO::getRobotTaskModel, RobotTaskModelEnum.NORMAL.getType()));
|
.eq(RobotInformationDO::getRobotTaskModel, RobotTaskModelEnum.NORMAL.getType()));
|
||||||
|
|
||||||
if (robots.isEmpty()) {
|
if (ObjectUtil.isEmpty(robots)) {
|
||||||
log.info("暂无空闲的机器人");
|
log.info("暂无空闲的机器人");
|
||||||
return pair;
|
return pair;
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService {
|
|||||||
@Value("${zn.robot_config.offset_height}")
|
@Value("${zn.robot_config.offset_height}")
|
||||||
private Double offsetHeight;
|
private Double offsetHeight;
|
||||||
|
|
||||||
@Value("${zn.path_planning.task_chche_time:604800}")
|
@Value("${zn.task.task_chche_time:604800}")
|
||||||
private Long taskChcheTime;
|
private Long taskChcheTime;
|
||||||
|
|
||||||
@Value("${zn.move-no:MOVE}")
|
@Value("${zn.move-no:MOVE}")
|
||||||
@ -148,8 +148,8 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("-------查找车子------ ,:{}",JSON.toJSONString(robots));
|
log.info("-------可以分配任务的车辆编号------ ,:{}",JSON.toJSONString(robots.stream().map(RobotInformationDO::getRobotNo).collect(Collectors.toList())));
|
||||||
log.info("-------查找任务------ ,:{}",JSON.toJSONString(taskDetailDOS));
|
log.info("-------需要执行的任务id------ ,:{}",JSON.toJSONString(taskDetailDOS.stream().map(RobotTaskDetailDO::getId).collect(Collectors.toList())));
|
||||||
distributeTasksToPP(robots, taskDetailDOS);
|
distributeTasksToPP(robots, taskDetailDOS);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -238,16 +238,16 @@ zn:
|
|||||||
priority_config: 50 #优先级
|
priority_config: 50 #优先级
|
||||||
task: #任务相关的配置
|
task: #任务相关的配置
|
||||||
check_sku_info: true #校验物料信息
|
check_sku_info: true #校验物料信息
|
||||||
|
task_chche_time: 1209600 #任务缓存的时间, 默认一星期
|
||||||
robot_config: #机器人取放货默认配置
|
robot_config: #机器人取放货默认配置
|
||||||
offset_height: 0.1 #叉起货需要在原来高度基础上偏移的高度
|
offset_height: 0.1 #叉起货需要在原来高度基础上偏移的高度
|
||||||
default_tray_height: 0.82 #默认每层高度
|
default_tray_height: 0.82 #默认每层高度
|
||||||
open_rate_limiter: true #是否开启限流
|
open_rate_limiter: true #是否开启限流
|
||||||
path_planning:
|
path_planning:
|
||||||
task_chche_time: 1209600 #任务缓存的时间, 默认一星期
|
task_chche_time: 1209600 #任务缓存的时间, 默认一星期
|
||||||
is_simulation: true # 是否为仿真环境
|
is_simulation: false # 是否为仿真环境
|
||||||
send_robot_init_pose: true # 是否为发送默认的车辆所在地图和点位
|
send_robot_init_pose: true # 是否为发送默认的车辆所在地图和点位
|
||||||
restore_task_restart: true # 恢复任务是否全部重新执行 true:全部重新开始
|
# synchronous_all_map_node: 500 # 点位信息每次发送的数据量
|
||||||
synchronous_all_map_node: 500 # 点位信息每次发送的数据量
|
|
||||||
task_not_check: true # 创建任务不校验
|
task_not_check: true # 创建任务不校验
|
||||||
|
|
||||||
logging:
|
logging:
|
||||||
|
Loading…
Reference in New Issue
Block a user