| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- package com.jeecg.qianbao.util;
- import org.activiti.engine.task.Task;
- import org.apache.log4j.Logger;
- import org.jeecgframework.core.util.ApplicationContextUtil;
- import org.jeecgframework.core.util.StringUtil;
- import org.jeecgframework.core.util.oConvertUtils;
- import org.jeecgframework.workflow.pojo.base.TPProcesspro;
- import org.jeecgframework.workflow.service.ActivitiService;
- import javax.servlet.http.HttpServletRequest;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- *
- * 类名:FormProcUtil
- *
- */
- public class FormProcUtil {
- private static final Logger logger = Logger.getLogger(FormProcUtil.class);
-
-
- /**
- * 初始化表单参数
- * @param request
- */
- public static void initFormParam(HttpServletRequest request){
- //初始化form表单参数
- commonParam(request);
- //初始化工作流相关参数
- initWorkflowParam(request);
- //初始节点变量
- initProcessnodeVar(request);
- }
- //参数透传处理
- private static void commonParam(HttpServletRequest request){
- Map<String,String[]> paramMap = request.getParameterMap();
- for(Map.Entry<String, String[]> entry:paramMap.entrySet()){
- String[] value = entry.getValue();
- String valueStr = "";
- if(value!=null&&value.length>0){
- valueStr = value[0];
- }
- request.setAttribute(entry.getKey(), valueStr);
- }
- }
-
- //工作流按钮信息处理
- @SuppressWarnings({ "rawtypes", "unchecked" })
- public static void initWorkflowParam(HttpServletRequest request){
- ActivitiService activitiService = ApplicationContextUtil.getContext().getBean(ActivitiService.class);
- String taskId = oConvertUtils.getString(request.getParameter("taskId"));
- //----add by peng.wang 2017-08-18 兼容类似物料计划这样的页面的驳回情况----Start
- if(taskId.equals("")){
- taskId = (String) request.getAttribute("taskId");
- }
- //----add by peng.wang 2017-08-18 兼容类似物料计划这样的页面的驳回情况----End
- //流程下一步节点操作
- Task task = activitiService.getTask(taskId);
- if(task==null) return;
- List<Map> transList = activitiService.getOutTransitions(taskId);
- //判断一下任务节点后续的分支,是否只有一个,如果是且分支的路线中文名字没有的话,默认为提交
- if(transList.size()==1){
- for(Map t:transList){
- String name = (String)t.get("Transition");
- if(StringUtil.isEmpty(name)||name.startsWith("flow")){
- t.put("Transition", "下一步");
- }
- }
- }
- List<Map> newlist = new ArrayList<Map>();
- // 解决驳回在前, 通过在后的问题
- if(transList.size() == 2) {
- Map map1 = transList.get(0);
- Map map2 = transList.get(1);
- if("驳回".equals((String)map1.get("Transition")) && "通过".equals((String)map2.get("Transition"))) {
- newlist.add(map2);
- newlist.add(map1);
- request.setAttribute("transitionList", newlist);
- }
- }
- if(newlist.size() != transList.size()) {
- //流程分支
- request.setAttribute("transitionList", transList);
- }
- //下一步节点数目
- request.setAttribute("nextCodeCount", transList==null?0:transList.size());
-
- }
-
- //初始化节点变量
- private static void initProcessnodeVar(HttpServletRequest request){
- String taskId = oConvertUtils.getString(request.getParameter("taskId"));
- //----add by peng.wang 2017-08-18 兼容类似物料计划这样的页面的驳回情况----Start
- if(taskId.equals("")){
- taskId = (String) request.getAttribute("taskId");
- }
- //----add by peng.wang 2017-08-18 兼容类似物料计划这样的页面的驳回情况----End
- ActivitiService activitiService = ApplicationContextUtil.getContext().getBean(ActivitiService.class);
- Map<String,String> map = new HashMap<String, String>();
- //根据节点ID 查询节点变量配置
- Task task = activitiService.getTask(taskId);
- String nodeid = task.getTaskDefinitionKey();
- String hql = "from TPProcesspro where TPProcessnode.processnodecode =? and processprotype = 'default'";
- List<TPProcesspro> list = activitiService.findHql(hql, nodeid);
- if(list!=null&&list.size()>0){
- for(TPProcesspro processpro:list){
- map.put(processpro.getProcessprokey(), processpro.getProcessprovalue());
- }
- }
- request.setAttribute("nodeVariables", map);
- }
-
- }
|