|
|
@@ -17,10 +17,10 @@ import com.github.zuihou.business.edgeLibrary.entity.Storge;
|
|
|
import com.github.zuihou.business.edgeLibrary.service.StorgeService;
|
|
|
import com.github.zuihou.business.externalApi.service.AgvHikOrderInfoService;
|
|
|
import com.github.zuihou.business.externalApi.service.ExternalApiService;
|
|
|
+import com.github.zuihou.business.operationManagementCenter.dao.PlanMapper;
|
|
|
+import com.github.zuihou.business.operationManagementCenter.dao.PlanProductMapper;
|
|
|
import com.github.zuihou.business.operationManagementCenter.dao.TTaskMapper;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.entity.TTask;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.entity.TWorkpiece;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.entity.TaskNode;
|
|
|
+import com.github.zuihou.business.operationManagementCenter.entity.*;
|
|
|
import com.github.zuihou.business.operationManagementCenter.service.TaskNodeService;
|
|
|
import com.github.zuihou.business.operationManagementCenter.service.WorkpieceService;
|
|
|
import com.github.zuihou.business.productionReadyCenter.dao.BBomMapper;
|
|
|
@@ -45,6 +45,8 @@ import com.github.zuihou.common.constant.ParameterKey;
|
|
|
import com.github.zuihou.common.util.StringUtil;
|
|
|
import com.github.zuihou.common.util.UniqueKeyGenerator;
|
|
|
import com.github.zuihou.database.mybatis.conditions.Wraps;
|
|
|
+import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
|
|
|
+import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
|
|
|
import com.google.common.collect.Maps;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
@@ -122,6 +124,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
private BomProcedureService bomProcedureService;
|
|
|
@Autowired
|
|
|
private RestTemplate restTemplate;
|
|
|
+ @Autowired
|
|
|
+ private PlanMapper planMapper;
|
|
|
|
|
|
private Map<String, Object> map = Maps.newHashMap();
|
|
|
|
|
|
@@ -169,6 +173,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
|
|
|
private boolean assembleFlag = true;
|
|
|
|
|
|
+ private Plan orderPlan;
|
|
|
+
|
|
|
@Override
|
|
|
public void initResource(TaskNode taskNode, TTask task, Map dataMap) {
|
|
|
//productionresourcePosition = getResourcePosition(taskNode);
|
|
|
@@ -211,7 +217,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
BBom bom = bBomMapper.selectById(task.getBomId());
|
|
|
bomZzoneId = bom.getZoneId();
|
|
|
bomzZone = zoneService.getById(bomZzoneId);
|
|
|
-
|
|
|
+ orderPlan = planMapper.selectOne(Wraps.<Plan>lbQ().eq(Plan::getId, task.getPlanId()));
|
|
|
// 判断该节点使用那条线的plc
|
|
|
plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
|
|
|
String paramKey = zZone.getNo() + "_plc";
|
|
|
@@ -360,7 +366,12 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
|
|
|
|
|
|
if(taskNode.getCompleteBatchSort()==1){
|
|
|
- flikustockInfos = this.getLikuStockList(task);
|
|
|
+ // 判断是否是单线单独运行
|
|
|
+ if(1 == orderPlan.getSingleRunFlag()){
|
|
|
+ flikustockInfos = this.getProductionLineXbkStockList(task);
|
|
|
+ }else{
|
|
|
+ flikustockInfos = this.getLikuStockList(task);
|
|
|
+ }
|
|
|
}
|
|
|
//缓存位判断处理
|
|
|
if ("取".equals(functionName)) {
|
|
|
@@ -710,7 +721,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
// 判断是工件坐标系还是质量测量
|
|
|
if ("1".equals(procedure.getThreeDimensionalConf()) || "1".equals(procedure.getThreeDimensionalDeviationConf())) {
|
|
|
// 质量检测
|
|
|
- dataMap.put("method", "SendThreeCoordinates");
|
|
|
+// dataMap.put("method", "SendThreeCoordinates");
|
|
|
+ dataMap.put("method", "SendServoStacker");
|
|
|
locationMap.put("workId", taskNode.getCompleteBatchNo());
|
|
|
locationMap.put("procedureNo", task.getProcedureNo());
|
|
|
if("1".equals(procedure.getThreeDimensionalConf())){
|
|
|
@@ -752,6 +764,40 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
return dataMap;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 线内单独运行直接查找线边库上的子盘夹具毛料齐全的库位信息
|
|
|
+ * @param task
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<StockInfo> getProductionLineXbkStockList(TTask task) {
|
|
|
+ List<StockInfo> returnList = null;
|
|
|
+ List<StockInfo> oneTray = null;
|
|
|
+
|
|
|
+ List<Productionresource> productionresources = productionresourceBizMapper.selectList(Wraps.<Productionresource>lbQ().like(Productionresource::getCode,DictionaryKey.YJ_ZONE_XBK.get(bomzZone.getName())));
|
|
|
+ List<Long> productionresourceIds = productionresources.stream().map(t->t.getId()).collect(Collectors.toList());
|
|
|
+ List<ProductionresourcePosition> startProductionresourcePositions = productionresourcePositionMapper.selectList(Wraps.<ProductionresourcePosition>lbQ().in(ProductionresourcePosition::getResourceId, productionresourceIds).eq(ProductionresourcePosition::getStatus,"0"));
|
|
|
+ List<Long> startProductionresourcePositionIds = startProductionresourcePositions.stream().map(t->t.getStorgeId()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ BBom bBom = bBomMapper.selectOne(Wraps.<BBom>lbQ().eq(BBom::getId,task.getBomId()));
|
|
|
+ List<StockInfo> allStockList = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getGoodsId,bBom.getMeterialId()).in(StockInfo::getStorgeId,startProductionresourcePositionIds).isNull(StockInfo::getCompleteBatchNo).orderByAsc(StockInfo::getStorgeId));
|
|
|
+ if(CollectionUtil.isNotEmpty(allStockList)){
|
|
|
+ Map<Long,List<StockInfo>>map = allStockList.stream().collect(groupingBy(StockInfo::getStorgeId));
|
|
|
+ Long k = null;
|
|
|
+ for(Long key:map.keySet()){
|
|
|
+ k = key;
|
|
|
+ // 只查找物料齐套的(托盘,夹具,原材料)
|
|
|
+ List<StockInfo> stockInfoList = map.get(key);
|
|
|
+ if(stockInfoList!=null && stockInfoList.size() == 3 ){
|
|
|
+ returnList = stockInfoList;
|
|
|
+ break;
|
|
|
+ }else{
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return returnList;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 判断机器人是否可用
|
|
|
@@ -781,105 +827,130 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
String xbkFlag = "";
|
|
|
|
|
|
if("1".equals(findAgvFlag)){ //需要提前锁定下个接驳位
|
|
|
- // begin modify by yejian on 20220513 for agv动态查找满足抽检一个工序需多次调度agv问题
|
|
|
- // 先找到处理节点下一节点agv起点地址
|
|
|
-
|
|
|
- TaskNode lastAgvTaskNode = taskNodeService.getNextNTaskNode(taskNode,1);;
|
|
|
- //获取接驳位。agvEndStationStorge
|
|
|
- Map map = storgeService.getPlateStorgeByNo(zZone,bomzZone);
|
|
|
-
|
|
|
- String startAgvStationCode = map.get("jbwCode") ==null?null:map.get("jbwCode").toString();
|
|
|
- targetStorge = map.get("storge") ==null?null:(Storge)map.get("storge");
|
|
|
- String targetResourceId = map.get("resourceId") ==null?null:(String)map.get("resourceId");
|
|
|
- // 在向下找agv终点位子
|
|
|
- // 下一个节点机器人所属产线
|
|
|
- TaskNode afterLastAgvTaskNode = taskNodeService.getNextNTaskNode(lastAgvTaskNode,1);
|
|
|
- ZZoneProductionresource zoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,afterLastAgvTaskNode.getResourceId()));
|
|
|
- //获取产线ID
|
|
|
- Long agvGoalZoneId = zoneProductionresource.getZoneId();
|
|
|
- ZZone agvGoalZone = zoneService.getById(agvGoalZoneId);
|
|
|
- String[] jbwArr = DictionaryKey.YJ_ZONE_JBW.get(agvGoalZone.getNo()).split(",");
|
|
|
- List<ProductionresourcePosition> jbwBList = productionresourcePositionService.getFreeProductionresourceAgvPositionByNos(jbwArr);
|
|
|
+
|
|
|
+ if("1".equals(orderPlan.getSingleRunFlag())){
|
|
|
+ // 单线运行,直接不找agv,驱动机器人帮运至线边库存放
|
|
|
+// 判断当前节点设备所属产线,如果是保障平台,区分订单是舱体还是框体
|
|
|
+ if("safeguard".equals(zZone.getNo())){
|
|
|
+ //获取机器人操作线边库
|
|
|
+ String xbkKey = zoneName+"-"+bomzZone.getNo();
|
|
|
+ xbkArr = DictionaryKey.YJ_ZONE_XBK.get(xbkKey).split(",");
|
|
|
+ xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
|
|
|
+ }else{
|
|
|
+ //获取机器人操作线边库
|
|
|
+ xbkArr = DictionaryKey.YJ_ZONE_XBK.get(zoneName).split(",");
|
|
|
+ xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
|
|
|
+ }
|
|
|
+ log.info("查找线边库库位{}",xbkList.get(0).getPointId());
|
|
|
+ if(CollectionUtil.isNotEmpty(xbkList)){
|
|
|
+ ProductionresourcePosition position = xbkList.get(0);
|
|
|
+ targetStorge = storgeService.getById(position.getStorgeId());
|
|
|
+ returnMap.put("storeResourceId",position.getResourceId());
|
|
|
+ returnMap.put("store",targetStorge);
|
|
|
+ returnMap.put("targetxbk","0");
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ // begin modify by yejian on 20220513 for agv动态查找满足抽检一个工序需多次调度agv问题
|
|
|
+ // 先找到处理节点下一节点agv起点地址
|
|
|
+
|
|
|
+ TaskNode lastAgvTaskNode = taskNodeService.getNextNTaskNode(taskNode,1);;
|
|
|
+ //获取接驳位。agvEndStationStorge
|
|
|
+ Map map = storgeService.getPlateStorgeByNo(zZone,bomzZone);
|
|
|
+
|
|
|
+ String startAgvStationCode = map.get("jbwCode") ==null?null:map.get("jbwCode").toString();
|
|
|
+ targetStorge = map.get("storge") ==null?null:(Storge)map.get("storge");
|
|
|
+ String targetResourceId = map.get("resourceId") ==null?null:(String)map.get("resourceId");
|
|
|
+ // 在向下找agv终点位子
|
|
|
+ // 下一个节点机器人所属产线
|
|
|
+ TaskNode afterLastAgvTaskNode = taskNodeService.getNextNTaskNode(lastAgvTaskNode,1);
|
|
|
+ ZZoneProductionresource zoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,afterLastAgvTaskNode.getResourceId()));
|
|
|
+ //获取产线ID
|
|
|
+ Long agvGoalZoneId = zoneProductionresource.getZoneId();
|
|
|
+ ZZone agvGoalZone = zoneService.getById(agvGoalZoneId);
|
|
|
+ String[] jbwArr = DictionaryKey.YJ_ZONE_JBW.get(agvGoalZone.getNo()).split(",");
|
|
|
+ List<ProductionresourcePosition> jbwBList = productionresourcePositionService.getFreeProductionresourceAgvPositionByNos(jbwArr);
|
|
|
// log.info("节点{},查询终点接驳位接驳位数量{}",taskNode.getId(),jbwBList);
|
|
|
- if(targetStorge!=null&&CollectionUtil.isNotEmpty(jbwBList)){
|
|
|
- ProductionresourcePosition position = null;
|
|
|
- for(ProductionresourcePosition productionresourcePosition : jbwBList){
|
|
|
- String zoneType = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ZONE_TYPE).toString());
|
|
|
- if(zoneType.equals(ParameterKey.ZONE_SFX)){
|
|
|
- if(productionresourcePosition.getCode().equals(DictionaryKey.SFX_JBW_RELATION.get(startAgvStationCode))){
|
|
|
+ if(targetStorge!=null&&CollectionUtil.isNotEmpty(jbwBList)){
|
|
|
+ ProductionresourcePosition position = null;
|
|
|
+ for(ProductionresourcePosition productionresourcePosition : jbwBList){
|
|
|
+ String zoneType = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ZONE_TYPE).toString());
|
|
|
+ if(zoneType.equals(ParameterKey.ZONE_SFX)){
|
|
|
+ if(productionresourcePosition.getCode().equals(DictionaryKey.SFX_JBW_RELATION.get(startAgvStationCode))){
|
|
|
+ position = productionresourcePosition;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
position = productionresourcePosition;
|
|
|
break;
|
|
|
}
|
|
|
- }else{
|
|
|
- position = productionresourcePosition;
|
|
|
- break;
|
|
|
- }
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
// log.info("节点{},查询到终点接驳位{}",taskNode.getId(),position);
|
|
|
- if(null!=position){
|
|
|
- agvEndStationStorge =storgeService.getById(position.getStorgeId());
|
|
|
- //更新到targetresourceid
|
|
|
+ if(null!=position){
|
|
|
+ agvEndStationStorge =storgeService.getById(position.getStorgeId());
|
|
|
+ //更新到targetresourceid
|
|
|
// TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode,1);
|
|
|
- taskNode.setTargetResourceId(Long.parseLong(targetResourceId));
|
|
|
- lastAgvTaskNode.setTargetResourceId(position.getResourceId());
|
|
|
- lastAgvTaskNode.setResourceId(taskNode.getTargetResourceId());
|
|
|
- taskNodeService.updateById(taskNode);
|
|
|
- taskNodeService.updateById(lastAgvTaskNode);
|
|
|
+ taskNode.setTargetResourceId(Long.parseLong(targetResourceId));
|
|
|
+ lastAgvTaskNode.setTargetResourceId(position.getResourceId());
|
|
|
+ lastAgvTaskNode.setResourceId(taskNode.getTargetResourceId());
|
|
|
+ taskNodeService.updateById(taskNode);
|
|
|
+ taskNodeService.updateById(lastAgvTaskNode);
|
|
|
// log.info("节点{},更新相应节点接驳位信息完成",taskNode.getId());
|
|
|
- }
|
|
|
- returnMap.put("storeResourceId",targetResourceId);
|
|
|
- returnMap.put("store",targetStorge);
|
|
|
- returnMap.put("targetxbk","0");
|
|
|
-
|
|
|
- }else{
|
|
|
- //需要放到线边库
|
|
|
- // begin add by yejian on 20220802 for 调度空托盘流转
|
|
|
- Long tempAgvTaskStartResourceId = map.get("tempAgvTaskStartResourceId")== null?null:Long.valueOf(map.get("tempAgvTaskStartResourceId").toString());
|
|
|
- Long tempAgvTaskEndResourceId = map.get("tempAgvTaskEndResourceId")== null?null:Long.valueOf(map.get("tempAgvTaskEndResourceId").toString());
|
|
|
- String tempAgvTaskStartPoint = map.get("tempAgvTaskStartPoint") == null?null:(String)map.get("tempAgvTaskStartPoint");
|
|
|
- String tempAgvTaskEndPoint = map.get("tempAgvTaskEndPoint") == null?null:(String)map.get("tempAgvTaskEndPoint");
|
|
|
- Storge tempAgvTaskStartPointStorge = map.get("tempAgvTaskStartPointStorge") == null?null:(Storge)map.get("tempAgvTaskStartPointStorge");
|
|
|
- Storge tempAgvTaskEndPointStorge = map.get("tempAgvTaskEndPointStorge") == null?null:(Storge)map.get("tempAgvTaskEndPointStorge");
|
|
|
- log.info("节点{}接驳位不可用,动态调度接驳位起点{}、终点{}",taskNode.getId(),tempAgvTaskStartPoint,tempAgvTaskEndPoint);
|
|
|
-
|
|
|
- if(StringUtils.isNotBlank(tempAgvTaskStartPoint) && StringUtils.isNotBlank(tempAgvTaskEndPoint)){
|
|
|
- // 锁定起点终点接驳位
|
|
|
- Map agvData = new HashMap();
|
|
|
- agvData.put("start", tempAgvTaskStartPoint);
|
|
|
- agvData.put("goal", tempAgvTaskEndPoint);
|
|
|
- agvData.put("taskId", taskNode.getTaskId());
|
|
|
- agvData.put("taskNodeId", taskNode.getId());
|
|
|
- // 0:节点自动调度 1:节点资源不可用人工调度
|
|
|
- agvData.put("agvTaskType", "1");
|
|
|
- JSONObject agvParam = new JSONObject();
|
|
|
- agvParam.putAll(agvData);
|
|
|
- String zoneType = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ZONE_TYPE).toString());
|
|
|
+ }
|
|
|
+ returnMap.put("storeResourceId",targetResourceId);
|
|
|
+ returnMap.put("store",targetStorge);
|
|
|
+ returnMap.put("targetxbk","0");
|
|
|
|
|
|
- // 锁定预占资源
|
|
|
- storgeService.lockStorge(tempAgvTaskStartPointStorge, null);
|
|
|
- storgeService.lockStorge(tempAgvTaskEndPointStorge, null);
|
|
|
-
|
|
|
- // 更新接驳位信息
|
|
|
- taskNode.setTargetResourceId(tempAgvTaskEndResourceId);
|
|
|
- lastAgvTaskNode.setResourceId(tempAgvTaskEndResourceId);
|
|
|
- lastAgvTaskNode.setTargetResourceId(tempAgvTaskStartResourceId);
|
|
|
- taskNodeService.updateById(taskNode);
|
|
|
- taskNodeService.updateById(lastAgvTaskNode);
|
|
|
- log.info("节点{}更新调度agv任务起点{},终点{}",taskNode.getId(),tempAgvTaskEndResourceId,tempAgvTaskStartResourceId);
|
|
|
-
|
|
|
- if(zoneType.equals(ParameterKey.ZONE_SFX)){
|
|
|
- agvData.put("transferType","agv");
|
|
|
- R addAgvTask = externalApiService.processTransferJob(agvData);
|
|
|
- }else{
|
|
|
- R addHikTask = agvHikOrderInfoService.addHikTask(agvData);
|
|
|
+ }else{
|
|
|
+ //需要放到线边库
|
|
|
+ // begin add by yejian on 20220802 for 调度空托盘流转
|
|
|
+ Long tempAgvTaskStartResourceId = map.get("tempAgvTaskStartResourceId")== null?null:Long.valueOf(map.get("tempAgvTaskStartResourceId").toString());
|
|
|
+ Long tempAgvTaskEndResourceId = map.get("tempAgvTaskEndResourceId")== null?null:Long.valueOf(map.get("tempAgvTaskEndResourceId").toString());
|
|
|
+ String tempAgvTaskStartPoint = map.get("tempAgvTaskStartPoint") == null?null:(String)map.get("tempAgvTaskStartPoint");
|
|
|
+ String tempAgvTaskEndPoint = map.get("tempAgvTaskEndPoint") == null?null:(String)map.get("tempAgvTaskEndPoint");
|
|
|
+ Storge tempAgvTaskStartPointStorge = map.get("tempAgvTaskStartPointStorge") == null?null:(Storge)map.get("tempAgvTaskStartPointStorge");
|
|
|
+ Storge tempAgvTaskEndPointStorge = map.get("tempAgvTaskEndPointStorge") == null?null:(Storge)map.get("tempAgvTaskEndPointStorge");
|
|
|
+ log.info("节点{}接驳位不可用,动态调度接驳位起点{}、终点{}",taskNode.getId(),tempAgvTaskStartPoint,tempAgvTaskEndPoint);
|
|
|
+
|
|
|
+ if(StringUtils.isNotBlank(tempAgvTaskStartPoint) && StringUtils.isNotBlank(tempAgvTaskEndPoint)){
|
|
|
+ // 锁定起点终点接驳位
|
|
|
+ Map agvData = new HashMap();
|
|
|
+ agvData.put("start", tempAgvTaskStartPoint);
|
|
|
+ agvData.put("goal", tempAgvTaskEndPoint);
|
|
|
+ agvData.put("taskId", taskNode.getTaskId());
|
|
|
+ agvData.put("taskNodeId", taskNode.getId());
|
|
|
+ // 0:节点自动调度 1:节点资源不可用人工调度
|
|
|
+ agvData.put("agvTaskType", "1");
|
|
|
+ JSONObject agvParam = new JSONObject();
|
|
|
+ agvParam.putAll(agvData);
|
|
|
+ String zoneType = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ZONE_TYPE).toString());
|
|
|
+
|
|
|
+ // 锁定预占资源
|
|
|
+ storgeService.lockStorge(tempAgvTaskStartPointStorge, null);
|
|
|
+ storgeService.lockStorge(tempAgvTaskEndPointStorge, null);
|
|
|
+
|
|
|
+ // 更新接驳位信息
|
|
|
+ taskNode.setTargetResourceId(tempAgvTaskEndResourceId);
|
|
|
+ lastAgvTaskNode.setResourceId(tempAgvTaskEndResourceId);
|
|
|
+ lastAgvTaskNode.setTargetResourceId(tempAgvTaskStartResourceId);
|
|
|
+ taskNodeService.updateById(taskNode);
|
|
|
+ taskNodeService.updateById(lastAgvTaskNode);
|
|
|
+ log.info("节点{}更新调度agv任务起点{},终点{}",taskNode.getId(),tempAgvTaskEndResourceId,tempAgvTaskStartResourceId);
|
|
|
+
|
|
|
+ if(zoneType.equals(ParameterKey.ZONE_SFX)){
|
|
|
+ agvData.put("transferType","agv");
|
|
|
+ R addAgvTask = externalApiService.processTransferJob(agvData);
|
|
|
+ }else{
|
|
|
+ R addHikTask = agvHikOrderInfoService.addHikTask(agvData);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- // end add by yejian on 20220802 for 调度空托盘流转
|
|
|
+ // end add by yejian on 20220802 for 调度空托盘流转
|
|
|
|
|
|
- xbkFlag = "1";
|
|
|
+ xbkFlag = "1";
|
|
|
+ }
|
|
|
+ // end modify by yejian on 20220513 for agv动态查找满足抽检一个工序需多次调度agv问题
|
|
|
}
|
|
|
- // end modify by yejian on 20220513 for agv动态查找满足抽检一个工序需多次调度agv问题
|
|
|
+
|
|
|
}else {
|
|
|
// begin modify by yejian on 20220515 for 下料库位问题修改
|
|
|
TaskNode beforTaskNode = taskNodeService.getNextNTaskNode(taskNode,-1);
|