package com.norteksoft.acs.service.sale; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.norteksoft.acs.base.orm.hibernate.SimpleHibernateTemplate; import com.norteksoft.acs.entity.sale.PricePolicy; import com.norteksoft.acs.entity.sale.Product; import com.norteksoft.acs.entity.sale.SubsciberPricePolicy; import com.norteksoft.product.orm.Page; /** * 价格策略管理 */ @Service @Transactional public class PricePolicyManager { private SimpleHibernateTemplate<PricePolicy, Long> pricePolicyDao; private SimpleHibernateTemplate<SubsciberPricePolicy, Long> subsciberPricePolicyDao; @Autowired public void setSessionFactory(SessionFactory sessionFactory) { pricePolicyDao = new SimpleHibernateTemplate<PricePolicy, Long>(sessionFactory, PricePolicy.class); subsciberPricePolicyDao = new SimpleHibernateTemplate<SubsciberPricePolicy, Long>(sessionFactory, SubsciberPricePolicy.class); } public void savePricePolicy(PricePolicy pricePolicy){ pricePolicyDao.save(pricePolicy); } public void deletePricePolicy(Long id){ pricePolicyDao.delete(id); } /** * 根据系统ID查询价格策略 * @param page * @param productId */ public void getPricePolicyBySystem(Page<PricePolicy> page, Long productId){ String hql = "select pp from PricePolicy pp where pp.product.id = ?"; pricePolicyDao.find(page, hql, productId); } public PricePolicy getPricePolicy(Long id) { return pricePolicyDao.get(id); } @SuppressWarnings("unchecked") public Map<Product, List<PricePolicy>> getAllPricePolicy(){ Map<Product, List<PricePolicy>> result = new HashMap<Product, List<PricePolicy>>(); List<Object[]> pps = pricePolicyDao.find("select pp.product, pp from PricePolicy pp where pp.deleted = false order by pp.id"); for(Object obj : pps){ Object[] o = (Object[])obj; Product p = ((Product)o[0]); if(result.get(p) == null){ List<PricePolicy> list = new ArrayList<PricePolicy>(); list.add((PricePolicy)o[1]); result.put(p, list); }else{ result.get(p).add((PricePolicy)o[1]); } } return result; } @SuppressWarnings("unchecked") public List<Long> getPricePolicysBySubsciber(Long subId){ return subsciberPricePolicyDao.find("select spp.pricePolicyId from SubsciberPricePolicy spp where spp.subsciberId=?", subId); } /** * 根据系统ID查询价格策略 * @param page * @param productId */ public List<PricePolicy> getPricePolicyByProduct(Long productId){ String hql = "select pp from PricePolicy pp where pp.product.id = ?"; return pricePolicyDao.find( hql, productId); } }