|
@@ -1034,20 +1034,43 @@ public class RobotNodeServiceImpl2 implements NodeOperationService {
|
|
|
* @return
|
|
|
*/
|
|
|
private List<StockInfo> getProductionLineXbkStockList(TaskNode nextTaskNode,TTask task) {
|
|
|
- List<StockInfo> returnList = null;
|
|
|
+ List<StockInfo> returnList = new ArrayList<>();
|
|
|
|
|
|
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());
|
|
|
|
|
|
-
|
|
|
+ // 工序托盘夹具,根据绑定得托盘编码查询出所需要得托盘类型,根据托盘类型找出库里空的托盘夹具
|
|
|
List<BomProcedureTray>trayList = procedureTrayService.list(Wraps.<BomProcedureTray>lbQ().eq(BomProcedureTray::getProcedureId, task.getProcedureId()).orderByAsc(BomProcedureTray::getBizType));
|
|
|
List<Long>trayIdList = trayList.stream().map(t->t.getTrayId()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 查询出同类型,并且同一条产线的托盘信息
|
|
|
+ List<Tray> newTrayList = trayService.selectUsersByIds(trayIdList);
|
|
|
+
|
|
|
+ // 查询出同类型,并且同一条产线的工装信息
|
|
|
+ List<String> trayNoList = newTrayList.stream().map(t->t.getNo()).collect(Collectors.toList());
|
|
|
+ QueryWrapper queryWrapper = new QueryWrapper();
|
|
|
+ queryWrapper.in("no" , trayNoList);
|
|
|
+ List<MToolClamp> mToolClamplist = toolClampService.list(queryWrapper);
|
|
|
+
|
|
|
+ // 合并托盘,工装id集合,查询库存满足的信息
|
|
|
+ List<Long> trayAndMToolClamplist = newTrayList.stream().map(t->t.getId()).collect(Collectors.toList());
|
|
|
+ trayAndMToolClamplist.addAll(mToolClamplist.stream().map(t->t.getId()).collect(Collectors.toList()));
|
|
|
+
|
|
|
// 判断夹具是否有可用的,查询线边库位信息中是否还有夹具
|
|
|
- List<StockInfo> allStockInfos = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().in(StockInfo::getGoodsId,trayIdList).in(StockInfo::getStorgeId,startProductionresourcePositionIds).eq(StockInfo::getLockStatus, "1").orderByAsc(StockInfo::getGoodsType));
|
|
|
+ List<StockInfo> allStockInfos = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().in(StockInfo::getGoodsId,trayAndMToolClamplist).in(StockInfo::getStorgeId,startProductionresourcePositionIds).eq(StockInfo::getLockStatus, "1").orderByAsc(StockInfo::getGoodsType));
|
|
|
+
|
|
|
+ // 根据集合数据,比对根据零件配置的工装夹具数量是不相等
|
|
|
+ Map<Long, List<StockInfo>> collect = allStockInfos.stream().collect(groupingBy(StockInfo::getStorgeId));
|
|
|
+ collect.forEach((aLong, stockInfos) -> {
|
|
|
+ if(stockInfos.size() == trayList.size()){
|
|
|
+ returnList.addAll(stockInfos);
|
|
|
+ }
|
|
|
|
|
|
- return allStockInfos;
|
|
|
+ });
|
|
|
+
|
|
|
+ return returnList;
|
|
|
}
|
|
|
|
|
|
|