Jelajahi Sumber

海康agv回调修改

yejian 2 tahun lalu
induk
melakukan
30c6df8a54

+ 46 - 109
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/externalApi/HikAgvControl.java

@@ -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();
         }
-
     }
 
     /**