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; }
@Override public OperationWorkTime estimateTotalWorkTime(Entity order, List<Entity> operationComponents, Map<Long, BigDecimal> operationRuns, boolean includeTpz, boolean includeAdditionalTime, Map<Long, Integer> workstations, boolean saved) { OperationWorkTime totalWorkTime = new OperationWorkTime(); Integer totalLaborWorkTime = Integer.valueOf(0); Integer totalMachineWorkTime = Integer.valueOf(0); Integer duration = Integer.valueOf(0); for (Entity operationComponent : operationComponents) { Entity operComp = operationComponent; OperationWorkTime abstractOperationWorkTime = estimateOrderOperationWorkTime(order, operComp, getOperationRunsFromMap(operationRuns, operationComponent), includeTpz, includeAdditionalTime, getWorkstationsQuantityFromMap(workstations, operationComponent), saved); totalLaborWorkTime += abstractOperationWorkTime.getLaborWorkTime(); totalMachineWorkTime += abstractOperationWorkTime.getMachineWorkTime(); duration += abstractOperationWorkTime.getDuration(); } totalWorkTime.setLaborWorkTime(totalLaborWorkTime); totalWorkTime.setMachineWorkTime(totalMachineWorkTime); totalWorkTime.setDuration(duration); return totalWorkTime; }
@Override public OperationWorkTime estimateTotalWorkTime(final List<Entity> operationComponents, final Map<Long, BigDecimal> operationRuns, final boolean includeTpz, final boolean includeAdditionalTime, final Map<Long, Integer> workstations, final boolean saved) { OperationWorkTime totalWorkTime = new OperationWorkTime(); Integer totalLaborWorkTime = Integer.valueOf(0); Integer totalMachineWorkTime = Integer.valueOf(0); Integer duration = Integer.valueOf(0); for (Entity operationComponent : operationComponents) { Entity operComp = operationComponent; OperationWorkTime abstractOperationWorkTime = estimateTechOperationWorkTime(operComp, getOperationRunsFromMap(operationRuns, operationComponent), includeTpz, includeAdditionalTime, getWorkstationsQuantityFromMap(workstations, operationComponent), saved); totalLaborWorkTime += abstractOperationWorkTime.getLaborWorkTime(); totalMachineWorkTime += abstractOperationWorkTime.getMachineWorkTime(); duration += abstractOperationWorkTime.getDuration(); } totalWorkTime.setLaborWorkTime(totalLaborWorkTime); totalWorkTime.setMachineWorkTime(totalMachineWorkTime); totalWorkTime.setDuration(duration); return totalWorkTime; }