|
|
|
|
@ -14,12 +14,12 @@ 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.vo.AgvSchedulingTaskVO; |
|
|
|
|
import org.springblade.desk.logistics.service.ILocationService; |
|
|
|
|
import org.springblade.desk.logistics.service.ITaskExecuteRecordService; |
|
|
|
|
import org.springblade.desk.logistics.service.ITaskService; |
|
|
|
|
import org.springblade.desk.logistics.service.*; |
|
|
|
|
import org.springblade.desk.logistics.utils.AgvTaskTypeUtil; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
|
@ -28,6 +28,9 @@ import java.util.HashMap; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
|
import static org.springblade.desk.logistics.constant.AgvConstant.EQUIPMENT_TYPE_AGV; |
|
|
|
|
import static org.springblade.desk.logistics.pojo.entity.Station.DROPOFF_CONVEYOR_LINE; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 物流AGV小车任务执行记录服务实现类 |
|
|
|
|
* <p> |
|
|
|
|
@ -52,6 +55,18 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec |
|
|
|
|
@Autowired |
|
|
|
|
ILocationService locationService; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
ITaskExecuteRecordService taskExecuteRecordService; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
IStationService stationService; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
IPipelineService iPipelineService; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
AgvTaskTypeUtil agvTaskTypeUtil; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* AGV小车任务状态回调接口 |
|
|
|
|
* <p> |
|
|
|
|
@ -125,7 +140,10 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec |
|
|
|
|
log.info("任务单号{}已完成,准备调用东哥接口", agvCallBack.getTaskCode()); |
|
|
|
|
|
|
|
|
|
//判断是否需要调用ctu接口
|
|
|
|
|
containerToEmpty(agvCallBack.getTaskCode()); |
|
|
|
|
containerToCtu(agvCallBack.getTaskCode()); |
|
|
|
|
|
|
|
|
|
//判断是否需要调用agv接口
|
|
|
|
|
containerToAgv(agvCallBack.getTaskCode()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 回调处理成功
|
|
|
|
|
@ -260,7 +278,7 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean containerToEmpty(String taskCode) { |
|
|
|
|
public boolean containerToCtu(String taskCode) { |
|
|
|
|
|
|
|
|
|
TaskExecuteRecord taskExecuteRecord = taskExecuteRecordMapper.selectByTaskCode(taskCode); |
|
|
|
|
if(null == taskExecuteRecord){ |
|
|
|
|
@ -286,21 +304,23 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec |
|
|
|
|
|
|
|
|
|
Location location = locationService.getById(task.getLocationId()); |
|
|
|
|
|
|
|
|
|
boolean ctuSchedulingTask = genCtuSchedulingTask |
|
|
|
|
AgvSchedulingTaskVO ctuSchedulingTask = genCtuSchedulingTask |
|
|
|
|
("CTu2", "1", task.getBoxBarcode(), taskExecuteRecord.getEndPos(), location.getLocationCode(), AgvConstant.EQUIPMENT_TYPE_CTU); |
|
|
|
|
|
|
|
|
|
if(!ctuSchedulingTask){ |
|
|
|
|
if(null != ctuSchedulingTask){ |
|
|
|
|
task.setTaskStatus(Task.STATUS_LOCATION); |
|
|
|
|
boolean taskUpdate = taskService.updateById(task); |
|
|
|
|
if(!taskUpdate){ |
|
|
|
|
log.error("Task状态修改失败"); |
|
|
|
|
} |
|
|
|
|
// 添加任务
|
|
|
|
|
boolean record = taskExecuteRecordService.inboundRecord(ctuSchedulingTask, task); |
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean genCtuSchedulingTask(String taskTyp, String ctnrTyp, String ctnrCode, |
|
|
|
|
public AgvSchedulingTaskVO genCtuSchedulingTask(String taskTyp, String ctnrTyp, String ctnrCode, |
|
|
|
|
String startPos, String endPos, String type) { |
|
|
|
|
// 接口地址
|
|
|
|
|
String url = "http://172.22.252.10:8181/rcms/services/rest/hikRpcService/genAgvSchedulingTask"; |
|
|
|
|
@ -346,7 +366,7 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec |
|
|
|
|
|
|
|
|
|
if (!StringUtils.hasText(responseStr)) { |
|
|
|
|
log.error("调用CTU调度任务接口失败,响应为空"); |
|
|
|
|
return false; |
|
|
|
|
return new AgvSchedulingTaskVO(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 解析响应
|
|
|
|
|
@ -358,19 +378,64 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl<TaskExecuteRec |
|
|
|
|
if ("0".equals(code)) { |
|
|
|
|
log.info("CTU调度任务创建成功,任务类型:{},任务单号:{},容器编号:{},起始位置:{},目标位置:{}", |
|
|
|
|
taskTyp, taskCode, ctnrCode, startPos, endPos); |
|
|
|
|
return true; |
|
|
|
|
return AgvSchedulingTaskVO.success(taskCode,taskTyp,startPos,endPos,type); |
|
|
|
|
} else { |
|
|
|
|
// code不等于0,输出错误信息
|
|
|
|
|
log.error("CTU调度任务创建失败,错误码:{},错误信息:{},任务类型:{},容器编号:{},起始位置:{},目标位置:{}", |
|
|
|
|
code, message, taskTyp, ctnrCode, startPos, endPos); |
|
|
|
|
return false; |
|
|
|
|
return AgvSchedulingTaskVO.fail(code,message); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("调用CTU调度任务接口异常,任务类型:{},容器编号:{},起始位置:{},目标位置:{}", |
|
|
|
|
taskTyp, ctnrCode, startPos, endPos, e); |
|
|
|
|
return new AgvSchedulingTaskVO(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean containerToAgv(String taskCode) { |
|
|
|
|
TaskExecuteRecord taskExecuteRecord = taskExecuteRecordMapper.selectByTaskCode(taskCode); |
|
|
|
|
if(null == taskExecuteRecord){ |
|
|
|
|
log.error("未根据taskCode查询到有效数据,请求参数:{}", taskCode); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Task task = taskService.getById(taskExecuteRecord.getTaskId()); |
|
|
|
|
if(null == task){ |
|
|
|
|
log.error("查询不到Task数据,请求参数:{}", taskExecuteRecord.getTaskId()); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
String endPos = taskExecuteRecord.getEndPos(); |
|
|
|
|
|
|
|
|
|
Location location = locationService.selectByLocationCode(endPos,1); |
|
|
|
|
if(null != location){ |
|
|
|
|
//拿到站点
|
|
|
|
|
Long stationId = task.getStationId(); |
|
|
|
|
if(null == stationId){ |
|
|
|
|
log.error("查询不到Task的站点数据,请求参数:{}", taskCode); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
Station station = stationService.getById(task.getStationId()); |
|
|
|
|
if(null == station){ |
|
|
|
|
log.error("查询不到站点数据,请求参数:{}", task.getStationId()); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//调用agv小车
|
|
|
|
|
// 调用AGV
|
|
|
|
|
String taskType = agvTaskTypeUtil.getTaskType(Integer.valueOf(station.getStationPosition())); |
|
|
|
|
|
|
|
|
|
boolean agvResult = iPipelineService.genAgvSchedulingTask( |
|
|
|
|
taskType, location.getLocationCode(),station.getStationCode() , EQUIPMENT_TYPE_AGV, task |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
return agvResult; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|