互相循环代码bug修复

liweidong
绫Umbrella 1 month ago
parent 6da82be8ef
commit a97b7f3b55
  1. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPipelineService.java
  2. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskExecuteRecordService.java
  3. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/IOrderBoxServiceImpl.java
  4. 58
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PipelineServiceImpl.java
  5. 64
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java

@ -64,14 +64,5 @@ public interface IPipelineService {
boolean receiveBoxArriveConveyorEnd(String boxBarcode);
/**
* 调用AGV 小车 CTU 封装
* @param taskType 任务类型 (QM3,QM5,QM6,QM7)
* @param startPos 开始位置
* @param endPos 结束位置
* @param type 位置类型00AGV 05CTU
* @param task 任务对象
* @return
*/
boolean genAgvSchedulingTask(String taskType, String startPos, String endPos, String type, Task task);
}

@ -95,4 +95,15 @@ public interface ITaskExecuteRecordService extends BaseService<TaskExecuteRecord
* @return
*/
boolean containerToAgv(String taskCode);
/**
* 调用AGV 小车 CTU 封装
* @param taskType 任务类型 (QM3,QM5,QM6,QM7)
* @param startPos 开始位置
* @param endPos 结束位置
* @param type 位置类型00AGV 05CTU
* @param task 任务对象
* @return
*/
boolean genAgvSchedulingTask(String taskType, String startPos, String endPos, String type, Task task);
}

@ -59,7 +59,7 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
private final AgvTaskTypeUtil agvTaskTypeUtil;
private final IBsWorkCenterService bsWorkCenterService;
private final IPipelineService pipelineService;
private final ITaskExecuteRecordService iTaskExecuteRecordService;
/**
* 任务运行中状态集合包含任务从启动到待入库的所有中间状态
@ -79,7 +79,7 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
RUNNING_STATUSES.add(Task.STATUS_BACK_TO_STORAGE);// 返库状态
}
public IOrderBoxServiceImpl(IYieldOrderService iYieldOrderService, ITaskService iTaskService, IOrderBindService iOrderBindService, IStationService iStationService, ILocationService iLocationService, AgvTaskTypeUtil agvTaskTypeUtil, IBsWorkCenterService bsWorkCenterService, IPipelineService iPipelineOrderBoxService, IPipelineService pipelineService) {
public IOrderBoxServiceImpl(IYieldOrderService iYieldOrderService, ITaskService iTaskService, IOrderBindService iOrderBindService, IStationService iStationService, ILocationService iLocationService, AgvTaskTypeUtil agvTaskTypeUtil, IBsWorkCenterService bsWorkCenterService, ITaskExecuteRecordService iTaskExecuteRecordService) {
this.iYieldOrderService = iYieldOrderService;
this.iTaskService = iTaskService;
this.iOrderBindService = iOrderBindService;
@ -87,7 +87,8 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
this.iLocationService = iLocationService;
this.agvTaskTypeUtil = agvTaskTypeUtil;
this.bsWorkCenterService = bsWorkCenterService;
this.pipelineService = pipelineService;
this.iTaskExecuteRecordService = iTaskExecuteRecordService;
}
/**
@ -324,7 +325,7 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
try {
// 2. 获取AGV任务类型并调用调度接口
String taskType = agvTaskTypeUtil.getTaskType(Integer.valueOf(targetStation.getStationPosition()), true);
boolean agvResult = pipelineService.genAgvSchedulingTask(
boolean agvResult = iTaskExecuteRecordService.genAgvSchedulingTask(
taskType, stationCode, DROPOFF_CONVEYOR_LINE, EQUIPMENT_TYPE_AGV, taskList.get(0)
);
@ -358,7 +359,7 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
try {
// 3. 获取AGV任务类型并调用调度接口
String taskType = agvTaskTypeUtil.getTaskType(Integer.valueOf(targetStation.getStationPosition()), false);
boolean agvResult = pipelineService.genAgvSchedulingTask(
boolean agvResult = iTaskExecuteRecordService.genAgvSchedulingTask(
taskType, sourceStationCode, endStation.getStationCode(), EQUIPMENT_TYPE_AGV, taskList.get(0)
);

@ -64,14 +64,13 @@ public class PipelineServiceImpl implements IPipelineService {
IPipelineOrderBoxService iPipelineOrderBoxService;
// IOrderBoxService orderBoxService;
@Autowired
ITaskExecuteRecordService taskExecuteRecordService;
@Autowired
AgvTaskTypeUtil agvTaskTypeUtil;
@Autowired
IVirtualShelvesService virtualShelvesService;
ITaskExecuteRecordService iTaskExecuteRecordService;
@Override
public boolean verifyConveyorBoxWeighing(String boxBarcode, BigDecimal actualWeight, BigDecimal ratedWeight, Integer returnStatus) {
@ -132,52 +131,7 @@ public class PipelineServiceImpl implements IPipelineService {
}
}
@Override
public boolean genAgvSchedulingTask(String taskType, String startPos, String endPos, String type, Task task) {
// 获取虚拟货架
VirtualShelves virtualShelves = virtualShelvesService.getVirtualShelvesCode();
if (null == virtualShelves) {
log.error("获取虚拟货架失败");
return false;
}
// 站点绑定虚拟货架
boolean shelves = taskExecuteRecordService.boundVirtualShelves(
virtualShelves.getVirtualShelvesCode(),
startPos
);
if (!shelves) {
log.error("站点绑定虚拟货架失败");
return false;
}
// 调用AGV
AgvSchedulingTaskVO agvSchedulingTaskVO = taskExecuteRecordService.genAgvSchedulingTask(
taskType,
startPos,
endPos,
type,
virtualShelves.getVirtualShelvesCode()
);
if (null == agvSchedulingTaskVO || !"0".equals(agvSchedulingTaskVO.getCode())) {
log.error("调用AGV调度失败");
return false;
}
// 入库记录
if (null == task) {
return false;
}
boolean record = taskExecuteRecordService.inboundRecord(agvSchedulingTaskVO, task);
if (!record) {
log.error("入库记录保存失败");
return false;
}
return true;
}
/**
* 处理有预占的情况站点没满- 直接送往指定站点
@ -204,7 +158,7 @@ public class PipelineServiceImpl implements IPipelineService {
// 入库记录
Task task = taskService.getBoxBarcode(boxBarcode);
boolean agvSchedulingTask = genAgvSchedulingTask
boolean agvSchedulingTask = iTaskExecuteRecordService.genAgvSchedulingTask
(taskType, Station.PICKUP_CONVEYOR_LINE, station.getStationCode(), AgvConstant.EQUIPMENT_TYPE_AGV, task);
return agvSchedulingTask;
@ -227,7 +181,7 @@ public class PipelineServiceImpl implements IPipelineService {
String stationPosition = station.getStationPosition();
String taskType = agvTaskTypeUtil.getTaskType(Integer.parseInt(stationPosition));
boolean agvSchedulingTask = genAgvSchedulingTask
boolean agvSchedulingTask = iTaskExecuteRecordService.genAgvSchedulingTask
(taskType, Station.PICKUP_CONVEYOR_LINE, station.getStationCode(), AgvConstant.EQUIPMENT_TYPE_AGV, task);
return agvSchedulingTask;
@ -285,7 +239,7 @@ public class PipelineServiceImpl implements IPipelineService {
// 3. 两步操作
log.info("第一步:AGV将物料箱从输送线放入梳齿架子:{}", combLocationCode);
// 调用AGV小车 将输送线物资放入梳齿架子
boolean agvSchedulingTask = genAgvSchedulingTask
boolean agvSchedulingTask = iTaskExecuteRecordService.genAgvSchedulingTask
("QM7", Station.PICKUP_CONVEYOR_LINE, combLocationCode, AgvConstant.EQUIPMENT_TYPE_AGV, task);
//第二步 需要agv调用完成之后 给到mes通知接口

@ -6,6 +6,7 @@ import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import groovy.lang.Lazy;
import lombok.extern.slf4j.Slf4j;
import org.redisson.executor.TasksService;
import org.springblade.core.mp.base.BaseServiceImpl;
@ -13,10 +14,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.desk.logistics.constant.AgvConstant;
import org.springblade.desk.logistics.mapper.TaskExecuteRecordMapper;
import org.springblade.desk.logistics.pojo.dto.AGVCallBackDto;
import org.springblade.desk.logistics.pojo.entity.Location;
import org.springblade.desk.logistics.pojo.entity.Station;
import org.springblade.desk.logistics.pojo.entity.Task;
import org.springblade.desk.logistics.pojo.entity.TaskExecuteRecord;
import org.springblade.desk.logistics.pojo.entity.*;
import org.springblade.desk.logistics.pojo.vo.AgvSchedulingTaskVO;
import org.springblade.desk.logistics.service.*;
import org.springblade.desk.logistics.utils.AgvTaskTypeUtil;
@ -44,7 +42,7 @@ import static org.springblade.desk.logistics.pojo.entity.Station.DROPOFF_CONVEYO
*/
@Service
@Slf4j
public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRecordMapper, TaskExecuteRecord> implements ITaskExecuteRecordService {
public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRecordMapper, TaskExecuteRecord> implements ITaskExecuteRecordService {
@Autowired
TaskExecuteRecordMapper taskExecuteRecordMapper;
@ -55,17 +53,15 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec
@Autowired
ILocationService locationService;
@Autowired
ITaskExecuteRecordService taskExecuteRecordService;
@Autowired
IStationService stationService;
@Autowired
IPipelineService iPipelineService;
@Autowired
AgvTaskTypeUtil agvTaskTypeUtil;
@Autowired
IVirtualShelvesService virtualShelvesService;
/**
* AGV小车任务状态回调接口
@ -314,7 +310,7 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec
log.error("Task状态修改失败");
}
// 添加任务
boolean record = taskExecuteRecordService.inboundRecord(ctuSchedulingTask, task);
boolean record = inboundRecord(ctuSchedulingTask, task);
}
return true;
}
@ -427,7 +423,7 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec
// 调用AGV
String taskType = agvTaskTypeUtil.getTaskType(Integer.valueOf(station.getStationPosition()));
boolean agvResult = iPipelineService.genAgvSchedulingTask(
boolean agvResult = genAgvSchedulingTask(
taskType, location.getLocationCode(),station.getStationCode() , EQUIPMENT_TYPE_AGV, task
);
@ -438,6 +434,7 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec
return false;
}
/**
* 生成请求唯一标识
* @param prefix 前缀
@ -448,6 +445,51 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec
return prefix + IdUtil.fastSimpleUUID();
}
@Override
public boolean genAgvSchedulingTask(String taskType, String startPos, String endPos, String type, Task task) {
// 获取虚拟货架
VirtualShelves virtualShelves = virtualShelvesService.getVirtualShelvesCode();
if (null == virtualShelves) {
log.error("获取虚拟货架失败");
return false;
}
// 站点绑定虚拟货架
boolean shelves = boundVirtualShelves(
virtualShelves.getVirtualShelvesCode(),
startPos
);
if (!shelves) {
log.error("站点绑定虚拟货架失败");
return false;
}
// 调用AGV
AgvSchedulingTaskVO agvSchedulingTaskVO = genAgvSchedulingTask(
taskType,
startPos,
endPos,
type,
virtualShelves.getVirtualShelvesCode()
);
if (null == agvSchedulingTaskVO || !"0".equals(agvSchedulingTaskVO.getCode())) {
log.error("调用AGV调度失败");
return false;
}
// 入库记录
if (null == task) {
return false;
}
boolean record = inboundRecord(agvSchedulingTaskVO, task);
if (!record) {
log.error("入库记录保存失败");
return false;
}
return true;
}
}

Loading…
Cancel
Save