|
|
|
|
@ -162,10 +162,9 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
log.info("当前Task状态为{},任务TaskCode为{}", task.getTaskStatus(), agvCallBack.getTaskCode()); |
|
|
|
|
//状态为暂存 需要调用
|
|
|
|
|
if (Task.STATUS_TEMPORARY_STORAGE.equals(task.getTaskStatus())) { |
|
|
|
|
if (Task.STATUS_MES_CTU_s.equals(task.getTaskStatus())) { |
|
|
|
|
//判断是否需要调用agv接口
|
|
|
|
|
boolean conAgvReturn = containerToAgv(agvCallBack.getTaskCode()); |
|
|
|
|
log.info("AGV小车接口调用返回值:{}", conAgvReturn); |
|
|
|
|
@ -175,13 +174,20 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec |
|
|
|
|
} |
|
|
|
|
if (Task.STATUS_CONVEYOR_END.equals(task.getTaskStatus())) { |
|
|
|
|
//判断是否需要调用ctu接口
|
|
|
|
|
containerToCtu(agvCallBack.getTaskCode()); |
|
|
|
|
boolean conCtuReturn = containerToCtu(agvCallBack.getTaskCode()); |
|
|
|
|
log.info("CTU小车接口调用返回值:{}", conCtuReturn); |
|
|
|
|
if (!conCtuReturn) { |
|
|
|
|
return R.fail("CTU小车接口调用失败"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(Task.STATUS_MES_CTU_k.equals(task.getTaskStatus())){ |
|
|
|
|
//以放到库位 修改状态
|
|
|
|
|
boolean ctuLocation = updateMesCtuLocation(agvCallBack.getTaskCode()); |
|
|
|
|
log.info("MES调用CTU放倒库位:{}", ctuLocation); |
|
|
|
|
if (!ctuLocation) { |
|
|
|
|
return R.fail("CTU小车接口调用失败"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -193,6 +199,72 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec |
|
|
|
|
return r; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean updateMesCtuLocation(String taskCode) { |
|
|
|
|
log.info("开始执行updateMesCtuLocation,taskCode:{}", taskCode); |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
// 1. 查询任务执行记录
|
|
|
|
|
TaskExecuteRecord taskExecuteRecord = baseMapper.selectByTaskCode(taskCode); |
|
|
|
|
if (null == taskExecuteRecord) { |
|
|
|
|
log.error("未根据taskCode查询到有效数据,请求参数:{}", taskCode); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 2. 查询任务
|
|
|
|
|
Task task = taskService.getById(taskExecuteRecord.getTaskId()); |
|
|
|
|
if (null == task) { |
|
|
|
|
log.error("查询不到Task数据,证明任务不存在,无需接续,请求参数:{}", taskExecuteRecord.getTaskId()); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(taskExecuteRecord.getEndPos())) { |
|
|
|
|
log.error("任务执行记录的终点位置为空,taskCode:{}", taskCode); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 4. 查询目标库位信息
|
|
|
|
|
Location location = locationService.getById(task.getLocationId()); |
|
|
|
|
if (null == location) { |
|
|
|
|
log.error("根据locationId未查询到位置信息,locationId:{}", task.getLocationId()); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//8. 所有操作成功后,更新任务状态
|
|
|
|
|
task.setTaskStatus(Task.STATUS_TEMPORARY_STORAGE); |
|
|
|
|
boolean taskUpdate = taskService.updateById(task); |
|
|
|
|
if (!taskUpdate) { |
|
|
|
|
log.error("Task状态修改失败,但CTU调度已成功,taskCode:{}", taskCode); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 9.将库位状态设置为占用
|
|
|
|
|
location.setLocationStatus(Location.STATUS_OCCUPIED); |
|
|
|
|
boolean updateLocation = locationService.updateById(location); |
|
|
|
|
if (!updateLocation) { |
|
|
|
|
log.error("库位状态修改失败,但CTU调度已成功,库位:{}", location.getId()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 10.将梳齿架子状态修改为空闲
|
|
|
|
|
log.info("将梳齿架子状态修改为空闲:{}",taskExecuteRecord.getStartPos()); |
|
|
|
|
Location location1 = locationService.selectByLocationCode(taskExecuteRecord.getStartPos(), 1); |
|
|
|
|
location1.setLocationStatus(Location.STATUS_FREE); |
|
|
|
|
boolean updateLocation1 = locationService.updateById(location1); |
|
|
|
|
if (updateLocation1) { |
|
|
|
|
log.info("梳齿架子状态修改成功:{}", taskExecuteRecord.getStartPos()); |
|
|
|
|
} else { |
|
|
|
|
log.error("梳齿架子状态修改失败:{}", taskExecuteRecord.getStartPos()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
log.info("CTU调度成功,taskCode:{},from:{},to:{}", |
|
|
|
|
taskCode, taskExecuteRecord.getEndPos(), location.getLocationCode()); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("containerToCtu执行异常,taskCode:{}", taskCode, e); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean boundVirtualShelves(String virtualShelvesCode, String stationCode) { |
|
|
|
|
@ -379,9 +451,10 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 4. 查询目标库位信息
|
|
|
|
|
Location location = locationService.getById(task.getLocationId()); |
|
|
|
|
if (null == location) { |
|
|
|
|
@ -419,29 +492,12 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 8. 所有操作成功后,更新任务状态
|
|
|
|
|
task.setTaskStatus(Task.STATUS_TEMPORARY_STORAGE); |
|
|
|
|
task.setTaskStatus(Task.STATUS_MES_CTU_k); |
|
|
|
|
boolean taskUpdate = taskService.updateById(task); |
|
|
|
|
if (!taskUpdate) { |
|
|
|
|
log.error("Task状态修改失败,但CTU调度已成功,taskCode:{}", taskCode); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 9.将库位状态设置为占用
|
|
|
|
|
location.setLocationStatus(Location.STATUS_OCCUPIED); |
|
|
|
|
boolean updateLocation = locationService.updateById(location); |
|
|
|
|
if (!updateLocation) { |
|
|
|
|
log.error("库位状态修改失败,但CTU调度已成功,库位:{}", location.getId()); |
|
|
|
|
} |
|
|
|
|
// 10.将梳齿架子状态修改为空闲
|
|
|
|
|
Location location1 = locationService.selectByLocationCode(taskExecuteRecord.getEndPos(), 1); |
|
|
|
|
location1.setLocationStatus(Location.STATUS_FREE); |
|
|
|
|
boolean updateLocation1 = locationService.updateById(location1); |
|
|
|
|
if (updateLocation1) { |
|
|
|
|
log.info("梳齿架子状态修改成功:{}", taskExecuteRecord.getEndPos()); |
|
|
|
|
} else { |
|
|
|
|
log.error("梳齿架子状态修改失败:{}", taskExecuteRecord.getEndPos()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
log.info("CTU调度成功,taskCode:{},from:{},to:{}", |
|
|
|
|
taskCode, taskExecuteRecord.getEndPos(), location.getLocationCode()); |
|
|
|
|
|
|
|
|
|
|