package edu.sjtu.infosec.ismp.manager.OSS.wom.dao.impl;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import edu.sjtu.infosec.ismp.manager.OSS.pm.model.Roster;
import edu.sjtu.infosec.ismp.manager.OSS.wom.dao.WorkOrderDao;
import edu.sjtu.infosec.ismp.manager.OSS.wom.model.WorkOrder;
import edu.sjtu.infosec.ismp.security.Domain;
/**
* Dao层 派工单dao.
*/
public class WorkOrderDaoImpl extends HibernateDaoSupport implements WorkOrderDao {
/**
* 保存/更新派工单
*/
public void saveOrUpdate(WorkOrder workOrder){
this.getHibernateTemplate().saveOrUpdate(workOrder);
}
/**
* 删除派工单
*/
public void remove(WorkOrder workOrder){
this.getHibernateTemplate().delete(workOrder);
}
/**
* 批量删除派工单
*/
public void remove(List<WorkOrder> workOrderList){
this.getHibernateTemplate().deleteAll(workOrderList);
}
/**
* 查询派工单
*/
public WorkOrder findById(Integer id){
WorkOrder workOrder = (WorkOrder)getHibernateTemplate().get(WorkOrder.class, id);
return workOrder;
}
/**
* 根据问题id查询派工单
*/
@SuppressWarnings("unchecked")
public WorkOrder findByQuestion(Integer questionId){
WorkOrder order = null;
Criteria criteria = this.getSession().createCriteria(WorkOrder.class);
if(questionId!=null){
criteria.add(Restrictions.eq("question.id", questionId));
}else{
criteria.add(Restrictions.eq("question.id", null));
}
criteria.add(Restrictions.ne("state", 4));
List<WorkOrder> list = criteria.list();
if(list!=null&&list.size()>0){
order=list.get(0);
}
return order;
}
/**
* 根据值班人员id查询派工单
*/
public WorkOrder findByRoster(Integer rosterId){
Criteria criteria = this.getSession().createCriteria(WorkOrder.class);
if(rosterId!=null){
criteria.add(Restrictions.eq("operator.id", rosterId));
}else{
criteria.add(Restrictions.eq("question.id", null));
}
return (WorkOrder) criteria.list().get(0);
}
/**
* 派工单分页信息
*/
@SuppressWarnings("unchecked")
public List<WorkOrder> findAll(int startResult, int maxResult,Domain domain,Integer state){
List<WorkOrder> list = null;
Criteria criteria = this.getSession().createCriteria(WorkOrder.class)
.addOrder(Order.desc("createTime"))
.setFirstResult(startResult).setMaxResults(maxResult);
if(domain!=null){
criteria.add(Restrictions.eq("domain", domain));
}
if(state!=null&&state>0){
criteria.add(Restrictions.eq("state", state));
}
list = (List<WorkOrder> )criteria.list();
return list;
}
/**
* 委办局下派工单分页信息
*/
@SuppressWarnings("unchecked")
public List<WorkOrder> findAllByDomain(List<Domain> userDomainList,int startResult, int maxResult,Domain domain,Integer state){
List<WorkOrder> list = null;
Criteria criteria = this.getSession().createCriteria(WorkOrder.class)
.addOrder(Order.desc("createTime"))
.setFirstResult(startResult).setMaxResults(maxResult);
if(domain!=null){
criteria.add(Restrictions.eq("domain", domain));
}
if(state!=null&&state>0){
criteria.add(Restrictions.eq("state", state));
}
if(userDomainList!=null){
criteria.add(Restrictions.in("domain", userDomainList));
}
list = (List<WorkOrder> )criteria.list();
return list;
}
/**
* 派工单查询记录总条数
*/
public int getCount(Domain domain,Integer state){
Criteria criteria =this.getSession().createCriteria(WorkOrder.class);
if(domain!=null){
criteria.add(Restrictions.eq("domain", domain));
}
if(state!=null&&state>0){
criteria.add(Restrictions.eq("state", state));
}
return criteria.list().size();
}
/**
* 委办局下派工单查询记录总条数
*/
public int getCountByDomain(List<Domain> userDomainList,Domain domain,Integer state){
Criteria criteria =this.getSession().createCriteria(WorkOrder.class);
if(domain!=null){
criteria.add(Restrictions.eq("domain", domain));
}
if(state!=null&&state>0){
criteria.add(Restrictions.eq("state", state));
}
if(userDomainList!=null){
criteria.add(Restrictions.in("domain", userDomainList));
}
return criteria.list().size();
}
@SuppressWarnings("unchecked")
public String findSN() {
String sn = "000000000";
String sql =" select max(sn) from WorkOrder";
List list=this.getHibernateTemplate().find(sql);
if(list!=null&&list.size()>0&&list.get(0)!=null){
sn=(String) list.get(0);
}
return sn;
}
@SuppressWarnings("unchecked")
public List<Roster> findOperator() {
List<Roster> list =this.getHibernateTemplate().find("from Roster");
return list;
}
@SuppressWarnings("unchecked")
public Roster findOperatorById(Integer id) {
Roster roster =null;
List<Roster> list =this.getHibernateTemplate().find("from Roster where id="+id);
if(list!=null&&list.size()>0){
roster = list.get(0);
}
return roster;
}
}