@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; }
public OperationProductComponentWithQuantityContainer getAllWithSameEntityType(final String operationProductComponentModelName) { return getAllWithSameEntityType(OperationProductComponentEntityType.parseString(operationProductComponentModelName)); }
private OperationProductComponentWithQuantityContainer getProductComponentWithQuantitiesWithoutNonComponents( final OperationProductComponentWithQuantityContainer productComponentWithQuantities, final Set<OperationProductComponentHolder> nonComponents) { for (OperationProductComponentHolder nonComponent : nonComponents) { productComponentWithQuantities.remove(nonComponent); } return productComponentWithQuantities; }
private void multiplyOperationProductComponentQuantities(final List<Entity> operationProductComponents, final BigDecimal multiplier, final OperationProductComponentWithQuantityContainer operationProductComponentWithQuantityContainer) { for (Entity operationProductComponent : operationProductComponents) { BigDecimal addedQuantity = operationProductComponentWithQuantityContainer.get(operationProductComponent); BigDecimal quantity = addedQuantity.multiply(multiplier, numberService.getMathContext()); operationProductComponentWithQuantityContainer.put(operationProductComponent, quantity.setScale(5, RoundingMode.CEILING)); } }
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; }
public ProductQuantitiesHolder(final OperationProductComponentWithQuantityContainer productQuantities, final Map<Long, BigDecimal> operationRuns, final Set<OperationProductComponentHolder> nonComponents) { this.productQuantities = Maps.newHashMap(productQuantities.asMap()); this.operationRuns = Maps.newHashMap(operationRuns); this.nonComponents = Sets.newHashSet(nonComponents); }
private BigDecimal quantity(OperationProductComponentWithQuantityContainer quantityContainer, Entity operationProductInComponent) { return quantityContainer.get(operationProductInComponent); }
final String operationProductComponentModelName) { OperationProductComponentWithQuantityContainer allWithSameEntityType = productComponentWithQuantities .getAllWithSameEntityType(operationProductComponentModelName); for (Entry<OperationProductComponentHolder, BigDecimal> productComponentWithQuantity : allWithSameEntityType.asMap() .entrySet()) { OperationProductComponentHolder operationProductComponentHolder = productComponentWithQuantity.getKey();
public void createRegistryEntriesForOrder(Entity order, boolean plannedQuantityChanged) { OperationProductComponentWithQuantityContainer operationProductComponentWithQuantityContainer = productQuantitiesService .getProductComponentQuantitiesWithoutNonComponents(Lists.newArrayList(order), true); String typeOfProductionRecording = order.getStringField(OrderFieldsPC.TYPE_OF_PRODUCTION_RECORDING); String eventType = null; if (TypeOfProductionRecording.FOR_EACH.getStringValue().equals(typeOfProductionRecording)) { eventType = CoverageProductLoggingEventType.OPERATION_INPUT.getStringValue(); } else if (TypeOfProductionRecording.CUMULATED.getStringValue().equals(typeOfProductionRecording) || TypeOfProductionRecording.BASIC.getStringValue().equals(typeOfProductionRecording)) { eventType = CoverageProductLoggingEventType.ORDER_INPUT.getStringValue(); } OperationProductComponentWithQuantityContainer operationProductComponentWithQuantityContainerIn = operationProductComponentWithQuantityContainer .getAllWithSameEntityType(TechnologiesConstants.MODEL_OPERATION_PRODUCT_IN_COMPONENT); List<Entity> opics = registerService.getOPICForTechnology(order.getBelongsToField(OrderFields.TECHNOLOGY)); List<Entity> entries = Lists.newArrayList(); List<Long> productIds = opics.stream().map(en -> en.getLongField("productId")).collect(Collectors.toList()); List<Long> intermediateProducts = registerService.getIntermediateProducts(productIds); for (Entity opic : opics) { BigDecimal quantity = operationProductComponentWithQuantityContainerIn.get(opic.getBelongsToField("opic")); if (quantity != null) { registerService.addRegisterEntryForOrder(entries, order, opic, quantity, eventType, intermediateProducts); } } addOutputEntry(operationProductComponentWithQuantityContainer, order, entries, plannedQuantityChanged); order.setField(OrderFieldsOS.COVERAGE_REGISTERS, entries); }
OperationProductComponentWithQuantityContainer operationProductComponentWithQuantityContainer = new OperationProductComponentWithQuantityContainer(); .getAllWithSameEntityType(TechnologiesConstants.MODEL_OPERATION_PRODUCT_IN_COMPONENT);
@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; }
public void remove(final OperationProductComponentHolder operationProductComponentHolder) { if (containsKey(operationProductComponentHolder)) { operationProductComponentWithQuantities.remove(operationProductComponentHolder); } }
@Override public void preloadOperationProductComponentQuantity(final List<Entity> operationProductComponents, final OperationProductComponentWithQuantityContainer operationProductComponentWithQuantityContainer) { for (Entity operationProductComponent : operationProductComponents) { BigDecimal neededQuantity = operationProductComponent.getDecimalField(L_QUANTITY); operationProductComponentWithQuantityContainer.put(operationProductComponent, neededQuantity); } }
public ProductQuantitiesHolder(final OperationProductComponentWithQuantityContainer productQuantities, final Map<Long, BigDecimal> operationRuns) { this.productQuantities = Maps.newHashMap(productQuantities.asMap()); this.operationRuns = Maps.newHashMap(operationRuns); this.nonComponents = Sets.newHashSet(); }
public BigDecimal fillWithPlanedQuantityValueOUT(final OperationProductComponentWithQuantityContainer productQuantities, final Entity operationProductOutComponent, final boolean takeActualProgress) { if (takeActualProgress) { BigDecimal value = productionCountingService.getRegisteredProductValueForOperationProductOut( operationProductOutComponent, productQuantities.get(operationProductOutComponent)); if (value == null) { value = productQuantities.get(operationProductOutComponent); } return value; } else { return productQuantities.get(operationProductOutComponent); } }
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; }
@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; }
public boolean containsKey(final Entity operationProductComponent) { Preconditions.checkNotNull(operationProductComponent, L_MISSING_OPERATION_PRODUCT_COMPONENT_ENTITY); OperationProductComponentHolder operationProductComponentHolder = new OperationProductComponentHolder( operationProductComponent); return containsKey(operationProductComponentHolder); }
public void put(final Entity operationProductComponent, final BigDecimal quantity) { Preconditions.checkNotNull(operationProductComponent, L_MISSING_OPERATION_PRODUCT_COMPONENT_ENTITY); OperationProductComponentHolder operationProductComponentHolder = new OperationProductComponentHolder( operationProductComponent); put(operationProductComponentHolder, quantity); }
private Map<OperationProductComponentHolder, BigDecimal> getOperationProductComponentWithQuantities( final OperationProductComponentWithQuantityContainer productComponentWithQuantities, final Set<OperationProductComponentHolder> nonComponents, final boolean onlyComponents, final boolean onlyMaterials) { Map<OperationProductComponentHolder, BigDecimal> productWithQuantities = Maps.newHashMap(); for (Map.Entry<OperationProductComponentHolder, BigDecimal> productComponentWithQuantity : productComponentWithQuantities .asMap().entrySet()) { OperationProductComponentHolder operationProductComponentHolder = productComponentWithQuantity.getKey(); if (onlyComponents && nonComponents.contains(operationProductComponentHolder)) { continue; } if (onlyMaterials) { Entity product = operationProductComponentHolder.getProduct(); if (hasAcceptedMasterTechnology(product)) { continue; } } addOPCQuantitiesToList(productComponentWithQuantity, productWithQuantities); } return productWithQuantities; }