Browse Source

指令重发

yejian 3 years ago
parent
commit
bd2af8cbbf

+ 10 - 6
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/externalApi/service/impl/AgvHikOrderDetailInfoServiceImpl.java

@@ -78,15 +78,19 @@ public class AgvHikOrderDetailInfoServiceImpl extends SuperCacheServiceImpl<AgvH
             // 组装数据模拟agv任务完成返回
             JSONObject jsonObject = JSONObject.parseObject(data);
             String taskCode = jsonObject.getString("taskCode");
-//            if(Long.valueOf(taskCode) % 10 == 1){
-//                jsonObject.put("method","end");
-//                jsonObject.put("code","999999");
-//                jsonObject.put("msg","false");
-//            }else{
+            if(Long.valueOf(taskCode) % 10 == 1
+                || Long.valueOf(taskCode) % 10 == 2
+                || Long.valueOf(taskCode) % 10 == 3
+                || Long.valueOf(taskCode) % 10 == 4
+                || Long.valueOf(taskCode) % 10 == 5){
+                jsonObject.put("method","end");
+                jsonObject.put("code","999999");
+                jsonObject.put("msg","false");
+            }else{
                 jsonObject.put("method","end");
                 jsonObject.put("code","0");
                 jsonObject.put("msg","success");
-//            }
+            }
 
 
             // 组装参数发送至agv回调接口

+ 5 - 2
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/mq/TaskWorkNode.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.zuihou.base.R;
 import com.github.zuihou.business.DemoLine.DemoCacheKey;
 import com.github.zuihou.business.DemoLine.DemoLineConstant;
 import com.github.zuihou.business.DemoLine.YunjianConstant;
@@ -314,9 +315,11 @@ public class TaskWorkNode {
                                 agvData.put("taskId", tTask.getId().toString());
                                 agvData.put("taskNodeId", taskNode.getId().toString());
                                 String jsonParam = getRequestParam(conMap);
+                                JSONObject agvParam = new JSONObject();
+                                agvParam.putAll(agvData);
                                 //缓存执行当前节点传参
-                                msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE_PARAMS + "_" + taskNode.getId(), jsonParam);
-                                agvHikOrderInfoService.addHikTask(agvData);
+                                msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE_PARAMS + "_" + taskNode.getId(), agvParam.toJSONString());
+                                R addHikTask = agvHikOrderInfoService.addHikTask(agvData);
                             }
                         } else {
                             if (!"04".equals(taskNode.getInterfaceType())) {

+ 37 - 29
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/dispatchRecord/DispatchExceptionController.java

@@ -16,6 +16,7 @@ import com.github.zuihou.business.dispatchRecord.entity.DispatchException;
 import com.github.zuihou.business.dispatchRecord.entity.DispatchRecord;
 import com.github.zuihou.business.dispatchRecord.service.DispatchExceptionService;
 import com.github.zuihou.business.dispatchRecord.service.DispatchRecordService;
+import com.github.zuihou.business.externalApi.service.AgvHikOrderInfoService;
 import com.github.zuihou.business.operationManagementCenter.entity.Order;
 import com.github.zuihou.business.operationManagementCenter.entity.TWorkpiece;
 import com.github.zuihou.business.operationManagementCenter.entity.TaskNode;
@@ -88,6 +89,9 @@ public class DispatchExceptionController extends SuperSimpleController<AAutoNode
 
     @Autowired
     private ZZoneService zoneService;
+    @Autowired
+    private AgvHikOrderInfoService agvHikOrderInfoService;
+
 
     @ApiOperation(value = "查询对话调度异常", notes = "查询对话调度异常")
     @PostMapping("/page")
@@ -184,47 +188,51 @@ public class DispatchExceptionController extends SuperSimpleController<AAutoNode
             return R.fail("指令请求不存在");
         }
         TaskNode taskNode = taskNodeService.getById(taskNodeId);
-        //清除资源锁定
-//        if(taskNode.getInterfaceType().equals("3")){
-//            //AGV资源释放
-//
-//        }else{
-//            taskNodeService.freeLock(taskNode.getCompleteBatchNo());
-//        }
         ZZoneProductionresource zoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,taskNode.getResourceId()));
         ZZone zZone = zoneService.getById(zoneProductionresource.getZoneId());
         if(zZone.getRunMode().equals("2")){
             return  R.fail("指令模式必须在手动模式下才可以执行,请确认产线模式");
         }
+        //清除资源锁定
+        if(taskNode.getInterfaceType().equals("3")){
+            //AGV资源释放
+            Map agvData = JSONObject.parseObject(jsonParam,Map.class);
+            R addHikTask = agvHikOrderInfoService.addHikTask(agvData);
+            if(!addHikTask.getIsSuccess()){
+                return R.fail("指令重发失败");
+            }
+        }else{
+//            taskNodeService.freeLock(taskNode.getCompleteBatchNo());
 
-        // 判断该节点使用那条线的plc
+            // 判断该节点使用那条线的plc
 //        Map<String, String>  plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
 //        String paramKey = zZone.getNo() + "_plc";
 //        String plcUrl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(paramKey).toString());
 //
 //        // TODO 后续删除代码,目前条用模拟接口
 //        plcUrl = plcUrl.replace("8081","8083");
-        //String plcUrl =
-        //String plcUrl = conMap.get("instructionUrl") + "/api/" + conMap.get("method").toString();
-
-        HttpHeaders headers = new HttpHeaders();
-        headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
-        HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam, headers);
-
-        String instructionUrl = conMap.get("instructionUrl") +"/api/"+ autoNodeLog.getMethod().toString() ;
-        String returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);
-        JSONObject retJson = JSONObject.parseObject(returnData);
-        String code = retJson.getString("result").trim();
-        if(code.equals("false")){
-            autoNodeLog.setExeResult("0").setManual("1").setFeedback(retJson.getString("msg")).setExecuteTime(new Date());
-            aAutoNodeLogService.updateAllById(autoNodeLog);
-            return R.fail("指令重发失败");
-        }else{
-            //将同一节点的指令请求日志状态批量改为处理
-            List<Long> ids = aAutoNodeLogService.list(new LbqWrapper<AAutoNodeLog>().eq(AAutoNodeLog::getTaskNodeId, taskNodeId).eq(AAutoNodeLog::getStatus, "0").orderByAsc(AAutoNodeLog::getCreateTime)).stream().map(AAutoNodeLog::getId).collect(Collectors.toList());
-            UpdateWrapper<AAutoNodeLog> updateWrapper = new UpdateWrapper<AAutoNodeLog>();
-            updateWrapper.lambda().in(AAutoNodeLog::getId, ids.toArray()).set(AAutoNodeLog::getStatus, "1");
-            aAutoNodeLogService.update(updateWrapper);
+            //String plcUrl =
+            //String plcUrl = conMap.get("instructionUrl") + "/api/" + conMap.get("method").toString();
+
+            HttpHeaders headers = new HttpHeaders();
+            headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
+            HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam, headers);
+
+            String instructionUrl = conMap.get("instructionUrl") +"/api/"+ autoNodeLog.getMethod().toString() ;
+            String returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);
+            JSONObject retJson = JSONObject.parseObject(returnData);
+            String code = retJson.getString("result").trim();
+            if(code.equals("false")){
+                autoNodeLog.setExeResult("0").setManual("1").setFeedback(retJson.getString("msg")).setExecuteTime(new Date());
+                aAutoNodeLogService.updateAllById(autoNodeLog);
+                return R.fail("指令重发失败");
+            }else{
+                //将同一节点的指令请求日志状态批量改为处理
+                List<Long> ids = aAutoNodeLogService.list(new LbqWrapper<AAutoNodeLog>().eq(AAutoNodeLog::getTaskNodeId, taskNodeId).eq(AAutoNodeLog::getStatus, "0").orderByAsc(AAutoNodeLog::getCreateTime)).stream().map(AAutoNodeLog::getId).collect(Collectors.toList());
+                UpdateWrapper<AAutoNodeLog> updateWrapper = new UpdateWrapper<AAutoNodeLog>();
+                updateWrapper.lambda().in(AAutoNodeLog::getId, ids.toArray()).set(AAutoNodeLog::getStatus, "1");
+                aAutoNodeLogService.update(updateWrapper);
+            }
         }
         return R.success(true);
     }

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

@@ -89,7 +89,7 @@ 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 msg =  null == data.get("msg") ? "":data.get("msg");
+        String msg =  null == data.get("data") ? "":data.get("data");
         if(StringUtil.isEmpty(taskCode)){
             return HikR.fail("任务单号为空");
         }
@@ -190,7 +190,9 @@ public class HikAgvControl extends SuperController<AgvHikOrderInfoService, Long,
             JSONObject autoNodeTaskInfoObj =(autoNodeTaskInfo==null?null:JSONObject.parseObject(autoNodeTaskInfo.toString()));
             redisTemplate.delete(taskCode);
             // TODO 后续改成0失败
-            autoNodeTaskInfoObj.put("code","1");
+            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"));