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.TaskStatus; import com.mvc.dao.TaskDao; import com.mvc.entity.Task; import com.mvc.repository.SubTaskRepository; import com.mvc.repository.TaskRepository; /** * 文书任务 * * @author wanghuimin * @date 2016年9月9日 */ @Repository("taskDaoImpl") public class TaskDaoImpl implements TaskDao { @Autowired @Qualifier("entityManagerFactory") EntityManagerFactory emf; @Autowired TaskRepository taskRepository; @Autowired SubTaskRepository subTaskRepository; // 根据任务id修改状态 public boolean delete(Integer id) { EntityManager em = emf.createEntityManager(); try { em.getTransaction().begin(); String selectSql = "update task set `task_isdelete` = 1 where task_id =:task_id"; Query query = em.createNativeQuery(selectSql); query.setParameter("task_id", id); query.executeUpdate(); em.flush(); em.getTransaction().commit(); } finally { em.close(); } return true; } // 根据任务id修改状态 public boolean updateState(Integer id, Integer state) { EntityManager em = emf.createEntityManager(); try { em.getTransaction().begin(); String selectSql = " update task set `task_state` = :task_state where task_id =:task_id "; Query query = em.createNativeQuery(selectSql); query.setParameter("task_state", state); query.setParameter("task_id", id); query.executeUpdate(); em.flush(); em.getTransaction().commit(); } finally { em.close(); } return true; } // 根据页数,状态,关键字返回任务列表 @SuppressWarnings("unchecked") public List<Task> findByPage(Integer user_id, Integer task_state, String searchKey, Integer offset, Integer end, Integer sendOrReceive) { EntityManager em = emf.createEntityManager(); String selectSql = ""; // task_state == -1表示查询所有状态任务,否则按状态查找 if (task_state == -1) { // 0表示发送,1表示接收 if (sendOrReceive == 1) { selectSql = "select * from task where receiver_id =:user_id and task_isdelete=0"; } else { selectSql = "select * from task where creator_id =:user_id and task_isdelete=0"; } } else { // 0表示发送,1表示接收 if (sendOrReceive == 1) { selectSql = "select * from task where receiver_id =:user_id and task_state=:task_state and task_isdelete=0"; } else { selectSql = "select * from task where creator_id =:user_id and task_state=:task_state and task_isdelete=0"; } } // 判断查找关键字是否为空 if (null != searchKey) { selectSql += " and ( task_content like '%" + searchKey + "%' )"; } selectSql += " order by task_id desc limit :offset, :end"; Query query = em.createNativeQuery(selectSql, Task.class); query.setParameter("user_id", user_id); if (task_state != -1) { query.setParameter("task_state", task_state); } query.setParameter("offset", offset); query.setParameter("end", end); List<Task> list = query.getResultList(); em.close(); return list; } // 根据状态,关键字查询任务总条数 @SuppressWarnings("unchecked") public Integer countByParam(Integer user_id, Integer task_state, String searchKey, Integer sendOrReceive) { EntityManager em = emf.createEntityManager(); String countSql = ""; // task_state == -1表示查询所有状态任务,否则按状态查找 if (task_state == -1) { // 0表示发送,1表示接收 if (sendOrReceive == 1) { countSql = "select count(task_id) from task where task_isdelete=0 and receiver_id=:user_id"; } else { countSql = "select count(task_id) from task where task_isdelete=0 and creator_id=:user_id"; } } else { // 0表示发送,1表示接收 if (sendOrReceive == 1) { countSql = " select count(task_id) from task where task_isdelete=0 and task_state=:task_state and receiver_id=:user_id"; } else { countSql = " select count(task_id) from task where task_isdelete=0 and task_state=:task_state and creator_id=:user_id "; } } if (null != searchKey) { countSql += " and (task_content like '%" + searchKey + "%' )"; } Query query = em.createNativeQuery(countSql); query.setParameter("user_id", user_id); if (task_state != -1) { query.setParameter("task_state", task_state); } List<Object> totalRow = query.getResultList(); em.close(); return Integer.parseInt(totalRow.get(0).toString()); } // 根据合同ID和任务类型返回任务列表 @SuppressWarnings("unchecked") public List<Task> findByContIdAndType(Integer user_id, Integer contId, Integer taskType) { EntityManager em = emf.createEntityManager(); String selectSql = "select * from task where creator_id =:user_id and task_type=:task_type and cont_id=:cont_id and task_isdelete=0"; selectSql += " order by task_id desc "; Query query = em.createNativeQuery(selectSql, Task.class); query.setParameter("user_id", user_id); query.setParameter("task_type", taskType); query.setParameter("cont_id", contId); List<Task> list = query.getResultList(); em.close(); return list; } // 根据任务类型获取任务条数 @SuppressWarnings("unchecked") public Integer countByType(Integer userId, Integer taskType) { EntityManager em = emf.createEntityManager(); String countSql = " select count(task_id) from task where task_isdelete=0 and task_state=:task_state and receiver_id=:user_id and task_type=:task_type "; Query query = em.createNativeQuery(countSql); query.setParameter("task_state", TaskStatus.waitingReceipt.value); query.setParameter("user_id", userId); query.setParameter("task_type", taskType); List<Object> totalRow = query.getResultList(); em.close(); return Integer.parseInt(totalRow.get(0).toString()); } }