DOC

来源:互联网 发布:淘宝客佣金代扣款 编辑:程序博客网 时间:2024/04/29 23:09

package cn.cslg.shally.manager.impl;

import java.util.Date;
import java.util.List;
import java.util.Map;

import cn.cslg.shally.manager.DocumentManager;
import cn.cslg.shally.manager.JbpmFacede;
import cn.cslg.shally.model.ApptoveInfo;
import cn.cslg.shally.model.Document;
import cn.cslg.shally.model.User;
import cn.cslg.shally.model.WorkFlow;
import cn.cslg.shally.utils.AbstractPageModel;
import cn.cslg.shally.utils.PageModel;
import cn.cslg.shally.utils.SystemException;


public class DocumentManagerImpl extends AbstractPageModel implements DocumentManager {

 private JbpmFacede jbpmFacede;
 
 
 public JbpmFacede getJbpmFacede() {
  return jbpmFacede;
 }

 public void setJbpmFacede(JbpmFacede jbpmFacede) {
  this.jbpmFacede = jbpmFacede;
 }

 @Override
 public void addApptoveInfo(ApptoveInfo approveInfo, int documentId,
   int approverId, boolean back) {
  Document doc = (Document)getHibernateTemplate().load(Document.class, documentId);
  User user = (User)getHibernateTemplate().load(User.class, approverId);
  approveInfo.setDoc(doc);
  approveInfo.setApprover(user);
  getHibernateTemplate().save(approveInfo);
  
  //如果是驳回,则返回上一个节点
  if(back){
   Object[] os = jbpmFacede.backStep(doc.getProcessInstance(), user.getUsername());
   doc.setStatus((String)os[0]);
   doc.setProcessInstance((Long)os[1]);
   getHibernateTemplate().update(doc);
  } 

 }

 @Override
 public void addDocument(Document document, int workflowId, int userId,
   Map props) throws SystemException {
  document.setWorkFlow((WorkFlow)this.getHibernateTemplate().load(WorkFlow.class, workflowId));
  document.setCreator((User)this.getHibernateTemplate().load(User.class, userId));
  document.setCreateTime(new Date());
  document.setStatus(Document.STATUS_NEW);
  document.setPropertiesMap(props);
  getHibernateTemplate().save(document);
  
  //添加流程实例
  long processInstanceId=jbpmFacede.addProcessInstance(document.getWorkFlow().getName(), document);
  
  //绑定流程实例的标识到公文对象
  
  document.setProcessInstance(processInstanceId);
  this.getHibernateTemplate().update(document);
 }

 @Override
 public void delDocument(int documentId) {
  Document doc=(Document)this.getHibernateTemplate().load(Document.class, documentId);
  
  //删除公文信息
  
  this.getHibernateTemplate().delete(doc);
  
  //删除流程实例
  jbpmFacede.delProcessInstance(doc.getProcessInstance());

 }

 @Override
 public Document findDocment(int documentId) {
  return (Document)this.getHibernateTemplate().load(Document.class, documentId);

 }

 @Override
 public List searchApprovingDocuments(int userId) {
  
  User user=(User)this.getHibernateTemplate().load(User.class,userId);
  
  List taskLists=jbpmFacede.searchMyTaskList(user.getUsername());
  
  if(taskLists==null || taskLists.isEmpty()){
   
   return null;
  }
  
  return this.getSession().createQuery("select d from Document d where d.id in (:ids)").setParameter("ids",taskLists).list();
 }

 @Override
 public PageModel searchApptoDoc(int userId) throws SystemException {
  return super.search("select d from Document d where d.creator.id = ?", new Object[]{userId});
 }

 @Override
 public List searchDocApptoHistory(int documentId) {
  return getHibernateTemplate().find("from ApptoveInfo ai where ai.doc.id = ?", documentId);
 }

 @Override
 public PageModel searchDocuments(int userId) throws SystemException {
  return super.search("select d from Document d where d.creator.id = ?", new Object[]{userId});
 }

 @Override
 public List searchNextSteps(int documentId, int userId) {
  Document doc=(Document) this.getHibernateTemplate().load(Document.class, documentId);
  
  User user=(User)this.getHibernateTemplate().load(User.class, userId);
  
  String userName=user.getUsername();
  
  return jbpmFacede.searchNextTransitions(doc.getProcessInstance(), userName);
 }

 @Override
 public void submitToWorkflow(int userId, int documentId,
   String transistionName) {
  User user=(User) getHibernateTemplate().load(User.class, userId);
  
  Document doc=(Document)getHibernateTemplate().load(Document.class, documentId);
  
  long processInstanceId=doc.getProcessInstance();
  
  String status=jbpmFacede.nextStep(processInstanceId, user.getUsername(), transistionName);
  
  doc.setStatus(status);
  getHibernateTemplate().update(doc);

 }

 @Override
 public void updateDocument(Document document, int workflowId, int userId) {
  // TODO Auto-generated method stub

 }

}

原创粉丝点击