private BigDecimal quantity(OperationProductComponentWithQuantityContainer quantityContainer, Entity operationProductInComponent) { return quantityContainer.get(operationProductInComponent); }
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); }
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); } }
public BigDecimal fillWithPlanedQuantityValueIN(final OperationProductComponentWithQuantityContainer productQuantities, final Entity operationProductInComponent, final boolean takeActualProgress) { if (takeActualProgress) { BigDecimal value = productionCountingService.getRegisteredProductValueForOperationProductIn( operationProductInComponent, productQuantities.get(operationProductInComponent)); if (value == null) { value = productQuantities.get(operationProductInComponent); } return value; } else { return productQuantities.get(operationProductInComponent); } }
public BigDecimal get(final Entity operationProductComponent) { Preconditions.checkNotNull(operationProductComponent, L_MISSING_OPERATION_PRODUCT_COMPONENT_ENTITY); OperationProductComponentHolder operationProductComponentHolder = new OperationProductComponentHolder( operationProductComponent); return get(operationProductComponentHolder); }
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 BigDecimal getQuantityCyclesNeededToProducedNextOperationAfterProducedQuantity(final Entity operationComponent, final BigDecimal nextOperationAfterProducedQuantity) { MathContext mc = numberService.getMathContext(); Entity technology = operationComponent.getBelongsToField("technology"); Map<Long, BigDecimal> operationRunsFromProductionQuantities = Maps.newHashMap(); OperationProductComponentWithQuantityContainer productQuantities = productQuantitiesService .getProductComponentQuantities(technology, BigDecimal.ONE, operationRunsFromProductionQuantities); BigDecimal operationsRunsForOneMainProduct = operationRunsFromProductionQuantities.get(operationComponent.getId()); BigDecimal quantityOutputProductProduced = productQuantities.get(getOutputProduct(operationComponent)); BigDecimal cycles = operationsRunsForOneMainProduct.multiply(nextOperationAfterProducedQuantity, mc).divide( quantityOutputProductProduced, mc); return numberService.setScaleWithDefaultMathContext(cycles); }
private String getProductQuantityAndUnit(final Entity operationProductComponent, final OperationProductComponentWithQuantityContainer productQuantities) { Entity product = operationProductComponent.getBelongsToField("product"); String unit = product.getStringField(ProductFields.UNIT); String quantity = numberService.format(productQuantities.get(operationProductComponent)); String productQuantityAndUnit = quantity + " " + unit; return productQuantityAndUnit; }
@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; }
private BigDecimal getQuantity(final CoverageProductForOrder coverageProductForOrder) { if (TypeOfProductionRecording.FOR_EACH.getStringValue().equals(coverageProductForOrder.getTypeOfProductionRecording())) { return coverageProductForOrder.getOperationProductComponentWithQuantityContainer().get( coverageProductForOrder.getOperationProductInComponent()); } else { return coverageProductForOrder.getProductComponentQuantities().get(coverageProductForOrder.getProduct().getId()); } }
if (operationProductOutComponent.getBelongsToField(OperationProductOutComponentFields.PRODUCT).getId() .equals(technologyProduct.getId())) { BigDecimal outQuantity = operationProductComponentWithQuantityContainer.get(operationProductOutComponent); isntComponent = true; BigDecimal outQuantity = operationProductComponentWithQuantityContainer.get(operationProductOutComponent); BigDecimal inQuantity = operationProductComponentWithQuantityContainer.get(operationProductInComponent);
if (operationProductOutComponent.getBelongsToField(OperationProductOutComponentFields.PRODUCT).getId() .equals(technologyProduct.getId())) { BigDecimal outQuantity = operationProductComponentWithQuantityContainer.get(operationProductOutComponent); isntComponent = true; BigDecimal outQuantity = operationProductComponentWithQuantityContainer.get(operationProductOutComponent); BigDecimal inQuantity = operationProductComponentWithQuantityContainer.get(operationProductInComponent);
@Override public int evaluateSingleOperationTimeIncludedNextOperationAfterProducedQuantity(Entity operationComponent, final boolean includeTpz, final boolean includeAdditionalTime, final Map<Long, BigDecimal> operationRuns, final Entity productionLine, final boolean maxForWorkstation, final OperationProductComponentWithQuantityContainer productComponentQuantities) { operationComponent = operationComponent.getDataDefinition().get(operationComponent.getId()); BigDecimal cycles = BigDecimal.ONE; BigDecimal nextOperationAfterProducedQuantity = BigDecimalUtils.convertNullToZero(operationComponent .getDecimalField("nextOperationAfterProducedQuantity")); BigDecimal productComponentQuantity = productComponentQuantities.get(getOutputProduct(operationComponent)); Entity technologyOperationComponent = getTechnologyOperationComponent(operationComponent); if (nextOperationAfterProducedQuantity.compareTo(productComponentQuantity) != 1) { cycles = getQuantityCyclesNeededToProducedNextOperationAfterProducedQuantity(technologyOperationComponent, nextOperationAfterProducedQuantity); } else { cycles = operationRuns.get(technologyOperationComponent.getId()); } return evaluateOperationDurationOutOfCycles(cycles, operationComponent, productionLine, maxForWorkstation, includeTpz, includeAdditionalTime); }
productQuantities.get(operationProductInComponent); BigDecimal increasedQuantity = increaseQuantityBy(productQuantities, existingOperationProductInComponent, quantity);
private void fillProductTypeAndOrder(final CoverageProductForOrder coverageProductForOrder, final Entity coveredOrder) { if (!coverageProductForOrder.getOrder().getId().equals(coveredOrder.getId())) { return; } Entity opic = coverageProductForOrder.getOperationProductInComponent(); Entity product = opic.getBelongsToField(OperationProductInComponentFields.PRODUCT); List<Entity> technologiesForProduct = dataDefinitionService .get(TechnologiesConstants.PLUGIN_IDENTIFIER, TechnologiesConstants.MODEL_TECHNOLOGY) .find() .add(SearchRestrictions.belongsTo(TechnologyFields.PRODUCT, product)) .add(SearchRestrictions.isNull(TechnologyFields.TECHNOLOGY_TYPE)) .add(SearchRestrictions.or( SearchRestrictions.eq(TechnologyFields.STATE, TechnologyState.ACCEPTED.getStringValue()), SearchRestrictions.eq(TechnologyFields.STATE, TechnologyState.CHECKED.getStringValue()))).list() .getEntities(); if (coverageProductForOrder.getProductComponentQuantities() != null && coverageProductForOrder.getProductComponentQuantities().size() > 0) { coverageProductForOrder.setPlannedQuantity(coverageProductForOrder.getProductComponentQuantities().get( coverageProductForOrder.getOperationProductInComponent().getBelongsToField("product").getId())); } else { coverageProductForOrder.setPlannedQuantity(coverageProductForOrder .getOperationProductComponentWithQuantityContainer().get( coverageProductForOrder.getOperationProductInComponent())); } if (technologiesForProduct.isEmpty()) { coverageProductForOrder.setProductType(ProductType.COMPONENT); } else { coverageProductForOrder.setProductType(ProductType.INTERMEDIATE); } }