package com.opentravelsoft.providers.hibernate.product;
import java.util.Date;
import java.util.List;
import org.hibernate.LockMode;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
import com.opentravelsoft.entity.LinePrice;
import com.opentravelsoft.providers.hibernate.GenericDaoHibernate;
import com.opentravelsoft.providers.product.LinePriceDao;
/**
*
* @author <a herf="mailto:zhangsitao@gmail.com">Steven Zhang</a>
*/
@Repository("RoutePriceDao")
public class LinePriceDaoImpl extends GenericDaoHibernate<LinePrice, String>
implements LinePriceDao {
public LinePriceDaoImpl() {
super(LinePrice.class);
}
@SuppressWarnings("unchecked")
public List<LinePrice> getLinePrice(String lineNo, Date startDate,
Date endDate) {
DetachedCriteria criteria = DetachedCriteria.forClass(LinePrice.class);
criteria.add(Restrictions.eq("lineNo", lineNo));
if (null != startDate)
criteria.add(Restrictions.ge("endDate", startDate));
if (null != endDate)
criteria.add(Restrictions.le("startDate", endDate));
criteria.addOrder(Order.desc("endDate"));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
List<LinePrice> list = getHibernateTemplate().findByCriteria(criteria);
int count = 1;
for (LinePrice obj : list) {
obj.setCount(count++);
}
return list;
}
@SuppressWarnings("unchecked")
public int deleteLinePrice(String priceNo, String note, int uid) {
HibernateTemplate template = getHibernateTemplate();
LinePrice tfa606 = (LinePrice) template.get(LinePrice.class, priceNo,
LockMode.PESSIMISTIC_WRITE);
if (tfa606 != null) {
// 修改对应计划
StringBuilder sb = new StringBuilder();
sb.append("select count(*) Plan ");
sb.append("where packagePrice.priceNo=? ");
Object[] param = { priceNo };
List<Integer> row = template.find(sb.toString(), param);
if (row.get(0) > 0)
return -1;
else
// 删除报价
template.delete(tfa606);
} else
return -1;
return 0;
}
@SuppressWarnings("unchecked")
public List<LinePrice> getPriceNotice(String lineNo) {
StringBuilder sql = new StringBuilder();
sql.append("from LinePrice ");
sql.append("where endDate>current_date() and lineNo=? ");
sql.append("order by startDate desc");
Object[] ooj = { lineNo };
return getHibernateTemplate().find(sql.toString(), ooj);
}
@Override
public void savePrice(LinePrice routePrice) {
getHibernateTemplate().saveOrUpdate(routePrice);
// LinePrice price = get(routePrice.getRecNo());
// price.setStartDate(routePrice.getStartDate());
// getHibernateTemplate().saveOrUpdate(price);
}
}