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; }
}
}
}