| 
					
				 | 
			
			
				@@ -1243,7 +1243,7 @@ public class TaskWorkNode { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Storge targetStorge = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long resourceId = taskNode.getTargetResourceId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String xbkFlag = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String goalZone = ""; //下一个节点机器人所属产线编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if("1".equals(findAgvFlag)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //需要提前锁定下个接驳位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // begin modify by yejian on 20220513 for agv动态查找满足抽检一个工序需多次调度agv问题 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1262,6 +1262,7 @@ public class TaskWorkNode { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //获取产线ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Long agvGoalZoneId = zoneProductionresource.getZoneId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ZZone agvGoalZone = zoneService.getById(agvGoalZoneId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            goalZone = agvGoalZone.getNo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             String[] jbwArr = DictionaryKey.YJ_ZONE_JBW.get(agvGoalZone.getNo()).split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<ProductionresourcePosition> jbwBList = productionresourcePositionService.getFreeProductionresourceAgvPositionByNos(jbwArr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             logger.info("线边库逻辑节点{},查询线边库轮询终点接驳位接驳位数量{}",taskNode.getId(),jbwBList); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1312,7 +1313,7 @@ public class TaskWorkNode { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //起点位置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ProductionresourcePosition startPosition = this.getPosition(zZone.getNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ProductionresourcePosition startPosition = this.getPosition(zZone.getNo(),goalZone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //目标无板 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Map targetJbwPlateMap =  new HashMap(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1462,15 +1463,48 @@ public class TaskWorkNode { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 获取起点位置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param zone 保障中心/框体线/舱体线 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param zone 保障中心/框体线/仓体线(当前零件所在产线) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param goalZone 下一个节点的所属产线编码(零件要去的产线) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public ProductionresourcePosition getPosition(String zone) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ProductionresourcePosition getPosition(String zone,String goalZone) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取开始位置区域集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<String> zoneList = DictionaryKey.YJ_ZONE.get(zone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ProductionresourcePosition position = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //优先判断零件要去的产线接驳位是否有空位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String[] jbws = DictionaryKey.YJ_ZONE_JBW.get(goalZone).split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map startJbwMap = new HashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        startJbwMap.put("haveGoods", "1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        startJbwMap.put("xbkFlag", "1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        startJbwMap.put("findAgvStation", "1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        startJbwMap.put("codes", StringUtil.changeIdsArrToSubQueryStr(jbws)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //查询可用的板子 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ProductionresourcePosition> agvStarts = productionresourcePositionMapper.getPPList(startJbwMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int agvStartCount=CollectionUtil.isNotEmpty(agvStarts) ? agvStarts.size() : 0; //可用的板子个数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //查询被占用的接驳位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map occupyJbwMap = new HashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        startJbwMap.put("occupyFlag", "1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        startJbwMap.put("codes", StringUtil.changeIdsArrToSubQueryStr(jbws)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ProductionresourcePosition> occupyList = productionresourcePositionMapper.getPPList(occupyJbwMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int occupyCount=CollectionUtil.isNotEmpty(occupyList) ? occupyList.size() : 0; //占用的接驳位个数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int jbwCount = jbws.length; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(jbwCount == (occupyCount + agvStartCount)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //无空闲位置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(jbwCount > occupyCount){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //存在可用板子 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                position = agvStarts.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return position; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         int i = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (String zoneT : zoneList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |