|
@@ -1297,7 +1297,7 @@ public class TaskWorkNode {
|
|
returnMap.put("targetxbk","0");
|
|
returnMap.put("targetxbk","0");
|
|
|
|
|
|
}else{//需要放到线边库
|
|
}else{//需要放到线边库
|
|
- /*//起点空盘
|
|
|
|
|
|
+ /* //起点空盘
|
|
Map startJbwPlateMap = new HashMap();
|
|
Map startJbwPlateMap = new HashMap();
|
|
startJbwPlateMap.put("haveGoods","1");
|
|
startJbwPlateMap.put("haveGoods","1");
|
|
startJbwPlateMap.put("findAgvStation","1");
|
|
startJbwPlateMap.put("findAgvStation","1");
|
|
@@ -1309,8 +1309,7 @@ public class TaskWorkNode {
|
|
int count = stockInfoMapper.selectCount(new LbqWrapper<StockInfo>().eq(StockInfo::getStorgeId, item.getStorgeId()));
|
|
int count = stockInfoMapper.selectCount(new LbqWrapper<StockInfo>().eq(StockInfo::getStorgeId, item.getStorgeId()));
|
|
return count == 1 ? true : false;
|
|
return count == 1 ? true : false;
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
- ProductionresourcePosition startPosition = tempAgvStartList !=null && tempAgvStartList.size()>0 ? tempAgvStartList.get(0) : null;
|
|
|
|
-*/
|
|
|
|
|
|
+ ProductionresourcePosition startPosition = tempAgvStartList !=null && tempAgvStartList.size()>0 ? tempAgvStartList.get(0) : null;*/
|
|
|
|
|
|
//起点位置
|
|
//起点位置
|
|
ProductionresourcePosition startPosition = this.getPosition(zZone.getNo(),goalZone);
|
|
ProductionresourcePosition startPosition = this.getPosition(zZone.getNo(),goalZone);
|
|
@@ -1463,6 +1462,10 @@ public class TaskWorkNode {
|
|
|
|
|
|
/**
|
|
/**
|
|
* 获取起点位置
|
|
* 获取起点位置
|
|
|
|
+ * 逻辑:
|
|
|
|
+ * 优先判断零件要去的产线接驳位是否有空位
|
|
|
|
+ * 如果没有空位,看是否有空闲的板子,有则调度,无则直接返回null
|
|
|
|
+ * 如果有空位,依据零件目前所在产线调度距离最近的板子,优先调度产线存在多个空板子的产线
|
|
* @param zone 保障中心/框体线/仓体线(当前零件所在产线)
|
|
* @param zone 保障中心/框体线/仓体线(当前零件所在产线)
|
|
* @param goalZone 下一个节点的所属产线编码(零件要去的产线)
|
|
* @param goalZone 下一个节点的所属产线编码(零件要去的产线)
|
|
*/
|
|
*/
|
|
@@ -1475,35 +1478,35 @@ public class TaskWorkNode {
|
|
|
|
|
|
//优先判断零件要去的产线接驳位是否有空位
|
|
//优先判断零件要去的产线接驳位是否有空位
|
|
String[] jbws = DictionaryKey.YJ_ZONE_JBW.get(goalZone).split(",");
|
|
String[] jbws = DictionaryKey.YJ_ZONE_JBW.get(goalZone).split(",");
|
|
-
|
|
|
|
Map startJbwMap = new HashMap();
|
|
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;
|
|
|
|
|
|
+ startJbwMap.put("codes",StringUtil.changeIdsArrToSubQueryStr(jbws));
|
|
|
|
+ startJbwMap.put("freeFlag","1");
|
|
|
|
+ startJbwMap.put("findAgvStation","1");
|
|
|
|
+ //查找无板子,无占用,无锁定的 空接驳位
|
|
|
|
+ List<ProductionresourcePosition> freeList = productionresourcePositionMapper.getPPList(startJbwMap);
|
|
|
|
+
|
|
|
|
+ if (CollectionUtil.isEmpty(freeList)){
|
|
|
|
+ //无空位,说明当前产线的接驳位已被全部使用,查找是否有空闲的板子,调度过去,空出一个位置
|
|
|
|
+ Map startJbwPlateMap = new HashMap();
|
|
|
|
+ startJbwPlateMap.put("haveGoods", "1");
|
|
|
|
+ startJbwPlateMap.put("xbkFlag", "1");
|
|
|
|
+ startJbwPlateMap.put("findAgvStation", "1");
|
|
|
|
+ startJbwPlateMap.put("codes", StringUtil.changeIdsArrToSubQueryStr(jbws));
|
|
|
|
+
|
|
|
|
+ //查询可用的板子
|
|
|
|
+ List<ProductionresourcePosition> agvStartList = productionresourcePositionMapper.getPPList(startJbwPlateMap);
|
|
|
|
+ List<ProductionresourcePosition> tempAgvStartList = agvStartList.stream().filter(item -> {
|
|
|
|
+ int count = stockInfoMapper.selectCount(new LbqWrapper<StockInfo>().eq(StockInfo::getStorgeId, item.getStorgeId()));
|
|
|
|
+ return count == 1 ? true : false;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ if(CollectionUtil.isNotEmpty(tempAgvStartList)){
|
|
|
|
+ //随机取一个空闲的板子
|
|
|
|
+ return tempAgvStartList.get(0);
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
|
|
+ return null; //无空位,无空闲的板子
|
|
|
|
+ }
|
|
|
|
|
|
int i = 1;
|
|
int i = 1;
|
|
for (String zoneT : zoneList) {
|
|
for (String zoneT : zoneList) {
|