package com.zhcs.dt.controller.activiti.rutask; import java.net.URLDecoder; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.shiro.session.Session; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.zhcs.dt.controller.activiti.AcBusinessController; import com.zhcs.dt.entity.Page; import com.zhcs.dt.service.activiti.hiprocdef.HiprocdefManager; import com.zhcs.dt.service.activiti.ruprocdef.RuprocdefManager; //import com.zhcs.dt.service.system.fhsms.FhsmsManager; import com.zhcs.dt.util.AppUtil; import com.zhcs.dt.util.Const; import com.zhcs.dt.util.DateUtil; import com.zhcs.dt.util.ImageAnd64Binary; import com.zhcs.dt.util.Jurisdiction; import com.zhcs.dt.util.PageData; import com.zhcs.dt.util.PathUtil; import com.zhcs.dt.util.Tools; /** * 说明:待办任务 * 创建人:FH Q313596790 * 修改时间:2018-02-10 */ @Controller @RequestMapping(value="/rutask") public class RuTaskController extends AcBusinessController { String menuUrl = "rutask/list.do"; //菜单地址(权限用) @Resource(name="ruprocdefService") private RuprocdefManager ruprocdefService; @Resource(name="hiprocdefService") private HiprocdefManager hiprocdefService; // @Resource(name="fhsmsService") // private FhsmsManager fhsmsService; /**待办任务列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表待办任务"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String lastStart = pd.getString("lastStart"); //开始时间 String lastEnd = pd.getString("lastEnd"); //结束时间 if(lastStart != null && !"".equals(lastStart)){ pd.put("lastStart", lastStart+" 00:00:00"); } if(lastEnd != null && !"".equals(lastEnd)){ pd.put("lastEnd", lastEnd+" 00:00:00"); } pd.put("USERNAME", Jurisdiction.getUsername()); //查询当前用户的任务(用户名查询) pd.put("RNUMBERS", Jurisdiction.getRnumbers()); //查询当前用户的任务(角色编码查询) page.setPd(pd); List varList = ruprocdefService.list(page); //列出Rutask列表 for(int i=0;i map = new HashMap(); pd.put("USERNAME", Jurisdiction.getUsername()); //查询当前用户的任务(用户名查询) pd.put("RNUMBERS", Jurisdiction.getRnumbers()); //查询当前用户的任务(角色编码查询) page.setPd(pd); page.setShowCount(5); List varList = ruprocdefService.list(page); //列出Rutask列表 List pdList = new ArrayList(); for(int i=0;i varList = ruprocdefService.varList(pd); //列出流程变量列表 List hitaskList = ruprocdefService.hiTaskList(pd); //历史任务节点列表 for(int i=0;i map = new LinkedHashMap(); String OPINION = sfrom + Jurisdiction.getU_name() + ",fh,"+pd.getString("OPINION");//审批人的姓名+审批意见 String msg = pd.getString("msg"); if("yes".equals(msg)){ //批准 map.put("审批结果", "【批准】" + OPINION); //审批结果 setVariablesByTaskIdAsMap(taskId,map); //设置流程变量 setVariablesByTaskId(taskId,"RESULT","批准"); completeMyPersonalTask(taskId); }else{ //驳回 map.put("审批结果", "【驳回】" + OPINION); //审批结果 setVariablesByTaskIdAsMap(taskId,map); //设置流程变量 setVariablesByTaskId(taskId,"RESULT","驳回"); completeMyPersonalTask(taskId); } try{ removeVariablesByPROC_INST_ID_(pd.getString("PROC_INST_ID_"),"RESULT"); //移除流程变量(从正在运行中) }catch(Exception e){ /*此流程变量在历史中**/ } try{ String ASSIGNEE_ = pd.getString("ASSIGNEE_"); //下一待办对象 if(Tools.notEmpty(ASSIGNEE_)){ setAssignee(session.getAttribute("TASKID").toString(),ASSIGNEE_); //指定下一任务待办对象 }else{ Object os = session.getAttribute("YAssignee"); if(null != os && !"".equals(os.toString())){ ASSIGNEE_ = os.toString(); //没有指定就是默认流程的待办人 }else{ trySendSms(mv,pd); //没有任务监听时,默认流程结束,发送站内信给任务发起人 } } mv.addObject("ASSIGNEE_",ASSIGNEE_); //用于给待办人发送新任务消息 }catch(Exception e){ /*手动指定下一待办人,才会触发此异常。 * 任务结束不需要指定下一步办理人了,发送站内信通知任务发起人**/ trySendSms(mv,pd); } mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**尝试站内信 * @param mv * @param pd * @throws Exception */ public void trySendSms(ModelAndView mv,PageData pd)throws Exception{ List hivarList = hiprocdefService.hivarList(pd); //列出历史流程变量列表 for(int i=0;i