在需要做流程
的实体类加入workflow_id
(工作流id)approve_opinion
(审批意见)字段
//流程必要参数Spring注入
private String formKey;
private long formValue;
private MyTask myTask;
@Autowired
private ActivitiService activitiService;
/**
* 跳转到申请列表
* @return
*/
public String forwordList() {
return "forwordList";
}
/**
* 跳转申请详情页面
* @return
*/
public String forwordView() {
peopleHolidayMode = peopleHolidayService.selectCadreModebyId(peopleHolidayMode.getId());
return "forwordView";
}
/**
* 跳转到审批历史列表
* @return
*/
public String forwordAuditHisList() {
return "forwordAuditHisList";
}
/**
* 跳转到审批页面
* @return
*/
public String forwordAudit() {
SysUser sysUser = (SysUser) ActionContext.getContext().getSession().get("sysUser");
isHandWritting = handWrittingService.isHandWritting(sysUser.getPeopleId());//判断是否需要手写板签字
peopleList = cadreInfoService.findCadreInfos(sysUser.getDeptId());
peopleHoliday = peopleHolidayService.selectPeopleHolidaybyId(peopleHolidayMode.getId());
peopleHolidayMode = peopleHolidayService.selectCadreModebyId(peopleHolidayMode.getId());
myTask = activitiService.findTaskIdByBusinessKey(peopleHoliday.getSplcname(), String.valueOf(peopleHolidayMode.getId()));
id = Long.parseLong(myTask.getExecutionId());
return "forwordAudit";
}
/**
* 获取流程申请列表信息
* @return
*/
public String ajaxList() {
SysUser sysUser = (SysUser) ActionContext.getContext().getSession().get("sysUser");
StringBuffer sql = new StringBuffer("select *,case when marital_status=0 then '未婚' else '已婚' end as m,case when type=0 then '事假' else '探亲' end as t,case when ensure=0 then '否' else '是' end as e,case when is_witharmy=0 then '否' else '是' end as i from view_holiday WHERE 1=1 ");
if (flag == true)
sql.append(" and holiday_flag=0");
else
sql.append(" and holiday_flag=1");
json = customQueryService.getCustomQueryData("(" + sql.toString() + ") t", sysUser.getDeptId());
return AJAX;
}
/**
* 启动流程
* @return
* @throws Exception
*/
public String ajaxStartFlow() throws Exception {
currentYear = Calendar.getInstance().get(Calendar.YEAR);
peopleHoliday = peopleHolidayService.selectPeopleHolidaybyId(peopleHoliday.getId());
peopleHolidayMode = peopleHolidayService.selectPeopleHolidayModebyId(peopleHoliday.getId());
SysUser sysUser = (SysUser) StrutsUtils.getObjectFromSession("sysUser");
// 依据单位类型区分流程启动时的走向
Map mapValues = new HashMap();
mapValues.put("realName", sysUser.getUserName());
// if(peopleHolidayMode.getDepttype()==0){
// mapValues.put("lx", "200");//100机关干部;200基层干部
// }else{
// mapValues.put("lx", "100");//100机关干部;200基层干部
// }
// 依据单位类型区分流启动时的走向
// 启动流程
String processId = activitiService.startProcess(peopleHoliday.getSplcname(), peopleHoliday.getId() + "", sysUser, mapValues);
// 流程启动并发送短消息
// activitiService.startTask(,processId,name);
// 提交流程,返回的状态值
String act_status = activitiService.findStatusByProcessInstanceId(processId);
// 流程ID
peopleHoliday.setWorkflow_id(Long.parseLong(processId));
// 流程状态
peopleHoliday.setApprove_status(act_status);
peopleHolidayService.updatePeopleHoliday(peopleHoliday);
// 发送审批消息
PeopleMessage ps = new PeopleMessage();
ps.setMessage_title("干部休假流程");
ps.setSend_type(5);
ps.setMessage_content("您有一条干部休假申请待处理");
ps.setMessage_name("处理");
ps.setMessage_url("holiday/holiday!forwordAuditList?flag=false");
ps.setSend_user(sysUser.getUserId());
ps.setSend_username(sysUser.getUserName());
ps.setRead_status(0);
ps.setSound_name("default.mp3");
ps.setMessage_date(DateUtils.getNowDate());
activitiService.sendMessageToAuditor(processId, ps, sysUser.getDeptId());
saveLog("提交干部休假申请:"+cadreInfoService.getById(peopleHoliday.getUser_id()).getName());
json = JSONObjectTool.getJson(AjaxBeanData.success());
return AJAX;
}
/**
* 干部休假审批
* @return
*/
public String ajaxAudit() throws Exception {
currentYear = Calendar.getInstance().get(Calendar.YEAR);
SysUser sysUser = (SysUser) StrutsUtils.getObjectFromSession("sysUser");
// 审批流程
peopleHoliday = peopleHolidayService.selectPeopleHolidaybyId(peopleHolidayMode.getId());
Map map = new HashMap();
map.put(formKey, formValue);
myTask = activitiService.findTaskIdByBusinessKey(peopleHoliday.getSplcname(), String.valueOf(peopleHoliday.getId()));
activitiService.complteTask(myTask.getId(), String.valueOf(peopleHoliday.getWorkflow_id()), StrutsUtils.getString("approve_opinion"), map, sysUser);
// 判断流程是否结束
String act_status = activitiService.findStatusByProcessInstanceId(String.valueOf(peopleHoliday.getWorkflow_id()));
// 流程状态
peopleHoliday.setApprove_status(act_status);
/*peopleHoliday.setApprove_opinion(StrutsUtils.getString("approve_opinion"));*/
if (formValue == 1&&act_status.startsWith("0")) {
peopleHoliday.setClear_status(1);
}
saveLog("审批干部休假申请:"+cadreInfoService.getById(peopleHoliday.getUser_id()).getName());
peopleHolidayService.updatePeopleHoliday(peopleHoliday);
// 发送审批消息
AuditMessage ms = new AuditMessage();
ms.setMessageTitle("干部休假流程");
ms.setSendType(5);
ms.setAuditMessageContent("您有一条干部休假申请待处理"); // 发给审批人的内容
ms.setApplayMessageContent("您的干部休假申请被处理了,请查看");// 发给申请人的内容
ms.setAuditMessageeName("处理");
ms.setApplayMessageeName("查看");
ms.setAuditMessageUrl("holiday/holiday!forwordAuditList?flag=false"); // 发给审批人的链接
ms.setApplayMessageUrl("holiday/holiday!forwordList?flag=false");// 发给申请人的链接
ms.setSendUser(sysUser.getUserId());
activitiService.sendMessageAfterAudited(myTask.getProcessInstanceId(), ms, sysUser.getDeptId());
json = JSONObjectTool.getJson(AjaxBeanData.success());
return AJAX;
}
/**
* 显示工作流
* @return
*/
public String forwordWorkFlowShow() throws Exception {
// 根据业务ID与流程定义的key获取Task
peopleHoliday = peopleHolidayService.selectPeopleHolidaybyId(id);
try {
myTask = activitiService.findTaskIdByBusinessKey(peopleHoliday.getSplcname(), String.valueOf(id));
} catch (Exception e) {
myTask = null;
}
if (null == myTask) {
myTask = new MyTask();
myTask.setParentTaskId(String.valueOf(peopleHoliday.getWorkflow_id()));
id = Long.parseLong(myTask.getParentTaskId());
} else {
id = Long.parseLong(myTask.getExecutionId());
}
return "forwordWorkFlowShow";
}
/**
* 显示工作流程,已审批结束
*
* @return
*/
public String forwordWorkFlowShow2() throws Exception {
// 根据业务ID与流程定义的key获取Task
peopleHoliday = peopleHolidayService.selectPeopleHolidaybyId(id);
id = peopleHoliday.getWorkflow_id();
processName = peopleHoliday.getSplcname();
title = "干部休假程跟踪";
return "forwordWorkFlowShow2";
}
public String getFormKey() {
return formKey;
}
public void setFormKey(String formKey) {
this.formKey = formKey;
}
public long getFormValue() {
return formValue;
}
public void setFormValue(long formValue) {
this.formValue = formValue;
}
public MyTask getMyTask() {
return myTask;
}
public void setMyTask(MyTask myTask) {
this.myTask = myTask;
}
struts-system.xml
/peopleHoliday/peopleHolidayList.jsp
/peopleHoliday/peopleHolidayInsert.jsp
/peopleHoliday/peopleHolidayView.jsp
/peopleHoliday/peopleHolidayAuditList.jsp
/peopleHoliday/peopleHolidayAudit.jsp
/peopleHoliday/peopleHolidayAuditHisList.jsp
peopleHolidayList.jsp(流程申请列表
【启动流程】页面)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="../head.jsp"%>
auditRecord.jsp(流程跟踪
页面)
<%@ page pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
休假流程跟踪
<%@include file="../head.jsp"%>
holidayAudit.jsp(流程审批
页面)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
休假审批
<%@include file="../head.jsp"%>