/* (non-Javadoc) * @see com.mg.merp.reference.CatalogPriceServiceLocal#findActual(java.util.Date, com.mg.merp.reference.model.Catalog, com.mg.merp.reference.model.Currency) */ @PermitAll public CatalogPrice findActual(Date actualityDate, Catalog catalog, Currency currency) { DetachedCriteria dc = DetachedCriteria.forClass(CatalogPrice.class, "cp") .setProjection(Projections.max("cp.InAction")) .add(Restrictions.eq("cp.Catalog", catalog)) .add(Restrictions.eq("cp.Currency", currency)) .add(Restrictions.le("cp.InAction", actualityDate)); return OrmTemplate.getInstance() .findUniqueByCriteria( OrmTemplate.createCriteria(CatalogPrice.class) .add(Restrictions.eq("Catalog", catalog)) .add(Subqueries.propertyEq("InAction", dc))); }
/** * Проверить пересечение даным периодом других периодов * * @param calcPeriod - расчетный период * @return true - если данный период пересекает другие периоды */ protected boolean isPeriodCross(CalcPeriod calcPeriod) { Criteria criteria = OrmTemplate.createCriteria(CalcPeriod.class) .setProjection(Projections.rowCount()) .add( Restrictions.or( Restrictions.and( Restrictions.le("BeginDate", calcPeriod.getBeginDate()), Restrictions.ge( "EndDate", calcPeriod.getBeginDate())), // $NON-NLS-1$ //$NON-NLS-2$ Restrictions.and( Restrictions.le("BeginDate", calcPeriod.getEndDate()), Restrictions.ge( "EndDate", calcPeriod.getEndDate())))); // $NON-NLS-1$ //$NON-NLS-2$ // при редактировании периода исключаем изменяемый период из списка существующих периодов if (calcPeriod.getId() != null) criteria.add(Restrictions.ne("Id", calcPeriod.getId())); // $NON-NLS-1$ Integer crossedPeriodsCount = OrmTemplate.getInstance().findUniqueByCriteria(criteria); if (crossedPeriodsCount > 0) return true; else return false; }