using Learun.Application.Form; using Learun.Application.WorkFlow; using Learun.Util; using Nancy; using System.Collections.Generic; namespace Learun.Application.WebApi.Modules { /// /// 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架 /// Copyright (c) 2013-2018 上海力软信息技术有限公司 /// 创建人:力软-框架开发组 /// 日 期:2019.01.10 /// 描 述:新的工作流接口 /// public class NewWorkFlowApi : BaseApi { /// /// 注册接口 /// public NewWorkFlowApi() : base("/learun/adms/newwf") { Get["/schemelist"] = GetSchemePageList; Get["/scheme"] = GetSchemeByCode; Get["/mylist"] = GetMyProcess; Get["/mytask"] = GetMyTaskList; Get["/mytaskmaked"] = GetMyMakeTaskList; Get["/auditer"] = GetNextAuditors; Get["/processinfo"] = GetProcessDetails; Post["/create"] = Create; Post["/againcreate"] = AgainCreateFlow; Post["/childcreate"] = CreateChildFlow; Post["/draft"] = SaveDraft; Post["/deldraft"] = DeleteDraft; Post["/audit"] = AuditFlow; Post["/sign"] = SignFlow; Post["/signaudit"] = SignAuditFlow; Post["/urge"] = UrgeFlow; Post["/revoke"] = RevokeFlow; Post["/refer"] = ReferFlow; Post["/instance"] = SaveInstanceForms; Post["/auditors"] = SaveAuditors; } private NWFSchemeIBLL nWFSchemeIBLL = new NWFSchemeBLL(); private NWFProcessIBLL nWFProcessIBLL = new NWFProcessBLL(); private FormSchemeIBLL formSchemeIBLL = new FormSchemeBLL(); /// /// 获取我的流程实例信息 /// /// /// private Response GetMyProcess(dynamic _) { QueryModel parameter = this.GetReqData(); IEnumerable list = new List(); list = nWFProcessIBLL.GetMyPageList(userInfo.userId, parameter.pagination, parameter.queryJson); var jsonData = new { rows = list, total = parameter.pagination.total, page = parameter.pagination.page, records = parameter.pagination.records, }; return Success(jsonData); } /// /// 获取我的任务列表 /// /// /// private Response GetMyTaskList(dynamic _) { QueryModel parameter = this.GetReqData(); IEnumerable list = new List(); list = nWFProcessIBLL.GetMyTaskPageList(userInfo, parameter.pagination, parameter.queryJson); var jsonData = new { rows = list, total = parameter.pagination.total, page = parameter.pagination.page, records = parameter.pagination.records, }; return Success(jsonData); } /// /// 获取我已处理的任务列表 /// /// /// private Response GetMyMakeTaskList(dynamic _) { QueryModel parameter = this.GetReqData(); IEnumerable list = new List(); list = nWFProcessIBLL.GetMyFinishTaskPageList(userInfo, parameter.pagination, parameter.queryJson); var jsonData = new { rows = list, total = parameter.pagination.total, page = parameter.pagination.page, records = parameter.pagination.records, }; return Success(jsonData); } /// /// 获取流程模板 /// /// /// private Response GetSchemePageList(dynamic _) { QueryModel parameter = this.GetReqData(); IEnumerable list = new List(); list = nWFSchemeIBLL.GetAppInfoPageList(parameter.pagination, this.userInfo, parameter.queryJson); var jsonData = new { rows = list, total = parameter.pagination.total, page = parameter.pagination.page, records = parameter.pagination.records, }; return Success(jsonData); } /// /// 获取流程模板 /// /// 流程编码 /// public Response GetSchemeByCode(dynamic _) { string code = this.GetReqData(); var schemeInfo = nWFSchemeIBLL.GetInfoEntityByCode(code); if (schemeInfo != null) { var data = nWFSchemeIBLL.GetSchemeEntity(schemeInfo.F_SchemeId); return Success(data); } return Fail("找不到该流程模板"); } /// /// 获取流程下一节点审核 /// /// public Response GetNextAuditors(dynamic _) { flowParam parameter = this.GetReqData(); UserInfo userInfo = LoginUserInfo.Get(); var data = nWFProcessIBLL.GetNextAuditors(parameter.code, parameter.processId, parameter.taskId, parameter.nodeId, parameter.operationCode, userInfo); return Success(data); } /// /// 获取流程进程信息 /// /// /// public Response GetProcessDetails(dynamic _) { UserInfo userInfo = LoginUserInfo.Get(); flowParam parameter = this.GetReqData(); var data = nWFProcessIBLL.GetProcessDetails(parameter.processId, parameter.taskId, userInfo); if (!string.IsNullOrEmpty(data.childProcessId)) { parameter.processId = data.childProcessId; } var taskNode = nWFProcessIBLL.GetTaskUserList(parameter.processId); var jsonData = new { info = data, task = taskNode }; return Success(jsonData); } /// /// 创建流程实例 /// /// /// private Response Create(dynamic _) { flowParam parameter = this.GetReqData(); List req = parameter.formreq.ToObject>();// 获取模板请求数据 foreach (var item in req) { formSchemeIBLL.SaveInstanceForm(item.schemeInfoId, item.processIdName, item.keyValue, item.formData); } nWFProcessIBLL.CreateFlow(parameter.code, parameter.processId, parameter.title, parameter.level, parameter.auditors, userInfo); return this.Success("创建成功"); } /// /// 重新创建流程 /// /// /// public Response AgainCreateFlow(dynamic _) { flowParam parameter = this.GetReqData(); // 保存自定义表单 List req = parameter.formreq.ToObject>();// 获取模板请求数据 foreach (var item in req) { formSchemeIBLL.SaveInstanceForm(item.schemeInfoId, item.processIdName, item.keyValue, item.formData); } nWFProcessIBLL.AgainCreateFlow(parameter.processId, userInfo); return Success("重新创建成功"); } /// /// 创建流程(子流程) /// public Response CreateChildFlow(dynamic _) { flowParam parameter = this.GetReqData(); // 保存自定义表单 List req = parameter.formreq.ToObject>();// 获取模板请求数据 foreach (var item in req) { formSchemeIBLL.SaveInstanceForm(item.schemeInfoId, item.processIdName, item.keyValue, item.formData); } nWFProcessIBLL.CreateChildFlow(parameter.code, parameter.processId, parameter.parentProcessId, parameter.parentTaskId, userInfo); return Success("子流程创建成功"); } /// /// 保存草稿(流程) /// /// /// public Response SaveDraft(dynamic _) { flowParam parameter = this.GetReqData(); // 保存自定义表单 List req = parameter.formreq.ToObject>();// 获取模板请求数据 foreach (var item in req) { formSchemeIBLL.SaveInstanceForm(item.schemeInfoId, item.processIdName, item.keyValue, item.formData); } if (!string.IsNullOrEmpty(parameter.processId)) { nWFProcessIBLL.SaveDraft(parameter.processId, parameter.code, userInfo); } return Success("保存成功"); } /// /// 删除草稿 /// /// /// public Response DeleteDraft(dynamic _) { string processId = this.GetReqData(); nWFProcessIBLL.DeleteDraft(processId, userInfo); return Success("草稿删除成功"); } /// /// 审批流程 /// /// /// public Response AuditFlow(dynamic _) { flowParam parameter = this.GetReqData(); // 保存自定义表单 List req = parameter.formreq.ToObject>();// 获取模板请求数据 foreach (var item in req) { formSchemeIBLL.SaveInstanceForm(item.schemeInfoId, item.processIdName, item.keyValue, item.formData); } //TODO:移动端传参signUrl??? nWFProcessIBLL.AuditFlow(parameter.operationCode, parameter.operationName, parameter.processId, parameter.taskId, parameter.des, parameter.auditors, "", parameter.signUrl, userInfo); return Success("审批成功"); } /// /// 流程加签 /// /// /// public Response SignFlow(dynamic _) { flowParam parameter = this.GetReqData(); // 保存自定义表单 List req = parameter.formreq.ToObject>();// 获取模板请求数据 foreach (var item in req) { formSchemeIBLL.SaveInstanceForm(item.schemeInfoId, item.processIdName, item.keyValue, item.formData); } nWFProcessIBLL.SignFlow(parameter.processId, parameter.taskId, parameter.userId, parameter.des, userInfo); return Success("加签成功"); } /// /// 流程加签审核 /// /// /// public Response SignAuditFlow(dynamic _) { flowParam parameter = this.GetReqData(); // 保存自定义表单 List req = parameter.formreq.ToObject>();// 获取模板请求数据 foreach (var item in req) { formSchemeIBLL.SaveInstanceForm(item.schemeInfoId, item.processIdName, item.keyValue, item.formData); } nWFProcessIBLL.SignAuditFlow(parameter.operationCode, parameter.processId, parameter.taskId, parameter.des, userInfo); return Success("加签审批成功"); } /// /// 催办流程 /// /// /// public Response UrgeFlow(dynamic _) { string processId = this.GetReqData(); nWFProcessIBLL.UrgeFlow(processId, userInfo); return Success("催办成功"); } /// /// 撤销流程(只有在该流程未被处理的情况下) /// /// /// public Response RevokeFlow(dynamic _) { string processId = this.GetReqData(); nWFProcessIBLL.RevokeFlow(processId, userInfo); return Success("撤销成功"); } /// /// 确认阅读 /// /// /// public Response ReferFlow(dynamic _) { flowParam parameter = this.GetReqData(); nWFProcessIBLL.ReferFlow(parameter.processId, parameter.taskId, userInfo); return Success("确认成功"); } /// /// app保存实例 /// /// /// public Response SaveInstanceForms(dynamic _) { List param = this.GetReqData>(); foreach (var item in param) { formSchemeIBLL.SaveInstanceForm(item.schemeInfoId, item.processIdName, item.keyValue, item.formData); } return Success("保存成功!"); } /// /// app保存审核人 /// /// /// public Response SaveAuditors(dynamic _) { var param = this.GetReqData(); UserInfo userInfo = LoginUserInfo.Get(); try { nWFProcessIBLL.AuditFlow(param.operationCode, param.operationName, param.processId, param.taskId, param.des, param.auditors, param.stamp, param.signUrl, userInfo); return Success("流程审批成功"); } catch (System.Exception ex) { return Fail(ex.Message); } } private class flowParam { /// /// 流程模板编码 /// public string code { get; set; } /// /// 流程进程主键 /// public string processId { get; set; } /// /// 流程任务主键 /// public string taskId { get; set; } /// /// 流程节点Id /// public string nodeId { get; set; } /// /// 审核操作码 /// public string operationCode { get; set; } /// /// 审核操作名称 /// public string operationName { get; set; } /// /// 流程自定义标题 /// public string title { get; set; } /// /// 流程等级 /// public int level { get; set; } /// /// 流程审核用户 /// public string auditors { get; set; } /// /// 表单信息 /// public string formreq { get; set; } /// /// 描述 /// public string des { get; set; } /// /// 加签人员主键 /// public string userId { get; set; } /// /// 父流程进程主键 /// public string parentProcessId { get; set; } /// /// 父流程任务主键 /// public string parentTaskId { get; set; } /// /// 签字图片信息 /// public string signUrl { get; set; } public string stamp { get; set; } } /// /// 查询条件对象 /// private class QueryModel { public Pagination pagination { get; set; } public string queryJson { get; set; } } /// /// 自定义表单提交参数 /// private class FormParam { /// /// 流程模板id /// public string schemeInfoId { get; set; } /// /// 关联字段名称 /// public string processIdName { get; set; } /// /// 数据主键值 /// public string keyValue { get; set; } /// /// 表单数据 /// public string formData { get; set; } } } }