DocumentManagerImpl.java
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:4k
源码类别:

OA系统

开发平台:

Java

  1. package com.bjsxt.oa.managers.impl;
  2. import java.util.Date;
  3. import java.util.List;
  4. import com.bjsxt.oa.PagerModel;
  5. import com.bjsxt.oa.managers.DocumentManager;
  6. import com.bjsxt.oa.managers.WorkflowManager;
  7. import com.bjsxt.oa.model.ApproveInfo;
  8. import com.bjsxt.oa.model.Document;
  9. import com.bjsxt.oa.model.User;
  10. import com.bjsxt.oa.model.Workflow;
  11. public class DocumentManagerImpl extends AbstractManager implements
  12. DocumentManager {
  13. private WorkflowManager workflowManager;
  14. //审批
  15. public void addApproveInfo(ApproveInfo approveInfo, int documentId,
  16. int approverId) {
  17. approveInfo.setDocument((Document)getHibernateTemplate().load(Document.class, documentId));
  18. approveInfo.setApprover((User)getHibernateTemplate().load(User.class, approverId));
  19. getHibernateTemplate().save(approveInfo);
  20. }
  21. //添加公文
  22. public void addDocument(Document document, int workflowId, int userId) {
  23. //保存公文信息
  24. document.setWorkflow((Workflow)getHibernateTemplate().load(Workflow.class, workflowId));
  25. document.setCreator((User)getHibernateTemplate().load(User.class, userId));
  26. document.setStatus(Document.STATUS_NEW);
  27. document.setCreateTime(new Date());
  28. getHibernateTemplate().save(document);
  29. //添加流程实例
  30. long processInstanceId = workflowManager.addProcessInstance(document.getWorkflow().getName(), document.getId());
  31. //绑定流程实例的标识到公文对象
  32. document.setProcessInstanceId(processInstanceId);
  33. getHibernateTemplate().update(document);
  34. }
  35. //删除公文
  36. public void delDocument(int documentId) {
  37. Document document = (Document)getHibernateTemplate().load(Document.class, documentId);
  38. //删除公文信息
  39. getHibernateTemplate().delete(document);
  40. //删除流程实例
  41. workflowManager.delProcessInstance(document.getProcessInstanceId());
  42. //查找特定公文
  43. public Document findDocument(int documentId) {
  44. return (Document)getHibernateTemplate().load(Document.class, documentId);
  45. }
  46. //查找公文的审批历史
  47. public List searchApproveInfos(int documentId) {
  48. return getHibernateTemplate().find("from ApproveInfo ai where ai.document.id = ?", documentId);
  49. }
  50. //查找用户已审批过的公文
  51. public PagerModel searchApprovedDocuments(int userId) {
  52. return searchPaginated("select distinct ai.document from ApproveInfo ai where ai.approver.id = ?",userId);
  53. }
  54. //查找正在等待审批的公文
  55. public List searchApprovingDocuments(int userId) {
  56. User user = (User)getHibernateTemplate().load(User.class, userId);
  57. //搜索已流转到用户那里的公文标识列表
  58. List docIds = workflowManager.searchApprovingDocuments(user.getUsername());
  59. if(docIds == null || docIds.isEmpty()){
  60. return null;
  61. }
  62. //根据公文标识查找所有的公文对象
  63. return getSession()
  64. .createQuery("select d from Document d where d.id in (:ids)")
  65. .setParameterList("ids", docIds)
  66. .list();
  67. }
  68. //查找用户创建的所有公文
  69. public PagerModel searchMyDocuments(int userId) {
  70. return searchPaginated("select d from Document d where d.creator.id = ?", userId);
  71. }
  72. //提交到流程
  73. public void submitToWorkflow(int userId, int documentId, String transitionName) {
  74. User user = (User)getHibernateTemplate().load(User.class, userId);
  75. String username = user.getUsername();
  76. Document document = (Document)getHibernateTemplate().load(Document.class, documentId);
  77. long processInstanceId = document.getProcessInstanceId();
  78. String status = workflowManager.flowToNextStep(username, processInstanceId, transitionName);
  79. document.setStatus(status);
  80. getHibernateTemplate().update(document);
  81. }
  82. //更新公文信息
  83. public void updateDocument(Document document) {
  84. }
  85. public void setWorkflowManager(WorkflowManager workflowManager) {
  86. this.workflowManager = workflowManager;
  87. }
  88. }