/** * */ package com.mvc.dao.impl; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Query; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; import com.base.enums.IsDelete; import com.mvc.dao.ReceiptDao; import com.mvc.entity.Receipt; /** * 收据 * * @author zjn * @date 2016年9月15日 */ @Repository("receiptDaoImpl") public class ReceiptDaoImpl implements ReceiptDao { @Autowired @Qualifier("entityManagerFactory") EntityManagerFactory emf; // 根据合同ID和页码查询该合同对应的所有收据 @SuppressWarnings("unchecked") public List<Receipt> findByPage(Integer cont_id, String searchKey, Integer offset, Integer end) { EntityManager em = emf.createEntityManager(); String selectSql = "select * from receipt where cont_id =:cont_id and rece_isdelete=:rece_isdelete"; if (null != searchKey) { selectSql += " and (rece_firm like '%" + searchKey + "%' )"; } selectSql += " order by rece_id desc limit :offset, :end"; Query query = em.createNativeQuery(selectSql, Receipt.class); query.setParameter("cont_id", cont_id); query.setParameter("rece_isdelete", IsDelete.NO.value); query.setParameter("offset", offset); query.setParameter("end", end); List<Receipt> list = query.getResultList(); em.close(); return list; } // 根据合同ID和搜索的关键字查询该合同对应的所有收据总条数 @SuppressWarnings("unchecked") public Integer countByParam(Integer cont_id, String searchKey) { EntityManager em = emf.createEntityManager(); String countSql = " select count(rece_id) from receipt where cont_id=:cont_id and rece_isdelete=:rece_isdelete"; if (null != searchKey) { countSql += " and (rece_firm like '%" + searchKey + "%' )"; } Query query = em.createNativeQuery(countSql); query.setParameter("cont_id", cont_id); query.setParameter("rece_isdelete", IsDelete.NO.value); List<Object> result = query.getResultList(); em.close(); return Integer.parseInt(result.get(0).toString()); } // 根据合同ID查询收据总金额 @SuppressWarnings("unchecked") public Float totalMoneyOfReceipt(Integer contId) { EntityManager em = emf.createEntityManager(); String countSql = " select coalesce(sum(rece_money),0) from receipt r where cont_id=:cont_id and rece_isdelete=:rece_isdelete"; Query query = em.createNativeQuery(countSql); query.setParameter("cont_id", contId); query.setParameter("rece_isdelete", IsDelete.NO.value); List<Object> result = query.getResultList(); em.close(); return Float.valueOf(result.get(0).toString()); } // 根据收据ID删除收据 public Boolean delete(Integer receId) { EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); try { String updateSql = " update receipt set rece_isdelete =:rece_isdelete where rece_id =:rece_id "; Query query = em.createNativeQuery(updateSql); query.setParameter("rece_id", receId); query.setParameter("rece_isdelete", IsDelete.YES.value); query.executeUpdate(); em.flush(); em.getTransaction().commit(); } finally { em.close(); } return true; } }