|
@@ -112,14 +112,12 @@ public class HikAgvControl extends SuperController<AgvHikOrderInfoService, Long,
|
|
|
// 判断回调内容是否正确
|
|
|
// agv 任务id
|
|
|
String taskCode = null == data.get("taskCode") ? "":data.get("taskCode");
|
|
|
- String code = null == data.get("code") ? "":data.get("code");
|
|
|
String method = null == data.get("method") ? "":data.get("method");
|
|
|
- String msg = null == data.get("data") ? "":data.get("data");
|
|
|
if(StringUtil.isEmpty(taskCode)){
|
|
|
return HikR.fail("任务单号为空");
|
|
|
}
|
|
|
if(StringUtil.isEmpty(method)){
|
|
|
- return HikR.fail("任务状态码为空");
|
|
|
+ return HikR.fail("任务方法名为空");
|
|
|
}
|
|
|
|
|
|
LbqWrapper<AgvHikOrderDetailInfo> wrapper = new LbqWrapper<>();
|
|
@@ -130,7 +128,6 @@ public class HikAgvControl extends SuperController<AgvHikOrderInfoService, Long,
|
|
|
BeanUtil.copyProperties(agvHikOrderDetailInfo,callbackInfo);
|
|
|
agvHikOrderDetailInfo.setCallbackTime(DateUtil.format(Calendar.getInstance().getTime(), DatePattern.NORM_DATETIME_MS_PATTERN));
|
|
|
agvHikOrderDetailInfoService.updateAllById(agvHikOrderDetailInfo);
|
|
|
-// return R.success();
|
|
|
}else{
|
|
|
return HikR.fail("agv任务不存在");
|
|
|
}
|
|
@@ -139,61 +136,49 @@ public class HikAgvControl extends SuperController<AgvHikOrderInfoService, Long,
|
|
|
agvHikOrderInfoWrapper.eq(AgvHikOrderInfo::getTaskCode, taskCode);
|
|
|
AgvHikOrderInfo agvHikOrderInfo = agvHikOrderInfoService.getOne(agvHikOrderInfoWrapper);
|
|
|
|
|
|
- if("0".equals(code)){
|
|
|
-// redisTemplate.opsForValue().set("agvOkFlag",true);
|
|
|
- // 读取PLC托板是否放平信号
|
|
|
- // TODO 待修改
|
|
|
- Object agvOkObj = redisTemplate.opsForValue().get("agvOkFlag");
|
|
|
- Boolean agvOkFlag =(agvOkObj==null?true:(Boolean)agvOkObj);
|
|
|
-
|
|
|
-// Object nodeId = redisTemplate.opsForValue().get(taskId);
|
|
|
-// String taskNodeId =(nodeId==null?"":nodeId.toString()) ;
|
|
|
-// String[] taskNodes = taskNodeId.split("-");
|
|
|
-// if(StringUtil.isEmpty(taskNodeId)){
|
|
|
-// return R.fail("任务不存在");
|
|
|
-// }
|
|
|
- // 托板已经到位
|
|
|
- Object autoNodeTaskInfo = redisTemplate.opsForValue().get(taskCode);
|
|
|
-
|
|
|
- String taskId = autoNodeTaskInfo.toString().split("-")[0];
|
|
|
- String taskNodeId = autoNodeTaskInfo.toString().split("-")[1];
|
|
|
- JSONObject autoNodeTaskInfoObj = new JSONObject();
|
|
|
- autoNodeTaskInfoObj.put("taskId",taskId);
|
|
|
- autoNodeTaskInfoObj.put("taskNodeId",taskNodeId);
|
|
|
+ // 读取PLC托板是否放平信号
|
|
|
+ // TODO 待修改
|
|
|
+ Object agvOkObj = redisTemplate.opsForValue().get("agvOkFlag");
|
|
|
+ Boolean agvOkFlag =(agvOkObj==null?true:(Boolean)agvOkObj);
|
|
|
+ // 托板已经到位
|
|
|
+ Object autoNodeTaskInfo = redisTemplate.opsForValue().get(taskCode);
|
|
|
|
|
|
+ String taskId = autoNodeTaskInfo.toString().split("-")[0];
|
|
|
+ String taskNodeId = autoNodeTaskInfo.toString().split("-")[1];
|
|
|
+ JSONObject autoNodeTaskInfoObj = new JSONObject();
|
|
|
+ autoNodeTaskInfoObj.put("taskId",taskId);
|
|
|
+ autoNodeTaskInfoObj.put("taskNodeId",taskNodeId);
|
|
|
|
|
|
- if(agvOkFlag){
|
|
|
- redisTemplate.delete(taskCode);
|
|
|
- // TODO 记录AGV相关流程日志信息
|
|
|
- // 指令下发出库完成后回调调度完成后续任务
|
|
|
- // 从redis里面获取上次出库任务 任务号-任务结点号
|
|
|
-// return R.success();
|
|
|
+ if(agvOkFlag){
|
|
|
+ redisTemplate.delete(taskCode);
|
|
|
+ // 指令下发出库完成后回调调度完成后续任务
|
|
|
+ // 从redis里面获取上次出库任务 任务号-任务结点号
|
|
|
|
|
|
- if("0".equals(agvHikOrderInfo.getAgvTaskType())){
|
|
|
- autoNodeTaskInfoObj.put("code","1");
|
|
|
- HttpHeaders headers = new HttpHeaders();
|
|
|
- headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
|
|
|
+ if("0".equals(agvHikOrderInfo.getAgvTaskType()) && "end".equals(method)){
|
|
|
+ autoNodeTaskInfoObj.put("code","1");
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
+ headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
|
|
|
|
|
|
- HttpEntity<String> formEntity = new HttpEntity<String>(autoNodeTaskInfoObj.toJSONString(),headers);
|
|
|
- String taskNodeCallbackUrl = parameterService.getValue(ParameterKey.TASKNODECALLBACKURL, null);
|
|
|
- int sendCount = 0;
|
|
|
- // 解析回调结果
|
|
|
- boolean flag = repeatSend(taskNodeCallbackUrl,formEntity,sendCount);
|
|
|
- if(flag){
|
|
|
- return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
|
|
|
- }else{
|
|
|
- // TODO 记录告警日志方便电子看板或者其他地方展示系统通讯异常
|
|
|
- return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
|
|
|
- }
|
|
|
+ HttpEntity<String> formEntity = new HttpEntity<String>(autoNodeTaskInfoObj.toJSONString(),headers);
|
|
|
+ String taskNodeCallbackUrl = parameterService.getValue(ParameterKey.TASKNODECALLBACKURL, null);
|
|
|
+ int sendCount = 0;
|
|
|
+ // 解析回调结果
|
|
|
+ boolean flag = repeatSend(taskNodeCallbackUrl,formEntity,sendCount);
|
|
|
+ if(flag){
|
|
|
+ return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
|
|
|
}else{
|
|
|
+ // TODO 记录告警日志方便电子看板或者其他地方展示系统通讯异常
|
|
|
+ return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
|
|
|
+ }
|
|
|
+ }else{
|
|
|
// 更新托板库位信息
|
|
|
- String agvStartCode = agvHikOrderInfo.getStart();
|
|
|
- String agvEndCode = agvHikOrderInfo.getGoal();
|
|
|
+ String agvStartCode = agvHikOrderInfo.getStart();
|
|
|
+ String agvEndCode = agvHikOrderInfo.getGoal();
|
|
|
|
|
|
- Productionresource agvStartResource = productionresourceBizMapper.selectOne(Wraps.<Productionresource>lbQ().eq(Productionresource::getCode,agvStartCode));
|
|
|
- Productionresource agvEndResource = productionresourceBizMapper.selectOne(Wraps.<Productionresource>lbQ().eq(Productionresource::getCode,agvEndCode));
|
|
|
- ProductionresourcePosition agvStartResourcePosition = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId,agvStartResource.getId()));
|
|
|
- ProductionresourcePosition agvEndResourcePosition = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId,agvEndResource.getId()));
|
|
|
+ Productionresource agvStartResource = productionresourceBizMapper.selectOne(Wraps.<Productionresource>lbQ().eq(Productionresource::getCode,agvStartCode));
|
|
|
+ Productionresource agvEndResource = productionresourceBizMapper.selectOne(Wraps.<Productionresource>lbQ().eq(Productionresource::getCode,agvEndCode));
|
|
|
+ ProductionresourcePosition agvStartResourcePosition = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId,agvStartResource.getId()));
|
|
|
+ ProductionresourcePosition agvEndResourcePosition = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId,agvEndResource.getId()));
|
|
|
|
|
|
// // 更新节点agv接驳位信息,agv回调后更新后续agv流转所用的接驳位设备id
|
|
|
// TaskNode taskNode = taskNodeService.getById(agvHikOrderInfo.getTaskNodeId());
|
|
@@ -204,68 +189,20 @@ public class HikAgvControl extends SuperController<AgvHikOrderInfoService, Long,
|
|
|
// taskNodeService.updateById(taskNode);
|
|
|
// taskNodeService.updateById(nextOneTaskNode);
|
|
|
|
|
|
- // 解锁预占锁定
|
|
|
- Map updateLockStatusParams = new HashMap();
|
|
|
- updateLockStatusParams.put("agvStartStorgeId", agvStartResourcePosition.getStorgeId());
|
|
|
- updateLockStatusParams.put("agvEndStorgeId", agvEndResourcePosition.getStorgeId());
|
|
|
- storgeMapper.updateLockStatusById(updateLockStatusParams);
|
|
|
+ // 解锁预占锁定
|
|
|
+ Map updateLockStatusParams = new HashMap();
|
|
|
+ updateLockStatusParams.put("agvStartStorgeId", agvStartResourcePosition.getStorgeId());
|
|
|
+ updateLockStatusParams.put("agvEndStorgeId", agvEndResourcePosition.getStorgeId());
|
|
|
+ storgeMapper.updateLockStatusById(updateLockStatusParams);
|
|
|
|
|
|
- // 更新库位信息
|
|
|
- stockInfoMapper.updateStockInfoByStorgeId(updateLockStatusParams);
|
|
|
- return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
|
|
|
- }
|
|
|
- }else{
|
|
|
- // 托板未到位需重新驱动agv托起托板再次放
|
|
|
- // 异步唤醒
|
|
|
- // 查询到上一次任务的重点,发agv重新托起在放
|
|
|
-// if(0 == agvHikOrderInfo.getRepeatActionType()){
|
|
|
-// String goal = "";
|
|
|
-// for (AgvLocationRelationEnum agvLocationRelationEnum : AgvLocationRelationEnum.values()) {
|
|
|
-// if (agvLocationRelationEnum.getPreserveLocation().equals(agvHikOrderInfo.getGoal())){
|
|
|
-// goal = agvLocationRelationEnum.getSafeLocation();
|
|
|
-// }
|
|
|
-// }
|
|
|
-// externalApiService.addAgvTask(agvHikOrderInfo.getGoal(), AgvActionEnum.SITUANDUP.getActionId(), goal,0, agvHikOrderInfo.getTaskId(), agvHikOrderInfo.getTaskNodeId(), taskCode,1);
|
|
|
-// }else if(1 == agvHikOrderInfo.getRepeatActionType()){
|
|
|
-//
|
|
|
-// String goal = "";
|
|
|
-// for (AgvLocationRelationEnum agvLocationRelationEnum : AgvLocationRelationEnum.values()) {
|
|
|
-// if (agvLocationRelationEnum.getSafeLocation().equals(agvHikOrderInfo.getGoal())){
|
|
|
-// goal = agvLocationRelationEnum.getPreserveLocation();
|
|
|
-// }
|
|
|
-// }
|
|
|
-// externalApiService.addAgvTask(agvHikOrderInfo.getGoal(), 0, goal, AgvActionEnum.SITUANDDOWN.getActionId(), agvHikOrderInfo.getTaskId(), agvHikOrderInfo.getTaskNodeId(), agvHikOrderInfo.getTaskCode(),2);
|
|
|
-// }
|
|
|
-// redisTemplate.delete(taskCode);
|
|
|
+ // 更新库位信息
|
|
|
+ stockInfoMapper.updateStockInfoByStorgeId(updateLockStatusParams);
|
|
|
return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
|
|
|
}
|
|
|
}else{
|
|
|
- Object autoNodeTaskInfo = redisTemplate.opsForValue().get(taskCode);
|
|
|
-
|
|
|
- String taskId = autoNodeTaskInfo.toString().split("-")[0];
|
|
|
- String taskNodeId = autoNodeTaskInfo.toString().split("-")[1];
|
|
|
- JSONObject autoNodeTaskInfoObj = new JSONObject();
|
|
|
- autoNodeTaskInfoObj.put("taskId",taskId);
|
|
|
- autoNodeTaskInfoObj.put("taskNodeId",taskNodeId);
|
|
|
- redisTemplate.delete(taskCode);
|
|
|
- autoNodeTaskInfoObj.put("code","0");
|
|
|
-// autoNodeTaskInfoObj.put("msg",msg);
|
|
|
- autoNodeTaskInfoObj.put("msg","AGV任务执行失败");
|
|
|
- HttpHeaders headers = new HttpHeaders();
|
|
|
- headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
|
|
|
-
|
|
|
- HttpEntity<String> formEntity = new HttpEntity<String>(autoNodeTaskInfoObj.toJSONString(),headers);
|
|
|
- String taskNodeCallbackUrl = parameterService.getValue(ParameterKey.TASKNODECALLBACKURL, null);
|
|
|
- int sendCount = 0;
|
|
|
- // 解析回调结果
|
|
|
- boolean flag = repeatSend(taskNodeCallbackUrl,formEntity,sendCount);
|
|
|
- if(flag){
|
|
|
- return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
|
|
|
- }else{
|
|
|
- return HikR.success().setReqCode(agvHikOrderDetailInfo.getReqCode());
|
|
|
- }
|
|
|
+ // TODO 物料没放平告警
|
|
|
+ return HikR.success();
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/**
|