private OperationProductComponentWithQuantityContainer getAllWithSameEntityType( final OperationProductComponentEntityType operationProductComponentEntityType) { OperationProductComponentWithQuantityContainer allWithSameType = new OperationProductComponentWithQuantityContainer(); for (Entry<OperationProductComponentHolder, BigDecimal> operationProductComponentWithQuantity : operationProductComponentWithQuantities .entrySet()) { OperationProductComponentHolder operationProductComponentHolder = operationProductComponentWithQuantity.getKey(); if (operationProductComponentHolder.isEntityTypeSame(operationProductComponentEntityType)) { BigDecimal quantity = operationProductComponentWithQuantity.getValue(); allWithSameType.put(operationProductComponentHolder, quantity); } } return allWithSameType; }
@Override public OperationProductComponentWithQuantityContainer groupOperationProductComponentWithQuantities( final Map<Long, OperationProductComponentWithQuantityContainer> operationProductComponentWithQuantityContainerForOrders) { OperationProductComponentWithQuantityContainer operationProductComponentWithQuantityContainer = new OperationProductComponentWithQuantityContainer(); for (Entry<Long, OperationProductComponentWithQuantityContainer> operationProductComponentWithQuantityContainerForOrder : operationProductComponentWithQuantityContainerForOrders .entrySet()) { for (Entry<OperationProductComponentHolder, BigDecimal> productComponentWithQuantity : operationProductComponentWithQuantityContainerForOrder .getValue().asMap().entrySet()) { OperationProductComponentHolder operationProductComponentHolder = productComponentWithQuantity.getKey(); BigDecimal quantity = productComponentWithQuantity.getValue(); if (operationProductComponentWithQuantityContainer.containsKey(operationProductComponentHolder)) { BigDecimal addedQuantity = operationProductComponentWithQuantityContainer .get(operationProductComponentHolder); quantity = quantity.add(addedQuantity, numberService.getMathContext()); operationProductComponentWithQuantityContainer.put(operationProductComponentHolder, quantity); } else { operationProductComponentWithQuantityContainer.put(operationProductComponentHolder, quantity); } } } return operationProductComponentWithQuantityContainer; }
@Override public OperationProductComponentWithQuantityContainer getProductComponentWithQuantitiesForTechnology(final Entity technology, final BigDecimal givenQuantity, final Map<Long, BigDecimal> operationRuns, final Set<OperationProductComponentHolder> nonComponents) { OperationProductComponentWithQuantityContainer operationProductComponentWithQuantityContainer = new OperationProductComponentWithQuantityContainer(); EntityTree operationComponents = getOperationComponentsFromTechnology(technology); Entity root = operationComponents.getRoot(); if (root != null) { preloadProductQuantitiesAndOperationRuns(operationComponents, operationProductComponentWithQuantityContainer, operationRuns); traverseProductQuantitiesAndOperationRuns(technology, givenQuantity, root, null, operationProductComponentWithQuantityContainer, nonComponents, operationRuns); } return operationProductComponentWithQuantityContainer; }
@Override public OperationProductComponentWithQuantityContainer getProductComponentWithQuantitiesForTechnology(final Entity technology, final BigDecimal givenQuantity, final Map<Long, BigDecimal> operationRuns, final Set<OperationProductComponentHolder> nonComponents) { OperationProductComponentWithQuantityContainer operationProductComponentWithQuantityContainer = new OperationProductComponentWithQuantityContainer(); EntityTree operationComponents = productStructureTreeService.getOperationComponentsFromTechnology(technology); technology.setField(TechnologyFields.OPERATION_COMPONENTS, EntityTreeUtilsService.getDetachedEntityTree(operationComponents)); Entity root = technology.getTreeField(TechnologyFields.OPERATION_COMPONENTS).getRoot(); Map<Long, Entity> entitiesById = new LinkedHashMap<Long, Entity>(); for (Entity entity : operationComponents) { entitiesById.put(entity.getId(), entity); } if (root != null) { productQuantitiesService.preloadProductQuantitiesAndOperationRuns(operationComponents, operationProductComponentWithQuantityContainer, operationRuns); productQuantitiesService.traverseProductQuantitiesAndOperationRuns(technology, entitiesById, givenQuantity, root, null, operationProductComponentWithQuantityContainer, nonComponents, operationRuns); } return operationProductComponentWithQuantityContainer; }
OperationProductComponentWithQuantityContainer operationProductComponentWithQuantityContainer = new OperationProductComponentWithQuantityContainer();
private OperationProductComponentWithQuantityContainer getProductComponentWithQuantities(final Entity order) { OperationProductComponentWithQuantityContainer productComponentWithQuantities = new OperationProductComponentWithQuantityContainer(); List<Entity> productionCountingQuantities = dataDefinitionService .get(BasicProductionCountingConstants.PLUGIN_IDENTIFIER, BasicProductionCountingConstants.MODEL_PRODUCTION_COUNTING_QUANTITY).find() .add(SearchRestrictions.belongsTo(ProductionCountingQuantityFields.ORDER, order)).list().getEntities(); for (Entity productionCountingQuantity : productionCountingQuantities) { Entity technologyOperationComponent = productionCountingQuantity .getBelongsToField(ProductionCountingQuantityFields.TECHNOLOGY_OPERATION_COMPONENT); Entity product = productionCountingQuantity.getBelongsToField(ProductionCountingQuantityFields.PRODUCT); String role = productionCountingQuantity.getStringField(ProductionCountingQuantityFields.ROLE); BigDecimal plannedQuantity = productionCountingQuantity .getDecimalField(ProductionCountingQuantityFields.PLANNED_QUANTITY); OperationProductComponentEntityType entityType = getEntityType(role); ProductMaterialType productMaterialType = ProductMaterialType.parseString(productionCountingQuantity.getStringField(ProductionCountingQuantityFields.TYPE_OF_MATERIAL)); OperationProductComponentHolder operationProductComponentHolder = new OperationProductComponentHolder(product, technologyOperationComponent, productionCountingQuantity, entityType, productMaterialType); productComponentWithQuantities.put(operationProductComponentHolder, plannedQuantity); } return productComponentWithQuantities; }