|
|
|
|
@ -26,7 +26,9 @@ |
|
|
|
|
package org.springblade.desk.logistics.service.impl; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
|
import org.springblade.desk.logistics.constant.AgvConstant; |
|
|
|
|
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; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
@ -128,6 +130,52 @@ 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 |
|
|
|
|
); |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 处理有预占的情况(站点没满)- 直接送往指定站点 |
|
|
|
|
*/ |
|
|
|
|
@ -144,27 +192,19 @@ public class PipelineServiceImpl implements IPipelineService { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
log.info("站点有预占,将物料箱送往指定站点:{}", station.getStationCode()); |
|
|
|
|
|
|
|
|
|
String stationPosition = station.getStationPosition(); |
|
|
|
|
String taskType = agvTaskTypeUtil.getTaskType(Integer.parseInt(stationPosition)); |
|
|
|
|
|
|
|
|
|
// 获取虚拟货架
|
|
|
|
|
VirtualShelves virtualShelves = virtualShelvesService.getVirtualShelvesCode(); |
|
|
|
|
if(null == virtualShelves){ |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 站点绑定虚拟货架
|
|
|
|
|
boolean shelves = taskExecuteRecordService.boundVirtualShelves(virtualShelves.getVirtualShelvesCode(),"1002"); |
|
|
|
|
if(!shelves){ |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
// 入库记录
|
|
|
|
|
Task task = taskService.getBoxBarcode(boxBarcode); |
|
|
|
|
|
|
|
|
|
// 调用AGV
|
|
|
|
|
taskExecuteRecordService.genAgvSchedulingTask(taskType,"1002",station.getStationCode(),"00"); |
|
|
|
|
boolean agvSchedulingTask = genAgvSchedulingTask |
|
|
|
|
(taskType, Station.PICKUP_CONVEYOR_LINE, station.getStationCode(), AgvConstant.EQUIPMENT_TYPE_AGV, task); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
return agvSchedulingTask; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|