|
@@ -95,6 +95,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
|
|
|
private List<ProductionresourcePosition> xbkList;
|
|
|
|
|
|
+ private List<ProductionresourcePosition> jbwList;
|
|
|
+
|
|
|
@Override
|
|
|
public void initResource(TaskNode taskNode, TTask task, Map dataMap) {
|
|
|
//productionresourcePosition = getResourcePosition(taskNode);
|
|
@@ -113,6 +115,12 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
DictionaryKey.YJ_ZONE_XBK.get(dataMap.get("robotType").toString())
|
|
|
}: new String[]{DemoLineConstant.NODE_RESOURCE_ZLZX_XBK};
|
|
|
xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
|
|
|
+ //jbwArr = modules.stream().map(Module::getNo).toArray(String[]::new);
|
|
|
+ List<Productionresource> dataList = productionresourceService.list(new QueryWrapper<Productionresource>().like("name", robotType));
|
|
|
+ if(dataList.size()>0) {
|
|
|
+ jbwArr = dataList.stream().map(Productionresource::getId).toArray(String[]::new);
|
|
|
+ jbwList = productionresourcePositionService.getFreeProductionresourcePositionByIds(jbwArr);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -121,7 +129,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
String carryType = dataMap.get("carryType") == null ? "" : dataMap.get("carryType").toString();
|
|
|
String robotType = dataMap.get("robotType") == null ? "" : dataMap.get("robotType").toString();
|
|
|
|
|
|
- Map<String, Object> map = new HashMap<>();
|
|
|
+ //Map<String, Object> map = new HashMap<>();
|
|
|
map.put("taskNode", taskNode);
|
|
|
map.put("task", task);
|
|
|
|
|
@@ -144,8 +152,12 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
Storge startStore = workpieceService.getWorkPieceStock(taskNode.getId(), false);
|
|
|
//目的库位
|
|
|
Storge jqrStorge = storgeService.getById(deviceList.get(0).getStorgeId());
|
|
|
-
|
|
|
//目标地址判断
|
|
|
+ if(map.containsKey("useXbk")){
|
|
|
+ //目标地址是线边库
|
|
|
+ map.put("result", false);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
|
|
|
switch(robotType){
|
|
|
case "质量中心机器人":
|
|
@@ -156,13 +168,13 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
break;
|
|
|
case "柔性线机器人":
|
|
|
//操作柔性线边库 具有取、移动、放三种指令
|
|
|
- //取放加工设备
|
|
|
+ //取放加工设备 设备存在缓存位
|
|
|
String count = dataMap.get(taskNode.getId().toString() + "count") == null ? "0" : dataMap.get(taskNode.getId().toString() + "count").toString();
|
|
|
map = this.commandHandle(map, startStore, jqrStorge, functionName, count);
|
|
|
break;
|
|
|
case "智能单元机器人":
|
|
|
//操作智能单元线边库 具有取、移动、放三种指令
|
|
|
- //取放加工设备
|
|
|
+ //取放加工设备 无缓存位处理
|
|
|
map = this.commandHandle(map, startStore, jqrStorge, functionName);
|
|
|
break;
|
|
|
case "舱体线机器人":
|
|
@@ -207,25 +219,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
private Map<String, Object> commandHandle(Map<String, Object> dataMap, Storge startStore, Storge jqrStorge, String... params){
|
|
|
TaskNode taskNode = (TaskNode) dataMap.get("taskNode");
|
|
|
TTask task = (TTask) dataMap.get("task");
|
|
|
- if ("取".equals(params[0])) {
|
|
|
- dataMap.put("zkIp", ZK_ip_zndy);
|
|
|
- dataMap.put(DemoLineConstant.DEMOLINE_BIZ_TYPE, "fetchMaterial");
|
|
|
- TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
|
|
|
- //if (CollectionUtil.isNotEmpty(jqrList)) {
|
|
|
- dataMap.put("fromStorge", startStore);
|
|
|
- dataMap.put("Data", startStore);
|
|
|
- //出入库类型
|
|
|
- dataMap.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_ALL_CRK);
|
|
|
- //目的地为机器人手臂
|
|
|
- dataMap.put("toStorge", jqrStorge);
|
|
|
- //锁定机器人
|
|
|
- jqrStorge.setCompleteBatchNo(task.getCompleteBatchNo());
|
|
|
- storgeService.lockStorge(jqrStorge, nextTaskNode.getId());
|
|
|
- //}
|
|
|
- //
|
|
|
- map.put("result", true);
|
|
|
- }
|
|
|
- else if (params[1]!= null) {
|
|
|
+ //缓存位判断处理
|
|
|
+ if (params[1]!= null) {
|
|
|
//int count = dataMap.get(taskNode.getId().toString() + "count") == null ? 0 : Integer.parseInt(dataMap.get(taskNode.getId().toString() + "count").toString());
|
|
|
int count = Integer.parseInt(params[1]);
|
|
|
//执行到第几步
|
|
@@ -290,12 +285,46 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+ else if ("取".equals(params[0])) {
|
|
|
+ dataMap.put("zkIp", ZK_ip_zndy);
|
|
|
+ dataMap.put(DemoLineConstant.DEMOLINE_BIZ_TYPE, "fetchMaterial");
|
|
|
+ TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
|
|
|
+ //if (CollectionUtil.isNotEmpty(jqrList)) {
|
|
|
+ dataMap.put("fromStorge", startStore);
|
|
|
+ dataMap.put("Data", startStore);
|
|
|
+ //出入库类型
|
|
|
+ dataMap.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_ALL_CRK);
|
|
|
+ //目的地为机器人手臂
|
|
|
+ dataMap.put("toStorge", jqrStorge);
|
|
|
+ //锁定机器人
|
|
|
+ jqrStorge.setCompleteBatchNo(task.getCompleteBatchNo());
|
|
|
+ storgeService.lockStorge(jqrStorge, nextTaskNode.getId());
|
|
|
+ //}
|
|
|
+ //
|
|
|
+ map.put("result", true);
|
|
|
+ }
|
|
|
else if ("放".equals(params[0])) {
|
|
|
//判断目标位置是否空闲
|
|
|
- String target[] = {taskNode.getAutoNode().getTargetId().toString()};
|
|
|
- List<ProductionresourcePosition> targetList = productionresourcePositionService.getFreeProductionresourcePositionByNos(target);
|
|
|
- List<ProductionresourcePosition> xbkList = new ArrayList<>();
|
|
|
-
|
|
|
+ String actionTarget = taskNode.getAutoNode().getTargetId().toString();
|
|
|
+ //1是本设备 2是接驳位
|
|
|
+ List<ProductionresourcePosition> targetList = "1".equals(actionTarget)? productionresourcePositionService.getFreeProductionresourcePositionByNos(new String[]{taskNode.getNodeNo()}) : jbwList;
|
|
|
+ ProductionresourcePosition productionresourcePosition = this.logical(targetList, true);
|
|
|
+ boolean bool = productionresourcePosition!=null ? true : false;
|
|
|
+ if(!bool){
|
|
|
+ dataMap.put("result", false);
|
|
|
+ return dataMap;
|
|
|
+ }
|
|
|
+ boolean isXbk = dataMap.containsKey("useXbk");
|
|
|
+ Storge targetStorge = storgeService.getById(productionresourcePosition.getStorgeId());
|
|
|
+ targetStorge.setCompleteBatchNo(task.getCompleteBatchNo());
|
|
|
+ if(isXbk){
|
|
|
+ dataMap.put("result", false);
|
|
|
+ }else{
|
|
|
+ //锁定设备
|
|
|
+ storgeService.lockStorge(targetStorge, taskNode.getId());
|
|
|
+ dataMap.put("result", true);
|
|
|
+ }
|
|
|
+ /*
|
|
|
if (CollectionUtil.isNotEmpty(targetList)) {//设备空闲
|
|
|
Storge targetStorge = storgeService.getById(targetList.get(0).getStorgeId());
|
|
|
//锁定加工设备库位
|
|
@@ -313,7 +342,9 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
storgeService.lockStorge(xbkStorge, taskNode.getId());
|
|
|
// redisTemplate.opsForValue().set(DemoCacheKey.DEMOLINE_CAMP + "_" + DemoLineConstant.NODE_RESOURCE_ZNSCDY_XBK + nextTaskNode.getId(), xbkStorge, 1, TimeUnit.DAYS);
|
|
|
}
|
|
|
- }
|
|
|
+ } */
|
|
|
+
|
|
|
+
|
|
|
// if(count==0){//第一步的时候锁定资源
|
|
|
// //判断机器人是否为空
|
|
|
// String jrqarr[] = {resourceAutoCode.getResourceId().toString()};
|