|
@@ -235,7 +235,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
// 装配线边库数量,启用并且无料的库位
|
|
|
List<BBom> zoneBoms = bBomMapper.selectList(Wraps.<BBom>lbQ().in(BBom::getZoneId, bomZzoneId));
|
|
|
List<Long> zoneBomIds = zoneBoms.stream().map(p -> p.getId()).collect(Collectors.toList());
|
|
|
- if (taskNode.getCompleteBatchSort() == 1){
|
|
|
+ if (taskNode.getCompleteBatchSort() == 1 && 0==orderPlan.getSingleRunFlag()){
|
|
|
List<ProductionresourcePosition> assembleXbkUseableList = productionresourcePositionService.getFreeProductionresourcePositionByNos(assembleZoneXbkNo.split(","));
|
|
|
|
|
|
List<ZZoneProductionresource> assembleZoneProductionresources = zZoneProductionresourceMapper.selectList(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getZoneId, zoneId));
|
|
@@ -374,11 +374,12 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
|
|
|
List<StockInfo> flikustockInfos = null;
|
|
|
|
|
|
+ TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
|
|
|
|
|
|
- if(taskNode.getCompleteBatchSort()==1){
|
|
|
+ if(taskNode.getCompleteBatchSort()==1 && count == 0){
|
|
|
// 判断是否是单线单独运行
|
|
|
if(1 == orderPlan.getSingleRunFlag()){
|
|
|
- flikustockInfos = this.getProductionLineXbkStockList(task);
|
|
|
+ flikustockInfos = this.getProductionLineXbkStockList(nextTaskNode,task);
|
|
|
}else{
|
|
|
flikustockInfos = this.getLikuStockList(task);
|
|
|
}
|
|
@@ -394,7 +395,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
//判断机器人是否为空
|
|
|
Map<String, List<ProductionresourcePosition>> jqrMap = robotList.stream().collect(groupingBy(ProductionresourcePosition::getPointId));
|
|
|
|
|
|
- TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
|
|
|
+
|
|
|
|
|
|
//获取当前位置
|
|
|
if(CollectionUtil.isNotEmpty(flikustockInfos)){//
|
|
@@ -443,7 +444,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
|
|
|
log.info("节点{}检查机器人缓存位库位数{}",taskNode.getId(),robotHcwList.size());
|
|
|
nextTaskNode = taskNodeService.getNextNTaskNode(taskNode,1);
|
|
|
- if (!targetStorgeResourceId.equals(nextTaskNode.getTargetResourceId()) && robotHcwList.size() > 1){
|
|
|
+ if (null != nextTaskNode.getTargetResourceId() && !targetStorgeResourceId.equals(nextTaskNode.getTargetResourceId()) && robotHcwList.size() > 1){
|
|
|
targetStorge = hcwStorge;
|
|
|
msgUtil.redis_set(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_HCW_XBK_FLAG + nextTaskNode.getId(), targetxbk, 1, TimeUnit.DAYS);
|
|
|
}else{
|
|
@@ -518,8 +519,6 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
|
|
|
}
|
|
|
}else if (BizConstant.ROBOT_TYPE_NOCACHE.equals(zoneService.getRobotTypebyZone(zoneName))) {
|
|
|
- TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
|
|
|
-
|
|
|
BomProcedure procedure = bomProcedureService.getById(task.getProcedureId());
|
|
|
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_YJ)
|
|
@@ -655,13 +654,15 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
boolean hasJqrhcwPartFlag = false;
|
|
|
String jrqHcwPartPoint = msgUtil.redis_get(deviceArr[0] + "postion") == null ? "": String.valueOf(msgUtil.redis_get(deviceArr[0] + "postion"));
|
|
|
log.info("节点{}当前机器人所在位子{}",taskNode.getId(),jrqHcwPartPoint);
|
|
|
+
|
|
|
for(Storge jqrHcwStorge : jrqHcwStorges){
|
|
|
long jqrHcwStorgeTaskNodeId = jqrHcwStorge.getCampId();
|
|
|
TaskNode jqrHcwStorgeTaskNode = taskNodeService.getById(jqrHcwStorgeTaskNodeId);
|
|
|
- ProductionresourcePosition jqrHcwStorgeTaskNodeResource = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId,jqrHcwStorgeTaskNode.getTargetResourceId()));
|
|
|
- log.info("jqrHcwStorgeTaskNode.getCompleteBatchNo()={}",jqrHcwStorgeTaskNode.getCompleteBatchNo());
|
|
|
- log.info("taskNode.getCompleteBatchNo()={}",taskNode.getCompleteBatchNo());
|
|
|
if(!jqrHcwStorgeTaskNode.getCompleteBatchNo().equals(taskNode.getCompleteBatchNo())){
|
|
|
+ ProductionresourcePosition jqrHcwStorgeTaskNodeResource = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId,jqrHcwStorgeTaskNode.getTargetResourceId()));
|
|
|
+ log.info("jqrHcwStorgeTaskNode.getCompleteBatchNo()={}",jqrHcwStorgeTaskNode.getCompleteBatchNo());
|
|
|
+ log.info("taskNode.getCompleteBatchNo()={}",taskNode.getCompleteBatchNo());
|
|
|
+
|
|
|
// 查询缓存位工件目标地址是否是机器人当前位子
|
|
|
log.info("jqrHcwStorgeTaskNodeResource.getPointId()={}",jqrHcwStorgeTaskNodeResource.getPointId());
|
|
|
log.info("jrqHcwPartPoint={}",jrqHcwPartPoint);
|
|
@@ -785,9 +786,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
* @param task
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<StockInfo> getProductionLineXbkStockList(TTask task) {
|
|
|
+ private List<StockInfo> getProductionLineXbkStockList(TaskNode nextTaskNode,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());
|
|
@@ -803,14 +803,32 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
k = key;
|
|
|
// 只查找物料齐套的(托盘,夹具,原材料)
|
|
|
List<StockInfo> stockInfoList = map.get(key);
|
|
|
- if(stockInfoList!=null && stockInfoList.size() == 3 ){
|
|
|
+ if(stockInfoList!=null && stockInfoList.size() == 1 ){
|
|
|
returnList = stockInfoList;
|
|
|
+ // 更新工件物料所在位子workpiece表
|
|
|
+ TWorkpiece workpiece = workpieceService.getOne(Wraps.<TWorkpiece>lbQ().eq(TWorkpiece::getCompleteBatchNo,task.getCompleteBatchNo()));
|
|
|
+ workpiece.setStorgeId(stockInfoList.get(0).getStorgeId());
|
|
|
+ workpieceService.updateById(workpiece);
|
|
|
+
|
|
|
+ Storge storge = storgeMapper.selectOne(Wraps.<Storge>lbQ().eq(Storge::getId,returnList.get(0).getStorgeId()));
|
|
|
+ storge.setCompleteBatchNo(task.getCompleteBatchNo());
|
|
|
+ storge.setCampId(nextTaskNode.getId());
|
|
|
+ storgeMapper.updateAllById(storge);
|
|
|
+
|
|
|
+ List<StockInfo> stockInfos= stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId,stockInfoList.get(0).getStorgeId()));
|
|
|
+ for(StockInfo stockInfo : stockInfos){
|
|
|
+ stockInfo.setCompleteBatchNo(task.getCompleteBatchNo());
|
|
|
+ stockInfoMapper.updateAllById(stockInfo);
|
|
|
+ }
|
|
|
+
|
|
|
break;
|
|
|
}else{
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
return returnList;
|
|
|
}
|
|
|
|
|
@@ -887,7 +905,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
|
|
|
|
|
|
if("1".equals(findAgvFlag)){ //需要提前锁定下个接驳位
|
|
|
|
|
|
- if("1".equals(orderPlan.getSingleRunFlag())){
|
|
|
+ if(1==orderPlan.getSingleRunFlag()){
|
|
|
// 单线运行,直接不找agv,驱动机器人帮运至线边库存放
|
|
|
// 判断当前节点设备所属产线,如果是保障平台,区分订单是舱体还是框体
|
|
|
if("safeguard".equals(zZone.getNo())){
|