@Override public int evaluateSingleOperationTime(Entity operationComponent, final boolean includeTpz, final boolean includeAdditionalTime, final Map<Long, BigDecimal> operationRuns, final Entity productionLine, final boolean maxForWorkstation) { operationComponent = operationComponent.getDataDefinition().get(operationComponent.getId()); BigDecimal cycles = operationRuns.get(operationComponent.getId()); if (cycles == null) { Map<Long, BigDecimal> operationRunsFromProductionQuantities = Maps.newHashMap(); OperationProductComponentWithQuantityContainer productComponentQuantities = productQuantitiesService .getProductComponentQuantities(operationComponent .getBelongsToField(TechnologyOperationComponentFields.TECHNOLOGY), new BigDecimal("56", numberService.getMathContext()), operationRunsFromProductionQuantities); cycles = operationRunsFromProductionQuantities.get(operationComponent.getId()); } return evaluateOperationDurationOutOfCycles(cycles, operationComponent, productionLine, maxForWorkstation, includeTpz, includeAdditionalTime); }
@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); }