@Override public OperationWorkTime estimateOrderOperationWorkTime(final Entity order, final Entity operationComponent, final BigDecimal neededNumberOfCycles, final boolean includeTpz, final boolean includeAdditionalTime, final Integer workstations, final boolean saved) { return estimateOperationWorkTime(order, operationComponent, neededNumberOfCycles, includeTpz, includeAdditionalTime, workstations, saved); }
@Override public Map<Entity, OperationWorkTime> estimateOperationsWorkTime(final List<Entity> operationComponents, final Map<Entity, BigDecimal> operationRuns, final boolean includeTpz, final boolean includeAdditionalTime, final Entity productionLine, final boolean saved) { Map<Entity, Integer> workstations = getWorkstationsForOperationsComponent(operationComponents, productionLine); return estimateOperationsWorkTime(operationComponents, operationRuns, includeTpz, includeAdditionalTime, workstations, saved); }
@Override public OperationWorkTime estimateTotalWorkTime(final List<Entity> operationComponents, final Map<Long, BigDecimal> operationRuns, final boolean includeTpz, final boolean includeAdditionalTime, final Entity productionLine, final boolean saved) { Map<Long, Integer> workstations = getWorkstationsMapsForOperationsComponent(operationComponents, productionLine); return estimateTotalWorkTime(operationComponents, operationRuns, includeTpz, includeAdditionalTime, workstations, saved); }
@Override public OperationWorkTime estimateTotalWorkTimeForTechnology(final Entity technology, final Map<Long, BigDecimal> operationRuns, final boolean includeTpz, final boolean includeAdditionalTime, final Entity productionLine, final boolean saved) { List<Entity> operationComponents = technology.getHasManyField(TechnologyFields.OPERATION_COMPONENTS); Map<Long, Integer> workstations = getWorkstationsMapFromTechnology(technology, productionLine); return estimateTotalWorkTime(operationComponents, operationRuns, includeTpz, includeAdditionalTime, workstations, saved); }
@Override public OperationTimesContainer estimateOperationsWorkTimes(List<Entity> operationComponents, Map<Long, BigDecimal> operationRuns, boolean includeTpz, boolean includeAdditionalTime, Map<Long, Integer> workstations, boolean saved) { OperationTimesContainer operationTimesContainer = new OperationTimesContainer(); for (Entity operationComponent : operationComponents) { OperationWorkTime operationWorkTime = estimateTechOperationWorkTime(operationComponent, getOperationRunsFromMap(operationRuns, operationComponent), includeTpz, includeAdditionalTime, getWorkstationsQuantityFromMap(workstations, operationComponent), saved); operationTimesContainer .add(operationComponent.getDataDefinition().get(operationComponent.getId()), operationWorkTime); } return operationTimesContainer; }
@Override public Map<Entity, OperationWorkTime> estimateOperationsWorkTime(final List<Entity> operationComponents, final Map<Entity, BigDecimal> operationRuns, final boolean includeTpz, final boolean includeAdditionalTime, final Map<Entity, Integer> workstations, final boolean saved) { Map<Entity, OperationWorkTime> operationsWorkTimes = new HashMap<Entity, OperationWorkTime>(); for (Entity operationComponent : operationComponents) { OperationWorkTime operationWorkTime = estimateTechOperationWorkTime(operationComponent, getOperationRuns(operationRuns, operationComponent), includeTpz, includeAdditionalTime, getWorkstationsQuantity(workstations, operationComponent), saved); operationsWorkTimes.put(operationComponent.getDataDefinition().get(operationComponent.getId()), operationWorkTime); } return operationsWorkTimes; }
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 Map<Entity, OperationWorkTime> estimateOperationsWorkTimeForTechnology(final Entity technology, final Map<Entity, BigDecimal> operationRuns, final boolean includeTpz, final boolean includeAdditionalTime, final Entity productionLine, final boolean saved) { List<Entity> operationComponents = technology.getHasManyField(TechnologyFields.OPERATION_COMPONENTS); Map<Entity, Integer> workstations = getWorkstationsFromTechnology(technology, productionLine); return estimateOperationsWorkTime(operationComponents, operationRuns, includeTpz, includeAdditionalTime, workstations, saved); }
@Override public OperationWorkTime estimateTotalWorkTimeForOrder(final Entity order, final Map<Long, BigDecimal> operationRuns, final boolean includeTpz, final boolean includeAdditionalTime, final Entity productionLine, final boolean saved) { List<Entity> operationComponents = order.getBelongsToField(L_TECHNOLOGY).getHasManyField( TechnologyFields.OPERATION_COMPONENTS); Map<Long, Integer> workstations = getWorkstationsMapFromOrder(order); return estimateTotalWorkTime(order, operationComponents, operationRuns, includeTpz, includeAdditionalTime, workstations, saved); }
private Integer getValueOfIntFiled(final Entity operationComponent, final String field) { String entityType = operationComponent.getDataDefinition().getName(); if (TechnologiesConstants.MODEL_TECHNOLOGY_OPERATION_COMPONENT.equals(entityType)) { return getIntegerValue(operationComponent.getField(field)); } else { return getIntegerValue(operationComponent.getBelongsToField("technologyOperationComponent").getField(field)); } }
private void savedWorkTime(Entity order, final Entity technologyOperationComponent, final Integer machineWorkTime, final Integer laborWorkTime, final Integer duration) { Entity operCompTimeCalculation = createOrGetOperCompTimeCalculation(order, technologyOperationComponent); if (operCompTimeCalculation != null) { operCompTimeCalculation.setField(OperCompTimeCalculationsFields.MACHINE_WORK_TIME, machineWorkTime); operCompTimeCalculation.setField(OperCompTimeCalculationsFields.LABOR_WORK_TIME, laborWorkTime); operCompTimeCalculation.setField(OperCompTimeCalculationsFields.DURATION, duration); operCompTimeCalculation.getDataDefinition().save(operCompTimeCalculation); } }
@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; }
@Override public OperationWorkTime estimateTechOperationWorkTime(final Entity operationComponent, final BigDecimal neededNumberOfCycles, final boolean includeTpz, final boolean includeAdditionalTime, final Integer workstations, final boolean saved) { return estimateOperationWorkTime(null, operationComponent, neededNumberOfCycles, includeTpz, includeAdditionalTime, workstations, saved); }