use of com.qcadoo.mes.operationTimeCalculations.dto.OperationTimesContainer in project mes by qcadoo.
the class OperationsCostCalculationServiceImpl method calculateOperationsCost.
@Override
public BigDecimal calculateOperationsCost(final Entity costCalculation, final Entity technology) {
DataDefinition costCalculationDataDefinition = costCalculation.getDataDefinition();
BigDecimal quantity = costCalculation.getDecimalField(CostCalculationFields.QUANTITY);
ProductQuantitiesHolder productQuantitiesAndOperationRuns = getProductQuantitiesAndOperationRuns(technology, quantity, costCalculation);
Entity copyCostCalculation = operationCostCalculationTreeBuilder.copyTechnologyTree(costCalculation, technology);
Entity yetAnotherCostCalculation = costCalculationDataDefinition.save(copyCostCalculation);
Entity newCostCalculation = costCalculationDataDefinition.get(yetAnotherCostCalculation.getId());
EntityTree calculationOperationComponents = newCostCalculation.getTreeField(CostCalculationFields.CALCULATION_OPERATION_COMPONENTS);
checkArgument(calculationOperationComponents != null, "given operation components is null");
List<Entity> tocs = calculationOperationComponents.stream().map(e -> e.getBelongsToField(CalculationOperationComponentFields.TECHNOLOGY_OPERATION_COMPONENT)).collect(Collectors.toList());
OperationTimesContainer operationTimes = operationWorkTimeService.estimateOperationsWorkTimes(tocs, productQuantitiesAndOperationRuns.getOperationRuns(), costCalculation.getBooleanField(CostCalculationFields.INCLUDE_TPZ), costCalculation.getBooleanField(CostCalculationFields.INCLUDE_ADDITIONAL_TIME), true);
boolean hourlyCostFromOperation = !SourceOfOperationCosts.PARAMETERS.getStringValue().equals(costCalculation.getStringField(CostCalculationFields.SOURCE_OF_OPERATION_COSTS));
Map<String, BigDecimal> resultsMap = estimateCostCalculationForHourly(calculationOperationComponents.getRoot(), operationTimes, hourlyCostFromOperation, costCalculation);
costCalculation.setField(CostCalculationFields.CALCULATION_OPERATION_COMPONENTS, calculationOperationComponents);
return BigDecimalUtils.convertNullToZero(numberService.setScaleWithDefaultMathContext(resultsMap.get(CalculationOperationComponentFields.MACHINE_HOURLY_COST))).add(BigDecimalUtils.convertNullToZero(numberService.setScaleWithDefaultMathContext(resultsMap.get(CalculationOperationComponentFields.LABOR_HOURLY_COST))), numberService.getMathContext());
}
use of com.qcadoo.mes.operationTimeCalculations.dto.OperationTimesContainer in project mes by qcadoo.
the class OperationWorkTimeServiceImpl method estimateOperationsWorkTimes.
@Override
public OperationTimesContainer estimateOperationsWorkTimes(List<Entity> operationComponents, Map<Long, BigDecimal> operationRuns, boolean includeTpz, boolean includeAdditionalTime, boolean saved) {
OperationTimesContainer operationTimesContainer = new OperationTimesContainer();
for (Entity operationComponent : operationComponents) {
OperationWorkTime operationWorkTime = estimateTechOperationWorkTime(operationComponent, BigDecimalUtils.convertNullToZero(operationRuns.get(operationComponent.getId())), includeTpz, includeAdditionalTime, saved, BigDecimal.ONE);
operationTimesContainer.add(operationComponent.getDataDefinition().get(operationComponent.getId()), operationWorkTime);
}
return operationTimesContainer;
}
Aggregations