|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- using Learun.Application.Base.AuthorizeModule;
- using Learun.Application.Organization;
- using Learun.Application.WorkFlow;
- using Learun.Util;
- using System.Collections.Generic;
- using System.Web.Mvc;
-
- namespace Learun.Application.Web.Areas.LR_WorkFlowModule.Controllers
- {
- /// <summary>
- /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
- /// Copyright (c) 2013-2018 北京泉江科技有限公司
- /// 创建人:陈彬彬
- /// 日 期:2018.01.16
- /// 描 述:流程引擎(流程接口)
- /// </summary>
- public class WfEngineController : MvcControllerBase
- {
- private UserRelationIBLL userRelationIBLL = new UserRelationBLL();
- private UserIBLL userIBLL = new UserBLL();
-
- /// <summary>
- /// 工作流引擎
- /// </summary>
- private WfEngineIBLL wfEngineIBLL = new WfEngineBLL();
- private WfProcessInstanceIBLL wfProcessInstanceIBLL = new WfProcessInstanceBLL();
- private WfTaskIBLL wfTaskIBLL = new WfTaskBLL();
- private WfSchemeIBLL wfSchemeIBLL = new WfSchemeBLL();
-
- #region 获取数据
- /// <summary>
- /// 初始化流程模板->获取开始节点数据
- /// </summary>
- /// <param name="isNew">是否是新发起的实例</param>
- /// <param name="processId">流程实例ID</param>
- /// <param name="schemeCode">流程模板编码</param>
- /// <returns></returns>
- [HttpGet]
- [AjaxOnly]
- public ActionResult Bootstraper(bool isNew, string processId, string schemeCode)
- {
- WfParameter wfParameter = new WfParameter();
- UserInfo userInfo = LoginUserInfo.Get();
-
- wfParameter.companyId = userInfo.companyId;
- wfParameter.departmentId = userInfo.departmentId;
- wfParameter.userId = userInfo.userId;
- wfParameter.userName = userInfo.realName;
- wfParameter.isNew = isNew;
- wfParameter.processId = processId;
- wfParameter.schemeCode = schemeCode;
-
- WfResult<WfContent> res = wfEngineIBLL.Bootstraper(wfParameter);
- return JsonResult(res);
- }
- /// <summary>
- /// 流程任务信息
- /// </summary>
- /// <param name="processId">流程实例ID</param>
- /// <param name="taskId">流程模板编码</param>
- /// <returns></returns>
- [HttpGet]
- [AjaxOnly]
- public ActionResult Taskinfo(string processId, string taskId)
- {
- WfParameter wfParameter = new WfParameter();
- UserInfo userInfo = LoginUserInfo.Get();
-
- wfParameter.companyId = userInfo.companyId;
- wfParameter.departmentId = userInfo.departmentId;
- wfParameter.userId = userInfo.userId;
- wfParameter.userName = userInfo.realName;
- wfParameter.processId = processId;
- wfParameter.taskId = taskId;
-
- WfResult<WfContent> res = wfEngineIBLL.GetTaskInfo(wfParameter);
- return JsonResult(res);
- }
- /// <summary>
- /// 获取流程实例信息
- /// </summary>
- /// <param name="processId">流程实例ID</param>
- /// <param name="taskId">流程模板编码</param>
- /// <returns></returns>
- [HttpGet]
- [AjaxOnly]
- public ActionResult Processinfo(string processId, string taskId)
- {
- WfParameter wfParameter = new WfParameter();
- UserInfo userInfo = LoginUserInfo.Get();
-
- wfParameter.companyId = userInfo.companyId;
- wfParameter.departmentId = userInfo.departmentId;
- wfParameter.userId = userInfo.userId;
- wfParameter.userName = userInfo.realName;
- wfParameter.processId = processId;
- wfParameter.taskId = taskId;
-
- WfResult<WfContent> res = wfEngineIBLL.GetProcessInfo(wfParameter);
- return JsonResult(res);
- }
- /// <summary>
- /// 获取流程实例信息(流程监控)
- /// </summary>
- /// <param name="processId"></param>
- /// <param name="taskId"></param>
- /// <returns></returns>
- [HttpGet]
- [AjaxOnly]
- public ActionResult ProcessinfoByMonitor(string processId, string taskId)
- {
- WfParameter wfParameter = new WfParameter();
- UserInfo userInfo = LoginUserInfo.Get();
-
- wfParameter.companyId = userInfo.companyId;
- wfParameter.departmentId = userInfo.departmentId;
- wfParameter.userId = userInfo.userId;
- wfParameter.userName = userInfo.realName;
- wfParameter.processId = processId;
- wfParameter.taskId = taskId;
-
- WfResult<WfContent> res = wfEngineIBLL.GetProcessInfoByMonitor(wfParameter);
- return JsonResult(res);
- }
- /// <summary>
- /// 获取下一个节点审核人员
- /// </summary>
- /// <param name="processId"></param>
- /// <param name="taskId"></param>
- /// <returns></returns>
- [HttpPost]
- [AjaxOnly]
- [ValidateInput(false)]
- public ActionResult Auditer(bool isNew, string processId, string schemeCode, string taskId,string formData)
- {
- WfParameter wfParameter = new WfParameter();
- UserInfo userInfo = LoginUserInfo.Get();
-
- wfParameter.companyId = userInfo.companyId;
- wfParameter.departmentId = userInfo.departmentId;
- wfParameter.userId = userInfo.userId;
- wfParameter.userName = userInfo.realName;
-
- wfParameter.isNew = isNew;
- wfParameter.processId = processId;
- wfParameter.schemeCode = schemeCode;
- wfParameter.taskId = taskId;
- wfParameter.formData = formData;
-
- WfResult<List<object>> res = wfEngineIBLL.GetAuditer(wfParameter);
-
- if (res.status == 1)
- {
- List<object> nodelist = new List<object>();
- var list = res.data;
- foreach (var item1 in list) {
- var item = item1.ToJson().ToJObject();
- if (item["auditors"].IsEmpty())
- {
- var point = new
- {
- all = true,
- name = item["name"],
- nodeId = item["nodeId"]
- };
- nodelist.Add(point);
- }
- else {
- List<object> userlist = new List<object>();
- foreach (var auditor in item["auditors"]) {
- switch (auditor["type"].ToString()) {//获取人员信息1.岗位2.角色3.用户
- case "1":
- case "2":
- var userRelationList = userRelationIBLL.GetUserIdList(auditor["auditorId"].ToString());
- string userIds = "";
- foreach (var userRelation in userRelationList)
- {
- if (userIds != "")
- {
- userIds += ",";
- }
- userIds += userRelation.F_UserId;
- }
- var userList = userIBLL.GetListByUserIds(userIds);
- if (userList != null) {
- foreach (var user in userList)
- {
- if (user != null)
- {
- userlist.Add(new { id = user.F_UserId, name = user.F_RealName });
- }
- }
- }
- break;
- case "3":
- userlist.Add(new { id = auditor["auditorId"], name = auditor["auditorName"] });
- break;
- }
- }
- var point = new
- {
- name = item["name"],
- nodeId = item["nodeId"],
- list = userlist
- };
- nodelist.Add(point);
- }
- }
-
- return JsonResult(nodelist);
- }
- else
- {
- return Fail("获取数据失败!");
- }
- }
- #endregion
-
- #region 提交数据
- /// <summary>
- /// 创建流程实例
- /// </summary>
- /// <param name="isNew">是否是新发起的实例</param>
- /// <param name="processId">流程实例ID</param>
- /// <param name="schemeCode">流程模板编码</param>
- /// <param name="processName">流程实例名称</param>
- /// <param name="processLevel">流程重要等级</param>
- /// <param name="description">备注说明</param>
- /// <param name="formData">表单数据</param>
- /// <returns></returns>
- [HttpPost]
- [AjaxOnly]
- [ValidateInput(false)]
- public ActionResult Create(bool isNew,string processId,string schemeCode,string processName,int processLevel,string description,string auditers, string formData) {
-
- WfParameter wfParameter = new WfParameter();
- UserInfo userInfo = LoginUserInfo.Get();
-
- wfParameter.companyId = userInfo.companyId;
- wfParameter.departmentId = userInfo.departmentId;
- wfParameter.userId = userInfo.userId;
- wfParameter.userName = userInfo.realName;
-
- wfParameter.isNew = isNew;
- wfParameter.processId = processId;
- wfParameter.schemeCode = schemeCode;
- wfParameter.processName = processName;
- wfParameter.processLevel = processLevel;
- wfParameter.description = description;
- wfParameter.auditers = auditers;
- wfParameter.formData = formData;
-
- WfResult res = wfEngineIBLL.Create(wfParameter);
- return JsonResult(res);
- }
-
- /// <summary>
- /// 创建流程实例
- /// </summary>
- /// <param name="taskId">流程实例ID</param>
- /// <param name="verifyType">流程模板编码</param>
- /// <param name="description">流程实例名称</param>
- /// <param name="auditorId">加签人员Id</param>
- /// <param name="auditorName">备注说明</param>
- /// <param name="formData">表单数据</param>
- /// <returns></returns>
- [HttpPost]
- [AjaxOnly]
- [ValidateInput(false)]
- public ActionResult Audit(string taskId, string verifyType, string description, string auditorId, string auditorName,string auditers, string formData)
- {
- WfParameter wfParameter = new WfParameter();
- UserInfo userInfo = LoginUserInfo.Get();
-
- wfParameter.companyId = userInfo.companyId;
- wfParameter.departmentId = userInfo.departmentId;
- wfParameter.userId = userInfo.userId;
- wfParameter.userName = userInfo.realName;
-
- wfParameter.taskId = taskId;
- wfParameter.verifyType = verifyType;
- wfParameter.auditorId = auditorId;
- wfParameter.auditorName = auditorName;
- wfParameter.description = description;
- wfParameter.auditers = auditers;
- wfParameter.formData = formData;
-
- WfResult res = wfEngineIBLL.Audit(wfParameter);
- return JsonResult(res);
- }
- #endregion
-
- }
- }
|