private OperationWorkTime estimateOperationWorkTime(final Entity order, final Entity operationComponent, final BigDecimal neededNumberOfCycles, final boolean includeTpz, final boolean includeAdditionalTime, final Integer workstations, final boolean saved) { MathContext mc = numberService.getMathContext(); BigDecimal laborUtilization = BigDecimalUtils.convertNullToZero(getValueOfDecimalFiled(operationComponent, "laborUtilization")); BigDecimal machineUtilization = BigDecimalUtils.convertNullToZero(getValueOfDecimalFiled(operationComponent, "machineUtilization")); BigDecimal abstractOperationWorkTime = estimateAbstractOperationWorkTime(operationComponent, neededNumberOfCycles, includeTpz, includeAdditionalTime, workstations); Integer laborWorkTime = abstractOperationWorkTime.multiply(laborUtilization, mc).intValue(); Integer machineWorkTime = abstractOperationWorkTime.multiply(machineUtilization, mc).intValue(); Integer duration = abstractOperationWorkTime.intValue(); OperationWorkTime operationWorkTime = new OperationWorkTime(); operationWorkTime.setDuration(duration); operationWorkTime.setLaborWorkTime(laborWorkTime); operationWorkTime.setMachineWorkTime(machineWorkTime); if (saved) { savedWorkTime(order, operationComponent, machineWorkTime, laborWorkTime, duration); } return operationWorkTime; }