identificationOfCultivatedL.../OpenAuth.WebApi/Controllers/ServerController/CustomWorkflowController.cs

197 lines
6.0 KiB
C#

using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.Interface;
using workflow;
namespace OpenAuth.WebApi.Controllers.ServerController;
[ApiController]
[Route("api/[controller]")]
public class CustomWorkflowController : ControllerBase
{
private readonly WorkflowEngineApp _workflowEngineApp;
private readonly IAuth _auth;
public CustomWorkflowController(WorkflowEngineApp workflowEngineApp, IAuth auth)
{
_workflowEngineApp = workflowEngineApp;
_auth = auth;
}
/// <summary>
/// 发起违法建设认定流程
/// </summary>
[HttpPost("initiate")]
public IActionResult InitiateFlow([FromForm] InitiateFlowRequest request)
{
try
{
// 1. 获取当前用户信息
var user = _auth.GetCurrentUser().User;
if (!long.TryParse(user.Id.ToString(), out long currentUserId))
return Ok(ApiResult<long>.Error("用户ID格式错误"));
// 2. 调用工作流服务发起流程
var instanceId = _workflowEngineApp.InitiateFlow(currentUserId, user.Name, request);
return Ok(ApiResult<long>.Ok(instanceId, message: "流程发起成功"));
}
catch (Exception ex)
{
return Ok(ApiResult<long>.Error(ex.Message));
}
}
/// <summary>
/// 处理工作项(中转、审核、汇总)
/// </summary>
[HttpPost("handle-workitem")]
public IActionResult HandleWorkitem([FromBody] HandleWorkitemRequest request)
{
try
{
var user = _auth.GetCurrentUser().User;
// 1. 获取当前用户信息
var userIdStr = user.Id.ToString();
var userName = user.Name;
if (!long.TryParse(userIdStr, out long currentUserId))
return Ok(ApiResult<bool>.Error("用户ID格式错误"));
// 2. 调用工作流服务处理工作项
var result = _workflowEngineApp.HandleWorkitem(currentUserId, userName, request);
return Ok(ApiResult<bool>.Ok(result, message: "工作项处理成功"));
}
catch (Exception ex)
{
return Ok(ApiResult<bool>.Error(ex.Message));
}
}
// 拟办、待办、已办、未办结、已完成、项目列表
// // ToDo/Done/Rejected
/// <summary>
/// 查询我的待办
/// </summary>
[HttpGet("my-todo")]
public IActionResult QueryMyToDo()
{
try
{
var user = _auth.GetCurrentUser().User;
var userIdStr = user.Id.ToString();
if (!long.TryParse(userIdStr, out long currentUserId))
return Ok(ApiResult<List<FlowQueryResult>>.Error("用户ID格式错误"));
var result = _workflowEngineApp.QueryMyToDo(currentUserId);
return Ok(ApiResult<List<FlowQueryResult>>.Ok(result, result.Count));
}
catch (Exception ex)
{
return Ok(ApiResult<List<FlowQueryResult>>.Error(ex.Message));
}
}
/// <summary>
/// 查询我的已办
/// </summary>
[HttpGet("my-done")]
public IActionResult QueryMyDone()
{
try
{
var user = _auth.GetCurrentUser().User;
var userIdStr = user.Id.ToString();
if (!long.TryParse(userIdStr, out long currentUserId))
return Ok(ApiResult<List<FlowQueryResult>>.Error("用户ID格式错误"));
var result = _workflowEngineApp.QueryMyDone(currentUserId);
return Ok(ApiResult<List<FlowQueryResult>>.Ok(result, result.Count));
}
catch (Exception ex)
{
return Ok(ApiResult<List<FlowQueryResult>>.Error(ex.Message));
}
}
#region 新增:拟办/未办结/已完成 API 接口
/// <summary>
/// 查询我的拟办(需认领)
/// </summary>
[HttpGet("my-draft")]
public IActionResult QueryMyDraft()
{
try
{
var user = _auth.GetCurrentUser().User;
var result = _workflowEngineApp.QueryMyDraft(user.Id);
return Ok(new { Code = 200, Msg = "查询拟办成功", Data = result, Total = result.Count });
}
catch (Exception ex)
{
return Ok(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 认领拟办工作项
/// </summary>
[HttpPost("claim-draft")]
public IActionResult ClaimDraft([FromBody] long workitemId)
{
try
{
var user = _auth.GetCurrentUser().User;
var userId = user.Id;
var userName = user.Name;
var result = _workflowEngineApp.ClaimDraftWorkitem(workitemId, userId, userName);
return Ok(new { Code = 200, Msg = "认领拟办成功", Data = result });
}
catch (Exception ex)
{
return Ok(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 查询所有未办结流程
/// </summary>
[HttpGet("unfinished-flows")]
public IActionResult QueryUnfinishedFlows()
{
try
{
var user = _auth.GetCurrentUser().User;
var userId = user.Id;
var result = _workflowEngineApp.QueryUnfinishedFlows(userId);
return Ok(new { Code = 200, Msg = "查询未办结流程成功", Data = result, Total = result.Count });
}
catch (Exception ex)
{
return Ok(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 查询所有已完成流程
/// </summary>
[HttpGet("completed-flows")]
public IActionResult QueryCompletedFlows()
{
try
{
var user = _auth.GetCurrentUser().User;
var userId = user.Id;
var result = _workflowEngineApp.QueryCompletedFlows(userId);
return Ok(new { Code = 200, Msg = "查询已完成流程成功", Data = result, Total = result.Count });
}
catch (Exception ex)
{
return Ok(new { Code = 500, Msg = ex.Message });
}
}
#endregion
}