|
@@ -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) {
|
|
|
|