ActivitiTools.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. package cn.com.lzt.useractiviti.data.util;
  2. import cn.com.lzt.useractiviti.data.util.tools.DefaultActivitiTools;
  3. import com.lowagie.text.Element;
  4. import org.activiti.engine.ProcessEngine;
  5. import org.activiti.engine.ProcessEngines;
  6. import org.activiti.engine.history.HistoricProcessInstance;
  7. import org.apache.commons.lang.StringUtils;
  8. import org.jeecgframework.core.util.ApplicationContextUtil;
  9. import org.jeecgframework.web.system.service.SystemService;
  10. import org.jeecgframework.workflow.common.WorkFlowGlobals;
  11. import org.jeecgframework.workflow.pojo.base.TPProcess;
  12. import org.jeecgframework.workflow.pojo.base.TSBusConfig;
  13. import org.jeecgframework.workflow.processconfig.entity.TProcessBusconfigEntity;
  14. import org.springframework.context.ApplicationContext;
  15. import org.springframework.util.ClassUtils;
  16. import javax.servlet.http.HttpServletResponse;
  17. import java.util.Date;
  18. import java.util.List;
  19. import java.util.Map;
  20. public abstract class ActivitiTools {
  21. protected String procInstId;
  22. protected String busId;
  23. protected String title ;
  24. protected Date requestTime;
  25. protected String tableName;
  26. protected ActivitiPdfExport pdfExport;
  27. protected HistoricProcessInstance process;
  28. protected static SystemService systemService;
  29. static {
  30. ApplicationContext context = ApplicationContextUtil.getContext();
  31. systemService=context.getBean(SystemService.class);
  32. }
  33. public ActivitiTools(){
  34. pdfExport = new ActivitiPdfExport();
  35. }
  36. public List<Element> printElementList(){
  37. printBusinessInfo();
  38. printActivitiInfo();
  39. List<Element> list = pdfExport.getFinalList();
  40. return list;
  41. }
  42. public void exportToResponse(HttpServletResponse res) {
  43. printBusinessInfo();
  44. printActivitiInfo();
  45. pdfExport.export(res);
  46. }
  47. public void view(HttpServletResponse res) {
  48. printBusinessInfo();
  49. printActivitiInfo();
  50. pdfExport.view(res);
  51. }
  52. public static ActivitiTools getInstanceByConfigId(String configId){
  53. TProcessBusconfigEntity busconfigEntity = systemService.getEntity(TProcessBusconfigEntity.class,configId);
  54. String activitiConfigClass = busconfigEntity.getActivitiConfigClass();
  55. ActivitiTools tools = null;
  56. if(StringUtils.isBlank(activitiConfigClass)){//没有处理类
  57. tools = new DefaultActivitiTools();
  58. }else {
  59. try {
  60. Class<?> clazz = ClassUtils.forName(activitiConfigClass, ActivitiTools.class.getClassLoader());
  61. tools = (ActivitiTools) clazz.newInstance();
  62. } catch (ClassNotFoundException e) {
  63. e.printStackTrace();
  64. } catch (IllegalAccessException e) {
  65. e.printStackTrace();
  66. } catch (InstantiationException e) {
  67. e.printStackTrace();
  68. }
  69. }
  70. return tools;
  71. }
  72. public static ActivitiTools getInstance(String procInstId){
  73. return getInstance(procInstId,false);
  74. }
  75. public static ActivitiTools getInstance(String procInstId,boolean returnDefault){
  76. ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  77. // ProcessInstance process = processEngine.getRuntimeService()
  78. // .createProcessInstanceQuery().includeProcessVariables().processInstanceId(procInstId).singleResult();
  79. HistoricProcessInstance process = processEngine.getHistoryService()
  80. .createHistoricProcessInstanceQuery().includeProcessVariables()
  81. .processInstanceId(procInstId)
  82. .singleResult();
  83. String procDefId = null;
  84. String title = null;
  85. Date requestTime = null;
  86. String busId =null;
  87. if(process!=null){
  88. procDefId = process.getProcessDefinitionId();
  89. Map<String,Object> varMap = process.getProcessVariables();
  90. title = varMap.get(WorkFlowGlobals.BPM_BIZ_TITLE).toString();
  91. busId = process.getBusinessKey();
  92. requestTime = process.getStartTime();
  93. }
  94. if(StringUtils.isBlank(procDefId)){
  95. return null;
  96. }
  97. String procKey =procDefId.substring(0,20);
  98. //查流程
  99. TPProcess processEntity = systemService.findUniqueByProperty(TPProcess.class,"processkey",procKey);
  100. String processId = processEntity.getId();
  101. //查处理类
  102. TSBusConfig busConfig = systemService.findUniqueByProperty(TSBusConfig.class,"TPProcess.id",processId);
  103. String configId = busConfig.getConfigId();
  104. TProcessBusconfigEntity busconfigEntity = systemService.getEntity(TProcessBusconfigEntity.class,configId);
  105. String activitiConfigClass = busconfigEntity.getActivitiConfigClass();
  106. ActivitiTools tools = null;
  107. if(StringUtils.isBlank(activitiConfigClass)){//没有处理类
  108. if(returnDefault) {
  109. tools = new DefaultActivitiTools();
  110. }else {
  111. return null;
  112. }
  113. }else {
  114. try {
  115. Class<?> clazz = ClassUtils.forName(activitiConfigClass, ActivitiTools.class.getClassLoader());
  116. tools = (ActivitiTools) clazz.newInstance();
  117. } catch (ClassNotFoundException e) {
  118. e.printStackTrace();
  119. } catch (IllegalAccessException e) {
  120. e.printStackTrace();
  121. } catch (InstantiationException e) {
  122. e.printStackTrace();
  123. }
  124. }
  125. if(tools!=null) {
  126. tools.procInstId=procInstId;
  127. tools.busId = busId;
  128. tools.title = title;
  129. tools.requestTime=requestTime;
  130. tools.process = process;
  131. if(process.getDurationInMillis()!=null &&process.getDurationInMillis()>0) {
  132. //不是很严谨,但是前端控制只有流程中和审批通过能打印,撤回等操作不能打印
  133. tools.pdfExport.accessImg(true);
  134. }
  135. tools.tableName=busconfigEntity.getRealTablename();
  136. }
  137. return tools;
  138. }
  139. protected void printActivitiInfo(){
  140. pdfExport.title(title);
  141. pdfExport.requestTime(requestTime).procInstId(procInstId);
  142. }
  143. protected abstract void printBusinessInfo();
  144. public abstract String replaceProcessTitle(Map<String, Object> dataForm);
  145. protected boolean isProcessFinished(){
  146. if(process==null) return false;
  147. return process.getDurationInMillis()!=null &&process.getDurationInMillis()>0;
  148. }
  149. public String getProcInstId() {
  150. return procInstId;
  151. }
  152. public void setProcInstId(String procInstId) {
  153. this.procInstId = procInstId;
  154. }
  155. public String getBusId() {
  156. return busId;
  157. }
  158. public void setBusId(String busId) {
  159. this.busId = busId;
  160. }
  161. public ActivitiPdfExport getPdfExport() {
  162. return pdfExport;
  163. }
  164. public void setPdfExport(ActivitiPdfExport pdfExport) {
  165. this.pdfExport = pdfExport;
  166. }
  167. public String getTitle() {
  168. return title;
  169. }
  170. public void setTitle(String title) {
  171. this.title = title;
  172. }
  173. public Date getRequestTime() {
  174. return requestTime;
  175. }
  176. public void setRequestTime(Date requestTime) {
  177. this.requestTime = requestTime;
  178. }
  179. }