|
@@ -94,171 +94,30 @@ public class AGVNodeServiceImpl implements NodeOperationService {
|
|
|
TaskNode beforTaskNode = taskNodeService.getNextNTaskNode(taskNode,-1);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
JSONObject bizJsonObject = new JSONObject();
|
|
|
- Storge fstorge = storgeService.getOne(Wraps.<Storge>lbQ().eq(Storge::getCampId,beforTaskNode.getId()));
|
|
|
- Storge tstorge = storgeService.getOne(Wraps.<Storge>lbQ().eq(Storge::getCampId,taskNode.getId()));
|
|
|
- jsonObject.put("start", fstorge.getPointId());
|
|
|
- jsonObject.put("goal", tstorge.getPointId());
|
|
|
- jsonObject.put("transferType", "agv");
|
|
|
- //此数据用来业务回传
|
|
|
- bizJsonObject.put("srcPosition", fstorge.getId().toString());
|
|
|
- bizJsonObject.put("targetPostion", tstorge.getId().toString());
|
|
|
-
|
|
|
- map.put("jsonObject", jsonObject);
|
|
|
- map.put("bizJsonObject", bizJsonObject);
|
|
|
|
|
|
+ // 找到相应设备点位信息
|
|
|
+ ProductionresourcePosition startPosition = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId,beforTaskNode.getTargetResourceId()));
|
|
|
+ ProductionresourcePosition endPosition = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId,taskNode.getTargetResourceId()));
|
|
|
|
|
|
- //AGV设备操作关联接驳位(起点和终点都是接驳位库位),接驳位占用暂存在线边库
|
|
|
|
|
|
-// String moduleName = dataMap.get("moduleName").toString();
|
|
|
-// //List<ModuleInstruction> instructions = dataMap.get("instructions") == null ? Lists.newArrayList() : (List<ModuleInstruction>)dataMap.get("instructions");
|
|
|
-// ResourceAutoCode resourceAutoCode = taskNode.getAutoNode();
|
|
|
-// String functionName = resourceAutoCode.getCommand();
|
|
|
-//
|
|
|
-//
|
|
|
-// //目标位置
|
|
|
-// Long targetId = resourceAutoCode.getTargetId();
|
|
|
-// Storge targetStore = storgeService.getById(targetId);
|
|
|
-//
|
|
|
-// //开始位置
|
|
|
-// Storge startStore = workpieceService.getWorkPieceStock(taskNode.getId(),true);
|
|
|
-//
|
|
|
-// jbwarr = new String[] {targetStore.getNo()};
|
|
|
-// List<ProductionresourcePosition> jbwList = productionresourcePositionService.getFreeProductionresourcePositionByNos(jbwarr);
|
|
|
+ Storge fstorge = storgeService.getOne(Wraps.<Storge>lbQ().eq(Storge::getId,startPosition.getStorgeId()));
|
|
|
+ Storge tstorge = storgeService.getOne(Wraps.<Storge>lbQ().eq(Storge::getId,endPosition.getStorgeId()));
|
|
|
+ map.put("start", fstorge.getPointId().toString());
|
|
|
+ map.put("goal", tstorge.getPointId().toString());
|
|
|
+ map.put("transferType", "agv");
|
|
|
+ //此数据用来业务回传
|
|
|
+ map.put("fromStorge", fstorge);
|
|
|
+ map.put("toStorge", tstorge);
|
|
|
|
|
|
-// //TODO还需要验证,开始接驳位是否被其他锁定。并且尚未放置上去。
|
|
|
-// if (CollectionUtil.isNotEmpty(jbwList)) {
|
|
|
-// //3、把起始终点库位存放到map,用于接口
|
|
|
-// map.put("fromStorge", startStore);
|
|
|
-// map.put("toStorge", targetStore);
|
|
|
-// //这个节点没有需要验证的内容,都在前一个节点验证并且锁定了
|
|
|
-// map.put("result", true);
|
|
|
-//
|
|
|
-// storgeService.lockStorge(targetStore, taskNode.getId());
|
|
|
-// //出入库类型-原料出入库
|
|
|
-// map.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_CRK);
|
|
|
-// }
|
|
|
+ map.put("result",true);
|
|
|
+ map.put(DemoLineConstant.DEMOLINE_STOCK_TYPE,DemoLineConstant.DEMOLINE_STOCK_TYPE_ALL_CRK_WITH_PLATE);
|
|
|
|
|
|
-// if (BizConstant.MQ_TASK_NODE_TYPE_COMMON.equals(bizType)) {
|
|
|
-// if (DemoLineConstant.DEMOLINE_OP01_02.equals(taskNode.getNodeNo())) {
|
|
|
-// //agv从wms接驳口A取料运到质量中心的接驳位B或C
|
|
|
-// //节点2的任务都在节点1被锁定过了,只要从缓存拿出来对应的值即可
|
|
|
-// Storge jbwAstorge = (Storge) msgUtil.redis_get(DemoCacheKey.DEMOLINE_CIRCULATION_STORAGE + "_" + task.getCompleteBatchNo());
|
|
|
-// //2、取出接驳位
|
|
|
-// Storge jbwstorge = (Storge) msgUtil.redis_get(DemoCacheKey.DEMOLINE_CAMP + "_" + DemoLineConstant.JBW + taskNode.getId().toString());
|
|
|
-// //3、把起始终点库位存放到map,用于接口
|
|
|
-// map.put("fromStorge", jbwAstorge);
|
|
|
-// map.put("toStorge", jbwstorge);
|
|
|
-// //这个节点没有需要验证的内容,都在前一个节点验证并且锁定了
|
|
|
-// map.put("result", true);
|
|
|
-// //出入库类型-原料出入库
|
|
|
-// map.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_CRK);
|
|
|
-// //4、记录机器人的库位,下一个步骤使用
|
|
|
-// msgUtil.redis_set(DemoCacheKey.DEMOLINE_CIRCULATION_STORAGE + "_" + task.getCompleteBatchNo(), jbwstorge, 1, TimeUnit.DAYS);
|
|
|
-// }
|
|
|
-// else if (DemoLineConstant.DEMOLINE_OP01_08.equals(taskNode.getNodeNo())){
|
|
|
-// //agv运输到产线接驳位
|
|
|
-// //根据工件获取所在的生产单元(产线)
|
|
|
-// zoneNo = msgUtil.redis_get(DemoCacheKey.DEMOLINE_WORKOP_ZONE + task.getCompleteBatchNo()) == null ? ""
|
|
|
-// : msgUtil.redis_get(DemoCacheKey.DEMOLINE_WORKOP_ZONE + task.getCompleteBatchNo()).toString();
|
|
|
-// if (DemoLineConstant.DEMOLINE_WORK_SPACE1.equals(zoneNo)) {//智能生产单元
|
|
|
-// jbwarr = new String[] {DemoLineConstant.JBW_F, DemoLineConstant.JBW_G};
|
|
|
-// } else if (DemoLineConstant.DEMOLINE_WORK_SPACE2.equals(zoneNo)) {//柔性智能加工生产区
|
|
|
-// jbwarr = new String[] {DemoLineConstant.JBW_H, DemoLineConstant.JBW_I};
|
|
|
-// }
|
|
|
-// //当前毛坯所预占的接驳位
|
|
|
-// Storge jbwFromStorge = msgUtil.redis_get(DemoCacheKey.DEMOLINE_CIRCULATION_JBW_STORAGE + "_" + task.getCompleteBatchNo()) == null ? null : (Storge) msgUtil.redis_get(DemoCacheKey.DEMOLINE_CIRCULATION_JBW_STORAGE + "_" + task.getCompleteBatchNo());
|
|
|
-// //查询是否被锁定
|
|
|
-// Storge jbwdbStorge = storgeService.getById(jbwFromStorge.getId());
|
|
|
-//
|
|
|
-// List<ProductionresourcePosition> jbwList = productionresourcePositionService.getFreeProductionresourcePositionByNos(jbwarr);
|
|
|
-// //接驳位有空闲
|
|
|
-// if (CollectionUtil.isNotEmpty(jbwList) && "1".equals(jbwdbStorge.getLockStatus())) {
|
|
|
-// map.put("fromStorge", jbwFromStorge);
|
|
|
-// //锁定接驳位库位
|
|
|
-// Storge jbwstorge = storgeService.getById(jbwList.get(0).getStorgeId());
|
|
|
-// //锁定接驳位库位
|
|
|
-// jbwstorge.setCompleteBatchNo(task.getCompleteBatchNo());
|
|
|
-// storgeService.lockStorge(jbwstorge, taskNode.getId());
|
|
|
-// TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
|
|
|
-// msgUtil.redis_set(DemoCacheKey.DEMOLINE_CAMP + "_" + DemoLineConstant.JBW + nextTaskNode.getId(), jbwstorge, 1, TimeUnit.DAYS);
|
|
|
-// //目的地为接驳位
|
|
|
-// map.put("toStorge", jbwstorge);
|
|
|
-// //出入库类型-托板出入库
|
|
|
-// map.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_PLATE_CRK);
|
|
|
-// //记录产品流转到的库位
|
|
|
-// msgUtil.redis_set(DemoCacheKey.DEMOLINE_CIRCULATION_JBW_STORAGE + "_" + task.getCompleteBatchNo(), jbwstorge, 1, TimeUnit.DAYS);
|
|
|
-// }
|
|
|
-// //判断接驳位是否为空
|
|
|
-// map.put("result", (CollectionUtil.isNotEmpty(jbwList)));
|
|
|
-// }
|
|
|
-//
|
|
|
-// else if (DemoLineConstant.DEMOLINE_OP05_01.equals(taskNode.getNodeNo())) {
|
|
|
-// //接驳位有一个为空
|
|
|
-// jbwarr = new String[] {DemoLineConstant.JBW_D, DemoLineConstant.JBW_E};
|
|
|
-// List<ProductionresourcePosition> jbwList = productionresourcePositionService.getFreeProductionresourcePositionByNos(jbwarr);
|
|
|
-// if (jbwList != null && jbwList.size() > 0) {
|
|
|
-// //取出前一步骤存放的上下料站库位
|
|
|
-// Storge jbwFromStorge = msgUtil.redis_get(DemoCacheKey.DEMOLINE_CIRCULATION_JBW_STORAGE + "_" + task.getCompleteBatchNo()) == null ? null : (Storge) msgUtil.redis_get(DemoCacheKey.DEMOLINE_CIRCULATION_JBW_STORAGE + "_" + task.getCompleteBatchNo());
|
|
|
-// map.put("fromStorge", jbwFromStorge);
|
|
|
-// //锁定其中一个
|
|
|
-// ProductionresourcePosition jbwp = jbwList.get(0);
|
|
|
-// //预占库位为下个节点准备
|
|
|
-// Storge jbwstorge = storgeService.getById(jbwp.getStorgeId());
|
|
|
-// //锁定接驳位库位
|
|
|
-// jbwstorge.setCompleteBatchNo(task.getCompleteBatchNo());
|
|
|
-// storgeService.lockStorge(jbwstorge, taskNode.getId());
|
|
|
-// TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
|
|
|
-// msgUtil.redis_set(DemoCacheKey.DEMOLINE_CAMP + "_" + DemoLineConstant.JBW + nextTaskNode.getId(), jbwstorge, 1, TimeUnit.DAYS);
|
|
|
-// //目的地为接驳位
|
|
|
-// map.put("toStorge", jbwstorge);
|
|
|
-// //出入库类型-托板出入库
|
|
|
-// map.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_PLATE_CRK);
|
|
|
-// //记录产品流转到的库位
|
|
|
-//// msgUtil.redis_set(DemoCacheKey.DEMOLINE_CIRCULATION_STORAGE + "_" +task.getCompleteBatchNo(), jbwstorge, 1, TimeUnit.DAYS);
|
|
|
-// msgUtil.redis_set(DemoCacheKey.DEMOLINE_CIRCULATION_JBW_STORAGE + "_" + task.getCompleteBatchNo(), jbwstorge, 1, TimeUnit.DAYS);
|
|
|
-// }
|
|
|
-// map.put("result", (CollectionUtil.isNotEmpty(jbwList)));
|
|
|
-// }
|
|
|
-//
|
|
|
-// else if (DemoLineConstant.DEMOLINE_OP06_04.equals(taskNode.getNodeNo())) {
|
|
|
-// //节点4的任务都在节点3被锁定过了,只要从缓存拿出来对应的值即可
|
|
|
-// //1、取出机器人
|
|
|
-// jbwarr = new String[] {DemoLineConstant.JBW_A};
|
|
|
-// List<ProductionresourcePosition> jbwAList = productionresourcePositionService.getFreeProductionresourcePositionByNos(jbwarr);
|
|
|
-// if (CollectionUtil.isNotEmpty(jbwAList)) {
|
|
|
-// Storge jbwAstorge = storgeService.getById(jbwAList.get(0).getStorgeId());
|
|
|
-// map.put("toStorge", jbwAstorge);
|
|
|
-// }
|
|
|
-// //临时这样写
|
|
|
-// String jbwarrB[] = {DemoLineConstant.JBW_B};
|
|
|
-// queryMap.put("codes", StringUtil.changeIdsArrToSubQueryStr(jbwarrB));
|
|
|
-// List<ProductionresourcePosition> jbwBList = productionresourcePositionMapper.getPPList(queryMap);
|
|
|
-// if (CollectionUtil.isNotEmpty(jbwBList)) {
|
|
|
-// Storge jbwBstorge = storgeService.getById(jbwBList.get(0).getStorgeId());
|
|
|
-// map.put("fromStorge", jbwBstorge);
|
|
|
-// }
|
|
|
-// //出入库类型-原料出入库
|
|
|
-// map.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_CRK);
|
|
|
-// map.put("result", true);
|
|
|
-// }
|
|
|
-// }
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Map operation(JSONObject jsonObject, JSONObject bizJsonObject,Map<String, Object> conMap) {
|
|
|
-
|
|
|
- Storge fstorge = (Storge) conMap.get("fromStorge");
|
|
|
- Storge tstorge = (Storge) conMap.get("toStorge");
|
|
|
- jsonObject.put("start", fstorge.getPointId());
|
|
|
- jsonObject.put("goal", tstorge.getPointId());
|
|
|
- jsonObject.put("transferType", "agv");
|
|
|
- //此数据用来业务回传
|
|
|
- bizJsonObject.put("srcPosition", fstorge.getId().toString());
|
|
|
- bizJsonObject.put("targetPostion", tstorge.getId().toString());
|
|
|
-
|
|
|
- map.put("jsonObject", jsonObject);
|
|
|
- map.put("bizJsonObject", bizJsonObject);
|
|
|
+ // TODO 后续改成实际的海康定义的agv路网点位
|
|
|
return map;
|
|
|
}
|
|
|
|