|
@@ -267,6 +267,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
private Map<String, Object> commandHandle(Map<String, Object> dataMap, Storge agvStartStationStorge,String functionName){
|
|
private Map<String, Object> commandHandle(Map<String, Object> dataMap, Storge agvStartStationStorge,String functionName){
|
|
|
TaskNode taskNode = (TaskNode) dataMap.get("taskNode");
|
|
TaskNode taskNode = (TaskNode) dataMap.get("taskNode");
|
|
|
TTask task = (TTask) dataMap.get("task");
|
|
TTask task = (TTask) dataMap.get("task");
|
|
|
|
|
+ BomProcedure bomProcedure = bomProcedureMapper.selectOne(Wraps.<BomProcedure>lbQ().eq(BomProcedure::getId,task.getProcedureId()));
|
|
|
|
|
+
|
|
|
int count = Integer.parseInt(dataMap.get(taskNode.getId().toString() + "count") == null ? "0" : dataMap.get(taskNode.getId().toString() + "count").toString());
|
|
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 startStore = workpieceService.getWorkPieceStock(taskNode.getCompleteBatchNo(), false);
|
|
@@ -298,7 +300,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//目标库位,可能是
|
|
//目标库位,可能是
|
|
|
- Map returnMap = getTargetStorge(nextTaskNode,taskNode.getFindAgvFlag());
|
|
|
|
|
|
|
+ Map returnMap = getTargetStorge(nextTaskNode,taskNode.getFindAgvFlag(),bomProcedure.getType());
|
|
|
//目标地址和类型
|
|
//目标地址和类型
|
|
|
Storge targetStorge = returnMap.get("store")==null?null:(Storge)returnMap.get("store");
|
|
Storge targetStorge = returnMap.get("store")==null?null:(Storge)returnMap.get("store");
|
|
|
String targetxbk = returnMap.get("targetxbk")==null?null:(String)returnMap.get("targetxbk");
|
|
String targetxbk = returnMap.get("targetxbk")==null?null:(String)returnMap.get("targetxbk");
|
|
@@ -372,7 +374,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
}
|
|
}
|
|
|
}else if (BizConstant.ROBOT_TYPE_NOCACHE.equals(zoneService.getRobotTypebyZone(zoneName))) {
|
|
}else if (BizConstant.ROBOT_TYPE_NOCACHE.equals(zoneService.getRobotTypebyZone(zoneName))) {
|
|
|
TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
|
|
TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
|
|
|
- Map returnMap = getTargetStorge(nextTaskNode,taskNode.getFindAgvFlag());
|
|
|
|
|
|
|
+ Map returnMap = getTargetStorge(nextTaskNode,taskNode.getFindAgvFlag(),bomProcedure.getType());
|
|
|
|
|
|
|
|
//获取当前位置
|
|
//获取当前位置
|
|
|
if(CollectionUtil.isNotEmpty(flikustockInfos)){//
|
|
if(CollectionUtil.isNotEmpty(flikustockInfos)){//
|
|
@@ -519,7 +521,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- public Map getTargetStorge(TaskNode taskNode,String findAgvFlag){
|
|
|
|
|
|
|
+ public Map getTargetStorge(TaskNode taskNode,String findAgvFlag,String bomProcedureType){
|
|
|
Map returnMap = new HashMap();
|
|
Map returnMap = new HashMap();
|
|
|
Storge targetStorge = null;
|
|
Storge targetStorge = null;
|
|
|
Storge agvEndStationStorge = null;
|
|
Storge agvEndStationStorge = null;
|
|
@@ -562,15 +564,23 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
xbkFlag = "1";
|
|
xbkFlag = "1";
|
|
|
}
|
|
}
|
|
|
}else {
|
|
}else {
|
|
|
- //目标设备
|
|
|
|
|
- if(resourceId!=null){
|
|
|
|
|
- targetList = productionresourcePositionService.getFreeProductionresourcePositionByIds(new String[] {resourceId.toString()});
|
|
|
|
|
- if(CollectionUtil.isNotEmpty(targetList)){
|
|
|
|
|
- targetStorge = storgeService.getById(targetList.get(0).getStorgeId());
|
|
|
|
|
- returnMap.put("store",targetStorge);
|
|
|
|
|
- returnMap.put("targetxbk","0");
|
|
|
|
|
- }else{//需要放到线边库
|
|
|
|
|
- xbkFlag = "1";
|
|
|
|
|
|
|
+ if(bomProcedureType.equals("下料")){
|
|
|
|
|
+ // 下料特殊处理,动态查找可用立库位子存放下料后的子盘夹具
|
|
|
|
|
+ Long storgeId = getLikuStockInList();
|
|
|
|
|
+ targetStorge = storgeService.getById(storgeId);
|
|
|
|
|
+ returnMap.put("store",targetStorge);
|
|
|
|
|
+ returnMap.put("targetxbk","0");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ //目标设备
|
|
|
|
|
+ if(resourceId!=null){
|
|
|
|
|
+ targetList = productionresourcePositionService.getFreeProductionresourcePositionByIds(new String[] {resourceId.toString()});
|
|
|
|
|
+ if(CollectionUtil.isNotEmpty(targetList)){
|
|
|
|
|
+ targetStorge = storgeService.getById(targetList.get(0).getStorgeId());
|
|
|
|
|
+ returnMap.put("store",targetStorge);
|
|
|
|
|
+ returnMap.put("targetxbk","0");
|
|
|
|
|
+ }else{//需要放到线边库
|
|
|
|
|
+ xbkFlag = "1";
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -661,4 +671,39 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
return returnList;
|
|
return returnList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 立库获取终点位置,取空库位的数据
|
|
|
|
|
+ * @param task
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ private long getLikuStockInList(){
|
|
|
|
|
+ List <StockInfo> returnList = null;
|
|
|
|
|
+
|
|
|
|
|
+ List<Productionresource> productionresources = productionresourceBizMapper.selectList(Wraps.<Productionresource>lbQ().like(Productionresource::getName,"立库"));
|
|
|
|
|
+ List<Long> productionresourceIds = productionresources.stream().map(t->t.getId()).collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ if(CollectionUtil.isEmpty(productionresourceIds)){
|
|
|
|
|
+ return -1;
|
|
|
|
|
+ }
|
|
|
|
|
+ String resourceIds = "";
|
|
|
|
|
+ for(int i = 0; i < productionresourceIds.size(); i++){
|
|
|
|
|
+ if(i == productionresourceIds.size() - 1){
|
|
|
|
|
+ resourceIds = resourceIds + productionresourceIds.get(i);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ resourceIds = resourceIds + productionresourceIds.get(i)+ ",";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ Map queryMap = new HashMap();
|
|
|
|
|
+ queryMap.put("resourceIds",resourceIds);
|
|
|
|
|
+
|
|
|
|
|
+ // 判断夹具是否有可用的,查询330个库位信息中是否还有夹具
|
|
|
|
|
+
|
|
|
|
|
+ List<Long> allStockList = stockInfoMapper.getAvailableStorge(queryMap);
|
|
|
|
|
+ if(allStockList.size() > 0){
|
|
|
|
|
+ return allStockList.get(0);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ return -1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|