Browse Source

线边库逻辑最后一个动作问题修改,日志打印调整

yejian 3 years ago
parent
commit
843616620d

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

@@ -6,6 +6,7 @@ import com.github.zuihou.exception.BizException;
 import com.rabbitmq.client.Channel;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -43,7 +44,7 @@ public class ConsumerHandler implements ChannelAwareMessageListener {
             e.printStackTrace();
             log.error("MQ异常:"+e.getMessage());
             //是否重试请求
-            if (e.getMessage().equals("节点参数异常")) {
+            if (StringUtils.isNotBlank(e.getMessage()) && e.getMessage().equals("节点参数异常")) {
                 channel.basicNack(deliveryTag, false, false);//消息消费失败将丢弃该消息
             }else{
                 log.error("消息消费失败重新进入队列");

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

@@ -294,7 +294,6 @@ public class TaskWorkNode {
 
                     //运行条件验证
                     conMap = checkCon(taskNode, tTask, queryMap);
-                    logger.info("节点{}资源检查返回{}",taskNode.getId(),conMap);
                     msgUtil.redis_set_map(CacheKey.TASK_CURRENT_NODE_CONDITION + "_" + taskNode.getId(), conMap);
 
                     if((boolean)conMap.get("result")){
@@ -331,7 +330,7 @@ public class TaskWorkNode {
                                 //缓存执行当前节点传参
                                 msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE_PARAMS + "_" + taskNode.getId(), agvParam.toJSONString());
                                 R addHikTask = agvHikOrderInfoService.addHikTask(agvData);
-//                                agvData.put("transferType","agv");
+////                                agvData.put("transferType","agv");
 //                                R addAgvTask = externalApiService.processTransferJob(agvData);
 
                             }
@@ -391,16 +390,16 @@ public class TaskWorkNode {
             }
         } catch (BizException e) {
             e.printStackTrace();
+            conMap.put("result",false);
             JSONObject errJsonObject = new JSONObject();
             errJsonObject.put("code", "exception");
             errJsonObject.put("msg", e.getMessage());
             returnData = errJsonObject.toJSONString();
             logger.error("调用接口发生异常" + e.getMessage());
         } catch (Exception e) {
+            conMap.put("result",false);
             e.printStackTrace();
         } finally {
-            logger.info("最终检查结果conMap=" + conMap);
-            logger.info("===============================接口返回" + returnData);
             JSONObject retJson = JSONObject.parseObject(returnData);
             if (retJson != null) {
                 String code = retJson.getString("result").trim();
@@ -820,7 +819,7 @@ public class TaskWorkNode {
 
         dataMap.put(YunjianConstant.YUNJIAN_XBKFLAG, YunjianConstant.YUNJIAN_XBKFLAG);
         //执行到第几步
-        dataMap.put(taskNode.getId().toString() + "count", count);
+        dataMap.put(taskNode.getId().toString() + "count",count );
         //前序是设备序并且最后一个节点是agv搬运,锁定agv相关库位信息
         if (BizConstant.ROBOT_TYPE_CACHE.equals(zoneService.getRobotTypebyZone(zone.getName()))) { //有缓存位的机器人
             dataMap.put(YunjianConstant.YUNJIAN_ROBORT_CACHE_FLAG, "1");

+ 2 - 3
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/TaskNodeServiceImpl.java

@@ -1583,11 +1583,10 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
         String robotType = callBackJson.getString(YunjianConstant.YUNJIAN_ROBORT_CACHE_FLAG);
         String robotStepKey = taskNode.getId() + "count";
         String robotStep = callBackJson.getString(robotStepKey);
-
+        logger.info("节点{}机器人类型{},机器人执行工步{},机器人执行第几步{}",taskNode.getId(),robotType,robotStepKey,robotStep);
         String xbkFlag = callBackJson.getString(YunjianConstant.YUNJIAN_XBKFLAG);
-
+        logger.info("节点{}是否线边库逻辑{}",taskNode.getId(),xbkFlag);
         if(StringUtils.isNotBlank(xbkFlag)){
-
             if(StringUtils.isBlank(robotStep)){
                 // 放到线边库后释放资源
                 logger.info("节点{}开始释放线边库逻辑占用的资源锁", taskNode.getId());

+ 16 - 13
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/RobotNodeServiceImpl.java

@@ -291,6 +291,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
         int count = Integer.parseInt(dataMap.get(taskNode.getId().toString() + "count") == null ? "0" : dataMap.get(taskNode.getId().toString() + "count").toString());
 
         Storge startStore = workpieceService.getWorkPieceStock(taskNode.getCompleteBatchNo(), false);
+
         //目的库位
         Storge jqrStorge = null;
 
@@ -317,18 +318,20 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                     if(CollectionUtil.isNotEmpty(flikustockInfos)){//
                         startStore = storgeMapper.selectById(flikustockInfos.get(0).getStorgeId());
                     }
-
+                    log.info("节点{}查找物料所在位子{}",taskNode.getId(),startStore.getPointId());
                     // begin modify by yejian on 20220510 for 条件检验先检查机器人,在检查目标库位
                     ProductionresourcePosition po = logical(robotList,flikustockInfos,taskNode);
-                    log.info("节点{}检查机器人资源条件返回{}",taskNode.getId(),po);
-                    if (po!=null) {
+                    log.info("节点{}检查机器人资源{}点位返回{}",taskNode.getId(),po.getResourceId(),po.getPointId());
+                    if (po != null) {
                         // 机器人可用,判断目标地址
                         //目标库位,可能是
                         Map returnMap = getTargetStorge(nextTaskNode,taskNode.getFindAgvFlag(),bomProcedure.getType());
-                        log.info("节点{}检查目标库位是否满足返回{}",taskNode.getId(),returnMap);
+
                         //目标地址和类型
                         Storge targetStorge = returnMap.get("store")==null?null:(Storge)returnMap.get("store");
+                        log.info("节点{}检查目标库位是否满足返回{}",taskNode.getId(),targetStorge.getPointId());
                         if(null != targetStorge){
+
                             String targetxbk = returnMap.get("targetxbk")==null?null:(String)returnMap.get("targetxbk");
                             jqrStorge = storgeService.getById(jqrMap.get(DemoLineConstant.DEMOLINE_RJQR_ZS).get(0).getStorgeId());
                             jqrStorge.setCompleteBatchNo(task.getCompleteBatchNo());
@@ -342,7 +345,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                             //锁定目标库位
                             targetStorge.setCompleteBatchNo(task.getCompleteBatchNo());
                             storgeService.lockStorge(targetStorge, nextTaskNode.getId());
-
+                            log.info("节点{}提前占用机器人抓手{},缓存位{},目标库位{}",taskNode.getId(),jqrStorge.getPointId(),hcwStorge.getPointId(),targetStorge.getPointId());
                             //抓手缓存
                             msgUtil.redis_set(DemoCacheKey.YUNJIAN_CAMP + "_" + YunjianConstant.YUNJIAN_JXS + nextTaskNode.getId(), jqrStorge, 1, TimeUnit.DAYS);
                             msgUtil.redis_set(DemoCacheKey.YUNJIAN_CAMP + "_" + YunjianConstant.YUNJIAN_JXS + taskNode.getId(), jqrStorge, 1, TimeUnit.DAYS);
@@ -361,7 +364,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                             dataMap.put("data", locationMap);
                             dataMap.put("method", "MoveRobotPosition");
                             dataMap.put("result", true);
-                            // dataMap.put("bizType", targetxbk);
+//                            dataMap.put("bizType", targetxbk);
                             // begin modify by yejian on 20220520 for 解决资源抢占时机器人是空闲状态但是实际上面有料不能操作的时候请求指令接口返回失败后进入死循环问题
                             // TODO 后续可改成信号对接判断,先如果返回失败释放资源进去队列重新轮训
                             // 返回内容中记录当前任务占用资源
@@ -424,10 +427,11 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                 log.info("节点{}检查机器人资源条件返回{}",taskNode.getId(),po);
                 if (po!=null) {
                     Map returnMap = getTargetStorge(nextTaskNode,taskNode.getFindAgvFlag(),bomProcedure.getType());
-                    log.info("节点{}检查目标库位是否满足返回{}",taskNode.getId(),returnMap);
+
                     //目标地址和类型
                     Storge targetStorge = returnMap.get("store")==null?null:(Storge)returnMap.get("store");
                     String targetxbk = returnMap.get("targetxbk")==null?null:(String)returnMap.get("targetxbk");
+                    log.info("节点{}检查目标库位是否满足返回{}",taskNode.getId(),targetStorge.getPointId());
 
                     // 立库取子盘到人工上下料站资源不可用时不能进入线边库
                     if(taskNode.getCompleteBatchSort()==1 && "1".equals(targetxbk)){
@@ -452,7 +456,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                             //目的地为机器人手臂
                             dataMap.put("toStorge", jqrStorge);
 
-                            dataMap.put("bizType", targetxbk);
+//                            dataMap.put("bizType", targetxbk);
                             //锁定机器人
                             jqrStorge.setCompleteBatchNo(task.getCompleteBatchNo());
                             storgeService.lockStorge(jqrStorge, nextTaskNode.getId());
@@ -614,7 +618,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
             ZZone agvGoalZone = zoneService.getById(agvGoalZoneId);
             String[] jbwArr = DictionaryKey.YJ_ZONE_JBW.get(agvGoalZone.getName()).split(",");
             List<ProductionresourcePosition> jbwBList = productionresourcePositionService.getFreeProductionresourceAgvPositionByNos(jbwArr);
-            log.info("节点{},查询终点接驳位接驳位数量{}",taskNode.getId(),jbwBList);
+//            log.info("节点{},查询终点接驳位接驳位数量{}",taskNode.getId(),jbwBList);
             if(targetStorge!=null&&CollectionUtil.isNotEmpty(jbwBList)){
 
                 ProductionresourcePosition position = null;
@@ -622,7 +626,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                     position = productionresourcePosition;
                     break;
                 }
-                log.info("节点{},查询到终点接驳位{}",taskNode.getId(),position);
+//                log.info("节点{},查询到终点接驳位{}",taskNode.getId(),position);
                 if(null!=position){
                     agvEndStationStorge =storgeService.getById(position.getStorgeId());
                     //更新到targetresourceid
@@ -632,7 +636,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                     lastAgvTaskNode.setResourceId(taskNode.getTargetResourceId());
                     taskNodeService.updateById(taskNode);
                     taskNodeService.updateById(lastAgvTaskNode);
-                    log.info("节点{},更新相应节点接驳位信息完成",taskNode.getId());
+//                    log.info("节点{},更新相应节点接驳位信息完成",taskNode.getId());
                 }
 
                 returnMap.put("store",targetStorge);
@@ -690,7 +694,6 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                 //目标设备
                 if(resourceId!=null){
                     targetList = productionresourcePositionService.getFreeProductionresourcePositionByIds(new String[] {resourceId.toString()});
-                    log.info("节点{},查找目标设备可用信息{}",taskNode.getId(),targetList);
                     if(CollectionUtil.isNotEmpty(targetList)){
                         targetStorge = storgeService.getById(targetList.get(0).getStorgeId());
                         returnMap.put("store",targetStorge);
@@ -721,7 +724,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                 xbkArr = DictionaryKey.YJ_ZONE_XBK.get(zoneName).split(",");
                 xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
             }
-            log.info("查找线边库库位{}",xbkList);
+            log.info("查找线边库库位{}",xbkList.get(0).getPointId());
             if(CollectionUtil.isNotEmpty(xbkList)){
                 ProductionresourcePosition position = xbkList.get(0);
                 targetStorge = storgeService.getById(position.getStorgeId());

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/util/MsgUtil.java

@@ -274,7 +274,7 @@ public class MsgUtil implements ApplicationContextAware {
                         limit =2;
                     }
 
-                    if(count<limit-1){//
+                    if(count<limit){//
                         count = ++count;
                         //把当前节点推送到mq
                         jsonObject.put("taskNodeId",taskNode.getId().toString());

+ 0 - 2
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionResourceCenter/entity/ResourceAutoCode.java

@@ -29,8 +29,6 @@ public class ResourceAutoCode extends Entity<Long> {
 
     private static final long serialVersionUID = 1L;
 
-    private Long id;
-
     /**
      * 设备业务名
      */