package com.norteksoft.task.service; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.task.base.enumeration.TaskCategory; import com.norteksoft.task.base.enumeration.TaskProcessingMode; import com.norteksoft.task.base.enumeration.TaskProcessingResult; import com.norteksoft.task.dao.HistoryWorkflowTaskDao; import com.norteksoft.task.entity.HistoryWorkflowTask; import com.norteksoft.task.entity.TaskMark; @Service @Transactional public class HistoryWorkflowTaskManager { private Log log = LogFactory.getLog(HistoryWorkflowTaskManager.class); @Autowired private HistoryWorkflowTaskDao historyWorkflowTaskDao; public HistoryWorkflowTask getHistoryWorkflowTask(Long id) { return historyWorkflowTaskDao.get(id); } /** * 获得所有流程名称 * @param taskCategory * @return */ public List<Object[]> getGroupNames(String taskCategory) { if(TaskCategory.COMPLETE.equals(taskCategory)){ return historyWorkflowTaskDao.getAllCompleteTaskGroupNames(); }else { return historyWorkflowTaskDao.getAllCancelTaskGroupNames(); } } /** * 获得所有流程自定义类别 * @param taskCategory * @return */ public List<Object[]> getCustomTypes(String taskCategory){ if(TaskCategory.COMPLETE.equals(taskCategory)){ return historyWorkflowTaskDao.getAllCompleteTaskCustomTypes(); }else { return historyWorkflowTaskDao.getAllCancelTaskCustomTypes(); } } /** * 获得所有任务类型 * @param taskCategory * @return */ public List<Object[]> getTypeInfos(String taskCategory) { if(TaskCategory.COMPLETE.equals(taskCategory)){ return historyWorkflowTaskDao.getAllCompleteTaskTypeInfos(); }else { return historyWorkflowTaskDao.getAllCancelTaskTypeInfos(); } } /** * 根据办理人获得任务数目 * @param taskCategory * @return */ public Integer getAllTaskNumByUser(String taskCategory) { if(TaskCategory.COMPLETE.equals(taskCategory)){ return historyWorkflowTaskDao.getAllCompleteTasksNum(); }else { return historyWorkflowTaskDao.getAllCancelTasksNum(); } } /** * 根据流程名称分页查询用户所有已完成任务 * @param page * @param typeName */ public void getCompletedTasksByGroupName(Page<HistoryWorkflowTask> page,String typeName) { historyWorkflowTaskDao.getCompletedTasksByGroupName(page,typeName); } /** * 根据自定义类型分页查询用户所有已完成任务 * @param page * @param typeName */ public void getCompletedTasksByCustomType(Page<HistoryWorkflowTask> page,String typeName) { historyWorkflowTaskDao.getCompletedTasksByCustomType(page,typeName); } /** * 分页查询用户已完成任务 * @param page * @param typeName */ public void getCompletedTasksByUserType(Page<HistoryWorkflowTask> page,String typeName) { historyWorkflowTaskDao.getCompletedTasksByUserType(page,typeName); } /** * 根据流程名称分页查询用户所有已取消任务 * @param page * @param typeName */ public void getCancelTasksByGroupName(Page<HistoryWorkflowTask> page,String typeName) { historyWorkflowTaskDao.getCancelTasksByGroupName(page,typeName); } /** * 根据自定义类型分页查询用户所有已取消任务 * @param page * @param typeName */ public void getCancelTasksByCustomType(Page<HistoryWorkflowTask> page,String typeName) { historyWorkflowTaskDao.getCancelTasksByCustomType(page,typeName); } /** * 分页查询用户已取消任务 * @param page * @param typeName */ public void getCanceledTasksByUserType(Page<HistoryWorkflowTask> page,String typeName) { historyWorkflowTaskDao.getCanceledTasksByUserType(page,typeName); } /** * 改变任务标识 * @param taskId * @param taskMarks */ public void changeTaskMark(long taskId, TaskMark taskMark) { HistoryWorkflowTask task = getHistoryWorkflowTask(taskId); switch(taskMark) { case RED: task.setTaskMark(TaskMark.RED); break; case BLUE: task.setTaskMark(TaskMark.BLUE); break; case YELLOW: task.setTaskMark(TaskMark.YELLOW); break; case GREEN: task.setTaskMark(TaskMark.GREEN); break; case ORANGE: task.setTaskMark(TaskMark.ORANGE); break; case PURPLE: task.setTaskMark(TaskMark.PURPLE); break; case CANCEL: task.setTaskMark(TaskMark.CANCEL); break; default: } historyWorkflowTaskDao.save(task); } public HistoryWorkflowTask getTask(Long taskId){ return historyWorkflowTaskDao.getTask(taskId); } public HistoryWorkflowTask getTaskBySourceTaskId(Long taskId){ return historyWorkflowTaskDao.getTaskBySourceTaskId(taskId); } public List<String> getCountersignByProcessInstanceId(String processInstanceId,TaskProcessingMode processingMode){ return historyWorkflowTaskDao.getCountersignByProcessInstanceId(processInstanceId, processingMode); } /** * 根据办理结果查询环节 */ public List<HistoryWorkflowTask> getCountersignByProcessInstanceIdResult(String processInstanceId,String taskName,TaskProcessingResult result){ return historyWorkflowTaskDao.getCountersignByProcessInstanceIdResult(processInstanceId, taskName, result); } /** * 获得审批任务组数 * @param processInstanceId * @param taskName * @param result * @return */ public List<Integer> getGroupNumByTaskName(String processInstanceId,String taskName){ return historyWorkflowTaskDao.getGroupNumByTaskName(processInstanceId, taskName); } /** * 根据实力id删除historyTask * @param taskId * @param taskMarks */ public void deleteHistoryTaskByProcessId(String processInstanceId, Long companyId) { historyWorkflowTaskDao.deleteHistoryTaskByProcessId(processInstanceId, companyId); } /** * 保存历史任务 * @param historyWorkflowTask */ public void saveHistoryWorkflowTask(HistoryWorkflowTask historyWorkflowTask) { historyWorkflowTaskDao.save(historyWorkflowTask); } public Page<HistoryWorkflowTask> getTaskAsTrustee(Long companyId, Page<HistoryWorkflowTask> tasks, String loginName,Long userId, Boolean isEnd) { return historyWorkflowTaskDao.getTaskAsTrustee(companyId, loginName,userId, tasks, isEnd); } /** * 根据流程名字和实例id查询workflowTask * @param instanceId * @param taskName * @return */ public List<HistoryWorkflowTask> getWorkflowTasks(String instanceId, String taskName) { return historyWorkflowTaskDao.getWorkflowTasks(instanceId, taskName); } public Page<HistoryWorkflowTask> getHistoryDelegateTasksByActive( Long companyId, String loginName,Long userId, Page<HistoryWorkflowTask> historyTasks) { return historyWorkflowTaskDao.getHistoryDelegateTasksByActive(companyId, loginName,userId, historyTasks); } /** * 查找公司中所有的超期任务,包括已完成的任务 * @param companyId * @return */ public List<HistoryWorkflowTask> getTotalOverdueTasks() { Assert.notNull(ContextUtils.getCompanyId(),"公司id不能为null"); return historyWorkflowTaskDao.getTotalOverdueTasks(ContextUtils.getCompanyId()); } public List<String> getTransactorsExceptTask(Long taskId) { if(taskId==null)return null; HistoryWorkflowTask task=getTask(taskId); return historyWorkflowTaskDao.getTransactorsExceptTask(task); } public Set<String> getHandledTransactors(String instanceId){ Assert.notNull(instanceId,"流程实例Id不能为null"); return new HashSet<String>(historyWorkflowTaskDao.getHandledTransactors(instanceId)); } public List<HistoryWorkflowTask> getTaskByTransactor(String transactor,String workflowId){ return historyWorkflowTaskDao.getTaskByTransactor(transactor, workflowId); } public List<HistoryWorkflowTask> getTaskByTransactor(Long userId,String workflowId){ return historyWorkflowTaskDao.getTaskByTransactor(userId, workflowId); } }