ProcdefController.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. package com.zhcs.dt.controller.activiti.procdef;
  2. import java.io.PrintWriter;
  3. import java.net.URLDecoder;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import javax.annotation.Resource;
  9. import javax.servlet.http.HttpServletResponse;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestParam;
  13. import org.springframework.web.bind.annotation.ResponseBody;
  14. import org.springframework.web.multipart.MultipartFile;
  15. import org.springframework.web.servlet.ModelAndView;
  16. import com.zhcs.dt.controller.activiti.AcBaseController;
  17. import com.zhcs.dt.entity.Page;
  18. import com.zhcs.dt.service.activiti.procdef.ProcdefManager;
  19. import com.zhcs.dt.service.activiti.ruprocdef.RuprocdefManager;
  20. import com.zhcs.dt.util.AppUtil;
  21. import com.zhcs.dt.util.Const;
  22. import com.zhcs.dt.util.FileDownload;
  23. import com.zhcs.dt.util.FileUpload;
  24. import com.zhcs.dt.util.FileZip;
  25. import com.zhcs.dt.util.ImageAnd64Binary;
  26. import com.zhcs.dt.util.Jurisdiction;
  27. import com.zhcs.dt.util.PageData;
  28. import com.zhcs.dt.util.PathUtil;
  29. import com.zhcs.dt.util.Tools;
  30. /**
  31. * 说明:流程管理
  32. * 创建人:FH Admin Q313596790
  33. * 创建时间:2018-01-06
  34. */
  35. @Controller
  36. @RequestMapping(value="/procdef")
  37. public class ProcdefController extends AcBaseController {
  38. String menuUrl = "procdef/list.do"; //菜单地址(权限用)
  39. @Resource(name="procdefService")
  40. private ProcdefManager procdefService;
  41. @Resource(name="ruprocdefService")
  42. private RuprocdefManager ruprocdefService;
  43. /**列表
  44. * @param page
  45. * @throws Exception
  46. */
  47. @RequestMapping(value="/list")
  48. public ModelAndView list(Page page) throws Exception{
  49. //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
  50. ModelAndView mv = this.getModelAndView();
  51. PageData pd = new PageData();
  52. pd = this.getPageData();
  53. String keywords = pd.getString("keywords"); //关键词检索条件
  54. if(null != keywords && !"".equals(keywords)){
  55. pd.put("keywords", keywords.trim());
  56. }
  57. String lastStart = pd.getString("lastStart"); //开始时间
  58. String lastEnd = pd.getString("lastEnd"); //结束时间
  59. if(lastStart != null && !"".equals(lastStart)){
  60. pd.put("lastStart", lastStart+" 00:00:00");
  61. }
  62. if(lastEnd != null && !"".equals(lastEnd)){
  63. pd.put("lastEnd", lastEnd+" 00:00:00");
  64. }
  65. page.setPd(pd);
  66. List<PageData> varList = procdefService.list(page); //列出Procdef列表
  67. mv.setViewName("activiti/procdef/procdef_list");
  68. mv.addObject("varList", varList);
  69. mv.addObject("pd", pd);
  70. mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
  71. return mv;
  72. }
  73. /**去预览XML页面
  74. * @param
  75. * @throws Exception
  76. */
  77. @RequestMapping(value="/goViewXml")
  78. public ModelAndView goViewXml()throws Exception{
  79. ModelAndView mv = this.getModelAndView();
  80. PageData pd = new PageData();
  81. pd = this.getPageData();
  82. String DEPLOYMENT_ID_ = pd.getString("DEPLOYMENT_ID_"); //部署ID
  83. createXmlAndPng(DEPLOYMENT_ID_); //生成XML和PNG
  84. String code = Tools.readTxtFileAll(Const.FILEACTIVITI+URLDecoder.decode(pd.getString("FILENAME"), "UTF-8"),"utf-8");
  85. pd.put("code", code);
  86. mv.setViewName("activiti/fhmodel/xml_view");
  87. mv.addObject("pd", pd);
  88. return mv;
  89. }
  90. /**去预览PNG页面
  91. * @param
  92. * @throws Exception
  93. */
  94. @RequestMapping(value="/goViewPng")
  95. public ModelAndView goViewPng()throws Exception{
  96. ModelAndView mv = this.getModelAndView();
  97. PageData pd = new PageData();
  98. pd = this.getPageData();
  99. String DEPLOYMENT_ID_ = pd.getString("DEPLOYMENT_ID_"); //部署ID
  100. createXmlAndPng(DEPLOYMENT_ID_); //生成XML和PNG
  101. String FILENAME = URLDecoder.decode(pd.getString("FILENAME"), "UTF-8");
  102. pd.put("FILENAME", FILENAME);
  103. String imgSrcPath = PathUtil.getClasspath()+Const.FILEACTIVITI+FILENAME;
  104. pd.put("imgSrc", "data:image/jpeg;base64,"+ImageAnd64Binary.getImageStr(imgSrcPath)); //解决图片src中文乱码,把图片转成base64格式显示(这样就不用修改tomcat的配置了)
  105. mv.setViewName("activiti/procdef/png_view");
  106. mv.addObject("pd", pd);
  107. return mv;
  108. }
  109. /**打包下载xml和png
  110. * @param response
  111. * @throws Exception
  112. */
  113. @RequestMapping(value="/download")
  114. public void download(HttpServletResponse response)throws Exception{
  115. PageData pd = new PageData();
  116. pd = this.getPageData();
  117. String DEPLOYMENT_ID_ = pd.getString("DEPLOYMENT_ID_"); //部署ID
  118. createXmlAndPng(DEPLOYMENT_ID_); //生成XML和PNG
  119. /*生成的全部代码压缩成zip文件*/
  120. if(FileZip.zip(PathUtil.getClasspath()+"uploadFiles/activitiFile", PathUtil.getClasspath()+"uploadFiles/activitiFile.zip")){
  121. /*下载代码*/
  122. FileDownload.fileDownload(response, PathUtil.getClasspath()+"uploadFiles/activitiFile.zip", "activitiFile.zip");
  123. }
  124. }
  125. /**打开上传流程页面
  126. * @return
  127. * @throws Exception
  128. */
  129. @RequestMapping(value="/goUploadPro")
  130. public ModelAndView goUploadPro()throws Exception{
  131. ModelAndView mv = this.getModelAndView();
  132. mv.setViewName("activiti/procdef/procdef_upload");
  133. return mv;
  134. }
  135. /**导入流程
  136. * @param file
  137. * @return
  138. * @throws Exception
  139. */
  140. @RequestMapping(value="/uploadPro")
  141. public ModelAndView readExcel(
  142. @RequestParam(value="zip",required=false) MultipartFile file
  143. ){
  144. ModelAndView mv = this.getModelAndView();
  145. if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;}
  146. if (null != file && !file.isEmpty()) {
  147. String filePath = PathUtil.getClasspath() + Const.FILEACTIVITI; //文件上传路径
  148. String fileName = FileUpload.fileUp(file, filePath, "proFile"); //执行上传
  149. try {
  150. deploymentProcessDefinitionFromZip("FHPRO", filePath+fileName);
  151. } catch (Exception e) {
  152. mv.addObject("errer", "errer");
  153. mv.addObject("msgContent", "文件资源不符合流程标准( 或缺少 xml or png )");
  154. }
  155. }
  156. mv.setViewName("save_result");
  157. return mv;
  158. }
  159. /**激活or挂起流程实例
  160. * @return
  161. * @throws Exception
  162. */
  163. @RequestMapping(value="/onoffPro")
  164. @ResponseBody
  165. public Object onoffProcessDefinition()throws Exception{
  166. if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
  167. PageData pd = new PageData();
  168. Map<String,Object> map = new HashMap<String,Object>();
  169. pd = this.getPageData();
  170. int STATUS = Integer.parseInt(pd.get("STATUS").toString());
  171. String ID_ = pd.getString("ID_");
  172. if(STATUS == 2){
  173. pd.put("STATUS", 1); //挂起前先把此流程的所有任务状态设置成激活状态
  174. ruprocdefService.onoffAllTask(pd);
  175. suspendProcessDefinitionById(ID_); //挂起流程实例
  176. }else{
  177. pd.put("STATUS", 2); //激活前先把此流程的所有任务状态设置成挂起状态
  178. ruprocdefService.onoffAllTask(pd);
  179. activateProcessDefinitionById(ID_); //激活流程实例
  180. }
  181. map.put("msg", "ok"); //返回结果
  182. return AppUtil.returnObject(pd, map);
  183. }
  184. /**删除
  185. * @param out
  186. * @throws Exception
  187. */
  188. @RequestMapping(value="/delete")
  189. public void delete(PrintWriter out) throws Exception{
  190. if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
  191. PageData pd = new PageData();
  192. pd = this.getPageData();
  193. String DEPLOYMENT_ID_ = pd.getString("DEPLOYMENT_ID_"); //部署ID
  194. deleteDeployment(DEPLOYMENT_ID_);
  195. out.write("success");
  196. out.close();
  197. }
  198. /**批量删除
  199. * @param
  200. * @throws Exception
  201. */
  202. @RequestMapping(value="/deleteAll")
  203. @ResponseBody
  204. public Object deleteAll() throws Exception{
  205. if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
  206. PageData pd = new PageData();
  207. Map<String,Object> map = new HashMap<String,Object>();
  208. pd = this.getPageData();
  209. List<PageData> pdList = new ArrayList<PageData>();
  210. String DATA_IDS = pd.getString("DATA_IDS");
  211. if(null != DATA_IDS && !"".equals(DATA_IDS)){
  212. String ArrayDATA_IDS[] = DATA_IDS.split(",");
  213. for(int i=0;i<ArrayDATA_IDS.length;i++){
  214. deleteDeployment(ArrayDATA_IDS[i]);
  215. }
  216. pd.put("msg", "ok");
  217. }else{
  218. pd.put("msg", "no");
  219. }
  220. pdList.add(pd);
  221. map.put("list", pdList);
  222. return AppUtil.returnObject(pd, map);
  223. }
  224. }