private SearchCriteriaBuilder createCriteriaBuilder() { return getOrderMaterialCostsDataDef().findWithAlias(ORDER_MATERIAL_COST_ALIAS); }
private SearchCriteriaBuilder createCriteriaBuilder() { SearchCriteriaBuilder scb = getOpicDataDefinition().findWithAlias(OPIC_ALIAS); scb.createAlias(OperationProductInComponentFields.OPERATION_COMPONENT, TOC_ALIAS, JoinType.INNER); scb.createAlias(OperationProductInComponentFields.PRODUCT, TechnologyRawInputProductComponentsCriteria.PRODUCT_ALIAS, JoinType.INNER); scb.createAlias(TOC_ALIAS + "." + TechnologyOperationComponentFields.CHILDREN, TOC_CHILDREN_ALIAS, JoinType.LEFT); scb.createAlias(TOC_CHILDREN_ALIAS + "." + TechnologyOperationComponentFields.OPERATION_PRODUCT_OUT_COMPONENTS, OPOC_ALIAS, JoinType.LEFT); return scb; }
public BigDecimal countSumOfQuantities(final Entity pps, boolean corrected) { Set<Long> pfdIds = Sets.newHashSet(); Entity ppsDB = pps.getDataDefinition().get(pps.getId()); if (corrected) { pfdIds = ppsDB.getHasManyField(ProductionPerShiftFields.PROGRES_FOR_DAYS).stream() .filter(pfd -> pfd.getBooleanField(ProgressForDayFields.CORRECTED)).map(pfdf -> pfdf.getId()) .collect(Collectors.toSet()); } else { pfdIds = ppsDB.getHasManyField(ProductionPerShiftFields.PROGRES_FOR_DAYS).stream() .filter(pfd -> !pfd.getBooleanField(ProgressForDayFields.CORRECTED)).map(pfdf -> pfdf.getId()) .collect(Collectors.toSet()); } if (pfdIds.isEmpty()) { return BigDecimal.ZERO; } SearchProjectionList projectionList = list(); projectionList.add(alias(sum(DAILY_PROGRESS_ALIAS + DOT + DailyProgressFields.QUANTITY), QUANTITY_SUM_PROJECTION)); // To prevent NPE during conversion to generic entity projectionList.add(rowCount()); SearchCriteriaBuilder scb = getDailyProgressDD().findWithAlias(DAILY_PROGRESS_ALIAS); scb.setProjection(projectionList); scb.createAlias(DAILY_PROGRESS_ALIAS + DOT + DailyProgressFields.PROGRESS_FOR_DAY, PROGRESS_FOR_DAY_ALIAS, JoinType.INNER); scb.add(in(PROGRESS_FOR_DAY_ALIAS + DOT + ID, pfdIds)); scb.addOrder(desc(QUANTITY_SUM_PROJECTION)); Entity projection = scb.setMaxResults(1).uniqueResult(); BigDecimal quantitiesSum = projection.getDecimalField(QUANTITY_SUM_PROJECTION); return ObjectUtils.defaultIfNull(quantitiesSum, BigDecimal.ZERO); }
public Optional<Entity> find(final Long technologyId) { SearchCriteriaBuilder scb = getOpocDD().findWithAlias("opoc"); scb.createAlias(OperationProductOutComponentFields.OPERATION_COMPONENT, "toc", JoinType.INNER); scb.createAlias("toc." + TechnologyOperationComponentFields.TECHNOLOGY, "tech", JoinType.INNER); scb.add(eqField("tech.product", "opoc.product")); scb.add(isNull("toc.parent")); scb.add(eq("tech.id", technologyId)); scb.addOrder(asc("id")); return Optional.ofNullable(scb.setMaxResults(1).uniqueResult()); }
public SearchCriteriaBuilder create(final MasterOutputProductCriteria criteria) { SearchCriteriaBuilder tocScb = getTocDataDefinition().findWithAlias(Aliases.TOC); applyCriteriaIfPresent(tocScb, criteria.getTocCriteria()); SearchCriteriaBuilder opocScb = tocScb.createCriteria(TechnologyOperationComponentFields.OPERATION_PRODUCT_OUT_COMPONENTS, Aliases.OPERATION_PROD_OUT_COMPONENT, JoinType.INNER); applyCriteriaIfPresent(opocScb, criteria.getOpocCriteria()); SearchCriteriaBuilder prodScb = opocScb.createCriteria(OperationProductOutComponentFields.PRODUCT, Aliases.OPERATION_OUTPUT_PRODUCT, JoinType.INNER); applyCriteriaIfPresent(prodScb, criteria.getProdCriteria()); SearchCriteriaBuilder techScb = tocScb.createCriteria(TechnologyOperationComponentFields.TECHNOLOGY, Aliases.TECHNOLOGY, JoinType.INNER); applyCriteriaIfPresent(techScb, criteria.getTechCriteria()); SearchCriteriaBuilder parentTocScb = tocScb.createCriteria(TechnologyOperationComponentFields.PARENT, Aliases.TOC_PARENT, JoinType.LEFT); applyCriteriaIfPresent(parentTocScb, criteria.getParentTocCriteria()); SearchCriteriaBuilder parentOpicScb = parentTocScb.createCriteria( TechnologyOperationComponentFields.OPERATION_PRODUCT_IN_COMPONENTS, Aliases.TOC_PARENT_OPIC, JoinType.LEFT); parentOpicScb.createCriteria(OperationProductInComponentFields.PRODUCT, Aliases.TOC_PARENT_INPUT_PRODUCT, JoinType.LEFT); applyCriteriaIfPresent(parentOpicScb, criteria.getParentOpicCriteria()); techScb.createCriteria(TechnologyFields.PRODUCT, Aliases.TECHNOLOGY_PRODUCT, JoinType.INNER); SearchCriterion productIsConsumedByParentOp = eqField(Aliases.OPERATION_OUTPUT_PRODUCT + ".id", Aliases.TOC_PARENT_INPUT_PRODUCT + ".id"); SearchCriterion opIsRootAndItsProductMatchTechProduct = and( isNull(Aliases.TOC + "." + TechnologyOperationComponentFields.PARENT), eqField(Aliases.TECHNOLOGY_PRODUCT + ".id", Aliases.OPERATION_OUTPUT_PRODUCT + ".id")); tocScb.add(or(productIsConsumedByParentOp, opIsRootAndItsProductMatchTechProduct)); return tocScb; }